Milestones & Phases · Field reference¶
Object shapes returned by the Milestones & Phases endpoints. Fields with no value are
omitted, including completionPct when no
value can be computed; treat a missing completionPct as "not computable", not as 0.
Milestone and Phase¶
Milestones and phases share one shape. A milestone marks a single date; a phase spans startDate to
endDate. Neither has a level; they sit beside the objective hierarchy rather than inside it.
Always returned
| Field | Type | Description |
|---|---|---|
id |
string | Internal ID |
type |
string | Milestone or Phase |
key |
string | Key, e.g. M-21 for a milestone or P-7 for a phase |
title |
string | Title |
date |
number | Milestones only. The milestone date, epoch milliseconds. |
startDate / endDate |
number | Phases only. The phase's first and last day, epoch milliseconds. |
color |
string | Colour shown on the board, e.g. #2e86de |
status |
object | See status |
criteria |
string | The completion method that completionPct uses: LINKED_ITEM_STATUS, CHILDREN_LINKED_ITEM_STATUS or CHILDREN_LINKED_ITEM_ESTIMATE |
criteriaSource |
string | milestone when a method was selected on the milestone or phase itself (the value is milestone for phases too); boardDefault when none was selected and the board's default (CHILDREN_LINKED_ITEM_STATUS) applies |
completionPct |
number | Completion by the method in criteria, 0 to 100. Omitted if the item stores a method the board does not recognise. |
completion |
object | All three methods side by side. See Milestone completion. |
linkedItemsCount |
number | Number of board cards linked to the milestone or phase |
Dates are epoch milliseconds. Convert them in your own timezone; the stored instant can fall on the previous day in UTC.
Optional (via fields): description, collectionIds (the collections the milestone or phase belongs to),
createdBy, updatedBy, createdOn, updatedOn.
Milestone completion¶
Phases use exactly the same three methods.
Field in completion |
criteria value |
Calculation |
|---|---|---|
byLinkedItemStatus |
LINKED_ITEM_STATUS |
Linked cards in a Done status / all linked cards |
byChildrenStatus |
CHILDREN_LINKED_ITEM_STATUS |
Sub-items in a Done status / all sub-items of the linked cards |
byChildrenEstimate |
CHILDREN_LINKED_ITEM_ESTIMATE |
Story points of Done sub-items / story points of all sub-items |
Each value is a percentage rounded to two decimals, and 0.0 when there is nothing to count. Sub-items
come from Feature-level cards and each is counted once, even if two linked cards share it. The children
methods use sub-items only: a story linked directly to a milestone or phase counts towards
byLinkedItemStatus but adds nothing to byChildrenStatus or byChildrenEstimate.
Worked example. Milestone M-22 Solvency II Reporting Release has five linked cards: three Features and two stories that are already Done and have no sub-items.
| Linked card | Status | Sub-items Done / total | Story points Done / total |
|---|---|---|---|
| FEA-430 Quarterly QRT data extract | In Progress | 4 / 6 | 18 / 24 |
| FEA-431 Claims reserve reconciliation | In Progress | 2 / 5 | 10 / 26 |
| FEA-432 Regulator submission audit trail | In Progress | 3 / 4 | 13 / 16 |
| STORY-1201 Map reserve codes to QRT templates | Done | none | none |
| STORY-1205 Sign-off checklist for actuarial review | Done | none | none |
byLinkedItemStatus= 2 / 5 = 40.0 (the two Done stories)byChildrenStatus= 9 / 15 = 60.0byChildrenEstimate= 41 / 66 = 62.12, the milestone'scompletionPct, because itscriteriaisCHILDREN_LINKED_ITEM_ESTIMATE
The two Done stories raise byLinkedItemStatus, but because they have no sub-items they add nothing to the
two children methods.
Linked card¶
Returned by the milestone / phase linked-items endpoint (the same card shape as the PI Objectives API). The shape is the same for Jira and Azure DevOps boards.
| Field | Type | Description |
|---|---|---|
id |
string | Kendis internal ID of the card, stable across re-syncs |
kendisKey |
string | The card's Kendis key. Present only for cards created in Kendis. |
almKey |
string | The card's key in the connected tool: Jira issue key (e.g. FEA-412) or Azure DevOps work item ID (e.g. 20417). Present only for synced cards. |
title |
string | Card title |
description |
string | Card description as stored (may contain HTML) |
cardType |
string | Kendis card level: Feature, UserStory, Epic |
almType |
string | Issue or work item type in the connected tool (e.g. Epic, Story, Bug). Omitted for Kendis-only cards. |
status |
object | See status |
storyPoints |
number | The card's own story point estimate; 0.0 when not estimated |
url |
string | Deep link to the card in the connected tool. Present only for synced cards. |
isEnabler |
boolean | Present and true for enabler cards |
dueDate |
number | Due date, epoch milliseconds |
teamsAndSprints |
array | Where the card sits on the board. See entry. Empty for cards in the backlog. |
createdOn, updatedOn |
number | Epoch milliseconds |
childrenSummary |
object | Only with expand=children. See childrenSummary. |
children |
array | Only with expand=children: the card's sub-items in the same card shape (without children) |
teamsAndSprints entry¶
One entry per placement of the card on the board.
{
"team": { "id": "<team-id>", "title": "Team Claims", "label": "CLM" },
"sprint": { "id": "<sprint-id>", "title": "Iteration 3", "label": "S3", "startDate": 1777852800000, "endDate": 1778803200000, "isIPSprint": false }
}
childrenSummary¶
| Field | Description |
|---|---|
totalItems / doneItems |
Number of sub-items, and how many are in a Done status |
totalStoryPoints / doneStoryPoints |
Story points over the sub-items, and the Done share |
progressPct |
doneItems / totalItems × 100; 0.0 when there are no sub-items |
progressPctByStoryPoints |
doneStoryPoints / totalStoryPoints × 100; 0.0 when there are no points |
Status¶
category is one of ToDo, InProgress, Done, Misc.