Skip to main content
Jira Cloud (OAuth) connects your organization’s issues, projects, boards, and sprints to Airia agents, backed directly by Atlassian’s own REST API. Each person connects with their own Atlassian account, and access follows Jira’s own permissions on top of whatever scopes the connection is granted.

What It Can Do

CategoryCapability
IssuesCreate, read, update, delete, assign, and transition issues, individually or in bulk. Search with JQL, read changelogs, and manage comments, attachments, issue links, remote links, watchers, and votes.
WorklogsLog time against an issue, and read, update, or delete existing worklog entries.
ProjectsSearch and read project details, and manage components and versions.
Boards and SprintsRead Scrum and Kanban boards, read and create sprints, move issues into a sprint, and read the issues on a board or in a sprint.
UsersSearch users, look up a specific user or the current authenticated user, and find users assignable to an issue or project.
Reference DataRead labels, priorities, statuses, issue types, fields, and field options.
Filters and DashboardsCreate, read, update, and delete saved JQL filters, and read dashboards.
See Tools and Required Scopes below for the full list of tools behind these capabilities.

Connecting

1

Register an OAuth app

Go to the Atlassian Developer Console and select CreateOAuth 2.0 integration. Give the app a name, for example “Airia Jira,” and save.
2

Add the callback URL

Select Authorization in the left sidebar, then click Add next to OAuth 2.0 (3LO). Add the following callback URL and save:
https://auth.airia.ai/OAuth/callback
3

Add API permissions

Select Permissions in the left sidebar, click Add next to the Jira API, and enable every scope listed under Tools and Required Scopes below. The Granting All Scopes section has both scope lists ready to paste in.
4

Copy your credentials

Select Settings and copy the Client ID and Secret.
5

Find your Cloud ID

Your Cloud ID is a UUID Airia uses to reach your specific Jira site. Visit the following URL, replacing {your-site} with your Atlassian domain, and copy the cloudId value from the response:
https://{your-site}.atlassian.net/_edge/tenant_info
6

Add it to Airia

Add Jira Cloud (OAuth) as a server on a Gateway or Deployment, then enter your Client ID, Client Secret, and Cloud ID.
The OAuth Scopes field in Airia is optional. Leave it blank to request the standard scopes above, or fill it in to request a different set. If you customize it, make sure to include offline_access so your connection can refresh automatically.

Tools and Required Scopes

Every tool below needs a specific Jira scope before it will work. Tool names are what an agent actually calls, the same names you’d see in an agent’s tool call log.
Atlassian scopes come in two flavors. Classic scopes are broad and recommended, granting one alone is enough for every tool that lists one. Granular scopes are narrower and only needed if you’re building an OAuth app without classic scopes, in which case a tool needs every listed granular scope granted together. A few tools, mostly Jira Software board and sprint tools, have no classic equivalent at all and always need their granular scope(s) regardless of which approach you use.

Issues

