Task data
Dependencies, properties, and attachments on a task.
Three kinds of data hang off a task: dependencies on other tasks, key/value
properties, and file attachments. See Authentication
for the role each level needs. Replace https://cadence.example.com with your
instance's address.
Dependencies
A dependency records that one task is blocked by another. GET/POST /api/v1/tasks/:key/dependencies and DELETE /api/v1/tasks/:key/dependencies/:blocker_key; MCP dependencies_list,
dependencies_create, dependencies_delete. Listing needs read; creating
and deleting need member.
Over the API, the task in the path is the blocked task; name the blocker in the
body as blocking_task:
curl -X POST https://cadence.example.com/api/v1/tasks/OPS-42/dependencies \
-H "Authorization: Bearer smc_your_token_here" \
-H "Content-Type: application/json" \
-d '{ "blocking_task": "OPS-17", "clears_on": "resolved" }'clears_on decides what lifts the block, and defaults to resolved:
resolved— the edge clears when the blocking task is resolved.completed— the edge clears when the blocking task is completed.
While a dependency is uncleared, it blocks the blocked task from being dispatched.
Over MCP, name both tasks with blocked_key and blocking_key, and optionally
pass blocks_from — the name of a stage on the blocked task's workflow — so the
edge only blocks once the task reaches that stage.
Three edges are refused, with these messages:
a task cannot block itself— the blocker and the blocked task are the same.blocking_task must belong to the same space— the two tasks are in different spaces.edge would create a dependency cycle— the edge would close a loop.
Deleting an edge removes the block; it does not change either task's resolved state.
Seeing a task's dependencies in the board view
The operations above are how you create and clear edges. To see the dependencies a task already has, open the workflow's board view in the browser.
A task that sits in a dependency chain — it blocks another task, or is blocked by one, whether or not that blocker is resolved — carries a dependency mark on its card. Click the mark to open a full-screen view of the task's whole dependency chain: every task reachable from it by dependency edges in either direction, drawn as read-only cards with an arrow from each blocking task to the task it blocks. The task drawer opens the same view through its View graph control.
This view is read-only: it draws the edges, it does not create or clear them —
that stays the dependencies_create and dependencies_delete operations above.
Anyone signed in who can see the workflow can open it.
The view covers up to 200 tasks. A chain larger than that is drawn as far as the limit reaches, and the view tells you it is partial.
Properties
A property is a named string value on a task. GET/POST /api/v1/tasks/:task_key/properties and DELETE /api/v1/tasks/:task_key/properties/:key; MCP properties_list,
properties_set, properties_unset. Listing needs read; setting and
unsetting need member.
Setting a property upserts it — the same key is created or overwritten. A key may be up to 200 characters and a value up to 10,000.
curl -X POST https://cadence.example.com/api/v1/tasks/OPS-42/properties \
-H "Authorization: Bearer smc_your_token_here" \
-H "Content-Type: application/json" \
-d '{ "key": "release_channel", "value": "beta" }'Properties are also what a property rule reads: a rule can require a named property be set before a task may enter a stage.
Attachments
A task can carry file attachments. POST/GET /api/v1/tasks/:task_key/attachments
and GET/DELETE /api/v1/tasks/:task_key/attachments/:attachment_id; MCP
tasks_list_attachments and tasks_delete_attachment; the web task drawer.
Listing and fetching need read; creating and deleting need member.
Listing returns metadata only — each attachment's id, filename,
content_type, byte_size, and kind. Fetching one by its id streams the
bytes.
An attachment may be up to 10 MB, and its content type must be one of:
image/png, image/jpeg, image/webp, image/gif, application/pdf,
text/plain, text/markdown, text/csv, application/json.
An upload that breaks these limits is refused:
filename is required— the upload has no filename.file is larger than the 10 MB limit— the file is too big.content type "…" is not allowed; allowed types: …— the type is not on the list above.