Skip to content

Lifecycle Stages

Manage project lifecycle stages that track project progress from planning through completion. Each stage belongs to a category that defines the phase of work.

Lifecycle Stage Object

FieldTypeDescription
idstringUnique identifier (CUID format). System-generated. Read-only.
namestringStage name (e.g. "Discovery", "In Development", "Shipped").
categorystringStage category. One of: "PLANNING", "TODO", "IN_PROGRESS", "COMPLETED", "DISREGARDED".
colorstringHex colour for UI display (e.g. "#3B82F6").
sortOrderintegerDisplay ordering weight. Lower values appear first.
isSystemDefaultbooleanWhether this is a system-provided default stage. System defaults cannot be deleted.
isArchivedbooleanWhether the stage is archived. Archived stages are hidden from selection lists.
createdAtdatetime (ISO 8601)When the record was created. Read-only.
updatedAtdatetime (ISO 8601)When the record was last modified. Read-only.

Category Values

ValueDescription
PLANNINGEarly-stage ideation and scoping.
TODOApproved and ready to begin.
IN_PROGRESSActively being worked on.
COMPLETEDSuccessfully delivered.
DISREGARDEDCancelled or deprioritized.

Endpoints

MethodPathDescription
GET/org/:orgId/lifecycle-stagesList lifecycle stages
GET/org/:orgId/lifecycle-stages/:idGet lifecycle stage
POST/org/:orgId/lifecycle-stagesCreate lifecycle stage
PATCH/org/:orgId/lifecycle-stages/:idUpdate lifecycle stage
DELETE/org/:orgId/lifecycle-stages/:idDelete lifecycle stage

List Lifecycle Stages

GET /org/:orgId/lifecycle-stages

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-based).
limitinteger20Records per page. Min 1, max 100.
searchstring--Free-text search by name.
sortBystringnameField to sort by: name, category, sortOrder, createdAt.
sortDirstringascasc or desc.

Example Request

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/lifecycle-stages?sortBy=sortOrder" \
  -H "Authorization: Bearer private_..."

Example Response

json
{
  "data": [
    {
      "id": "clx5a6b7c8d9e0f1g2h3",
      "name": "Discovery",
      "category": "PLANNING",
      "color": "#F59E0B",
      "sortOrder": 0,
      "isSystemDefault": true,
      "isArchived": false,
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2025-11-20T14:00:00Z"
    },
    {
      "id": "clx6t7u8v9w0x1y2z3a4",
      "name": "In Development",
      "category": "IN_PROGRESS",
      "color": "#3B82F6",
      "sortOrder": 2,
      "isSystemDefault": false,
      "isArchived": false,
      "createdAt": "2024-01-05T08:00:00Z",
      "updatedAt": "2025-09-01T10:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 5,
    "hasNextPage": false
  }
}

Create Lifecycle Stage

POST /org/:orgId/lifecycle-stages

Create Request Body

FieldTypeRequiredDescription
namestringYesStage name.
categorystringNoOne of "PLANNING", "TODO", "IN_PROGRESS", "COMPLETED", "DISREGARDED".
colorstringNoHex colour for UI display. Default: "#6B7280".
sortOrderintegerNoDisplay ordering. Default: 0.
isSystemDefaultbooleanNoDefault: false.
isArchivedbooleanNoDefault: false.

Update Request Body

All fields from Create are accepted, all optional.

Example Request

bash
curl -X POST "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/lifecycle-stages" \
  -H "Authorization: Bearer private_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "In Development",
    "category": "IN_PROGRESS",
    "color": "#3B82F6",
    "sortOrder": 2
  }'

Status: 201 Created


Error Responses

Validation Error (400)

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Request validation failed.",
    "details": [{ "field": "name", "message": "name is required" }],
    "errorId": "err_clx9a8b7c6d5e4f3"
  }
}

Not Found (404)

json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Lifecycle stage not found.",
    "errorId": "err_clx9a8b7c6d5e4f3"
  }
}

  • Projects -- Projects reference lifecycle stages via lifecycleStageId.

Flowstate Documentation