Applicable: | JIRA 5.0 and later. |
The REST API allows you to send a JQL query and receive a subset issues.
In this example, we supply a single URL parameter (jql
) which contains the JQL query.
1 2curl -D- \ -u fred:fred \ -X GET \ -H "Content-Type: application/json" \ http://kelpie9:8081/rest/api/2/search?jql=assignee=fred
1 2{ "expand": "schema,names", "startAt": 0, "maxResults": 50, "total": 6, "issues": [ { "expand": "html", "id": "10230", "self": "http://kelpie9:8081/rest/api/2/issue/BULK-62", "key": "BULK-62", "fields": { "summary": "testing", "timetracking": null, "issuetype": { "self": "http://kelpie9:8081/rest/api/2/issuetype/5", "id": "5", "description": "The sub-task of the issue", "iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif", "name": "Sub-task", "subtask": true }, . . . }, "customfield_10071": null }, "transitions": "http://kelpie9:8081/rest/api/2/issue/BULK-62/transitions", }, { "expand": "html", "id": "10004", "self": "http://kelpie9:8081/rest/api/2/issue/BULK-47", "key": "BULK-47", "fields": { "summary": "Cheese v1 2.0 issue", "timetracking": null, "issuetype": { "self": "http://kelpie9:8081/rest/api/2/issuetype/3", "id": "3", "description": "A task that needs to be done.", "iconUrl": "http://kelpie9:8081/images/icons/task.gif", "name": "Task", "subtask": false }, . . . "transitions": "http://kelpie9:8081/rest/api/2/issue/BULK-47/transitions", } ] }
In this example, we supply two additional URL parameters (to jql
) -- startAt
and maxResults
, which respectively specify the starting issue returned in the JQL results and the number of issues from that starting issue.
1 2curl -D- \ -u fred:fred \ -X GET \ -H "Content-Type: application/json" \ http://kelpie9:8081/rest/api/2/search?jql=assignee=fred&startAt=2&maxResults=2
1 2{ "expand": "schema,names", "startAt": 2, "maxResults": 2, "total": 6, "issues": [ { "expand": "html", "id": "10123", "self": "http://kelpie9:8081/rest/api/2/issue/BULK-38", "key": "BULK-38", "fields": { "summary": "aaaaa", "timetracking": null, "issuetype": { "self": "http://kelpie9:8081/rest/api/2/issuetype/5", "id": "5", "description": "The sub-task of the issue", "iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif", "name": "Sub-task", "subtask": true }, . . . }, "transitions": "http://kelpie9:8081/rest/api/2/issue/BULK-38/transitions", }, { "expand": "html", "id": "10108", "self": "http://kelpie9:8081/rest/api/2/issue/BULK-32", "key": "BULK-32", "fields": { "summary": "subtasks are important, too", "timetracking": null, "issuetype": { "self": "http://kelpie9:8081/rest/api/2/issuetype/5", "id": "5", "description": "The sub-task of the issue", "iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif", "name": "Sub-task", "subtask": true }, . . . }, "transitions": "http://kelpie9:8081/rest/api/2/issue/BULK-32/transitions", } ] }
In this example, we specify a sort order for the results using an "order by" clause in the JQL query itself.
Ordering JQL results is not conducted via a URL parameter in your REST API call.
1 2curl -D- \ -u fred:fred \ -X GET \ -H "Content-Type: application/json" \ http://kelpie9:8081/rest/api/2/search?jql=assignee=fred+order+by+duedate
1 2{ "expand": "schema,names", "startAt": 0, "maxResults": 50, "total": 6, "issues": [ { "expand": "html", "id": "10123", "self": "http://kelpie9:8081/rest/api/2/issue/BULK-38", "key": "BULK-38", "fields": { "summary": "aaaaa", "timetracking": null, "issuetype": { "self": "http://kelpie9:8081/rest/api/2/issuetype/5", "id": "5", "description": "The sub-task of the issue", "iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif", "name": "Sub-task", "subtask": true }, . . . }, "transitions": "http://kelpie9:8081/rest/api/2/issue/BULK-38/transitions", }, { "expand": "html", "id": "10108", "self": "http://kelpie9:8081/rest/api/2/issue/BULK-32", "key": "BULK-32", "fields": { "summary": "subtasks are important, too", "timetracking": null, "issuetype": { "self": "http://kelpie9:8081/rest/api/2/issuetype/5", "id": "5", "description": "The sub-task of the issue", "iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif", "name": "Sub-task", "subtask": true }, . . . }, "transitions": "http://kelpie9:8081/rest/api/2/issue/BULK-32/transitions", } ] }
In this example, we supply an additional URL parameter (to jql
) -- fields
, which lists the JIRA fields returned in the JQL results. Each JIRA field in the list should be comma-separated -- e.g. fields=id,key
.
Be aware that some extra data is always returned in the JSON response.
1 2curl -D- \ -u fred:fred \ -X GET \ -H "Content-Type: application/json" \ 'http://kelpie9:8081/rest/api/2/search?jql=project=QA+order+by+duedate&fields=id,key'
1 2{ "expand": "schema,names", "startAt": 0, "maxResults": 50, "total": 18, "issues": [ { "expand": "html", "id": "10050", "self": "http://kelpie9:8081/rest/api/2/issue/QA-19", "key": "QA-19", "transitions": "http://kelpie9:8081/rest/api/2/issue/QA-19/transitions" }, { "expand": "html", "id": "10051", "self": "http://kelpie9:8081/rest/api/2/issue/QA-20", "key": "QA-20", "transitions": "http://kelpie9:8081/rest/api/2/issue/QA-20/transitions" }, . . . { "expand": "html", "id": "10053", "self": "http://kelpie9:8081/rest/api/2/issue/QA-22", "key": "QA-22", "transitions": "http://kelpie9:8081/rest/api/2/issue/QA-22/transitions" }, { "expand": "html", "id": "10389", "self": "http://kelpie9:8081/rest/api/2/issue/QA-35", "key": "QA-35", "transitions": "http://kelpie9:8081/rest/api/2/issue/QA-35/transitions" } ] }
If the JQL query is too large to specify in a URL parameter, you should POST your JQL query (in JSON format) to the REST API 'search
' resource instead. Any additional URL parameters (to url
) described above, should be included in your JSON-formatted JQL query.
1 2curl -D- \ -u admin:admin \ -X POST \ -H "Content-Type: application/json" \ --data '{"jql":"project = QA","startAt":0,"maxResults":2,"fields":["id","key"]}' \ "http://kelpie9:8081/rest/api/2/search"
1 2{ "maxResults": 2, "startAt": 0, "total": 18, "expand": "schema,names", "issues": [ { "expand": "html", "id": "10393", "key": "QA-36", "self": "http://kelpie9:8081/rest/api/2/issue/QA-36", "transitions": "http://kelpie9:8081/rest/api/2/issue/QA-36/transitions" }, { "expand": "html", "id": "10389", "key": "QA-35", "self": "http://kelpie9:8081/rest/api/2/issue/QA-35", "transitions": "http://kelpie9:8081/rest/api/2/issue/QA-35/transitions" } ] }
Rate this page: