Schedule API
Register schedules and inspect or operate their runs.
Base URL: your SDK-facing API, locally http://localhost:8081. Read authentication and conventions first. Download OpenAPI 3.0 for the full machine-readable contract.
GET /schedules
List the application's schedules
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
status | query | No | string | |
cursor | query | No | string | |
limit | query | No | integer |
Responses
| Status | Meaning | Schema |
|---|---|---|
200 | A page of schedules, each with a recent-run health summary | ScheduleListResponse |
400 | Invalid status filter or limit | ProblemDetails |
401 | Missing or invalid API key | ProblemDetails |
PUT /schedules/{name}
Create or update a schedule
Idempotent upsert keyed on the application-scoped, case-insensitive name.
An unchanged body returns 200 without bumping definitionVersion or
moving nextRunAt, so re-applying the same schedule on every deploy is a
no-op. A changed body returns 200 with a new version and a re-planned
next run. A new name returns 201. Re-applying an archived schedule
brings it back Active.
definition is validated by the same rules as POST /pipelines.
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
Request body
Required.
Content type: application/json. ScheduleUpsertRequest
$ref: "#/components/schemas/ScheduleUpsertRequest"Responses
| Status | Meaning | Schema |
|---|---|---|
200 | The existing schedule was updated or left unchanged | Schedule |
201 | A new schedule was created | Schedule |
400 | Validation failed, with per-field messages | ProblemDetails |
401 | Missing or invalid API key | ProblemDetails |
500 | The schedule could not be stored | ProblemDetails |
GET /schedules/{name}
Get one schedule
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
Responses
| Status | Meaning | Schema |
|---|---|---|
200 | Definition, policies, next and last run, health summary | Schedule |
400 | Invalid schedule name | ProblemDetails |
401 | Missing or invalid API key | ProblemDetails |
404 | No such schedule in this application | ProblemDetails |
GET /schedules/{name}/runs
List a schedule's run history
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
cursor | query | No | string | |
limit | query | No | integer |
Responses
| Status | Meaning | Schema |
|---|---|---|
200 | A page of runs, newest first | ScheduleRunListResponse |
400 | Invalid schedule name or limit | ProblemDetails |
401 | Missing or invalid API key | — |
404 | No such schedule in this application | ProblemDetails |
POST /schedules/{name}/pause
Pause a schedule
Stops creating pipelines. The definition and history are kept.
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
Responses
| Status | Meaning | Schema |
|---|---|---|
200 | The paused schedule | Schedule |
401 | Missing or invalid API key | — |
404 | No such schedule in this application | ProblemDetails |
POST /schedules/{name}/resume
Resume a schedule
Recomputes nextRunAt from now, so a schedule paused for a week does not
wake up owing a week of ticks whatever its catch-up policy says.
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
Responses
| Status | Meaning | Schema |
|---|---|---|
200 | The resumed schedule | Schedule |
400 | The stored schedule can no longer be planned | ProblemDetails |
401 | Missing or invalid API key | — |
404 | No such schedule in this application | ProblemDetails |
409 | The schedule has no future run (a Once schedule already past) | ProblemDetails |
POST /schedules/{name}/archive
Archive a schedule
Terminal. Re-applying the definition with PUT brings it back Active.
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
Responses
| Status | Meaning | Schema |
|---|---|---|
200 | The archived schedule | Schedule |
401 | Missing or invalid API key | — |
404 | No such schedule in this application | ProblemDetails |
POST /schedules/{name}/trigger
Run a schedule immediately
Creates a run with trigger: Manual right away. It does not move the
schedule's cursor, and overlap and catch-up policies do not apply — a
manual run was explicitly asked for. The optional input replaces the
first stage's input.
Authentication: ApiKeyAuth
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
name | path | Yes | string | Application-scoped schedule name, matched case-insensitively. |
Request body
Optional.
Content type: application/json. ScheduleTriggerRequest
$ref: "#/components/schemas/ScheduleTriggerRequest"Responses
| Status | Meaning | Schema |
|---|---|---|
201 | The manual run and its pipeline | ScheduleTriggerResponse |
400 | Invalid payload | ProblemDetails |
401 | Missing or invalid API key | — |
404 | No such schedule in this application | ProblemDetails |
409 | The schedule is archived | ProblemDetails |