List projects
Projects across the org's teams, newest first. Filter with team_id.
View as MarkdownAuthorization
bearer In: header
Query Parameters
Restrict to one team.
uuidWhen true, returns ONLY soft-deleted projects - the Recently Deleted view. Every other view excludes them. A project is erased for good 30 days after deletion, or sooner via permanentlyDeleteProject.
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/projects"{ "projects": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec", "name": "string", "description": "string", "status": "planned", "leadId": "3c6e2b8e-0e8f-48db-8791-27271df10113", "targetDate": "2019-08-24", "created": "2019-08-24T14:15:22Z", "modified": "2019-08-24T14:15:22Z" } ]}Delete a workflow state
Hard delete, and only when nothing points at the state. Issues carry a NOT NULL state, so a state that still has issues is a 409 naming how many — move them to another state first, then delete it. Also a 409 when this is the last state of its `type` in the team: progress bars, completion %, and My Issues' active filter all read a state's type, not its name, so a category (e.g. every `completed` state) left empty would silently stop working rather than fail loudly. Create or keep another state of the same type first.
Create a project
Status defaults to "planned". leadId must reference a member of the caller's org (else 400 "invalid leadId"); an empty-string leadId is treated as null. targetDate accepts YYYY-MM-DD (or RFC3339, truncated to the day). The team must belong to the caller's org (else 404). `name` is stored trimmed and must be unique within the team, compared case-insensitively — a name already in use is a 409. A `status` outside the enum is a 400 naming the allowed set — the column carries a CHECK constraint, so an unlisted value could never be stored.