Endpoints
Create/update mutations require the
create role; delete requires manage.
Read routes require an authenticated workspace member.
Project shape
List projects
status and sort query parameters; no request body.
status optionally filters by a comma-separated list. sort accepts
created_at or updated_at; any other value (including omission) sorts by
name ASC. The response is a JSON array, never null.
Create a project
name; optional fields are description, icon, color, status, priority, lead_type, lead_id, start_date, and target_date.
Accepted fields are name (required), description, icon, color,
status, priority, lead_type, lead_id, start_date, and target_date.
The lead pair is validated against the current workspace. Returns 201 Created with the full project shape. Missing name or malformed JSON returns
400; an invalid or cross-workspace lead also returns 400.
Get a project
projectId is a required path parameter. No request body.
Returns 200 OK with the full project shape, or 404 when the project is not
in the current workspace.
Update a project
projectId is a required path parameter and the JSON body contains one or more accepted project fields. Computed fields and timestamps are not patchable.
All project fields except id, workspace_id, computed fields, and timestamps
are accepted as optional patch fields. Supplying no accepted field returns
400. A changed name also updates slug; lead changes must remain a valid
workspace-local user/agent pair. Returns the updated project.
Delete a project
projectId is a required path parameter. No request body.
Unlinks associated issues by setting project_id to NULL, then hard-deletes
the project. Returns 204 No Content; an unknown or cross-workspace project
returns 404.
Project stats
projectId is a required path parameter. No request body.
Returns 200 OK:
by_assignee, by_label, and crews are arrays (empty when there are no
matching issues). An unknown or cross-workspace project returns 404.
See also Milestones and Labels.