npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-jira-reports

v0.1.1

Published

Enterprise-grade Jira Cloud reporting node for n8n. Generates 20 analytics report types (executive dashboard, velocity, burndown, SLA, aging, workload, and more) with JSON, Markdown, HTML, CSV-ready and AI-summary output.

Readme

n8n-nodes-jira-reports

An n8n community node for read-only Jira Cloud data: fetch issues for one or more projects with a field picker, or generate one of 20 enterprise-grade analytics reports (executive dashboards, velocity, burndown, SLA compliance, aging, workload, and more) as JSON, Markdown, HTML, CSV-ready JSON, or a deterministic executive/AI-style summary.

This node does not create or update Jira issues. It is read-only.

Operations

The node has two operations, selected via the Operation parameter:

  • Fetch Issues (default) — the v1 flow. Connect to Jira, pick a project, pick a date range, and it fetches every matching issue with every field Jira returns. Use the Fields picker to choose which fields show up in the output; leave it empty to get everything. Returns one n8n item per issue.
  • Generate Report — the analytics engine described below: 20 report types, rich filtering, and 6 output formats.

Features

  • Fetch Issues: project(s) + date range in, one row per issue out, with a dynamic field picker (system + custom fields) so you only get what you asked for.
  • 20 report types covering delivery health, sprint execution, quality, workload, and compliance (full list below).
  • 6 output formats: JSON, Markdown, HTML, CSV-ready JSON, AI Summary, Executive Summary.
  • Rich filtering (Generate Report): project(s), JQL, date range, status, priority, issue type, labels, components, sprint, board, epic, assignee, reporter, fix version, environment, and arbitrary custom fields.
  • Scales to very large projects: cursor-based pagination against Jira's current search API (/rest/api/3/search/jql), so 100k+ issue projects are streamed rather than loaded in one request.
  • Resilient by default: automatic retry with exponential backoff + jitter on 429/5xx responses (honoring Retry-After), and a concurrency gate to avoid tripping Jira's rate limiter in the first place.
  • Auto-discovery: story points, epic link, and sprint custom field IDs are resolved automatically per Jira site (they vary per instance) and cached.

Installation

In n8n, go to Settings → Community Nodes → Install and enter:

n8n-nodes-jira-reports

Or, for a self-hosted instance:

npm install n8n-nodes-jira-reports

Credentials

Create a Jira Cloud API credential with:

| Field | Description | |---|---| | Jira Base URL | e.g. https://your-domain.atlassian.net (no trailing slash) | | Email | The Atlassian account email associated with the API token | | API Token | Generate one at id.atlassian.com → Security → API tokens |

The node authenticates with HTTP Basic auth (email + API token), Jira Cloud's standard for API tokens.

Usage

Fetch Issues

  1. Add the Jira Reports node to your workflow. Operation defaults to Fetch Issues.
  2. Select one or more Projects.
  3. Optionally set a Start Date / End Date (filters on issue created date).
  4. Optionally pick Fields — leave empty to get every field Jira returns.
  5. Run the node — it returns one n8n item per issue, keyed by human-readable field name (e.g. Summary, Status, Story Points) plus key and id.

Reference-object fields (status, priority, assignee, etc.) are flattened to their display text (e.g. Status: "In Progress" rather than the raw { name, id, ... } object); arrays are flattened element-by-element. Anything else is passed through as Jira returned it.

Generate Report

  1. Add the Jira Reports node, set Operation to Generate Report.
  2. Select one or more Projects.
  3. Choose a Report Type.
  4. Optionally narrow the result set with the filter parameters (Statuses, Priorities, Sprint, Epic, Labels, Advanced JQL, etc.).
  5. Choose an Output Format.
  6. Run the node — it fetches the required issues (and changelog, for status-history-driven reports), computes the report, and returns one item per input item.

Every report returns the same envelope:

{
  "metadata": { "reportType": "...", "generatedAt": "...", "projects": ["..."], "issueCount": 0 },
  "summary": {},
  "statistics": {},
  "chartData": {},
  "table": [],
  "recommendations": []
}

For markdown, html, aiSummary, and executiveSummary output formats, the node returns { format, content } where content is a rendered string. For csvJson, table is flattened into scalar-only rows ready for n8n's Convert to File (CSV) node.

Report Types

| Report | What it returns | |---|---| | Executive Dashboard | Total/open/closed/blocked/reopened counts, completion %, avg resolution/cycle/lead time, story points, velocity, risk level, 0–100 health score | | Issue Status Report | Status distribution, percentage, 7-day trend, average days per status | | Priority Report | Highest→Lowest breakdown and average resolution time per priority | | Sprint Report | Committed / completed / added-mid-sprint / removed-mid-sprint / carry-over / velocity / completion % per sprint | | Velocity Report | Velocity history across closed sprints, average, median, trend | | Burndown Dataset | Daily remaining issues/points vs. an ideal linear burndown for a selected sprint | | Assignee Workload | Per-assignee open/in-progress/closed/blocked, average age, story points, completion % | | Aging Report | Open issues older than a configurable threshold, with age/status/priority/assignee | | Blocked Issues | Currently blocked issues, blocked-since date, reason, assignee, priority, sprint | | Epic Progress | Per-epic child issue counts, completed/remaining/blocked, story points, progress % | | Story Point Analysis | Completed/remaining points, average, largest, size-bucket distribution | | Bug Analysis | Critical/major/minor severity, regression and production flags, resolution time | | SLA Report | Average resolution/response time, SLA breach count and %, time remaining on open issues | | Reopened Issues | Reopen counts, 30-day trend, most-reopened issues | | Release Readiness | Open bugs/stories, testing/documentation coverage heuristics, computed risk | | Component Report | Issues, story points, completion % per component | | Label Report | Most-used labels, unused instance labels, 30-day usage growth | | Custom Field Analytics | Auto-discovered custom fields, population %, top values | | Changelog Report | Every field change in the date range: who, what field, old → new value | | Time Tracking Report | Estimated / logged / remaining time and variance per issue |