ToolWhat it doesScope(s) required
jira_cloud_rest_api_searchissuesjqlSearch Jira issues using JQL query language.read:jira-work (Classic) or read:issue-details:jira and read:field.default-value:jira and read:field.option:jira and read:field:jira and read:group:jira (Granular)
jira_cloud_rest_api_getsearchapproximatecountGet approximate count of issues matching JQL.read:jira-work (Classic) or read:issue-details:jira and read:field.default-value:jira and read:field.option:jira and read:field:jira and read:group:jira (Granular)
jira_cloud_rest_api_bulkfetchissuesFetch multiple issues by ID in bulk.read:jira-work (Classic) or read:issue-meta:jira and read:issue-security-level:jira and read:issue.vote:jira and read:issue.changelog:jira and read:avatar:jira and read:issue:jira and read:status:jira and read:user:jira and read:field-configuration:jira (Granular)
jira_cloud_rest_api_getissueGet a single Jira issue by key or ID.read:jira-work (Classic) or read:issue-meta:jira and read:issue-security-level:jira and read:issue.vote:jira and read:issue.changelog:jira and read:avatar:jira and read:issue:jira and read:status:jira and read:user:jira and read:field-configuration:jira (Granular)
jira_cloud_rest_api_updateissueUpdate an existing Jira issue.write:jira-work (Classic) or write:issue:jira (Granular)
jira_cloud_rest_api_deleteissueDelete a Jira issue permanently.write:jira-work (Classic) or delete:issue:jira (Granular)
jira_cloud_rest_api_createissueCreate a new Jira issue.write:jira-work (Classic) or write:issue:jira and write:comment:jira and write:comment.property:jira and write:attachment:jira and read:issue:jira (Granular)
jira_cloud_rest_api_getissuetransitionsGet available workflow transitions for an issue.read:jira-work (Classic) or read:issue.transition:jira and read:status:jira and read:field-configuration:jira (Granular)
jira_cloud_rest_api_transitionissueTransition an issue to a new status.write:jira-work (Classic) or write:issue:jira and write:issue.property:jira (Granular)
jira_cloud_rest_api_assignissueAssign an issue to a user.write:jira-work (Classic) or write:issue:jira (Granular)
jira_cloud_rest_api_getissuechangelogGet issue change history.read:jira-work (Classic) or read:issue-meta:jira and read:avatar:jira and read:issue.changelog:jira (Granular)
jira_cloud_rest_api_bulkcreateissuesBulk create multiple issues.write:jira-work (Classic) or write:issue:jira and write:comment:jira and write:comment.property:jira and write:attachment:jira and read:issue:jira (Granular)
jira_cloud_rest_api_bulktransitionissuesBulk transition multiple issues.write:jira-work (Classic) or write:issue:jira and read:issue:jira (Granular)

Comments

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getcommentsGet comments on an issue.read:jira-work (Classic) or read:comment:jira and read:comment.property:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_addcommentAdd a comment to an issue.write:jira-work (Classic) or read:comment:jira and read:comment.property:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and write:comment:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_updatecommentUpdate an existing comment.write:jira-work (Classic) or read:comment:jira and read:comment.property:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and write:comment:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_deletecommentDelete a comment from an issue.write:jira-work (Classic) or delete:comment:jira and delete:comment.property:jira (Granular)

Attachments

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getattachmentsGet attachments on an issue.read:jira-work (Classic) or read:issue-meta:jira and read:issue-security-level:jira and read:issue.vote:jira and read:issue.changelog:jira and read:avatar:jira and read:issue:jira and read:status:jira and read:user:jira and read:field-configuration:jira (Granular)
jira_cloud_rest_api_addattachmentAdd an attachment to an issue.write:jira-work (Classic) or read:user:jira and write:attachment:jira and read:attachment:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_deleteattachmentDelete an attachment.write:jira-work (Classic) or delete:attachment:jira (Granular)
ToolWhat it doesScope(s) required
jira_cloud_rest_api_linkissuesCreate a link between two issues.write:jira-work (Classic) or write:comment:jira and write:issue:jira and write:issue-link:jira (Granular)
jira_cloud_rest_api_deleteissuelinkDelete a link between issues.write:jira-work (Classic) or delete:issue-link:jira (Granular)
jira_cloud_rest_api_getremotelinksGet remote links on an issue.read:jira-work (Classic) or read:issue.remote-link:jira and read:status:jira (Granular)
jira_cloud_rest_api_addremotelinkAdd a remote/external link to an issue.write:jira-work (Classic) or write:issue:jira and write:issue.remote-link:jira and read:issue.remote-link:jira (Granular)

Worklogs

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getworklogsGet work logs (time entries) on an issue.read:jira-work (Classic) or read:group:jira and read:issue-worklog:jira and read:issue-worklog.property:jira and read:project-role:jira and read:user:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_addworklogLog time/work on an issue.write:jira-work (Classic) or write:issue-worklog:jira and write:issue-worklog.property:jira and read:avatar:jira and read:group:jira and read:issue-worklog:jira and read:project-role:jira and read:user:jira and read:issue-worklog.property:jira (Granular)
jira_cloud_rest_api_updateworklogUpdate a work log entry.write:jira-work (Classic) or read:comment:jira and read:group:jira and read:issue-worklog:jira and read:issue-worklog.property:jira and read:project-role:jira and read:user:jira and write:comment:jira and write:issue-worklog:jira and write:issue-worklog.property:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_deleteworklogDelete a work log entry.write:jira-work (Classic) or delete:issue-worklog:jira and delete:issue-worklog.property:jira and write:issue.time-tracking:jira (Granular)

