Easy Agile Programs provides an API for integration with other systems.
The documentation below is valid as at Easy Agile Programs 2.1 on Jira Server and Data Center. We currently do not publish the API for Cloud.
Notes:
agileBoardSprints is a mapping between sprintIds and columns for each Scrum board in an increment
Issues in Scrum boards are scheduled by assigning them to sprints in Jira Software
Issues in Kanban boards are scheduled using an issue entity property (as Kanban agile boards do not support sprints)
startDate is a Unix timestamp in UTC at the start of the calendar day of the increment
endDate is a Unix timestamp in UTC at the end of the calendar day of the increment
Start and end dates of individual sprints are calculated from the increment startDate and the sprintCadences properties(sprintPosition, weekCount)
issueLink... are used to set a link type other than Epic Link
Get Program
GET /rest/eap/latest/program/{programId}
Sample Response:
CODE
{
"id": 199,
"config": {
"programFieldId": "customfield_10202",
"programIncrementFieldId": "customfield_10201"
},
"name": "Test jcma program 2(same id)",
"objectives": "",
"dependencyLinkDirection": "inward",
"dependencyLinkTypeId": "10000",
"issueLinkMethod": "epic",
"startDateFieldId": "customfield_10200",
"endDateFieldId": "duedate",
"boardIds": [
54
],
"increments": [
{
"id": 301,
"name": "INC123",
"objectives": "",
"number": 0,
"agileBoardSprints": [],
"startDate": 1709251200000,
"endDate": 1715302800000,
"usingGlobalSprints": false,
"isDateSyncingEnabled": true,
"sprintCadences": [
{
"sprintPosition": 0,
"weekCount": 2
},
{
"sprintPosition": 1,
"weekCount": 2
},
{
"sprintPosition": 2,
"weekCount": 2
},
{
"sprintPosition": 3,
"weekCount": 2
},
{
"sprintPosition": 4,
"weekCount": 2
}
]
}
],
"boardSettings": [
{
"boardId": 54,
"extraIssueCardFields": []
}
],
"l3IssueLinkTypes": []
}
|
Get Program Increment
GET /rest/eap/latest/program/increment/{incrementId}
Sample response:
CODE
{
"id": 366,
"name": "test",
"objectives": "",
"number": 0,
"agileBoardSprints": [],
"startDate": 1712620800000,
"endDate": 1718668800000,
"usingGlobalSprints": false,
"isDateSyncingEnabled": true,
"program": {
"id": 2,
"config": {
"programFieldId": "customfield_10202",
"programIncrementFieldId": "customfield_10201"
},
"name": "Commercial Space Travel",
"objectives": "{\"version\":1,\"type\":\"doc\",\"content\":[{\"type\":\"heading\",\"attrs\":{\"level\":3},\"content\":[{\"type\":\"text\",\"text\":\"Program Objectives:\"}]},{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"- Provide a safe, quality and first-to-market commercial space travel experience\"},{\"type\":\"hardBreak\"},{\"type\":\"text\",\"text\":\"- Deliver a fun and fully integrated passenger experience \"},{\"type\":\"hardBreak\"},{\"type\":\"hardBreak\"},{\"type\":\"text\",\"text\":\"Release Train Engineer:\",\"marks\":[{\"type\":\"strong\"}]},{\"type\":\"text\",\"text\":\" Alice Zhu\"},{\"type\":\"hardBreak\"},{\"type\":\"text\",\"text\":\"Product Manager:\",\"marks\":[{\"type\":\"strong\"}]},{\"type\":\"text\",\"text\":\" James Hayes\"}]}]}",
"dependencyLinkDirection": "inward",
"dependencyLinkTypeId": "10000",
"issueLinkMethod": "epic",
"l3BoardId": 374,
"startDateFieldId": "customfield_10401",
"endDateFieldId": "customfield_10402",
"boardIds": [
12,
6,
7,
8,
13,
2
],
"increments": [],
"boardSettings": [
{
"boardId": 12,
"extraIssueCardFields": []
},
{
"boardId": 6,
"extraIssueCardFields": []
},
{
"boardId": 7,
"extraIssueCardFields": []
},
{
"boardId": 8,
"extraIssueCardFields": []
},
{
"boardId": 13,
"extraIssueCardFields": []
},
{
"boardId": 2,
"extraIssueCardFields": []
}
],
"l3IssueLinkTypes": [
{
"issueLinkMethod": "parent"
},
{
"issueLinkMethod": "issue-link",
"issueLinkDirection": "outward",
"issueLinkTypeId": "10300"
}
]
},
"sprintCadences": [
{
"sprintPosition": 0,
"weekCount": 2
},
{
"sprintPosition": 1,
"weekCount": 2
},
{
"sprintPosition": 2,
"weekCount": 2
},
{
"sprintPosition": 3,
"weekCount": 2
},
{
"sprintPosition": 4,
"weekCount": 2
}
]
}
|
Get Milestones
Milestones are independent of the issues and are only used as markers within programs, therefore you cannot query for all issues within a milestone.
GET /rest/eap/latest/program/{programId}/milestones
Sample response:
CODE
[
{
color: "#008DA6",
endDate: null,
id: 14,
name: "System Demo",
programId: 27,
startDate: "2020-06-30T00:00:00.000Z",
type: "DATE_MARKER"
},
{
color: "#6554C0",
endDate: null,
id: 13,
name: "Inspect & Adapt",
programId: 27,
startDate: "2020-08-24T00:00:00.000Z",
type: "DATE_MARKER"
}
]
|
Get Team PI Objectives
Availability: Easy Agile Programs version 4.6.0 and later
GET /rest/eap/latest/program/{incrementId}/{boardId}/teamObjectives
Successful response type: an array of JSON objects:
JSON
{
actualValue?: number | null;
boardId: number;
description?: string;
id: number;
incrementId: number;
name: string;
planValue?: number | null;
type: "Committed" | "Uncommitted";
}[]
Sample response:
JSON
[
{
"id": 38,
"name": "Objective two",
"planValue": 3,
"type": "Uncommitted",
"incrementId": 513,
"boardId": 1136
},
{
"id": 37,
"name": "Objective one",
"planValue": 5,
"type": "Committed",
"description": "Objective description",
"incrementId": 513,
"boardId": 1136
}
]
Get Issue Entity Properties with JQL and the API
Issues on Kanban boards and issues on the Roadmap are scheduled with issue entity properties. You can search for these using JQL:
Then fetch the entity property using the Jira Core REST API: /rest/api/2/issue/{issueKey}/properties/EAP-schedules
Sample issue entity property for Roadmap schedule
JSON
{
key: "EAP-schedules",
value: {
schedules: [
{
endColumn: 4,
incrementId: 79,
programId: 34,
startColumn: 1,
type: "ROADMAP"
}
],
tags: "p_34 i_79 i_79_tr"
}
}
|
Sample Kanban schedule
JSON
{
key: "EAP-schedules",
value: {
schedules: [
{
boardId: 89,
columnIndexes: [
4
],
incrementId: 79,
programId: 34,
type: "ISSUE"
}
],
tags: "p_34 i_79 i_79_ti"
}
}
|