Manager API

Use the Manager API to submit and inspect jobs, operate Workers, issue enrollment tokens, check dependencies, and follow live operational changes. The version-one base URL is http://localhost:4400/api/v1.

Endpoint map

AreaEndpoints
HealthGET /api/health/live, GET /api/health/ready
JobsPOST /jobs, GET /jobs, GET /jobs/:jobId, POST /jobs/:jobId/cancel
WorkersGET /workers, GET /workers/:workerId, POST /workers/:workerId/drain
EnrollmentPOST /enrollment-tokens
EventsGET /events using Server-Sent Events

Health routes are version-neutral and include /api but not /v1.

Media type and timestamps

Request and response bodies use JSON unless an endpoint explicitly returns text/event-stream. Send content-type: application/json for POST bodies. Timestamps are ISO 8601 UTC strings.

Pagination

List resources use offset pagination and return the applied window:

{
  "items": [],
  "total": 0,
  "limit": 50,
  "offset": 0
}

limit must be 1–100. offset must be 0–100000. Defaults are 50 and 0.

Validation errors

Invalid path, query, or body input returns 400 Bad Request. All detected nested failures are flattened into stable dot paths.

{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "Validation failed",
  "details": [
    {
      "path": "executionPlan.input.uri",
      "message": "uri must be an S3 URI"
    }
  ]
}

Unknown body fields are removed. Do not rely on the server preserving or echoing extensions that are not part of the DTO.

Security

The Admin server completes the interactive OIDC flow and proxies operations calls. Enrollment tokens are time limited, single use, stored as HMAC hashes, and required when a Worker first registers.

Consistency model

Lifecycle changes are durably stored in PostgreSQL. High-rate progress and Worker statistics are held in Manager memory and may disappear across a Manager restart. SSE is a transient notification channel; reconnecting clients must refetch REST resources.