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 fetch transitions for. Example: PROJ-123. The returned transitions reflect what is available from the issue's current status.
Never hardcode transition IDs: Transition IDs are numeric identifiers assigned by Jira's workflow engine. They are instance-specific (ID 21 on one instance may be "In Progress" but "Done" on another). Workflows configured to use hardcoded IDs will break silently after workflow reconfiguration. Always resolve transition names dynamically via this operation.

Sample Configuration

{
  "resource": "issue",
  "operation": "getTransitions",
  "Host": "https://acmecorp.atlassian.net",
  "Email": "automation@acmecorp.com",
  "ApiToken": "{{ $credentials.jiraApiToken }}",
  "IssueKey": "{{ $json.issueKey }}"
}

Validation Errors

Error CodeCause
VAL_MISSING_ISSUE_KEYIssueKey is empty or null.
ISSUE_NOT_FOUNDNo issue exists with the given key, or the user lacks access.
AUTH_FAILEDInvalid credentials or expired API token.

Output Fields

FieldTypeDescription
statusstring"success" or "error"
transitionsarrayArray of transition objects. Each object has id (string) and name (string). Only includes transitions available from the current status.
resourcestringAlways "issue"
operationstringAlways "getTransitions"

Sample Output

{
  "status": "success",
  "transitions": [
    { "id": "11", "name": "To Do" },
    { "id": "21", "name": "In Progress" },
    { "id": "31", "name": "In Review" },
    { "id": "41", "name": "Done" },
    { "id": "51", "name": "Won't Fix" }
  ],
  "resource": "issue",
  "operation": "getTransitions"
}

Expression Reference

ExpressionTypeExample ValueUse
{{ $output.getTransitions.transitions }}arrayArray of {id, name}Find a specific transition by name
{{ $output.getTransitions.transitions[0].id }}string"11"Pass first transition ID to executeTransition
{{ $output.getTransitions.transitions.find(t => t.name === "Done").id }}string"41"Dynamically resolve transition ID by name
{{ $output.getTransitions.transitions.map(t => t.name) }}array["To Do", "In Progress", ...]Check if a target transition is available

Node Policies & GuardRails

Workflow Example — Dynamic Transition with Name Resolution

// Step 1: issue/getTransitions
{
  "resource": "issue",
  "operation": "getTransitions",
  "IssueKey": "{{ $json.issueKey }}"
}

// Step 2: Function node — find the "Done" transition ID
// const doneTransition = $output.getTransitions.transitions.find(t => t.name === "Done");
// if (!doneTransition) throw new Error("Done transition not available from current state");
// return { transitionId: doneTransition.id };

// Step 3: issue/executeTransition
{
  "resource": "issue",
  "operation": "executeTransition",
  "IssueKey": "{{ $json.issueKey }}",
  "TransitionId": "{{ $output.findTransition.transitionId }}"
}