Skip to main content

Create Epics, Issues, Tasks, Bugs, and Sub-tasks

Work items are the individual units of work inside a PPM project. This guide shows you how to create each type.

Work item types

TypeDescriptionCan be a child of
EPICA strategic initiative that spans multiple deliverablesEPIC
ISSUEA concrete deliverable piece of workEPIC
TASKA granular work unitEPIC, ISSUE
BUGA defect to be fixedEPIC, ISSUE
SUB_TASKA leaf-level breakdown of a task, bug, or issueISSUE, TASK, BUG
note

Sub-tasks cannot have children. See Organise work items into a hierarchy for full hierarchy rules.

Auto-generated work item key

Every work item receives a unique work_item_key in the format WI-NNNNNNN (e.g. WI-0000001). You do not need to supply this — the system generates it on insert.

Create an epic

POST /rest/v1/t_ppm_work_items
{
"project_id": "a1b2c3d4-...",
"work_item_type": "EPIC",
"work_item_name": "Onboarding Flow Redesign",
"work_item_description": "Redesign the entire onboarding experience.",
"work_item_priority": "HIGH"
}
Response (201 Created)
{
"id": "e5f6a7b8-...",
"work_item_key": "WI-0000001",
"work_item_type": "EPIC",
"work_item_name": "Onboarding Flow Redesign",
"work_item_status": "BACKLOG",
"work_item_priority": "HIGH",
"project_id": "a1b2c3d4-..."
}

Create an issue

POST /rest/v1/t_ppm_work_items
{
"project_id": "a1b2c3d4-...",
"work_item_type": "ISSUE",
"work_item_name": "Build new welcome screen",
"work_item_priority": "MEDIUM",
"parent_work_item_id": "e5f6a7b8-..."
}

Create a task

POST /rest/v1/t_ppm_work_items
{
"project_id": "a1b2c3d4-...",
"work_item_type": "TASK",
"work_item_name": "Implement welcome screen API endpoint",
"parent_work_item_id": "e5f6a7b8-...",
"estimated_work_minutes": 480
}

Create a bug

POST /rest/v1/t_ppm_work_items
{
"project_id": "a1b2c3d4-...",
"work_item_type": "BUG",
"work_item_name": "Welcome email not sent on signup",
"work_item_priority": "CRITICAL",
"parent_work_item_id": "e5f6a7b8-..."
}

Create a sub-task

POST /rest/v1/t_ppm_work_items
{
"project_id": "a1b2c3d4-...",
"work_item_type": "SUB_TASK",
"work_item_name": "Write unit tests for welcome endpoint",
"parent_work_item_id": "<task-or-issue-id>"
}

Work item statuses

Every work item starts in BACKLOG by default. The available statuses are:

StatusCategoryDescription
BACKLOGUnstartedNot yet planned
SELECTEDUnstartedIn backlog, ready to pick up
TODOUnstartedPlanned for the current milestone
IN_PROGRESSStartedWork is underway
IN_REVIEWStartedCode review or MR open
TESTINGStartedQA or verification
BLOCKEDStartedWaiting on a dependency
DONECompletedFinished
CANCELLEDCancelledWill not be done

The work_item_status_category field is auto-computed from the status.

Update a work item's status

PATCH /rest/v1/t_ppm_work_items?id=eq.<work-item-id>
{
"work_item_status": "IN_PROGRESS",
"actual_start_date": "2026-05-03T09:00:00Z"
}

Work item priorities

PriorityDescription
CRITICALHighest priority
HIGHHigh priority
MEDIUMNormal priority (default)
LOWLow priority

Available fields

FieldTypeRequiredDefaultDescription
project_iduuidYesThe parent project
work_item_typevarchar(32)YesEPIC, ISSUE, TASK, BUG, or SUB_TASK
work_item_namevarchar(256)YesDisplay name
work_item_descriptiontextNoLonger description
work_item_statusvarchar(32)NoBACKLOGSee status table above
work_item_priorityvarchar(32)NoMEDIUMSee priority table above
health_statusvarchar(32)NoON_TRACK, NEEDS_ATTENTION, or AT_RISK
parent_work_item_iduuidNoParent work item (hierarchy rules apply)
milestone_iduuidNoMilestone this work item belongs to
due_datetimestamptzNoTarget completion date
weightintegerNoRelative sizing / story points
estimated_work_minutesintegerNoEstimated effort in minutes
percent_completesmallintNo00–100 progress indicator
confidentialbooleanNofalseRestrict visibility
display_orderintegerNo0Sort order within a list
external_refvarchar(512)NoExternal reference (e.g. GitLab issue number)
external_urlvarchar(1024)NoURL to external issue
metadatajsonbNoArbitrary key-value data