Download OpenAPI specification:
REST API for the Scheduler Service. This API allows you to create and manage scheduled jobs with flexible scheduling options, retry policies, and comprehensive history tracking.
a job collection to create
| name required | string [ 3 .. 64 ] characters Unique name |
| state | string (State) Enum: "enabled" "disabled" Current state (enabled or disabled) |
{- "name": "My New App",
- "state": "enabled"
}"my-new-app"| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-None-Match | string (ETag) Example: "fde7bculys" ETag value for conditional requests |
{- "id": "my-app-1",
- "name": "My App #1",
- "state": "enabled",
- "updated": "2026-01-02T10:30:00Z"
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
a job collection to update
| name required | string [ 3 .. 64 ] characters Unique name |
| state | string (State) Enum: "enabled" "disabled" Current state (enabled or disabled) |
{- "name": "My Updated App",
- "state": "disabled"
}{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| collectionId | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: collectionId=my-app-1 Filter jobs by collection ID (URL-safe characters only, 3-36 chars) |
| If-None-Match | string (ETag) Example: "fde7bculys" ETag value for conditional requests |
{- "items": [
- {
- "id": "web-host",
- "collectionId": "my-app-1",
- "name": "WEB_HOST",
- "updated": "2026-01-02T10:00:00Z"
}, - {
- "id": "api-key",
- "collectionId": "my-app-1",
- "name": "API_KEY",
- "updated": "2026-01-02T10:00:00Z"
}
]
}a variable to create
| collectionId required | string [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Unique identifier (URL-safe characters only) |
| name required | string [ 3 .. 64 ] characters Unique name |
| value | string <= 1024 characters Variable value |
{- "collectionId": "my-app-1",
- "name": "WEB_HOST",
- "value": "localhost:5432"
}"db-host"| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-None-Match | string (ETag) Example: "fde7bculys" ETag value for conditional requests |
{- "id": "db-host",
- "collectionId": "my-app-1",
- "name": "WEB_HOST",
- "value": "localhost:5432",
- "updated": "2026-01-02T10:00:00Z"
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
a variable to update
| collectionId required | string [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Unique identifier (URL-safe characters only) |
| name required | string [ 3 .. 64 ] characters Unique name |
| value | string <= 1024 characters Variable value |
{- "name": "WEB_HOST",
- "value": "stage.example.com:8081"
}{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| collectionId | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: collectionId=my-app-1 Filter jobs by collection ID (URL-safe characters only, 3-36 chars) |
| fields | string Example: fields=status,errorRate Comma-separated list of additional fields to include (e.g., 'status,errorRate') |
{- "items": [
- {
- "id": "daily-report",
- "name": "My Task #1",
- "schedule": "@every 15s",
- "state": "disabled"
}, - {
- "id": "hourly-cleanup",
- "name": "My Task #2",
- "schedule": "@every 1m",
- "state": "enabled"
}
]
}a job to create
| collectionId required | string [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Unique identifier (URL-safe characters only) |
| name required | string [ 3 .. 64 ] characters Unique name |
| state | string (State) Enum: "enabled" "disabled" Current state (enabled or disabled) |
| schedule required | string [ 6 .. 64 ] characters Schedule in cron format or interval notation (e.g., '@every 1h', '0 */2 * * *') |
required | object (Action) |
{- "collectionId": "my-app-1",
- "name": "Send Daily Report",
- "state": "enabled",
- "schedule": "0 9 * * *",
- "action": {
- "type": "HTTP",
- "request": {
- "method": "POST",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json"
}
], - "body": "{\"report\":\"daily\"}"
}, - "retryPolicy": {
- "retryCount": 3,
- "retryInterval": "10s",
- "deadline": "1m"
}
}
}"daily-report"| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-None-Match | string (ETag) Example: "fde7bculys" ETag value for conditional requests |
{- "id": "daily-report-job",
- "collectionId": "my-app-1",
- "name": "My Task #1",
- "state": "enabled",
- "schedule": "@every 1h",
- "status": "ready",
- "errorRate": 0.25,
- "updated": "2026-01-02T10:30:00Z",
- "action": {
- "type": "HTTP",
- "request": {
- "method": "HEAD",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json"
}
], - "body": "{\"message\":\"Hello from scheduler\"}"
}, - "retryPolicy": {
- "retryCount": 3,
- "retryInterval": "10s",
- "deadline": "1m"
}
}
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
a job definition to update
| collectionId required | string [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Unique identifier (URL-safe characters only) |
| name required | string [ 3 .. 64 ] characters Unique name |
| state | string (State) Enum: "enabled" "disabled" Current state (enabled or disabled) |
| schedule required | string [ 6 .. 64 ] characters Schedule in cron format or interval notation (e.g., '@every 1h', '0 */2 * * *') |
required | object (Action) |
{- "collectionId": "my-app-1",
- "name": "My Task #1",
- "state": "enabled",
- "schedule": "@every 1h",
- "action": {
- "type": "HTTP",
- "request": {
- "method": "HEAD",
- "headers": [
- {
- "name": "Content-Type",
- "value": "application/json"
}
], - "body": "{\"message\":\"Hello from scheduler\"}"
}, - "retryPolicy": {
- "retryCount": 3,
- "retryInterval": "10s",
- "deadline": "1m"
}
}
}{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-None-Match | string (ETag) Example: "fde7bculys" ETag value for conditional requests |
{- "running": false,
- "runCount": 157,
- "errorCount": 39,
- "lastRun": "2026-01-02T09:00:00Z",
- "nextRun": "2026-01-02T10:00:00Z"
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| If-Match | string (ETag) Example: "fde7bculys" ETag value for optimistic concurrency control |
job status update
| running | boolean Indicates whether the job is currently running |
{- "running": true
}{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
{- "items": [
- {
- "action": "HTTP",
- "started": "2026-01-02T09:00:00Z",
- "finished": "2026-01-02T09:00:05Z",
- "status": "completed",
- "retryCount": 0,
- "message": "HTTP 200 OK"
}, - {
- "action": "HTTP",
- "started": "2026-01-02T08:00:00Z",
- "finished": "2026-01-02T08:00:15Z",
- "status": "failed",
- "retryCount": 3,
- "message": "HTTP 500 Internal Server Error"
}
]
}| id required | string (ID) [ 3 .. 36 ] characters ^[A-Za-z0-9][A-Za-z0-9_\-]*$ Example: my-job-1 Unique identifier (URL-safe characters only, 3-36 chars) |
| before | string <date-time> (Timestamp) Example: before=2026-01-01T00:00:00Z Delete history entries before this timestamp |
{- "errors": [
- {
- "domain": "scheduler",
- "type": "field",
- "location": "name",
- "reason": "min length",
- "message": "must be at least 3 characters"
}, - {
- "domain": "scheduler",
- "type": "field",
- "location": "uri",
- "reason": "pattern",
- "message": "Must begin with http or https."
}
]
}