Interact with Atlassian Jira Cloud via REST API v3.
Use Basic Auth with email and API token:
Required Environment Variables:
JIRA_EMAIL=your_email@example.com
JIRA_API_TOKEN=your_api_token
JIRA_DOMAIN=your_domain # e.g. "yourcompany" for yourcompany.atlassian.net
Credentials:
$JIRA_EMAIL
$JIRA_API_TOKEN
https://$JIRA_DOMAIN.atlassian.net
Base URL:
https://$JIRA_DOMAIN.atlassian.net/rest/api/3
Jira Software (Agile) Base URL:
https://$JIRA_DOMAIN.atlassian.net/rest/agile/1.0
Generate API Token:
Content-Type: application/json
Accept: application/json
Authorization: Basic base64(email:token)
| Category | Count |
|----------|-------|
| Total Endpoints | 122 |
| Total Schemas | 64 |
| Jira Software (Agile) | 51 endpoints |
| Builds API | 9 endpoints |
| Deployments API | 7 endpoints |
| DevInfo API | 7 endpoints |
| DevOps Components | 7 endpoints |
| Feature Flags | 6 endpoints |
| Operations | 11 endpoints |
| Remote Links | 5 endpoints |
| Security | 13 endpoints |
GET /rest/agile/1.0/board
Returns all boards visible to the user.
POST /rest/agile/1.0/board
Body:
{
"name": "Sprint Board",
"type": "scrum",
"filterId": 12345,
"location": {
"type": "project",
"projectKeyOrId": "PROJ"
}
}
GET /rest/agile/1.0/board/{boardId}
DELETE /rest/agile/1.0/board/{boardId}
GET /rest/agile/1.0/board/{boardId}/configuration
Returns board configuration including column config, estimation type, and ranking info.
GET /rest/agile/1.0/board/{boardId}/issue
Query params: startAt, maxResults, jql, validateQuery, fields, expand
POST /rest/agile/1.0/board/{boardId}/issue
Body:
{
"issues": ["PROJ-1", "PROJ-2"],
"rankBeforeIssue": "PROJ-3",
"rankAfterIssue": "PROJ-4",
"rankCustomFieldId": 10001
}
GET /rest/agile/1.0/board/{boardId}/backlog
POST /rest/agile/1.0/backlog/{boardId}/issue
Body:
{
"issues": ["PROJ-1", "PROJ-2"]
}
GET /rest/agile/1.0/board/{boardId}/sprint
POST /rest/agile/1.0/sprint
Body:
{
"name": "Sprint 1",
"originBoardId": 1,
"startDate": "2024-01-15T00:00:00.000Z",
"endDate": "2024-01-29T00:00:00.000Z",
"goal": "Sprint 1 goal"
}
GET /rest/agile/1.0/sprint/{sprintId}
PUT /rest/agile/1.0/sprint/{sprintId}
Body:
{
"name": "Updated Sprint Name",
"startDate": "2024-01-15T00:00:00.000Z",
"endDate": "2024-01-29T00:00:00.000Z",
"goal": "Updated goal",
"state": "active"
}
POST /rest/agile/1.0/sprint/{sprintId}
Body:
{
"name": "Updated Name",
"goal": "Updated goal",
"state": "closed"
}
DELETE /rest/agile/1.0/sprint/{sprintId}
GET /rest/agile/1.0/sprint/{sprintId}/issue
POST /rest/agile/1.0/sprint/{sprintId}/issue
Body:
{
"issues": ["PROJ-1", "PROJ-2"]
}
POST /rest/agile/1.0/sprint/{sprintId}/swap
Body:
{
"sprintToSwapWith": 5
}
GET /rest/agile/1.0/board/{boardId}/epic
GET /rest/agile/1.0/epic/{epicIdOrKey}
POST /rest/agile/1.0/epic/{epicIdOrKey}
Body:
{
"name": "Epic Name",
"summary": "Epic summary",
"color": "color_1",
"done": false
}
GET /rest/agile/1.0/epic/{epicIdOrKey}/issue
POST /rest/agile/1.0/epic/{epicIdOrKey}/issue
Body:
{
"issues": ["PROJ-1", "PROJ-2"]
}
PUT /rest/agile/1.0/epic/{epicIdOrKey}/rank
Body:
{
"rankBeforeEpic": "EPIC-2",
"rankAfterEpic": "EPIC-3",
"rankCustomFieldId": 10001
}
GET /rest/agile/1.0/epic/none/issue
POST /rest/agile/1.0/epic/none/issue
Body:
{
"issues": ["PROJ-1", "PROJ-2"]
}
PUT /rest/agile/1.0/issue/rank
Body:
{
"issues": ["PROJ-1", "PROJ-2"],
"rankAfterIssue": "PROJ-3",
"rankBeforeIssue": "PROJ-4",
"rankCustomFieldId": 10001
}
GET /rest/agile/1.0/issue/{issueIdOrKey}
Returns issue with Agile fields (sprint, closedSprints, flagged, epic).
GET /rest/agile/1.0/issue/{issueIdOrKey}/estimation?boardId={boardId}
PUT /rest/agile/1.0/issue/{issueIdOrKey}/estimation
Body:
{
"boardId": 1,
"value": "3h"
}
Accepts formats: "1w", "2d", "3h", "20m" or number (minutes).
GET /rest/api/3/issue/{issueIdOrKey}
Query params: fields, expand, properties, updateHistory
Examples:
GET /rest/api/3/issue/PROJ-123
GET /rest/api/3/issue/PROJ-123?fields=summary,status,assignee
GET /rest/api/3/issue/PROJ-123?expand=changelog
POST /rest/api/3/issue
Body:
{
"fields": {
"project": { "key": "PROJECT_KEY" },
"summary": "Issue title",
"description": {
"type": "doc",
"version": 1,
"content": [
{ "type": "paragraph", "content": [{ "type": "text", "text": "Description" }] }
]
},
"issuetype": { "name": "Task" },
"priority": { "id": "3" },
"assignee": { "accountId": "USER_ACCOUNT_ID" }
}
}
PUT /rest/api/3/issue/{issueIdOrKey}
Body:
{
"fields": {
"summary": "Updated summary",
"description": { ... }
},
"update": {
"labels": [
{ "add": "bugfix" },
{ "remove": "blocker" }
]
}
}
DELETE /rest/api/3/issue/{issueIdOrKey}?deleteSubtasks=true
PUT /rest/api/3/issue/{issueIdOrKey}/assignee
Body:
{
"accountId": "USER_ACCOUNT_ID"
}
Use "accountId": "-1" for default assignee, null for unassigned.
GET /rest/api/3/search?jql={jql}&startAt={offset}&maxResults={limit}&fields={fields}
Query params: jql, startAt, maxResults, fields, expand, properties
Examples:
GET /rest/api/3/search?jql=project=PMG ORDER BY created DESC
GET /rest/api/3/search?jql=assignee=currentUser()&maxResults=50
GET /rest/api/3/issue/{issueIdOrKey}/transitions
POST /rest/api/3/issue/{issueIdOrKey}/transitions
Body:
{
"transition": { "id": "21" }
}
POST /rest/api/3/issue/{issueIdOrKey}/comment
Body:
{
"body": {
"type": "doc",
"version": 1,
"content": [
{ "type": "paragraph", "content": [{ "type": "text", "text": "Comment text" }] }
]
}
}
POST /rest/api/3/issue/{issueIdOrKey}/notify
Body:
{
"subject": "Subject",
"textBody": "Body text",
"to": { "reporter": true },
"restrict": { "group": { "name": "jira-software-users" } }
}
GET /rest/api/3/issue/createmeta?projectKeys={project}&issuetypeNames={type}
GET /rest/api/3/issue/{issueIdOrKey}/editmeta
GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes
GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}
POST /rest/api/3/issue/bulk
Body:
{
"issueUpdates": [
{ "fields": { "project": { "key": "PROJ" }, "summary": "...", "issuetype": { "name": "Task" } } },
{ "fields": { "project": { "key": "PROJ" }, "summary": "...", "issuetype": { "name": "Bug" } } }
]
}
POST /rest/api/3/issue/bulkfetch
Body:
{
"issueIdsOrKeys": ["PROJ-1", "PROJ-2", "10005"],
"fields": ["summary", "project", "status", "assignee"],
"properties": []
}
POST /rest/api/3/changelog/bulkfetch
Body:
{
"issueIdsOrKeys": ["PROJ-1", "PROJ-2"],
"fieldIds": ["status", "assignee"],
"maxResults": 100
}
GET /rest/api/3/issue/{issueIdOrKey}/changelog?startAt=0&maxResults=50
POST /rest/api/3/issue/{issueIdOrKey}/changelog/list
Body:
{
"changelogIds": [10001, 10002]
}
GET /rest/api/3/project
GET /rest/api/3/project/{projectIdOrKey}
GET /rest/api/3/user?accountId={accountId}
GET /rest/api/3/myself
GET /rest/api/3/user/search?query={query}&maxResults={limit}
GET /rest/api/3/events
POST /rest/builds/0.1/bulk
Note: Requires Connect JWT token or OAuth token for on-premise integration.
GET /rest/builds/0.1/pipelines/{pipelineId}/builds/{buildNumber}
| Status | Meaning |
|--------|---------|
| 400 | Bad request or malformed data |
| 401 | Invalid credentials or expired token |
| 403 | Permission denied |
| 404 | Resource not found |
| 409 | Conflict |
| 429 | Rate limited - wait and retry |
| 500 | Internal server error |
PROJ-123 format for keys, numeric ID for direct lookups
GET /rest/api/3/issue/{key}/transitions
?expand=changelog on issue GET to retrieve full change history
共 1 个版本