Restore archived approvals (Unarchive action)
Description
Context
Reviewing archived approvals already works: the Status = Archived filter on the Approvals page and GET /webapi/v2/approvals?status=ARCHIVED. Restoring does not exist anywhere in the app, for any object.
Archiving does not change the state of an approval (status, steps and decisions already made are left untouched), so restoring is resuming the process in place, not recreating data.
Scope
-
An Unarchive action in the UI, available on approvals with the Archived status (Approvals list view and the approval panel on the issue).
-
A
PATCH /webapi/v2/approvals/{approvalId}/unarchiveendpoint with its own API key privilege. -
Re-sending notifications to the approvers of active steps.
Assumptions
Resume, not restart. The approval returns to its pre-archive state: same identifier, same definition, same steps, all decisions made earlier preserved. The process continues from where it stopped.
Restoring creates a new version of the approval. This keeps the pre-archive state in history and makes old notifications (Slack, decision links in emails) stop working. Nobody approves the approval by clicking a link from an email sent before archiving.
New notifications. Approvers of active steps receive fresh notifications, through the same channel as when the approval started. Slack messages sent before archiving stay in their "archived" state and are not updated.
All features come back. Once restored, the approval again accepts decisions, sends automatic reminders, counts towards workflow conditions and validators, is visible in the Jira field and in JQL, returns to the approvers' pending lists and to dashboard statistics.
Decision deadline and validity expiration are shifted. If the decision deadline or the validity expiration passed while the approval was archived, the restored approval does not expire immediately. The deadlines are recalculated: we take the original period (from the approval start to the deadline) and set it from the moment of restoring. The same mechanism is already used when an approval is restarted after a page change.
Trace in history. Steps record "Restored from archive by <user>", visible in the Activity view and in the approval panel.
Permissions. The action requires the same permission as archiving (Archive existing Approval Path). The API uses a separate key privilege, analogous to archiving.
Out of scope
-
Unarchive in Jira Automation and in the workflow post-function. Archiving is available there; restoring is a corrective operation performed deliberately by a person or an integration.
-
Restoring deleted approvals.
-
Recreating the interactive Slack messages from before archiving.
-
A webhook for archiving and restoring (webhooks currently cover creation, step decision and completion only).
-
Bulk restoring.
Acceptance criteria
-
An archived approval offers an Unarchive action in the UI, visible only to a user holding the archive permission.
-
After restoring, the approval disappears from the Archived filter and returns to its previous status (Ongoing / Approved / Rejected).
-
The approver of an active step can make a decision from the approval panel and from a new email.
-
A decision link from an email sent before archiving does not work.
-
An approval whose decision deadline or validity expiration passed during archiving has its deadline shifted by the original period after restoring, and does not expire immediately.
-
The workflow condition and validator, the Jira field and JQL search all see the restored approval.
-
The approval returns to the approver's pending list and to delegations.
-
Automatic reminders resume.
-
Archiving a restored approval again works.
-
PATCH /webapi/v2/approvals/{approvalId}/unarchiveworks for a key with the matching privilege and returns 403 without it. -
The step history shows who restored the approval and when.
-
API documentation covers the new endpoint and privilege.