Skip to content

PI Board Items — Endpoints

Base URL: https://rest.kendis.io/api/<companyPrefix>/… · Auth: HTTP Basic (email : API key).

Throughout these examples, replace <companyPrefix> with your company prefix (find it in your Kendis login URL, https://<companyPrefix>.kendis.io).


1. List collections

GET /api/<companyPrefix>/collections

Retrieves the collections (workspaces) visible to the authenticated user. Run this first to discover collection IDs.

Parameters

Parameter Type Required Description
auth string Yes Basic auth — username = login email, password = API key

Example

GET api/<companyPrefix>/collections
Authorization: Basic {email & API Key as Password}

Response — 200 OK

{
  "data": [
    {
      "id": "4gd435cd1aaf664fdr4556c",
      "title": "Collection Title"
    }
  ]
}

2. List boards

GET /api/<companyPrefix>/boards

Retrieves boards and their state IDs. Optionally filter by one or more collections.

Parameters

Parameter Type Required Description
auth string Yes Basic auth credentials
collectionId string No Comma-separated list of collection IDs

Example

GET api/<companyPrefix>/boards?collectionId=Col1_Id,Col2_Id
Authorization: Basic {email & API Key as Password}

Response — 200 OK

{
  "data": [
    {
      "id": "your board Id",
      "state": {
        "id": "your state Id",
        "title": "Draft"
      },
      "title": "Board Name"
    }
  ]
}

3. List board items

POST /api/<companyPrefix>/items

Retrieves all items on the board. The request body is raw JSON; boardId is required.

Body parameters

Parameter Type Required Description
boardId string Yes ID of the Program Board (from List Boards)
fields array No Restrict the response to specific fields
pageStart number No Page offset index (default 0)
pageSize number No Items per page (default 50)

Example 1 — default fields for a board

POST api/<companyPrefix>/items
Authorization: Basic {email & API Key as Password}
Content-Type: application/json
{ "boardId": "64c0345dd1waf623863d38fc" }

Response — 200 OK (truncated)

{
  "data": [
    {
      "iterationPath": "Iteration-1",
      "id": "66a2c76a09da964694561fda",
      "azureId": "2",
      "estimates": 10.0,
      "updatedBy": "user@kendis.io",
      "externalKey": "ZTZ-20",
      "teamsAndSprints": [
        { "sprint": "Iteration 1", "team": "Team Sk" },
        { "sprint": "Iteration 4", "team": "Team Jup" }
      ],
      "completionByStatus": 0.0,
      "updatedOn": "26 Jul, 24",
      "status": "Active",
      "itemType": "Feature",
      "completionByEstimate": 0.0,
      "createdOn": "26 Jul, 24",
      "summary": "Web 2.0",
      "externalUrl": "http://sampleURL.com",
      "stories": [
        {
          "summary": "Test 1",
          "id": "66a2c76b09da96469456201c",
          "parentId": "66a2c76a09da964694561fda",
          "estimates": 10.0,
          "status": "New",
          "externalKey": "ZTZ-20",
          "externalUrl": "http://sampleURL.com"
        }
      ],
      "cardType": "Feature",
      "createdBy": "demouser1@kendis.io",
      "areaPath": "ZAP - Agile\\Team Sky"
    }
  ]
}

Example 2 — paginated, children only

Fetch 20 features and their children on the first page.

{
  "boardId": "66a2c4b609da964694561e45",
  "pageStart": 0,
  "pageSize": 20,
  "fields": ["children"]
}

How pageStart works

pageStart is the item offset. With pageSize 100, the first call (pageStart 0) returns items 0–99; set pageStart to 100 for items 100–199, and so on.

Example 3 — selective fields

{
  "boardId": "64c0345dd1waf623863d38fc",
  "fields": ["createdOn", "cardType", "itemType", "iterationPath"],
  "pageStart": 1,
  "pageSize": 20
}

Response — 200 OK

{
  "data": [
    {
      "itemType": "Feature",
      "id": "your board ID",
      "iterationPath": "Iteration-1",
      "createdOn": "26 Jul, 24"
    }
  ]
}

4. Sprint metadata

POST /api/<companyPrefix>/sprints

Returns the sprints configured on a board so you can resolve sprint IDs from the items response.

POST api/<companyPrefix>/sprints
Authorization: Basic {email & API Key as Password}
{ "boardId": "64bd1e57e87523ghjD442Fe2" }

Response — 200 OK

{
  "data": [
    {
      "id": "76d7a875-73c6-5681-a4e0-2331298fa132",
      "label": "S2",
      "title": "Iteration 2",
      "isIPSprint": false
    }
  ]
}

5. Team metadata

POST /api/<companyPrefix>/teams

Returns the teams on a board, with labels and colours.

POST api/<companyPrefix>/teams
Authorization: Basic {email & API Key as Password}
{ "boardId": "64bd1e57e87523ghjD442Fe2" }

Response — 200 OK

{
  "data": [
    {
      "color": "#1991eb",
      "id": "66a2c44309da962391161e65",
      "label": "SKY",
      "title": "Team Sky"
    }
  ]
}

6. Status metadata

POST /api/<companyPrefix>/statuses

Returns the parent and child item statuses configured on a board.

POST api/<companyPrefix>/statuses
Authorization: Basic {email & API Key as Password}
{ "boardId": "64bd1e57e87523ghjD442Fe2" }

Response — 200 OK

{
  "parentStatuses": [
    {
      "id": "64bd1e57e87523ghjD442Fe2",
      "rowStatus": 0,
      "source": 0,
      "title": "Open",
      "color": "#f2930c",
      "category": "ToDo",
      "updated": false
    }
  ],
  "childrenStatuses": [
    {
      "id": "64bd1e57e87523ghjD442Fe2",
      "rowStatus": 0,
      "source": 0,
      "title": "Open",
      "color": "#f2930c",
      "category": "ToDo",
      "updated": false
    }
  ]
}

See the Field reference for the full set of parent and child item properties, and the default fields returned for Features versus Stories.