403 direct_human_decision_action_required.
The dedicated
/api/v1/decisions resource is canonical. The older
decision record on /api/entities remains a
compatibility read and write for older clients.Create — POST /api/v1/decisions
Accepts Authorization: Bearer oxk_... or a web-app session.
Every create requires an Idempotency-Key. Reuse the same key and body to get
the original decision with 200; reuse it with a different body returns 409 idempotency_key_conflict.
shape_context is required in practice
shape defaults to generic and shape_context defaults to {}, but {}
satisfies no shape. A body of only workspace_id and title therefore fails
with 400 invalid_shape_context. Send the context its shape requires:
Every shape also accepts an optional
estimate. Note the distinction: the
top-level description field is optional and is stored as the decision summary;
shape_context.description is the required body of a generic decision.
The smallest request that succeeds:
201 with { "decision": { ... } } — keep decision.id. An
idempotent replay returns the same shape with 200. This endpoint returns a
bare named object, not the { data, meta } envelope.
Read — GET /api/v1/decisions
Query parameters: workspace_id (required), shape, urgency, status,
limit (default 50, max 200). Returns { "decisions": [ ... ] }.
The compatibility read GET /api/entities?type=decision remains available for
older clients and supports its generic filters (status, initiative_id,
search, ids).
Lifecycle
status values: pending, approved, declined, superseded,
cancelled. The write aliases accepted → approved and rejected →
declined are normalized. All transitions start from pending.
Resolution is human-only by design. The paths that record a ruling —
PATCH /api/v1/decisions/{id} (resolutions approved, adjusted,
archived, with option selection for option shapes) and the decision
lifecycle actions — reject oxk_ credentials with 403. A person resolves
decisions in Mission Control, or through an MCP client where orgx_decide
runs under their authenticated session.
Editing an existing decision is narrower still: proposal-field updates are
available through the MCP orgx_write path while the decision is pending.
A personal oxk_ key receives 403 even for proposal fields. Only proposal
fields (title, summary, description, priority,
due_at, recommended_action, blocks_task, estimate, urgency,
urgency_score) are editable, and only while the decision is still pending
(409 otherwise). With an API key, get the decision right at creation time.
All operations on this resource
Where the IDs come from
MCP equivalents
orgx_decide covers the full loop: create and list use the decision resource;
approve and reject run under the signed-in user’s authority.
orgx_search with type=decision reads the same records this page describes.