JIRA REST API Reference

JIRA 7.0.0-m01

This is the reference document for the REST API and resources provided by JIRA. The REST APIs are developers who want to integrate JIRA with other standalone or web applications, and administrators who want to script interactions with the JIRA server.

If you are after an introductory, high-level view of the JIRA REST API, rather than an exhaustive reference document, then the best place to start is the JIRA REST API home.

Getting started

Because the REST API is based on open standards, you can use any web development language to access the API. If you are using Java, however, the easiest way to get started using the JIRA REST API is to download with the JIRA REST Java Client (JRJC) and use it as a library within your own application. For other languages, refer to the JIRA REST API home for code examples.

Structure of the REST URIs

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:

  • auth - for authentication-related operations, and
  • api - for everything else.

The current API version is 2. However, there is also a symbolic version, called latest, which resolves to the latest version supported by the given JIRA instance. As an example, if you wanted to retrieve the JSON representation of issue JRA-9 from Atlassian's public issue tracker, you would access:

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 the REST APIs

In order to minimise network traffic and server CPU usage, the JIRA REST API sometimes uses a technique called expansion. When a REST resource uses expansion then parts of that resource will not be included in the JSON response unless explicitly requested. The way to request those fragments to be included is by using the expand query parameter.

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.

Authentication

Any authentication that works against JIRA will work against the REST API. The prefered authentication methods are OAuth and HTTP Basic (when using SSL), which are both documented in the JIRA REST API Tutorials. Other supported methods include: HTTP Cookies, and Trusted Applications.

The log-in page uses cookie-based authentication, so if you are using JIRA in a browser you can call REST from Javascript on the page and rely on the authentication that the browser has established. Callers wanting to reproduce the behaviour of the JIRA log-in page (for example, to display authentication error messages to users) or who are calling both the REST and SOAP API can POST to the /auth/1/session resource as per the documentation below.

You can find OAuth code samples in several programming languages at bitbucket.org/atlassian_tutorial/atlassian-oauth-examples.

Paged API

JIRA uses pagination to conserve server resources and limit response size for resources that return potentially large collection of items. A request to a pages API will result in a values array wrapped in a JSON object with some paging metada, like this:

{
    "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. This indicates, how many items to which calling user has permissions are in the system. This number may change while client requests next 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.

Experimental methods

Methods marked as experimental may change without an earlier notice. We are looking for your feedback for these methods.

Special Request and Response headers

  • X-AUSERNAME - Response header which contains either username of the authenticated user or 'anonymous'.
  • X-Atlassian-Token - methods which accept multipart/form-data will only process requests with 'X-Atlassian-Token: nocheck' header.

Resources

api/2/

Provide permission information for the current user.

Returns all permissions in the system and whether the currently logged in user has them. You can optionally provide a specific context to get permissions for (projectKey OR projectId OR issueKey OR issueId)

  • When no context supplied the project related permissions will return true if the user has that permission in ANY project
  • If a project context is provided, project related permissions will return true if the user has the permissions in the specified project. For permissions that are determined using issue data (e.g Current Assignee), true will be returned if the user meets the permission criteria in ANY issue in that project
  • If an issue context is provided, it will return whether or not the user has each permission in that specific issue

NB: The above means that for issue-level permissions (EDIT_ISSUE for example), hasPermission may be true when no context is provided, or when a project context is provided, but may be false for any given (or all) issues. This would occur (for example) if Reporters were given the EDIT_ISSUE permission. This is because any user could be a reporter, except in the context of a concrete issue, where the reporter is known.

Global permissions will still be returned for all scopes.

Prior to version 6.4 this service returned project permissions with keys corresponding to com.atlassian.jira.security.Permissions.Permission constants. Since 6.4 those keys are considered deprecated and this service returns system project permission keys corresponding to constants defined in com.atlassian.jira.permission.ProjectPermissions. Permissions with legacy keys are still also returned for backwards compatibility, they are marked with an attribute deprecatedKey=true. The attribute is missing for project permissions with the current keys.

Request
query parameters
parametertypedescription
projectKeystring

- key of project to scope returned permissions for.

projectIdstring

- id of project to scope returned permissions for.

issueKeystring

- key of the issue to scope returned permissions for.

issueIdstring

- id of the issue to scope returned permissions for.

Responses
  • Status 200 - application/json

    Example
    {"permissions":{"EDIT_ISSUE":{"id":"12","key":"EDIT_ISSUES","name":"Edit Issues","type":"PROJECT","description":"Ability to edit issues.","havePermission":true}}}

    Returns a list of all permissions in JIRA and whether the user has them.
  • Status 400
    Returned if the project or issue id is invalid.
  • Status 404
    Returned if the project or issue id or key is not found.

Returns all permissions that are present in the JIRA instance - Global, Project and the global ones added by plugins

Responses
  • Status 200 - application/json

    Example
    {"permissions":{"BULK_CHANGE":{"key":"BULK_CHANGE","name":"Bulk Change","type":"GLOBAL","description":"Ability to modify a collection of issues at once. For example, resolve multiple issues in one step."}}}

    Returns a list of all permissions in JIRA.
  • Status 401
    Returned for unauthenticated requests
  • Status 403
    Returned for users without administer permissions

api/2/application-properties

Returns an application property.

Request
query parameters
parametertypedescription
keystring

a String containing the property key

permissionLevelstring

when fetching a list specifies the permission level of all items in the list see {@link com.atlassian.jira.bc.admin.ApplicationPropertiesService.EditPermissionLevel}

keyFilterstring

when fetching a list allows the list to be filtered by the property's start of key e.g. "jira.lf.*" whould fetch only those permissions that are editable and whose keys start with "jira.lf.". This is a regex.

Responses
  • Status 200 - application/json

    Example
    {"id":"jira.home","key":"jira.home","value":"/var/jira/jira-home","name":"jira.home","desc":"JIRA home directory","type":"string","defaultValue":""}

    Returned if the property exists and the currently authenticated user has permission to view it. Contains a full representation of the property.
  • Status 404
    Returned if the property does not exist or the currently authenticated user does not have permission to view it.

Modify an application property via PUT. The "value" field present in the PUT will override the existing value.

Request

Example
{"id":"jira.home","value":"/var/jira/jira-home"}

Responses
  • Status 200
    Returned if the version exists and the currently authenticated user has permission to edit it.
  • Status 403
    Returned if the currently authenticated user does not have permission to edit the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

api/2/applicationrole

Provides REST access to JIRA's {@link com.atlassian.jira.application.ApplicationRole}s.

Returns all {@code ApplicationRole}s in the system.

Responses
  • application/json

Returns the passed {@code ApplicationRole} if it exists.

Responses
  • application/json

Updates the {@code ApplicationRole} with the passed data. Only the groups and default selected setting of the role may be updated. Requests to change the key or the name of the role will be silently ignored.

Request
Responses
  • application/json

api/2/attachment

Remove an attachment from an issue.

Responses
  • Status 204
    Removal was successful
  • Status 403
    The calling user is not permitted to remove the requested attachment.
  • Status 404
    Any of:
    • there is no attachment with the requested id
    • attachments feature is disabled

Returns the meta-data for an attachment, including the URI of the actual attached file.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.205+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"}

    JSON representation of the attachment meta-data. The representation does not contain the attachment itself, but contains a URI that can be used to download the actual attached file.
  • Status 403
    The calling user is not permitted to view the requested attachment.
  • Status 404
    Any of:
    • there is no attachment with the requested id
    • attachments feature is disabled

Tries to expand an attachment. Output is human-readable and subject to change.

Responses
  • Status 200 - application/json

    Example
    {"id":7237823,"name":"images.zip","entries":[{"path":"MG00N067.JPG","index":0,"size":"119 kB","mediaType":"image/jpeg","label":"MG00N067.JPG"},{"path":"Allegro from Duet in C Major.mp3","index":1,"size":"1.36 MB","mediaType":"audio/mpeg","label":"Allegro from Duet in C Major.mp3"},{"path":"long/path/thanks/to/lots/of/subdirectories/inside/making/it/quite/hard/to/reach/the/leaf.txt","index":2,"size":"0.0 k","mediaType":"text/plain","label":"long/path/thanks/to/.../reach/the/leaf.txt"}],"totalEntryCount":39,"mediaType":"application/zip"}

    JSON representation of the attachment expanded contents. Empty entry list means that attachment cannot be expanded. It's either empty, corrupt or not an archive at all.
  • Status 403
    The calling user is not permitted to view the requested attachment.
  • Status 404
    Any of:
    • there is no attachment with the requested id
    • attachments feature is disabled
  • Status 409
    The archive format is not supported.

Tries to expand an attachment. Output is raw and should be backwards-compatible through the course of time.

Responses
  • Status 200 - application/json

    Example
    {"entries":[{"entryIndex":0,"name":"Allegro from Duet in C Major.mp3","size":1430174,"mediaType":"audio/mpeg"},{"entryIndex":1,"name":"lrm.rtf","size":331,"mediaType":"text/rtf"}],"totalEntryCount":24}

    JSON representation of the attachment expanded contents. Empty entry list means that attachment cannot be expanded. It's either empty, corrupt or not an archive at all.
  • Status 403
    The calling user is not permitted to view the requested attachment.
  • Status 404
    Any of:
    • there is no attachment with the requested id
    • attachments feature is disabled
  • Status 409
    The archive format is not supported.

Returns the meta information for an attachments, specifically if they are enabled and the maximum upload size allowed.

Responses
  • Status 200 - application/json

    Example
    {"enabled":true,"uploadLimit":1000000}

    JSON representation of the attachment capabilities. Consumers of this resource may also need to check if the logged in user has permission to upload or otherwise manipulate attachments using the {@link com.atlassian.jira.rest.v2.permission.PermissionsResource}.

api/2/auditing

Resource representing the auditing records

Returns auditing records filtered using provided parameters

Request
query parameters
parametertypedescription
offsetint

- the number of record from which search starts

limitint

- maximum number of returned results (if is limit is <= 0 or > 1000, it will be set do default value: 1000)

filterstring

- text query; each record that will be returned must contain the provided text in one of its fields

fromstring

- timestamp in past; 'from' must be less or equal 'to', otherwise the result set will be empty only records that where created in the same moment or after the 'from' timestamp will be provided in response

tostring

- timestamp in past; 'from' must be less or equal 'to', otherwise the result set will be empty only records that where created in the same moment or earlier than the 'to' timestamp will be provided in response

Responses
  • Status 200 - application/json

    Example
    {"id":1,"summary":"User created","remoteAddress":"192.168.1.1","authorKey":"administrator","created":"2014-03-19T18:45:42.967+0000","category":"user management","eventSource":"JIRA Connect Plugin","description":"Optional description","objectItem":{"id":"usr","name":"user","typeName":"USER","parentId":"1","parentName":"JIRA Internal Directory"},"changedValues":[{"fieldName":"email","changedFrom":"user@atlassian.com","changedTo":"newuser@atlassian.com"}],"associatedItems":[{"id":"jira-users","name":"jira-users","typeName":"GROUP","parentId":"1","parentName":"JIRA Internal Directory"}]}

    Returns a list auditing records filtered with request query parameters
  • Status 400
    In case of unhandled error while fetching auditing records
  • Status 403
    Returned if the user does not have admin permission

Store a record in Audit Log

Request

Example
{"summary":"User created","created":null,"category":"USER_MANAGEMENT","objectItem":{"id":"usr","name":"user","typeName":"USER","parentId":"1","parentName":"JIRA Internal Directory"},"changedValues":[{"fieldName":"email","changedFrom":"user@atlassian.com","changedTo":"newuser@atlassian.com"}],"associatedItems":[{"id":"jira-users","name":"jira-users","typeName":"GROUP","parentId":"1","parentName":"JIRA Internal Directory"}]}

Responses
  • Status 201
    Returned if the record is successfully stored.
  • Status 400
    In case of unhandled error while fetching auditing records
  • Status 403
    Returned if the user does not have admin permission

api/2/avatar

Returns all system avatars of the given type.

Responses
  • Status 200 - application/json

    Example
    {"system":[{"id":"1000","owner":"fred","isSystemAvatar":true,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10040","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10040","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10040","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10040"},"selected":false}]}

    Returns a map containing a list of system avatars. A map is returned to be consistent with the shape of the project/KEY/avatars REST end point.
  • Status 500
    Returned if an error occurs while retrieving the list of avatars.

Creates temporary avatar

Request
query parameters
parametertypedescription
filenamestring

name of file being uploaded

sizelong

size of file

Responses
  • Status 201 - application/json

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions
  • Status 400
    Valiation failed. For example filesize is beyond max attachment size.
  • Status 403
    Returned if the request does not conain a valid XSRF token
  • Status 500
    Returned if an error occurs while converting temporary avatar to real avatar

Updates the cropping instructions of the temporary avatar.

Request

Example
{"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"needsCropping":false}

Responses
  • Status 201 - application/json
  • Status 400
    Returned if the cropping coordinates are invalid
  • Status 500
    Returned if an error occurs while cropping the temporary avatar

api/2/comment/{commentId}/properties

Returns the keys of all properties for the comment identified by the key or by the id.

Responses
  • Status 200 - application/json

    Example
    {"keys":[{"self":"http://www.example.com/jira/rest/api/2/issue/EX-2/properties/issue.support","key":"issue.support"}]}

    Returned if the comment was found.
  • Status 400
    Returned if the comment key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to browse the comment.
  • Status 404
    Returned if the comment with given key or id does not exist or if the property with given key is not found.

Removes the property from the comment identified by the key or by the id. Ths user removing the property is required to have permissions to administer the comment.

Responses
  • Status 204
    Returned if the comment property was removed successfully.
  • Status 400
    Returned if the comment key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to edit the comment.
  • Status 404
    Returned if the comment with given key or id does not exist or if the property with given key is not found.

Sets the value of the specified comment's property.

You can use this resource to store a custom data against the comment identified by the key or by the id. The user who stores the data is required to have permissions to administer the comment.

Responses
  • Status 200
    Returned if the comment property is successfully updated.
  • Status 201
    Returned if the comment property is successfully created.
  • Status 400
    Returned if the comment key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer the comment.
  • Status 404
    Returned if the comment with given key or id does not exist.

Returns the value of the property with a given key from the comment identified by the key or by the id. The user who retrieves the property is required to have permissions to read the comment.

Responses
  • Status 200 - application/json

    Example
    {"key":"issue.support","value":{}}

    Returned if the comment property was found.
  • Status 400
    Returned if the comment key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to browse the comment.
  • Status 404
    Returned if the comment with given key or id does not exist or if the property with given key is not found.

api/2/component

Create a component via POST.

Request

Example
{"name":"Component 1","description":"This is a JIRA component","leadUserName":"fred","assigneeType":"PROJECT_LEAD","isAssigneeTypeValid":false,"project":"PROJECTKEY","projectId":10000}

Responses
  • Status 201 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10000","name":"Component 1","description":"This is a JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"HSP","projectId":10000}

    Returned if the component is created successfully.
  • Status 401
    Returned if the caller is not logged in and does not have permission to create components in the project.
  • Status 403
    Returned if the caller is authenticated and does not have permission to create components in the project.
  • Status 404
    Returned if the project does not exist or the currently authenticated user does not have permission to view it.

Returns a project component.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10000","name":"Component 1","description":"This is a JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"HSP","projectId":10000}

    Returns a full JSON representation of a project component.
  • Status 404
    Returned if there is no component with the given key, or if the calling user does not have permission to view the component.

Modify a component via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field is not present, it is silently ignored. If leadUserName is an empty string ("") the component lead will be removed.

Request

Example
{"name":"Component 1","description":"This is a JIRA component","leadUserName":"fred","assigneeType":"PROJECT_LEAD","isAssigneeTypeValid":false,"project":"PROJECTKEY","projectId":10000}

Responses
  • Status 200
    Returned if the component exists and the currently authenticated user has permission to edit it.
  • Status 403
    Returned if the currently authenticated user does not have permission to edit the component.
  • Status 404
    Returned if the component does not exist or the currently authenticated user does not have permission to view it.

Delete a project component.

Request
query parameters
parametertypedescription
moveIssuesTostring

The new component applied to issues whose 'id' component will be deleted. If this value is null, then the 'id' component is simply removed from the related isues.

Responses
  • Status 204
    Returned if the component is successfully deleted.
  • Status 403
    Returned if the currently authenticated user does not have permission to delete the component.
  • Status 404
    Returned if the component does not exist or the currently authenticated user does not have permission to view it.

Returns counts of issues related to this component.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/component/10000","issueCount":23}

    Returned if the component exists and the currently authenticated user has permission to view it. Contains counts of issues related to this component.
  • Status 404
    Returned if the component does not exist or the currently authenticated user does not have permission to view it.

api/2/configuration

Returns the information if the optional features in JIRA are enabled or disabled. If the time tracking is enabled, it also returns the detailed information about time tracking configuration.

Responses
  • Status 200 - application/json

    Example
    {"votingEnabled":true,"watchingEnabled":true,"unassignedIssuesAllowed":false,"subTasksEnabled":false,"issueLinkingEnabled":true,"timeTrackingEnabled":true,"attachmentsEnabled":true,"timeTrackingConfiguration":{"workingHoursPerDay":8.0,"workingDaysPerWeek":5.0,"timeFormat":"pretty","defaultUnit":"day"}}

    Returned the configuration of optional features in JIRA.
  • Status 403
    Returned if the user is not an admin.

api/2/customFieldOption

Returns a full representation of the Custom Field Option that has the given id.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://localhost:8090/jira/rest/api/2.0/customFieldOption/3","value":"Blue"}

    Returned if the Custom Field Option exists and is visible by the calling user.
  • Status 404
    Returned if the Custom Field Option does not exist, or is not visible to the calling user.

api/2/dashboard

The /dashboard resource.

Returns a list of all dashboards, optionally filtering them.

Request
query parameters
parametertypedescription
filterstring

an optional filter that is applied to the list of dashboards. Valid values include "favourite" for returning only favourite dashboards, and "my" for returning dashboards that are owned by the calling user.

startAtint

the index of the first dashboard to return (0-based). must be 0 or a multiple of maxResults

maxResultsint

a hint as to the the maximum number of dashboards to return in each call. Note that the JIRA server reserves the right to impose a maxResults limit that is lower than the value that a client provides, dues to lack or resources or any other condition. When this happens, your results will be truncated. Callers should always check the returned maxResults to determine the value that is effectively being used.

Responses
  • Status 200

    Example
    {"startAt":10,"maxResults":10,"total":143,"prev":"http://www.example.com/jira/rest/api/2/dashboard?startAt=0","next":"http://www.example.com/jira/rest/api/2/dashboard?startAt=10","dashboards":[{"id":"10000","name":"System Dashboard","self":"http://www.example.com/jira/rest/api/2/dashboard/10000","view":"http://www.example.com/jira/secure/Dashboard.jspa?selectPageId=10000"},{"id":"20000","name":"Build Engineering","self":"http://www.example.com/jira/rest/api/2/dashboard/20000","view":"http://www.example.com/jira/secure/Dashboard.jspa?selectPageId=20000"}]}

    Returns a list of dashboards.

Returns a single dashboard.

Responses
  • Status 200

    Example
    {"id":"10000","name":"System Dashboard","self":"http://www.example.com/jira/rest/api/2/dashboard/10000","view":"http://www.example.com/jira/secure/Dashboard.jspa?selectPageId=10000"}

    Returns a single dashboard.
  • Status 404
    Returned if there is no dashboard with the specified id, or if the user does not have permission to see it.

api/2/dashboard/{dashboardId}/items/{itemId}/properties

Returns the keys of all properties for the dashboard item identified by the id.

Responses
  • Status 200 - application/json

    Example
    {"keys":[{"self":"http://www.example.com/jira/rest/api/2/issue/EX-2/properties/issue.support","key":"issue.support"}]}

    Returned if the dashboard item was found.
  • Status 400
    Returned if the dashboard item id is invalid.
  • Status 404
    Returned if the dashboard item with given id does not exist or user does not have permissions to view it.

Removes the property from the dashboard item identified by the key or by the id. Ths user removing the property is required to have permissions to administer the dashboard item.

Responses
  • Status 204
    Returned if the dashboard item property was removed successfully.
  • Status 400
    Returned if the dashboard item id is invalid.
  • Status 403
    Returned if the calling user does not have permission to edit the dashboard item.
  • Status 404
    Returned if the dashboard item with given id does not exist or user does not have permissions to view it.

Sets the value of the specified dashboard item's property.

You can use this resource to store a custom data against the dashboard item identified by the id. The user who stores the data is required to have permissions to administer the dashboard item.

Responses
  • Status 200
    Returned if the dashboard item property is successfully updated.
  • Status 201
    Returned if the dashboard item property is successfully created.
  • Status 400
    Returned if the dashboard item id is invalid.
  • Status 403
    Returned if the calling user does not have permission to administer the dashboard item.
  • Status 404
    Returned if the dashboard item with given id does not exist or user does not have permissions to view it.

Returns the value of the property with a given key from the dashboard item identified by the id. The user who retrieves the property is required to have permissions to read the dashboard item.

Responses
  • Status 200 - application/json

    Example
    {"key":"issue.support","value":{}}

    Returned if the dashboard item property was found.
  • Status 400
    Returned if the dashboard item id is invalid.
  • Status 404
    Returned if the dashboard item with given id does not exist or user does not have permissions to view it.

api/2/field

Creates a custom field using a definition (object encapsulating custom field data)

Request

Example
{"name":"New custom field","description":"Custom field for picking groups","type":"com.atlassian.jira.plugin.system.customfieldtypes:grouppicker","searcherKey":"com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher"}

Responses
  • Status 201
    Returned if custom field was created. {@link FieldBean#DOC_EXAMPLE_CF}
  • Status 400
    Returned if the input is invalid (e.g. invalid values).
  • Status 500
    Returned if exception occured during custom field creation.

Returns a list of all fields, both System and Custom

Responses
  • Status 200 - application/json

    Example
    [{"id":"description","name":"Description","custom":false,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["description"],"schema":{"type":"string","system":"description"}},{"id":"summary","name":"Summary","custom":false,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["summary"],"schema":{"type":"string","system":"summary"}}]

    Contains a full representation of all visible fields in JSON.

api/2/filter

Resource for searches.

Creates a new filter, and returns newly created filter. Currently sets permissions just using the users default sharing permissions

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

Example
{"name":"All Open Bugs","description":"Lists all open bugs","jql":"type = Bug and resolution is empty","favourite":true}

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/filter/10000","id":"10000","name":"All Open Bugs","description":"Lists all open bugs","owner":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"jql":"type = Bug and resolution is empty","viewUrl":"http://www.example.com/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10000","searchUrl":"http://www.example.com/jira/rest/api/2/search?jql=type%20%3D%20Bug%20and%20resolutino%20is%20empty","favourite":true,"sharePermissions":[],"subscriptions":{"size":0,"items":[],"max-results":1000,"start-index":0,"end-index":0}}

    Returns a JSON representation of a filter
  • Status 400
    Returned if the input is invalid (e.g. filter name was not provided).

Returns a filter given an id

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/filter/10000","id":"10000","name":"All Open Bugs","description":"Lists all open bugs","owner":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"jql":"type = Bug and resolution is empty","viewUrl":"http://www.example.com/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10000","searchUrl":"http://www.example.com/jira/rest/api/2/search?jql=type%20%3D%20Bug%20and%20resolutino%20is%20empty","favourite":true,"sharePermissions":[],"subscriptions":{"size":0,"items":[],"max-results":1000,"start-index":0,"end-index":0}}

    Returns a JSON representation of a filter
  • Status 400
    Returned if there is a problem looking up the filter given the id

Updates an existing filter, and returns its new value.

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

Example
{"name":"All Open Bugs","description":"Lists all open bugs","jql":"type = Bug and resolution is empty","favourite":true}

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/filter/10000","id":"10000","name":"All Open Bugs","description":"Lists all open bugs","owner":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"jql":"type = Bug and resolution is empty","viewUrl":"http://www.example.com/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10000","searchUrl":"http://www.example.com/jira/rest/api/2/search?jql=type%20%3D%20Bug%20and%20resolutino%20is%20empty","favourite":true,"sharePermissions":[],"subscriptions":{"size":0,"items":[],"max-results":1000,"start-index":0,"end-index":0}}

    Returns a JSON representation of a filter
  • Status 400
    Returned if there is a problem updating up the filter of the given id

Delete a filter.

Responses
  • Status 204
    Returned if the filter was removed successfully.
  • Status 400
    Returned if an error occurs.
  • Status 401
    Returned if the calling user is not authenticated.

Returns the default columns for the given filter. Currently logged in user will be used as the user making such request.

Responses
  • Status 200 - application/json
    Returns a list of columns for configured for the given user
  • Status 404
    Returned if the filter does not have any columns.
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

Sets the default columns for the given filter.

Request
Responses
  • Status 200
    Returned when the columns are saved successfully
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

Resets the columns for the given filter such that the filter no longer has its own column config.

Responses
  • Status 204
    Returned when the columns are reset/removed successfully
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

Returns the default share scope of the logged-in user.

Responses
  • Status 200 - application/json

    Example
    {"scope":"GLOBAL"}

    Returns the default share scope of the logged-in user.
  • Status 400
    Returned if there is a problem looking up preferences for the logged-in user

Sets the default share scope of the logged-in user. Available values are GLOBAL and PRIVATE.

Request

Example
{"scope":"GLOBAL"}

Responses
  • Status 200 - application/json

    Example
    {"scope":"GLOBAL"}

    Returns the new default share scope of the logged-in user.
  • Status 400
    Returned if there is a problem setting the preferences for the logged-in user

Returns the favourite filters of the logged-in user.

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/filter/10000","id":"10000","name":"All Open Bugs","description":"Lists all open bugs","owner":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"jql":"type = Bug and resolution is empty","viewUrl":"http://www.example.com/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10000","searchUrl":"http://www.example.com/jira/rest/api/2/search?jql=type%20%3D%20Bug%20and%20resolutino%20is%20empty","favourite":true,"sharePermissions":[],"subscriptions":{"size":0,"items":[],"max-results":1000,"start-index":0,"end-index":0}},{"self":"http://www.example.com/jira/rest/api/2/filter/10010","id":"10010","name":"My issues","description":"Issues assigned to me","owner":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"jql":"assignee = currentUser() and resolution is empty","viewUrl":"http://www.example.com/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10010","searchUrl":"http://www.example.com/jira/rest/api/2/search?jql=assignee+%3D+currentUser%28%29+and+resolution+is+empty","favourite":true,"sharePermissions":[{"id":10000,"type":"global"},{"id":10010,"type":"project","project":{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}}}],"subscriptions":{"size":0,"items":[],"max-results":1000,"start-index":0,"end-index":0}}]

    Returns a JSON representation of a list of filters

api/2/group

Creates a group by given group parameter Returns REST representation for the requested group.

Request
Responses
  • Status 201 - application/json

    Example
    {"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators","users":{"size":1,"items":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}],"max-results":50,"start-index":0,"end-index":0},"expand":"users"}

    Returns full representation of a JIRA group in JSON format.
  • Status 400
    Returned if user requested an empty group name or group already exists
  • Status 401
    Returned if the current user is not authenticated.
  • Status 403
    Returned if the current user does not have administrator permissions.
  • Status 500
    Returned if the operation is not permitted or error occurs while creating the group.

Returns REST representation for the requested group. Allows to get list of active users belonging to the specified group and its subgroups if "users" expand option is provided. You can page through users list by using indexes in expand param. For example to get users from index 10 to index 15 use "users[10:15]" expand value. This will return 6 users (if there are at least 16 users in this group). Indexes are 0-based and inclusive.

Request
query parameters
parametertypedescription
groupnamestring

A name of requested group.

expandstring

List of fields to expand. Currently only available expand is "users".

Responses
  • Status 200 - application/json

    Example
    {"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators","users":{"size":1,"items":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}],"max-results":50,"start-index":0,"end-index":0},"expand":"users"}

    Returns full representation of a JIRA group in JSON format.
  • Status 400
    Returned if user requested an empty group name.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 403
    Returned if the current user does not have administrator permissions.
  • Status 404
    Returned if the requested group was not found.

