Cross-project 'all cycles' summary list (PT-678) — active-org scoped
GET/api/cycles
Cross-project "all cycles" summary list (PT-678) — active-org scoped. It has TWO arms since PT-828. The PROJECT arm is narrowed to the caller's non-archived readable projects (cycles in COMPLETED/CANCELLED projects are excluded). The INITIATIVE arm returns every initiative-scoped cycle in the active org when the caller holds FULL initiatives.read (a .own-only grant yields none — there is no per-initiative ownership filter). The two are narrowed by different things, so a caller with ZERO readable projects can still legitimately see an initiative's cycles. An initiative in ANOTHER org is absent until the caller switches org, even where the item routes would admit them: this is a collection, and it is pinned to the active org by contract. Every row carries an owner object; projectId / projectName are null on the initiative arm. Each cycle carries progress + a burndown trend + velocity. PROGRESS IS LIVE ONLY WHILE A CYCLE IS PLANNED OR ACTIVE (PT-917): a completed cycle reports its frozen close snapshot instead, so rollover moving unfinished members onto the successor cannot inflate it. progress.source says which model governed the figure and progress.measurement how far it can be trusted — an approximate close carries its counters, while an unavailable one — a completed cycle whose close snapshot is missing OR unusable (a non-finite stored counter) — has every counter null. Access mirrors /api/tasks: full tasks.read + any projects.read + active membership; the initiative arm additionally requires full initiatives.read. ?options=1 (PT-679) returns the SLIM cycle-options list (id / name / owner) for the Tasks-page Cycle filter chip — same scoping and the same two arms, without the per-cycle progress/burndown computation.
Request
Responses
- 200
- 400
- 401
- 403
Successful response
No active organisation
Unauthorized — authentication credentials are missing or invalid
Forbidden — requires full 'tasks.read' + any 'projects.read' and an active membership