← Back to Skills Marketplace
jeffersonling1217-png

Publish Jira

by AlienTree · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
82
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install jira-atlassian
Description
Full-featured Atlassian Jira Cloud REST API v3 skill. Manage issues, sprints, boards, epics, projects, users, and more via direct Jira API calls. Use when ma...
README (SKILL.md)

\r \r

Jira Integration\r

\r Interact with Atlassian Jira Cloud via REST API v3.\r \r

Authentication\r

\r Use Basic Auth with email and API token:\r \r Required Environment Variables:\r

[email protected]\r
JIRA_API_TOKEN=your_api_token\r
JIRA_DOMAIN=your_domain  # e.g. "yourcompany" for yourcompany.atlassian.net\r
```\r
\r
**Credentials:**\r
- Email: `$JIRA_EMAIL`\r
- API Token: `$JIRA_API_TOKEN`\r
- Domain: `https://$JIRA_DOMAIN.atlassian.net`\r
\r
**Base URL:**\r
```\r
https://$JIRA_DOMAIN.atlassian.net/rest/api/3\r
```\r
\r
**Jira Software (Agile) Base URL:**\r
```\r
https://$JIRA_DOMAIN.atlassian.net/rest/agile/1.0\r
```\r
\r
**Generate API Token:**\r
1. Go to https://id.atlassian.com/manage-profile/security/api-tokens\r
2. Click "Create API token"\r
3. Label it (e.g., "nanobot")\r
4. Copy the token\r
\r
## Common Headers\r
\r
```\r
Content-Type: application/json\r
Accept: application/json\r
Authorization: Basic base64(email:token)\r
```\r
\r
---\r
\r
# Complete API Reference\r
\r
## Total API Summary\r
\r
| Category | Count |\r
|----------|-------|\r
| **Total Endpoints** | 122 |\r
| **Total Schemas** | 64 |\r
| **Jira Software (Agile)** | 51 endpoints |\r
| **Builds API** | 9 endpoints |\r
| **Deployments API** | 7 endpoints |\r
| **DevInfo API** | 7 endpoints |\r
| **DevOps Components** | 7 endpoints |\r
| **Feature Flags** | 6 endpoints |\r
| **Operations** | 11 endpoints |\r
| **Remote Links** | 5 endpoints |\r
| **Security** | 13 endpoints |\r
\r
---\r
\r
## Jira Software (Agile) API\r
\r
### Boards\r
\r
#### Get All Boards\r
```\r
GET /rest/agile/1.0/board\r
```\r
Returns all boards visible to the user.\r
\r
#### Create Board\r
```\r
POST /rest/agile/1.0/board\r
```\r
Body:\r
```json\r
{\r
  "name": "Sprint Board",\r
  "type": "scrum",\r
  "filterId": 12345,\r
  "location": {\r
    "type": "project",\r
    "projectKeyOrId": "PROJ"\r
  }\r
}\r
```\r
\r
#### Get Board by ID\r
```\r
GET /rest/agile/1.0/board/{boardId}\r
```\r
\r
#### Delete Board\r
```\r
DELETE /rest/agile/1.0/board/{boardId}\r
```\r
\r
#### Get Board Configuration\r
```\r
GET /rest/agile/1.0/board/{boardId}/configuration\r
```\r
Returns board configuration including column config, estimation type, and ranking info.\r
\r
#### Get Issues for Board\r
```\r
GET /rest/agile/1.0/board/{boardId}/issue\r
```\r
Query params: `startAt`, `maxResults`, `jql`, `validateQuery`, `fields`, `expand`\r
\r
#### Move Issues to Board\r
```\r
POST /rest/agile/1.0/board/{boardId}/issue\r
```\r
Body:\r
```json\r
{\r
  "issues": ["PROJ-1", "PROJ-2"],\r
  "rankBeforeIssue": "PROJ-3",\r
  "rankAfterIssue": "PROJ-4",\r
  "rankCustomFieldId": 10001\r
}\r
```\r
\r
#### Get Backlog Issues\r
```\r
GET /rest/agile/1.0/board/{boardId}/backlog\r
```\r
\r
#### Move Issues to Backlog\r
```\r
POST /rest/agile/1.0/backlog/{boardId}/issue\r
```\r
Body:\r
```json\r
{\r
  "issues": ["PROJ-1", "PROJ-2"]\r
}\r
```\r
\r
---\r
\r
### Sprints\r
\r
#### Get All Sprints\r
```\r
GET /rest/agile/1.0/board/{boardId}/sprint\r
```\r
\r
#### Create Sprint\r
```\r
POST /rest/agile/1.0/sprint\r
```\r
Body:\r
```json\r
{\r
  "name": "Sprint 1",\r
  "originBoardId": 1,\r
  "startDate": "2024-01-15T00:00:00.000Z",\r
  "endDate": "2024-01-29T00:00:00.000Z",\r
  "goal": "Sprint 1 goal"\r
}\r
```\r
\r
#### Get Sprint\r
```\r
GET /rest/agile/1.0/sprint/{sprintId}\r
```\r
\r
#### Update Sprint (Full)\r
```\r
PUT /rest/agile/1.0/sprint/{sprintId}\r
```\r
Body:\r
```json\r
{\r
  "name": "Updated Sprint Name",\r
  "startDate": "2024-01-15T00:00:00.000Z",\r
  "endDate": "2024-01-29T00:00:00.000Z",\r
  "goal": "Updated goal",\r
  "state": "active"\r
}\r
```\r
\r
#### Partially Update Sprint\r
```\r
POST /rest/agile/1.0/sprint/{sprintId}\r
```\r
Body:\r
```json\r
{\r
  "name": "Updated Name",\r
  "goal": "Updated goal",\r
  "state": "closed"\r
}\r
```\r
\r
#### Delete Sprint\r
```\r
DELETE /rest/agile/1.0/sprint/{sprintId}\r
```\r
\r
#### Get Issues for Sprint\r
```\r
GET /rest/agile/1.0/sprint/{sprintId}/issue\r
```\r
\r
#### Move Issues to Sprint\r
```\r
POST /rest/agile/1.0/sprint/{sprintId}/issue\r
```\r
Body:\r
```json\r
{\r
  "issues": ["PROJ-1", "PROJ-2"]\r
}\r
```\r
\r
#### Swap Sprint\r
```\r
POST /rest/agile/1.0/sprint/{sprintId}/swap\r
```\r
Body:\r
```json\r
{\r
  "sprintToSwapWith": 5\r
}\r
```\r
\r
---\r
\r
### Epics\r
\r
#### Get Epics for Board\r
```\r
GET /rest/agile/1.0/board/{boardId}/epic\r
```\r
\r
#### Get Epic\r
```\r
GET /rest/agile/1.0/epic/{epicIdOrKey}\r
```\r
\r
#### Partially Update Epic\r
```\r
POST /rest/agile/1.0/epic/{epicIdOrKey}\r
```\r
Body:\r
```json\r
{\r
  "name": "Epic Name",\r
  "summary": "Epic summary",\r
  "color": "color_1",\r
  "done": false\r
}\r
```\r
\r
#### Get Issues for Epic\r
```\r
GET /rest/agile/1.0/epic/{epicIdOrKey}/issue\r
```\r
\r
#### Move Issues to Epic\r
```\r
POST /rest/agile/1.0/epic/{epicIdOrKey}/issue\r
```\r
Body:\r
```json\r
{\r
  "issues": ["PROJ-1", "PROJ-2"]\r
}\r
```\r
\r
#### Rank Epics\r
```\r
PUT /rest/agile/1.0/epic/{epicIdOrKey}/rank\r
```\r
Body:\r
```json\r
{\r
  "rankBeforeEpic": "EPIC-2",\r
  "rankAfterEpic": "EPIC-3",\r
  "rankCustomFieldId": 10001\r
}\r
```\r
\r
#### Get Issues Without Epic\r
```\r
GET /rest/agile/1.0/epic/none/issue\r
```\r
\r
#### Remove Issues from Epic\r
```\r
POST /rest/agile/1.0/epic/none/issue\r
```\r
Body:\r
```json\r
{\r
  "issues": ["PROJ-1", "PROJ-2"]\r
}\r
```\r
\r
---\r
\r
### Issue Ranking\r
\r
#### Rank Issues\r
```\r
PUT /rest/agile/1.0/issue/rank\r
```\r
Body:\r
```json\r
{\r
  "issues": ["PROJ-1", "PROJ-2"],\r
  "rankAfterIssue": "PROJ-3",\r
  "rankBeforeIssue": "PROJ-4",\r
  "rankCustomFieldId": 10001\r
}\r
```\r
\r
#### Get Agile Issue\r
```\r
GET /rest/agile/1.0/issue/{issueIdOrKey}\r
```\r
Returns issue with Agile fields (sprint, closedSprints, flagged, epic).\r
\r
#### Get Issue Estimation\r
```\r
GET /rest/agile/1.0/issue/{issueIdOrKey}/estimation?boardId={boardId}\r
```\r
\r
#### Estimate Issue\r
```\r
PUT /rest/agile/1.0/issue/{issueIdOrKey}/estimation\r
```\r
Body:\r
```json\r
{\r
  "boardId": 1,\r
  "value": "3h"\r
}\r
```\r
Accepts formats: "1w", "2d", "3h", "20m" or number (minutes).\r
\r
---\r
\r
## Jira Platform API\r
\r
### Issues (CRUD Operations)\r
\r
#### Get Issue\r
```\r
GET /rest/api/3/issue/{issueIdOrKey}\r
```\r
Query params: `fields`, `expand`, `properties`, `updateHistory`\r
Examples:\r
- `GET /rest/api/3/issue/PROJ-123`\r
- `GET /rest/api/3/issue/PROJ-123?fields=summary,status,assignee`\r
- `GET /rest/api/3/issue/PROJ-123?expand=changelog`\r
\r
#### Create Issue\r
```\r
POST /rest/api/3/issue\r
```\r
Body:\r
```json\r
{\r
  "fields": {\r
    "project": { "key": "PROJECT_KEY" },\r
    "summary": "Issue title",\r
    "description": {\r
      "type": "doc",\r
      "version": 1,\r
      "content": [\r
        { "type": "paragraph", "content": [{ "type": "text", "text": "Description" }] }\r
      ]\r
    },\r
    "issuetype": { "name": "Task" },\r
    "priority": { "id": "3" },\r
    "assignee": { "accountId": "USER_ACCOUNT_ID" }\r
  }\r
}\r
```\r
\r
#### Edit Issue\r
```\r
PUT /rest/api/3/issue/{issueIdOrKey}\r
```\r
Body:\r
```json\r
{\r
  "fields": {\r
    "summary": "Updated summary",\r
    "description": { ... }\r
  },\r
  "update": {\r
    "labels": [\r
      { "add": "bugfix" },\r
      { "remove": "blocker" }\r
    ]\r
  }\r
}\r
```\r
\r
#### Delete Issue\r
```\r
DELETE /rest/api/3/issue/{issueIdOrKey}?deleteSubtasks=true\r
```\r
\r
#### Assign Issue\r
```\r
PUT /rest/api/3/issue/{issueIdOrKey}/assignee\r
```\r
Body:\r
```json\r
{\r
  "accountId": "USER_ACCOUNT_ID"\r
}\r
```\r
Use `"accountId": "-1"` for default assignee, `null` for unassigned.\r
\r
---\r
\r
### Search (JQL)\r
\r
#### Search Issues\r
```\r
GET /rest/api/3/search?jql={jql}&startAt={offset}&maxResults={limit}&fields={fields}\r
```\r
Query params: `jql`, `startAt`, `maxResults`, `fields`, `expand`, `properties`\r
Examples:\r
- `GET /rest/api/3/search?jql=project=PMG ORDER BY created DESC`\r
- `GET /rest/api/3/search?jql=assignee=currentUser()&maxResults=50`\r
\r
---\r
\r
### Issue Operations\r
\r
#### Get Transitions\r
```\r
GET /rest/api/3/issue/{issueIdOrKey}/transitions\r
```\r
\r
#### Transition Issue\r
```\r
POST /rest/api/3/issue/{issueIdOrKey}/transitions\r
```\r
Body:\r
```json\r
{\r
  "transition": { "id": "21" }\r
}\r
```\r
\r
#### Add Comment\r
```\r
POST /rest/api/3/issue/{issueIdOrKey}/comment\r
```\r
Body:\r
```json\r
{\r
  "body": {\r
    "type": "doc",\r
    "version": 1,\r
    "content": [\r
      { "type": "paragraph", "content": [{ "type": "text", "text": "Comment text" }] }\r
    ]\r
  }\r
}\r
```\r
\r
#### Send Notification\r
```\r
POST /rest/api/3/issue/{issueIdOrKey}/notify\r
```\r
Body:\r
```json\r
{\r
  "subject": "Subject",\r
  "textBody": "Body text",\r
  "to": { "reporter": true },\r
  "restrict": { "group": { "name": "jira-software-users" } }\r
}\r
```\r
\r
---\r
\r
### Issue Metadata\r
\r
#### Get Create Issue Metadata\r
```\r
GET /rest/api/3/issue/createmeta?projectKeys={project}&issuetypeNames={type}\r
```\r
\r
#### Get Edit Metadata\r
```\r
GET /rest/api/3/issue/{issueIdOrKey}/editmeta\r
```\r
\r
#### Get Create Metadata for Project\r
```\r
GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes\r
```\r
\r
#### Get Create Metadata for Project & Issue Type\r
```\r
GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}\r
```\r
\r
---\r
\r
### Bulk Operations\r
\r
#### Bulk Create Issues (up to 50)\r
```\r
POST /rest/api/3/issue/bulk\r
```\r
Body:\r
```json\r
{\r
  "issueUpdates": [\r
    { "fields": { "project": { "key": "PROJ" }, "summary": "...", "issuetype": { "name": "Task" } } },\r
    { "fields": { "project": { "key": "PROJ" }, "summary": "...", "issuetype": { "name": "Bug" } } }\r
  ]\r
}\r
```\r
\r
#### Bulk Fetch Issues (up to 100)\r
```\r
POST /rest/api/3/issue/bulkfetch\r
```\r
Body:\r
```json\r
{\r
  "issueIdsOrKeys": ["PROJ-1", "PROJ-2", "10005"],\r
  "fields": ["summary", "project", "status", "assignee"],\r
  "properties": []\r
}\r
```\r
\r
#### Bulk Fetch Changelogs\r
```\r
POST /rest/api/3/changelog/bulkfetch\r
```\r
Body:\r
```json\r
{\r
  "issueIdsOrKeys": ["PROJ-1", "PROJ-2"],\r
  "fieldIds": ["status", "assignee"],\r
  "maxResults": 100\r
}\r
```\r
\r
#### Get Changelogs\r
```\r
GET /rest/api/3/issue/{issueIdOrKey}/changelog?startAt=0&maxResults=50\r
```\r
\r
#### Get Changelogs by IDs\r
```\r
POST /rest/api/3/issue/{issueIdOrKey}/changelog/list\r
```\r
Body:\r
```json\r
{\r
  "changelogIds": [10001, 10002]\r
}\r
```\r
\r
---\r
\r
### Projects\r
\r
#### Get Projects\r
```\r
GET /rest/api/3/project\r
```\r
\r
#### Get Project\r
```\r
GET /rest/api/3/project/{projectIdOrKey}\r
```\r
\r
---\r
\r
### Users\r
\r
#### Get User\r
```\r
GET /rest/api/3/user?accountId={accountId}\r
```\r
\r
#### Get Current User (Myself)\r
```\r
GET /rest/api/3/myself\r
```\r
\r
#### Search Users\r
```\r
GET /rest/api/3/user/search?query={query}&maxResults={limit}\r
```\r
\r
---\r
\r
### Issue Events\r
\r
#### Get Events (Admin)\r
```\r
GET /rest/api/3/events\r
```\r
\r
---\r
\r
## DevOps Integration APIs\r
\r
### Build Information API\r
\r
#### Submit Build Data\r
```\r
POST /rest/builds/0.1/bulk\r
```\r
**Note:** Requires Connect JWT token or OAuth token for on-premise integration.\r
\r
#### Get Build by Key\r
```\r
GET /rest/builds/0.1/pipelines/{pipelineId}/builds/{buildNumber}\r
```\r
\r
---\r
\r
## Error Handling\r
\r
| Status | Meaning |\r
|--------|---------|\r
| 400 | Bad request or malformed data |\r
| 401 | Invalid credentials or expired token |\r
| 403 | Permission denied |\r
| 404 | Resource not found |\r
| 409 | Conflict |\r
| 429 | Rate limited - wait and retry |\r
| 500 | Internal server error |\r
\r
---\r
\r
## Notes\r
\r
- **JQL (Jira Query Language)**: Use JQL for powerful issue search and filtering\r
- **Issue IDs vs Keys**: Use `PROJ-123` format for keys, numeric ID for direct lookups\r
- **Transition IDs**: Get available transitions first via `GET /rest/api/3/issue/{key}/transitions`\r
- **Account IDs**: Jira Cloud uses account IDs for users - get them via the users API\r
- **Bulk Operations**: Use bulk endpoints for efficiency when creating/fetching multiple issues\r
- **Expand**: Use `?expand=changelog` on issue GET to retrieve full change history\r
Usage Guidance
This skill appears coherent, but be cautious before providing real credentials: use a dedicated Jira API token with least privilege (or a service account) and point it at a test project first. Verify the skill’s source/homepage and consider rotating the token after testing. Because the agent will make API calls using your token, audit your Jira access logs and limit network exposure if possible. If you need stronger assurance, request the skill author’s provenance or use an intermediary proxy that logs outbound calls for inspection.
Capability Analysis
Type: OpenClaw Skill Name: jira-atlassian Version: 1.0.0 The skill bundle is a documentation-only integration for the Atlassian Jira Cloud REST API v3. It contains no executable code and provides a comprehensive reference for managing Jira issues, boards, and sprints. While it requires sensitive environment variables (JIRA_API_TOKEN), this is standard for the stated purpose, and there are no instructions or patterns indicating malicious intent, data exfiltration, or prompt injection attacks in SKILL.md.
Capability Tags
cryptorequires-oauth-token
Capability Assessment
Purpose & Capability
Name/description describe a Jira Cloud REST API integration and the required environment variables (JIRA_EMAIL, JIRA_API_TOKEN, JIRA_DOMAIN) directly match that purpose; no unrelated services, binaries, or config paths are requested.
Instruction Scope
SKILL.md contains API endpoint usage, sample requests, and auth instructions limited to Jira REST endpoints. It does not instruct reading unrelated files, scanning system state, or sending data to external endpoints outside the Jira domain templates.
Install Mechanism
Instruction-only skill with no install spec and no code files — nothing is written to disk or downloaded during install, which is low-risk and appropriate for a documentation-driven integration.
Credentials
Only three env vars are required (email, API token, domain), all necessary for Basic Auth against Jira Cloud. The API token is sensitive but its presence is justified by the described functionality.
Persistence & Privilege
always is false and the skill is user-invocable; it does not request persistent system-level privileges or modify other skills. Autonomous invocation is allowed (platform default) but not combined with other concerning privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install jira-atlassian
  3. After installation, invoke the skill by name or use /jira-atlassian
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of full-featured Atlassian Jira Cloud REST API v3 integration. - Manage Jira issues, sprints, boards, epics, projects, and users via direct API calls. - Supports 122 endpoints across core, agile, builds, deployments, devops, and security APIs. - Includes detailed documentation for endpoints and request formats. - Requires Atlassian email, API token, and domain for secure authentication. - Ideal for automating Jira tasks, running JQL queries, and integrating with Jira projects.
Metadata
Slug jira-atlassian
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Publish Jira?

Full-featured Atlassian Jira Cloud REST API v3 skill. Manage issues, sprints, boards, epics, projects, users, and more via direct Jira API calls. Use when ma... It is an AI Agent Skill for Claude Code / OpenClaw, with 82 downloads so far.

How do I install Publish Jira?

Run "/install jira-atlassian" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Publish Jira free?

Yes, Publish Jira is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Publish Jira support?

Publish Jira is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Publish Jira?

It is built and maintained by AlienTree (@jeffersonling1217-png); the current version is v1.0.0.

💬 Comments