Skip to main content

Read a CROSS-PROJECT cycle's List and Board task models (PT-828 — the initiative arm of the PT-730 board)

GET 

/api/initiatives/:id/cycles/:cycleId/tasks

Read a CROSS-PROJECT cycle's List and Board task models (PT-828 — the initiative arm of the PT-730 board). Same response shape as the project arm, with three cross-project properties. (1) Members span projects: each readable row carries its OWN projectId, a projectLabel, and server-resolved status presentation (statusLabel / statusColor / statusCategory) taken from THAT project's catalog — the status catalog itself is never returned, so a client cannot join by status name across projects. (2) List groups are keyed by the resolved status PRESENTATION, in a TOTAL order: statuses that render identically merge across projects into ONE group (each row names its own project, which is what keeps a merged group unambiguous), while statuses that render differently stay separate. (3) A member in a project the caller cannot read is REDACTED to the PT-283 sentinels ({id, title, status, isCrossProject: true}) and placed in one neutral "Restricted" group carrying no status, lane, project, assignee or navigable target — lane placement itself would otherwise disclose status. Classification and every aggregate run BEFORE redaction, so stats and the burndown are VIEWER-INDEPENDENT: two callers with different readable sets see byte-identical totals. restrictedCount is the only redaction-derived figure disclosed, and it is a count.

Access: envelope access to the initiative plus FULL-scope initiatives.read AND FULL-scope tasks.read, both evaluated against the initiative's own org. A .own-only grant of either is rejected — this route enumerates other people's tasks across projects. Every denial returns the byte-identical uniform 403.

Request

Responses

Successful response