All endpoints require authentication and are workspace-scoped. Cross-tenant IDs return 404 (same shape as “not found”).
Endpoints
Mission checkpoints
List and create checkpoints scoped to a mission’s journal.List checkpoints
Query parameters:
Response:
200 OK
fork_of is omitempty: it appears only on checkpoints created by Fork (carrying the source checkpoint id) and is dropped from the JSON entirely on independent checkpoints. crew_id, label, and state.crew_container_id/state.meta are likewise omitted when empty.
Errors:
Create checkpoint
Response:
201 Created — full checkpoint object.
Errors:
Inspect, restore, and fork
Read a single checkpoint by ID, run an advisory restore that only reports drift, or branch a new mission from a checkpoint.Get checkpoint
id is the checkpoint ID. The request has no body.
Response: 200 OK — full checkpoint object.
Errors: 401 without an authenticated workspace; 404 on a missing or
cross-tenant checkpoint; 500 on a database read failure.
Restore (advisory)
id is the checkpoint ID. The request has no body.
Returns the checkpoint plus the list of journal entries that have diverged since it was made. No mission state is mutated.
Response: 200 OK
warn_divergence is always an array (empty when no drift). Callers should treat a long list as a signal to fork, not restore.
Errors: 401 without an authenticated workspace; 404 on a missing or
cross-tenant checkpoint; 500 on a database read failure.
Fork
fork_of = <source checkpoint id>.
Request body (optional):
created_by is stamped with the caller’s user ID).
Response: 201 Created
401 if no user; 404 on missing or cross-tenant.
Delete
id is the checkpoint ID. The request has no body.
Response: 204 No Content.
Errors: 401 without an authenticated workspace; 404 on a missing or
cross-tenant checkpoint; 500 on a database delete failure.