Project (deprecated)
Deprecated operation-based project endpoint retained for existing integrations.
/projectScopes:projects:writeDeprecated. This endpoint is retained for existing integrations. Use the REST-style
/projectsendpoint for new integrations.
The projects endpoint lets you list, create, update, archive, and delete projects from outside the app.
POST https://api.donethat.ai/projectRequired scope: projects:write
Request body
The body is JSON. The shape depends on operation.
An empty JSON body ({}) defaults to { "operation": "list" } (active projects only).
{
"operation": "list" | "create" | "update" | "delete" | "archive",
"id": "...",
"name": "...",
"description": "...",
"color": "#FFB623",
"team": "abcTeamIdOrExactName",
"portfolio": "xyzPortfolioIdOrExactName",
"private": false,
"confidential": false,
"archived": false
}
Operations
list: returns your projects. Optionalarchived: trueincludes archived projects;falseor omitted returns only active ones.create:nameis required. Other fields are optional.update:idis required. Omit any field to leave it unchanged; passnullor""to clear a string field.delete: not supported via the API (returns an error). Usearchiveinstead.archive:idis required. Optionalarchiveddefaults totrue; passfalseto unarchive. (Onlist,archivedfilters which projects are returned.)
Common fields
id- required forupdate,delete,archive. Use a project id from alistresponse.name- required forcreate.description- free-form string.private,confidential- booleans.team,portfolio- optional. Pass either an id, or an exact display name (trimmed, case-sensitive) for a team you belong to or a portfolio you can use. Onupdate, omit to leave unchanged;nullor""clears.- No top-level
statusfield.
Allowed color values
When set, color must be exactly one of the following hex strings (same palette as /projects):
#FFB623, #4BC0C0, #6C63FF, #FF4590, #32D74B, #FFD166, #845EC2, #00C2FF, #FF6B6B, #00B8A9, #FF9F1C, #F9F871, #EF5DA8, #4ECDC4, #00BBF9, #FF9671, #FCBAD3, #A6E3E9, #FFCB77, #D65DB1
Other limits: name and color strings are capped at 100 characters; description at 2000 characters.
Responses
| Operation | Success shape |
|---|---|
list | { "success": true, "projects": [ ... ] } |
create, update | { "success": true, "message"?: string, "projectId"?: string } |
delete, archive | { "success": true, "message"?: string } |
Failures return { "success": false, "error": "..." } with HTTP 4xx.
Examples
List active projects:
{
"operation": "list"
}
List including archived:
{
"operation": "list",
"archived": true
}
Create:
{
"operation": "create",
"name": "My project",
"description": "...",
"color": "#FFB623",
"team": "abcTeamIdOrExactName",
"portfolio": "xyzPortfolioIdOrExactName"
}