Jira
Read and write Jira Cloud issues - search with JQL, read and create issues, edit their fields, move them through their automation by transition, assign them, and work their comment threads.
Connect a Jira Cloud site with an Atlassian account email and API token to run its issues end to end: list the projects the account can browse, search with JQL, read an issue in full with its description rendered as text, create issues and subtasks, edit summaries, descriptions, priorities, labels and due dates, discover and apply automation transitions (the only way Jira changes a status), assign or unassign by accountId, and read and post comments - including internal notes restricted to a project role. Everything written through this connection is attributed in Jira to the account whose token it is.
Connect
| Credential field | Required | Where it comes from |
|---|---|---|
Atlassian account email (EMAIL) | Yes | The email of the Atlassian account the API token belongs to. Jira Cloud's Basic auth needs both halves, and a token does not work with a different email. |
API token (API_TOKEN) | Yes | From id.atlassian.com/manage-profile/security/api-tokens. It carries the full per-project permissions of that Atlassian account, and every write is attributed to them. Atlassian expires these - note the expiry date. |
| Setting | Required | What it is |
|---|---|---|
Site URL (SITE_URL) | Yes | The Jira Cloud site's base address, e.g. https://acme.atlassian.net. Every request this connection makes is pinned under it. |
Tools
| Tool | Access | What it does |
|---|---|---|
Whoami (yekar.jira.whoami) | Read | The Atlassian account this connection's credentials belong to, and its accountId - which is the only identifier Jira accepts for a person, since usernames and emails stopped working as identifiers in 2019. |
List projects (yekar.jira.list-projects) | Read | A page of the Jira projects this connection's account can browse, with Jira's own total. A project key is what Create issue and JQL take. |
Search issues (yekar.jira.search-issues) | Read | Search issues with JQL, one page at a time. Jira's search endpoint reports NO total - counting matches means paging through them - and paging is by token rather than by offset. |
Get issue (yekar.jira.get-issue) | Read | One issue in full - summary, description, status and status category, type, priority, people, labels, dates, parent and subtasks. Its ADF description comes back as readable text. |
Create issue (yekar.jira.create-issue) | Write | Create an issue in a project. The issue type and priority are names as that project defines them. The description is written in plain text and converted to Atlassian Document Format. Jira has no dry run. |
Update issue (yekar.jira.update-issue) | Write | Change an issue's fields - summary, description, priority, labels or due date. This CANNOT change status: Jira only moves an issue by applying a transition, so use List transitions and Transition issue for that. |
List transitions (yekar.jira.list-transitions) | Read | The status transitions available on an issue right now. Jira does not let a status be written directly - this is how you find out what an issue can move to, and the id Transition issue needs. |
Transition issue (yekar.jira.transition-issue) | Write | Move an issue to another status by applying a transition - the ONLY way Jira changes a status. Give the id from List transitions, or a name to be resolved against what is currently available. |
Assign issue (yekar.jira.assign-issue) | Write | Assign an issue to an Atlassian account, or unassign it by passing null. Jira accepts only an accountId here - never a username or email - and assigning needs its own permission, separate from editing. |
List comments (yekar.jira.list-comments) | Read | A page of an issue's comments with Jira's own total, oldest first by default. Restricted comments are marked - those are internal notes the reporter cannot see. Bodies come back as readable text rather than ADF trees. |
Add comment (yekar.jira.add-comment) | Write | Post a comment on an issue, attributed to this connection's Atlassian account. It can be restricted to a project role, which makes it an internal note the reporter cannot see. Everyone watching the issue is notified. |
Notes
- Set the Site URL to the Jira site's base address, e.g. https://acme.atlassian.net. A bare site name is not enough - the full https:// address is what the connection needs.
- Create an API token at id.atlassian.com/manage-profile/security/api-tokens and paste it here together with the Atlassian account email it belongs to. Jira Cloud uses Basic auth over both halves, and a token is bound to ONE account - it does not work with a different email.
- Atlassian expires API tokens. A token with an expiry date will stop this connection dead on that date with an authentication error, so plan the rotation when you create it.
- The token IS that Atlassian account: it carries exactly their permissions, and every issue, transition and comment made through this connection appears in Jira under their name. Bind automations using this integration as service connections so the attribution is a role rather than an individual's side effect.
- Jira permissions are per-PROJECT, so an account that can edit issues in one project may not be able to comment in another - and Jira answers 404 rather than a permission error when an account cannot browse a project, deliberately, so that the error cannot leak what exists.
- An issue's status CANNOT be written. Jira only moves an issue by applying a transition, and the available set depends on the issue's current status and its project's automation: call List transitions, then Transition issue with the id it returns.
- Jira identifies people only by accountId - a 24+ character opaque string. Usernames and email addresses have not worked as identifiers since 2019, and passing one silently matches nobody.
- Jira's JQL search reports no total at all; counting matching issues means paging through them with nextPageToken. In JQL, statusCategory != Done is the portable way to say "not finished", because a project can name its done column anything.
- Add one credential per email/token pair - a production and a sandbox account can live on the same connection.