<!-- BusyBot node reference — https://busybot.net/tools/jira/ -->

> Node: Jira Software (`jira`) · Action (binary) · v1
> Category: Productivity · Credentials: Jira API (`jiraApi`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/jira-api/) 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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "type": "jira",
  "parameters": {
    "resource": "issueAttachment",
    "operation": "add",
    "issueKey": "PROJ-123",
    "binaryPropertyName": "data"
  }
}
```

Fetch an attachment and download its contents into a named binary property:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "type": "jira",
  "parameters": {
    "resource": "issue",
    "operation": "getAll",
    "options": {
      "jql": "project = MYPROJ AND status != Done"
    }
  }
}
```

Then create the issue when the search found nothing:

```json
{
  "type": "jira",
  "parameters": {
    "resource": "issue",
    "operation": "create",
    "project": "10000",
    "issueType": "1",
    "summary": "Automated issue creation"
  }
}
```

Then move the issue to its next status:

```json
{
  "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:

```json
{
  "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.