Watchers

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getwatchersGet users watching an issue.read:jira-work (Classic) or read:issue.watcher:jira and read:user:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_addwatcherAdd a watcher to an issue.write:jira-work (Classic) or write:issue.watcher:jira (Granular)
jira_cloud_rest_api_removewatcherRemove a watcher from an issue.write:jira-work (Classic) or write:issue.watcher:jira (Granular)

Votes

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getvotesGet votes on an issue.read:jira-work (Classic) or read:issue.vote:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular)
jira_cloud_rest_api_addvoteVote for an issue.write:jira-work (Classic) or write:issue.vote:jira (Granular)
jira_cloud_rest_api_removevoteRemove your vote from an issue.write:jira-work (Classic) or write:issue.vote:jira (Granular)

Projects

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getprojectsSearch and list Jira projects.read:jira-work (Classic) or read:issue-type:jira and read:project:jira and read:project.property:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira and read:issue-type-hierarchy:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular)
jira_cloud_rest_api_getprojectGet a specific project’s details.read:jira-work (Classic) or read:issue-type:jira and read:project:jira and read:project.property:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira and read:issue-type-hierarchy:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular)

Components

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getprojectcomponentsGet components in a project.read:jira-work (Classic) or read:project:jira and read:project.component:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular)
jira_cloud_rest_api_createcomponentCreate a new component in a project.manage:jira-project (Classic) or read:project:jira and read:user:jira and write:project.component:jira and read:application-role:jira and read:avatar:jira and read:group:jira and read:project.component:jira (Granular)

Versions

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getprojectversionsGet versions/releases in a project.read:jira-work (Classic) or read:project-version:jira (Granular)
jira_cloud_rest_api_createversionCreate a new version/release.manage:jira-project (Classic) or write:project-version:jira and read:project-version:jira (Granular)
jira_cloud_rest_api_updateversionUpdate or release a version.manage:jira-project (Classic) or write:project-version:jira and read:project-version:jira (Granular)

Boards

Jira Software’s agile endpoints (Boards and Sprints) have no classic scope equivalent. Their granular scopes are always required, even if you otherwise use classic scopes for everything else.
ToolWhat it doesScope(s) required
jira_cloud_rest_api_getboardsGet all agile boards (Scrum/Kanban).read:board-scope:jira-software and read:project:jira
jira_cloud_rest_api_getboardsprintsGet sprints for a board.read:sprint:jira-software
jira_cloud_rest_api_getboardissuesGet issues on a board.read:board-scope:jira-software and read:issue-details:jira

Sprints

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getsprintissuesGet issues in a sprint.read:sprint:jira-software and read:issue-details:jira and read:jql:jira
jira_cloud_rest_api_moveissuestosprintMove issues to a sprint.write:sprint:jira-software
jira_cloud_rest_api_createsprintCreate a new sprint.write:sprint:jira-software
jira_cloud_rest_api_updatesprintUpdate a sprint.write:sprint:jira-software

Users

ToolWhat it doesScope(s) required
jira_cloud_rest_api_searchusersSearch for Jira users.read:jira-user (Classic) or read:user:jira and read:user.property:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular)
jira_cloud_rest_api_getuserGet a specific user’s details.read:jira-user (Classic) or read:application-role:jira and read:group:jira and read:user:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_getcurrentuserGet current authenticated user.read:jira-user (Classic) or read:application-role:jira and read:group:jira and read:user:jira and read:avatar:jira (Granular)
jira_cloud_rest_api_searchassignableusersGet users assignable to an issue or project.read:jira-user (Classic) or read:issue:jira and read:project:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular)

