Skip to content
Owner's local time in SP:
docs / projects / orbit / api reference

Orbit API

Every implemented endpoint, with its fields and status codes.

early developmentreferencesource ↗

Scope

This page covers the endpoints that exist at commit 2967494. The API has no version prefix, no authentication and no pagination. The server runs on Spring Boot’s default port because the configuration sets none.

Endpoints

Method and pathPurposeSuccessOther answers
POST /jobsCreate a job201validation failure
GET /jobsList all jobs200none
GET /jobs/{id}Read one job200404
PUT /jobs/{id}Replace a job’s configuration200404, validation failure
POST /jobs/{id}/disableDisable a job200404
POST /jobs/{id}/enableEnable a job200404
POST /jobs/{jobId}/executionsRecord an execution of a job201404 unknown job, 409 disabled job
GET /jobs/{jobId}/executionsList a job’s executions, newest first200404 unknown job
GET /executions/{id}Read one execution200404

There is no endpoint to delete a job or to change an execution’s state. Validation failures are produced by Spring’s request validation; the repository has no test that fixes their response format.

Job fields

The create and update bodies share the same fields.

  • name (string): required, at most 120 characters.
  • command (string): required.
  • cronExpression (string): optional, not blank, at most 100 characters; stored without interpretation.
  • maxRetries (integer): required, zero or more; stored without effect.
  • timeoutSeconds (integer): required, greater than zero; stored without effect.
create a jobshell
curl -X POST http://localhost:8080/jobs \  -H 'Content-Type: application/json' \  -d '{"name":"database-backup","command":"./backup.sh","cronExpression":"0 3 * * *","maxRetries":0,"timeoutSeconds":300}'

The response is a job with id, enabled, createdAt and updatedAt added. A new job is always enabled.

json
{  "id": 1,  "name": "database-backup",  "command": "./backup.sh",  "cronExpression": "0 3 * * *",  "enabled": true,  "maxRetries": 0,  "timeoutSeconds": 300,  "createdAt": "2026-09-15T12:00:00Z",  "updatedAt": "2026-09-15T12:00:00Z"}

The values above are an example. The cron expression is not evaluated, so this job will not run at 03:00.

Executions

Recording an execution copies the job’s command, maxRetries and timeoutSeconds into the new record and sets its status to QUEUED.

record an executionshell
curl -X POST http://localhost:8080/jobs/1/executions
json
{  "id": 1,  "jobId": 1,  "status": "QUEUED",  "command": "./backup.sh",  "maxRetries": 0,  "timeoutSeconds": 300,  "createdAt": "2026-09-15T12:01:00Z",  "startedAt": null,  "finishedAt": null,  "exitCode": null,  "errorMessage": null}
Note

The execution stays QUEUED. The states RUNNING, SUCCEEDED, FAILED and CANCELLED exist in the model, but no endpoint or background process moves an execution into them yet.

Status values

StatusMeaning today
QUEUEDrecorded and waiting; the only state reachable through the API
RUNNINGdefined in the domain model
SUCCEEDEDdefined in the domain model
FAILEDdefined in the domain model
CANCELLEDdefined in the domain model

References