When to Use
- Account ID resolution for assignment: Jira Cloud's REST API v3 requires an
accountId (not username) to assign issues. Call user/get with the username or email to resolve it to the account ID, then use that in issue/update or issue/create.
- Active status check before assignment: Before assigning an issue to a team member, verify their account is still active. Deactivated accounts (e.g. from employees who have left) will cause assignment errors.
- User existence check before creation: Before calling
user/create, call user/get to confirm the user doesn't already exist. If they do, return the existing account ID rather than failing with a duplicate error.
- Offboarding validation: An HR offboarding workflow calls
user/get to verify the departing employee's Jira account is found and active before calling user/delete to deactivate it.
- Contact enrichment: A reporting workflow has an assignee display name from an issue. It calls
user/get to retrieve the user's email address for direct email notifications not supported by Jira's notification system.
Configuration
Connection
| Field | Required | Description |
Host | Required | Jira instance base URL. Example: https://acmecorp.atlassian.net |
Email | Required | Atlassian account email. Example: automation@acmecorp.com |
ApiToken | Required | API token from Atlassian security settings. Store in Credentials Manager. |
Operation Fields
| Field | Required | Description |
Username | Required | The Jira username or email address to look up. On Jira Cloud, you can pass the user's email address as the username. Example: jsmith or jsmith@acmecorp.com. |
Sample Configuration
{
"resource": "user",
"operation": "get",
"Host": "https://acmecorp.atlassian.net",
"Email": "automation@acmecorp.com",
"ApiToken": "{{ $credentials.jiraApiToken }}",
"Username": "{{ $json.assigneeEmail }}"
}
Validation Errors
| Error Code | Cause |
VAL_MISSING_USERNAME | Username is empty or null. |
USER_NOT_FOUND | No user exists with the given username or email in the Jira instance. |
AUTH_FAILED | Invalid credentials or expired API token. |
Output Fields
| Field | Type | Description |
status | string | "success" or "error" |
userId | string | Jira account ID. This is the value needed for issue assignment in Jira Cloud (assignee.accountId). |
username | string | The user's login username. |
displayName | string | Full display name shown in Jira. |
email | string | Email address. May be masked for privacy on Jira Cloud if the user has restricted visibility. |
active | boolean | true if the account is active. false for deactivated accounts. |
resource | string | Always "user" |
operation | string | Always "get" |
Sample Output
{
"status": "success",
"userId": "5b10a2844c20165700ede21g",
"username": "jsmith",
"displayName": "John Smith",
"email": "jsmith@acmecorp.com",
"active": true,
"resource": "user",
"operation": "get"
}
Expression Reference
| Expression | Type | Example Value | Use |
{{ $output.getUser.userId }} | string | Jira account ID | Use as assignee.accountId in issue/update or issue/create Fields |
{{ $output.getUser.active }} | boolean | true | Gate assignment operations — only assign to active accounts |
{{ $output.getUser.displayName }} | string | "John Smith" | Populate notification with user's full name |
{{ $output.getUser.email }} | string | "jsmith@acmecorp.com" | Send direct email to the user |
Node Policies & GuardRails
- Always check active status before assigning: Gate
issue/update assignment with {{ $output.getUser.active }} === true. Assigning to inactive accounts results in Jira API errors.
- Account ID is required for Jira Cloud assignment: On Jira Cloud REST API v3, the
accountId field is used for assignment, not the username. Always resolve username to userId before setting the assignee field in issue/update.
- Email privacy: Jira Cloud users can restrict email visibility. If the email is masked in the response, use display name for notifications and the account ID for API operations.
Workflow Examples
Example 1 — Resolve Username to Account ID for Assignment
// Step 1: user/get — resolve assignee username to accountId
{
"resource": "user",
"operation": "get",
"Username": "{{ $json.assigneeEmail }}"
}
// Step 2: IfCondition — {{ $output.getUser.active }} === true
// Step 3 (if active): issue/update
{
"IssueKey": "{{ $json.issueKey }}",
"Fields": {
"assignee": { "accountId": "{{ $output.getUser.userId }}" }
}
}
// Step 4 (if inactive): route to error handler — "User account is inactive"
Example 2 — User Existence Check Before Create
// Step 1: user/get — check if user already exists
{
"Username": "{{ $json.employee.workEmail }}"
}
// Step 2: IfCondition — {{ $output.getUser.status }} === "success" (user found)
// Step 3a (user exists): use existing userId
// Step 3b (user not found — error port fires): user/create