Untitled Document
Untitled Document
Looking for the REST API reference for a different Jira version? Follow the links below.
Getting started
If you haven't integrated with Jira Server before, read the Getting started guide in the Jira Server
developer documentation. You may also want to read our Jira REST API overview, which describes
how the Jira REST APIs work, including a simple example of a REST call.
Authentication
The preferred authentication methods for the Jira REST APIs are OAuth and HTTP basic
authentication (when using SSL).
Jira itself uses cookie-based authentication in the browser, so you can call REST from JavaScript on
the page and rely on the authentication that the browser has established. To reproduce the behavior
of the Jira log-in page (for example, to display authentication error messages to users) can POST to
the /auth/1/session resource.
URI Structure
Jira's REST APIs provide access to resources (data entities) via URI paths. To use a REST API,
your application will make an HTTP request and parse the response. The Jira REST API uses JSON
as its communication format, and the standard HTTP methods like GET, PUT, POST and DELETE
(see API descriptions below for which methods are available for each resource). URIs for Jira's
REST API resource have the following structure:
http://host:port/context/rest/api-name/api-version/resource-name
Currently there are two API names available, which will be discussed further below:
https://jira.atlassian.com/rest/api/latest/issue/JRA-9
There is a WADL document that contains the documentation for each resource in the Jira REST API.
It is available here.
Expansion
In order to simplify API responses, the Jira REST API uses resource expansion. This means the API
will only return parts of the resource when explicitly requested.
You can use the expand query parameter to specify a comma-separated list of entities that you want
expanded, identifying each of them by name. For example, appending
?expand=names,renderedFields to an issue's URI requests the inclusion of the translated field
names and the HTML-rendered field values in the response. Continuing with our example above, we
would use the following URL to get that information for JRA-9:
https://jira.atlassian.com/rest/api/latest/issue/JRA-9?expand=names,renderedFields
To discover the identifiers for each entity, look at the expand property in the parent object. In the
JSON example below, the resource declares widgets as being expandable.
{
"expand": "widgets",
"self": "http://www.example.com/jira/rest/api/resource/KEY-1",
"widgets": {
"widgets": [],
"size": 5
You can use the dot notation to specify expansion of entities within another entity. For example
?expand=widgets.fringels would expand the widgets collection and also the fringel property on each
widget.
Pagination
Jira uses pagination to limit the response size for resources that return a potentially large collection
of items. A request to a paged API will result in a values array wrapped in a JSON object with some
paging metadata, for example:
{
"startAt" : 0,
"maxResults" : 10,
"total": 200,
"values": [
{ /* result 0 */ },
{ /* result 1 */ },
{ /* result 2 */ }
]
}
Clients can use the "startAt" and "maxResults" parameters to retrieve the desired numbers of
results.
The "maxResults" parameter indicates how many results to return per page. Each API may have a
different limit for number of items returned.
The "startAt" parameter indicates which item should be used as the first item in the page of results.
Important: The response contains a "total" field which denotes the total number of entities contained
in all pages. This number may change as the client requests the subsequent pages. A client should
always assume that the requested page can be empty. REST API consumers should also consider
the field to be optional. In cases, when calculating this value is too expensive we may not include
this in response.
Ordering
Some resources support ordering by a specific field. Ordering request is provided in the orderBy
query parameter. See the docs for specific methods to see which fields they support and if they
support ordering at all.
Ordering can be ascending or descending. By default it's ascending. To specify the ordering use "-"
or "+" sign. Examples:
?orderBy=name
?orderBy=+name
?orderBy=-name
Error responses
Most resources will return a response body in addition to the status code. Usually, the JSON schema
of the entity returned is the following:
"id": "https://docs.atlassian.com/jira/REST/schema/error-collection#",
"title": "Error Collection",
"type": "object",
"properties": {
"errorMessages": {
"type": "array",
"items": {
"type": "string"
},
"errors": {
"type": "object",
"patternProperties": {
".+": {
"type": "string"
}
},
"additionalProperties": false
},
"status": {
"type": "integer"
}
},
"additionalProperties": false
Get permissions
GET /rest/api/2/mypermissions
GET /rest/api/2/permissions
Get property
GET /rest/api/2/application-properties
PUT /rest/api/2/application-properties/{id}
GET
/rest/api/2/application-properties/advanced-se
ttings
Put bulk
PUT /rest/api/2/applicationrole
Get all
GET /rest/api/2/applicationrole
Get
GET /rest/api/2/applicationrole/{key}
Put
PUT /rest/api/2/applicationrole/{key}
Remove attachment
DELETE /rest/api/2/attachment/{id}
Get attachment
GET /rest/api/2/attachment/{id}
GET
/rest/api/2/attachment/{id}/expand/human
GET /rest/api/2/attachment/{id}/expand/raw
GET /rest/api/2/attachment/meta
POST /rest/api/2/auditing/record
GET /rest/api/2/auditing/record
GET /rest/api/2/avatar/{type}/system
POST /rest/api/2/avatar/{type}/temporary
POST /rest/api/2/avatar/{type}/temporaryCrop
GET /rest/api/2/cluster/nodes
PUT
/rest/api/2/cluster/index-snapshot/{nodeId}
Delete node
DELETE /rest/api/2/cluster/node/{nodeId}
PUT /rest/api/2/cluster/node/{nodeId}/offline
Approve upgrade
POST /rest/api/2/cluster/zdu/approve
Cancel upgrade
POST /rest/api/2/cluster/zdu/cancel
Acknowledge errors
POST /rest/api/2/cluster/zdu/retryUpgrade
POST /rest/api/2/cluster/zdu/start
Get state
GET /rest/api/2/cluster/zdu/state
GET
/rest/api/2/comment/{commentId}/properties
PUT
/rest/api/2/comment/{commentId}/properties/{
propertyKey}
GET
/rest/api/2/comment/{commentId}/properties/{
propertyKey}
Create component
POST /rest/api/2/component
Update component
PUT /rest/api/2/component/{id}
Get component
GET /rest/api/2/component/{id}
Delete
DELETE /rest/api/2/component/{id}
GET /rest/api/2/component/page
Get configuration
GET /rest/api/2/configuration
GET /rest/api/2/customFieldOption/{id}
GET /rest/api/2/customFields
DELETE /rest/api/2/customFields
GET
/rest/api/2/customFields/{customFieldId}/optio
ns
GET /rest/api/2/dashboard
Get dashboard
GET /rest/api/2/dashboard/{id}
api/2/dashboard/{dashboardId}/items/{itemId}/propertiesExpand all
methods
GET
/rest/api/2/dashboard/{dashboardId}/items/{ite
mId}/properties
Delete property
DELETE
/rest/api/2/dashboard/{dashboardId}/items/{ite
mId}/properties/{propertyKey}
Set property
PUT
/rest/api/2/dashboard/{dashboardId}/items/{ite
mId}/properties/{propertyKey}
Get property
GET
/rest/api/2/dashboard/{dashboardId}/items/{ite
mId}/properties/{propertyKey}
POST /rest/api/2/email-templates
GET /rest/api/2/email-templates
POST /rest/api/2/email-templates/apply
POST /rest/api/2/email-templates/revert
GET /rest/api/2/email-templates/types
POST /rest/api/2/field
Get fields
GET /rest/api/2/field
Create filter
POST /rest/api/2/filter
Delete filter
DELETE /rest/api/2/filter/{id}
Edit filter
PUT /rest/api/2/filter/{id}
Get filter
GET /rest/api/2/filter/{id}
Default columns
GET /rest/api/2/filter/{id}/columns
Set columns
PUT /rest/api/2/filter/{id}/columns
Reset columns
DELETE /rest/api/2/filter/{id}/columns
GET /rest/api/2/filter/{id}/permission
POST /rest/api/2/filter/{id}/permission
DELETE
/rest/api/2/filter/{id}/permission/{permission-id
}
GET /rest/api/2/filter/defaultShareScope
PUT /rest/api/2/filter/defaultShareScope
GET /rest/api/2/filter/favourite
Create group
POST /rest/api/2/group
GET /rest/api/2/group
Remove group
DELETE /rest/api/2/group
DELETE /rest/api/2/group/user
POST /rest/api/2/group/user
Find groups
GET /rest/api/2/groups/picker
GET /rest/api/2/groupuserpicker
GET /rest/api/2/index/summary
Create issue
POST /rest/api/2/issue
Create issues
POST /rest/api/2/issue/bulk
Get issue
GET /rest/api/2/issue/{issueIdOrKey}
Delete issue
DELETE /rest/api/2/issue/{issueIdOrKey}
Edit issue
PUT /rest/api/2/issue/{issueIdOrKey}
Archive issue
PUT /rest/api/2/issue/{issueIdOrKey}/archive
Assign
PUT
/rest/api/2/issue/{issueIdOrKey}/assignee
Get comments
GET
/rest/api/2/issue/{issueIdOrKey}/comment
Add comment
POST
/rest/api/2/issue/{issueIdOrKey}/comment
Update comment
PUT
/rest/api/2/issue/{issueIdOrKey}/comment/{id}
Delete comment
DELETE
/rest/api/2/issue/{issueIdOrKey}/comment/{id}
Get comment
GET
/rest/api/2/issue/{issueIdOrKey}/comment/{id}
GET
/rest/api/2/issue/{issueIdOrKey}/editmeta
Notify
POST /rest/api/2/issue/{issueIdOrKey}/notify
GET
/rest/api/2/issue/{issueIdOrKey}/remotelink
POST
/rest/api/2/issue/{issueIdOrKey}/remotelink
GET
/rest/api/2/issue/{issueIdOrKey}/remotelink/{li
nkId}
PUT
/rest/api/2/issue/{issueIdOrKey}/remotelink/{li
nkId}
DELETE
/rest/api/2/issue/{issueIdOrKey}/remotelink/{li
nkId}
Restore issue
PUT /rest/api/2/issue/{issueIdOrKey}/restore
Get transitions
GET
/rest/api/2/issue/{issueIdOrKey}/transitions
Do transition
POST
/rest/api/2/issue/{issueIdOrKey}/transitions
Remove vote
DELETE
/rest/api/2/issue/{issueIdOrKey}/votes
Add vote
POST /rest/api/2/issue/{issueIdOrKey}/votes
Get votes
GET /rest/api/2/issue/{issueIdOrKey}/votes
GET
/rest/api/2/issue/{issueIdOrKey}/watchers
Add watcher
POST
/rest/api/2/issue/{issueIdOrKey}/watchers
Remove watcher
DELETE
/rest/api/2/issue/{issueIdOrKey}/watchers
GET /rest/api/2/issue/{issueIdOrKey}/worklog
Add worklog
POST
/rest/api/2/issue/{issueIdOrKey}/worklog
QUERY PARAMETERS
paramet ty description
er pe
adjustEst str (optional) allows you to provide specific instructions to update the remaining
imate in time estimate of the issue. Valid values are
g
newEsti str (required when "new" is selected for adjustEstimate) the new value for the
mate in remaining estimate field. e.g. "2d"
g
reduceBy str (required when "manual" is selected for adjustEstimate) the amount to reduce
in the remaining estimate by e.g. "2d"
g
EXAMPLE
{
"visibility": {
"type": "group",
"value": "jira-developers"
},
"started": "2023-01-24T13:21:14.509+0000",
"timeSpentSeconds": 12000
SCHEMA
Responses
Get worklog
GET
/rest/api/2/issue/{issueIdOrKey}/worklog/{id}
Update worklog
PUT
/rest/api/2/issue/{issueIdOrKey}/worklog/{id}
Delete worklog
DELETE
/rest/api/2/issue/{issueIdOrKey}/worklog/{id}
Archive issues
POST /rest/api/2/issue/archive
GET
/rest/api/2/issue/createmeta/{projectIdOrKey}/
issuetypes
GET
/rest/api/2/issue/createmeta/{projectIdOrKey}/
issuetypes/{issueTypeId}
Issue attachments
Add attachment
POST
/rest/api/2/issue/{issueIdOrKey}/attachments
GET
/rest/api/2/issue/{issueIdOrKey}/properties
DELETE
/rest/api/2/issue/{issueIdOrKey}/properties/{pr
opertyKey}
PUT
/rest/api/2/issue/{issueIdOrKey}/properties/{pr
opertyKey}
GET
/rest/api/2/issue/{issueIdOrKey}/properties/{pr
opertyKey}
api/2/issue/{issueIdOrKey}/subtaskExpand all methods
GET /rest/api/2/issue/{issueIdOrKey}/subtask
GET
/rest/api/2/issue/{issueIdOrKey}/subtask/mov
e
POST
/rest/api/2/issue/{issueIdOrKey}/subtask/mov
e
Link issues
POST /rest/api/2/issueLink
GET /rest/api/2/issueLink/{linkId}
DELETE /rest/api/2/issueLink/{linkId}
GET /rest/api/2/issueLinkType
POST /rest/api/2/issueLinkType
DELETE
/rest/api/2/issueLinkType/{issueLinkTypeId}
PUT
/rest/api/2/issueLinkType/{issueLinkTypeId}
GET
/rest/api/2/issueLinkType/{issueLinkTypeId}
REST resource that allows to view security schemes defined in the product.
GET /rest/api/2/issuesecurityschemes
GET /rest/api/2/issuesecurityschemes/{id}
api/2/issuetypeExpand all methods
POST /rest/api/2/issuetype
GET /rest/api/2/issuetype
GET /rest/api/2/issuetype/{id}
DELETE /rest/api/2/issuetype/{id}
PUT /rest/api/2/issuetype/{id}
GET /rest/api/2/issuetype/{id}/alternatives
POST /rest/api/2/issuetype/{id}/avatar
POST
/rest/api/2/issuetype/{id}/avatar/temporary
GET /rest/api/2/issuetype/page
GET
/rest/api/2/issuetype/{issueTypeId}/properties
DELETE
/rest/api/2/issuetype/{issueTypeId}/properties/
{propertyKey}
PUT
/rest/api/2/issuetype/{issueTypeId}/properties/
{propertyKey}
GET
/rest/api/2/issuetype/{issueTypeId}/properties/
{propertyKey}
An issue type scheme is a named, ordered collection of issue types that is associated with 0..n
projects. The contents of the associated issue type scheme determine which issue types are
available to a project.
Show more
POST /rest/api/2/issuetypescheme
GET /rest/api/2/issuetypescheme
GET /rest/api/2/issuetypescheme/{schemeId}
PUT /rest/api/2/issuetypescheme/{schemeId}
DELETE
/rest/api/2/issuetypescheme/{schemeId}
POST
/rest/api/2/issuetypescheme/{schemeId}/asso
ciations
Get associated projects
GET
/rest/api/2/issuetypescheme/{schemeId}/asso
ciations
PUT
/rest/api/2/issuetypescheme/{schemeId}/asso
ciations
DELETE
/rest/api/2/issuetypescheme/{schemeId}/asso
ciations
DELETE
/rest/api/2/issuetypescheme/{schemeId}/asso
ciations/{projIdOrKey}
GET /rest/api/2/jql/autocompleteda