Filters (Generate Report)

| Parameter | Notes | |---|---| | Projects | Required. One or more project keys. | | Start Date / End Date | Filters on issue created date. | | Board / Sprint | Sprint dropdown is populated from the selected board. Required for the Burndown report. | | Issue Types, Statuses, Priorities, Labels, Components, Fix Versions | Multi-select, populated from your Jira site. | | Assignees / Reporters | Populated from /rest/api/3/users/search (capped at 200 for the dropdown; use Advanced JQL for a larger/precise set). | | Epic | Matches both classic Epic Link and next-gen parent. | | Include Subtasks | Off excludes sub-task issue types after fetch. | | Custom Fields | Key/value filter pairs, translated to cf[id] = "value" in JQL. | | Advanced JQL | Combined with the generated clauses using AND. Use this for anything the structured filters don't cover (e.g. "Team" = "Platform"). | | Aging Threshold (Days) / SLA Resolution Threshold (Hours) | Only shown for the Aging / SLA report types. | | Max Issues | Safety cap for exploratory runs. Leave at 0 (default) for accurate, complete reports. |

Architecture

credentials/JiraCloudApi.credentials.ts     Jira Cloud API token credential

nodes/JiraReports/
  JiraReports.node.ts                       INodeType: parameter wiring + execute() for both operations
  GenericFunctions.ts                       Builds the API/metadata services from node context
  descriptions/properties.ts                All node parameters (Operation gates which ones show)
  methods/loadOptions.ts                    Dynamic dropdowns (projects, fields, boards, sprints, users, ...)

src/
  types/                                    Jira domain types + report/report-context types
  utils/                                    RetryHelper, PaginationHelper, DateHelper,
                                             StatisticsHelper, FormattingHelper, ErrorHelper,
                                             Logger, JqlBuilder, FieldProjection — no Jira/report
                                             knowledge, pure utilities
  services/
    JiraApiService.ts                       Typed REST wrapper: retry + concurrency gate + pagination
    JiraMetadataService.ts                  Caching facade for projects/fields/boards/sprints/users/...
    JiraIssueRepository.ts                  Orchestrates JQL building + issue fetch for a report
  reports/
    BaseReport.ts                           Abstract contract: generate(dataset) -> ReportOutput
    ReportHelpers.ts                        Shared domain logic (status category, story points, cycle time, ...)
    <ReportName>Report.ts                   One class per report type (20 files)
    index.ts                                REPORT_REGISTRY + createReport()
  formatters/
    <Format>Formatter.ts                    Json / Markdown / Html / CsvJson / AiSummary / ExecutiveSummary
    index.ts                                formatReport(output, format) dispatcher

test/
  support/                                  Fixture builders (makeIssue, makeContext, makeDataset)
  unit/reports/                             One test file per report, no live Jira required
  unit/services/, unit/utils/, unit/formatters/

Adding a new report type means: add the enum value to ReportType, create src/reports/NewReport.ts extending BaseReport, register it in src/reports/index.ts, and add its display option to descriptions/properties.ts. Nothing else needs to change.

Development

npm install
npm run build     # tsc + copy node icons/codex into dist/
npm run lint       # eslint (includes n8n community-node conventions)
npm test           # jest — mocked Jira API, no network calls
npm run test:coverage

To try the node against a real n8n instance locally, use npm link from this package and npm link n8n-nodes-jira-reports from your n8n installation, then restart n8n.

Examples

See examples/ for importable sample workflows:

  • sample-workflow-executive-dashboard.json — Schedule trigger → Jira Reports (Executive Dashboard, Markdown) → Slack/Email.
  • sample-workflow-sprint-report.json — Manual trigger → Jira Reports (Sprint Report, CSV-ready JSON) → Convert to File.

Node type identifiers in the sample workflows assume the package is installed under its published name. If you're developing locally via npm link, re-select the node in the n8n editor after import so the type resolves correctly.

Screenshots

Add screenshots of the node's parameter panel and a sample report output here:

  • docs/screenshots/node-parameters.png
  • docs/screenshots/executive-dashboard-output.png

(Placeholders — this repository ships without captured screenshots; add your own when publishing.)

Limitations

  • Sprint-scope reconstruction (Sprint Report's committed/added/removed) relies on the "Sprint" field changelog, which is the only signal Jira Cloud exposes for scope changes — see the code comment in SprintReport.ts for the exact assumption used when no explicit event is found.
  • Testing/Documentation coverage in the Release Readiness report is a label-based heuristic (qa/test, doc/documentation) since Jira has no standard fields for these — adjust the patterns in ReleaseReadinessReport.ts to match your team's conventions.
  • "AI Summary" and "Executive Summary" formats are deterministic, template-based text — this node has no external AI/LLM dependency.