Deletes a group by given group parameter. Returns no content

Request
query parameters
parametertypedescription
groupnamestring

a group to delete

swapGroupstring

a group to transfer visibility restrictions of the group that is being deleted

Responses
  • Status 200 - application/json
    Returned if the group was deleted.
  • Status 400
    Returned if user requested an group that does not exist.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 403
    Returned if the current user does not have administrator permissions.
  • Status 404
    Returned if the requested group was not found.
  • Status 500
    Returned if the operation is not permitted or error occurs while deleting the group.

Adds given user to a group. Returns the current state of the group.

Request
query parameters
parametertypedescription
groupnamestring

A name of requested group.

Responses
  • Status 201 - application/json
    Returns full representation of a JIRA group in JSON format.
  • Status 400
    Returned if user requested an empty group name or the user already belongs to the group.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 403
    Returned if the current user does not have administrator permissions.
  • Status 404
    Returned if the requested group was not found or requested user was not found.
  • Status 500
    Returned if the operation is not permitted or error occurs while adding user the group.

Removes given user from a group. Returns no content

Request
query parameters
parametertypedescription
groupnamestring

A name of requested group.

usernamestring

User to remove from a group

Responses
  • Status 200 - application/json
    If the user was removed from the group.
  • Status 400
    Returned if user requested an empty group name
  • Status 401
    Returned if the current user is not authenticated.
  • Status 403
    Returned if the current user does not have administrator permissions.
  • Status 404
    Returned if the requested group was not found or the requested user wan not found
  • Status 500
    Returned if the operation is not permitted or error occurs while removing user from the group.

api/2/groups

REST endpoint for searching groups in a group picker

Returns groups with substrings matching a given query. This is mainly for use with the group picker, so the returned groups contain html to be used as picker suggestions. The groups are also wrapped in a single response object that also contains a header for use in the picker, specifically Showing X of Y matching groups. The number of groups returned is limited by the system property "jira.ajax.autocomplete.limit" The groups will be unique and sorted.

Request
query parameters
parametertypedescription
querystring

a String to match groups agains

excludestring
maxResultsint
Responses
  • Status 200 - application/json

    Example
    {"header":"Showing 20 of 25 matching groups","total":25,"groups":[{"name":"jdog-developers","html":"<b>j</b>dog-developers"},{"name":"juvenal-bot","html":"<b>j</b>uvenal-bot"}]}

    Returned even if no groups match the given substring

api/2/groupuserpicker

Returns a list of users and groups matching query with highlighting. This resource cannot be accessed anonymously.

Request
query parameters
parametertypedescription
querystring

A string used to search username, Name or e-mail address

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

showAvatarboolean
fieldIdstring

The custom field id, if this request comes from a custom field, such as a user picker. Optional.

projectIdstring

The list of project ids to further restrict the search This parameter can occur multiple times to pass in multiple project ids. Comma separated value is not supported. This parameter is only used when fieldId is present.

issueTypeIdstring

The list of issue type ids to further restrict the search. This parameter can occur multiple times to pass in multiple issue type ids. Comma separated value is not supported. Special values such as -1 (all standard issue types), -2 (all subtask issue types) are supported. This parameter is only used when fieldId is present.

Responses
  • application/json

api/2/issue

Creates an issue or a sub-task from a JSON representation.

The fields that can be set on create, in either the fields parameter or the update parameter can be determined using the /rest/api/2/issue/createmeta resource. If a field is not configured to appear on the create screen, then it will not be in the createmeta, and a field validation error will occur if it is submitted.

Creating a sub-task is similar to creating a regular issue, with two important differences:

  • the issueType field must correspond to a sub-task issue type (you can use /issue/createmeta to discover sub-task issue types), and
  • you must provide a parent field in the issue create request containing the id or key of the parent issue.

Request

Example
{"update":{"worklog":[{"add":{"timeSpent":"60m","started":"2011-07-05T11:05:00.000+0000"}}]},"fields":{"project":{"id":"10000"},"summary":"something's wrong","issuetype":{"id":"10000"},"assignee":{"name":"homer"},"reporter":{"name":"smithers"},"priority":{"id":"20000"},"labels":["bugfix","blitz_test"],"timetracking":{"originalEstimate":"10","remainingEstimate":"5"},"security":{"id":"10000"},"versions":[{"id":"10000"}],"environment":"environment","description":"description","duedate":"2011-03-11","fixVersions":[{"id":"10001"}],"components":[{"id":"10000"}],"customfield_30000":["10000","10002"],"customfield_80000":{"value":"red"},"customfield_20000":"06/Jul/11 3:25 PM","customfield_40000":"this is a text field","customfield_70000":["jira-administrators","jira-users"],"customfield_60000":"jira-developers","customfield_50000":"this is a text area. big text.","customfield_10000":"09/Jun/81"}}

Responses
  • Status 201 - application/json

    Example
    {"id":"10000","key":"TST-24","self":"http://www.example.com/jira/rest/api/2/issue/10000"}

    Returns a link to the created issue.
  • Status 400

    Example
    {"errorMessages":["Field 'priority' is required"],"errors":{}}

    Returned if the input is invalid (e.g. missing required fields, invalid field values, and so forth).

Creates issues or sub-tasks from a JSON representation.

Creates many issues in one bulk operation.

Creating a sub-task is similar to creating a regular issue. More details can be found in createIssue section: {@link IssueResource#createIssue(IssueUpdateBean)}}

Request

Example
{"issueUpdates":[{"update":{"worklog":[{"add":{"timeSpent":"60m","started":"2011-07-05T11:05:00.000+0000"}}]},"fields":{"project":{"id":"10000"},"summary":"something's wrong","issuetype":{"id":"10000"},"assignee":{"name":"homer"},"reporter":{"name":"smithers"},"priority":{"id":"20000"},"labels":["bugfix","blitz_test"],"timetracking":{"originalEstimate":"10","remainingEstimate":"5"},"security":{"id":"10000"},"versions":[{"id":"10000"}],"environment":"environment","description":"description","duedate":"2011-03-11","fixVersions":[{"id":"10001"}],"components":[{"id":"10000"}],"customfield_30000":["10000","10002"],"customfield_80000":{"value":"red"},"customfield_20000":"06/Jul/11 3:25 PM","customfield_40000":"this is a text field","customfield_70000":["jira-administrators","jira-users"],"customfield_60000":"jira-developers","customfield_50000":"this is a text area. big text.","customfield_10000":"09/Jun/81"}},{"update":{},"fields":{"project":{"id":"1000"},"summary":"something's very wrong","issuetype":{"id":"10000"},"assignee":{"name":"jerry"},"reporter":{"name":"kosecki"},"priority":{"id":"20000"},"labels":["new_release"],"timetracking":{"originalEstimate":"15","remainingEstimate":"5"},"security":{"id":"10000"},"versions":[{"id":"10000"}],"environment":"environment","description":"description","duedate":"2011-04-16","fixVersions":[{"id":"10001"}],"components":[{"id":"10000"}],"customfield_30000":["10000","10002"],"customfield_80000":{"value":"red"},"customfield_20000":"06/Jul/11 3:25 PM","customfield_40000":"this is a text field","customfield_70000":["jira-administrators","jira-users"],"customfield_60000":"jira-developers","customfield_50000":"this is a text area. big text.","customfield_10000":"09/Jun/81"}}]}

Responses
  • Status 201 - application/json

    Example
    {"issues":[{"id":"10000","key":"TST-24","self":"http://www.example.com/jira/rest/api/2/issue/10000"},{"id":"10001","key":"TST-25","self":"http://www.example.com/jira/rest/api/2/issue/10001"}],"errors":[]}

    Returns a link to the created issues.
  • Status 400

    Example
    {"status":400,"elementErrors":{"errorMessages":["Field 'priority' is required"],"errors":{}},"failedElementNumber":3}

    Returned if the input is invalid (e.g. missing required fields, invalid field values, and so forth).

Returns a full representation of the issue for the given issue key.

An issue JSON consists of the issue key, a collection of fields, a link to the workflow transition sub-resource, and (optionally) the HTML rendered values of any fields that support it (e.g. if wiki syntax is enabled for the description or comments).

The fields param (which can be specified multiple times) gives a comma-separated list of fields to include in the response. This can be used to retrieve a subset of fields. A particular field can be excluded by prefixing it with a minus.

By default, all (*all) fields are returned in this get-issue resource. Note: the default is different when doing a jql search -- the default there is just navigable fields (*navigable).

  • *all - include all fields
  • *navigable - include just navigable fields
  • summary,comment - include just the summary and comments
  • -comment - include everything except comments (the default is *all for get-issue)
  • *all,-comment - include everything except comments

JIRA will attempt to identify the issue by the issueIdOrKey path parameter. This can be an issue id, or an issue key. If the issue cannot be found via an exact match, JIRA will also look for the issue in a case-insensitive way, or by looking to see if the issue was moved. In either of these cases, the request will proceed as normal (a 302 or other redirect will not be returned). The issue key contained in the response will indicate the current value of issue's key.

The expand param is used to include, hidden by default, parts of response. This can be used to include:

  • renderedFields - field values in HTML format
  • names - display name of each field
  • schema - schema for each field which describes a type of the field
  • transitions - all possible transitions for the given issue
  • operations - all possibles operations which may be applied on issue
  • editmeta - information about how each field may be edited. It contains field's schema as well.
  • changelog - history of all changes of the given issue
  • versionedRepresentations - REST representations of all fields. Some field may contain more recent versions. RESET representations are numbered. The greatest number always represents the most recent version. It is recommended that the most recent version is used. version for these fields which provide a more recent REST representation. After including versionedRepresentations "fields" field become hidden.

Request
query parameters
parametertypedescription
fieldsstring

the list of fields to return for the issue. By default, all fields are returned.

expandstring
Responses
  • Status 200 - application/json

    Example
    {"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog,versionedRepresentations","id":"10002","self":"http://www.example.com/jira/rest/api/2/issue/10002","key":"EX-1","fields":{"watcher":{"self":"http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching":false,"watchCount":1,"watchers":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}]},"attachment":[{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.205+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"}],"sub-tasks":[{"id":"10000","type":{"id":"10000","name":"","inward":"Parent","outward":"Sub-task"},"outwardIssue":{"id":"10003","key":"EX-2","self":"http://www.example.com/jira/rest/api/2/issue/EX-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"description":"example bug report","project":{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}},"comment":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.108+0000","updated":"2015-07-28T04:30:31.108+0000","visibility":{"type":"role","value":"Administrators"}}],"issuelinks":[{"id":"10001","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"outwardIssue":{"id":"10004L","key":"PRJ-2","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}},{"id":"10002","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"inwardIssue":{"id":"10004","key":"PRJ-3","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-3","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"worklog":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","visibility":{"type":"group","value":"jira-developers"},"started":"2015-07-28T04:30:31.247+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028"}],"updated":1,"timetracking":{"originalEstimate":"10m","remainingEstimate":"3m","timeSpent":"6m","originalEstimateSeconds":600,"remainingEstimateSeconds":200,"timeSpentSeconds":400}},"names":{"watcher":"watcher","attachment":"attachment","sub-tasks":"sub-tasks","description":"description","project":"project","comment":"comment","issuelinks":"issuelinks","worklog":"worklog","updated":"updated","timetracking":"timetracking"},"schema":{}}

    Returns a full representation of a JIRA issue in JSON format.
  • Status 404
    Returned if the requested issue is not found, or the user does not have permission to view it.

Delete an issue. If the issue has subtasks you must set the parameter deleteSubtasks=true to delete the issue. You cannot delete an issue without its subtasks also being deleted.

Request
query parameters
parametertypedescription
deleteSubtasksstring

a String of true or false indicating that any subtasks should also be deleted. If the issue has no subtasks this parameter is ignored. If the issue has subtasks and this parameter is missing or false, then the issue will not be deleted and an error will be returned.

Responses
  • Status 204
    Returned if the issue was removed successfully.
  • Status 400
    Returned if an error occurs.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to delete the issue.
  • Status 404
    Returned if the issue does not exist.

Edits an issue from a JSON representation.

The issue can either be updated by setting explicit the field value(s) or by using an operation to change the field value.

The fields that can be updated, in either the fields parameter or the update parameter, can be determined using the /rest/api/2/issue/{issueIdOrKey}/editmeta resource.
If a field is not configured to appear on the edit screen, then it will not be in the editmeta, and a field validation error will occur if it is submitted.

Specifying a "field_id": field_value in the "fields" is a shorthand for a "set" operation in the "update" section.
Field should appear either in "fields" or "update", not in both.

Request

Example
{"update":{"summary":[{"set":"Bug in business logic"}],"components":[{"set":""}],"timetracking":[{"edit":{"originalEstimate":"1w 1d","remainingEstimate":"4d"}}],"labels":[{"add":"triaged"},{"remove":"blocker"}]},"fields":{"summary":"This is a shorthand for a set operation on the summary field","customfield_10010":1,"customfield_10000":"This is a shorthand for a set operation on a text custom field"},"historyMetadata":{"type":"myplugin:type","description":"text description","descriptionKey":"plugin.changereason.i18.key","activityDescription":"text description","activityDescriptionKey":"plugin.activity.i18.key","actor":{"id":"tony","displayName":"Tony","type":"mysystem-user","avatarUrl":"http://mysystem/avatar/tony.jpg","url":"http://mysystem/users/tony"},"generator":{"id":"mysystem-1","type":"mysystem-application"},"cause":{"id":"myevent","type":"mysystem-event"},"extraData":{"keyvalue":"extra data","goes":"here"}}}

Responses
  • Status 204
    Returned if it updated the issue successfully.
  • Status 400
    Returned if the requested issue update failed.

Assigns an issue to a user. You can use this resource to assign issues when the user submitting the request has the assign permission but not the edit issue permission. If the name is "-1" automatic assignee is used. A null name will remove the assignee.

Request

Example
{"name":"harry"}

Responses
  • Status 204
    Returned if the issue is successfully assigned.
  • Status 400
    Returned if there is a problem with the received user representation.
  • Status 401
    Returned if the calling user does not have permission to assign the issue.
  • Status 404
    Returned if either the issue or the user does not exist.

Returns all comments for an issue.

Request
query parameters
parametertypedescription
expandstring

optional flags: renderedBody (provides body rendered in HTML)

Responses
  • Status 200 - application/json

    Example
    {"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.108+0000","updated":"2015-07-28T04:30:31.108+0000","visibility":{"type":"role","value":"Administrators"}}]}

    returns a collection of comments associated with the issue, with count and pagination information.
  • Status 404
    Returned if the issue with the given id/key does not exist or if the currently authenticated user does not have permission to view it.

Adds a new comment to an issue.

Request
query parameters
parametertypedescription
expandstring

optional flags: renderedBody (provides body rendered in HTML)

Example
{"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","visibility":{"type":"role","value":"Administrators"}}

Responses
  • Status 201

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.108+0000","updated":"2015-07-28T04:30:31.108+0000","visibility":{"type":"role","value":"Administrators"}}

    Returned if add was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).

Returns all comments for an issue.

Request
query parameters
parametertypedescription
expandstring

optional flags: renderedBody (provides body rendered in HTML)

Responses
  • Status 200 - application/json

    Example
    {"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.108+0000","updated":"2015-07-28T04:30:31.108+0000","visibility":{"type":"role","value":"Administrators"}}]}

    returns a collection of comments associated with the issue, with count and pagination information.
  • Status 404
    Returned if the issue with the given id/key does not exist or if the currently authenticated user does not have permission to view it.

Updates an existing comment using its JSON representation.

Request
query parameters
parametertypedescription
expandstring

optional flags: renderedBody (provides body rendered in HTML)

Example
{"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","visibility":{"type":"role","value":"Administrators"}}

Responses
  • Status 200

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.108+0000","updated":"2015-07-28T04:30:31.108+0000","visibility":{"type":"role","value":"Administrators"}}

    Returned if update was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).

Deletes an existing comment .

Responses
  • Status 204
    Returned if delete was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).

Returns the meta data for editing an issue.

