Projects
Project CRUD and collaborator management
List projects in the active organisation
List projects in the active organisation
Create a new project
Create a new project
Get project details
Get project details. Project access is verified before payload reads. Missing, malformed and inaccessible project IDs return the same 403 response.
Update a project
Update a project. PT-1083: turning `requiresStoryPointsForCycles` on, or changing `storyPointScale` while it is on, first runs a readiness check against the project's tasks in planned and active cycles. When a task there would not satisfy the policy — for enabling, any estimate that is empty, 0 or off the resulting scale; for a scale change, an estimate on a value the change removes — the request is refused with 409 `CYCLE_ESTIMATE_POLICY_NOT_READY` and nothing is changed. Its `details` carry `reason` (`ENABLE` | `SCALE_NARROWING`), `offendingCount`, `sampleTaskIds` (at most 20), `truncated` and the resulting `storyPointScale`.
Delete a project
Delete a project
The sample scenarios the 'Get started with an example' prompt may offer the caller, one entry per catalog scenario: `available`, `installed` (offer 'Remove sample project') or `unavailable` with a reason
The sample scenarios the 'Get started with an example' prompt may offer the caller, one entry per catalog scenario: `available`, `installed` (offer 'Remove sample project') or `unavailable` with a reason. `installed` wins whatever else the organisation holds; otherwise the organisation must hold no STANDARD project (the HELPDESK project does not count), the caller must hold `projects.create`, `initiatives.create` and `tasks.create`, and the Wiki — asked with the caller’s forwarded credentials — must be able to take its slice.
Install a sample scenario: its Wiki space (with the caller’s forwarded credentials), then its Project Tracker initiative, project and full example subtree, in one transaction under the scenario’s advisory lock
Install a sample scenario: its Wiki space (with the caller’s forwarded credentials), then its Project Tracker initiative, project and full example subtree, in one transaction under the scenario’s advisory lock. Idempotent — a second call answers `already_installed` and writes nothing. A failure after the Wiki installed removes the Wiki slice again; if that removal fails too, the next install converges on the Wiki slice left behind. Requires `projects.create`, `initiatives.create` and `tasks.create`.
Remove a sample scenario: its Project Tracker initiative, project and everything inside them (anything a user added there too), then its Wiki space
Remove a sample scenario: its Project Tracker initiative, project and everything inside them (anything a user added there too), then its Wiki space. Idempotent — `not_installed` when there was nothing to remove. An organisation cycle the example installed is kept if the organisation’s own tasks have joined it. Requires `projects.delete` and `initiatives.delete`.
Import a project from an Excel (.xlsx) workbook (multipart/form-data)
Import a project from an Excel (.xlsx) workbook (multipart/form-data). PT-737: the create-vs-update choice is EXPLICIT — send `mode=create` or `mode=upsert`; it wins over the legacy ID-column heuristic, which applies only when `mode` is omitted (any row with an ID then makes the whole import an upsert). Send `projectId` to bind an update to that project: it forces `upsert` and resolves the workbook's Task Keys strictly within that project (a key from another project is rejected), and such an import may carry only new blank-ID rows, which become new tasks there. The create-mode project name comes from the optional in-workbook 'Project' sheet. Permission is enforced in the import tool by mode: a create requires `projects.create`; an upsert requires `tasks.update.any` for its keyed (update) rows and `tasks.create` for its unkeyed (new) rows, on the target project's organisation (a mixed workbook requires both). Returns 201 when a project was created, 200 when an existing project was updated.
List project collaborators with enriched user/role names
List project collaborators with enriched user/role names. Accessible to callers with `projects.read`, `projects.update`, `projects.collaborators.manage`, or `org.invitations.manage`.
Add a collaborator to the project
Add a collaborator to the project
Update a collaborator's role
Update a collaborator's role
Remove a collaborator from the project
Remove a collaborator from the project
The current user's effective permissions and membership type for a project (supports cross-org collaborators verified via project access)
The current user's effective permissions and membership type for a project (supports cross-org collaborators verified via project access).