Skip to main content
Central, generic resource: one model implements nine domain concepts via its type field. The raw deliverable endpoints below are low-level and do not enforce concept rules (valid nesting, required fields, stage linkage, Department scoping). For concept-aware, validated work — and to learn how the concepts fit together — use the Domain concepts endpoints. Hierarchy in brief (see the concepts section for the full grammar): roots are order, route, overhead, template-phase; the containers order/phase/component nest freely and hold stage nodes; step and qcstep are leaves under a stage. Import/Export: ✓ — see import and export Search columns: name, identifier Standard CRUD applies. See standard endpoints.

Fields

type values

schedule shape

This is the shape stored on the record and returned by GET. You don’t write it directly — it’s an effect of the schedule action endpoints below, whose request bodies use a different shape (an action union with epoch-second times, not startDate/endDate).

progress shape

Status values: waiting | todo | wip | rework | on-hold | done
hasBeenReworked, updatedById, and updatedAt are server-managed — you do not need to supply them. hasBeenReworked is set automatically to true when a deliverable enters rework status and stays true even after the status subsequently changes.

computed shape (read-only)

Extra endpoints

Hierarchy

Returns all deliverables in the subtree:
Response: { "values": Deliverable[], "totalCount": number }

Groups

Group deliverables by a semantic dimension:
groupBy values: project | stage | people | root | tags

Reorder

Set dependency order under a root:
Response: 204 No Content

Crew time

Response: { "<deliverableId>": { ... } }

Schedule a deliverable

The body is an action union (type discriminates the shape), not {startDate, endDate}. Times are epoch seconds (newStart / newFinish), not ISO strings — only one of the two is required per call, the engine derives the other from duration/dependencies.
Response: 204 No Content — re-fetch the deliverable (GET /deliverable/:id) to see the resulting schedule.

Batch schedule

Same action union as above, wrapped with rootParentId/targetId per item:
Response: 204 No Content.

Update progress

The body is an action union (type discriminates the shape), not {status, completed, wip}:
Response: 200 with { "kickedWorkers": [...] } — the IDs of any workers whose in-progress work sessions/plans were stopped because their deliverable reached done. It does not return the updated deliverable; re-fetch it separately if you need the new progress.