Skip to content

Strategic Themes & OKRs — Field reference

Pass fields as ?fields=key,title or ?fields=all. Omit fields= for a minimal set (id, key, title). Fields with no value are omitted.

Portfolio Theme fields

Field Type Description
id string Portfolio Theme ID
key string Portfolio Theme key (e.g. portfolio-10)
title string Portfolio Theme name
status object { status: "title", id: "..." }
linkedThemes array Linked Strategic Theme IDs

Strategic Theme fields

Field Type Description
id string Strategic Theme ID
key string Strategic Theme key (e.g. CV-20)
title string Strategic Theme name
status object { status: "title", id: "..." }
owners array Owner IDs
color string Strategic Theme colour hex code
summary string Short summary
description string Full description

Objective Group fields

Field Type Description
id string Objective Group ID
level int Hierarchy level — always 1 for Objective Groups (always returned)
type string Entity kind — always "Objective Group" (always returned)
title string Objective Group name
completionPct number Group completion percentage (0–100)
objectivesCount int Number of Objectives in the group
sequence number Display order
status object { status: "title", id: "..." }
bvPlan number Planned business value
bvActual number Actual business value
completionCriteria string Completion calculation method — see values
association string Comma-joined list of linked Departments, Batches, and Program Boards (mirrors the XLS export's Association column)

Objective fields

Field Type Description
id string Objective ID
level int Hierarchy level — always 2 (always returned)
type string Entity kind — always "Objective" (always returned). Use objType for the parsed subtype.
key string Objective key (e.g. OBJ-329)
title string Objective title
completionPct number Completion percentage (0–100)
timePeriod string Time period (e.g. H1 2026, Q2 2026)
endTimePeriod string End time period (when configured in the objective layout)
status object { status: "title", id: "..." }
description string Objective description
bvPlan number Planned business value
bvActual number Actual business value
completionCriteria string Completion method — see values
sequence number Display order
groupName string Parent Objective Group name
groupId string Parent Objective Group ID
groupType string Group type: TeamGroup or CustomGroup
keyResultsCount int Number of Key Results and child Objectives
linkedItems array Linked items [{ id, linkType }]
linkedItemDetails array Resolved backlog item details [{ id, key, title, url, status }]
objType string Parsed Objective subtype: "Committed", "Stretch", "Uncommitted"
startDate number Start date (epoch ms) from the configured Start Date field
endDate number End date (epoch ms) from the configured End Date field
responsible object { id, fullName } of the user assigned as responsible
association string Comma-joined list of linked Departments, Batches, and Program Boards
lastComment string Plain-text content of the most recent comment
lastCommentOn number Timestamp of the most recent comment (epoch ms)
createdBy string Creator user
updatedBy string Last updater user
createdOn number Creation timestamp (epoch ms)
updatedOn number Last update timestamp (epoch ms)
customFields array Custom fields [{ id, title, type, value }] — see Custom fields

Key Result fields

Field Type Description
id string Key Result ID
level int Hierarchy level — always 3 (always returned)
type string Entity kind — always "Key Result" (always returned)
key string Key Result key (e.g. KR-141)
title string Key Result title
completionPct number Completion percentage (0–100)
criteria string Progress criteria (e.g. By Items, Target, By Objectives)
timePeriod string Time period
endTimePeriod string End time period (when configured in the KR layout)
status object { status: "title", id: "..." }
description string Key Result description
bvPlan number Planned business value
bvActual number Actual business value
sequence number Display order
metric object { baseline, target, current, unit } (for Target-based Key Results)
linkedItems array Linked items [{ id, linkType }]
linkedItemDetails array Resolved backlog item details [{ id, key, title, url, status }]
startDate number Start date (epoch ms)
endDate number End date (epoch ms)
responsible object { id, fullName } of the user assigned as responsible
association string Comma-joined list of linked Departments, Batches, and Program Boards
lastComment string Plain-text content of the most recent comment
lastCommentOn number Timestamp of the most recent comment (epoch ms)
createdBy string Creator user
updatedBy string Last updater user
createdOn number Creation timestamp (epoch ms)
updatedOn number Last update timestamp (epoch ms)
customFields array Custom fields [{ id, title, type, value }] — see Custom fields

type and objType

type is the entity kind ("Objective Group" / "Objective" / "Key Result"), so a multi-endpoint flat-table consumer (e.g. Power BI) can group rows without inspecting which endpoint produced them. For the Objective subtype ("Committed" / "Stretch"), request ?fields=objType.

Linked work item (card) fields

Returned by /objectives/{keyOrId}/linked-items and /key-results/{keyOrId}/linked-items (both routes share one implementation and one response shape). A key or field with no value is omitted from the JSON entirely (the API never sends null placeholders).

Field Type Description
id string Internal ID of the card — use it when calling other Kendis APIs
kendisKey string The card's Kendis key (e.g. K-68). Present for cards created in Kendis
almKey string The card's key in the connected ALM tool (e.g. CAP-5). Present for synced cards; a card can carry both keys
title string Card title as shown on the board
description string Card description; may contain HTML formatting as stored. Omitted when empty
cardType string Card kind (e.g. Feature, Epic) — from the ALM issue type for synced cards, otherwise the Kendis item type
status object { id, status, category } — category is the normalized ToDo / InProgress / Done / Misc bucket after any release-train-specific status mapping
storyPoints number The card's own estimate; 0.0 when not estimated
url string Deep link to the card in the ALM tool. Synced cards only
releaseTrain object { id, title } of the release train (ART) the card is linked to the Objective under — the context children and progress are resolved in
createdOn / updatedOn number Unix timestamps in milliseconds — see converting to a readable date
customFields array Every custom field configured for cards — always the full configured list, in configured order (see below)
childrenSummary object Only with expand=children — see below
children array Only with expand=children — the card's full child hierarchy tree (see below)
childrenError boolean Only with expand=children, and only on failure: true when the server could not resolve this card's children (the card then has an empty children array and no childrenSummary). Absent on success

Card custom field entries

One entry per configured field; a card with no stored value still gets the entry, just without the value key. Values are shaped by type exactly as described under Custom fields — userpicker is restricted to { id, fullName }, link URLs pass a scheme allow-list, and unrecognised shapes are omitted rather than passed through raw.

Field Type Description
id string Custom field definition ID
title string Field name as configured by the admin
type string Field input type (singleselect, multiselect, datepicker, userpicker, link, text, number, …)
value varies The stored value, type-shaped. Omitted when the card has no value for this field

Children summary fields

Percentages are computed from the lowest-level items in the tree only (items with no further children — for a Capability that means the Stories at the bottom, not the Epics and Features in between). Items whose status category is Misc are listed in the tree but excluded from the math.

Field Type Description
totalItems int How many lowest-level child items count toward progress
doneItems int How many of those are in a Done-category status
totalStoryPoints number Sum of the counted children's story points
doneStoryPoints number Story points of the Done children
progressPct number doneItems / totalItems × 100, rounded to 2 decimals
progressPctByStoryPoints number doneStoryPoints / totalStoryPoints × 100, rounded to 2 decimals

Child item fields

children holds the card's direct children; every node nests its own children array, level by level down to the bottom of the hierarchy. An empty children array marks a lowest-level item.

Field Type Description
id string Internal ID of the child item
kendisKey / almKey string The child's Kendis / ALM key, when it has one
title string Child title
status object { id, status, category } with the release train's status-category mapping applied
storyPoints number The child's estimate; 0.0 when not estimated
url string Deep link in the ALM tool. Synced items only
children array This node's own children, same shape — empty when at the bottom

Completion criteria values

These appear in the completionCriteria field on Objectives and Objective Groups:

Value Description
ROLLUP_BY_STATUS Completion based on done/total leaf-level children by status
ROLLUP_BY_STORY_POINTS Completion based on done/total story points of leaf-level children
LINKED_ITEM_STATUS Completion based on status of directly linked items
CHILDREN_LINKED_ITEM_STATUS Completion based on children of linked items by status
CHILDREN_LINKED_ITEM_ESTIMATE Completion based on children of linked items by estimate

Custom fields

When ?fields=all or ?fields=customFields is requested, custom fields defined in the objective layout are returned as an array. Each entry has { id, title, type, value }. The type is the field's persisted type token (lowercased); the value shape depends on the type.

"customFields": [
  { "id": "64f1a2b3...", "title": "Priority Score", "type": "textfield",  "value": "85" },
  { "id": "64f1a2b4...", "title": "Team Lead",      "type": "userpicker", "value": { "id": "690cb37331dd81412133d626", "fullName": "Jane Doe" } },
  { "id": "64f1a2b5...", "title": "Tags",           "type": "multiselect","value": ["Backend", "Infrastructure"] },
  { "id": "64f1a2b6...", "title": "Target Date",    "type": "datepicker", "value": "2026-03-25T11:43:00.000Z" }
]
type value shape Notes
textfield string Plain text as-is
simpleEditor string Rich-text source as-is
singleselect string The selected option's title (not the option object)
multiselect array of strings Array of selected option titles
datepicker string (ISO 8601) UTC ISO timestamp, e.g. "2026-03-25T11:43:00.000Z"
userpicker object { id, fullName } only — matching the top-level responsible field
status string The status title
colorpicker string Colour value (hex / CSS)
image-uploader string Image URL or identifier as stored

If the objective layout has no custom fields defined, the array is empty. Custom fields the user hasn't filled in are omitted (the API does not emit value: null entries).

Custom-field value shapes

userpicker values always return { id, fullName }, matching the dedicated top-level responsible field. Field types not listed in the table above return null — build consumers against the documented shapes only.