Cadence
Reference

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.

On this page