Reference · Tools
Jira Software
Manage Jira issues, comments, attachments, and users via the Jira REST API.
The Jira Software node manages issues, comments, attachments and users through the Jira REST API, handling binary attachments in both directions. A typical build is opening an issue from an inbound bug report, attaching the customer's screenshot, and commenting as the investigation progresses.
- Node type
- Action (binary)
- Parameters
- 66
- Outputs
- Output, Error
- Credentials
- Jira API
Jira Software
Manage Jira issues, comments, attachments, and users
Overview
The Jira Software tool provides full CRUD operations against the Jira REST API v2/v3. Supports four resources: (1) Issue — create, update, get, getAll (JQL search), delete, changelog, notify, transitions/status. (2) Issue Attachment — add (upload binary), get (download binary), getAll, remove. (3) Issue Comment — add, get, getAll, remove, update (supports ADF and wiki markup). (4) User — create, get, delete. Works with both Jira Cloud (email + API token) and Jira Server/Data Center (username + password, or PAT). Attachment operations handle binary data: upload reads from the item’s binary property, download writes fetched content to the binary store.
Category: Productivity
Tool Name: jira
Version: 1
Appearance: Icon: si-jira | Color: #0052CC
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Jira API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Issue | issue |
| Issue Attachment | issueAttachment |
| Issue Comment | issueComment |
| User | user |
Operations
Issue (issue)
| Operation | Value | Description |
|---|---|---|
| Changelog | changelog | Get issue changelog. |
| Create | create | Create a new issue. |
| Delete | delete | Delete an issue. |
| Get | get | Get an issue. |
| Get Many | getAll | Search/get many issues via JQL. |
| Notify | notify | Create an email notification for an issue. |
| Status | transitions | Get available transitions for an issue. |
| Update | update | Update an issue. |
Issue Attachment (issueAttachment)
| Operation | Value | Description |
|---|---|---|
| Add | add | Add attachment to an issue. |
| Get | get | Get an attachment. |
| Get Many | getAll | Get many attachments from an issue. |
| Remove | remove | Remove an attachment. |
Issue Comment (issueComment)
| Operation | Value | Description |
|---|---|---|
| Add | add | Add comment to an issue. |
| Get | get | Get a comment. |
| Get Many | getAll | Get many comments. |
| Remove | remove | Remove a comment. |
| Update | update | Update a comment. |
User (user)
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a new user. |
| Delete | delete | Delete a user. |
| Get | get | Retrieve a user. |
Parameters
Issue: Changelog
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue whose changelog to read (e.g. PROJ-123). Supports expressions. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to the limit. |
Limit (limit) | number | No | 50 | Max number of results to return. Accepts 1–100. (shown when Return All is false) |
Issue: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project | string | Yes | — | Project ID. Obtain from Jira project settings or GET /rest/api/2/project. Supports expressions. |
| Issue Type | string | Yes | — | Issue type ID. Obtain from GET /rest/api/2/project/{projectId} (issueTypes array). Supports expressions. |
| Summary | string | Yes | — | Issue title/summary. Supports expressions. |
Additional Fields (additionalFields) | collection | No | {} | Optional fields to set on the new issue. |
| — Assignee | string | No | — | User identifier. Cloud: accountId. Server: username. |
| — Component IDs | string | No | — | Comma-separated component IDs. |
| — Custom Fields (JSON) | json | No | {} | JSON object of custom field key-value pairs (e.g. {“customfield_10001”: “value”}). |
| — Description | string | No | — | Issue description text. |
| — Labels | string | No | — | Comma-separated label strings. |
| — Parent Issue Key | string | No | — | Parent issue key (required when issue type is sub-task). Will be upper-cased. |
| — Priority | string | No | — | Priority ID. Obtain from GET /rest/api/2/priority. |
| — Reporter | string | No | — | Reporter user identifier. Cloud: accountId. Server: username. |
| — Update History | boolean | No | false | Whether to update the user’s issue view history. |
Issue: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue to delete. Supports expressions. |
| Delete Subtasks | boolean | No | false | Whether to also delete subtasks of this issue. |
Issue: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue (e.g. PROJ-123). Supports expressions. |
| Simplify Output | boolean | No | false | Whether to simplify the output by flattening field IDs to display names. |
Additional Fields (additionalFields) | collection | No | {} | Controls how much of the issue is returned. |
| — Expand | string | No | — | Comma-separated expand options: renderedFields, names, schema, transitions, editmeta, changelog, versionedRepresentations. |
| — Fields | string | No | — | Comma-separated field list to return. |
| — Fields by Key | boolean | No | false | Use field keys instead of IDs. |
| — Properties | string | No | — | Comma-separated issue property keys. |
| — Update History | boolean | No | false | Whether to update the user’s recent issue view history. |
Issue: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to the limit. |
Limit (limit) | number | No | 50 | Max number of results to return. Accepts 1–100. (shown when Return All is false) |
Options (options) | collection | No | {} | Search options. |
| — Expand | string | No | — | Comma-separated expand options. |
| — Fields | string | No | *navigable | Comma-separated list of fields to return. Default: *navigable. |
| — JQL | string | No | — | JQL query to filter issues. Default searches all issues. |
Issue: Notify
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue the notification is about. Supports expressions. |
JSON Parameters (jsonParameters) | boolean | No | false | Whether to provide recipients as raw JSON. |
Additional Fields (additionalFields) | collection | No | {} | The content of the email that is sent. |
| — Subject | string | No | — | Email subject. |
| — Text Body | string | No | — | Plain text email body. |
| — HTML Body | string | No | — | HTML email body. |
| Notification Recipients (JSON) | json | No | {} | JSON object for “to” field: { reporter: bool, assignee: bool, watchers: bool, voters: bool, users: [{accountId: ”…”}], groups: [{name: ”…”}] } (shown when JSON Parameters is true) |
| Notification Restrictions (JSON) | json | No | {} | JSON object for “restrict” field: { groups: [{name: ”…”}] } (shown when JSON Parameters is true) |
| Notification Recipients | collection | No | {} | Who receives the notification. (shown when JSON Parameters is false) |
| — Reporter | boolean | No | false | Notify the issue reporter. |
| — Assignee | boolean | No | false | Notify the current assignee. |
| — Watchers | boolean | No | false | Notify everyone watching the issue. |
| — Voters | boolean | No | false | Notify everyone who voted on the issue. |
| — Users (comma-separated accountIds) | string | No | — | Comma-separated list of user accountIds. |
| — Groups (comma-separated names) | string | No | — | Comma-separated list of group names. |
| Notification Restrictions | collection | No | {} | Restricts delivery to the groups you name. (shown when JSON Parameters is false) |
| — Groups (comma-separated names) | string | No | — | Comma-separated list of group names to restrict notification to. |
Issue: Status
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue whose transitions to list. Supports expressions. |
Additional Fields (additionalFields) | collection | No | {} | Narrows or widens the transition list. |
| — Transition ID | string | No | — | Filter to a specific transition ID. |
| — Expand | string | No | — | Use “transitions.fields” to get screen fields. |
| — Skip Remote Only Condition | boolean | No | false | Include transitions normally hidden. |
Issue: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue to update (e.g. PROJ-123). Supports expressions. |
| Update Fields | collection | No | {} | The fields to change. Anything you leave out keeps its current value. |
| — Assignee | string | No | — | User identifier. Cloud: accountId. Server: username. |
| — Custom Fields (JSON) | json | No | {} | JSON object of custom field key-value pairs. |
| — Description | string | No | — | Issue description text. |
| — Issue Type | string | No | — | Issue type ID to change to. |
| — Labels | string | No | — | Comma-separated label strings. |
| — Parent Issue Key | string | No | — | Parent issue key (required for sub-task types). |
| — Priority | string | No | — | Priority ID. |
| — Reporter | string | No | — | Reporter user identifier. |
| — Status (Transition ID) | string | No | — | Transition ID. If set, will first execute the transition, then update other fields. |
| — Summary | string | No | — | Issue title/summary. |
Issue Attachment: Add
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue to attach the file to. Supports expressions. |
Binary Property (binaryPropertyName) | string | Yes | data | Name of the binary property on the input item containing the file to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
Issue Attachment: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Attachment ID (attachmentId) | string | Yes | — | The ID of the attachment. Supports expressions. |
Download (download) | boolean | No | false | Whether to download the attachment binary content. |
Binary Property (binaryProperty) | string | No | data | Name of the output binary property to store the downloaded file. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when Download is true) |
Issue Attachment: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue whose attachments to list. Supports expressions. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to the limit. |
Limit (limit) | number | No | 50 | Max number of results to return. Accepts 1–100. (shown when Return All is false) |
Download (download) | boolean | No | false | Whether to download the attachment binary content. |
Binary Property (binaryProperty) | string | No | data | Name of the output binary property. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when Download is true) |
Issue Attachment: Remove
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Attachment ID (attachmentId) | string | Yes | — | The ID of the attachment to remove. Supports expressions. |
Issue Comment: Add
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue to comment on. Supports expressions. |
JSON Parameters (jsonParameters) | boolean | No | false | Whether to provide the comment body as raw Atlassian Document Format JSON. |
| Comment | string | No | — | The comment text. On Cloud, this is sent as ADF (unless wiki markup is enabled). On Server, this is plain text. Supports expressions. (shown when JSON Parameters is false) |
| Document Format (JSON) | json | No | — | Raw Atlassian Document Format JSON body for the comment. Provide it as a JSON string. (shown when JSON Parameters is true) |
Options (options) | collection | No | {} | Extra comment options. |
| — Expand | string | No | — | Use “renderedBody” to get rendered HTML. |
| — Wiki Markup | boolean | No | false | Cloud only: send comment as wiki markup using API v2 instead of ADF v3. |
Issue Comment: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue the comment belongs to. Supports expressions. |
Comment ID (commentId) | string | Yes | — | The ID of the comment to retrieve. Supports expressions. |
Options (options) | collection | No | {} | Extra comment options. |
| — Expand | string | No | — | Use “renderedBody” to get rendered HTML. |
Issue Comment: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue whose comments to list. Supports expressions. |
Return All (returnAll) | boolean | No | false | Whether to return all results or only up to the limit. |
Limit (limit) | number | No | 50 | Max number of results to return. Accepts 1–100. (shown when Return All is false) |
Options (options) | collection | No | {} | Extra comment options. |
| — Expand | string | No | — | Use “renderedBody” to get rendered HTML. |
| — Order By | options | No | +created | Sort order for comments. |
Options: +created (created ascending), -created (created descending) |
Issue Comment: Remove
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue the comment belongs to. Supports expressions. |
Comment ID (commentId) | string | Yes | — | The ID of the comment to remove. Supports expressions. |
Issue Comment: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Issue Key (issueKey) | string | Yes | — | The key of the issue the comment belongs to. Supports expressions. |
Comment ID (commentId) | string | Yes | — | The ID of the comment to update. Supports expressions. |
JSON Parameters (jsonParameters) | boolean | No | false | Whether to provide the comment body as raw Atlassian Document Format JSON. |
| Comment | string | No | — | The comment text. On Cloud, this is sent as ADF (unless wiki markup is enabled). On Server, this is plain text. Supports expressions. (shown when JSON Parameters is false) |
| Document Format (JSON) | json | No | — | Raw Atlassian Document Format JSON body for the comment. Provide it as a JSON string. (shown when JSON Parameters is true) |
Options (options) | collection | No | {} | Extra comment options. |
| — Expand | string | No | — | Use “renderedBody” to get rendered HTML. |
| — Wiki Markup | boolean | No | false | Cloud only: send comment as wiki markup using API v2 instead of ADF v3. |
User: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Username | string | Yes | — | The user name to create the account under. Supports expressions. |
| Email Address | string | Yes | — | Email address of the new user. Supports expressions. |
| Display Name | string | Yes | — | Name shown for the new user in Jira. Supports expressions. |
Additional Fields (additionalFields) | collection | No | {} | Optional settings applied when the account is created. |
| — Password | string | No | — | Password for the user. If not set, a random password is generated. |
| — Notification | boolean | No | false | Whether to send the user an email confirmation. |
User: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Account ID (accountId) | string | Yes | — | The account ID of the user to delete. Supports expressions. |
User: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Account ID (accountId) | string | Yes | — | The account ID of the user to retrieve. Supports expressions. |
Additional Fields (additionalFields) | collection | No | {} | Extra detail to include with the user. |
| — Expand | multiOptions | No | [] | Extra sections to return alongside the user record. |
Options: groups (include all groups to which the user belongs), applicationRoles (include details of all applications the user can access) |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Jira Version | options | No | cloud | Select Jira deployment type. Cloud uses email + API token. Server uses email + password. Server PAT uses a personal access token. |
Options: cloud, server (self hosted), serverPat (self hosted, authenticates with a personal access token) | ||||
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. Accepts 1–100. |
Output Data
Each output item’s JSON is the Jira response for that call — the incoming item JSON is replaced, not merged, so read anything you still need from the item upstream of this node. Operations that only confirm an action emit { "success": true } instead of a record. Binary data on the input item is forwarded on every Issue Attachment, Issue Comment and User operation, and on the Issue operations that fan out; the single-item Issue operations (Create, Update, Get, Delete, Notify) emit JSON only.
Five operations fan out, producing one output item per record instead of one per input item:
- Issue: Get Many — one item per matching issue. With Return All on, every page of the JQL search is fetched; otherwise the search is capped at Limit. When the search matches nothing, that input item produces no output items at all.
- Issue: Changelog — one item per changelog entry, with the same Return All / Limit behavior, and likewise no output items when the issue has no changelog history.
- Issue: Status — one item per available transition. When the issue has no available transitions, a single item
{ "transitions": [] }is emitted instead. - Issue Attachment: Get Many — one item per attachment on the issue, capped at Limit unless Return All is on. With Download on, each item also carries that attachment’s file on the binary property you named. When the issue has no attachments, a single item
{ "attachments": [] }is emitted instead. - Issue Comment: Get Many — one item per comment, with the same Return All / Limit behavior. No comments means no output items for that input item.
| Resource / Operation | What lands on the item |
|---|---|
issue / create | The created issue as Jira returns it, or success: true if the response carries no body. |
issue / update | success: true. When Status (Transition ID) is set the transition runs first, then the field changes are applied. |
issue / get | The issue as Jira returns it. With Simplify Output on it is reshaped into a flat object of id, key, self and one property per field, keyed by that field’s display name; a display name that collides with one already present gets a _1, _2 … suffix, and requesting renderedFields through Expand puts the rendered values on those properties. |
issue / getAll | One item per issue — see the fan-out notes above. |
issue / delete | success: true. |
issue / changelog | One item per changelog entry — see the fan-out notes above. |
issue / notify | success: true. |
issue / transitions | One item per transition, or a single transitions: [] item. |
issueAttachment / add | The attachment record Jira created for the uploaded file. The input item’s binary passes through unchanged. |
issueAttachment / get | The attachment’s metadata. With Download on, the file is added to the binary property you named, alongside any binary already on the item. |
issueAttachment / getAll | One item per attachment, or a single attachments: [] item. |
issueAttachment / remove | success: true. |
issueComment / add | The created comment as Jira returns it. |
issueComment / get | The requested comment. |
issueComment / getAll | One item per comment — see the fan-out notes above. |
issueComment / remove | success: true. |
issueComment / update | The updated comment as Jira returns it. |
user / create | The created user as Jira returns it. |
user / delete | success: true. |
user / get | The requested user. |
Reference the result downstream by expression, e.g. {{ $json.key }}.
Usage Examples
- Create a Jira issue in project ABC
- Upload a file attachment to issue KEY-123
- Download all attachments from a Jira issue
- Search issues with JQL query
- Add a comment to a Jira issue
- Transition an issue status
Example Configuration
Create an issue with an assignee, priority and labels:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "create",
"project": "10000",
"issueType": "1",
"summary": "New bug report",
"additionalFields": {
"description": "Detailed description of the issue",
"assignee": "557058:a12345-1234-1234-1234-123456789012",
"priority": "2",
"labels": "bug,urgent"
}
}
}
Update an issue and move it through a transition in the same call:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "update",
"issueKey": "PROJ-123",
"updateFields": {
"summary": "Updated issue title",
"description": "Updated description",
"statusId": "3",
"assignee": "557058:a12345-1234-1234-1234-123456789012"
}
}
}
Read one issue with field names flattened for downstream use:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "get",
"issueKey": "PROJ-123",
"simplifyOutput": true,
"additionalFields": {
"expand": "changelog,names",
"fields": "*navigable",
"updateHistory": true
}
}
}
Search issues with JQL and cap the result set:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "getAll",
"returnAll": false,
"limit": 50,
"options": {
"jql": "project = PROJ AND status = Open",
"fields": "summary,status,assignee,created",
"expand": "names"
}
}
}
Add a plain-text comment:
{
"type": "jira",
"parameters": {
"resource": "issueComment",
"operation": "add",
"issueKey": "PROJ-123",
"jsonParameters": false,
"comment": "This is a new comment on the issue",
"options": {
"expand": "renderedBody",
"wikiMarkup": false
}
}
}
Add a formatted comment by supplying Atlassian Document Format directly:
{
"type": "jira",
"parameters": {
"resource": "issueComment",
"operation": "add",
"issueKey": "PROJ-123",
"jsonParameters": true,
"commentJson": "{\"version\":1,\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"This is a comment with formatted text\"}]}]}"
}
}
Upload the file on the item’s data binary property to an issue:
{
"type": "jira",
"parameters": {
"resource": "issueAttachment",
"operation": "add",
"issueKey": "PROJ-123",
"binaryPropertyName": "data"
}
}
Fetch an attachment and download its contents into a named binary property:
{
"type": "jira",
"parameters": {
"resource": "issueAttachment",
"operation": "get",
"attachmentId": "12345",
"download": true,
"binaryProperty": "attachmentData"
}
}
Email an issue notification to the reporter, the assignee and a named group:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "notify",
"issueKey": "PROJ-123",
"jsonParameters": false,
"additionalFields": {
"subject": "Issue Update Notification",
"textBody": "This issue has been updated",
"htmlBody": "<p>This <strong>issue</strong> has been updated</p>"
},
"notificationRecipientsUi": {
"reporter": true,
"assignee": true,
"watchers": false,
"voters": false,
"users": "557058:a12345-1234-1234-1234-123456789012",
"groups": "jira-administrators"
}
}
}
Create a user with a temporary password:
{
"type": "jira",
"parameters": {
"resource": "user",
"operation": "create",
"username": "john.doe",
"emailAddress": "john.doe@company.com",
"displayName": "John Doe",
"additionalFields": {
"password": "temporaryPassword123",
"notification": true
}
}
}
The three steps of a create-if-missing pattern. First, search for existing issues:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "getAll",
"options": {
"jql": "project = MYPROJ AND status != Done"
}
}
}
Then create the issue when the search found nothing:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "create",
"project": "10000",
"issueType": "1",
"summary": "Automated issue creation"
}
}
Then move the issue to its next status:
{
"type": "jira",
"parameters": {
"resource": "issue",
"operation": "update",
"issueKey": "MYPROJ-123",
"updateFields": {
"statusId": "3"
}
}
}
Report the outcome back on the issue, taking the key from the incoming item:
{
"type": "jira",
"parameters": {
"resource": "issueComment",
"operation": "add",
"issueKey": "{{ $json.key }}",
"comment": "Processing completed successfully"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage Jira issues, comments, attachments, and users — supports binary attachment upload and download.
Frequently asked questions
Can it upload and download attachments?
Yes, both. Binary data from an upstream node can be attached to an issue, and existing attachments can be pulled down as binary for storage or processing.
What can it manage besides issues?
Comments, attachments and users, so a workflow can create the issue, add context as comments, and look up the people involved without a second integration.
How do I react to changes in Jira?
Use the Jira Trigger for inbound events. Note the two use different credentials — this node takes a Jira API credential, the trigger a Jira Software Cloud credential.
Does it work with Jira Cloud and self-hosted?
It talks to the Jira REST API, so it works wherever that API is reachable with the credential you supply.
Build with the Jira Software node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Jira API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.