Reference Data

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getlabelsGet all labels used in Jira.read:jira-work (Classic) or read:label:jira (Granular)
jira_cloud_rest_api_getprioritiesGet all priority levels.read:jira-work (Classic) or read:priority:jira (Granular)
jira_cloud_rest_api_getstatusesGet all status values.read:jira-work (Classic) or read:status:jira (Granular)
jira_cloud_rest_api_getissuetypesGet all issue types.read:jira-work (Classic) or read:issue-type:jira and read:avatar:jira and read:project-category:jira and read:project:jira (Granular)
jira_cloud_rest_api_getfieldsGet all fields (standard and custom).read:jira-work (Classic) or read:field:jira and read:avatar:jira and read:project-category:jira and read:project:jira and read:field-configuration:jira (Granular)
jira_cloud_rest_api_getfieldoptionsGet options for a select/dropdown field.manage:jira-configuration (Classic) or read:field.option:jira (Granular)

Filters

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getfiltersSearch saved JQL filters.read:jira-work (Classic) or read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:jql:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira (Granular)
jira_cloud_rest_api_getfavoritefiltersGet your favorite filters.read:jira-work (Classic) or read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:jql:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira (Granular)
jira_cloud_rest_api_createfilterCreate a new saved filter.write:jira-work (Classic) or read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and write:filter:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira and read:issue-type:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular)
jira_cloud_rest_api_updatefilterUpdate a saved filter.write:jira-work (Classic) or write:filter:jira and read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:jql:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira (Granular)
jira_cloud_rest_api_deletefilterDelete a saved filter.write:jira-work (Classic) or delete:filter:jira (Granular)

Dashboards

ToolWhat it doesScope(s) required
jira_cloud_rest_api_getdashboardsGet all dashboards.read:jira-work (Classic) or read:dashboard:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira and read:issue-type:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular)

Granting All Scopes

If you’d rather not cross-reference the table above tool by tool, enable every scope below in the Atlassian console and every tool becomes available at once. Classic scopes
read:jira-user read:jira-work write:jira-work manage:jira-project manage:jira-configuration
Granular scopes
read:attachment:jira read:board-scope:jira-software write:board-scope:jira-software read:sprint:jira-software write:sprint:jira-software
Together, these two short lists cover every tool in the reference above. The five Classic scopes cover every tool that lists a Classic option, and the Granular list adds the handful of scopes Jira Software’s Boards and Sprints tools need, since those have no Classic equivalent. You don’t need to hunt down the long Granular lists shown per tool above unless you’re deliberately building an OAuth app that avoids Classic scopes entirely.

Troubleshooting

Check the Tools and Required Scopes table above for the exact scope that tool needs, add it to your app registration, and reconnect.
This happens when offline_access wasn’t included in the granted scopes, so Airia has no way to refresh the session. If you customized the OAuth Scopes field in Airia, add offline_access back in and reconnect.

Learn More

Jira Cloud (API Token)

Airia also offers Jira Cloud (API Token), a separate, Restricted server that most organizations will never see or need. It’s not enabled by default. If you want to use it, talk to your Airia contact about adding it to your tenant, after which a Platform Admin, Admin, or Security Admin can turn it on from Server Management using Add Restricted Server.
It exposes the exact same tools as Jira Cloud (OAuth) above, just with a different way of authenticating: every request runs as whichever Atlassian account owns the token, so there’s no OAuth app, no Cloud ID, and no scopes to grant. The token has full access to whatever that account can already do in Jira.
1

Create an API token

Go to your Atlassian API token settings and create a new token. Copy it, along with the email address of the Atlassian account it belongs to.
2

Base64 encode your credential

Combine your email and token as {your email}:{your API token}, then Base64 encode the whole string. On macOS or Linux, you can run:
echo -n "you@example.com:your-api-token" | base64
3

Add it to Airia

Add Jira Cloud (API Token) as a server on a Gateway or Deployment, then enter the encoded string as the credential, along with your Atlassian domain, the part before .atlassian.net in your site’s URL.
The credential Airia needs is the Base64 encoding of email:apitoken, not the API token by itself. This method authenticates every request with a single token rather than individual user sign-in, so it’s best suited to simpler or single-account setups.