Pause dispatch for a batch
Admin only. Holds outbound dispatch for this batch: an auditable pause record is opened, the batch’s queued dispatch work is flagged so the dispatcher skips it, and the batch’s status becomes paused. Nothing is cancelled or deleted — the batch’s workflow, jobs, and executions are untouched, and resume picks up exactly where dispatch stopped.
Idempotent: pausing an already-paused batch returns the existing hold. A batch in a terminal state (completed, failed, cancelled) cannot be paused (409). Cross-tenant access returns 404, never 403.
Authorizations
Path Parameters
Body
Open a hold on dispatch.
All fields are optional. duration_seconds schedules an automatic
resume; omit it for an open-ended hold that must be resumed explicitly.
reason is a free-text audit note. lane narrows a Domain-scoped pause
to one named dispatch lane and bucket narrows it to one provider rate
bucket — both are validated against the fixed allowed sets.
Response
Successful Response
One hold on dispatch — an admin hold or an automatic backoff.
Both kinds share this one shape, so a single listing shows everything
currently holding dispatch. scope says how much is held and the
matching target field (tenancy_id, lane, bucket, or batch_id)
says exactly what. cause is the machine-readable origin
(admin_request for a human hold, the provider fault tag for an
automatic backoff) and reason is the human note, if any. A released
pause keeps its record: released_at and released_by complete the
audit trail, and extensions lists every time a scheduled resume was
pushed out.