API reference
Health Check
Section titled “Health Check”Path:
GET /health
Response:
{ "status": "UP"}
List jobs
Section titled “List jobs”Returns a list of the most recent jobs
Path:
GET /jobs
Query Params:
page
- page number (default: 1)size
- page size (default: 10 min:1 max:20)q
- full text search query
Response
{ "items": [ { "id": "c5873550dad7439e85ac781168e6e124", "name": "sample job", "state": "COMPLETED", "createdAt": "2023-08-21T21:52:07.751041Z", "startedAt": "2023-08-22T01:52:07.765393Z", "completedAt": "2023-08-22T01:52:12.900569Z" } ... ], "number": 1, "size": 4, "totalPages": 1}
Get Job Details
Section titled “Get Job Details”Path:
GET /jobs/<JOB ID>
Response:
{ "id": "9d7d7184b8f244249c5f5d8b4074f72e", "name": "my job", "state": "COMPLETED", "createdAt": "2023-09-05T01:33:08.413605Z", "startedAt": "2023-09-05T01:33:08.414339Z", "completedAt": "2023-09-05T01:33:14.167127Z", "tasks": [ { "name": "my first task", "run": "echo hello world", "image": "alpine:3.18.3" }, ... ], "execution": [ { "id": "aa76535bc23649ca9403e636e377aca3", "jobId": "9d7d7184b8f244249c5f5d8b4074f72e", "position": 1, "name": "my first task", "state": "COMPLETED", "createdAt": "2023-09-05T01:33:08.414192Z", "scheduledAt": "2023-09-05T01:33:08.414378Z", "startedAt": "2023-09-05T01:33:08.414574Z", "completedAt": "2023-09-05T01:33:08.699749Z", "run": "echo hello world", "image": "alpine:3.18.3", "queue": "default", "nodeId": "93a1cd11800741e6863d1adef3bc3d18" }, ... ], "position": 4, "taskCount": 3}
Submit a job
Section titled “Submit a job”Submit a new job to be scheduled for execution
Path:
POST /jobs
Headers:
Content-Type:text/yaml
Body:
The job definition represented in YAML
Example:
curl -X POST "http://localhost:8000/jobs" \ -H "Content-Type: text/yaml" \ -d \'name: sample jobtasks: - name: sample task image: ubuntu:mantic run: echo hello world'
Or using JSON:
Headers:
Content-Type:application/json
Body:
The job definition represented in JSON
Example:
curl -X POST "http://localhost:8000/jobs" \ -H "Content-Type: application/json" \ -d \'{ "name": "hello job", "tasks": [{ "name": "say hello", "image": "ubuntu:mantic", "run": "echo -n hello world\n" }]}'
Cancel a running job
Section titled “Cancel a running job”Path:
PUT /jobs/<JOB ID>/cancel
Response:
Success:
HTTP 200
{ "status": "OK"}
Failure:
400 Bad Request
{ "message": "job in not running"}
Restart a failed/cancelled job
Section titled “Restart a failed/cancelled job”Path:
PUT /jobs/{job id}/restart
Response:
Success:
HTTP 200
{ "status": "OK"}
Failure:
400 Bad Request
{ "message": "job is COMPLETED and can not be restarted"}
List nodes
Section titled “List nodes”Returns a list of all active nodes in the cluster.
Path:
GET /nodes
Response:
[ { "id": "V2CjY4HYEaUCtTZziuJh6M", "name": "Coordinator", "startedAt": "2024-06-15T19:51:51.111662-04:00", "cpuPercent": 17.977528051675314, "lastHeartbeatAt": "2024-06-15T23:51:51.226284Z", "status": "UP", "hostname": "some-host-1", "version": "0.1.87" }, { "id": "2C2LtZRhktaieM768LQpbP", "name": "Worker", "startedAt": "2024-06-15T23:51:50.995903Z", "cpuPercent": 9.952276537355232, "lastHeartbeatAt": "2024-06-15T23:51:51.135511Z", "queue": "x-2C2LtZRhktaieM768LQpbP", "status": "UP", "hostname": "some-host-2", "version": "0.1.87" }]
List queues
Section titled “List queues”Returns a list of all queues used by the broker.
Path:
GET /nodes
Response:
[ { "name": "default", "size": 12, "subscribers": 3, "unacked": 3 }, { "name": "jobs", "size": 0, "subscribers": 1, "unacked": 0 }, { "name": "logs", "size": 0, "subscribers": 1, "unacked": 0 }, ...]