Skip to content

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 (0100)
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 (0100) 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 resolvedtitle and category are included alongside id (unlike the Items API, where status is a bare { id } only).

{ "id": "<status-id>", "title": "In Progress", "category": "InProgress" }

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.