The fields in the editmeta correspond to the fields in the edit screen for the issue. Fields not in the screen will not be in the editemeta.

Responses
  • Status 200 - application/json

    Example
    {"fields":{"summary":{"required":false,"schema":{"type":"array","items":"option","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiselect","customId":10001},"name":"My Multi Select","hasDefaultValue":false,"operations":["set","add"],"allowedValues":["red","blue"]}}}

    Returns a response containing a Map of FieldBeans for fields editable by the current user.
  • Status 404
    Returned if the requested issue is not found or the user does not have permission to view it.

Sends a notification (email) to the list or recipients defined in the request.

Request

Example
{"subject":"Duis eu justo eget augue iaculis fermentum.","textBody":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","htmlBody":"Lorem ipsum <strong>dolor</strong> sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","to":{"reporter":false,"assignee":false,"watchers":true,"voters":true,"users":[{"name":"fred","active":false}],"groups":[{"name":"notification-group","self":"http://www.example.com/jira/rest/api/2/group?groupname=notification-group"}]},"restrict":{"groups":[{"name":"notification-group","self":"http://www.example.com/jira/rest/api/2/group?groupname=notification-group"}],"permissions":[{"id":"10","key":"BROWSE"}]}}

Responses
  • Status 204
    Returned if adding to the mail queue was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).
  • Status 403
    Returned is outgoing emails are disabled OR no SMTP server is defined.

A REST sub-resource representing the remote issue links on the issue.

Request
query parameters
parametertypedescription
globalIdstring

The id of the remote issue link to be returned. If null (not provided) all remote links for the issue are returned.

For a fullexplanation of Issue Link fields please refer to https://developer.atlassian.com/display/JIRADEV/Fields+in+Remote+Issue+Links

Responses
  • Status 200 - application/json

    Example
    [{"id":10000,"self":"http://www.example.com/jira/rest/api/issue/MKY-1/remotelink/10000","globalId":"system=http://www.mycompany.com/support&id=1","application":{"type":"com.acme.tracker","name":"My Acme Tracker"},"relationship":"causes","object":{"url":"http://www.mycompany.com/support?id=1","title":"TSTSUP-111","summary":"Crazy customer support issue","icon":{"url16x16":"http://www.mycompany.com/support/ticket.png","title":"Support Ticket"},"status":{"resolved":true,"icon":{"url16x16":"http://www.mycompany.com/support/resolved.png","title":"Case Closed","link":"http://www.mycompany.com/support?id=1&details=closed"}}}},{"id":10001,"self":"http://www.example.com/jira/rest/api/issue/MKY-1/remotelink/10001","globalId":"system=http://www.anothercompany.com/tester&id=1234","application":{"type":"com.acme.tester","name":"My Acme Tester"},"relationship":"is tested by","object":{"url":"http://www.anothercompany.com/tester/testcase/1234","title":"Test Case #1234","summary":"Test that the submit button saves the thing","icon":{"url16x16":"http://www.anothercompany.com/tester/images/testcase.gif","title":"Test Case"},"status":{"resolved":false,"icon":{"url16x16":"http://www.anothercompany.com/tester/images/person/fred.gif","title":"Tested by Fred Jones","link":"http://www.anothercompany.com/tester/person?username=fred"}}}}]

    Information on the remote issue links for the current issue.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to view the remote issue links, or if issue linking is disabled.
  • Status 404
    Returned if the issue or remote issue link do not exist.

Creates or updates a remote issue link from a JSON representation. If a globalId is provided and a remote issue link exists with that globalId, the remote issue link is updated. Otherwise, the remote issue link is created.

Request

Example
{"globalId":"system=http://www.mycompany.com/support&id=1","application":{"type":"com.acme.tracker","name":"My Acme Tracker"},"relationship":"causes","object":{"url":"http://www.mycompany.com/support?id=1","title":"TSTSUP-111","summary":"Crazy customer support issue","icon":{"url16x16":"http://www.mycompany.com/support/ticket.png","title":"Support Ticket"},"status":{"resolved":true,"icon":{"url16x16":"http://www.mycompany.com/support/resolved.png","title":"Case Closed","link":"http://www.mycompany.com/support?id=1&details=closed"}}}}

Responses
  • Status 200 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/issue/MKY-1/remotelink/10000"}

    Returns a link to the created/updated remote issue link.
  • Status 400

    Example
    {"errorMessages":[],"errors":{"title":"'title' is required."}}

    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to create/update the remote issue link, or if issue linking is disabled.

Delete the remote issue link with the given global id on the issue.

Request
query parameters
parametertypedescription
globalIdstring

the global id of the remote issue link

Responses
  • Status 204
    Returned if the remote issue link was removed successfully.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to delete the remote issue link, or if issue linking is disabled.
  • Status 404
    Returned if the issue or remote issue link do not exist.

Get the remote issue link with the given id on the issue.

Responses
  • Status 200 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/issue/MKY-1/remotelink/10000","globalId":"system=http://www.mycompany.com/support&id=1","application":{"type":"com.acme.tracker","name":"My Acme Tracker"},"relationship":"causes","object":{"url":"http://www.mycompany.com/support?id=1","title":"TSTSUP-111","summary":"Crazy customer support issue","icon":{"url16x16":"http://www.mycompany.com/support/ticket.png","title":"Support Ticket"},"status":{"resolved":true,"icon":{"url16x16":"http://www.mycompany.com/support/resolved.png","title":"Case Closed","link":"http://www.mycompany.com/support?id=1&details=closed"}}}}

    Information on the remote issue link with the given id.
  • Status 400
    Returned if the linkId is not a valid number, or if the remote issue link with the given id does not belong to the given issue.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to view the remote issue link, or if issue linking is disabled.
  • Status 404
    Returned if the issue or remote issue link do not exist.

Updates a remote issue link from a JSON representation. Any fields not provided are set to null.

Request

Example
{"globalId":"system=http://www.mycompany.com/support&id=1","application":{"type":"com.acme.tracker","name":"My Acme Tracker"},"relationship":"causes","object":{"url":"http://www.mycompany.com/support?id=1","title":"TSTSUP-111","summary":"Crazy customer support issue","icon":{"url16x16":"http://www.mycompany.com/support/ticket.png","title":"Support Ticket"},"status":{"resolved":true,"icon":{"url16x16":"http://www.mycompany.com/support/resolved.png","title":"Case Closed","link":"http://www.mycompany.com/support?id=1&details=closed"}}}}

Responses
  • Status 204
    Returned if the remote issue link was updated successfully.
  • Status 400

    Example
    {"errorMessages":[],"errors":{"title":"'title' is required."}}

    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to update the remote issue link, or if issue linking is disabled.

Delete the remote issue link with the given id on the issue.

Responses
  • Status 204
    Returned if the remote issue link was removed successfully.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to delete the remote issue link, or if issue linking is disabled.
  • Status 404
    Returned if the issue or remote issue link do not exist.

Get a list of the transitions possible for this issue by the current user, along with fields that are required and their types.

Fields will only be returned if expand=transitions.fields.

The fields in the metadata correspond to the fields in the transition screen for that transition. Fields not in the screen will not be in the metadata.

