Portal Community

When to Use

Configuration

Connection

FieldRequiredDescription
HostRequiredJira instance base URL. Example: https://acmecorp.atlassian.net
EmailRequiredAtlassian account email. Example: automation@acmecorp.com
ApiTokenRequiredAPI token from Atlassian security settings. Store in Credentials Manager.

Operation Fields

FieldRequiredDescription
IssueKeyRequiredThe key of the issue to update. Example: PROJ-123.
FieldsOptionalJSON object of standard Jira fields to update. Keys use Jira's internal field names. Example: {"summary": "New title", "priority": {"name": "High"}, "assignee": {"name": "jsmith"}}. At least one of Fields or CustomFields must be provided.
CustomFieldsOptionalJSON object of custom field values. Keys are Jira field IDs (e.g. customfield_10016). Values must conform to the field's type format.
Field format: Jira uses nested objects for some fields. Priority: {"name": "High"}. Assignee: {"name": "jsmith"} or {"accountId": "5b10a2..."} for Jira Cloud. Labels: ["label1", "label2"]. Story points: plain number in the custom field.

Sample Configuration

Escalate a bug's priority and update its description after worsening alert metrics:

{
  "resource": "issue",
  "operation": "update",
  "Host": "https://acmecorp.atlassian.net",
  "Email": "automation@acmecorp.com",
  "ApiToken": "{{ $credentials.jiraApiToken }}",
  "IssueKey": "{{ $json.issueKey }}",
  "Fields": {
    "priority": { "name": "Highest" },
    "description": "{{ $json.originalDescription }}\n\n---\n**ESCALATED {{ $now }}**\nError rate climbed to {{ $json.errorRate }}%. Immediate attention required.\nAffected users: {{ $json.affectedUsers }}"
  },
  "CustomFields": {
    "customfield_10050": "{{ $json.incidentId }}"
  }
}

Validation Errors

Error CodeCause
VAL_MISSING_ISSUE_KEYIssueKey is empty or null.
VAL_NO_FIELDS_TO_UPDATEBoth Fields and CustomFields are null or empty.
VAL_INVALID_FIELDS_JSONFields is not valid JSON.
ISSUE_NOT_FOUNDNo issue exists with the given key, or insufficient access.
FIELD_NOT_EDITABLEOne or more fields are read-only for this issue type or project configuration.
AUTH_FAILEDInvalid credentials or expired API token.

Output Fields

FieldTypeDescription
statusstring"success" or "error"
issueKeystringKey of the updated issue. Example: "PROJ-123"
resourcestringAlways "issue"
operationstringAlways "update"

Sample Output

{
  "status": "success",
  "issueKey": "OPS-347",
  "resource": "issue",
  "operation": "update"
}
No body returned on update: The Jira REST API returns HTTP 204 No Content on a successful update. The node constructs the output object from the request — the update is confirmed by the "success" status with no error on the error port.

Expression Reference

ExpressionTypeExample ValueUse
{{ $output.updateIssue.issueKey }}string"OPS-347"Confirm which issue was updated in a log entry
{{ $output.updateIssue.status }}string"success"Guard downstream steps that depend on successful update

Node Policies & GuardRails

Workflow Examples

Example 1 — Escalate Priority on Worsening Metric

// Monitoring webhook fires with worsening error rate
// Step 1: issue/get — fetch current issue state
// Step 2: IfCondition — {{ $json.errorRate }} > 30 AND {{ $output.getIssue.priority }} !== "Highest"
// Step 3 (if escalation warranted): issue/update
{
  "resource": "issue",
  "operation": "update",
  "IssueKey": "{{ $json.issueKey }}",
  "Fields": {
    "priority": { "name": "Highest" },
    "labels": ["production", "escalated", "p0"]
  }
}
// Step 4: Slack/postMessage — notify manager channel

Example 2 — Bulk Reassign on Team Member Absence

// Step 1: issue/getAll
{
  "Jql": "assignee = \"{{ $json.absentUser }}\" AND status != Done"
}
// Step 2: Loop over issues
// Step 3 per issue: issue/update
{
  "resource": "issue",
  "operation": "update",
  "IssueKey": "{{ $loopItem.key }}",
  "Fields": {
    "assignee": { "accountId": "{{ $json.backupUser.accountId }}" }
  }
}