New API: Migrate Confluence spaces from legacy permissions to role-based access control (RBAC)
- Announced
- APIs
- rest-confluence-cloud
- Endpoints
/wiki/api/v2/space-permissions/transition- Scopes
read:configuration:confluencewrite:configuration:confluence- Severity
- notable, set by
reef/atlassian-rule-v1 - Source
- https://developer.atlassian.com/changelog/#CHANGE-3279
We've added a new set of public REST API endpoints that let you migrate Confluence spaces from the legacy granular space permission model to role-based access control (RBAC) using space roles.
Why this matters
Confluence spaces historically used 14 granular permissions (e.g. Add page, Delete attachment, Set permissions) assigned directly to users and groups. This checkbox-based model is difficult to audit, bulk-manage, and keep consistent across hundreds of spaces.
Confluence is replacing this with role-based access control (RBAC), where each principal (user, group, or app) is assigned a single space role (e.g. Admin, Collaborator, Viewer) that bundles the relevant permissions together.
These endpoints are the programmatic migration path: they let Confluence admins convert existing granular permission grants into equivalent role assignments — in bulk, without manual remapping — and are designed to be called from scripts or admin tooling.
New endpoints
All endpoints are under /wiki/api/v2/space-permissions/transition:
[GET /combinations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permission-transition/#api-space-permissions-transition-combinations-get)— List a space's permission combinations that don't yet map to a role[POST /combinations](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permission-transition/#api-space-permissions-transition-combinations-post)— Generate the permission combinations for a space[POST /role-assignments](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permission-transition/#api-space-permissions-transition-role-assignments-post)— Bulk assign space roles to users/groups based on their existing permission combinations[POST /access-removals](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permission-transition/#api-space-permissions-transition-access-removals-post)— Bulk remove legacy permission combinations after transitioning to roles[GET /tasks/{taskId}](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permission-transition/#api-space-permissions-transition-tasks-taskid-get)— Check the status of a transition task
OAuth 2.0 scopes required
read:configuration:confluence— for the GET endpointswrite:configuration:confluence— for the POST endpoints
Calling these endpoints requires Confluence site admin permission.
Typical migration script flow
POST /combinations— compute the permission combinations currently in use across a space's grantees (returns a taskId)- Poll
GET /tasks/{taskId}until COMPLETED GET /combinations— list the combinations that aren't yet mapped to an RBAC rolePOST /role-assignments— bulk assign roles so existing users and groups retain equivalent access under the new modelPOST /access-removals— bulk remove the legacy permission grants that have been superseded by role assignments- Poll
GET /tasks/{taskId}for the assignment / removal tasks until COMPLETED
Stability
These endpoints are experimental. We're validating the API contract against real-world migration workloads and plan to stabilize it once we've confirmed the shape holds across a range of tenant configurations.
Availability
Available now in all Confluence Cloud editions in roles transition mode. Please raise issues on the Atlassian Developer Community if you find anything.
The text above is Atlassian's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.