TASK ENGINE API¶
The Task Engine endpoints will always return a JSON response unless explicitly indicated otherwise.
STATUS ENDPOINTS¶
GET: /
¶
This endpoint will check if the Task Engine endpoint is reachable.
Details
Requires Authentication: No
Required Headers: None
Optional Headers: None
{
"result": "alive"
}
GET: /health
¶
The health endpoint will run checks on the different Task Engine components and returns the status of each service. The endpoint will also return some information about the Task Engine and statistics about jobs and tasks.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authentication
Optional Headers: None
Successful Response:
{
"version": "1.169.3", // Task Engine version
"databases": {
"redis": "OK",
"postgres": "OK"
},
"queues": {
"windows_capture": {
"workers": 12,
"working": 0,
"pending": 0
},
"scheduler": {
"workers": 1,
"working": 0,
"pending": 0
},
"work": {
"workers": 9,
"working": 0,
"pending": 0
},
"controller": {
"workers": 1,
"working": 0,
"pending": 0
},
"callback": {
"workers": 2,
"working": 0,
"pending": 0
}
},
"tasks": {
"failed": 0,
"pending": 0,
"processed": 987654321
},
"jobs": {
"completed": 12345,
"failed": 65,
"pending": 0,
"broken": 20,
"queued": 4,
"started": 8,
"scheduled": 7,
"paused": 0,
"max_jobs": 8,
"priority_slots": 3
}
}
500 - Error Response:
{
"error": "<error message>"
}
GET: /dashboard
¶
The dashboard endpoint returns information about the current Task Engine queue status. The information includes lists of started, queued and scheduled jobs as well as the setting information for the maximum concurrent jobs and the number of priority reserved job slots. The Task Engine version is also returned.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authentication
Optional Headers: None
Successful Response:
{
"max_jobs": 2,
"priority_slots": 0,
"started": [
{
"id": 123,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 5,
"position": 1,
"created_at": "2019-11-29T10:47:50.431Z",
"updated_at": "2020-07-13T09:44:48.451Z",
"queue_state": "started",
"failed": false,
"run_at": "2020-11-29T18:00:30.000Z"
},
{
"id": 124,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 5,
"position": 1,
"created_at": "2020-06-19T15:23:36.197Z",
"updated_at": "2020-09-07T15:28:12.034Z",
"queue_state": "started",
"failed": false,
"run_at": "2030-06-19T17:00:30.000Z"
}
],
"queued": [
{
"id": 125,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 6,
"position": 1,
"created_at": "2019-11-29T10:47:50.431Z",
"updated_at": "2020-07-13T09:44:48.451Z",
"queue_state": "queued",
"failed": false,
"run_at": "2020-11-29T18:00:30.000Z"
},
{
"id": 126,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 6,
"position": 1,
"created_at": "2020-06-19T15:23:36.197Z",
"updated_at": "2020-09-07T15:28:12.034Z",
"queue_state": "queued",
"failed": false,
"run_at": "2030-06-19T17:00:30.000Z"
}
],
"scheduled": [
{
"id": 122,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 5,
"position": 1,
"created_at": "2020-07-13T09:49:27.086Z",
"updated_at": "2020-07-13T09:49:27.206Z",
"queue_state": "scheduled",
"failed": false,
"run_at": "2030-06-19T17:00:30.000Z"
}
],
"version": "1.169.3"
}
JOB ENDPOINTS¶
POST: /job
¶
This endpoint is used to submit jobs to the Task Engine. It is the endpoint used most often. The payload for this endpoint varies substantially depending on the workflow being submitted. More information on the payload properties for each workflow can be found here. Successful job submission will return an accepted
result and the job id. An error message is returned when a job submission fails.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authenticationContent-Type
- set toapplication/json
Optional Headers: None
Successful Response:
{
"id": "<job id>",
"result": "accepted"
}
400 - Error Response:
```json
{
"id": "<job id>",
"error": "<error message>"
}
500 - Error Response:
"Unable to create job request"
GET: /jobs
¶
This endpoint is used to return a list of jobs from the Task Engine database. Filtering is supported through query string parameters. The default search (no parameters) will return the last 10 jobs.
Details
Requires Authentication: No
Required Headers: None
Optional Headers:None
Query String Parameters:
limit
- the maximum number of jobs to returnorder_by
- order the query by a job propertyasc
- order the results in ascending or descending order. Accepts 1 (true) or 0 (false)state
- filter by job state. One of the following IDs needs to be specified- 0 - queued
- 1 - started
- 2 - completed
- 3 - pending
- 4 - broken
- 5 - scheduled
- 6 - paused
from
- used to filter by date range, based on the job creation dateto
- used to filter by date range, based on the job creation datefailed
- returned failed jobs. If used with a state, jobs will only be returned if state is set to 2 (completed)search
- search term used to filter by eg. the content id for a submitted jobjob_ids
- comma separated job idsclient
- client name to filter bypersist
- filter for jobs set to persist. Accepts 1 (true) or 0 (false)
Successful response for /jobs?limit=3&client=demo-client&state=2
[
{
"id": 123,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 5,
"position": 1,
"created_at": "2020-09-24T11:55:33.755Z",
"updated_at": "2020-09-24T12:17:33.566Z",
"queue_state": "completed",
"parameters": "<parameters submitted when creating the job>",
"failed": false,
"run_at": "2020-09-24T11:55:33.755Z"
},
{
"id": 114,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 5,
"position": 1,
"created_at": "2020-09-24T11:55:32.971Z",
"updated_at": "2020-09-24T12:05:18.937Z",
"queue_state": "completed",
"parameters": "<parameters submitted when creating the job>",
"failed": false,
"run_at": "2020-09-24T11:55:32.971Z"
},
{
"id": 102,
"client": "demo-client",
"workflow": "vodcapture",
"priority": 5,
"position": 1,
"created_at": "2020-09-24T11:55:32.031Z",
"updated_at": "2020-09-24T12:18:33.641Z",
"queue_state": "completed",
"parameters": "<parameters submitted when creating the job>",
"failed": false,
"run_at": "2020-09-24T11:55:32.031Z"
}
]
400 - Error Response:
{
"error": "<error message>"
}
GET: /jobs/<job_id>
¶
This endpoints returns information about the specified job.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authentication
Optional Headers: None
Successful response for /jobs/123
{
"id": 123,
"client": "demo-client",
"workflow": "vodstream",
"priority": 5,
"position": 1,
"top_of_queue": false,
"parameters": "<parameters submitted when creating the job>",
"created_at": "2019-09-18T17:13:47.713Z",
"updated_at": "2019-09-18T17:16:05.215Z",
"queue_state": "completed",
"failed": false,
"run_at": "2019-09-18T17:13:47.713Z"
}
400 - Error Response:
{
"error": "<error message>"
}
PUT: /jobs/<job_id>
¶
This endpoint is used to update job fields. Only a specific selection of fields can be updated after a job has been submitted. The response will return the job id and the result of the update.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authenticationContent-Type
- set toapplication/json
Optional Headers: None
The list of job fields that can be updated:
queue_state
- The queue state for a job can be updated. This can be used to pause or break a job by specifying the valuespaused
orbroken
respectivelyrun_at
- Updating the run_at field for a job changes when the job will be queued. The date must be in UTC and in the following formatyyyy-MM-ddTHH:mm:ss.fff
priority
- Updating the priority for a job. More information on job priority can be found heresempahore_url
- This url can be used as part of the scheduling process. More information on the semaphore url can be found here
Sample payload:
{
"client": "demo-client",
"priority": "2",
"run_at": "2020-09-09T14:30:00.000"
}
Successful Response:
{
"id": "<job id>",
"result": "Performed updates: <list of updates>"
}
400 - Error Response:
{
"id": "<job id>",
"error": "<error message>"
}
POST: /jobs/<job id>/rerun
¶
This endpoint is used to rerun a job with exactly the same parameters. When rerunning a job, the original job’s queue state will be set to broken since the content it generated will no longer be valid.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authentication
Optional Headers: None
Successful Response:
{
"id": "<job id>",
"result": "accepted"
}
400 - Error Response:
{
"error": "<error message>"
}
LOG ENDPOINTS¶
GET: /logs/<job id>
¶
This endpoint is used to retrieve the logs for the specified job.
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authenticationAccept
- set toapplication/json
Optional Headers: None
Successful Response:
[
{
"id": 691464,
"job_id": 123,
"severity": 1,
"severity_description": "INFO",
"progname": "api",
"message": "{\"path\":\"POST /job\",\"remote_addr\":\"99.80.104.160\",\"headers\":{\"HTTP_VERSION\":\"HTTP/1.1\",\"HTTP_X_AUTH_KEY\":\"********************************3e2d\",\"HTTP_API_KEY\":\"********************************3e2d\",\"HTTP_X_API_KEY\":\"********************************3e2d\",\"HTTP_ACCEPT\":\"application/json, application/xml, text/json, text/x-json, text/javascript, text/xml\",\"HTTP_USER_AGENT\":\"RestSharp/106.3.1.0\",\"HTTP_HOST\":\"taskengine.demo-client.vualto.com\",\"HTTP_ACCEPT_ENCODING\":\"gzip, deflate\"},\"parameters\":{\"client\":\"demo-client\",\"parameters\":{\"folder\":\"a40fdaff-f904-4ea5-b893-a89152708952\",\"content_id\":\"a40fdaff-f904-4ea5-b893-a89152708952\",\"rest_endpoints\":[\"https://vis.controlhub.demo-client.vualto.com/api/event/vuflow/taskenginecallback\",\"https://admin.controlhub.demo-client.vualto.com/vod/PublishVuflowData\"]},\"job\":{\"workflow\":\"drmswitch\"}},\"payload\":\"job_created\"}",
"created_at": "2020-07-06T12:48:49.591Z",
"updated_at": "2020-07-06T12:48:49.591Z",
"task_id": 0,
"visible": true
},
{
"id": 691465,
"job_id": 123,
"severity": 1,
"severity_description": "INFO",
"progname": "worker",
"message": "No client definitions. Using common definitions.",
"created_at": "2020-07-06T12:48:50.079Z",
"updated_at": "2020-07-06T12:48:50.079Z",
"task_id": 24100,
"visible": true
},
...
...
...
{
"id": 691516,
"job_id": 123,
"severity": 1,
"severity_description": "INFO",
"progname": "worker",
"message": "'rename_manifests' completed successfully",
"created_at": "2020-07-06T12:48:52.282Z",
"updated_at": "2020-07-06T12:48:52.282Z",
"task_id": 24102,
"visible": true
},
{
"id": 691519,
"job_id": 123,
"severity": 1,
"severity_description": "INFO",
"progname": "controller",
"message": "job has completed successfully",
"created_at": "2020-07-06T12:48:52.684Z",
"updated_at": "2020-07-06T12:48:52.684Z",
"task_id": 24102,
"visible": true
},
{
"id": 691520,
"job_id": 123,
"severity": 1,
"severity_description": "INFO",
"progname": "callback",
"message": "No client definitions. Using common definitions.",
"created_at": "2020-07-06T12:48:53.421Z",
"updated_at": "2020-07-06T12:48:53.421Z",
"task_id": 24102,
"visible": true
},
]
400 - Error Response:
{
"error": "<error message>"
}
SCHEDULER ENDPOINTS¶
GET: /schedules
¶
Returns a list of the currently active schedules. More information about the Task Engine scheduler can be found here
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authentication
Optional Headers:None
Successful Response:
{
"result": "ok",
"schedules": {
"queue_scheduled_jobs": {
"class": "QueueJobs",
"every": [
60,
{
"first_in": 5
}
],
"queue": "scheduler",
"description": "Enqueues scheduled jobs that have a run_at time in the past."
}
}
}
400 - Error Response:
{
"error": "<error message>"
}
PUT: /scheduler
¶
This endpoint allows for activating or deactivating schedules. More information about the Task Engine scheduler can be found here
Details
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authentication
Optional Headers:None
Payload parameters:
schedule
- name of the schedule to be activated or deactivatedactive
- accepts true or false to set the schedule to active or inactive
Sample Payload:
{
"schedule": "<schedule name>",
"active": true
}
Successful Response:
{
"result": "ok",
"schedules": ["<list of schedules>"]
}
400 - Error Response
{
"error": "<error message>"
}
SETTINGS ENDPOINTS¶
POST: /settings
¶
This settings endpoint is used to update or create new Task Engine settings. Only one setting can be added or updated at a time.
Details
System default settings:
max_jobs
- The maximum number of concurrent jobs. Default: 2priority_slots
- The number of concurrent job slots that should be reserved for high priority jobs. More information can be found here. Default: 0priority_threshold
- The threshold at which jobs will start being considered as priority. Default: 5.schedule_interval
- The interval, in seconds, between scheduler executions. Default: 60retry_delay
- The delay, in seconds, between retries for failed Resque tasks. Default: 5retry_limit
- The number of times a Resque task should be retried before a job is abandoned. Default: 3
Requires Authentication: Yes
Required Headers:
client
- client name, required for authenticationapi-key
- required for authenticationcontent-type
- set toapplication/json
Optional Headers:None
Payload parameters:
name
- setting name from the list above or name for a new settingsetting
- the value to be given to that setting
Sample Payload:
{
"name": "max_jobs", // setting name
"setting": "4" // value
}
Successful Response:
{
"result": "ok",
"message": "<setting name> setting created/updated"
}
400 - Error Response
{
"error": "<error message>"
}