Request
query parameters
parametertypedescription
transitionIdstring
Responses
  • Status 200 - application/json

    Example
    {"expand":"transitions","transitions":[{"id":"2","name":"Close Issue","to":{"self":"http://localhost:8090/jira/rest/api/2.0/status/10000","description":"The issue is currently being worked on.","iconUrl":"http://localhost:8090/jira/images/icons/progress.gif","name":"In Progress","id":"10000","statusCategory":{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/1","id":1,"key":"in-flight","colorName":"yellow","name":"In Progress"}},"fields":{"summary":{"required":false,"schema":{"type":"array","items":"option","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiselect","customId":10001},"name":"My Multi Select","hasDefaultValue":false,"operations":["set","add"],"allowedValues":["red","blue"]}}},{"id":"711","name":"QA Review","to":{"self":"http://localhost:8090/jira/rest/api/2.0/status/5","description":"The issue is closed.","iconUrl":"http://localhost:8090/jira/images/icons/closed.gif","name":"Closed","id":"5","statusCategory":{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/9","id":9,"key":"completed","colorName":"green"}},"fields":{"summary":{"required":false,"schema":{"type":"array","items":"option","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiselect","customId":10001},"name":"My Multi Select","hasDefaultValue":false,"operations":["set","add"],"allowedValues":["red","blue"]},"colour":{"required":false,"schema":{"type":"array","items":"option","custom":"com.atlassian.jira.plugin.system.customfieldtypes:multiselect","customId":10001},"name":"My Multi Select","hasDefaultValue":false,"operations":["set","add"],"allowedValues":["red","blue"]}}}]}

    Returns a full representation of the transitions possible for the specified issue and the fields required to perform the transition.
  • Status 404
    Returned if the requested issue is not found or the user does not have permission to view it.

Perform a transition on an issue. When performing the transition you can update or set other issue fields.

The fields that can be set on transtion, in either the fields parameter or the update parameter can be determined using the /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields resource. If a field is not configured to appear on the transition screen, then it will not be in the transition metadata, and a field validation error will occur if it is submitted.

Request

Example
{"update":{"comment":[{"add":{"body":"Bug has been fixed."}}]},"fields":{"assignee":{"name":"bob"},"resolution":{"name":"Fixed"}},"transition":{"id":"5"},"historyMetadata":{"type":"myplugin:type","description":"text description","descriptionKey":"plugin.changereason.i18.key","activityDescription":"text description","activityDescriptionKey":"plugin.activity.i18.key","actor":{"id":"tony","displayName":"Tony","type":"mysystem-user","avatarUrl":"http://mysystem/avatar/tony.jpg","url":"http://mysystem/users/tony"},"generator":{"id":"mysystem-1","type":"mysystem-application"},"cause":{"id":"myevent","type":"mysystem-event"},"extraData":{"keyvalue":"extra data","goes":"here"}}}

Responses
  • Status 204
    Returned if the transition was successful.
  • Status 400
    If there is no transition specified.
  • Status 404
    The issue does not exist or the user does not have permission to view it

Remove your vote from an issue. (i.e. "unvote")

Responses
  • Status 204
    Nothing is returned on success.
  • Status 404
    Returned if the user cannot remove a vote for any reason. (The user did not vote on the issue, the user is the reporter, voting is disabled, the issue does not exist, etc.)

Cast your vote in favour of an issue.

Responses
  • Status 204
    Nothing is returned on success.
  • Status 404
    Returned if the user cannot vote for any reason. (The user is the reporter, the user does not have permission to vote, voting is disabled in the instance, the issue does not exist, etc.)

A REST sub-resource representing the voters on the issue.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/issue/MKY-1/votes","votes":24,"hasVoted":true,"voters":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false}]}

    Information about voting on the current issue.
  • Status 404
    Returned if the user cannot view the issue in question or voting is disabled.

Returns the list of watchers for the issue with the given key.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching":false,"watchCount":1,"watchers":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}]}

    Returns the list of watchers for an issue.
  • Status 404
    Returned if the requested issue is not found, or the user does not have permission to view it.

Adds a user to an issue's watcher list.

Request

Example
"fred"

Responses
  • Status 204
    Returned if the watcher was added successfully.
  • Status 400
    Returned if there is a problem with the received user representation.
  • Status 401
    Returned if the calling user does not have permission to add the watcher to the issue's list of watchers.
  • Status 404
    Returned if either the issue or the user does not exist.

Removes a user from an issue's watcher list.

Request
query parameters
parametertypedescription
usernamestring

a String containing the name of the user to remove from the watcher list. Must not be null.

Responses
  • Status 204
    Returned if the watcher was removed successfully.
  • Status 400
    Returned if a user name query parameter is not supplied.
  • Status 401
    Returned if the calling user does not have permission to remove the watcher from the issue's list of watchers.
  • Status 404
    Returned if either the issue does not exist.

Returns all work logs for an issue.

Responses
  • Status 200 - application/json

    Example
    {"startAt":0,"maxResults":1,"total":1,"worklogs":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","visibility":{"type":"group","value":"jira-developers"},"started":"2015-07-28T04:30:31.247+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028"}]}

    returns a collection of worklogs associated with the issue, with count and pagination information.
  • Status 404
    Returned if the issue with the given id/key does not exist or if the currently authenticated user does not have permission to view it.

Adds a new worklog entry to an issue.

Request
query parameters
parametertypedescription
adjustEstimatestring

(optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are

  • "new" - sets the estimate to a specific value
  • "leave"- leaves the estimate as is
  • "manual" - specify a specific amount to increase remaining estimate by
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog

newEstimatestring

(required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. e.g. "2d"

reduceBystring

(required when "manual" is selected for adjustEstimate) the amount to reduce the remaining estimate by e.g. "2d"

Example
{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","visibility":{"type":"group","value":"jira-developers"},"started":"2015-07-28T04:30:31.247+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028"}

Responses
  • Status 201
    Returned if add was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).
  • Status 403
    Returned if the calling user does not have permission to add the worklog

Returns a specific worklog.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","visibility":{"type":"group","value":"jira-developers"},"started":"2015-07-28T04:30:31.247+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028"}

    Returned if the work log with the given id exists and the currently authenticated user has permission to view it. The returned response contains a full representation of the work log in JSON format.
  • Status 404
    Returned if the work log with the given id does not exist or if the currently authenticated user does not have permission to view it.

Updates an existing worklog entry using its JSON representation.

Request
query parameters
parametertypedescription
adjustEstimatestring

(optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are

  • "new" - sets the estimate to a specific value
  • "leave"- leaves the estimate as is
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog

newEstimatestring

(required when "new" is selected for adjustEstimate) the new value for the remaining estimate field.

Example
{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","visibility":{"type":"group","value":"jira-developers"},"started":"2015-07-28T04:30:31.247+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028"}

Responses
  • Status 200

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","visibility":{"type":"group","value":"jira-developers"},"started":"2015-07-28T04:30:31.247+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028"}

    Returned if update was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).
  • Status 403
    Returned if the calling user does not have permission to update the worklog

Deletes an existing worklog entry .

Request
query parameters
parametertypedescription
adjustEstimatestring

(optional) allows you to provide specific instructions to update the remaining time estimate of the issue. Valid values are

  • "new" - sets the estimate to a specific value
  • "leave"- leaves the estimate as is
  • "manual" - specify a specific amount to increase remaining estimate by
  • "auto"- Default option. Will automatically adjust the value based on the new timeSpent specified on the worklog

newEstimatestring

(required when "new" is selected for adjustEstimate) the new value for the remaining estimate field. e.g. "2d"

increaseBystring

(required when "manual" is selected for adjustEstimate) the amount to increase the remaining estimate by e.g. "2d"

Responses
  • Status 204
    Returned if delete was successful
  • Status 400
    Returned if the input is invalid (e.g. missing required fields, invalid values, and so forth).
  • Status 403
    Returned if the calling user does not have permission to delete the worklog

Returns the meta data for creating issues. This includes the available projects, issue types and fields, including field types and whether or not those fields are required. Projects will not be returned if the user does not have permission to create issues in that project.

The fields in the createmeta correspond to the fields in the create screen for the project/issuetype. Fields not in the screen will not be in the createmeta.

Fields will only be returned if expand=projects.issuetypes.fields.

The results can be filtered by project and/or issue type, given by the query params.

Request
query parameters
parametertypedescription
projectIdsstring

combined with the projectKeys param, lists the projects with which to filter the results. If absent, all projects are returned. This parameter can be specified multiple times, and/or be a comma-separated list. Specifiying a project that does not exist (or that you cannot create issues in) is not an error, but it will not be in the results.

projectKeysstring

combined with the projectIds param, lists the projects with which to filter the results. If null, all projects are returned. This parameter can be specified multiple times, and/or be a comma-separated list. Specifiying a project that does not exist (or that you cannot create issues in) is not an error, but it will not be in the results.

issuetypeIdsstring

combinded with issuetypeNames, lists the issue types with which to filter the results. If null, all issue types are returned. This parameter can be specified multiple times, and/or be a comma-separated list. Specifiying an issue type that does not exist is not an error.

issuetypeNamesstring

combinded with issuetypeIds, lists the issue types with which to filter the results. If null, all issue types are returned. This parameter can be specified multiple times, but is NOT interpreted as a comma-separated list. Specifiying an issue type that does not exist is not an error.

Responses
  • Status 200 - application/json

    Example
    {"expand":"projects","projects":[{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example Project","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?pid=10000&avatarId=10011","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000&avatarId=10011","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000&avatarId=10011","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000&avatarId=10011"},"issuetypes":[{"self":"http://www.example.com/jira/rest/api/2/issueType/1","id":"1","description":"An error in the code","iconUrl":"http://www.example.com/jira/images/icons/issuetypes/bug.png","name":"Bug","subtask":false,"fields":{"issuetype":{"required":true,"name":"Issue Type","hasDefaultValue":false,"operations":["set"]}}}]}]}

    Returns the meta data for creating issues.
  • Status 403
    Returned if the user does not have permission to view any of the requested projects.

Returns suggested issues which match the auto-completion query for the user which executes this request. This REST method will check the user's history and the user's browsing context and select this issues, which match the query.

Request
query parameters
parametertypedescription
querystring

the query.

currentJQLstring

the JQL in context of which the request is executed. Only issues which match this JQL query will be included in results.

currentIssueKeystring

the key of the issue in context of which the request is executed. The issue which is in context will not be included in the auto-completion result, even if it matches the query.

currentProjectIdstring

the id of the project in context of which the request is executed. Suggested issues will be only from this project.

showSubTasksboolean

if set to false, subtasks will not be included in the list.

showSubTaskParentboolean

if set to false and request is executed in context of a subtask, the parent issue will not be included in the auto-completion result, even if it matches the query.

Responses
  • Status 200 - application/json
    Returns a list of issues which match the picker parameters.

api/2/issue/{issueIdOrKey}/attachments

Issue attachments

Add one or more attachments to an issue.

This resource expects a multipart post. The media-type multipart/form-data is defined in RFC 1867. Most client libraries have classes that make dealing with multipart posts simple. For instance, in Java the Apache HTTP Components library provides a MultiPartEntity that makes it simple to submit a multipart POST.

In order to protect against XSRF attacks, because this method accepts multipart/form-data, it has XSRF protection on it. This means you must submit a header of X-Atlassian-Token: nocheck with the request, otherwise it will be blocked.

The name of the multipart/form-data parameter that contains attachments must be "file"

A simple example to upload a file called "myfile.txt" to issue REST-123:

curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" http://myhost/rest/api/2/issue/TEST-123/attachments

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.205+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"},{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10001","filename":"dbeuglog.txt","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2015-07-28T04:30:31.205+0000","size":2460,"mimeType":"text/plain","content":"http://www.example.com/jira/attachments/10001","thumbnail":"http://www.example.com/jira/secure/thumbnail/10002"}]

  • Status 403
    Returned if attachments is disabled or if you don't have permission to add attachments to this issue.
  • Status 404
    Returned if the requested issue is not found, the user does not have permission to view it, or if the attachments exceeds the maximum configured attachment size.

api/2/issue/{issueIdOrKey}/properties

Returns the keys of all properties for the issue identified by the key or by the id.

Responses
  • Status 200 - application/json

    Example
    {"keys":[{"self":"http://www.example.com/jira/rest/api/2/issue/EX-2/properties/issue.support","key":"issue.support"}]}

    Returned if the issue was found.
  • Status 400
    Returned if the issue key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to view the issue.
  • Status 404
    Returned if the issue with given key or id does not exist or if the property with given key is not found.

Removes the property from the issue identified by the key or by the id. Ths user removing the property is required to have permissions to edit the issue.

Responses
  • Status 204
    Returned if the issue property was removed successfully.
  • Status 400
    Returned if the issue key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to edit the issue.
  • Status 404
    Returned if the issue with given key or id does not exist or if the property with given key is not found.

Sets the value of the specified issue's property.

You can use this resource to store a custom data against the issue identified by the key or by the id. The user who stores the data is required to have permissions to edit the issue.

Responses
  • Status 200
    Returned if the issue property is successfully updated.
  • Status 201
    Returned if the issue property is successfully created.
  • Status 400
    Returned if the issue key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to edit the issue.
  • Status 404
    Returned if the issue with given key or id does not exist.

Returns the value of the property with a given key from the issue identified by the key or by the id. The user who retrieves the property is required to have permissions to read the issue.

Responses
  • Status 200 - application/json

    Example
    {"key":"issue.support","value":{}}

    Returned if the issue property was found.
  • Status 400
    Returned if the issue key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to view the issue.
  • Status 404
    Returned if the issue with given key or id does not exist or if the property with given key is not found.

The Link Issue Resource provides functionality to manage issue links.

Creates an issue link between two issues. The user requires the link issue permission for the issue which will be linked to another issue. The specified link type in the request is used to create the link and will create a link from the first issue to the second issue using the outward description. It also create a link from the second issue to the first issue using the inward description of the issue link type. It will add the supplied comment to the first issue. The comment can have a restriction who can view it. If group is specified, only users of this group can view this comment, if roleLevel is specified only users who have the specified role can view this comment. The user who creates the issue link needs to belong to the specified group or have the specified role.

Request

Example
{"type":{"name":"Duplicate"},"inwardIssue":{"key":"HSP-1"},"outwardIssue":{"key":"MKY-1"},"comment":{"body":"Linked related issue!","visibility":{"type":"group","value":"jira-users"}}}

Responses
  • Status 200 - application/json
    if the issue link was created successfully.
  • Status 400
    if it can't create the supplied comment. The response will contain an error message indicating why it failed to create the comment. No issue link will be created if it failed to create the comment.
  • Status 401
    if the user does not have the link issue permission for the issue, which will be linked to another issue.
  • Status 404
    If issue linking is disabled or it failed to find one of the issues (issue might exist, but it is not visible for this user) or it failed to find the specified issue link type.
  • Status 500
    if an error occurred when creating the issue link or the comment.

Returns an issue link with the specified id.

Responses
  • Status 200 - application/json

    Example
    {"id":"10001","type":{"id":"1000","name":"Duplicate","inward":"Duplicated by","outward":"Duplicates","self":"http://www.example.com/jira/rest/api/2//issueLinkType/1000"},"inwardIssue":{"id":"10004","key":"PRJ-3","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-3","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}},"outwardIssue":{"id":"10004L","key":"PRJ-2","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}

  • Status 400
    If the specified issue link id is invalid.
  • Status 401
    if the user does not have the link issue permission for the issue, which will be linked to another issue.
  • Status 404
    If issue linking is disabled or it failed to find an issue link with the specified id. Either because none exists with this id, or the user doesn't have the permission to see one of the linked issues.
  • Status 500
    if an error occurred when creating the issue link or the comment.

Deletes an issue link with the specified id. To be able to delete an issue link you must be able to view both issues and must have the link issue permission for at least one of the issues.

Responses
  • Status 200 - application/json
  • Status 204
    If it successfully deleted the issue link.
  • Status 400
    If the specified issue link id is invalid.
  • Status 401
    if the user does not have the link issue permission for the source or destination issue of the issue link.
  • Status 404
    If issue linking is disabled or it failed to find an issue link with the specified id. Either because none exists with this id, or the user doesn't have the permission to see one of the linked issues.
  • Status 500
    if an error occurred when deleting the issue link or the comment.

api/2/issueLinkType

Rest resource to retrieve a list of issue link types.

Returns a list of available issue link types, if issue linking is enabled. Each issue link type has an id, a name and a label for the outward and inward link relationship.

Responses
  • Status 200 - application/json

    Example
    {"issueLinkTypes":[{"id":"1000","name":"Duplicate","inward":"Duplicated by","outward":"Duplicates","self":"http://www.example.com/jira/rest/api/2//issueLinkType/1000"},{"id":"1010","name":"Blocks","inward":"Blocked by","outward":"Blocks","self":"http://www.example.com/jira/rest/api/2//issueLinkType/1010"}]}

    Returns a list of all available issue link types.
  • Status 404
    Returned if issue linking is disabled.

Create a new issue link type.

Request

Example
{"name":"Duplicate","inward":"Duplicated by","outward":"Duplicates"}

Responses
  • Status 201 - application/json

    Example
    {"id":"1000","name":"Duplicate","inward":"Duplicated by","outward":"Duplicates","self":"http://www.example.com/jira/rest/api/2//issueLinkType/1000"}

    The new issue link type has been created.
  • Status 404
    Issue linking is disabled or you do not have permission to create issue link types.

Returns for a given issue link type id all information about this issue link type.

Responses
  • Status 200 - application/json

    Example
    {"id":"1000","name":"Duplicate","inward":"Duplicated by","outward":"Duplicates","self":"http://www.example.com/jira/rest/api/2//issueLinkType/1000"}

    Returns the issue link type with the given id.
  • Status 404
    Returned if issue linking is disabled or no issue link type with the given id exists.

Delete the specified issue link type.

Responses
  • Status 204
  • Status 404
    Returned if issue linking is disabled or no issue link type with the given id exists.

Update the specified issue link type.

Request

Example
{"name":"Duplicate","inward":"Duplicated by","outward":"Duplicates"}

Responses
  • Status 200

    Example
    {"id":"1000","name":"Duplicate","inward":"Duplicated by","outward":"Duplicates","self":"http://www.example.com/jira/rest/api/2//issueLinkType/1000"}

  • Status 400
    Returned if the supplied id is not a number.
  • Status 404
    Returned if issue linking is disabled or no issue link type with the given id exists.

api/2/issuesecurityschemes

REST resource that allows to view security schemes defined in the product.

Returns all issue security schemes that are defined.

Responses
  • Status 200 - application/json

    Example
    {"issueSecuritySchemes":[{"self":"http://www.example.com/jira/rest/api/2/issuesecurityschemes/1000","id":1000,"name":"Default Issue Security Scheme","description":"Description for the default issue security scheme","defaultSecurityLevelId":10021}]}

    Returned if the user has the administrator permission.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have the administrator permission.

Returns the issue security scheme along with that are defined.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issuesecurityschemes/1000","id":1000,"name":"Default Issue Security Scheme","description":"Description for the default issue security scheme","defaultSecurityLevelId":10021,"levels":[{"self":"http://www.example.com/jira/rest/api/2/securitylevel/10021","id":"10021","description":"Only the reporter and internal staff can see this issue.","name":"Reporter Only"}]}

    Returned if the user has the administrator permission or if the scheme is used in a project in which the user has the administrative permission.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have the administrator permission and the scheme is not used in any project where the user has administrative permission.

api/2/issuetype

Returns a list of all issue types visible to the user

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/task.png","name":"Task","subtask":false,"avatarId":1},{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/1","id":"1","description":"A problem with the software.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/bug.png","name":"Bug","subtask":false,"avatarId":10002}]

    Returned if the issue type exists and is visible by the calling user.

Creates an issue type from a JSON representation and adds the issue newly created issue type to the default issue type scheme.

Request

Example
{"name":"name","description":"description","type":"standard"}

Responses
  • Status 201 - application/json
    Returned if the issue type was successfully created.
  • Status 400
    Returned if the request is invalid. This happens when the name is invalid or issue type is subtask on instance which has subtasks disabled.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer JIRA.
  • Status 409
    Returned if there already exists an issue type with the specified name.

Returns a full representation of the issue type that has the given id.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/task.png","name":"Task","subtask":false,"avatarId":1}

    Returned if the issue type exists and is visible by the calling user.
  • Status 404
    Returned if the issue type does not exist, or is not visible to the calling user.

Deletes the specified issue type. If the issue type has any associated issues, these issues will be migrated to the alternative issue type specified in the parameter. You can determine the alternative issue types by calling the /rest/api/2/issuetype/{id}/alternatives resource.

Request
query parameters
parametertypedescription
alternativeIssueTypeIdstring

the id of an issue type to which issues associated with the removed issue type will be migrated.

Responses
  • Status 204 - application/json
    Returned if the issue type was successfully removed.
  • Status 400
    Returned if the request is invalid. It happens when there are associated issues with the issue type which is being removed, but it is impossible to migrate these issues to the alternative issue type.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer JIRA.
  • Status 404
    Returned if the issue type which is supposed to be removed does not exist or the alternative issue type does not exist.

Updates the specified issue type from a JSON representation.

Request

Example
{"name":"name","description":"description","avatarId":1}

Responses
  • Status 200 - application/json
    Returned if the issue type was successfully updated.
  • Status 400
    Returned if the request is invalid. This happens when the name is invalid or if the avatar with given id does not exist.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer JIRA.
  • Status 404
    Returned if the issue type to update does not exist.
  • Status 409
    Returned if there already exists an issue type with the specified name.

Returns a list of all alternative issue types for the given issue type id. The list will contain these issues types, to which issues assigned to the given issue type can be migrated. The suitable alternatives are issue types which are assigned to the same workflow, the same field configuration and the same screen scheme.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/task.png","name":"Task","subtask":false,"avatarId":1},{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/1","id":"1","description":"A problem with the software.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/bug.png","name":"Bug","subtask":false,"avatarId":10002}]

    Returned if the issue type exists and is visible by the calling user.
  • Status 404
    Returned if the issue type does not exist, or is not visible to the calling user.

Converts temporary avatar into a real avatar

Request

Example
{"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"needsCropping":false}

Responses
  • Status 201 - application/json

    Example
    {"id":"1000","owner":"fred","isSystemAvatar":true,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10040","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10040","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10040","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10040"},"selected":false}

    Returns created avatar
  • Status 400
    Returned if the cropping coordinates are invalid
  • Status 403
    Returned if the currently authenticated user does not have permission to pick avatar
  • Status 404
    Returned if the currently authenticated user does not have EDIT PROJECT permission.
  • Status 500
    Returned if an error occurs while converting temporary avatar to real avatar

Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from which the client parses the JSON from.

Creating a temporary avatar is part of a 3-step process in uploading a new avatar for an issue type: upload, crop, confirm. This endpoint allows you to use a multipart upload instead of sending the image directly as the request body.

You *must* use "avatar" as the name of the upload parameter:

 curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
   -F "avatar=@mynewavatar.png;type=image/png" \
   'http://localhost:8090/jira/rest/api/2/issuetype/1/avatar/temporary'
 

Responses
  • Status 201 - text/html

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions embeded in HTML page. Error messages will also be embeded in the page.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer JIRA.
  • Status 404
    Returned if the issue type to update does not exist or if the request does not contain valid XSRF token.

Creates temporary avatar. Creating a temporary avatar is part of a 3-step process in uploading a new avatar for an issue type: upload, crop, confirm.

The following examples shows these three steps using curl. The cookies (session) need to be preserved between requests, hence the use of -b and -c. The id created in step 2 needs to be passed to step 3 (you can simply pass the whole response of step 2 as the request of step 3).

 curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
   -H "Content-Type: image/png" --data-binary @mynewavatar.png \
   'http://localhost:8090/jira/rest/api/2/issuetype/1/avatar/temporary?filename=mynewavatar.png'

 curl -b cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
   -H "Content-Type: application/json" --data '{"cropperWidth": "65","cropperOffsetX": "10","cropperOffsetY": "16"}' \
   -o tmpid.json \
   http://localhost:8090/jira/rest/api/2/issuetype/1/avatar

 curl -b cookiejar.txt -X PUT -u admin:admin -H "X-Atlassian-Token: no-check" \
   -H "Content-Type: application/json" --data-binary @tmpid.json \
   http://localhost:8090/jira/rest/api/2/issuetype/1/avatar
 

Request
query parameters
parametertypedescription
filenamestring

name of file being uploaded

sizelong

size of file

Responses
  • Status 201 - application/json

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer JIRA.
  • Status 404
    Returned if the issue type to update does not exist or if the request does not contain valid XSRF token.

api/2/issuetype/{issueTypeId}/properties

This resource allows to store custom properties for issue types.

Returns the keys of all properties for the issue type identified by the id.

Responses
  • Status 200 - application/json

    Example
    {"keys":[{"self":"http://www.example.com/jira/rest/api/2/issue/EX-2/properties/issue.support","key":"issue.support"}]}

    Returned if the issue type was found.
  • Status 400
    Returned if the issue type id is invalid.
  • Status 404
    Returned if the issue type with given id does not exist or if the user does not have permissions to view this issue type.

Removes the property from the issue type identified by the id. Ths user removing the property is required to have permissions to edit the issue type.

Responses
  • Status 204
    Returned if the issue type property was removed successfully.
  • Status 400
    Returned if the issue type id is invalid.
  • Status 404
    Returned if the issue type with given id does not exist or if the property with given key is not found.

Sets the value of the specified issue type's property.

You can use this resource to store a custom data against an issue type identified by the id. The user who stores the data is required to have permissions to edit an issue type.

Responses
  • Status 200
    Returned if the issue type property is successfully updated.
  • Status 201
    Returned if the issue type property is successfully created.
  • Status 400
    Returned if the issue type id is invalid.
  • Status 404
    Returned if the issue type with given id does not exist or if the user does not have permissions to edit this issue type.

Returns the value of the property with a given key from the issue type identified by the id. The user who retrieves the property is required to have permissions to view the issue type.

Responses
  • Status 200 - application/json

    Example
    {"key":"issue.support","value":{}}

    Returned if the issue type property was found.
  • Status 400
    Returned if the issue type id is invalid.
  • Status 404
    Returned if the issue type with given id does not exist or if the user does not have permissions to view this issue type.

api/2/jql/autocompletedata

Resource for auto complete data for searches.

Returns the auto complete data required for JQL searches.

Responses
  • Status 200 - application/json

    Example
    "{\"visibleFieldNames\": [{\"value\":\"affectedVersion\",\"displayName\":\"affectedVersion\",\"auto\":\"true\",\"orderable\":\"true\",\"searchable\":\"true\",\"operators\":[\"=\",\"!=\",\"in\",\"not in\",\"is\",\"is not\",\"<\",\"<=\",\">\",\">=\"],\"types\":[\"com.atlassian.jira.project.version.Version\"]},{\"value\":\"assignee\",\"displayName\":\"assignee\",\"auto\":\"true\",\"orderable\":\"true\",\"searchable\":\"true\",\"operators\":[\"!=\",\"was not in\",\"not in\",\"was not\",\"is\",\"was in\",\"was\",\"=\",\"in\",\"changed\",\"is not\"],\"types\":[\"com.atlassian.crowd.embedded.api.User\"]}],\"visibleFunctionNames\": {\"value\":\"currentLogin()\",\"displayName\":\"currentLogin()\",\"types\":[\"java.util.Date\"]},{\"value\":\"currentUser()\",\"displayName\":\"currentUser()\",\"types\":[\"com.atlassian.crowd.embedded.api.User\"]}],\"jqlReservedWords\": \"empty\",\"and\",\"or\",\"in\",\"distinct\"]}"

    The auto complete data required for JQL searches.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 500
    Returned if an error occurs while generating the response.

Returns auto complete suggestions for JQL search.

Request
query parameters
parametertypedescription
fieldNamestring

the field name for which the suggestions are generated.

fieldValuestring

the portion of the field value that has already been provided by the user.

predicateNamestring

the predicate for which the suggestions are generated. Suggestions are generated only for: "by", "from" and "to".

predicateValuestring

the portion of the predicate value that has already been provided by the user.

Responses
  • Status 200 - application/json

    Example
    {"results":[{"value":"ActiveObjects","displayName":"<b>Ac</b>tiveObjects (AO)"},{"value":"Atlassian Connect","displayName":"Atlassian Connect (<b>AC</b>)"},{"value":"Atlassian Connect in JIRA","displayName":"Atlassian Connect in JIRA (<b>AC</b>JIRA)"}]}

    The autocompletion suggestions for JQL search.

api/2/licenseValidator

A REST endpoint to provide simple validation services for a JIRA license. Typically used by the setup phase of the JIRA application. This will return an object with a list of errors as key, value pairs.Show more
Request
Responses
  • application/json

api/2/mypreferences

Provide preferences of the currently logged in user.

Returns preference of the currently logged in user. Preference key must be provided as input parameter (key). The value is returned exactly as it is. If key parameter is not provided or wrong - status code 404. If value is found - status code 200.

Request
query parameters
parametertypedescription
keystring

- key of the preference to be returned.

Responses
  • application/json

Sets preference of the currently logged in user. Preference key must be provided as input parameters (key). Value must be provided as post body. If key or value parameter is not provided - status code 404. If preference is set - status code 204.

Request
query parameters
parametertypedescription
keystring

- key of the preference to be set.

Responses
  • application/json

Removes preference of the currently logged in user. Preference key must be provided as input parameters (key). If key parameter is not provided or wrong - status code 404. If preference is unset - status code 204.

Request
query parameters
parametertypedescription
keystring

- key of the preference to be removed.

Responses
  • application/json

api/2/myself

Currently logged user resource

Returns currently logged user. This resource cannot be accessed anonymously.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[{"name":"jira-user","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-user"},{"name":"jira-admin","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-admin"},{"name":"important","self":"http://www.example.com/jira/rest/api/2/group?groupname=important"}]},"applicationRoles":{"size":1,"items":[]},"expand":"groups,applicationRoles"}

    Returns a full representation of a JIRA user in JSON format.
  • Status 401
    Returned if the current user is not authenticated.

Modify currently logged user. The "value" fields present will override the existing value. Fields skipped in request will not be changed. Only email and display name can be change that way. Requires user password.

Request

Example
{"password":"abracadabra","emailAddress":"eddie@atlassian.com","displayName":"Eddie of Atlassian"}

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jirahttp://www.example.com/jira/rest/api/2/user/charlie","key":"charlie","name":"eddie","emailAddress":"eddie@atlassian.com","displayName":"Eddie of Atlassian"}

    Returned if the user exists and the caller has permission to edit it.
  • Status 400
    Returned if the request is invalid including incorrect password.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the directory is read-only.
  • Status 404
    Returned if the the user could not be found.

Modify caller password.

Request

Example
{"password":"new password","currentPassword":"current password"}

Responses
  • Status 204
    Returned if the user exists and the caller has permission to edit it.
  • Status 400
    Returned if new password is incorrect/missing or current password is incorrect.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the directory is read-only.
  • Status 404
    Returned if the caller does have permission to change user password but the user does not exist.

api/2/notificationscheme

Returns a paginated list of notification schemes. In order to access notification scheme, the calling user is required to have permissions to administer at least one project associated with the requested notification scheme. Each scheme contains a list of events and recipient configured to receive notifications for these events. Consumer should allow events without recipients to appear in response. The list is ordered by the scheme's name. Follow the documentation of /notificationscheme/{id} resource for all details about returned value.

Request
query parameters
parametertypedescription
startAtint

the index of the first notification scheme to return (0 based).

maxResultsint

the maximum number of notification schemes to return (max 50).

expandstring
Responses
  • Status 200 - application/json

    Example
    {"maxResults":1,"startAt":5,"total":6,"values":[{"expand":"notificationSchemeEvents,user,group,projectRole,field,all","id":10100,"self":"http://example.com/jira/rest/api/2/notificationscheme/10010","name":"notification scheme name","description":"description","notificationSchemeEvents":[{"event":{"id":1,"name":"Issue created","description":"Event published when issue is created"},"notifications":[{"id":1,"notificationType":"Group","parameter":"jira-administrators","group":{"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators"},"expand":"group"},{"id":2,"notificationType":"CurrentAssignee"},{"id":3,"notificationType":"ProjectRole","parameter":"10360","projectRole":{"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]},"expand":"projectRole"},{"id":4,"notificationType":"EmailAddress","parameter":"rest-developer@atlassian.com","emailAddress":"rest-developer@atlassian.com"},{"id":5,"notificationType":"User","user":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"expand":"user"},{"id":6,"notificationType":"GroupCustomField","parameter":"customfield_10101","field":{"id":"customfield_10101","name":"New custom field","custom":true,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["cf[10101]","New custom field"],"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10101}},"expand":"field"}]},{"event":{"id":20,"name":"Custom event","description":"Custom event which is published together with issue created event","templateEvent":{"id":1,"name":"Issue created","description":"Event published when issue is created"}},"notifications":[{"id":1,"notificationType":"Group","parameter":"jira-administrators","group":{"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators"},"expand":"group"},{"id":2,"notificationType":"CurrentAssignee"},{"id":3,"notificationType":"ProjectRole","parameter":"10360","projectRole":{"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]},"expand":"projectRole"},{"id":4,"notificationType":"EmailAddress","parameter":"rest-developer@atlassian.com","emailAddress":"rest-developer@atlassian.com"},{"id":5,"notificationType":"User","user":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"expand":"user"},{"id":6,"notificationType":"GroupCustomField","parameter":"customfield_10101","field":{"id":"customfield_10101","name":"New custom field","custom":true,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["cf[10101]","New custom field"],"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10101}},"expand":"field"}]}]}]}

    Paginated list of notification schemes to which the user has permissions.

Returns a full representation of the notification scheme for the given id. This resource will return a notification scheme containing a list of events and recipient configured to receive notifications for these events. Consumer should allow events without recipients to appear in response. User accessing the data is required to have permissions to administer at least one project associated with the requested notification scheme.

Notification recipients can be:

  • current assignee - the value of the notificationType is CurrentAssignee
  • issue reporter - the value of the notificationType is Reporter
  • current user - the value of the notificationType is CurrentUser
  • project lead - the value of the notificationType is ProjectLead
  • component lead - the value of the notificationType is ComponentLead
  • all watchers - the value of the notification type is AllWatchers
  • configured user - the value of the notification type is User. Parameter will contain key of the user. Information about the user will be provided if user expand parameter is used.
  • configured group - the value of the notification type is Group. Parameter will contain name of the group. Information about the group will be provided if group expand parameter is used.
  • configured email address - the value of the notification type is EmailAddress, additionally information about the email will be provided.
  • users or users in groups in the configured custom fields - the value of the notification type is UserCustomField or GroupCustomField. Parameter will contain id of the custom field. Information about the field will be provided if field expand parameter is used.
  • configured project role - the value of the notification type is ProjectRole. Parameter will contain project role id. Information about the project role will be provided if projectRole expand parameter is used.
Please see the example for reference.

The events can be JIRA system events or events configured by administrator. In case of the system events, data about theirs ids, names and descriptions is provided. In case of custom events, the template event is included as well.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"expand":"notificationSchemeEvents,user,group,projectRole,field,all","id":10100,"self":"http://example.com/jira/rest/api/2/notificationscheme/10010","name":"notification scheme name","description":"description","notificationSchemeEvents":[{"event":{"id":1,"name":"Issue created","description":"Event published when issue is created"},"notifications":[{"id":1,"notificationType":"Group","parameter":"jira-administrators","group":{"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators"},"expand":"group"},{"id":2,"notificationType":"CurrentAssignee"},{"id":3,"notificationType":"ProjectRole","parameter":"10360","projectRole":{"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]},"expand":"projectRole"},{"id":4,"notificationType":"EmailAddress","parameter":"rest-developer@atlassian.com","emailAddress":"rest-developer@atlassian.com"},{"id":5,"notificationType":"User","user":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"expand":"user"},{"id":6,"notificationType":"GroupCustomField","parameter":"customfield_10101","field":{"id":"customfield_10101","name":"New custom field","custom":true,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["cf[10101]","New custom field"],"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10101}},"expand":"field"}]},{"event":{"id":20,"name":"Custom event","description":"Custom event which is published together with issue created event","templateEvent":{"id":1,"name":"Issue created","description":"Event published when issue is created"}},"notifications":[{"id":1,"notificationType":"Group","parameter":"jira-administrators","group":{"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators"},"expand":"group"},{"id":2,"notificationType":"CurrentAssignee"},{"id":3,"notificationType":"ProjectRole","parameter":"10360","projectRole":{"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]},"expand":"projectRole"},{"id":4,"notificationType":"EmailAddress","parameter":"rest-developer@atlassian.com","emailAddress":"rest-developer@atlassian.com"},{"id":5,"notificationType":"User","user":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"expand":"user"},{"id":6,"notificationType":"GroupCustomField","parameter":"customfield_10101","field":{"id":"customfield_10101","name":"New custom field","custom":true,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["cf[10101]","New custom field"],"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10101}},"expand":"field"}]}]}

    Returned if the notification scheme exists and is visible for the calling user
  • Status 404
    Returned if the notification scheme does not exist, or is not visible to the calling user

api/2/password

REST resource for operations related to passwords and the password policy.

Returns user-friendly statements governing the system's password policy.

Request
query parameters
parametertypedescription
hasOldPasswordboolean

Default: false

whether or not the user will be required to enter their current password. Use {@code false} (the default) if this is a new user or if an administrator is forcibly changing another user's password.

Responses
  • Status 200 - application/json
    Returns an array of message strings.

Returns user-friendly explanations of why the password policy would disallow a proposed user from being created.

This is a "dry run" of the password policy validation that would be performed by the various user creation methods in {@link com.atlassian.jira.bc.user.UserService}. The intended use is for a user interface to verify the password on the fly as the user enters it (or upon moving to another input field or delaying for some time period, and so on). At the very least, the username and password must be non-empty to run these validations. Note that this validation is only for the password policy itself; other validations, such as whether or not a user with the same name already exists, are not checked by this request.

Request

Example
{"username":"fred","displayName":"Fred Normal","emailAddress":"fred@example.com","password":"secret"}

Responses
  • Status 200 - application/json
    Returns an array of message strings.
  • Status 400
    Returned if the request is invalid, such as if the username or password is left unspecified.

Returns user-friendly explanations of why the password policy would disallow an existing user's password from being updated.

This is a "dry run" of the password policy validation that would be performed by the various ways to update a user's password, such as the {@link com.atlassian.jira.web.action.user.ChangePassword ChangePassword} and {@link com.atlassian.jira.web.action.user.ResetPassword ResetPassword} web actions. The intended use is for a user interface to verify the password on the fly as the user enters it (or upon moving to another input field or delaying for some time period, and so on). At the very least, the username and new password must be non-empty to run these validations, and the user must actually exist. Note that this validation is only for the password policy itself; other validations that would be performed upon submitting the request are not checked by this request. In particular, the old password (if specified) is deliberately not verified by this request, as doing so could cause security problems.

Request

Example
{"username":"fred","oldPassword":"secret","newPassword":"correcthorsebatterystaple"}

Responses
  • Status 200 - application/json
    Returns an array of message strings.
  • Status 400
    Returned if the request is invalid, such as if the username or new password is left unspecified.
  • Status 404
    Returned if the username does not correspond to any existing user.

api/2/permissionscheme

Resource for managing permission schemes.

Permission scheme is a collection of permission grants. Each grant holds information about a permission granted to a group of users. These groups of users are called holders and are defined by two values: type and parameter. Type can be for example "group", or "user" and parameter is an additional specification. In case of groups the parameter will hold the group name, and in case of users: user id.

Types can be extended by plugins, but here is a list of all built-in types (expected parameter contents are given in parenthesis):

anyone
Grant for anonymous users.
group (group name)
Grant for the specified group
user (user id)
Grant for the specified user
projectRole (project role id)
Grant for the specified project role
reporter
Grant for an issue reported
projectLead
Grant for a project lead
assignee
Grant for a user assigned to an issue
userCustomField (custom field id)
Grant for a user selected in the specified custom field
groupCustomField (custom field id)
Grant for a user selected in the specified custom field

There are also two "hidden" holder types, which are not available in on-demand but can be used in enterprise instances:

reporterWithCreatePermission
This type can be used only with BROWSE_PROJECTS permission to show only projects where the user has create permission and issues within that where they are the reporter.
assigneeWithAssignablePermission
This type can be used only with BROWSE_PROJECTS permission to show only projects where the user has the assignable permission and issues within that where they are the assignee.

In addition to specifying the permission holder, a permission must be selected. That way a pair of (holder, permission) is created and it represents a single permission grant.

Custom permissions can be added by plugins, but below we present a set of built-in JIRA permissions.

  • ADMINISTER_PROJECTS
  • BROWSE_PROJECTS
  • VIEW_DEV_TOOLS
  • VIEW_READONLY_WORKFLOW
  • CREATE_ISSUES
  • EDIT_ISSUES
  • TRANSITION_ISSUES
  • SCHEDULE_ISSUES
  • MOVE_ISSUES
  • ASSIGN_ISSUES
  • ASSIGNABLE_USER
  • RESOLVE_ISSUES
  • CLOSE_ISSUES
  • MODIFY_REPORTER
  • DELETE_ISSUES
  • LINK_ISSUES
  • SET_ISSUE_SECURITY
  • VIEW_VOTERS_AND_WATCHERS
  • MANAGE_WATCHERS
  • ADD_COMMENTS
  • EDIT_ALL_COMMENTS
  • EDIT_OWN_COMMENTS
  • DELETE_ALL_COMMENTS
  • DELETE_OWN_COMMENTS
  • CREATE_ATTACHMENTS
  • DELETE_ALL_ATTACHMENTS
  • DELETE_OWN_ATTACHMENTS
  • WORK_ON_ISSUES
  • EDIT_OWN_WORKLOGS
  • EDIT_ALL_WORKLOGS
  • DELETE_OWN_WORKLOGS
  • DELETE_ALL_WORKLOGS

Show more

Returns a list of all permission schemes.

By default only shortened beans are returned. If you want to include permissions of all the schemes, then specify the permissions expand parameter. Permissions will be included also if you specify any other expand parameter.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"permissionSchemes":[{"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/10000","name":"Example permission scheme","description":"description"}]}

    Returned if successful.
  • Status 401
    Returned if user is not logged in.
  • Status 403
    Returned if user is not allowed to view permission schemes.

Create a new permission scheme. This method can create schemes with a defined permission set, or without.

Request
query parameters
parametertypedescription
expandstring

Example
{"name":"Example permission scheme","description":"description","permissions":[{"holder":{"type":"group","parameter":"jira-developers"},"permission":"ADMINISTER_PROJECTS"}]}

Responses
  • Status 201 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/10000","name":"Example permission scheme","description":"description","permissions":[{"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/permission/10000","holder":{"type":"group","parameter":"jira-developers","expand":"group"},"permission":"ADMINISTER_PROJECTS"}]}

    Returned if the scheme is created successfully.
  • Status 401
    Returned if the user is not logged.
  • Status 403
    Returned if the user is not allowed to create permission schemes.

Returns a permission scheme identified by the given id.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/10000","name":"Example permission scheme","description":"description","permissions":[{"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/permission/10000","holder":{"type":"group","parameter":"jira-developers","expand":"group"},"permission":"ADMINISTER_PROJECTS"}]}

    Returned if successful.
  • Status 401
    Returned if user is not logged in.
  • Status 403
    Returned if user is not allowed to view permission schemes.
  • Status 404
    Returned if the scheme doesn't exist.

Deletes a permission scheme identified by the given id.

Responses
  • Status 204 - application/json
    Returned if the permission scheme is successfully deleted.
  • Status 401
    Returned if user is not logged in.
  • Status 403
    Returned if user is not allowed to delete permission schemes.

Updates a permission scheme.

If the permissions list is present then it will be set in the permission scheme, which basically means it will overwrite any permission grants that existed in the permission scheme. Sending an empty list will remove all permission grants from the permission scheme.

To update just the name and description, do not send permissions list at all.

To add or remove a single permission grant instead of updating the whole list at once use the {schemeId}/permission/ resource.

Request
query parameters
parametertypedescription
expandstring

Example
{"name":"Example permission scheme","description":"description","permissions":[{"holder":{"type":"group","parameter":"jira-developers"},"permission":"ADMINISTER_PROJECTS"}]}

Responses
  • Status 201 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/10000","name":"Example permission scheme","description":"description","permissions":[{"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/permission/10000","holder":{"type":"group","parameter":"jira-developers","expand":"group"},"permission":"ADMINISTER_PROJECTS"}]}

    Returned if the scheme is updated successfully.
  • Status 401
    Returned if the user is not logged.
  • Status 403
    Returned if the user is not allowed to edit permission schemes.
  • Status 404
    Returned if the permission is not found.

Creates a permission grant in a permission scheme.

Request
query parameters
parametertypedescription
expandstring

Example
{"holder":{"type":"group","parameter":"jira-developers"},"permission":"ADMINISTER_PROJECTS"}

Responses
  • Status 201 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/permission/10000","holder":{"type":"group","parameter":"jira-developers","expand":"group"},"permission":"ADMINISTER_PROJECTS"}

    Returned if the scheme permission is created successfully.
  • Status 401
    Returned if the user is not logged.
  • Status 403
    Returned if the user is not allowed to edit permission schemes.

Returns all permission grants of the given permission scheme.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"permissions":[{"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/permission/10000","holder":{"type":"group","parameter":"jira-developers","expand":"group"},"permission":"ADMINISTER_PROJECTS"}],"expand":"user,group,projectRole,field,all"}

    Returned if successful.
  • Status 401
    Returned if user is not logged in.
  • Status 403
    Returned if user is not allowed to view permission schemes.

