Search all guides

Reference · Tools

Jira Software integration

Create, update, search by JQL, delete and inspect Jira issues, including their changelog, transitions and email notifications; add, download and remove attachments, manage comments, and create, retrieve or delete users.

Action (binary) Productivity v1 Binary data

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.

Works as
Action (binary)
Tool name
jira
Operations
8 — Changelog , Create , Delete , Get , Get Many and 3 more
Parameters
66
Outputs
Output, Error
Credentials
Jira API
Official docs
Jira Software docs developer.atlassian.com

What you can build with Jira Software

  • 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.

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.

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Jira API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Issueissue
Issue AttachmentissueAttachment
Issue CommentissueComment
Useruser

Operations

Issue (issue)

OperationValueDescription
ChangelogchangelogGet issue changelog.
CreatecreateCreate a new issue.
DeletedeleteDelete an issue.
GetgetGet an issue.
Get ManygetAllSearch/get many issues via JQL.
NotifynotifyCreate an email notification for an issue.
StatustransitionsGet available transitions for an issue.
UpdateupdateUpdate an issue.

Issue Attachment (issueAttachment)

OperationValueDescription
AddaddAdd attachment to an issue.
GetgetGet an attachment.
Get ManygetAllGet many attachments from an issue.
RemoveremoveRemove an attachment.

Issue Comment (issueComment)

OperationValueDescription
AddaddAdd comment to an issue.
GetgetGet a comment.
Get ManygetAllGet many comments.
RemoveremoveRemove a comment.
UpdateupdateUpdate a comment.

User (user)

OperationValueDescription
CreatecreateCreate a new user.
DeletedeleteDelete a user.
GetgetRetrieve a user.

Parameters

Issue: Changelog

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—The key of the issue.
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)

Issue: Create

ParameterTypeRequiredDefaultDescription
ProjectstringYes—Project ID. Obtain from Jira project settings or GET /rest/api/2/project.
Issue TypestringYes—Issue type ID. Obtain from GET /rest/api/2/project/{projectId} (issueTypes array).
SummarystringYes—Issue title/summary.
Additional FieldscollectionNo{}
Options: groups
— AssigneestringNo—User identifier. Cloud: accountId. Server: username.
— Component IDsstringNo—Comma-separated component IDs.
— Custom Fields (JSON)jsonNo{}JSON object of custom field key-value pairs (e.g. {“customfield_10001”: “value”}).
— DescriptionstringNo—Issue description text.
— LabelsstringNo—Comma-separated label strings.
— Parent Issue KeystringNo—Parent issue key (required when issue type is sub-task). Will be upper-cased.
— PrioritystringNo—Priority ID. Obtain from GET /rest/api/2/priority.
— ReporterstringNo—Reporter user identifier. Cloud: accountId. Server: username.
— Update HistorybooleanNofalseWhether to update the user’s issue view history.

Issue: Delete

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—The key of the issue to delete.
Delete SubtasksbooleanNofalseWhether to also delete subtasks of this issue.

Issue: Get

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—The key of the issue (e.g. PROJ-123).
Simplify OutputbooleanNofalseWhether to simplify the output by flattening field IDs to display names.
Additional FieldscollectionNo{}
Options: groups
— ExpandstringNo—Comma-separated expand options: renderedFields, names, schema, transitions, editmeta, changelog, versionedRepresentations.
— FieldsstringNo—Comma-separated field list to return.
— Fields by KeybooleanNofalseUse field keys instead of IDs.
— PropertiesstringNo—Comma-separated issue property keys.
— Update HistorybooleanNofalseWhether to update the user’s recent issue view history.

Issue: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to the limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
OptionscollectionNo{}
Options: +created
— ExpandstringNo—Comma-separated expand options.
— FieldsstringNo*navigableComma-separated list of fields to return. Default: *navigable.
— JQLstringNo—JQL query to filter issues. Default searches all issues.

Issue: Notify

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
JSON ParametersbooleanNofalseWhether to provide recipients as raw JSON.
Additional FieldscollectionNo{}
Options: groups
— SubjectstringNo—Email subject.
— Text BodystringNo—Plain text email body.
— HTML BodystringNo—HTML email body.
Notification Recipients (JSON)jsonNo{}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)jsonNo{}JSON object for “restrict” field: { groups: [{name: ”…”}] } (shown when JSON Parameters is true)
Notification RecipientscollectionNo{}(shown when JSON Parameters is false)
— ReporterbooleanNofalse
— AssigneebooleanNofalse
— WatchersbooleanNofalse
— VotersbooleanNofalse
— Users (comma-separated accountIds)stringNo—Comma-separated list of user accountIds.
— Groups (comma-separated names)stringNo—Comma-separated list of group names.
Notification RestrictionscollectionNo{}(shown when JSON Parameters is false)
— Groups (comma-separated names)stringNo—Comma-separated list of group names to restrict notification to.

Issue: Status

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Additional FieldscollectionNo{}
Options: groups
— Transition IDstringNo—Filter to a specific transition ID.
— ExpandstringNo—Use “transitions.fields” to get screen fields.
— Skip Remote Only ConditionbooleanNofalseInclude transitions normally hidden.

