Skip to content

Latest commit

 

History

History
181 lines (143 loc) · 4.47 KB

File metadata and controls

181 lines (143 loc) · 4.47 KB

Jira Routing Reference

App name: jira Base URL proxied: api.atlassian.com

Getting Cloud ID

Jira Cloud requires a cloud ID in the API path. First, get accessible resources:

GET /jira/oauth/token/accessible-resources

Response:

[{
  "id": "62909843-b784-4c35-b770-e4e2a26f024b",
  "url": "https://yoursite.atlassian.net",
  "name": "yoursite",
  "scopes": ["read:jira-user", "read:jira-work", "write:jira-work"]
}]

API Path Pattern

/jira/ex/jira/{cloudId}/rest/api/3/{endpoint}

Common Endpoints

List Projects

GET /jira/ex/jira/{cloudId}/rest/api/3/project

Get Project

GET /jira/ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}

Search Issues (JQL)

Note: The old /search endpoint is deprecated. Use /search/jql with a bounded query.

GET /jira/ex/jira/{cloudId}/rest/api/3/search/jql?jql=project%3DKEY%20order%20by%20created%20DESC&maxResults=20&fields=summary,status,assignee,created,priority

Get Issue

GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}

Create Issue

POST /jira/ex/jira/{cloudId}/rest/api/3/issue
Content-Type: application/json

{
  "fields": {
    "project": {"key": "PROJ"},
    "summary": "Issue summary",
    "issuetype": {"name": "Task"}
  }
}

Update Issue

PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
Content-Type: application/json

{
  "fields": {
    "summary": "Updated summary"
  }
}

Delete Issue

DELETE /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}

Assign Issue

PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/assignee
Content-Type: application/json

{
  "accountId": "712020:5aff718e-6fe0-4548-82f4-f44ec481e5e7"
}

Get Transitions

GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions

Transition Issue (change status)

POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions
Content-Type: application/json

{
  "transition": {"id": "31"}
}

Add Comment

POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment
Content-Type: application/json

{
  "body": {
    "type": "doc",
    "version": 1,
    "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Comment text"}]}]
  }
}

Get Comments

GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment

Users

Get Current User

GET /jira/ex/jira/{cloudId}/rest/api/3/myself

Search Users

GET /jira/ex/jira/{cloudId}/rest/api/3/user/search?query=john

Metadata

List Issue Types

GET /jira/ex/jira/{cloudId}/rest/api/3/issuetype

List Priorities

GET /jira/ex/jira/{cloudId}/rest/api/3/priority

List Statuses

GET /jira/ex/jira/{cloudId}/rest/api/3/status

List Fields

GET /jira/ex/jira/{cloudId}/rest/api/3/field

Notes

  • Always fetch cloud ID first using /oauth/token/accessible-resources
  • JQL queries must be bounded (e.g., project=KEY) - unbounded queries are rejected
  • Use URL encoding for JQL query parameters
  • Update, Delete, Transition, and Assign endpoints return HTTP 204 (No Content) on success
  • Agile API (/rest/agile/1.0/...) requires additional OAuth scopes beyond the basic Jira scopes

Resources