issue/getAll resource: issue
Search for Jira issues using JQL (Jira Query Language). Supports pagination with Limit and StartAt. Returns an array of issues matching the query with their standard fields. The most powerful retrieval operation — use for bulk reads, dashboards, and compliance queries.
When to Use
- Sprint report generation: Query all issues in the current sprint with
project = DEV AND sprint in openSprints()to build a sprint status report. Paginate through results and aggregate by status to produce a burndown summary posted to Slack every morning. - SLA breach detection: A scheduled workflow queries open high-priority bugs older than 48 hours:
project = OPS AND issuetype = Bug AND priority in (High, Highest) AND created <= -48h AND status != Done. Breached issues are flagged and escalation messages sent to team leads. - Release notes compilation: Before a deployment, query all resolved issues in the current version:
project = PROD AND fixVersion = "v2.4.0" AND status = Done ORDER BY issuetype ASC. The result array is mapped into a release note document. - Compliance audit queries: Retrieve all change request tasks in a time window:
project = CHANGE AND issuetype = Task AND created >= "2026-01-01" AND created <= "2026-03-31". Export results to a MongoDB report collection for audit submission. - Deduplication check: Before creating a new issue from an alert, search for existing issues with a matching summary in the last hour to prevent duplicates from alert flapping or retried webhooks.
JQL Quick Reference
| Example JQL | What It Returns |
|---|---|
project = PROJ AND status = "To Do" | All backlog items in PROJ |
assignee = currentUser() | Issues assigned to the API token user |
sprint in openSprints() AND project = DEV | All issues in the active sprint |
priority = Highest AND status != Done | Open critical issues across all projects |
created >= -24h AND issuetype = Bug | Bugs created in the last 24 hours |
fixVersion = "v3.1.0" AND status = Done | Resolved issues for a specific release |
labels = "production" AND status in ("In Progress", "Open") | Active production issues with label |
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 |
|---|---|---|
Jql | Optional | JQL query string. If omitted, returns all issues accessible to the authenticated user (use with Limit to avoid large unfiltered result sets). Example: project = PROJ AND status = Open ORDER BY created DESC |
Limit | Optional | Maximum number of issues to return per page. Default: 50. Maximum: 100 per Jira API limits. |
StartAt | Optional | Zero-based offset for pagination. To retrieve the second page with Limit=50: set StartAt = 50. Use total from the response to calculate how many pages remain. |
JQL injection risk: Never interpolate unvalidated user input directly into a JQL string. If a workflow parameter comes from user input, sanitize it by escaping quotes and rejecting special JQL characters before interpolation. Use parameterized lookups where possible.
Sample Configuration
Retrieve all open P1/P2 bugs created in the last 24 hours, page 1:
{
"resource": "issue",
"operation": "getAll",
"Host": "https://acmecorp.atlassian.net",
"Email": "automation@acmecorp.com",
"ApiToken": "{{ $credentials.jiraApiToken }}",
"Jql": "project = OPS AND issuetype = Bug AND priority in (High, Highest) AND created >= -24h AND status != Done ORDER BY priority ASC, created ASC",
"Limit": 50,
"StartAt": 0
}
Pagination Pattern
To retrieve all results beyond the first page, use a Loop node with incrementing StartAt:
// Initial call: StartAt = 0, Limit = 50
// After response: check if startAt + maxResults < total
// If more pages: increment StartAt by Limit and repeat
// Loop condition: {{ $output.getAllIssues.startAt + $output.getAllIssues.maxResults < $output.getAllIssues.total }}
Validation Errors
| Error Code | Cause |
|---|---|
VAL_INVALID_JQL | The JQL string contains a syntax error. Jira returns the parse error details in the message field. |
VAL_INVALID_LIMIT | Limit is less than 1 or greater than 100. |
VAL_INVALID_START_AT | StartAt is negative. |
AUTH_FAILED | Invalid credentials or expired API token. |
Output Fields
| Field | Type | Description |
|---|---|---|
status | string | "success" or "error" |
issues | array | Array of issue objects. Each contains id, key, summary, status, priority, assignee, issueType, created, updated. |
total | integer | Total number of issues matching the JQL query (not just the current page). |
startAt | integer | The offset used for this page. |
maxResults | integer | The page size returned (may be less than Limit on the last page). |
resource | string | Always "issue" |
operation | string | Always "getAll" |
Sample Output
{
"status": "success",
"issues": [
{
"id": "10482",
"key": "OPS-347",
"summary": "[P1 ALERT] Payment gateway timeout — checkout-service",
"status": "In Progress",
"priority": "Highest",
"assignee": "Sarah Chen",
"issueType": "Bug",
"created": "2026-05-26T08:14:23.000Z",
"updated": "2026-05-26T09:02:11.000Z"
},
{
"id": "10479",
"key": "OPS-344",
"summary": "Database connection pool exhausted — user-service",
"status": "Open",
"priority": "High",
"assignee": "Marcus Webb",
"issueType": "Bug",
"created": "2026-05-26T06:45:00.000Z",
"updated": "2026-05-26T07:12:55.000Z"
}
],
"total": 12,
"startAt": 0,
"maxResults": 50,
"resource": "issue",
"operation": "getAll"
}
Expression Reference
| Expression | Type | Example Value | Use |
|---|---|---|---|
{{ $output.getAllIssues.issues }} | array | Array of issue objects | Feed into Loop node for per-issue processing |
{{ $output.getAllIssues.total }} | integer | 12 | Report total count or drive pagination |
{{ $output.getAllIssues.issues[0].key }} | string | "OPS-347" | Process the first matching issue |
{{ $output.getAllIssues.issues.length }} | integer | 2 | Check how many issues returned on this page |
{{ $output.getAllIssues.startAt + $output.getAllIssues.maxResults }} | integer | 50 | Next page StartAt value |
Node Policies & GuardRails
- Always paginate large result sets: Use
Limit+StartAtrather than expecting all results in one call. The Jira API caps at 100 items per request. For projects with thousands of issues, implement a Loop-based pagination pattern. - JQL injection prevention: Sanitize all user-supplied values before embedding in JQL strings. Escape quotes and reject parentheses, semicolons, and Jira keywords from user input.
- Scope JQL queries by project: Unless intentionally cross-project, always include
project = PROJin your JQL to avoid accidentally scanning all projects and consuming rate limit budget. - Rate limit awareness: Jira Cloud limits to approximately 50 requests/10 seconds per user. Each page fetch counts as one request. For compliance batch jobs, run during off-peak hours and add Delay nodes between pages.
- Use ORDER BY for deterministic pagination: Without an
ORDER BYclause, Jira may return results in a different order across pages, causing missed or duplicated items during paginated reads.
Workflow Examples
Example 1 — Daily SLA Breach Report
Scheduled trigger runs every morning → queries open P1/P2 bugs older than 48h → sends Slack alert with breach list.
// Step 1: ScheduledTrigger (daily 08:00)
// Step 2: issue/getAll
{
"resource": "issue",
"operation": "getAll",
"Jql": "project = OPS AND issuetype = Bug AND priority in (High, Highest) AND created <= -48h AND status != Done ORDER BY created ASC",
"Limit": 100,
"StartAt": 0
}
// Step 3: IfCondition — {{ $output.getAllIssues.total }} > 0
// Step 4 (if breaches found): Slack/postMessage
{
"channel": "#engineering-leads",
"text": ":warning: *SLA Breach Alert* — {{ $output.getAllIssues.total }} open high-priority bugs older than 48h\n{{ $output.getAllIssues.issues | map(i => i.key + ': ' + i.summary) | join('\n') }}"
}
Example 2 — Dedup Check Before Issue Creation
Before creating an issue from a webhook, search for a recent duplicate to prevent alert-flap duplicates.
// Step 1: WebhookTrigger
// Step 2: issue/getAll — dedup search
{
"resource": "issue",
"operation": "getAll",
"Jql": "project = OPS AND summary ~ \"{{ $json.alert.title }}\" AND created >= -1h",
"Limit": 1,
"StartAt": 0
}
// Step 3: IfCondition
// Condition: {{ $output.getAllIssues.total }} === 0
// Step 4 (only if no duplicate): issue/create
Example 3 — Compile Release Notes from Fixed Issues
Pre-deployment trigger → query resolved issues for release version → build release notes document.
{
"resource": "issue",
"operation": "getAll",
"Jql": "project = PROD AND fixVersion = \"{{ $json.releaseVersion }}\" AND status = Done ORDER BY issuetype ASC, priority ASC",
"Limit": 100,
"StartAt": 0
}