Issue: Update

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—The key of the issue to update (e.g. PROJ-123).
Update FieldscollectionNo{}
— AssigneestringNo—User identifier. Cloud: accountId. Server: username.
— Custom Fields (JSON)jsonNo{}JSON object of custom field key-value pairs.
— DescriptionstringNo—Issue description text.
— Issue TypestringNo—Issue type ID to change to.
— LabelsstringNo—Comma-separated label strings.
— Parent Issue KeystringNo—Parent issue key (required for sub-task types).
— PrioritystringNo—Priority ID.
— ReporterstringNo—Reporter user identifier.
— Status (Transition ID)stringNo—Transition ID. If set, will first execute the transition, then update other fields.
— SummarystringNo—Issue title/summary.

Issue Attachment: Add

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Binary Property (binaryPropertyName)stringYesdataName 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

ParameterTypeRequiredDefaultDescription
Attachment IDstringYes—The ID of the attachment.
DownloadbooleanNofalseWhether to download the attachment binary content.
Binary Property (binaryProperty)stringNodataName 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

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
DownloadbooleanNofalseWhether to download the attachment binary content.
Binary Property (binaryProperty)stringNodataName 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

ParameterTypeRequiredDefaultDescription
Attachment IDstringYes—The ID of the attachment to remove.

Issue Comment: Add

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
JSON ParametersbooleanNofalseWhether to provide the comment body as raw Atlassian Document Format JSON.
CommentstringNo—The comment text. On Cloud, this is sent as ADF (unless wiki markup is enabled). On Server, this is plain text. (shown when JSON Parameters is false)
Document Format (JSON)jsonNo—Raw Atlassian Document Format JSON body for the comment. (shown when JSON Parameters is true)
OptionscollectionNo{}
Options: +created
— ExpandstringNo—Use “renderedBody” to get rendered HTML.
— Wiki MarkupbooleanNofalseCloud only: send comment as wiki markup using API v2 instead of ADF v3.

Issue Comment: Get

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Comment IDstringYes—
OptionscollectionNo{}
Options: +created
— ExpandstringNo—Use “renderedBody” to get rendered HTML.

Issue Comment: Get Many

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Return AllbooleanNofalse
LimitnumberNo50(shown when Return All is false)
OptionscollectionNo{}
Options: +created
— ExpandstringNo—Use “renderedBody” to get rendered HTML.
— Order ByoptionsNo+createdSort order for comments.
Options: +created, -created

Issue Comment: Remove

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Comment IDstringYes—

Issue Comment: Update

ParameterTypeRequiredDefaultDescription
Issue KeystringYes—
Comment IDstringYes—
JSON ParametersbooleanNofalseWhether to provide the comment body as raw Atlassian Document Format JSON.
CommentstringNo—The comment text. On Cloud, this is sent as ADF (unless wiki markup is enabled). On Server, this is plain text. (shown when JSON Parameters is false)
Document Format (JSON)jsonNo—Raw Atlassian Document Format JSON body for the comment. (shown when JSON Parameters is true)
OptionscollectionNo{}
Options: +created
— ExpandstringNo—Use “renderedBody” to get rendered HTML.
— Wiki MarkupbooleanNofalseCloud only: send comment as wiki markup using API v2 instead of ADF v3.

User: Create

ParameterTypeRequiredDefaultDescription
UsernamestringYes—
Email AddressstringYes—
Display NamestringYes—
Additional FieldscollectionNo{}
Options: groups
— PasswordstringNo—Password for the user. If not set, a random password is generated.
— NotificationbooleanNofalseWhether to send the user an email confirmation.

User: Delete

ParameterTypeRequiredDefaultDescription
Account IDstringYes—The account ID of the user to delete.

User: Get

ParameterTypeRequiredDefaultDescription
Account IDstringYes—The account ID of the user to retrieve.
Additional FieldscollectionNo{}
Options: groups
— ExpandmultiOptionsNo[]
Options: groups (include all groups to which the user belongs), applicationRoles (include details of all applications the user can access)

All Operations

ParameterTypeRequiredDefaultDescription
Jira VersionoptionsNocloudSelect Jira deployment type. Cloud uses email + API token. Server uses email + password. Server PAT uses a personal access token.
Options: cloud, server, serverPat
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

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 / OperationWhat lands on the item
issue / createThe created issue as Jira returns it, or success: true if the response carries no body.
issue / updatesuccess: true. When Status (Transition ID) is set the transition runs first, then the field changes are applied.
issue / getThe 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 / getAllOne item per issue — see the fan-out notes above.
issue / deletesuccess: true.
issue / changelogOne item per changelog entry — see the fan-out notes above.
issue / notifysuccess: true.
issue / transitionsOne item per transition, or a single transitions: [] item.
issueAttachment / addThe attachment record Jira created for the uploaded file. The input item’s binary passes through unchanged.
issueAttachment / getThe attachment’s metadata. With Download on, the file is added to the binary property you named, alongside any binary already on the item.
issueAttachment / getAllOne item per attachment, or a single attachments: [] item.
issueAttachment / removesuccess: true.
issueComment / addThe created comment as Jira returns it.
issueComment / getThe requested comment.
issueComment / getAllOne item per comment — see the fan-out notes above.
issueComment / removesuccess: true.
issueComment / updateThe updated comment as Jira returns it.
user / createThe created user as Jira returns it.
user / deletesuccess: true.
user / getThe requested user.

Reference the result downstream by expression, e.g. {{ $json.key }}.

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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool manages Jira issues, comments, attachments, and users. It is ideal when you need to create, update, retrieve, or delete these items, including uploading and downloading binary attachments. It produces updated Jira items, new issues, comments, attachments, or users, and retrieved information about them.

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 Jira Software

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Jira API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.