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
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:{ "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:204 No Content
Crew time
{ "<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.
204 No Content — re-fetch the deliverable (GET /deliverable/:id) to see the resulting schedule.
Batch schedule
Same action union as above, wrapped withrootParentId/targetId per item:
204 No Content.
Update progress
The body is an action union (type discriminates the shape), not {status, completed, wip}:
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.