Read a Task
Path Parameters
Responses
stringQuoted decimal optimistic-concurrency version.
objectMaterialized lifecycle policy of the entity's current status. Compare
stage_revision and definition_revision for staleness; behaviors
is the complete set for the entity kind, so clients never infer policy
from names or categories. Absent when the selection has no lifecycle
status. Resolved for a whole page with one batch lookup. Project list
rows carry identities and revisions only: stage_name and behaviors
are omitted there and returned by Project detail and the lifecycle
definition list.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string·min 4·max 28Case-insensitive client input normalized to uppercase by the server.
Exactly the UI ticket reference {PROJECT_KEY}-{TASK_NUMBER} (for
example PRO-123); the positive Task number is canonical decimal
without leading zeroes.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string·min 1Server-owned sortable order key within the Task's Project and Status. Clients render it but submit neighbour anchors when moving a Task.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
objectVersioned, server-validated rich-text document. The server accepts only nodes and marks on the Assign allowlist and rejects anything outside it; the client's installed editor extension set is never authoritative. Complexity is bounded at 32 levels of nesting and 50,000 nodes in addition to the per-field byte limits.
Accepted nodes: doc, paragraph, text, heading, bulletList,
orderedList, listItem, taskList, taskItem, blockquote, callout,
codeBlock, blockMath, horizontalRule, hardBreak, image, file, plus the
reference nodes userMention, projectReference, documentReference,
and taskReference. Accepted marks: bold, italic, underline,
strike, code, link.
A Task-description or Comment mutation accepts at most 100 distinct
canonical user identifiers across its userMention nodes. Repeated
mentions of the same user count once.
image and file name an Assign attachment through
attrs.attachmentId and carry no URL and no bytes: attachments travel
only through the attachment upload and download operations, and a
signed URL is minted per request after a fresh authorization check
rather than stored in content. A request whose image or file node
omits attachmentId, or carries a URL-bearing attribute, is rejected.
callout has block children and exactly attrs.kind and attrs.icon.
Kind is callout, note, tip, important, warning, or caution.
Icon is null for the default Lucide icon, an emoji of at most 64 UTF-8
bytes, an allowlisted lucide:name token to override it, or an empty string
to hide it. Unknown Lucide names are rejected. HTML, URLs and image
data are not accepted as icons. Callouts are additive in schemas 1 and 2.
blockMath stores a required string attrs.latex; rendered math HTML
and renderer settings are not persisted. Schema 1 retains the existing node contract; schema 2 additionally admits tables.
Checklists, attachment blocks, display equations, underline, and
projectReference were added additively, so every
previously stored document is still valid and no migration is
required.
Schema 2 additionally accepts table, tableRow, tableCell and tableHeader. A table has tableRow children; a row has tableCell/tableHeader children. Cells contain Assign blocks, starting with a paragraph; nested tables are rejected. Cells accept colspan/rowspan (integers 1–64, default 1), colwidth (null or one integer 24–2000 per spanned column), and align (null, left, center or right). Tables/rows have no attrs, marks or text; cells have no marks/text or other attributes. The occupancy grid must be rectangular with no overlap, holes or spans beyond its rows. Limits are 1000 rows, 64 logical columns and 10000 physical cells, still subject to each field's byte budget and global node/depth limits. Schema 1 rejects all four table nodes. Rich tables exchange through the named assign-table Markdown JSON fence; simple tables use GFM pipes.
objectRevision-bound derived convenience text. It is null when the body is shorter than 300 normalized characters, generation is pending, or the stored projection is stale. It is never evidence or a replacement for description content.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string <date-time>Server-written instant when the Task last entered a done-category Status; null while open or unavailable for a pre-migration record.
string <date-time>Instant the current terminal episode began; cleared when the Task becomes active again.
string <uuid>Actor that started the current terminal episode; null only for migrated or trusted automated provenance gaps.
stringTerminal outcome for the current resolved episode; null for active Tasks.
completedcancelledstring <uuid>[]·max 20Task collections include the complete assignment identifier set; an empty array means no labels. Non-collection responses may omit this field; use the target-label read when absent.
objectPresent only on a mutation response when the server created an undoable command. Read responses omit it.
string <date-time>Fixed retention deadline after which the asynchronous purge sweeper may redact Task content; null outside trash and after purge.
string <date-time>Tombstone creation instant. A purged Task retains only stable reference metadata and cannot be restored.
integer·min 0Delay in seconds before retrying, when an expected maintenance end is known.
string·const no-storePrevents storage of error responses by clients and intermediaries.
string·min 1·max 200Correlation identifier for the request.
string·const nosniffPrevents user agents from MIME-sniffing the response.