Deletes a permission grant from a permission scheme.

Responses
  • Status 204 - application/json
    Returned if the permission grant is deleted successfully.
  • Status 401
    Returned if the user is not logged.
  • Status 403
    Returned if the user is not allowed to edit permission schemes.

Returns a permission grant identified by the given id.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/permission/10000","holder":{"type":"group","parameter":"jira-developers","expand":"group"},"permission":"ADMINISTER_PROJECTS"}

    Returned if successful.
  • Status 401
    Returned if user is not logged in.
  • Status 403
    Returned if user is not allowed to view permission schemes.

api/2/priority

Returns a list of all issue priorities.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/priority/3","statusColor":"#009900","description":"Major loss of function.","iconUrl":"http://www.example.com/jira/images/icons/priorities/major.png","name":"Major"},{"self":"http://www.example.com/jira/rest/api/2/priority/5","statusColor":"#cfcfcf","description":"Very little impact.","iconUrl":"http://www.example.com/jira/images/icons/priorities/trivial.png","name":"Trivial"}]

    Returned if the priorities exists and the user has permission to view it. Contains a full representation of the priority in JSON format.

Returns an issue priority.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/priority/3","statusColor":"#009900","description":"Major loss of function.","iconUrl":"http://www.example.com/jira/images/icons/priorities/major.png","name":"Major"}

    Returned if the issue priority exists and is visible by the calling user. Contains a full representation of the issue priority in JSON.
  • Status 404
    Returned if the issue priority does not exist or is not visible to the calling user.

api/2/project

Creates a new project.

Request

Example
{"key":"EX","name":"Example","projectTypeKey":"business","projectTemplateKey":"com.atlassian.jira-legacy-project-templates:jira-blank-item","description":"Example Project description","lead":"Charlie","url":"http://atlassian.com","assigneeType":"PROJECT_LEAD","avatarId":10200,"issueSecurityScheme":10001,"permissionScheme":10011,"notificationScheme":10021,"categoryId":10120}

Responses
  • Status 201 - application/json

    Example
    {"self":"http://example/jira/rest/api/2/project/10042","id":10010,"key":"EX"}

    Returned if the project creation was successful.
  • Status 400
    Returned if the request is not valid and the project could not be created.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have rights to create projects.

Returns all projects which are visible for the currently logged in user. If no user is logged in, it returns the list of projects that are visible when using anonymous access.

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

recentint

if this parameter is set then only projects recently accessed by the current user (if not logged in then based on HTTP session) will be returned (maximum count limited to the specified number but no more than 20).

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}},{"self":"http://www.example.com/jira/rest/api/2/project/ABC","id":"10001","key":"ABC","name":"Alphabetical","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10001","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10001","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10001","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10001"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}}]

    Returns a list of projects for which the user has the BROWSE, ADMINISTER or PROJECT_ADMIN project permission.

Contains a full representation of a project in JSON format.

All project keys associated with the project will only be returned if expand=projectKeys.

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

Responses
  • Status 200 - application/json

    Example
    {"expand":"description,lead,url,projectKeys","self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","description":"This project was created as an example for REST.","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"components":[{"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10000","name":"Component 1","description":"This is a JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"HSP","projectId":10000}],"issueTypes":[{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/task.png","name":"Task","subtask":false,"avatarId":1},{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/1","id":"1","description":"A problem with the software.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/bug.png","name":"Bug","subtask":false,"avatarId":10002}],"url":"http://www.example.com/jira/browse/EX","email":"from-jira@example.com","assigneeType":"PROJECT_LEAD","versions":[],"name":"Example","roles":{"Developers":"http://www.example.com/jira/rest/api/2/project/EX/role/10000"},"avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}}

    Returned if the project exists and the user has permission to view it. Contains a full representation of a project in JSON format.
  • Status 404
    Returned if the project is not found, or the calling user does not have permission to view it.

Updates a project.

Only non null values sent in JSON will be updated in the project.

Values available for the assigneeType field are: "PROJECT_LEAD" and "UNASSIGNED".

Request
query parameters
parametertypedescription
expandstring

the parameters to expand in returned project

Example
{"key":"EX","name":"Example","projectTypeKey":"business","projectTemplateKey":"com.atlassian.jira-legacy-project-templates:jira-blank-item","description":"Example Project description","lead":"Charlie","url":"http://atlassian.com","assigneeType":"PROJECT_LEAD","avatarId":10200,"issueSecurityScheme":10001,"permissionScheme":10011,"notificationScheme":10021,"categoryId":10120}

Responses
  • Status 201 - application/json

    Example
    {"expand":"description,lead,url,projectKeys","self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","description":"This project was created as an example for REST.","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"components":[{"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10000","name":"Component 1","description":"This is a JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"HSP","projectId":10000}],"issueTypes":[{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/task.png","name":"Task","subtask":false,"avatarId":1},{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/1","id":"1","description":"A problem with the software.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/bug.png","name":"Bug","subtask":false,"avatarId":10002}],"url":"http://www.example.com/jira/browse/EX","email":"from-jira@example.com","assigneeType":"PROJECT_LEAD","versions":[],"name":"Example","roles":{"Developers":"http://www.example.com/jira/rest/api/2/project/EX/role/10000"},"avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}}

    Returned if the project update was successful.
  • Status 400
    Returned if the request is not valid and the project could not be updated.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have rights to update projects.
  • Status 404
    Returned if the project does not exist.

Deletes a project.

Responses
  • Status 204 - application/json
    Returned if the project is successfully deleted.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the currently authenticated user does not have permission to delete the project.
  • Status 404
    Returned if the project does not exist.

Converts temporary avatar into a real avatar

Request

Example
{"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"needsCropping":false}

Responses
  • Status 201 - application/json

    Example
    {"id":"1000","owner":"fred","isSystemAvatar":true,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10040","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10040","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10040","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10040"},"selected":false}

    Returns created avatar
  • Status 400
    Returned if the cropping coordinates are invalid
  • Status 403
    Returned if the currently authenticated user does not have permission to pick avatar
  • Status 404
    Returned if the currently authenticated user does not have EDIT PROJECT permission.
Request
Responses
  • application/json

Deletes avatar

Responses
  • Status 204 - application/json
    Returned if the avatar is successfully deleted.
  • Status 403
    Returned if the currently authenticated user does not have permission to delete the component.
  • Status 404
    Returned if the avatar does not exist or the currently authenticated user does not have permission to delete it.

Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from which the client parses the JSON.

Responses
  • Status 201 - text/html

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions embeded in HTML page. Error messages will also be embeded in the page.
  • Status 404
    Returned if the currently authenticated user does not have EDIT PROJECT permission.

Creates temporary avatar

Request
query parameters
parametertypedescription
filenamestring

name of file being uploaded

sizelong

size of file

Responses
  • Status 201 - application/json

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions
  • Status 400
    Validation failed. For example filesize is beyond max attachment size.
  • Status 403
    Returned if the request does not contain a valid XSRF token
  • Status 404
    Returned if the currently authenticated user does not have EDIT PROJECT permission.

Returns all avatars which are visible for the currently logged in user. The avatars are grouped into system and custom.

Responses
  • Status 200 - application/json

    Example
    {"system":[{"id":"1000","owner":"fred","isSystemAvatar":true,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10040","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10040","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10040","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10040"},"selected":false}],"custom":[{"id":"1010","owner":"andrew","isSystemAvatar":false,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10080","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10080","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10080","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10080"},"selected":false}]}

    Returns a map containing a list of avatars for both custom an system avatars, which the user has the BROWSE project permission.
  • Status 404
    Returned if the currently authenticated user does not have VIEW PROJECT permission.

Contains a full representation of a the specified project's components.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10000","name":"Component 1","description":"This is a JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"HSP","projectId":10000},{"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10050","name":"PXA","description":"This is a another JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"PROJECTKEY","projectId":10000}]

    Returned if the project exists and the user has permission to view its components. Contains a full representation of the project's components in JSON format.
  • Status 404
    Returned if the project is not found, or the calling user does not have permission to view it.

Get all issue types with valid status values for a project

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","name":"Task","subtask":false,"statuses":[{"self":"http://localhost:8090/jira/rest/api/2.0/status/10000","description":"The issue is currently being worked on.","iconUrl":"http://localhost:8090/jira/images/icons/progress.gif","name":"In Progress","id":"10000"},{"self":"http://localhost:8090/jira/rest/api/2.0/status/5","description":"The issue is closed.","iconUrl":"http://localhost:8090/jira/images/icons/closed.gif","name":"Closed","id":"5"}]}]

    Returned if the project exists and the user has permission to view its components. Contains a full representation of issue types with status values which are valid for each issue type.
  • Status 400
    Returned if the project is not found, or the calling user does not have permission to view it.

Updates the type of a project.

Responses
  • Status 200 - application/json

    Example
    {"expand":"description,lead,url,projectKeys","self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","description":"This project was created as an example for REST.","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"components":[{"self":"http://www.example.com/jira/rest/api/2/component/10000","id":"10000","name":"Component 1","description":"This is a JIRA component","lead":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"assigneeType":"PROJECT_LEAD","assignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"realAssigneeType":"PROJECT_LEAD","realAssignee":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"isAssigneeTypeValid":false,"project":"HSP","projectId":10000}],"issueTypes":[{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/task.png","name":"Task","subtask":false,"avatarId":1},{"self":"http://localhost:8090/jira/rest/api/2.0/issueType/1","id":"1","description":"A problem with the software.","iconUrl":"http://localhost:8090/jira/images/icons/issuetypes/bug.png","name":"Bug","subtask":false,"avatarId":10002}],"url":"http://www.example.com/jira/browse/EX","email":"from-jira@example.com","assigneeType":"PROJECT_LEAD","versions":[],"name":"Example","roles":{"Developers":"http://www.example.com/jira/rest/api/2/project/EX/role/10000"},"avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}}

    Returned if the update to the project type was successful.
  • Status 400
    Returned if the request is not valid and the project type could not be updated.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have rights to update projects.
  • Status 404
    Returned if the project does not exist.

Contains a full representation of a the specified project's versions.

Request
query parameters
parametertypedescription
expandstring

the parameters to expand

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/version/10000","id":"10000","description":"An excellent version","name":"New Version 1","archived":false,"released":true,"releaseDate":"2010-07-06","overdue":true,"userReleaseDate":"6/Jul/2010","projectId":10000},{"self":"http://www.example.com/jira/rest/api/2/version/10010","id":"10010","description":"Minor Bugfix version","name":"Next Version","archived":false,"released":false,"overdue":false,"projectId":10000}]

    Returned if the project exists and the user has permission to view its versions. Contains a full representation of the project's versions in JSON format.
  • Status 404
    Returned if the project is not found, or the calling user does not have permission to view it.

api/2/project/{projectIdOrKey}/properties

Returns the keys of all properties for the project identified by the key or by the id.

Responses
  • Status 200 - application/json

    Example
    {"keys":[{"self":"http://www.example.com/jira/rest/api/2/issue/EX-2/properties/issue.support","key":"issue.support"}]}

    Returned if the project was found.
  • Status 400
    Returned if the project key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to browse the project.
  • Status 404
    Returned if the project with given key or id does not exist or if the property with given key is not found.

Removes the property from the project identified by the key or by the id. Ths user removing the property is required to have permissions to administer the project.

Responses
  • Status 204
    Returned if the project property was removed successfully.
  • Status 400
    Returned if the project key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to edit the project.
  • Status 404
    Returned if the project with given key or id does not exist or if the property with given key is not found.

Sets the value of the specified project's property.

You can use this resource to store a custom data against the project identified by the key or by the id. The user who stores the data is required to have permissions to administer the project.

Responses
  • Status 200
    Returned if the project property is successfully updated.
  • Status 201
    Returned if the project property is successfully created.
  • Status 400
    Returned if the project key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer the project.
  • Status 404
    Returned if the project with given key or id does not exist.

Returns the value of the property with a given key from the project identified by the key or by the id. The user who retrieves the property is required to have permissions to read the project.

Responses
  • Status 200 - application/json

    Example
    {"key":"issue.support","value":{}}

    Returned if the project property was found.
  • Status 400
    Returned if the project key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to browse the project.
  • Status 404
    Returned if the project with given key or id does not exist or if the property with given key is not found.

api/2/project/{projectIdOrKey}/role

Contains a list of roles in this project with links to full details.

Responses
  • Status 200 - application/json

    Example
    {"Administrators":"http://www.example.com/jira/rest/api/2/project/MKY/role/10002","Users":"http://www.example.com/jira/rest/api/2/project/MKY/role/10001","Developers":"http://www.example.com/jira/rest/api/2/project/MKY/role/10000"}

    Returned if the project exists and the user has permission to view it. A maps of roles to URIs containing full details for that role.
  • Status 404
    Returned if the project is not found, or the calling user does not have permission to view it.

Updates a project role to contain the sent actors.

Request

Example
{ "user" : ["admin"] } or
{ "group" : ["jira-developers"] }

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]}

    Returned if the project and role exists and the user has permission to view it. Contains the role name, description, and project actors.
  • Status 404
    Returned if the actor could not be added to the project role

Add an actor to a project role.

Request

Example
{ "user" : ["admin"] }  or
{ "group" : ["jira-developers"] }

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]}

    Returned if the project and role exists and the user has permission to view it. Contains the role name, description, and project actors.
  • Status 404
    Returned if the actor could not be added to the project role

