Skip to main content

Plan and Track Milestones

Milestones let you group work items into time-boxed iterations (sprints), releases, or project phases. This guide covers creating milestones, assigning work items, and tracking progress.

Milestone types

TypeDescription
SPRINTA time-boxed iteration (default)
RELEASEA product release
PHASEA project phase

Milestone statuses

StatusDescription
UPCOMINGNot yet started (default)
ACTIVECurrently in progress
CLOSEDCompleted

Create a milestone

POST /rest/v1/t_ppm_milestones
{
"project_id": "a1b2c3d4-...",
"milestone_name": "Sprint 1",
"milestone_description": "Initial sprint covering core onboarding screens.",
"milestone_type": "SPRINT",
"milestone_start_date": "2026-05-01T00:00:00Z",
"milestone_due_date": "2026-05-14T23:59:59Z"
}
Response (201 Created)
{
"id": "m1n2o3p4-...",
"milestone_name": "Sprint 1",
"milestone_type": "SPRINT",
"milestone_status": "UPCOMING",
"milestone_start_date": "2026-05-01T00:00:00+00:00",
"milestone_due_date": "2026-05-14T23:59:59+00:00",
"project_id": "a1b2c3d4-..."
}

Available fields

FieldTypeRequiredDefaultDescription
project_iduuidYesThe parent project
milestone_namevarchar(256)YesDisplay name (unique per tenant)
milestone_descriptiontextNoLonger description
milestone_typevarchar(32)NoSPRINTSPRINT, RELEASE, or PHASE
milestone_start_datetimestamptzNoStart date
milestone_due_datetimestamptzNoTarget end date
milestone_statusvarchar(32)NoUPCOMINGUPCOMING, ACTIVE, or CLOSED
metadatajsonbNoArbitrary key-value data

Start a milestone

PATCH /rest/v1/t_ppm_milestones?id=eq.m1n2o3p4-...
{
"milestone_status": "ACTIVE"
}

Close a milestone

PATCH /rest/v1/t_ppm_milestones?id=eq.m1n2o3p4-...
{
"milestone_status": "CLOSED"
}

Assign a work item to a milestone

Set the milestone_id field on the work item:

PATCH /rest/v1/t_ppm_work_items?id=eq.<work-item-id>
{
"milestone_id": "m1n2o3p4-..."
}

You can also set milestone_id when creating a work item:

POST /rest/v1/t_ppm_work_items
{
"project_id": "a1b2c3d4-...",
"work_item_type": "TASK",
"work_item_name": "Implement login page",
"milestone_id": "m1n2o3p4-..."
}

Remove a work item from a milestone

PATCH /rest/v1/t_ppm_work_items?id=eq.<work-item-id>
{
"milestone_id": null
}

List work items in a milestone

GET /rest/v1/t_ppm_work_items?milestone_id=eq.m1n2o3p4-...&order=display_order.asc

List milestones for a project

GET /rest/v1/t_ppm_milestones?project_id=eq.a1b2c3d4-...&order=milestone_start_date.asc