PI Objectives — Field reference¶
Object shapes returned by the PI Objectives endpoints. Fields with no value are omitted.
Collection¶
| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier of the collection — use as collectionIds on List Boards |
title |
string | Collection name as configured in Kendis |
Board¶
| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier of the board — use as boardId on List Objective Groups |
title |
string | Board name |
state |
object | { id, title } — current state (e.g. Draft, Planning, Tracking, Close) |
Objective Group¶
| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier of the objective group |
title |
string | Objective group name |
type |
string | Group type — e.g. TeamGroup, Custom Group, PI Group |
status |
object | Group status — see status reference |
completion |
number | Percentage completion of the group, rolled up from its objectives (0–100) |
bvPlan |
number | Total planned business value across all objectives in the group |
bvActual |
number | Total actual business value across all objectives in the group |
achievement |
number | bvActual / bvPlan × 100. Only returned when the board has BV Achievement enabled in Module Configuration. |
objectives |
array | Array of Objective entries |
Objective¶
| Field | Type | Description |
|---|---|---|
id |
string | Objective ID — usually a short key like OBJ-23 |
title |
string | Objective title |
type |
string | Objective type — e.g. Objective-Committed, Objective-Uncommitted |
status |
object | See status reference |
completion |
number | Percentage completion (0–100) calculated using the active completionType |
bvPlan |
number | Planned business value |
bvActual |
number | Actual business value |
sequence |
number | Order of the objective within its group |
linkedItems |
array | Array of Linked Item entries |
Linked Item (ADO / Jira)¶
The shape is source-specific — ADO boards populate the TFS fields, Jira boards populate the Jira fields. Every field can be absent if not set on the item.
| Field | Type | Source | Description |
|---|---|---|---|
id |
string | both | Kendis internal item ID (stable across re-syncs) |
tfsId |
string | ADO only | Azure DevOps work-item ID, e.g. "415" |
tfsURL |
string | ADO only | Deep link to the work item |
tfsItemTypeIcon |
string | ADO only | URL of the ADO work-item-type icon (rendered in the Kendis UI) |
jiraId |
number | Jira only | Jira issue ID |
jiraKey |
string | Jira only | Jira issue key, e.g. FEA-21 |
jiraIssueTypeId |
number | Jira only | Jira issue-type ID |
title |
string | both | Item title |
type |
string | both | Internal item type — e.g. Feature, UserStory, Bug |
issueType |
string | both | Display-facing type — usually matches type (e.g. Feature, Story) |
storyPoints |
number | both | Story-point estimate. On Features this is the sum of sub-item story points. |
completion |
number | both | Percentage completion, rolled up from sub-items (subDone / subTotal × 100) |
status |
object | both | See status reference |
teamsAndSprints |
array | both | Only present when additionalColumns=1. See entry shape. |
subItems |
array | both | Array of Sub-Item entries (e.g. User Stories under a Feature) |
Sub-Item¶
| Field | Type | Source | Description |
|---|---|---|---|
id |
string | both | Kendis internal sub-item ID |
tfsId |
string | ADO only | Azure DevOps work-item ID |
tfsURL |
string | ADO only | Deep link |
tfsItemTypeIcon |
string | ADO only | Icon URL |
jiraId |
number | Jira only | Jira issue ID |
jiraKey |
string | Jira only | Jira key |
jiraIssueTypeId |
string | Jira only | Jira issue-type ID |
title |
string | both | Sub-item title |
type |
string | both | Internal item type |
issueType |
string | both | Display-facing type — e.g. Story |
storyPoints |
number | both | Sub-item story-point estimate |
status |
object | both | See status reference |
status reference¶
Statuses on this endpoint are returned resolved — title and category are included alongside id
(unlike the Items API, where status is a bare { id } only).
category is one of ToDo, InProgress, Done (a case-sensitive Kendis convention used for traffic-light
grouping in BI tools).
teamsAndSprints entry (additionalColumns=1)¶
Each entry pairs a team assignment with the sprint it was assigned in. An item appears in multiple entries when it was planned across multiple iterations.
{
"sequence": 23121024284.0,
"team": { "id": "<team-id>", "title": "Team Earth", "label": "EART", "color": "#f39c12" },
"sprint": { "id": "<sprint-id>", "title": "Iteration 3", "label": "S3", "startDate": 1777852800000, "endDate": 1778803200000, "isIPSprint": false }
}
| Field | Description |
|---|---|
sequence |
Per-team ordering of items on the iteration board |
team.id / team.title / team.label / team.color |
Team identifier, display name, short label, and configured colour |
sprint.id / sprint.title / sprint.label |
Sprint identifier, display name, short label |
sprint.startDate / sprint.endDate |
Millisecond epoch timestamps |
sprint.isIPSprint |
true for Innovation & Planning sprints |
Different shape from the /items endpoint
On the Items API, teamsAndSprints returns only bare { id }
references — you have to call /teams and /sprints to resolve titles. On this PI Objectives endpoint,
titles / labels / colours / dates are denormalised into the response, so a single call is sufficient.
Compatibility notes — Jira vs Azure DevOps¶
The PI Objectives endpoint is source-agnostic. The objective / group shapes are identical regardless of source. Differences appear only on the linked items:
| Aspect | Azure DevOps board | Jira board |
|---|---|---|
| Source ID field | tfsId (string) |
jiraId (number) + jiraKey (string) |
| Deep link | tfsURL (full URL) |
Not in response — construct from your Jira base URL + jiraKey |
| Icon | tfsItemTypeIcon (URL) |
Not in response |
type values |
Feature, UserStory, etc. (Kendis types) |
Same Kendis types |
issueType values |
ADO work-item types: Feature, Story, Bug, Task, … |
Jira issue-type names |
Mixed-source workspaces
Iterate every board returned by List Boards; detect the source per linked item by checking which of
tfsId / jiraId is non-empty.