Skip to content

@saflib/jobs-spec


Interface: paths

This file was auto-generated by openapi-typescript. Do not make direct changes to the file.

Properties

/jobs

/jobs: object

delete?

optional delete: undefined

get

get: object

List jobs

Description

Admin list of queued jobs with optional filters and offset pagination. Mounted on the public app as monolith chrome (site-admin-only).

get.parameters

parameters: object

optional cookie: undefined

get.parameters.header?

optional header: undefined

get.parameters.path?

optional path: undefined

get.parameters.query?

optional query: object

get.parameters.query.created_after?

optional created_after: string

Description

Only include jobs with created_at greater than or equal to this instant.

get.parameters.query.created_before?

optional created_before: string

Description

Only include jobs with created_at less than or equal to this instant.

get.parameters.query.limit?

optional limit: number

Description

Page size (default implementation-defined).

get.parameters.query.offset?

optional offset: number

Description

Number of matching jobs to skip before returning results.

get.parameters.query.operation_id?

optional operation_id: string

Description

Filter by target operationId.

get.parameters.query.original_request_id?

optional original_request_id: string

Description

Filter by chain-root request id.

get.parameters.query.status?

optional status: "pending" | "running" | "retrying" | "succeeded" | "dead" | "cancelled"

Description

Filter by job status.

get.parameters.query.user_id?

optional user_id: string

Description

Filter by acting user id.

get.requestBody?

optional requestBody: undefined

get.responses

responses: object

get.responses.200

200: object

Description

Matching jobs for this page.

get.responses.200.content

content: object

get.responses.200.content.application/json

application/json: object

get.responses.200.content.application/json.jobs

jobs: object[]

get.responses.200.headers

headers: object

Index Signature

[name: string]: unknown

get.responses.401

401: object

Description

Unauthorized - missing or invalid auth headers, or not logged in.

get.responses.401.content

content: object

get.responses.401.content.application/json

application/json: object

get.responses.401.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

get.responses.401.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
get.responses.401.headers

headers: object

Index Signature

[name: string]: unknown

get.responses.403

403: object

Description

Forbidden - site admin privileges required.

get.responses.403.content

content: object

get.responses.403.content.application/json

application/json: object

get.responses.403.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

get.responses.403.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
get.responses.403.headers

headers: object

Index Signature

[name: string]: unknown

optional head: undefined

options?

optional options: undefined

parameters

parameters: object

optional cookie: undefined

parameters.header?

optional header: undefined

parameters.path?

optional path: undefined

parameters.query?

optional query: undefined

patch?

optional patch: undefined

post

post: object

Enqueue a background job

Description

Internal-surface enqueue. Auth is the M1 signed assertion path (not site-admin-only). Assertion claims supply callingOperationId and originalRequestId. On a live dedupe_key collision the existing job is upserted (run_at pushed, request refreshed) and returned with 200; otherwise a new job is created with 201.

post.parameters

parameters: object

post.parameters.cookie?

optional cookie: undefined

post.parameters.header?

optional header: undefined

post.parameters.path?

optional path: undefined

post.parameters.query?

optional query: undefined

post.requestBody

requestBody: object

post.requestBody.content

content: object

post.requestBody.content.application/json

application/json: object

post.requestBody.content.application/json.concurrency_key?

optional concurrency_key: null | string

Description

Optional key limiting concurrency (at most one running job per key).

Example
ts
matter: Mt4k_wZ7;
post.requestBody.content.application/json.dedupe_key?

optional dedupe_key: null | string

Description

Optional key unique among non-terminal jobs. Re-enqueue with the same live key upserts and returns the existing job (200).

Example
ts
matter: Mt4k_wZ7: claim;
post.requestBody.content.application/json.delay_ms?

optional delay_ms: number

Description

Relative delay in milliseconds from enqueue time before the job becomes claimable. Alternative to run_at.

Example
ts
5000;
post.requestBody.content.application/json.on_behalf_of?

optional on_behalf_of: object

Description

Explicit authority override for enqueueOnBehalfOf. When present, both user_id and authority evidence are required; the job runs as that user under the given grant instead of deriving authority from the caller's request context.

post.requestBody.content.application/json.on_behalf_of.authority

authority: { kind: "request"; request_id: string; user_id: string; } | { kind: "resource"; resource_id: string; resource_kind: string; user_id: string; } | { cron_job_name: string; kind: "cron"; user_id: string; }

Type declaration

{ kind: "request"; request_id: string; user_id: string; }

{ kind: "resource"; resource_id: string; resource_kind: string; user_id: string; }

{ cron_job_name: string; kind: "cron"; user_id: string; }

Description

Evidence grant for the override (request, resource, or cron kind).

post.requestBody.content.application/json.on_behalf_of.user_id

user_id: string

Description

Acting user for the enqueued job.

Example
ts
Us7k_pQ2;
post.requestBody.content.application/json.operation_id

operation_id: string

Description

Target OpenAPI operationId (must exist and carry the background tag).

