Product
Jira Cloud
Jira Software – REST / Agile APIs
Description
We are consuming Jira Cloud REST APIs to fetch stories for backend processing. We are seeing a mismatch between Jira UI behavior and API responses for certain issues.
Problem Statement
Some Jira stories:
Cannot be opened via Jira UI link
“Issue does not exist or you do not have permission to see it”
Do not appear in JQL search results
But are still returned in REST / Agile API responses with full issue details
This behavior strongly suggests the issues are archived, not deleted. However, the issue API response does not include any flag or metadata to identify whether an issue is archived.
What We Observed
/rest/api/2/issue/{issueId} returns full issue payload
Agile APIs sometimes return these issues as well
Jira UI hides the issue completely
JQL search (issuekey = XYZ) returns no results
No archived, isArchived, or equivalent field exists in the API response
Impact
Because archive state is not exposed:
Backend systems cannot reliably exclude archived stories
UI and API data become inconsistent
Additional workaround logic is required, which is not officially documented
Questions
Is there any REST API field or metadata that indicates an issue is archived?
Is the current behavior (archived issues returned by some APIs) expected?
What is the recommended and supported approach to exclude archived issues programmatically?
Should archived issues be automatically excluded from all REST and Agile APIs?
Expected Behavior
Either:
Archived issues should include an explicit archive indicator in the API response
OR
Archived issues should be consistently excluded from all REST/Agile APIs
Current Workaround
We are considering excluding issues that:
Are returned by issue APIs
But do not appear in JQL search results
However, this feels like an unsupported workaround.
Request
Looking for guidance or best practices from Jira team or community on how to reliably detect and exclude archived issues via REST APIs.
Hello @Azhar_Khan34
Based on my experience a work item that has been archived (in Jira Cloud) can still be viewed in the UI using a direct link if the user has permission to view it per the project/space permissions and issue security. Example:
So I would expect the API that retrieves an individual issue by key; i.e.
/rest/api/3/issue/{issueId}
...should provide the archived issue data if the authenticated user has permission otherwise to see the issue.
You noted "Jira UI hides the issue completely". Were you using the explicit link to the individual issue? i.e. https://<baseURL>/browse/<issueKey>
And did the user have permissions (per the project permissions) to see issues in the project?
And was there no Issue Security imposed on the issue, or was the user within the scope of the imposted Issue Security?
Archiving issues is expected to exclude them from the results of a JQL query in the UI, so I would expect using the API to retrieve issues using a JQL would also exclude the archived issues.
I have not tested all the API possibilities to see if they meet these expectations.
Hi @Azhar_Khan34 ,
Thanks for using the Atlassian Community and I hope you are doing well!
Currently the REST API does not expose if an issue has been archived. We do have a request to add this to the REST API response and I could encourage you to vote for and watch JRACLOUD-93268 if you are interested in seeing this type of functionality potentially added a future release of Jira.
One possible approach is to maintain an external dataset of archived issues and compare against that.
Another possible approach would be to set up a workflow for the archive process and through that process set a custom field value that will get returned via the REST API. Then you could use the value of that custom field to determine if the issue is archived.
Best,
Andy
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Another workaround based on what @Trudy Claspill pointed out:
Archiving issues is expected to exclude them from the results of a JQL query in the UI, so I would expect using the API to retrieve issues using a JQL would also exclude the archived issues.
So instead of maintaining a separate dataset you could use the JQL endpoint to check if the work item is returned. If it is returned you know it is not archived and if it is not you know it is.
Example:
/rest/api/3/search/jql?jql=key=TCSC-65
If TCSC-65 is archived it should give you a result like:
{"issues":[],"isLast":true}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.