Skip to main content
Skip table of contents

Easy Agile Programs API

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:

  • Search for roadmap issues in a specific increment with the following JQL query:

    • issue.property[EAP-schedules].tags ~ i_{incrementId}_tr

  • Search for Kanban issues in a specific increment with the following JQL query:

    • issue.property[EAP-schedules].tags ~ i_{incrementId}_ti

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"
    }
}


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.