Remove actors from a project role.

Responses
  • Status 204
    Returned if the actor was successfully removed from the project role.
  • Status 404
    Returned if the project or role is not found, the calling user does not have permission to view it, or does not have permission to modify the actors in the project role.

Details on a given project role.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]}

    Returned if the project and role exists and the user has permission to view it. Contains the role name, description, and project actors.
  • Status 404
    Returned if the project or role is not found, or the calling user does not have permission to view it.

api/2/project/{projectKeyOrId}/issuesecuritylevelscheme

Resource for associating permission schemes and projects.

Returns the issue security scheme for project.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/issuesecurityschemes/1000","id":1000,"name":"Default Issue Security Scheme","description":"Description for the default issue security scheme","defaultSecurityLevelId":10021,"levels":[{"self":"http://www.example.com/jira/rest/api/2/securitylevel/10021","id":"10021","description":"Only the reporter and internal staff can see this issue.","name":"Reporter Only"}]}

    Returned if the user has the administrator permission or if the scheme is used in a project in which the user has the administrative permission.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the project is visible for calling user, but the user doesn't have administrative permissions
  • Status 404
    Returned if the project does not exist, or is not visible to the calling user

api/2/project/{projectKeyOrId}/notificationscheme

Resource for associating notification schemes and projects.

Gets a notification scheme associated with the project. Follow the documentation of /notificationscheme/{id} resource for all details about returned value.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"expand":"notificationSchemeEvents,user,group,projectRole,field,all","id":10100,"self":"http://example.com/jira/rest/api/2/notificationscheme/10010","name":"notification scheme name","description":"description","notificationSchemeEvents":[{"event":{"id":1,"name":"Issue created","description":"Event published when issue is created"},"notifications":[{"id":1,"notificationType":"Group","parameter":"jira-administrators","group":{"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators"},"expand":"group"},{"id":2,"notificationType":"CurrentAssignee"},{"id":3,"notificationType":"ProjectRole","parameter":"10360","projectRole":{"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]},"expand":"projectRole"},{"id":4,"notificationType":"EmailAddress","parameter":"rest-developer@atlassian.com","emailAddress":"rest-developer@atlassian.com"},{"id":5,"notificationType":"User","user":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"expand":"user"},{"id":6,"notificationType":"GroupCustomField","parameter":"customfield_10101","field":{"id":"customfield_10101","name":"New custom field","custom":true,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["cf[10101]","New custom field"],"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10101}},"expand":"field"}]},{"event":{"id":20,"name":"Custom event","description":"Custom event which is published together with issue created event","templateEvent":{"id":1,"name":"Issue created","description":"Event published when issue is created"}},"notifications":[{"id":1,"notificationType":"Group","parameter":"jira-administrators","group":{"name":"jira-administrators","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-administrators"},"expand":"group"},{"id":2,"notificationType":"CurrentAssignee"},{"id":3,"notificationType":"ProjectRole","parameter":"10360","projectRole":{"self":"http://www.example.com/jira/rest/api/2/project/MKY/role/10360","name":"Developers","id":10360,"description":"A project role that represents developers in a project","actors":[{"id":10240,"displayName":"jira-developers","type":"atlassian-group-role-actor","name":"jira-developers"}]},"expand":"projectRole"},{"id":4,"notificationType":"EmailAddress","parameter":"rest-developer@atlassian.com","emailAddress":"rest-developer@atlassian.com"},{"id":5,"notificationType":"User","user":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"expand":"user"},{"id":6,"notificationType":"GroupCustomField","parameter":"customfield_10101","field":{"id":"customfield_10101","name":"New custom field","custom":true,"orderable":true,"navigable":true,"searchable":true,"clauseNames":["cf[10101]","New custom field"],"schema":{"type":"project","custom":"com.atlassian.jira.plugin.system.customfieldtypes:project","customId":10101}},"expand":"field"}]}]}

    Returned if the notification scheme exists and is visible for the calling user
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user is allowed to access the project, but is not an administrator of the project or JIRA and therefore can't see the notification scheme of the project.
  • Status 404
    Returned if the notification scheme does not exist, or is not visible to the calling user

api/2/project/{projectKeyOrId}/permissionscheme

Resource for associating permission schemes and projects.

Assigns a permission scheme with a project.

Request
query parameters
parametertypedescription
expandstring

Example
{"id":10000}

Responses
  • Status 200 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/10000","name":"Example permission scheme","description":"description"}

    Shortened details of the newly associated permission scheme.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have permissions to edit project's permission schemes. In practice the user needs to be a JIRA administrator.
  • Status 404
    Returned if the project or permission scheme is not found.

Gets a permission scheme assigned with a project.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"id":10000,"self":"http://www.example.com/jira/rest/api/2/permissionscheme/10000","name":"Example permission scheme","description":"description"}

    The associated permission scheme.
  • Status 401
    Returned if the user is not logged in.
  • Status 403
    Returned if the user does not have permissions to view the project's configuration. In practice the user needs to be a JRA administrator or the project's administrator to get the assigned permission scheme.
  • Status 404
    Returned if the project is not found (or the user does not have permissions to view the project).

api/2/project/{projectKeyOrId}/securitylevel

Provide security level information of the given project for the current user.

Returns all security levels for the project that the current logged in user has access to. If the user does not have the Set Issue Security permission, the list will be empty.

Responses
  • Status 200 - application/json

    Example
    {"levels":[{"self":"http://www.example.com/jira/rest/api/2/securitylevel/100000","id":"100000","description":"security description","name":"securityLevelName"},{"self":"http://www.example.com/jira/rest/api/2/securitylevel/100001","id":"100001","description":"another security description","name":"secret"}]}

    Returns a list of all security levels in a project for which the current user has access.
  • Status 404
    Returned if the project is not found or the user does not have permissions to browse it.

api/2/project/type

Returns all the project types defined on the JIRA instance, not taking into account whether the license to use those project types is valid or not.

Responses
  • Status 200 - application/json

    Example
    [{"key":"business","descriptionI18nKey":"Project type for business projects","icon":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4xLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZmlsbD0iIzY2NjY2NiIgZD0iTTE2LDBDNy4yLDAsMCw3LjIsMCwxNmMwLDguOCw3LjIsMTYsMTYsMTZjOC44LDAsMTYtNy4yLDE2LTE2QzMyLDcuMiwyNC44LDAsMTYsMHogTTI1LjcsMjMNCgkJYzAsMS44LTEuNCwzLjItMy4yLDMuMkg5LjJDNy41LDI2LjIsNiwyNC44LDYsMjNWOS44QzYsOCw3LjUsNi42LDkuMiw2LjZoMTMuMmMwLjIsMCwwLjQsMCwwLjcsMC4xbC0yLjgsMi44SDkuMg0KCQlDOSw5LjQsOC44LDkuNiw4LjgsOS44VjIzYzAsMC4yLDAuMiwwLjQsMC40LDAuNGgxMy4yYzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNS4zbDIuOC0yLjhWMjN6IE0xNS45LDIxLjNMMTEsMTYuNGwyLTJsMi45LDIuOQ0KCQlMMjYuNCw2LjhjMC42LDAuNywxLjIsMS41LDEuNywyLjNMMTUuOSwyMS4zeiIvPg0KPC9nPg0KPC9zdmc+","color":"#FFFFFF"},{"key":"software","descriptionI18nKey":"Project type for software projects","icon":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4xLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZmlsbD0iIzY2NjY2NiIgZD0iTTE2LDBDNy4yLDAsMCw3LjIsMCwxNmMwLDguOCw3LjIsMTYsMTYsMTZjOC44LDAsMTYtNy4yLDE2LTE2QzMyLDcuMiwyNC44LDAsMTYsMHogTTI1LjcsMjMNCgkJYzAsMS44LTEuNCwzLjItMy4yLDMuMkg5LjJDNy41LDI2LjIsNiwyNC44LDYsMjNWOS44QzYsOCw3LjUsNi42LDkuMiw2LjZoMTMuMmMwLjIsMCwwLjQsMCwwLjcsMC4xbC0yLjgsMi44SDkuMg0KCQlDOSw5LjQsOC44LDkuNiw4LjgsOS44VjIzYzAsMC4yLDAuMiwwLjQsMC40LDAuNGgxMy4yYzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNS4zbDIuOC0yLjhWMjN6IE0xNS45LDIxLjNMMTEsMTYuNGwyLTJsMi45LDIuOQ0KCQlMMjYuNCw2LjhjMC42LDAuNywxLjIsMS41LDEuNywyLjNMMTUuOSwyMS4zeiIvPg0KPC9nPg0KPC9zdmc+","color":"#AAAAAA"}]

    Returns a list with all the project types defined on the JIRA instance.

Returns the project type with the given key.

Responses
  • Status 200 - application/json

    Example
    {"key":"business","descriptionI18nKey":"Project type for business projects","icon":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4xLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZmlsbD0iIzY2NjY2NiIgZD0iTTE2LDBDNy4yLDAsMCw3LjIsMCwxNmMwLDguOCw3LjIsMTYsMTYsMTZjOC44LDAsMTYtNy4yLDE2LTE2QzMyLDcuMiwyNC44LDAsMTYsMHogTTI1LjcsMjMNCgkJYzAsMS44LTEuNCwzLjItMy4yLDMuMkg5LjJDNy41LDI2LjIsNiwyNC44LDYsMjNWOS44QzYsOCw3LjUsNi42LDkuMiw2LjZoMTMuMmMwLjIsMCwwLjQsMCwwLjcsMC4xbC0yLjgsMi44SDkuMg0KCQlDOSw5LjQsOC44LDkuNiw4LjgsOS44VjIzYzAsMC4yLDAuMiwwLjQsMC40LDAuNGgxMy4yYzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNS4zbDIuOC0yLjhWMjN6IE0xNS45LDIxLjNMMTEsMTYuNGwyLTJsMi45LDIuOQ0KCQlMMjYuNCw2LjhjMC42LDAuNywxLjIsMS41LDEuNywyLjNMMTUuOSwyMS4zeiIvPg0KPC9nPg0KPC9zdmc+","color":"#FFFFFF"}

    Returns a representation of the project type with the given id

Returns the project type with the given key, if it is accessible to the logged in user. This takes into account whether the user is licensed on the Application that defines the project type.

Responses
  • Status 200 - application/json

    Example
    {"key":"business","descriptionI18nKey":"Project type for business projects","icon":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4xLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZmlsbD0iIzY2NjY2NiIgZD0iTTE2LDBDNy4yLDAsMCw3LjIsMCwxNmMwLDguOCw3LjIsMTYsMTYsMTZjOC44LDAsMTYtNy4yLDE2LTE2QzMyLDcuMiwyNC44LDAsMTYsMHogTTI1LjcsMjMNCgkJYzAsMS44LTEuNCwzLjItMy4yLDMuMkg5LjJDNy41LDI2LjIsNiwyNC44LDYsMjNWOS44QzYsOCw3LjUsNi42LDkuMiw2LjZoMTMuMmMwLjIsMCwwLjQsMCwwLjcsMC4xbC0yLjgsMi44SDkuMg0KCQlDOSw5LjQsOC44LDkuNiw4LjgsOS44VjIzYzAsMC4yLDAuMiwwLjQsMC40LDAuNGgxMy4yYzAuMiwwLDAuNC0wLjIsMC40LTAuNHYtNS4zbDIuOC0yLjhWMjN6IE0xNS45LDIxLjNMMTEsMTYuNGwyLTJsMi45LDIuOQ0KCQlMMjYuNCw2LjhjMC42LDAuNywxLjIsMS41LDEuNywyLjNMMTUuOSwyMS4zeiIvPg0KPC9nPg0KPC9zdmc+","color":"#FFFFFF"}

    Returns a representation of the project type with the given id
  • Status 401
    A response status of 401 indicates that there is not a logged in user and therefore this operation can't be performed
  • Status 404
    A response status of 404 indicates that the project type is not accessible for the logged in user

api/2/projectCategory

Returns all project categories

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"},{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10001","id":"10001","name":"SECOND","description":"Second Project Category"}]

    Returns a list of project categories.
  • Status 500
    Returned if an error occurs while retrieving the list of projects.

Create a project category via POST.

Request

Example
{"name":"CREATED","description":"Created Project Category"}

Responses
  • Status 201 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/projectCategory/10100","id":"10100","name":"CREATED","description":"Created Project Category"}

    Returned if the project category is created successfully.
  • Status 401
    Returned if the caller is not logged in so does not have permission to create project categories.
  • Status 403
    Returned if the caller is authenticated and does not have permission to create project categories (is not global admin).

Contains a representation of a project category in JSON format.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}

    Returned if the project category exists. Contains representation of a project category in JSON format.
  • Status 404
    Returned if the project category does not exist or the currently authenticated user does not have permission to view it.

Delete a project category.

Responses
  • Status 204
    Returned if the project category is successfully deleted.
  • Status 401
    Returned if the caller is not logged in so does not have permission to delete project categories.
  • Status 403
    Returned if the caller is authenticated and does not have permission to delete project categories (is not global admin).
  • Status 404
    Returned if the project category does not exist or the currently authenticated user does not have permission to view it.

Modify a project category via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field is not present, it is silently ignored.

Request

Example
{"name":"UPDATED","description":"Updated Project Category"}

Responses
  • Status 200
    Returned if the project category exists and the currently authenticated user has permission to edit it.
  • Status 201

    Example
    {"self":"http://www.example.com/jira/rest/api/2/projectCategory/10100","id":"10100","name":"UPDATED","description":"Updated Project Category"}

  • Status 401
    Returned if the caller is not logged in so does not have permission to change project categories.
  • Status 403
    Returned if the caller is authenticated and does not have permission to change project categories (is not global admin).
  • Status 404
    Returned if the project category does not exist or the currently authenticated user does not have permission to view it.

api/2/projectvalidate

Validates a project key.

Request
query parameters
parametertypedescription
keystring

the project key

Responses
  • Status 200 - application/json

    Example
    {"errorMessages":[],"errors":{"projectKey":"A project with that project key already exists."}}

    Returns an ErrorCollection containing any validation errors for the project key.

api/2/reindex

REST resource for starting/stopping/querying indexing.

Kicks off a reindex. Need Admin permissions to perform this reindex.

Request
query parameters
parametertypedescription
typestring

Case insensitive String indicating type of reindex. If omitted, then defaults to BACKGROUND_PREFERRED

indexCommentsboolean

Default: false

Indicates that comments should also be reindexed. Not relevant for foreground reindex, where comments are always reindexed.

indexChangeHistoryboolean

Default: false

Indicates that changeHistory should also be reindexed. Not relevant for foreground reindex, where changeHistory is always reindexed.

indexWorklogsboolean

Default: false

Indicates that changeHistory should also be reindexed. Not relevant for foreground reindex, where changeHistory is always reindexed.

Responses
  • Status 202 - application/json

    Example
    {"progressUrl":"http://localhost:8080/jira","currentProgress":0,"currentSubTask":"Currently reindexing Change History","type":"FOREGROUND","submittedTime":"2015-07-28T04:30:31.033+0000","startTime":"2015-07-28T04:30:31.033+0000","finishTime":"2015-07-28T04:30:31.033+0000","success":true}

    Returns a representation of the progress of the re-index operation.

Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 indicating that no reindex has taken place.

Request
query parameters
parametertypedescription
taskIdlong

the id of an indexing task you wish to obtain details on. If omitted, then defaults to the standard behaviour and returns information on the active reindex task, or the last task to run if no reindex is taking place. . If there is no reindexing task with that id then a 404 is returned.

Responses
  • Status 200 - application/json

    Example
    {"progressUrl":"http://localhost:8080/jira","currentProgress":0,"currentSubTask":"Currently reindexing Change History","type":"FOREGROUND","submittedTime":"2015-07-28T04:30:31.033+0000","startTime":"2015-07-28T04:30:31.033+0000","finishTime":"2015-07-28T04:30:31.033+0000","success":true}

    Returns a representation of the progress of the re-index operation.
  • Status 404
    Returned if there is no re-indexing task found

Reindexes one or more individual issues. Indexing is performed synchronously - the call returns when indexing of the issues has completed or a failure occurs.

Use either explicitly specified issue IDs or a JQL query to select issues to reindex.

Request
query parameters
parametertypedescription
issueIdstring

the IDs or keys of one or more issues to reindex.

indexCommentsboolean

Default: false

Indicates that comments should also be reindexed.

indexChangeHistoryboolean

Default: false

Indicates that changeHistory should also be reindexed.

indexWorklogsboolean

Default: false

Indicates that changeHistory should also be reindexed.

Responses
  • Status 202 - application/json

    Example
    {"progressUrl":"http://localhost:8080/jira","currentProgress":0,"currentSubTask":"Currently reindexing Change History","type":"FOREGROUND","submittedTime":"2015-07-28T04:30:31.033+0000","startTime":"2015-07-28T04:30:31.033+0000","finishTime":"2015-07-28T04:30:31.033+0000","success":true}

    Returns a representation of the progress of the re-index operation.

Returns information on the system reindexes. If a reindex is currently taking place then information about this reindex is returned. If there is no active index task, then returns information about the latest reindex task run, otherwise returns a 404 indicating that no reindex has taken place.

Request
query parameters
parametertypedescription
taskIdlong

the id of an indexing task you wish to obtain details on. If omitted, then defaults to the standard behaviour and returns information on the active reindex task, or the last task to run if no reindex is taking place. . If there is no reindexing task with that id then a 404 is returned.

Responses
  • Status 200 - application/json

    Example
    {"progressUrl":"http://localhost:8080/jira","currentProgress":0,"currentSubTask":"Currently reindexing Change History","type":"FOREGROUND","submittedTime":"2015-07-28T04:30:31.033+0000","startTime":"2015-07-28T04:30:31.033+0000","finishTime":"2015-07-28T04:30:31.033+0000","success":true}

    Returns a representation of the progress of the re-index operation.
  • Status 404
    Returned if there is no re-indexing task found

api/2/reindex/request

REST resource for querying and executing reindex requests.

Executes any pending reindex requests. Returns a JSON array containing the IDs of the reindex requests that are being processed. Execution is asynchronous - progress of the returned tasks can be monitored through other REST calls.

Responses
  • Status 200 - application/json
    Returns an array containing the reindex request IDs being processed.

Retrieves the progress of a single reindex request.

Responses
  • Status 200 - application/json

    Example
    {"id":10500,"status":"PENDING","type":"IMMEDIATE","requestTime":"2015-07-28T04:30:31.055+0000"}

    Details and status of the reindex request.
  • Status 404
    Returned if no such reindex request exists.

Retrieves the progress of a multiple reindex requests. Only reindex requests that actually exist will be returned in the results.

Request
query parameters
parametertypedescription
requestIdstring

the reindex request IDs.

Responses
  • Status 200 - application/json

    Example
    {"id":10500,"status":"PENDING","type":"IMMEDIATE","requestTime":"2015-07-28T04:30:31.055+0000"}

    Details and status of the reindex request.

api/2/resolution

Returns a list of all resolutions.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/resolution/1","description":"A fix for this issue is checked into the tree and tested.","iconUrl":"http://www.example.com/jira/images/icons/statuses/resolved.png","name":"Fixed"},{"self":"http://www.example.com/jira/rest/api/2/resolution/3","description":"This is what it is supposed to do.","name":"Works as designed"}]

    Returned if the resolutions exists and the user has permission to view them. Contains a full representation of the resolution in JSON format.

Returns a resolution.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/resolution/1","description":"A fix for this issue is checked into the tree and tested.","iconUrl":"http://www.example.com/jira/images/icons/statuses/resolved.png","name":"Fixed"}

    Returned if the resolution exists and the user has permission to view it. Contains a full representation of the resolution in JSON format.
  • Status 404
    Returned if the resolution does not exist or the user does not have permission to view it.

api/2/role

Get all the ProjectRoles available in JIRA. Currently this list is global.

Responses
  • Status 200

    Example
    {"name":"Developers","id":10360,"description":"A project role that represents developers in a project"}

    Returned if the user is authenticated
  • Status 401
    Returned if you do not have permissions or you are not logged in.

Get a specific ProjectRole available in JIRA.

Responses
  • Status 200

    Example
    {"name":"Developers","id":10360,"description":"A project role that represents developers in a project"}

    Returned if the user is authenticated
  • Status 401
    Returned if you do not have permissions or you are not logged in.

api/2/screens

Gets available fields for screen. i.e ones that haven't already been added.

Responses
  • Status 200
    List of available fields for screen
  • Status 400
    Returned if screen does not exist
  • Status 401
    Returned if you do not have permissions

Creates tab for given screen

Request
Responses
  • Status 200 - application/json

    Example
    {"id":10000,"name":"Fields Tab"}

    Newly created tab in JSON.
  • Status 400
    Returned if screen does not exist or tab name is invalid
  • Status 401
    Returned if you do not have permissions

Returns a list of all tabs for the given screen

Request
query parameters
parametertypedescription
projectKeystring

the key of the project; this parameter is optional

Responses
  • Status 200 - application/json
    Contains a full representation of all visible tabs in JSON.
  • Status 400
    Returned if screen does not exist
  • Status 401
    Returned if you do not have permissions

Renames tab on given screen

Request
Responses
  • Status 200 - application/json

    Example
    {"id":10000,"name":"Fields Tab"}

    Modified tab in JSON.
  • Status 400
    Returned if screen does not exist or tab name is invalid
  • Status 401
    Returned if you do not have permissions

Deletes tab to give screen

Responses
  • Status 201
    Successfully deleted tab
  • Status 400
    Returned if screen or tab does not exist
  • Status 401
    Returned if you do not have permissions

Gets all fields for a given tab

Request
query parameters
parametertypedescription
projectKeystring

the key of the project; this parameter is optional

Responses
  • Status 200
    List of fields for given tab
  • Status 400
    Returned if screen or tab does not exist
  • Status 401
    Returned if you do not have permissions

Adds field to the given tab

Request
Responses
  • Status 200

    Example
    {"id":"summary","name":"Summary"}

    Newly added field as json
  • Status 400
    Returned if screen,tab or field does not exist.
  • Status 401
    Returned if you do not have permissions

Removes field from given tab

Responses
  • Status 201
    Successfully removed field from tab
  • Status 400
    Returned if screen or tab does not exist
  • Status 401
    Returned if you do not have permissions

Moves field on the given tab

Request
Responses
  • Status 201
    Successfully moved tab
  • Status 400
    Returned if screen or tab does not exist. Or move cooridinates invalid.
  • Status 401
    Returned if you do not have permissions

Moves tab position

Responses
  • Status 201
    Successfully moved tab
  • Status 400
    Returned if screen or tab does not exist
  • Status 401
    Returned if you do not have permissions

Adds field or custom field to the default tab

Responses
  • Status 201
    Successfully added field to default screen / default tab
  • Status 400
    Returned if screen, tab or field does not exist or field is already present on a selected tab
  • Status 401
    Returned if you do not have administrator permissions

api/2/search

Resource for searches.

Performs a search using JQL.

Request

Example
{"jql":"project = HSP","startAt":0,"maxResults":15,"fields":["summary","status","assignee"]}

Responses
  • Status 200 - application/json

    Example
    {"expand":"names,schema","startAt":0,"maxResults":50,"total":1,"issues":[{"expand":"","id":"10001","self":"http://www.example.com/jira/rest/api/2/issue/10001","key":"HSP-1"}]}

    Returns a JSON representation of the search results.
  • Status 400
    Returned if there is a problem with the JQL query.

Searches for issues using JQL.

Sorting the jql parameter is a full JQL expression, and includes an ORDER BY clause.

The fields param (which can be specified multiple times) gives a comma-separated list of fields to include in the response. This can be used to retrieve a subset of fields. A particular field can be excluded by prefixing it with a minus.

By default, only navigable (*navigable) fields are returned in this search resource. Note: the default is different in the get-issue resource -- the default there all fields (*all).

  • *all - include all fields
  • *navigable - include just navigable fields
  • summary,comment - include just the summary and comments
  • -description - include navigable fields except the description (the default is *navigable for search)
  • *all,-comment - include everything except comments

GET vs POST: If the JQL query is too large to be encoded as a query param you should instead POST to this resource.

Expanding Issues in the Search Result: It is possible to expand the issues returned by directly specifying the expansion on the expand parameter passed in to this resources.

For instance, to expand the "changelog" for all the issues on the search result, it is neccesary to specify "changelog" as one of the values to expand.

Request
query parameters
parametertypedescription
jqlstring

a JQL query string

startAtint

the index of the first issue to return (0-based)

maxResultsint

the maximum number of issues to return (defaults to 50). The maximum allowable value is dictated by the JIRA property 'jira.search.views.default.max'. If you specify a value that is higher than this number, your search results will be truncated.

validateQueryboolean

Default: true

whether to validate the JQL query

fieldsstring

the list of fields to return for each issue. By default, all navigable fields are returned.

expandstring

A comma-separated list of the parameters to expand.

Responses
  • Status 200 - application/json

    Example
    {"expand":"names,schema","startAt":0,"maxResults":50,"total":1,"issues":[{"expand":"","id":"10001","self":"http://www.example.com/jira/rest/api/2/issue/10001","key":"HSP-1"}]}

    Returns a JSON representation of the search results.
  • Status 400
    Returned if there is a problem with the JQL query.

api/2/securitylevel

Returns a full representation of the security level that has the given id.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/securitylevel/10021","id":"10021","description":"Only the reporter and internal staff can see this issue.","name":"Reporter Only"}

    Returned if the issue type exists and is visible by the calling user.
  • Status 404
    Returned if the issue type does not exist, or is not visible to the calling user.

api/2/serverInfo

Returns general information about the current JIRA server.

Request
query parameters
parametertypedescription
doHealthCheckboolean
Responses
  • Status 200 - application/json

    Example
    {"baseUrl":"http://localhost:8080/jira","version":"5.0-SNAPSHOT","versionNumbers":[5,0,0],"buildNumber":582,"buildDate":"2015-07-28T04:30:30.210+0000","serverTime":"2015-07-28T04:30:30.210+0000","scmInfo":"1f51473f5c7b75c1a69a0090f4832cdc5053702a","buildPartnerName":"Example Partner Co.","serverTitle":"My Shiny New JIRA Server"}

    Returns a full representation of the server info in JSON format

api/2/settings

REST resource for changing the JIRA system settings

Sets the base URL that is configured for this JIRA instance.

Request

Example
http://jira.atlassian.com/

Returns the default system columns for issue navigator. Admin permission will be required.

Responses
  • Status 200 - application/json
    Returns a list of columns for configured for the given user
  • Status 403
    Returned if the user does not have admin permission
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

Sets the default system columns for issue navigator. Admin permission will be required.

Request
Responses
  • Status 200
    Returned when the columns is saved successfully
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

api/2/status

Returns a list of all statuses

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://localhost:8090/jira/rest/api/2.0/status/10000","description":"The issue is currently being worked on.","iconUrl":"http://localhost:8090/jira/images/icons/progress.gif","name":"In Progress","id":"10000","statusCategory":{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/1","id":1,"key":"in-flight","colorName":"yellow","name":"In Progress"}},{"self":"http://localhost:8090/jira/rest/api/2.0/status/5","description":"The issue is closed.","iconUrl":"http://localhost:8090/jira/images/icons/closed.gif","name":"Closed","id":"5","statusCategory":{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/9","id":9,"key":"completed","colorName":"green"}}]

    Returns a list of all JIRA issue statuses in JSON format, that are visible to the user.
  • Status 404
    Returned if the requested issue status is not found, or the user does not have permission to view it.

Returns a full representation of the Status having the given id or name.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://localhost:8090/jira/rest/api/2.0/status/10000","description":"The issue is currently being worked on.","iconUrl":"http://localhost:8090/jira/images/icons/progress.gif","name":"In Progress","id":"10000","statusCategory":{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/1","id":1,"key":"in-flight","colorName":"yellow","name":"In Progress"}}

    Returns a full representation of a JIRA issue status in JSON format.
  • Status 404
    Returned if the requested issue status is not found, or the user does not have permission to view it.

api/2/statuscategory

Returns a list of all status categories

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/1","id":1,"key":"in-flight","colorName":"yellow","name":"In Progress"},{"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/9","id":9,"key":"completed","colorName":"green"}]

    Returns a list of all JIRA issue status categories in JSON format, that are visible to the user.
  • Status 404
    Returned if no status categories are found, or the user does not have permission to view them.

Returns a full representation of the StatusCategory having the given id or key

Responses
  • Status 200 - application/json

    Example
    {"self":"http://localhost:8090/jira/rest/api/2.0/statuscategory/1","id":1,"key":"in-flight","colorName":"yellow","name":"In Progress"}

    Returns a full representation of a JIRA issue status category in JSON format.
  • Status 404
    Returned if the requested issue status category is not found, or the user does not have permission to view it.

api/2/universal_avatar

Responses
  • application/json
Request
Responses
  • application/json

Deletes avatar

Responses
  • application/json
Responses
  • text/html

Creates temporary avatar

Request
query parameters
parametertypedescription
filenamestring

name of file being uploaded

sizelong

size of file

Responses
  • application/json

api/2/upgrade

REST resource for executing and querying delayed upgrades.

Runs any pending delayed upgrade tasks. Need Admin permissions to do this.

Responses
  • application/json

Returns the result of the last upgrade task. Returns {@link javax.ws.rs.core.Response#seeOther(java.net.URI)} if still running.

Responses
  • Status 200 - application/json

    Example
    {"startTime":"2015-07-28T04:30:32.201+0000","duration":2001,"outcome":"SUCCESS","message":""}

    Returned if the upgrade is complete
  • Status 303
    Returned if the upgrade task is still running.
  • Status 404
    Returned if no prior upgrade task exists.

api/2/user

Returns a user. This resource cannot be accessed anonymously.

Request
query parameters
parametertypedescription
usernamestring

the username

keystring

user key

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[{"name":"jira-user","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-user"},{"name":"jira-admin","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-admin"},{"name":"important","self":"http://www.example.com/jira/rest/api/2/group?groupname=important"}]},"applicationRoles":{"size":1,"items":[]},"expand":"groups,applicationRoles"}

    Returns a full representation of a JIRA user in JSON format.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested user is not found.

