Skip to Content
SimulatorsJiraBoards, sprints and epics

Simulators

Boards, sprints and epics

A board shows a project’s issues as a backlog and a series of sprints, and an epic groups issues under one theme. Create a sprint on the default scenario’s board, move issues into it, start it, read the backlog, complete it and move another issue under an epic:

curl -s "$RYSTIC_URL/rest/agile/1.0/board" -u me@example.com:token | jq -c '.values[] | {id, name, type}'
# -> {"id":1,"name":"PLAT board","type":"scrum"}
curl -s "$RYSTIC_URL/rest/agile/1.0/sprint" -u me@example.com:token -H 'Content-Type: application/json' -d '{"name":"PLAT Sprint 4","originBoardId":1,"goal":"Retry failed webhooks"}' | jq -c '{id, name, state}'
# -> {"id":104,"name":"PLAT Sprint 4","state":"future"}
curl -s -o /dev/null -w '%{http_code}\n' "$RYSTIC_URL/rest/agile/1.0/sprint/104/issue" -u me@example.com:token -H 'Content-Type: application/json' -d '{"issues":["PLAT-5","PLAT-6"]}'
# -> 204
curl -s "$RYSTIC_URL/rest/agile/1.0/sprint/104" -u me@example.com:token -H 'Content-Type: application/json' -d '{"state":"active","startDate":"2026-02-02T09:00:00.000Z","endDate":"2026-02-16T09:00:00.000Z"}' | jq -c '{id, state}'
# -> {"id":104,"state":"active"}
curl -s "$RYSTIC_URL/rest/agile/1.0/board/1/backlog?fields=summary" -u me@example.com:token | jq -c '[.issues[].key]'
# -> ["PLAT-1","PLAT-2","PLAT-3"]
curl -s "$RYSTIC_URL/rest/agile/1.0/sprint/104" -u me@example.com:token -H 'Content-Type: application/json' -d '{"state":"closed"}' | jq -c '{id, state}'
# -> {"id":104,"state":"closed"}
curl -s -o /dev/null -w '%{http_code}\n' "$RYSTIC_URL/rest/agile/1.0/epic/PLAT-1/issue" -u me@example.com:token -H 'Content-Type: application/json' -d '{"issues":["PLAT-3"]}'
# -> 204
curl -s "$RYSTIC_URL/rest/agile/1.0/epic/PLAT-1/issue?fields=summary" -u me@example.com:token | jq -c '[.issues[].key]'
# -> ["PLAT-2","PLAT-3"]

Boards

GET /rest/agile/1.0/board lists the scenario’s boards, each scrum or kanban, with the project it belongs to. POST /rest/agile/1.0/board and DELETE /rest/agile/1.0/board/{boardId} create and remove one. A board’s backlog is every issue that is not done and sits in no sprint, so moving an issue into a sprint takes it off the backlog. A board’s columns and estimation are empty: GET /rest/agile/1.0/board/{boardId}/configuration reports no columns, and an estimation read for an issue answers 400.

Sprints

A sprint is created future on a board named by originBoardId. POST /rest/agile/1.0/sprint/{sprintId} with state set to active starts it and needs both startDate and endDate: without them the simulator answers 400 Sprint is not in 'future' state or has no start and end date. Setting state to closed completes it and stamps completeDate from the simulator’s clock. The issues of a closed sprint stay listed under it.

The seeded sprints list no issues until you move some in. GET /rest/agile/1.0/board/{boardId}/sprint takes state to list only the future, active or closed ones.

Epics

An epic is an issue of type Epic. GET /rest/agile/1.0/epic/{epicIdOrKey} reads it with its name and done flag, GET /rest/agile/1.0/epic/{epicIdOrKey}/issue lists the issues under it and POST to the same path moves more under it. GET /rest/agile/1.0/board/{boardId}/epic lists a board’s epics.

Last updated on