Atlassian Jira Issue API
The Atlassian Jira Issue API enables creating, updating, deleting, and querying issues within Jira including comments, attachments, and transitions.
The Atlassian Jira Issue API enables creating, updating, deleting, and querying issues within Jira including comments, attachments, and transitions.
components:
schemas:
IssueArchivalSyncResponse:
additionalProperties: false
description: >-
Number of archived/unarchived issues and list of errors that occurred
during the action, if any.
properties:
errors:
$ref: '#/components/schemas/Errors'
numberOfIssuesUpdated:
format: int64
type: integer
type: object
IssueCreateMetadata:
additionalProperties: false
description: The wrapper for the issue creation metadata for a list of projects.
properties:
expand:
description: >-
Expand options that include additional project details in the
response.
readOnly: true
type: string
xml:
attribute: true
projects:
description: List of projects and their issue creation metadata.
items:
$ref: '#/components/schemas/ProjectIssueCreateMetadata'
readOnly: true
type: array
type: object
PageOfCreateMetaIssueTypes:
additionalProperties: true
description: A page of CreateMetaIssueTypes.
properties:
createMetaIssueType:
items:
$ref: '#/components/schemas/IssueTypeIssueCreateMetadata'
type: array
writeOnly: true
issueTypes:
description: The list of CreateMetaIssueType.
items:
$ref: '#/components/schemas/IssueTypeIssueCreateMetadata'
readOnly: true
type: array
maxResults:
description: The maximum number of items to return per page.
format: int32
readOnly: true
type: integer
startAt:
description: The index of the first item returned.
format: int64
readOnly: true
type: integer
total:
description: The total number of items in all pages.
format: int64
readOnly: true
type: integer
type: object
PageOfCreateMetaIssueTypeWithField:
additionalProperties: true
description: A page of CreateMetaIssueType with Field.
properties:
fields:
description: The collection of FieldCreateMetaBeans.
items:
$ref: '#/components/schemas/FieldCreateMetadata'
readOnly: true
type: array
maxResults:
description: The maximum number of items to return per page.
format: int32
readOnly: true
type: integer
results:
items:
$ref: '#/components/schemas/FieldCreateMetadata'
type: array
startAt:
description: The index of the first item returned.
format: int64
readOnly: true
type: integer
total:
description: The total number of items in all pages.
format: int64
readOnly: true
type: integer
type: object
IssuePickerSuggestions:
additionalProperties: false
description: A list of issues suggested for use in auto-completion.
properties:
sections:
description: >-
A list of issues for an issue type suggested for use in
auto-completion.
items:
$ref: '#/components/schemas/IssuePickerSuggestionsIssueType'
readOnly: true
type: array
type: object
BulkIssueIsWatching:
additionalProperties: false
description: A container for the watch status of a list of issues.
properties:
issuesIsWatching:
additionalProperties:
readOnly: true
type: boolean
description: The map of issue ID to boolean watch status.
readOnly: true
type: object
type: object
IssueBean:
additionalProperties: false
description: Details about an issue.
properties:
changelog:
allOf:
- $ref: '#/components/schemas/PageOfChangelogs'
description: Details of changelogs associated with the issue.
readOnly: true
editmeta:
allOf:
- $ref: '#/components/schemas/IssueUpdateMetadata'
description: The metadata for the fields on the issue that can be amended.
readOnly: true
expand:
description: >-
Expand options that include additional issue details in the
response.
readOnly: true
type: string
xml:
attribute: true
fields:
additionalProperties: {}
type: object
fieldsToInclude:
$ref: '#/components/schemas/IncludedFields'
id:
description: The ID of the issue.
readOnly: true
type: string
key:
description: The key of the issue.
readOnly: true
type: string
names:
additionalProperties:
readOnly: true
type: string
description: The ID and name of each field present on the issue.
readOnly: true
type: object
operations:
allOf:
- $ref: '#/components/schemas/Operations'
description: The operations that can be performed on the issue.
readOnly: true
properties:
additionalProperties:
readOnly: true
description: Details of the issue properties identified in the request.
readOnly: true
type: object
renderedFields:
additionalProperties:
readOnly: true
description: The rendered value of each field present on the issue.
readOnly: true
type: object
schema:
additionalProperties:
$ref: '#/components/schemas/JsonTypeBean'
description: The schema describing each field present on the issue.
readOnly: true
type: object
self:
description: The URL of the issue details.
format: uri
readOnly: true
type: string
transitions:
description: The transitions that can be performed on the issue.
items:
$ref: '#/components/schemas/IssueTransition'
readOnly: true
type: array
versionedRepresentations:
additionalProperties:
additionalProperties:
readOnly: true
readOnly: true
type: object
description: The versions of each field on the issue.
readOnly: true
type: object
type: object
xml:
name: issue
PageBeanChangelog:
additionalProperties: false
description: A page of items.
properties:
isLast:
description: Whether this is the last page.
readOnly: true
type: boolean
maxResults:
description: The maximum number of items that could be returned.
format: int32
readOnly: true
type: integer
nextPage:
description: If there is another page of results, the URL of the next page.
format: uri
readOnly: true
type: string
self:
description: The URL of the page.
format: uri
readOnly: true
type: string
startAt:
description: The index of the first item returned.
format: int64
readOnly: true
type: integer
total:
description: The number of items returned.
format: int64
readOnly: true
type: integer
values:
description: The list of items.
items:
$ref: '#/components/schemas/Changelog'
readOnly: true
type: array
type: object
PageOfChangelogs:
additionalProperties: false
description: A page of changelogs.
properties:
histories:
description: The list of changelogs.
items:
$ref: '#/components/schemas/Changelog'
readOnly: true
type: array
maxResults:
description: The maximum number of results that could be on the page.
format: int32
readOnly: true
type: integer
startAt:
description: The index of the first item returned on the page.
format: int32
readOnly: true
type: integer
total:
description: The number of results on the page.
format: int32
readOnly: true
type: integer
type: object
PageOfComments:
additionalProperties: true
description: A page of comments.
properties:
comments:
description: The list of comments.
items:
$ref: '#/components/schemas/Comment'
readOnly: true
type: array
maxResults:
description: The maximum number of items that could be returned.
format: int32
readOnly: true
type: integer
startAt:
description: The index of the first item returned.
format: int64
readOnly: true
type: integer
total:
description: The number of items returned.
format: int64
readOnly: true
type: integer
type: object
Comment:
additionalProperties: true
description: A comment.
properties:
author:
allOf:
- $ref: '#/components/schemas/UserDetails'
description: The ID of the user who created the comment.
readOnly: true
body:
description: >-
The comment text in [Atlassian Document
Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/).
created:
description: The date and time at which the comment was created.
format: date-time
readOnly: true
type: string
id:
description: The ID of the comment.
readOnly: true
type: string
jsdAuthorCanSeeRequest:
description: >-
Whether the comment was added from an email sent by a person who is
not part of the issue. See [Allow external emails to be added as
comments on
issues](https://support.atlassian.com/jira-service-management-cloud/docs/allow-external-emails-to-be-added-as-comments-on-issues/)for
information on setting up this feature.
readOnly: true
type: boolean
jsdPublic:
description: >-
Whether the comment is visible in Jira Service Desk. Defaults to
true when comments are created in the Jira Cloud Platform. This
includes when the site doesn't use Jira Service Desk or the project
isn't a Jira Service Desk project and, therefore, there is no Jira
Service Desk for the issue to be visible on. To create a comment
with its visibility in Jira Service Desk set to false, use the Jira
Service Desk REST API [Create request
comment](https://developer.atlassian.com/cloud/jira/service-desk/rest/#api-rest-servicedeskapi-request-issueIdOrKey-comment-post)
operation.
readOnly: true
type: boolean
properties:
description: A list of comment properties. Optional on create and update.
items:
$ref: '#/components/schemas/EntityProperty'
type: array
renderedBody:
description: The rendered version of the comment.
readOnly: true
type: string
self:
description: The URL of the comment.
readOnly: true
type: string
updateAuthor:
allOf:
- $ref: '#/components/schemas/UserDetails'
description: The ID of the user who updated the comment last.
readOnly: true
updated:
description: The date and time at which the comment was updated last.
format: date-time
readOnly: true
type: string
visibility:
allOf:
- $ref: '#/components/schemas/Visibility'
description: >-
The group or role to which this comment is visible. Optional on
create and update.
type: object
IssueUpdateMetadata:
description: A list of editable field details.
properties:
fields:
additionalProperties:
$ref: '#/components/schemas/FieldMetadata'
readOnly: true
type: object
type: object
PropertyKeys:
additionalProperties: false
description: List of property keys.
properties:
keys:
description: Property key details.
items:
$ref: '#/components/schemas/PropertyKey'
readOnly: true
type: array
type: object
EntityProperty:
additionalProperties: false
description: >-
An entity property, for more information see [Entity
properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
properties:
key:
description: The key of the property. Required on create and update.
type: string
value:
description: The value of the property. Required on create and update.
type: object
RemoteIssueLink:
additionalProperties: false
description: Details of an issue remote link.
properties:
application:
allOf:
- $ref: '#/components/schemas/Application'
description: Details of the remote application the linked item is in.
globalId:
description: >-
The global ID of the link, such as the ID of the item on the remote
system.
type: string
id:
description: The ID of the link.
format: int64
type: integer
object:
allOf:
- $ref: '#/components/schemas/RemoteObject'
description: Details of the item linked to.
relationship:
description: >-
Description of the relationship between the issue and the linked
item.
type: string
self:
description: The URL of the link.
format: uri
type: string
type: object
RemoteIssueLinkIdentifies:
additionalProperties: false
description: Details of the identifiers for a created or updated remote issue link.
properties:
id:
description: >-
The ID of the remote issue link, such as the ID of the item on the
remote system.
format: int64
readOnly: true
type: integer
xml:
attribute: true
self:
description: The URL of the remote issue link.
readOnly: true
type: string
xml:
attribute: true
type: object
Transitions:
additionalProperties: false
description: List of issue transitions.
properties:
expand:
description: >-
Expand options that include additional transitions details in the
response.
readOnly: true
type: string
xml:
attribute: true
transitions:
description: List of issue transitions.
items:
$ref: '#/components/schemas/IssueTransition'
readOnly: true
type: array
type: object
Votes:
additionalProperties: false
description: The details of votes on an issue.
properties:
hasVoted:
description: Whether the user making this request has voted on the issue.
readOnly: true
type: boolean
self:
description: The URL of these issue vote details.
format: uri
readOnly: true
type: string
voters:
description: >-
List of the users who have voted on this issue. An empty list is
returned when the calling user doesn't have the *View voters and
watchers* project permission.
items:
$ref: '#/components/schemas/User'
readOnly: true
type: array
votes:
description: The number of votes on the issue.
format: int64
readOnly: true
type: integer
type: object
Watchers:
additionalProperties: false
description: The details of watchers on an issue.
properties:
isWatching:
description: Whether the calling user is watching this issue.
readOnly: true
type: boolean
self:
description: The URL of these issue watcher details.
readOnly: true
type: string
watchCount:
description: The number of users watching this issue.
format: int32
readOnly: true
type: integer
watchers:
description: Details of the users watching this issue.
items:
$ref: '#/components/schemas/UserDetails'
readOnly: true
type: array
type: object
xml:
name: watchers
PageOfWorklogs:
additionalProperties: true
description: Paginated list of worklog details
properties:
maxResults:
description: The maximum number of results that could be on the page.
format: int32
readOnly: true
type: integer
startAt:
description: The index of the first item returned on the page.
format: int32
readOnly: true
type: integer
total:
description: The number of results on the page.
format: int32
readOnly: true
type: integer
worklogs:
description: List of worklogs.
items:
$ref: '#/components/schemas/Worklog'
readOnly: true
type: array
type: object
Worklog:
additionalProperties: true
description: Details of a worklog.
properties:
author:
allOf:
- $ref: '#/components/schemas/UserDetails'
description: Details of the user who created the worklog.
readOnly: true
comment:
description: >-
A comment about the worklog in [Atlassian Document
Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/).
Optional when creating or updating a worklog.
created:
description: The datetime on which the worklog was created.
format: date-time
readOnly: true
type: string
id:
description: The ID of the worklog record.
readOnly: true
type: string
issueId:
description: The ID of the issue this worklog is for.
readOnly: true
type: string
properties:
description: >-
Details of properties for the worklog. Optional when creating or
updating a worklog.
items:
$ref: '#/components/schemas/EntityProperty'
type: array
self:
description: The URL of the worklog item.
format: uri
readOnly: true
type: string
started:
description: >-
The datetime on which the worklog effort was started. Required when
creating a worklog. Optional when updating a worklog.
format: date-time
type: string
timeSpent:
description: >-
The time spent working on the issue as days (\#d), hours (\#h), or
minutes (\#m or \#). Required when creating a worklog if
`timeSpentSeconds` isn't provided. Optional when updating a worklog.
Cannot be provided if `timeSpentSecond` is provided.
type: string
timeSpentSeconds:
description: >-
The time in seconds spent working on the issue. Required when
creating a worklog if `timeSpent` isn't provided. Optional when
updating a worklog. Cannot be provided if `timeSpent` is provided.
format: int64
type: integer
updateAuthor:
allOf:
- $ref: '#/components/schemas/UserDetails'
description: Details of the user who last updated the worklog.
readOnly: true
updated:
description: The datetime on which the worklog was last updated.
format: date-time
readOnly: true
type: string
visibility:
allOf:
- $ref: '#/components/schemas/Visibility'
description: >-
Details about any restrictions in the visibility of the worklog.
Optional when creating or updating a worklog.
type: object
xml:
name: worklog
externalDocs:
description: Find out more about Atlassian products and services.
url: http://www.atlassian.com
info:
contact:
email: [email protected]
description: Needs description.
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: http://atlassian.com/terms/
title: 'Atlassian rest/api/3/issue/'
version: 1001.0.0-SNAPSHOT-67b5c6e5f3598d7ec1649016d026468ab2838a77
openapi: 3.0.1
paths:
/rest/api/3/issue/archive:
post:
deprecated: false
description: >-
Enables admins to archive up to 100,000 issues in a single request using
JQL, returning the URL to check the status of the submitted
request.<br><br>You can use the [get
task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get)
and [cancel
task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post)
APIs to manage the request.<br><br>**Note that:**<br><br> * you can't
archive subtasks directly, only through their parent issues<br> * you
can only archive issues from software, service management, and business
projects<br><br>**[Permissions](#permissions) required:** Jira admin or
site admin: [global
permission](https://confluence.atlassian.com/x/x4dKLg)<br><br>**License
required:** Premium or Enterprise<br><br>**Signed-in users only:** This
API can't be accessed anonymously.<br><br>**Rate limiting:** Only a
single request per jira instance can be active at any given
time.<br><br> <br>
operationId: atlassianArchiveissuesasync
parameters: []
requestBody:
content:
application/json:
example:
jql: project = FOO AND updated < -2y
schema:
$ref: '#/components/schemas/ArchiveIssueAsyncRequest'
description: >-
A JQL query specifying the issues to archive. Note that subtasks can
only be archived through their parent issues.
required: true
responses:
'202':
content:
application/json:
example: '"https://your-domain.atlassian.net/rest/api/3/task/1010"'
schema:
type: string
description: Returns the URL to check the status of the submitted request.
'400':
content:
application/json:
example: '{"errorMessages":["Invalid JQL. Bad request."],"errors":{}}'
description: >-
Returned if no issues were archived due to a bad request, for
example an invalid JQL query.
'401':
content:
application/json:
example: '{"errorMessages":["User is not logged in."],"errors":{}}'
description: >-
Returned if no issues were archived because the provided
authentication credentials are either missing or invalid.
'403':
content:
application/json:
example: >-
{"errorMessages":["Archiving issues is only available for
premium editions of Jira."],"errors":{}}
description: >-
Returned if no issues were archived because the user lacks the
required Jira admin or site admin permissions.
'412':
content:
application/json:
example: >-
{"errorMessages":["An issue archival task is already running
with ID 1010. To start a new one, cancel the task or wait for it
to finish."],"errors":{}}
description: Returned if a request to archive issue(s) is already running.
security:
- basicAuth: []
- OAuth2:
- write:jira-work
- {}
summary: Atlassian Archive Issue S By Jql
tags:
- Issues
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-oauth2-scopes:
- scheme: OAuth2
scopes:
- write:jira-work
state: Current
- scheme: OAuth2
scopes:
- write:issue:jira
state: Beta
x-experimental: true
x-atlassian-connect-scope: WRITE
put:
deprecated: false
description: >-
Enables admins to archive up to 1000 issues in a single request using
issue ID/key, returning details of the issue(s) archived in the process
and the errors encountered, if any.<br><br>**Note that:**<br><br> * you
can't archive subtasks directly, only through their parent issues<br> * you can only archive issues from software, service management, and
business projects<br><br>**[Permissions](#permissions) required:** Jira
admin or site admin: [global
permission](https://confluence.atlassian.com/x/x4dKLg)<br><br>**License
required:** Premium or Enterprise<br><br>**Signed-in users only:** This
API can't be accessed anonymously.<br><br> <br>
operationId: atlassianArchiveissues
parameters: []
requestBody:
content:
application/json:
example:
issueIdsOrKeys:
- PR-1
- '1001'
- PROJECT-2
schema:
$ref: '#/components/schemas/IssueArchivalSyncRequest'
description: Contains a list of issue keys or IDs to be archived.
required: true
responses:
'200':
content:
application/json:
example: >-
{"errors":{"issueIsSubtask":{"count":3,"issueIdsOrKeys":["ST-1","ST-2","ST-3"],"message":"Issue
is
subtask."},"issuesInArchivedProjects":{"count":2,"issueIdsOrKeys":["AR-1","AR-2"],"message":"Issue
exists in archived
project."},"issuesInUnlicensedProjects":{"count":3,"issueIdsOrKeys":["UL-1","UL-2","UL-3"],"message":"Issues
with these IDs are in unlicensed
projects."},"issuesNotFound":{"count":3,"issueIdsOrKeys":["PR-1","PR-2","PR-3"],"message":"Issue
not found."}},"numberOfIssuesUpdated":10}
schema:
$ref: '#/components/schemas/IssueArchivalSyncResponse'
description: >-
Returned if there is at least one valid issue to archive in the
request. The return message will include the count of archived
issues and subtasks, as well as error details for issues which
failed to get archived.
'400':
content:
application/json:
example: >-
{"errorMessages":["No valid issue to archive or unarchive. Bad
request."],"errors":{}}
description: >-
Returned if none of the issues in the request can be archived.
Possible reasons:
* the issues weren't found
* the issues are subtasks
* the issues belong to unlicensed projects
* the issues belong to archived projects
'401':
content:
application/json:
example: '{"errorMessages":["User is not logged in."],"errors":{}}'
description: >-
Returned if no issues were archived because the provided
authentication credentials are either missing or invalid.
'403':
content:
application/json:
example: >-
{"errorMessages":["Only admins can archive or unarchive issues.
Access denied."],"errors":{}}
description: >-
Returned if no issues were archived because the user lacks the
required Jira admin or site admin permissions.
'412':
content:
application/json:
example: >-
{"errorMessages":["The number of issues to archive or unarchive
exceeds the hard limit of 1000. Precondition
failed."],"errors":{}}
description: >-
Returned if one or more issues were successfully archived, but the
operation was incomplete because the number of issue IDs or keys
provided exceeds 1000.
security:
- basicAuth: []
- OAuth2:
- write:jira-work
- {}
summary: Atlassian Archive Issue S By Issue Id Key
tags:
- Issues
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-oauth2-scopes:
- scheme: OAuth2
scopes:
- write:jira-work
state: Current
- scheme: OAuth2
scopes:
- write:issue:jira
state: Beta
x-experimental: true
x-atlassian-connect-scope: WRITE
/rest/api/3/issue/bulk:
post:
deprecated: false
description: >-
Creates upto **50** issues and, where the option to create subtasks is
enabled in Jira, subtasks. Transitions may be applied, to move the
issues or subtasks to a workflow step other than the default start step,
and issue properties set.<br><br>The content of each issue or subtask is
defined using `update` and `fields`. The fields that can be set in the
issue or subtask are determined using the [ Get create issue
metadata](#api-rest-api-3-issue-createmeta-get). These are the same
fields that appear on the issues' create screens. Note that the
`description`, `environment`, and any `textarea` type custom fields
(multi-line text fields) take Atlassian Document Format content. Single
line custom fields (`textfield`) accept a string and don't handle
Atlassian Document Format content.<br><br>Creating a subtask differs
from creating an issue as follows:<br><br> * `issueType` must be set to
a subtask issue type (use [ Get create issue
metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue
types).<br> * `parent` the must contain the ID or key of the parent
issue.<br><br>**[Permissions](#permissions) required:** *Browse
projects* and *Create issues* [project
permissions](https://confluence.atlassian.com/x/yodKLg) for the project
in which each issue or subtask is created.
operationId: atlassianCreateissues
parameters: []
requestBody:
content:
application/json:
example:
issueUpdates:
- fields:
assignee:
id: 5b109f2e9729b51b54dc274d
components:
- id: '10000'
customfield_10000: 09/Jun/19
customfield_20000: 06/Jul/19 3:25 PM
customfield_30000:
- '10000'
- '10002'
customfield_40000:
content:
- content:
- text: Occurs on all orders
type: text
type: paragraph
type: doc
version: 1
customfield_50000:
content:
- content:
- text: Could impact day-to-day work.
type: text
# --- truncated at 32 KB (253 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/atlassian/refs/heads/main/openapi/atlassian-rest-api-3-issue--openapi-original.yml