Create user. By default created user will not be notified with email. If password field is not set then password will be randomly generated.

Request

Example
{"name":"charlie","password":"abracadabra","emailAddress":"charlie@atlassian.com","displayName":"Charlie of Atlassian","applicationKeys":["jira-core"]}

Responses
  • Status 201

    Example
    {"self":"http://www.example.com/jirahttp://www.example.com/jira/rest/api/2/user/charlie","key":"charlie","name":"charlie","emailAddress":"charlie@atlassian.com","displayName":"Charlie of Atlassian"}

    Returned if the user was created.
  • Status 400
    Returned if the request is invalid.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the caller user does not have permission to create the user.
  • Status 500
    Returned if the user was not created because of other error.

Removes user.

Request
query parameters
parametertypedescription
usernamestring

the username

keystring

user key

Responses
  • Status 204
    Returned if the user was deleted successfully.
  • Status 400
    Returned if the request is invalid or some other server error occurred.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the caller does not have permission to remove the user.
  • Status 404
    Returned if the caller does have permission to remove user but the user does not exist.

Modify user. The "value" fields present will override the existing value. Fields skipped in request will not be changed.

Request
query parameters
parametertypedescription
usernamestring

the username

keystring

user key

Example
{"name":"eddie","emailAddress":"eddie@atlassian.com","displayName":"Eddie of Atlassian"}

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jirahttp://www.example.com/jira/rest/api/2/user/charlie","key":"charlie","name":"charlie","emailAddress":"charlie@atlassian.com","displayName":"Charlie of Atlassian"}

    Returned if the user exists and the caller has permission to edit it.
  • Status 400
    Returned if the request is invalid.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the caller user does not have permission to edit the user.
  • Status 404
    Returned if the caller does have permission to edit the user but the user does not exist.

Add user to given application.

Request
query parameters
parametertypedescription
usernamestring

username

applicationKeystring

application key

Responses
  • Status 200
    Returned if the user exists and the caller has permission to add user to application.
  • Status 400
    Returned if the request is invalid.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the caller user does not have permission to add user to application.
  • Status 500
    Returned if the user was not added to application because of other error.

Remove user from given application.

Request
query parameters
parametertypedescription
usernamestring

username

applicationKeystring

application key

Responses
  • Status 200
    Returned if the user exists and the caller has permission to remove user from application.
  • Status 400
    Returned if the request is invalid.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the caller user does not have permission to remove user from application.
  • Status 500
    Returned if the user was not removed from application because of other error.

Returns a list of users that match the search string and can be assigned issues for all the given projects. This resource cannot be accessed anonymously.

Request
query parameters
parametertypedescription
usernamestring

the username

projectKeysstring

the keys of the projects we are finding assignable users for, comma-separated

startAtint

the index of the first user to return (0-based)

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},{"self":"http://www.example.com/jira/rest/api/2/user?username=andrew","name":"andrew","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=andrew","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=andrew","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=andrew","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=andrew"},"displayName":"Andrew Anderson","active":false}]

    Returns a full representation of a JIRA user in JSON format.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested user is not found.

Returns a list of users that match the search string. This resource cannot be accessed anonymously. Please note that this resource should be called with an issue key when a list of assignable users is retrieved for editing. For create only a project key should be supplied. The list of assignable users may be incorrect if it's called with the project key for editing.

Request
query parameters
parametertypedescription
usernamestring

the username

projectstring

the key of the project we are finding assignable users for

issueKeystring

the issue key for the issue being edited we need to find assignable users for.

startAtint

the index of the first user to return (0-based)

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

actionDescriptorIdint
Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[{"name":"jira-user","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-user"},{"name":"jira-admin","self":"http://www.example.com/jira/rest/api/2/group?groupname=jira-admin"},{"name":"important","self":"http://www.example.com/jira/rest/api/2/group?groupname=important"}]},"applicationRoles":{"size":1,"items":[]},"expand":"groups,applicationRoles"}

    Returns a full representation of a JIRA user in JSON format.
  • Status 400
    Returned if no project or issue key was provided
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested user is not found.

Converts temporary avatar into a real avatar

Request
query parameters
parametertypedescription
usernamestring

username

