Work API: schemas

The request and response bodies of the operations in this API.

AcceptWorkItemDto

PropertyTypeRequiredDescription
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.
outcomeRefstringyesThe xema:// ref of the accepted result.

AssignWorkItemDto

PropertyTypeRequiredDescription
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.
ownerWorkSubjectDtoyes

BlockWorkItemDto

PropertyTypeRequiredDescription
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.
kindWorkBlockerKindyes
notestringnoWhat an external blocker waits on.
refstringnoThe item id or decision id (item and decision blockers).

CreateWorkItemDto

PropertyTypeRequiredDescription
contractobjectnoThe execution contract: opaque JSON.
contractKindstringnoNames the shape of contract.
criteriaarray of stringnoThe acceptance criteria, in order.
goalstringyesWhat done looks like, in prose. Required to make the item ready.
idempotencyKeystringyesMakes a retried create return the same item.
needsarray of string (uuid)noIds of items of the same project this item needs.
ownerWorkSubjectDtonoDefaults to the caller.
priorityWorkItemPriorityno
rationalestringno
titlestringyes

CursorPaginationMeta

PropertyTypeRequiredDescription
hasMorebooleanyesWhether another page exists. Mandatory for cursor pagination (§3.3).
limitnumbernoThe page size this scan was asked for.
nextCursorstring or nullyesOpaque continuation token, or null on the last page. Clients MUST NOT parse it, construct one, or derive meaning from its structure.

DropWorkItemDto

PropertyTypeRequiredDescription
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.
reasonstringyes

ProblemActionableBy

Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.

Type: one of "user", "org-admin", "platform", "none"

ProblemDetailsDto

RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codestringyesSCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ProblemFieldIssueDto

PropertyTypeRequiredDescription
codestringnoSCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem.
detailstringyesProse for logs and developers. A frontend localises from code + params instead.
paramsmap of string or number or booleannoSafe i18n interpolation values for this issue's code.
pointerstringyesRFC 6901 JSON Pointer into the request body. Root is "/".

ProblemRetry

What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.

Type: one of "transient", "after-change", "never"

ReadyWorkItemDto

PropertyTypeRequiredDescription
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.

UnblockWorkItemDto

PropertyTypeRequiredDescription
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.

UpdateCriterionDto

PropertyTypeRequiredDescription
evidenceRefstringnoThe xema:// ref of the evidence.
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.
metbooleanyes

UpdateWorkItemDto

PropertyTypeRequiredDescription
contractobjectno
contractKindstringno
criteriaarray of stringnoReplaces the criteria; met state is kept for a criterion whose text is unchanged.
expectedRevisionnumberyesThe revision of the item this change was made against; a mismatch is a 409.
goalstringno
needsarray of string (uuid)noReplaces the item`s needs.
priorityWorkItemPriorityno
rationalestringno
titlestringno

WorkBlockerDto

PropertyTypeRequiredDescription
kindWorkBlockerKindyes
notestring or nullno
refstring or nullno

WorkBlockerKind

Type: one of "item", "decision", "external"

WorkCriterionDto

PropertyTypeRequiredDescription
evidenceRefstring or nullno
idstringyes
metbooleanyes
metAtstring (date-time) or nullno
metByWorkSubjectDto or nullno
positionnumberyes
textstringyes

WorkItemDto

PropertyTypeRequiredDescription
blockerWorkBlockerDto or nullno
contractobject or nullno
contractKindstring or nullno
createdAtstring (date-time)yes
createdByWorkSubjectDtoyes
criteriaarray of WorkCriterionDtoyes
dispatchablebooleanyesReady, and every need done. Derived, never stored.
doneAtstring (date-time) or nullno
dropReasonstring or nullno
droppedAtstring (date-time) or nullno
frozenbooleanyesTrue once the project was deleted: the item is read-only for good.
goalstringyes
idstringyes
needsarray of stringyesIds of the items this item needs.
numbernumberyesThe per-project handle, shown as W-<number>.
objectRefstringyesThe xema:// address of the item.
outcomeRefstring or nullno
ownerWorkSubjectDtoyes
priorityWorkItemPriorityyes
projectIdstringyes
rationalestring or nullno
readyAtstring (date-time) or nullno
revisionnumberyes
stateWorkItemStateyes
titlestringyes
updatedAtstring (date-time)yes

WorkItemDtoDataEnvelope

PropertyTypeRequiredDescription
dataWorkItemDtoyes

WorkItemPriority

Type: one of "urgent", "high", "normal", "low"

WorkItemState

Type: one of "draft", "ready", "running", "waiting", "blocked", "done", "dropped"

WorkItemSummaryDto

PropertyTypeRequiredDescription
createdAtstring (date-time)yes
dispatchablebooleanyesReady, and every need done. Derived, never stored.
idstringyes
numbernumberyesThe per-project handle, shown as W-<number>.
objectRefstringyesThe xema:// address of the item.
ownerWorkSubjectDtoyes
priorityWorkItemPriorityyes
projectIdstringyes
revisionnumberyes
stateWorkItemStateyes
titlestringyes
updatedAtstring (date-time)yes

WorkItemSummaryDtoCursorPaginatedEnvelope

PropertyTypeRequiredDescription
dataarray of WorkItemSummaryDtoyes
paginationCursorPaginationMetayes

WorkSubjectDto

PropertyTypeRequiredDescription
idstringyesThe user id or agent id.
kindWorkSubjectKindyes

WorkSubjectKind

Type: one of "user", "agent"