PI Objectives V1 · Field reference¶
Object shapes returned by the V1 endpoints. Fields with no value are
omitted. This includes completionPct: it is
left out when the board's progress calculation produces no value for a row, for example an objective group
with no objectives. Treat a missing completionPct as "not computable", not as 0.
Every Group, Objective and Key Result carries a numeric level (1 group, 2 objective, 3 key result)
and a type string ("Objective Group", "Objective", "Key Result"), so a flat-table consumer such as
Power BI can group rows without tracking which endpoint produced them.
PI Board¶
| Field | Type | Description |
|---|---|---|
id |
string | Board ID, use as {boardId} |
type |
string | Always PI Board |
title |
string | Board name |
state |
object | { id, title }, the current board state (e.g. Draft, Planning, Tracking) |
okrEnabled |
boolean | true when the board runs in OKR mode (objectives can carry key results and weights). Omitted when the board has no objectives settings yet. |
uncommittedObjectivesEnabled |
boolean | true when the board shows uncommitted (stretch) objectives. Omitted when the board has no objectives settings yet. |
counts |
object | objectiveGroups, objectives, keyResults on the board. Milestones and phases are not counted here; read total from the Milestones & Phases API. |
Objective Group¶
Always returned
| Field | Type | Description |
|---|---|---|
id |
string | Group ID (groups have no key) |
level |
number | Always 1 |
type |
string | Always Objective Group |
title |
string | Group name |
groupType |
string | TeamGroup or CustomGroup |
team |
object | Team groups only: { id, title, label } |
completionPct |
number | Group completion, 0 to 100, as shown on the board |
status |
object | See status |
objectivesCount |
number | Number of objectives in the group |
Optional (via fields): bvPlan, bvActual (business value totals for the group as the board
computes them), description, sequence, createdBy, updatedBy, createdOn, updatedOn.
Objective¶
Always returned
| Field | Type | Description |
|---|---|---|
id |
string | Internal ID |
level |
number | Always 2 |
type |
string | Always Objective |
key |
string | Objective key, e.g. OBJ-205 |
title |
string | Objective title |
completionPct |
number | Completion, 0 to 100, as shown on the board |
objType |
string | Committed or Uncommitted |
status |
object | See status |
groups |
array | Every group the objective belongs to: { id, title, groupType, weightage }, where weightage is the objective's weight inside that group |
completionCriteria |
string | How the objective's own linked cards are rolled up. See values. |
linkedItemsWeight |
number | Weight of the objective's own linked cards against its key results in the OKR formula |
keyResultsCount |
number | Number of key results |
linkedItemsCount |
number | Number of cards linked directly to the objective |
Optional (via fields): keyResults (references { id, key, title }), description, bvPlan,
bvActual, sequence, customFields, createdBy, updatedBy, createdOn, updatedOn.
Key Result¶
Always returned
| Field | Type | Description |
|---|---|---|
id |
string | Internal ID |
level |
number | Always 3 |
type |
string | Always Key Result |
key |
string | Key result key, e.g. KR-311 |
title |
string | Key result title |
completionPct |
number | Completion, 0 to 100, as shown on the board |
criteria |
string | Target or By Items |
metric |
object | Target only: baseline, target and current as numbers (e.g. 60.0), and unit as a string (e.g. %). A value that is not set or not numeric is omitted, never returned as "" or 0. |
completionCriteria |
string | By Items only. See values. |
weightage |
number | Weight of the key result inside its objective |
objective |
object | The parent objective: { id, key, title } |
status |
object | See status |
linkedItemsCount |
number | Number of cards linked to the key result |
Optional (via fields): description, bvPlan, bvActual, sequence, customFields, createdBy,
updatedBy, createdOn, updatedOn.
Linked card¶
Returned by the linked-items endpoints of objectives and key results (the Milestones & Phases API returns the same shape). 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.
Different key from the legacy endpoint
The V1 status object names the display value status. The legacy /objective-groups endpoint
names it title.
Completion criteria values¶
| Value | Meaning |
|---|---|
LINKED_ITEM_STATUS |
Share of linked cards whose status is Done |
CHILDREN_LINKED_ITEM_STATUS |
Share of the linked cards' sub-items whose status is Done |
CHILDREN_LINKED_ITEM_ESTIMATE |
Share of the sub-items' story points that are Done |
TEAM_STORY_STATUS |
As CHILDREN_LINKED_ITEM_STATUS, counting only the group's team |
TEAM_STORY_ESTIMATE |
As CHILDREN_LINKED_ITEM_ESTIMATE, counting only the group's team |
ROLLUP_BY_STATUS |
Leaf roll-up by status across all linked cards |
ROLLUP_BY_STORY_POINTS |
Leaf roll-up by story points across all linked cards |
Custom fields¶
customFields lists the admin-defined fields of the board's Objective layout (on objectives) or Key Result
layout (on key results). Each entry has id, title, type and value; value is null when the item
has no value. User-picker values are returned as { id, fullName }.