Example
{"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"needsCropping":false}

Responses
  • Status 201 - application/json

    Example
    {"id":"1000","owner":"fred","isSystemAvatar":true,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10040","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10040","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10040","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10040"},"selected":false}

    Returns created avatar
  • Status 400
    Returned if the cropping coordinates are invalid
  • Status 403
    Returned if the currently authenticated user does not have permission to pick avatar
  • Status 404
    Returned if the currently authenticated user does not have EDIT PROJECT permission.
  • Status 500
    Returned if an error occurs while converting temporary avatar to real avatar
Request
query parameters
parametertypedescription
usernamestring
Responses
  • application/json

Deletes avatar

Request
query parameters
parametertypedescription
usernamestring

username

Responses
  • Status 204 - application/json
    Returned if the avatar is successfully deleted.
  • Status 403
    Returned if the currently authenticated user does not have permission to delete the avatar.
  • Status 404
    Returned if the avatar does not exist or the currently authenticated user does not have permission to delete it.

Creates temporary avatar using multipart. The response is sent back as JSON stored in a textarea. This is because the client uses remote iframing to submit avatars using multipart. So we must send them a valid HTML page back from which the client parses the JSON from.

Creating a temporary avatar is part of a 3-step process in uploading a new avatar for a user: upload, crop, confirm. This endpoint allows you to use a multipart upload instead of sending the image directly as the request body.

You *must* use "avatar" as the name of the upload parameter:

 curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
   -F "avatar=@mynewavatar.png;type=image/png" \
   'http://localhost:8090/jira/rest/api/2/user/avatar/temporary?username=admin'
 

Request
query parameters
parametertypedescription
usernamestring

Username

Responses
  • Status 201 - text/html

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions embeded in HTML page. Error messages will also be embeded in the page.
  • Status 404
    Returned if user does NOT exist
  • Status 500
    Returned if an error occurs while converting temporary avatar to real avatar

Creates temporary avatar. Creating a temporary avatar is part of a 3-step process in uploading a new avatar for a user: upload, crop, confirm.

The following examples shows these three steps using curl. The cookies (session) need to be preserved between requests, hence the use of -b and -c. The id created in step 2 needs to be passed to step 3 (you can simply pass the whole response of step 2 as the request of step 3).

 curl -c cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
   -H "Content-Type: image/png" --data-binary @mynewavatar.png \
   'http://localhost:8090/jira/rest/api/2/user/avatar/temporary?username=admin&filename=mynewavatar.png'

 curl -b cookiejar.txt -X POST -u admin:admin -H "X-Atlassian-Token: no-check" \
   -H "Content-Type: application/json" --data '{"cropperWidth": "65","cropperOffsetX": "10","cropperOffsetY": "16"}' \
   -o tmpid.json \
   http://localhost:8090/jira/rest/api/2/user/avatar?username=admin

 curl -b cookiejar.txt -X PUT -u admin:admin -H "X-Atlassian-Token: no-check" \
   -H "Content-Type: application/json" --data-binary @tmpid.json \
   http://localhost:8090/jira/rest/api/2/user/avatar?username=admin
 

Request
query parameters
parametertypedescription
usernamestring

username

filenamestring

name of file being uploaded

sizelong

size of file

Responses
  • Status 201 - application/json

    Example
    {"cropperWidth":120,"cropperOffsetX":50,"cropperOffsetY":50,"url":"http://example.com/jira/secure/temporaryavatar?cropped=true","needsCropping":true}

    temporary avatar cropping instructions
  • Status 403
    Returned if the request does not conain a valid XSRF token
  • Status 404
    Returned if the currently authenticated user does not have EDIT PROJECT permission.
  • Status 500
    Returned if an error occurs while converting temporary avatar to real avatar

Returns all avatars which are visible for the currently logged in user.

Request
query parameters
parametertypedescription
usernamestring

username

Responses
  • Status 200 - application/json

    Example
    {"system":[{"id":"1000","owner":"fred","isSystemAvatar":true,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10040","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10040","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10040","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10040"},"selected":false}],"custom":[{"id":"1010","owner":"andrew","isSystemAvatar":false,"isSelected":false,"urls":{"16x16":"http://localhost:8090/jira/secure/useravatar?size=xsmall&avatarId=10080","24x24":"http://localhost:8090/jira/secure/useravatar?size=small&avatarId=10080","32x32":"http://localhost:8090/jira/secure/useravatar?size=medium&avatarId=10080","48x48":"http://localhost:8090/jira/secure/useravatar?avatarId=10080"},"selected":false}]}

    Returns a map containing a list of avatars for both custom an system avatars
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested user is not found.
  • Status 500
    Returned if an error occurs while retrieving the list of avatars.

Returns the default columns for the given user. Admin permission will be required to get columns for a user other than the currently logged in user.

Request
query parameters
parametertypedescription
usernamestring

username

Responses
  • Status 200 - application/json
    Returns a list of columns for configured for the given user
  • Status 401
    Returned if the current user is not permitted to request the columns for the given user.
  • Status 404
    Returned if the requested user is not found.
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

Sets the default columns for the given user. Admin permission will be required to get columns for a user other than the currently logged in user.

Request
Responses
  • Status 200
    Returned when the columns is saved successfully
  • Status 500
    Returned if an error occurs while retrieving the column configuration.

Reset the default columns for the given user to the system default. Admin permission will be required to get columns for a user other than the currently logged in user.

Request
query parameters
parametertypedescription
usernamestring

username

Responses
  • Status 204
    Returned when the columns are reset successfully
  • Status 401
    Returned if the current user is not permitted to request the columns for the given user.
  • Status 500
    Returned if an error occurs while resetting the column configuration.

Modify user password.

Request
query parameters
parametertypedescription
usernamestring

the username

keystring

user key

Example
{"password":"new password"}

Responses
  • Status 204
    Returned if the user exists and the caller has permission to edit it.
  • Status 400
    Returned if the request is invalid.
  • Status 401
    Returned if the user is not authenticated.
  • Status 403
    Returned if the caller does not have permission to change the user password.
  • Status 404
    Returned if the caller does have permission to change user password but the user does not exist.

Returns a list of active users that match the search string and have all specified permissions for the project or issue.
This resource can be accessed by users with ADMINISTER_PROJECT permission for the project or global ADMIN or SYSADMIN rights.

Request
query parameters
parametertypedescription
usernamestring

the username filter, list includes all users if unspecified

permissionsstring

comma separated list of permissions for project or issue returned users must have, see Permissions JavaDoc for the list of all possible permissions.

issueKeystring

the issue key for the issue for which returned users have specified permissions.

projectKeystring

the optional project key to search for users with if no issueKey is supplied.

startAtint

the index of the first user to return (0-based)

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},{"self":"http://www.example.com/jira/rest/api/2/user?username=andrew","name":"andrew","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=andrew","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=andrew","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=andrew","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=andrew"},"displayName":"Andrew Anderson","active":false}]

    Returns a full representation of a JIRA user in JSON format.
  • Status 400
    Returned if no project or issue key was provided or when permissions list is empty or contains an invalid entry
  • Status 401
    Returned if the current user is not authenticated.
  • Status 403
    Returned if the current user does not have admin rights for the project.
  • Status 404
    Returned if the requested issue or project is not found.

Returns a list of users matching query with highlighting. This resource cannot be accessed anonymously.

Request
query parameters
parametertypedescription
querystring

A string used to search username, Name or e-mail address

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

showAvatarboolean
excludestring
Responses
  • Status 200 - application/json

    Example
    {"users":[{"name":"fred","key":"fred","html":"fred@example.com","displayName":"Fred Grumble","avatarUrl":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred"}],"total":25,"header":"Showing 20 of 25 matching groups"}

    Returns a full representation of a JIRA user in JSON format.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested user is not found.

Returns a list of users that match the search string. This resource cannot be accessed anonymously.

Request
query parameters
parametertypedescription
usernamestring

A query string used to search username, name or e-mail address

startAtint

the index of the first user to return (0-based)

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

includeActiveboolean

If true, then active users are included in the results (default true)

includeInactiveboolean

If true, then inactive users are included in the results (default false)

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},{"self":"http://www.example.com/jira/rest/api/2/user?username=andrew","name":"andrew","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=andrew","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=andrew","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=andrew","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=andrew"},"displayName":"Andrew Anderson","active":false}]

    Returns a full representation of a JIRA user in JSON format.
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested user is not found.

Returns a list of active users that match the search string. This resource cannot be accessed anonymously. Given an issue key this resource will provide a list of users that match the search string and have the browse issue permission for the issue provided.

Request
query parameters
parametertypedescription
usernamestring

the username filter, no users returned if left blank

issueKeystring

the issue key for the issue being edited we need to find viewable users for.

projectKeystring

the optional project key to search for users with if no issueKey is supplied.

startAtint

the index of the first user to return (0-based)

maxResultsint

the maximum number of users to return (defaults to 50). The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.

Responses
  • Status 200 - application/json

    Example
    [{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},{"self":"http://www.example.com/jira/rest/api/2/user?username=andrew","name":"andrew","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=andrew","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=andrew","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=andrew","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=andrew"},"displayName":"Andrew Anderson","active":false}]

    Returns a full representation of a JIRA user in JSON format.
  • Status 400
    Returned if no project or issue key was provided
  • Status 401
    Returned if the current user is not authenticated.
  • Status 404
    Returned if the requested issue or project is not found.

api/2/user/properties

Returns the keys of all properties for the user identified by the key or by the id.

Request
query parameters
parametertypedescription
userKeystring

key of the user whose properties are to be returned

usernamestring

username of the user whose properties are to be returned

Responses
  • Status 200 - application/json

    Example
    {"keys":[{"self":"http://www.example.com/jira/rest/api/2/issue/EX-2/properties/issue.support","key":"issue.support"}]}

    Returned if the user was found.
  • Status 400
    Returned if the user key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to browse the user.
  • Status 404
    Returned if the user with given key or id does not exist or if the property with given key is not found.

Removes the property from the user identified by the key or by the id. Ths user removing the property is required to have permissions to administer the user.

Request
query parameters
parametertypedescription
userKeystring

key of the user whose property is to be removed

usernamestring

username of the user whose property is to be removed

Responses
  • Status 204
    Returned if the user property was removed successfully.
  • Status 400
    Returned if the user key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to edit the user.
  • Status 404
    Returned if the user with given key or id does not exist or if the property with given key is not found.

Sets the value of the specified user's property.

You can use this resource to store a custom data against the user identified by the key or by the id. The user who stores the data is required to have permissions to administer the user.

Request
query parameters
parametertypedescription
userKeystring

key of the user whose property is to be set

usernamestring

username of the user whose property is to be set

Responses
  • Status 200
    Returned if the user property is successfully updated.
  • Status 201
    Returned if the user property is successfully created.
  • Status 400
    Returned if the user key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to administer the user.
  • Status 404
    Returned if the user with given key or id does not exist.

Returns the value of the property with a given key from the user identified by the key or by the id. The user who retrieves the property is required to have permissions to read the user.

Request
query parameters
parametertypedescription
userKeystring

key of the user whose property is to be returned

usernamestring

username of the user whose property is to be returned

Responses
  • Status 200 - application/json

    Example
    {"key":"issue.support","value":{}}

    Returned if the user property was found.
  • Status 400
    Returned if the user key or id is invalid.
  • Status 401
    Returned if the calling user is not authenticated.
  • Status 403
    Returned if the calling user does not have permission to browse the user.
  • Status 404
    Returned if the user with given key or id does not exist or if the property with given key is not found.

api/2/version

Create a version via POST.

Request

Example
{"description":"An excellent version","name":"New Version 1","archived":false,"released":true,"releaseDate":"2010-07-06","userReleaseDate":"6/Jul/2010","project":"PXA","projectId":10000}

Responses
  • Status 201 - application/json

    Example
    {"description":"An excellent version","name":"New Version 1","archived":false,"released":true,"releaseDate":"2010-07-06","userReleaseDate":"6/Jul/2010","project":"PXA","projectId":10000}

    Returned if the version is created successfully.
  • Status 403
    Returned if the currently authenticated user does not have permission to edit the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Modify a version's sequence within a project. The move version bean has 2 alternative field value pairs:

position
An absolute position, which may have a value of 'First', 'Last', 'Earlier' or 'Later'
after
A version to place this version after. The value should be the self link of another version

Request

Example
{"after":"http://www.example.com/jira/rest/api/2/version/10000"}

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/version/10000","id":"10000","description":"An excellent version","name":"New Version 1","archived":false,"released":true,"releaseDate":"2010-07-06","overdue":true,"userReleaseDate":"6/Jul/2010","projectId":10000}

    Returned if the version exists and the currently authenticated user has permission to view it. Contains a full representation of the version moved.
  • Status 404
    Returned if the version, or target of the version to move after does not exist or the currently authenticated user does not have permission to view it.

Returns a project version.

Request
query parameters
parametertypedescription
expandstring
Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/version/10000","id":"10000","description":"An excellent version","name":"New Version 1","archived":false,"released":true,"releaseDate":"2010-07-06","overdue":true,"userReleaseDate":"6/Jul/2010","projectId":10000}

    Returned if the version exists and the currently authenticated user has permission to view it. Contains a full representation of the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Modify a version via PUT. Any fields present in the PUT will override existing values. As a convenience, if a field is not present, it is silently ignored.

Request

Example
{"self":"http://www.example.com/jira/rest/api/2/version/10000","id":"10000","description":"An excellent version","name":"New Version 1","archived":false,"released":true,"releaseDate":"2010-07-06","overdue":true,"userReleaseDate":"6/Jul/2010","projectId":10000}

Responses
  • Status 200
    Returned if the version exists and the currently authenticated user has permission to edit it.
  • Status 403
    Returned if the currently authenticated user does not have permission to edit the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Delete a project version.

Request
query parameters
parametertypedescription
moveFixIssuesTostring

The version to set fixVersion to on issues where the deleted version is the fix version, If null then the fixVersion is removed.

moveAffectedIssuesTostring

The version to set affectedVersion to on issues where the deleted version is the affected version, If null then the affectedVersion is removed.

Responses
  • Status 204
    Returned if the version is successfully deleted.
  • Status 403
    Returned if the currently authenticated user does not have permission to delete the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Returns a bean containing the number of fixed in and affected issues for the given version.

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/version/10000","issuesFixedCount":23,"issuesAffectedCount":101}

    Returned if the version exists and the currently authenticated user has permission to view it. Contains counts of issues fixed in and affecting this version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Returns the number of unresolved issues for the given version

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/jira/rest/api/2/version/10000","issuesUnresolvedCount":23}

    Returned if the version exists and the currently authenticated user has permission to view it. Contains counts of issues unresolved in this version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Returns the remote version links associated with the given version ID.

Responses
  • Status 200 - application/json

    Example
    {"links":[{"self":"http://www.example.com/version/10000/AnotherGlobalId","name":"Version 1","link":{ "globalId": "AnotherGlobalId", "myCustomLinkProperty": false, "colors": [ "cyan", "magenta", "yellow" ]}},{"self":"http://www.example.com/version/10000/SomeGlobalId","name":"Version 1","link":{ "globalId": "SomeGlobalId", "myCustomLinkProperty": true, "colors": [ "red", "green", "blue" ]}}]}

    Returned if the version exists and the currently authenticated user has permission to view it, which is restricted to those users with BROWSE permission for the project. Contains a full representation of the remote version links.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Create a remote version link via POST. The link's global ID will be taken from the JSON payload if provided; otherwise, it will be generated.

Request

Example
{"globalId":"SomeGlobalId","myCustomLinkProperty":true,"colors":["red","green","blue"],"notes":["Remote version links may take any well-formed JSON shape that is desired,","provided that they fit within the maximum buffer size allowed,","which is currently 32,768 characters."]}

Responses
  • Status 201

    Example
    Returned if the remote version link is created or updated successfully.
          The document has no content, and a 

    Returned if the version is created successfully. The document will has no content, and a {@code Location:} header contains the self-URI for the newly created link.
  • Status 400
    Returned if the JSON payload is empty or malformed
  • Status 403
    Returned if the currently authenticated user does not have permission to edit the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Delete all remote version links for a given version ID.

Responses
  • Status 204
    Returned if the remote version links are successfully deleted.
  • Status 403
    Returned if the currently authenticated user does not have administrative rights to the project and thereby cannot delete remote links to the version.
  • Status 404
    Returned if the version does not exist, the currently authenticated user does not have permission to view it, or the version does not have any remote links to delete

A REST sub-resource representing a remote version link

Responses
  • Status 200 - application/json

    Example
    {"self":"http://www.example.com/version/10000/SomeGlobalId","name":"Version 1","link":{ "globalId": "SomeGlobalId", "myCustomLinkProperty": true, "colors": [ "red", "green", "blue" ]}}

    Information on the remote version link (or links)
  • Status 404
    Returned if the version or remote version link does not exist or if the user does not have the BROWSE permission for the project that owns the specified version

Create a remote version link via POST. The link's global ID will be taken from the JSON payload if provided; otherwise, it will be generated.

Request

Example
{"globalId":"SomeGlobalId","myCustomLinkProperty":true,"colors":["red","green","blue"],"notes":["Remote version links may take any well-formed JSON shape that is desired,","provided that they fit within the maximum buffer size allowed,","which is currently 32,768 characters."]}

Responses
  • Status 201

    Example
    Returned if the remote version link is created or updated successfully.
          The document has no content, and a 

    Returned if the version is created successfully. The document will has no content, and a {@code Location:} header contains the self-URI for the newly created link.
  • Status 400
    Returned if the JSON payload is empty or malformed
  • Status 403
    Returned if the currently authenticated user does not have permission to edit the version.
  • Status 404
    Returned if the version does not exist or the currently authenticated user does not have permission to view it.

Delete a specific remote version link with the given version ID and global ID.

Responses
  • Status 204
    Returned if the remote version link is successfully deleted.
  • Status 403
    Returned if the currently authenticated user does not have administrative rights to the project and thereby cannot delete remote links to the version.
  • Status 404
    Returned if the version does not exist, the currently authenticated user does not have permission to view it, or the version does not have a link for the given global ID

Returns the remote version links for a given global ID.

Request
query parameters
parametertypedescription
globalIdstring

the global ID of the remote resource that is linked to the versions

Responses
  • Status 200 - application/json

    Example
    {"links":[{"self":"http://www.example.com/version/10000/SomeGlobalId","name":"Version 1","link":{ "globalId": "SomeGlobalId", "myCustomLinkProperty": true, "colors": [ "red", "green", "blue" ]}},{"self":"http://www.example.com/version/10101/SomeGlobalId","name":"Version 2","link":{ "globalId": "SomeGlobalId" }}]}

    Contains a list of remote version links. Any existing links that the user does not have permission to see will be filtered out. The user must have BROWSE permission for the project to see links to its versions.

api/2/workflow

REST resource for retrieving workflows.

Returns all workflows.

Request
query parameters
parametertypedescription
workflowNamestring
Responses
  • Status 200 - application/json
    Returned if the currently authenticated user has administration permission. Contains a full representation of every workflow.
  • Status 401
    Returned if the currently authenticated user does not have administration permission.

Delete a property from the passed transition on the passed workflow. It is not an error to delete a property that does not exist.

Request
query parameters
parametertypedescription
keystring

the name of the property to add.

workflowNamestring

the name of the workflow to use.

workflowModestring

the type of workflow to use. Can either be "live" or "draft".

Responses
  • Status 200 - application/json
  • Status 304
    Returned if no changes were actually made by the request (e.g. trying to delete a property that does not exist).
  • Status 400
    Returned if the request is invalid.
  • Status 403
    Returned if the user does not have admin permission

Add a new property to a transition. Trying to add a property that already exists will fail.

Request
query parameters
parametertypedescription
keystring

the name of the property to add.

workflowNamestring

the name of the workflow to use.

workflowModestring

the type of workflow to use. Can either be "live" or "draft".

Example
{"value":"createissue"}

Responses
  • Status 200 - application/json

    Example
    {"key":"jira.i18n.title","value":"some.title","id":"jira.i18n.title"}

  • Status 400
    Returned if the request is invalid.
  • Status 403
    Returned if the user does not have admin permission

Update/add new property to a transition. Trying to update a property that does not exist will result in a new property being added.

Request
query parameters
parametertypedescription
keystring

the name of the property to add.

workflowNamestring

the name of the workflow to use.

workflowModestring

the type of workflow to use. Can either be "live" or "draft".

Example
{"value":"createissue"}

Responses
  • Status 200 - application/json

    Example
    {"key":"jira.i18n.title","value":"some.title","id":"jira.i18n.title"}

  • Status 304
    Returned if no changes were actually made by the request (e.g. updating a property to value it already holds).
  • Status 400
    Returned if the request is invalid.
  • Status 403
    Returned if the user does not have admin permission

Return the property or properties associated with a transition.

Request
query parameters
parametertypedescription
includeReservedKeysboolean

some keys under the "jira." prefix are editable, some are not. Set this to true in order to include the non-editable keys in the response.

keystring

the name of the property key to query. Can be left off the query to return all properties.

workflowNamestring

the name of the workflow to use.

workflowModestring

the type of workflow to use. Can either be "live" or "draft".

Responses
  • Status 200 - application/json

    Example
    {"key":"jira.i18n.title","value":"some.title","id":"jira.i18n.title"}

  • Status 403
    Returned if the user does not have admin permission

api/2/workflowscheme

Create a new workflow scheme. The body contains a representation of the new scheme. Values not passed are assumed to be set to their defaults.

Request

Example
{"name":"New Workflow Scheme Name","description":"New Workflow Scheme Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId":"WorkflowName"}}

Responses
  • Status 201

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    The newly created scheme.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.

Returns the requested workflow scheme to the caller.

Request
query parameters
parametertypedescription
returnDraftIfExistsboolean

Default: false

when true indicates that a scheme's draft, if it exists, should be queried instead of the scheme itself.

Responses
  • Status 200 - application/json

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    Returned if the scheme exists and the caller has permission to see it.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested scheme does not exist.

Delete the passed workflow scheme.

Responses
  • Status 204
    If the scheme was deleted.
  • Status 400
    Returned if the requested scheme is active (i.e. being used by JIRA).
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested scheme does not exist.

Update the passed workflow scheme. The body of the request is a representation of the workflow scheme. Values not passed are assumed to indicate no change for that field. The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft should be created and/or updated when the actual scheme cannot be edited (e.g. when the scheme is being used by a project). Values not appearing the body will not be touched.

Request

Example
{"id":57585,"name":"Updated Workflow Scheme Name","description":"Updated Workflow Scheme Name","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId":"WorkflowName"},"updateDraftIfNeeded":false}

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    The updated scheme.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested scheme does not exist.

Create a draft for the passed scheme. The draft will be a copy of the state of the parent.

Responses
  • Status 201

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    The newly created scheme.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.

Remove the default workflow from the passed workflow scheme.

Request
query parameters
parametertypedescription
updateDraftIfNeededboolean

when true will create and return a draft when the workflow scheme cannot be edited (e.g. when it is being used by a project).

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the scheme does not exist.

Set the default workflow for the passed workflow scheme. The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme cannot be edited.

Request

Example
{"workflow":"WorkflowName","updateDraftIfNeeded":false}

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the scheme does not exist.

Return the default workflow from the passed workflow scheme.

Request
query parameters
parametertypedescription
returnDraftIfExistsboolean

Default: false

when true indicates that a scheme's draft, if it exists, should be queried instead of the scheme itself.

Responses
  • Status 200

    Example
    {"workflow":"WorkflowName"}

  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned when the workflow scheme does not exist.

Returns the requested draft workflow scheme to the caller.

Responses
  • Status 200 - application/json

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    Returned if the scheme exists and the caller has permission to see it.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested draft scheme does not exist.

Delete the passed draft workflow scheme.

Responses
  • Status 204
    If the scheme was deleted.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested draft scheme or parent scheme does not exist.

Update a draft workflow scheme. The draft will created if necessary. The body is a representation of the workflow scheme. Values not passed are assumed to indicate no change for that field.

Request

Example
{"id":57585,"name":"Updated Workflow Scheme Name","description":"Updated Workflow Scheme Name","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId":"WorkflowName"},"updateDraftIfNeeded":false}

Responses
  • Status 200

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    The updated/created scheme.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested scheme does not exist.

Return the default workflow from the passed draft workflow scheme to the caller.

Responses
  • Status 200

    Example
    {"workflow":"WorkflowName"}

  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned when the workflow scheme does not exist.

Remove the default workflow from the passed draft workflow scheme.

Responses
  • Status 200

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the scheme does not exist.

Set the default workflow for the passed draft workflow scheme.

Request

Example
{"workflow":"WorkflowName","updateDraftIfNeeded":false}

Responses
  • Status 200

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the scheme does not exist.

Returns the issue type mapping for the passed draft workflow scheme.

Responses
  • Status 200 - application/json

    Example
    {"issueType":"IssueTypeId","workflow":"WorkflowName"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or issue type does not exist.

Remove the specified issue type mapping from the draft scheme.

Responses
  • Status 200

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or issue type does not exist.

Set the issue type mapping for the passed draft scheme. The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme cannot be edited.

Request

Example
{"issueType":"IssueTypeId","workflow":"WorkflowName","updateDraftIfNeeded":false}

Responses
  • Status 200

    Example
    {"id":17218781,"name":"Workflow Scheme Two","description":"Workflow Scheme Two Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"originalDefaultWorkflow":"ParentsDefaultWorkflowName","originalIssueTypeMappings":{"IssueTypeId":"WorkflowName2"},"draft":true,"lastModifiedUser":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","emailAddress":"fred@example.com","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":true,"timeZone":"Australia/Sydney","groups":{"size":3,"items":[]},"applicationRoles":{"size":1,"items":[]}},"lastModified":"Today 12:45","self":"http://www.example.com/jira/rest/api/2/workflowscheme/17218781/draft"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or issue type does not exist.

Returns the draft workflow mappings or requested mapping to the caller.

Request
query parameters
parametertypedescription
workflowNamestring

the workflow mapping to return. Null can be passed to return all mappings. Must be a valid workflow name.

Responses
  • Status 200 - application/json

    Example
    {"workflow":"WorkflowName","issueTypes":["IssueTypeId","IssueTypeId2"],"defaultMapping":false}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or workflow does not exist.

Delete the passed workflow from the draft workflow scheme.

Request
query parameters
parametertypedescription
workflowNamestring

the name of the workflow to delete.

Responses
  • Status 200
    The scheme with the workflow deleted.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested scheme or workflow does not exist.

Update the draft scheme to include the passed mapping. The body is a representation of the workflow mapping. Values not passed are assumed to indicate no change for that field.

Request
query parameters
parametertypedescription
workflowNamestring

the name of the workflow mapping to update.

Example
{"workflow":"WorkflowName3","issueTypes":["IssueTypeId"],"updateDraftIfNeeded":true}

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    The updated scheme.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.

Returns the issue type mapping for the passed workflow scheme.

Request
query parameters
parametertypedescription
returnDraftIfExistsboolean

Default: false

when true indicates that a scheme's draft, if it exists, should be queried instead of the scheme itself.

Responses
  • Status 200 - application/json

    Example
    {"issueType":"IssueTypeId","workflow":"WorkflowName"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or issue type does not exist.

Remove the specified issue type mapping from the scheme.

Request
query parameters
parametertypedescription
updateDraftIfNeededboolean

when true will create and return a draft when the workflow scheme cannot be edited (e.g. when it is being used by a project).

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or issue type does not exist.

Set the issue type mapping for the passed scheme. The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme cannot be edited.

Request

Example
{"issueType":"IssueTypeId","workflow":"WorkflowName","updateDraftIfNeeded":false}

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or issue type does not exist.

Returns the workflow mappings or requested mapping to the caller for the passed scheme.

Request
query parameters
parametertypedescription
workflowNamestring

the workflow mapping to return. Null can be passed to return all mappings. Must be a valid workflow name.

returnDraftIfExistsboolean

Default: false

when true indicates that a scheme's draft, if it exists, should be queried instead of the scheme itself.

Responses
  • Status 200 - application/json

    Example
    {"workflow":"WorkflowName","issueTypes":["IssueTypeId","IssueTypeId2"],"defaultMapping":false}

    Returned on success.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if either the requested scheme or workflow does not exist.

Delete the passed workflow from the workflow scheme.

Request
query parameters
parametertypedescription
workflowNamestring

the name of the workflow to delete.

updateDraftIfNeededboolean

flag to indicate if a draft should be created if necessary to delete the workflow from the scheme.

Responses
  • Status 200
    The scheme with the workflow deleted.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.
  • Status 404
    Returned if the requested scheme or workflow does not exist.

Update the scheme to include the passed mapping. The body is a representation of the workflow mapping. Values not passed are assumed to indicate no change for that field. The passed representation can have its updateDraftIfNeeded flag set to true to indicate that the draft should be created/updated when the actual scheme cannot be edited.

Request
query parameters
parametertypedescription
workflowNamestring

the name of the workflow mapping to update.

Example
{"workflow":"WorkflowName3","issueTypes":["IssueTypeId"],"updateDraftIfNeeded":true}

Responses
  • Status 200

    Example
    {"id":101010,"name":"Workflow Scheme One","description":"Workflow Scheme One Description","defaultWorkflow":"DefaultWorkflowName","issueTypeMappings":{"IsueTypeId2":"WorkflowName","IsueTypeId":"WorkflowName"},"draft":false,"self":"http://www.example.com/jira/rest/api/2/workflowscheme/101010"}

    The updated scheme.
  • Status 401
    Returned if there is no user or if the user has not entered a websudo session.

auth/1/session

Implement a REST resource for acquiring a session cookie.

Creates a new session for a user in JIRA. Once a session has been successfully created it can be used to access any of JIRA's remote APIs and also the web UI by passing the appropriate HTTP Cookie header.

Note that it is generally preferrable to use HTTP BASIC authentication with the REST API. However, this resource may be used to mimic the behaviour of JIRA's log-in page (e.g. to display log-in errors to a user).

Request

Example
{"username":"fred","password":"freds_password"}

Responses
  • Status 200

    Example
    {"session":{"name":"JSESSIONID","value":"12345678901234567890"},"loginInfo":{"failedLoginCount":10,"loginCount":127,"lastFailedLoginTime":"2015-07-28T04:30:29.505+0000","previousLoginTime":"2015-07-28T04:30:29.505+0000"}}

    Returns information about the caller's session if the caller is authenticated.

    Note that the response contains the Set-Cookie HTTP headers that must be honoured by the caller. If you are using a cookie-aware HTTP client then it will handle all Set-Cookie headers automatically. This is important because setting the JSESSIONID cookie alone may not be sufficient for the authentication to work.

  • Status 401
    Returned if the login fails due to invalid credentials.
  • Status 403
    Returned if the login is denied due to a CAPTCHA requirement, throtting, or any other reason. In case of a 403 status code it is possible that the supplied credentials are valid but the user is not allowed to log in at this point in time.

Logs the current user out of JIRA, destroying the existing session, if any.

Responses
  • Status 204
    Returned if the user was successfully logged out.
  • Status 401
    Returned if the caller is not authenticated.

Returns information about the currently authenticated user's session. If the caller is not authenticated they will get a 401 Unauthorized status code.

Responses
  • Status 200

    Example
    {"self":"http://www.example.com/jira/rest/api/2.0/user/fred","name":"fred","loginInfo":{"failedLoginCount":10,"loginCount":127,"lastFailedLoginTime":"2015-07-28T04:30:29.505+0000","previousLoginTime":"2015-07-28T04:30:29.505+0000"}}

  • Status 401
    Returned if the caller is not authenticated.

auth/1/websudo

This method invalidates the any current WebSudo session.

Responses
  • Status 204
    Returned if no error occurs