Example
ts
jobsDemoStepB;
post.requestBody.content.application/json.priority?

optional priority: number

Description

Claim priority; higher values are claimed first. Defaults to 0.

Example
ts
0;
post.requestBody.content.application/json.request

request: object

Description

Capped request payload for the target operation (serialized size ≤ 16 KB including this object's path_params/query/body).

post.requestBody.content.application/json.request.body?

optional body: unknown

Description

JSON request body for the target operation, when any.

post.requestBody.content.application/json.request.path_params?

optional path_params: object

Index Signature

[key: string]: unknown

Description

Path template substitutions keyed by parameter name.

post.requestBody.content.application/json.request.query?

optional query: object

Index Signature

[key: string]: unknown

Description

Query string parameters keyed by name.

post.requestBody.content.application/json.run_at?

optional run_at: string

Format: date-time

Description

Absolute earliest claim time. Ignored when delay_ms is also set if the implementation prefers delay_ms; typically use one or the other.

Example
ts
2026-08-06T21:00:00.000Z
post.responses

responses: object

post.responses.200

200: object

Description

Existing job returned after a dedupe-key upsert.

post.responses.200.content

content: object

post.responses.200.content.application/json

application/json: object

post.responses.200.content.application/json.job

job: object

post.responses.200.content.application/json.job.attempt

attempt: number

Description

Number of delivery attempts consumed so far (0 before first claim).

Example
ts
0;
post.responses.200.content.application/json.job.authority

authority: { kind: "request"; request_id: string; user_id: string; } | { kind: "resource"; resource_id: string; resource_kind: string; user_id: string; } | { cron_job_name: string; kind: "cron"; user_id: string; }

Type declaration

{ kind: "request"; request_id: string; user_id: string; }

{ kind: "resource"; resource_id: string; resource_kind: string; user_id: string; }

{ cron_job_name: string; kind: "cron"; user_id: string; }

Description

Root grant for the job chain (copied verbatim by children). Discriminated on kind. Wire form excludes the embedded enqueue assertion token.

post.responses.200.content.application/json.job.concurrency_key

concurrency_key: null | string

Description

Optional key limiting concurrency: at most one running job per key (e.g. matter:{id}).

Example
ts
matter: demo - 1;
post.responses.200.content.application/json.job.created_at

created_at: string

Format: date-time

Description

When the job row was created.

Example
ts
2026-08-06T20:59:55.000Z
post.responses.200.content.application/json.job.dedupe_key

dedupe_key: null | string

Description

Optional key unique among non-terminal jobs. Re-enqueue with the same live key upserts (pushes run_at, refreshes request) and returns the existing job.

Example
ts
matter:demo-1:claim
post.responses.200.content.application/json.job.enqueued_by_operation_id

enqueued_by_operation_id: string

Description

Calling operationId that enqueued this job (trigger-map edge).

Example
ts
startJobsDemo;
post.responses.200.content.application/json.job.finished_at

finished_at: null | string

Format: date-time

Description

When the job reached a terminal status; null while still active.

Example
ts
null;
post.responses.200.content.application/json.job.id

id: string

Description

Short identifier for the job (from generateShortId).

Example
ts
Jb3k_mN7;
post.responses.200.content.application/json.job.max_attempts

max_attempts: number

Description

Maximum delivery attempts before the job becomes dead (exhausted).

Example
ts
5;
post.responses.200.content.application/json.job.operation_id

operation_id: string

Description

Target OpenAPI operationId resolved at delivery time.

Example
ts
jobsDemoStepB;
post.responses.200.content.application/json.job.original_request_id

original_request_id: string

Description

Chain-root request id (user request / webhook X-Request-ID, or cron-tick id). Copied from parent on chained enqueues; joins audit_event.request_id.

Example
ts
r - abc123;
post.responses.200.content.application/json.job.parent_job_id

parent_job_id: null | string

Description

Short id of the job that enqueued this one, or null at the chain root.

Example
ts
null;
post.responses.200.content.application/json.job.priority

priority: number

Description

Claim priority; higher values are claimed first. Default 0.

Example
ts
0;
post.responses.200.content.application/json.job.request

request: object

Description

Capped request payload delivered to the target operation (serialized size ≤ 16 KB). Path params, query, and body are optional and substituted into the operation's path template / request.

Example
ts
{
             *       "body": {
             *         "failures_before_success": 2
             *       }
             *     }
post.responses.200.content.application/json.job.request.body?

optional body: unknown

Description

JSON request body for the target operation, when any.

post.responses.200.content.application/json.job.request.path_params?

optional path_params: object

Index Signature

[key: string]: unknown

Description

Path template substitutions keyed by parameter name.

post.responses.200.content.application/json.job.request.query?

optional query: object

Index Signature

[key: string]: unknown

Description

Query string parameters keyed by name.

post.responses.200.content.application/json.job.result

result: null | { error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Type declaration

null

{ error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Description

Outcome of the latest terminal or failed attempt. Null while the job has not yet finished an attempt that records a result. error_body is set only on failure and capped at 8 KB.

post.responses.200.content.application/json.job.run_at

run_at: string

Format: date-time

Description

Earliest time the job may be claimed for delivery.

Example
ts
2026-08-06T21:00:00.000Z
post.responses.200.content.application/json.job.started_at

started_at: null | string

Format: date-time

Description

When the current (or last) delivery attempt started; null if never claimed.

Example
ts
null;
post.responses.200.content.application/json.job.status

status: "pending" | "running" | "retrying" | "succeeded" | "dead" | "cancelled"

Description

Lifecycle state. pending/retrying are claimable; running is in delivery; succeeded/dead/cancelled are terminal.

Example
ts
pending
@enum {string}
post.responses.200.content.application/json.job.user_id

user_id: string

Description

Acting user whose authority the job runs under.

Example
ts
Us7k_pQ2;
post.responses.200.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.201

201: object

Description

Job created.

post.responses.201.content

content: object

post.responses.201.content.application/json

application/json: object

post.responses.201.content.application/json.job

job: object

post.responses.201.content.application/json.job.attempt

attempt: number

Description

Number of delivery attempts consumed so far (0 before first claim).

Example
ts
0;
post.responses.201.content.application/json.job.authority

authority: { kind: "request"; request_id: string; user_id: string; } | { kind: "resource"; resource_id: string; resource_kind: string; user_id: string; } | { cron_job_name: string; kind: "cron"; user_id: string; }

Type declaration

{ kind: "request"; request_id: string; user_id: string; }

{ kind: "resource"; resource_id: string; resource_kind: string; user_id: string; }

{ cron_job_name: string; kind: "cron"; user_id: string; }

Description

Root grant for the job chain (copied verbatim by children). Discriminated on kind. Wire form excludes the embedded enqueue assertion token.

post.responses.201.content.application/json.job.concurrency_key

concurrency_key: null | string

Description

Optional key limiting concurrency: at most one running job per key (e.g. matter:{id}).

Example
ts
matter: demo - 1;
post.responses.201.content.application/json.job.created_at

created_at: string

Format: date-time

Description

When the job row was created.

Example
ts
2026-08-06T20:59:55.000Z
post.responses.201.content.application/json.job.dedupe_key

dedupe_key: null | string

Description

Optional key unique among non-terminal jobs. Re-enqueue with the same live key upserts (pushes run_at, refreshes request) and returns the existing job.

Example
ts
matter:demo-1:claim
post.responses.201.content.application/json.job.enqueued_by_operation_id

enqueued_by_operation_id: string

Description

Calling operationId that enqueued this job (trigger-map edge).

Example
ts
startJobsDemo;
post.responses.201.content.application/json.job.finished_at

finished_at: null | string

Format: date-time

Description

When the job reached a terminal status; null while still active.

Example
ts
null;
post.responses.201.content.application/json.job.id

id: string

Description

Short identifier for the job (from generateShortId).

Example
ts
Jb3k_mN7;
post.responses.201.content.application/json.job.max_attempts

max_attempts: number

Description

Maximum delivery attempts before the job becomes dead (exhausted).

Example
ts
5;
post.responses.201.content.application/json.job.operation_id

operation_id: string

Description

Target OpenAPI operationId resolved at delivery time.

Example
ts
jobsDemoStepB;
post.responses.201.content.application/json.job.original_request_id

original_request_id: string

Description

Chain-root request id (user request / webhook X-Request-ID, or cron-tick id). Copied from parent on chained enqueues; joins audit_event.request_id.

Example
ts
r - abc123;
post.responses.201.content.application/json.job.parent_job_id

parent_job_id: null | string

Description

Short id of the job that enqueued this one, or null at the chain root.

Example
ts
null;
post.responses.201.content.application/json.job.priority

priority: number

Description

Claim priority; higher values are claimed first. Default 0.

Example
ts
0;
post.responses.201.content.application/json.job.request

request: object

Description

Capped request payload delivered to the target operation (serialized size ≤ 16 KB). Path params, query, and body are optional and substituted into the operation's path template / request.

Example
ts
{
             *       "body": {
             *         "failures_before_success": 2
             *       }
             *     }
post.responses.201.content.application/json.job.request.body?

optional body: unknown

Description

JSON request body for the target operation, when any.

post.responses.201.content.application/json.job.request.path_params?

optional path_params: object

Index Signature

[key: string]: unknown

Description

Path template substitutions keyed by parameter name.

post.responses.201.content.application/json.job.request.query?

optional query: object

Index Signature

[key: string]: unknown

Description

Query string parameters keyed by name.

post.responses.201.content.application/json.job.result

result: null | { error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Type declaration

null

{ error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Description

Outcome of the latest terminal or failed attempt. Null while the job has not yet finished an attempt that records a result. error_body is set only on failure and capped at 8 KB.

post.responses.201.content.application/json.job.run_at

run_at: string

Format: date-time

Description

Earliest time the job may be claimed for delivery.

Example
ts
2026-08-06T21:00:00.000Z
post.responses.201.content.application/json.job.started_at

started_at: null | string

Format: date-time

Description

When the current (or last) delivery attempt started; null if never claimed.

Example
ts
null;
post.responses.201.content.application/json.job.status

status: "pending" | "running" | "retrying" | "succeeded" | "dead" | "cancelled"

Description

Lifecycle state. pending/retrying are claimable; running is in delivery; succeeded/dead/cancelled are terminal.

Example
ts
pending
@enum {string}
post.responses.201.content.application/json.job.user_id

user_id: string

Description

Acting user whose authority the job runs under.

Example
ts
Us7k_pQ2;
post.responses.201.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.400

400: object

Description

Request payload exceeds the 16 KB serialized size cap.

post.responses.400.content

content: object

post.responses.400.content.application/json

application/json: object

post.responses.400.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.400.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.400.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.401

401: object

Description

Unauthorized - missing or invalid assertion.

post.responses.401.content

content: object

post.responses.401.content.application/json

application/json: object

post.responses.401.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.401.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.401.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.403

403: object

Description

Forbidden - calling operation is not allowed to enqueue the target (trigger-map violation).

post.responses.403.content

content: object

post.responses.403.content.application/json

application/json: object

post.responses.403.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.403.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.403.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.422

422: object

Description

Unknown operationId, or the target operation is not tagged background.

post.responses.422.content

content: object

post.responses.422.content.application/json

application/json: object

post.responses.422.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.422.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.422.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.429

429: object

Description

Spawn cap exceeded for this originalRequestId chain.

post.responses.429.content

content: object

post.responses.429.content.application/json

application/json: object

post.responses.429.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.429.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.429.headers

headers: object

Index Signature

[name: string]: unknown

put?

optional put: undefined

trace?

optional trace: undefined


/jobs/{id}

/jobs/{id}: object

delete?

optional delete: undefined

get

get: object

Get a job by id

Description

Admin detail for a single job, including the raw enqueue assertion token (authority_assertion) stored with the authority grant. List responses omit that token to keep payloads small. Mounted as monolith chrome (site-admin-only).

get.parameters

parameters: object

optional cookie: undefined

get.parameters.header?

optional header: undefined

get.parameters.path

path: object

get.parameters.path.id

id: string

Description

Short id of the job to retrieve.

get.parameters.query?

optional query: undefined

get.requestBody?

optional requestBody: undefined

get.responses

responses: object

get.responses.200

200: object

Description

Job detail including the enqueue assertion evidence.

get.responses.200.content

content: object

get.responses.200.content.application/json

application/json: object

get.responses.200.content.application/json.authority_assertion

authority_assertion: object

Description

Enqueue-hop identity assertion as stored with the job (payload, signature, key_id). Detail-only; omitted from list.

get.responses.200.content.application/json.authority_assertion.key_id

key_id: string

Description

Id of the key used to sign the assertion.

Example
ts
k1;
get.responses.200.content.application/json.authority_assertion.payload

payload: string

Description

Base64url-encoded assertion JSON payload.

Example
ts
eyJ1c2VySWQiOiJVczdrX3BRMiJ9;
get.responses.200.content.application/json.authority_assertion.signature

signature: string

Description

Base64url HMAC-SHA256 signature of the payload.

Example
ts
dGVzdC1zaWduYXR1cmU;
get.responses.200.content.application/json.job

job: object

get.responses.200.content.application/json.job.attempt

attempt: number

Description

Number of delivery attempts consumed so far (0 before first claim).

Example
ts
0;
get.responses.200.content.application/json.job.authority

authority: { kind: "request"; request_id: string; user_id: string; } | { kind: "resource"; resource_id: string; resource_kind: string; user_id: string; } | { cron_job_name: string; kind: "cron"; user_id: string; }

Type declaration

{ kind: "request"; request_id: string; user_id: string; }

{ kind: "resource"; resource_id: string; resource_kind: string; user_id: string; }

{ cron_job_name: string; kind: "cron"; user_id: string; }

Description

Root grant for the job chain (copied verbatim by children). Discriminated on kind. Wire form excludes the embedded enqueue assertion token.

get.responses.200.content.application/json.job.concurrency_key

concurrency_key: null | string

Description

Optional key limiting concurrency: at most one running job per key (e.g. matter:{id}).

Example
ts
matter: demo - 1;
get.responses.200.content.application/json.job.created_at

created_at: string

Format: date-time

Description

When the job row was created.

Example
ts
2026-08-06T20:59:55.000Z
get.responses.200.content.application/json.job.dedupe_key

dedupe_key: null | string

Description

Optional key unique among non-terminal jobs. Re-enqueue with the same live key upserts (pushes run_at, refreshes request) and returns the existing job.

Example
ts
matter:demo-1:claim
get.responses.200.content.application/json.job.enqueued_by_operation_id

enqueued_by_operation_id: string

Description

Calling operationId that enqueued this job (trigger-map edge).

Example
ts
startJobsDemo;
get.responses.200.content.application/json.job.finished_at

finished_at: null | string

Format: date-time

Description

When the job reached a terminal status; null while still active.

Example
ts
null;
get.responses.200.content.application/json.job.id

id: string

Description

Short identifier for the job (from generateShortId).

Example
ts
Jb3k_mN7;
get.responses.200.content.application/json.job.max_attempts

max_attempts: number

Description

Maximum delivery attempts before the job becomes dead (exhausted).

Example
ts
5;
get.responses.200.content.application/json.job.operation_id

operation_id: string

Description

Target OpenAPI operationId resolved at delivery time.

Example
ts
jobsDemoStepB;
get.responses.200.content.application/json.job.original_request_id

original_request_id: string

Description

Chain-root request id (user request / webhook X-Request-ID, or cron-tick id). Copied from parent on chained enqueues; joins audit_event.request_id.

Example
ts
r - abc123;
get.responses.200.content.application/json.job.parent_job_id

parent_job_id: null | string

Description

Short id of the job that enqueued this one, or null at the chain root.

Example
ts
null;
get.responses.200.content.application/json.job.priority

priority: number

Description

Claim priority; higher values are claimed first. Default 0.

Example
ts
0;
get.responses.200.content.application/json.job.request

request: object

Description

Capped request payload delivered to the target operation (serialized size ≤ 16 KB). Path params, query, and body are optional and substituted into the operation's path template / request.

Example
ts
{
             *       "body": {
             *         "failures_before_success": 2
             *       }
             *     }
get.responses.200.content.application/json.job.request.body?

optional body: unknown

Description

JSON request body for the target operation, when any.

get.responses.200.content.application/json.job.request.path_params?

optional path_params: object

Index Signature

[key: string]: unknown

Description

Path template substitutions keyed by parameter name.

get.responses.200.content.application/json.job.request.query?

optional query: object

Index Signature

[key: string]: unknown

Description

Query string parameters keyed by name.

get.responses.200.content.application/json.job.result

result: null | { error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Type declaration

null

{ error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Description

Outcome of the latest terminal or failed attempt. Null while the job has not yet finished an attempt that records a result. error_body is set only on failure and capped at 8 KB.

get.responses.200.content.application/json.job.run_at

run_at: string

Format: date-time

Description

Earliest time the job may be claimed for delivery.

Example
ts
2026-08-06T21:00:00.000Z
get.responses.200.content.application/json.job.started_at

started_at: null | string

Format: date-time

Description

When the current (or last) delivery attempt started; null if never claimed.

Example
ts
null;
get.responses.200.content.application/json.job.status

status: "pending" | "running" | "retrying" | "succeeded" | "dead" | "cancelled"

Description

Lifecycle state. pending/retrying are claimable; running is in delivery; succeeded/dead/cancelled are terminal.

Example
ts
pending
@enum {string}
get.responses.200.content.application/json.job.user_id

user_id: string

Description

Acting user whose authority the job runs under.

Example
ts
Us7k_pQ2;
get.responses.200.headers

headers: object

Index Signature

[name: string]: unknown

get.responses.401

401: object

Description

Unauthorized - missing or invalid auth headers, or not logged in.

get.responses.401.content

content: object

get.responses.401.content.application/json

application/json: object

get.responses.401.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

get.responses.401.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
get.responses.401.headers

headers: object

Index Signature

[name: string]: unknown

get.responses.403

403: object

Description

Forbidden - site admin privileges required.

get.responses.403.content

content: object

get.responses.403.content.application/json

application/json: object

get.responses.403.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

get.responses.403.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
get.responses.403.headers

headers: object

Index Signature

[name: string]: unknown

get.responses.404

404: object

Description

Job not found.

get.responses.404.content

content: object

get.responses.404.content.application/json

application/json: object

get.responses.404.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

get.responses.404.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
get.responses.404.headers

headers: object

Index Signature

[name: string]: unknown

head?

optional head: undefined

options?

optional options: undefined

parameters

parameters: object

optional cookie: undefined

parameters.header?

optional header: undefined

parameters.path?

optional path: undefined

parameters.query?

optional query: undefined

patch?

optional patch: undefined

post?

optional post: undefined

put?

optional put: undefined

trace?

optional trace: undefined


/jobs/{id}/cancel

/jobs/{id}/cancel: object

delete?

optional delete: undefined

get?

optional get: undefined

head?

optional head: undefined

options?

optional options: undefined

parameters

parameters: object

optional cookie: undefined

parameters.header?

optional header: undefined

parameters.path?

optional path: undefined

parameters.query?

optional query: undefined

patch?

optional patch: undefined

post

post: object

Cancel a pending or retrying job

Description

Cancels a pending or retrying job (terminal_reason: cancelled-by-admin). Running jobs are not interrupted (409). Mounted as monolith chrome (site-admin-only).

post.parameters

parameters: object

post.parameters.cookie?

optional cookie: undefined

post.parameters.header?

optional header: undefined

post.parameters.path

path: object

post.parameters.path.id

id: string

Description

Short id of the job to cancel.

post.parameters.query?

optional query: undefined

post.requestBody?

optional requestBody: undefined

post.responses

responses: object

post.responses.200

200: object

Description

Job cancelled.

post.responses.200.content

content: object

post.responses.200.content.application/json

application/json: object

post.responses.200.content.application/json.job

job: object

post.responses.200.content.application/json.job.attempt

attempt: number

Description

Number of delivery attempts consumed so far (0 before first claim).

Example
ts
0;
post.responses.200.content.application/json.job.authority

authority: { kind: "request"; request_id: string; user_id: string; } | { kind: "resource"; resource_id: string; resource_kind: string; user_id: string; } | { cron_job_name: string; kind: "cron"; user_id: string; }

Type declaration

{ kind: "request"; request_id: string; user_id: string; }

{ kind: "resource"; resource_id: string; resource_kind: string; user_id: string; }

{ cron_job_name: string; kind: "cron"; user_id: string; }

Description

Root grant for the job chain (copied verbatim by children). Discriminated on kind. Wire form excludes the embedded enqueue assertion token.

post.responses.200.content.application/json.job.concurrency_key

concurrency_key: null | string

Description

Optional key limiting concurrency: at most one running job per key (e.g. matter:{id}).

Example
ts
matter: demo - 1;
post.responses.200.content.application/json.job.created_at

created_at: string

Format: date-time

Description

When the job row was created.

Example
ts
2026-08-06T20:59:55.000Z
post.responses.200.content.application/json.job.dedupe_key

dedupe_key: null | string

Description

Optional key unique among non-terminal jobs. Re-enqueue with the same live key upserts (pushes run_at, refreshes request) and returns the existing job.

Example
ts
matter:demo-1:claim
post.responses.200.content.application/json.job.enqueued_by_operation_id

enqueued_by_operation_id: string

Description

Calling operationId that enqueued this job (trigger-map edge).

Example
ts
startJobsDemo;
post.responses.200.content.application/json.job.finished_at

finished_at: null | string

Format: date-time

Description

When the job reached a terminal status; null while still active.

Example
ts
null;
post.responses.200.content.application/json.job.id

id: string

Description

Short identifier for the job (from generateShortId).

Example
ts
Jb3k_mN7;
post.responses.200.content.application/json.job.max_attempts

max_attempts: number

Description

Maximum delivery attempts before the job becomes dead (exhausted).

Example
ts
5;
post.responses.200.content.application/json.job.operation_id

operation_id: string

Description

Target OpenAPI operationId resolved at delivery time.

Example
ts
jobsDemoStepB;
post.responses.200.content.application/json.job.original_request_id

original_request_id: string

Description

Chain-root request id (user request / webhook X-Request-ID, or cron-tick id). Copied from parent on chained enqueues; joins audit_event.request_id.

Example
ts
r - abc123;
post.responses.200.content.application/json.job.parent_job_id

parent_job_id: null | string

Description

Short id of the job that enqueued this one, or null at the chain root.

Example
ts
null;
post.responses.200.content.application/json.job.priority

priority: number

Description

Claim priority; higher values are claimed first. Default 0.

Example
ts
0;
post.responses.200.content.application/json.job.request

request: object

Description

Capped request payload delivered to the target operation (serialized size ≤ 16 KB). Path params, query, and body are optional and substituted into the operation's path template / request.

Example
ts
{
             *       "body": {
             *         "failures_before_success": 2
             *       }
             *     }
post.responses.200.content.application/json.job.request.body?

optional body: unknown

Description

JSON request body for the target operation, when any.

post.responses.200.content.application/json.job.request.path_params?

optional path_params: object

Index Signature

[key: string]: unknown

Description

Path template substitutions keyed by parameter name.

post.responses.200.content.application/json.job.request.query?

optional query: object

Index Signature

[key: string]: unknown

Description

Query string parameters keyed by name.

post.responses.200.content.application/json.job.result

result: null | { error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Type declaration

null

{ error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Description

Outcome of the latest terminal or failed attempt. Null while the job has not yet finished an attempt that records a result. error_body is set only on failure and capped at 8 KB.

post.responses.200.content.application/json.job.run_at

run_at: string

Format: date-time

Description

Earliest time the job may be claimed for delivery.

Example
ts
2026-08-06T21:00:00.000Z
post.responses.200.content.application/json.job.started_at

started_at: null | string

Format: date-time

Description

When the current (or last) delivery attempt started; null if never claimed.

Example
ts
null;
post.responses.200.content.application/json.job.status

status: "pending" | "running" | "retrying" | "succeeded" | "dead" | "cancelled"

Description

Lifecycle state. pending/retrying are claimable; running is in delivery; succeeded/dead/cancelled are terminal.

Example
ts
pending
@enum {string}
post.responses.200.content.application/json.job.user_id

user_id: string

Description

Acting user whose authority the job runs under.

Example
ts
Us7k_pQ2;
post.responses.200.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.401

401: object

Description

Unauthorized - missing or invalid auth headers, or not logged in.

post.responses.401.content

content: object

post.responses.401.content.application/json

application/json: object

post.responses.401.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.401.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.401.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.403

403: object

Description

Forbidden - site admin privileges required.

post.responses.403.content

content: object

post.responses.403.content.application/json

application/json: object

post.responses.403.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.403.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.403.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.404

404: object

Description

Job not found.

post.responses.404.content

content: object

post.responses.404.content.application/json

application/json: object

post.responses.404.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.404.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.404.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.409

409: object

Description

Job is running (or otherwise not cancellable) and was not interrupted.

post.responses.409.content

content: object

post.responses.409.content.application/json

application/json: object

post.responses.409.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.409.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.409.headers

headers: object

Index Signature

[name: string]: unknown

put?

optional put: undefined

trace?

optional trace: undefined


/jobs/{id}/retry

/jobs/{id}/retry: object

delete?

optional delete: undefined

get?

optional get: undefined

head?

optional head: undefined

options?

optional options: undefined

parameters

parameters: object

optional cookie: undefined

parameters.header?

optional header: undefined

parameters.path?

optional path: undefined

parameters.query?

optional query: undefined

patch?

optional patch: undefined

post

post: object

Retry a dead or cancelled job

Description

Moves a dead or cancelled job back to pending with a full attempt-counter reset. Returns 409 when the job is not in a retryable state. Mounted as monolith chrome (site-admin-only).

post.parameters

parameters: object

post.parameters.cookie?

optional cookie: undefined

post.parameters.header?

optional header: undefined

post.parameters.path

path: object

post.parameters.path.id

id: string

Description

Short id of the job to retry.

post.parameters.query?

optional query: undefined

post.requestBody?

optional requestBody: undefined

post.responses

responses: object

post.responses.200

200: object

Description

Job re-queued as pending with attempt counters reset.

post.responses.200.content

content: object

post.responses.200.content.application/json

application/json: object

post.responses.200.content.application/json.job

job: object

post.responses.200.content.application/json.job.attempt

attempt: number

Description

Number of delivery attempts consumed so far (0 before first claim).

Example
ts
0;
post.responses.200.content.application/json.job.authority

authority: { kind: "request"; request_id: string; user_id: string; } | { kind: "resource"; resource_id: string; resource_kind: string; user_id: string; } | { cron_job_name: string; kind: "cron"; user_id: string; }

Type declaration

{ kind: "request"; request_id: string; user_id: string; }

{ kind: "resource"; resource_id: string; resource_kind: string; user_id: string; }

{ cron_job_name: string; kind: "cron"; user_id: string; }

Description

Root grant for the job chain (copied verbatim by children). Discriminated on kind. Wire form excludes the embedded enqueue assertion token.

post.responses.200.content.application/json.job.concurrency_key

concurrency_key: null | string

Description

Optional key limiting concurrency: at most one running job per key (e.g. matter:{id}).

Example
ts
matter: demo - 1;
post.responses.200.content.application/json.job.created_at

created_at: string

Format: date-time

Description

When the job row was created.

Example
ts
2026-08-06T20:59:55.000Z
post.responses.200.content.application/json.job.dedupe_key

dedupe_key: null | string

Description

Optional key unique among non-terminal jobs. Re-enqueue with the same live key upserts (pushes run_at, refreshes request) and returns the existing job.

Example
ts
matter:demo-1:claim
post.responses.200.content.application/json.job.enqueued_by_operation_id

enqueued_by_operation_id: string

Description

Calling operationId that enqueued this job (trigger-map edge).

Example
ts
startJobsDemo;
post.responses.200.content.application/json.job.finished_at

finished_at: null | string

Format: date-time

Description

When the job reached a terminal status; null while still active.

Example
ts
null;
post.responses.200.content.application/json.job.id

id: string

Description

Short identifier for the job (from generateShortId).

Example
ts
Jb3k_mN7;
post.responses.200.content.application/json.job.max_attempts

max_attempts: number

Description

Maximum delivery attempts before the job becomes dead (exhausted).

Example
ts
5;
post.responses.200.content.application/json.job.operation_id

operation_id: string

Description

Target OpenAPI operationId resolved at delivery time.

Example
ts
jobsDemoStepB;
post.responses.200.content.application/json.job.original_request_id

original_request_id: string

Description

Chain-root request id (user request / webhook X-Request-ID, or cron-tick id). Copied from parent on chained enqueues; joins audit_event.request_id.

Example
ts
r - abc123;
post.responses.200.content.application/json.job.parent_job_id

parent_job_id: null | string

Description

Short id of the job that enqueued this one, or null at the chain root.

Example
ts
null;
post.responses.200.content.application/json.job.priority

priority: number

Description

Claim priority; higher values are claimed first. Default 0.

Example
ts
0;
post.responses.200.content.application/json.job.request

request: object

Description

Capped request payload delivered to the target operation (serialized size ≤ 16 KB). Path params, query, and body are optional and substituted into the operation's path template / request.

Example
ts
{
             *       "body": {
             *         "failures_before_success": 2
             *       }
             *     }
post.responses.200.content.application/json.job.request.body?

optional body: unknown

Description

JSON request body for the target operation, when any.

post.responses.200.content.application/json.job.request.path_params?

optional path_params: object

Index Signature

[key: string]: unknown

Description

Path template substitutions keyed by parameter name.

post.responses.200.content.application/json.job.request.query?

optional query: object

Index Signature

[key: string]: unknown

Description

Query string parameters keyed by name.

post.responses.200.content.application/json.job.result

result: null | { error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Type declaration

null

{ error_body?: null | string; status_code?: number; terminal_reason?: null | "exhausted" | "permanent-status" | "rejected-by-endpoint" | "auth-unresolvable" | "cancelled-by-admin" | "cancelled-by-chain"; }

Description

Outcome of the latest terminal or failed attempt. Null while the job has not yet finished an attempt that records a result. error_body is set only on failure and capped at 8 KB.

post.responses.200.content.application/json.job.run_at

run_at: string

Format: date-time

Description

Earliest time the job may be claimed for delivery.

Example
ts
2026-08-06T21:00:00.000Z
post.responses.200.content.application/json.job.started_at

started_at: null | string

Format: date-time

Description

When the current (or last) delivery attempt started; null if never claimed.

Example
ts
null;
post.responses.200.content.application/json.job.status

status: "pending" | "running" | "retrying" | "succeeded" | "dead" | "cancelled"

Description

Lifecycle state. pending/retrying are claimable; running is in delivery; succeeded/dead/cancelled are terminal.

Example
ts
pending
@enum {string}
post.responses.200.content.application/json.job.user_id

user_id: string

Description

Acting user whose authority the job runs under.

Example
ts
Us7k_pQ2;
post.responses.200.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.401

401: object

Description

Unauthorized - missing or invalid auth headers, or not logged in.

post.responses.401.content

content: object

post.responses.401.content.application/json

application/json: object

post.responses.401.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.401.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.401.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.403

403: object

Description

Forbidden - site admin privileges required.

post.responses.403.content

content: object

post.responses.403.content.application/json

application/json: object

post.responses.403.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.403.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.403.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.404

404: object

Description

Job not found.

post.responses.404.content

content: object

post.responses.404.content.application/json

application/json: object

post.responses.404.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.404.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.404.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.409

409: object

Description

Job is not dead or cancelled and cannot be retried.

post.responses.409.content

content: object

post.responses.409.content.application/json

application/json: object

post.responses.409.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.409.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.409.headers

headers: object

Index Signature

[name: string]: unknown

put?

optional put: undefined

trace?

optional trace: undefined


/jobs/cancel-by-original-request

/jobs/cancel-by-original-request: object

delete?

optional delete: undefined

get?

optional get: undefined

head?

optional head: undefined

options?

optional options: undefined

parameters

parameters: object

optional cookie: undefined

parameters.header?

optional header: undefined

parameters.path?

optional path: undefined

parameters.query?

optional query: undefined

patch?

optional patch: undefined

post

post: object

Mass-cancel jobs in a request chain

Description

Cancels every non-terminal, non-running job that shares the given original_request_id (terminal_reason: cancelled-by-chain). Running jobs in the chain are left alone. Returns the jobs that were cancelled. Mounted as monolith chrome (site-admin-only).

post.parameters

parameters: object

post.parameters.cookie?

optional cookie: undefined

post.parameters.header?

optional header: undefined

post.parameters.path?

optional path: undefined

post.parameters.query?

optional query: undefined

post.requestBody

requestBody: object

post.requestBody.content

content: object

post.requestBody.content.application/json

application/json: object

post.requestBody.content.application/json.original_request_id

original_request_id: string

Description

Chain-root request id whose non-running jobs should be cancelled.

Example
ts
r - abc123;
post.responses

responses: object

post.responses.200

200: object

Description

Jobs that were cancelled in this chain.

post.responses.200.content

content: object

post.responses.200.content.application/json

application/json: object

post.responses.200.content.application/json.jobs

jobs: object[]

post.responses.200.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.401

401: object

Description

Unauthorized - missing or invalid auth headers, or not logged in.

post.responses.401.content

content: object

post.responses.401.content.application/json

application/json: object

post.responses.401.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.401.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.401.headers

headers: object

Index Signature

[name: string]: unknown

post.responses.403

403: object

Description

Forbidden - site admin privileges required.

post.responses.403.content

content: object

post.responses.403.content.application/json

application/json: object

post.responses.403.content.application/json.code?

optional code: string

Description

A short, machine-readable error code, for when HTTP status codes are not sufficient.

post.responses.403.content.application/json.message?

optional message: string

Description

A human-readable description of the error.

Example
ts
The requested resource could not be found.
post.responses.403.headers

headers: object

Index Signature

[name: string]: unknown

put?

optional put: undefined

trace?

optional trace: undefined