Lists the unique unassigned space permission combinations currently present on the tenant.
Combinations that already map to a space role are filtered out server-side. Each row carries
the decoded set of space permissions and the principal types that currently hold the
combination — these inform which principalType values are valid to include in the matching
bulk role-assignments request.
Results are always sorted by principalCount descending. Sort field and sort order are not
configurable; page size is controlled by the limit query parameter (default 25, min 1,
max 250). Use the cursor field to page through additional results. The generatedAt field
reflects the last audit run that populated the combinations table — call the
generate-combinations endpoint to refresh stale data.
Permissions required: User must be a Confluence administrator.
read:configuration:confluenceConnect app scope required: ADMIN
string
integer
Returned with the page of unassigned combinations (possibly an empty results array if
no combinations exist or if combinations have not yet been generated for this tenant).
1
2
3
4
5
6
7
8
9
10
11
12
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestConfluence } from "@forge/bridge";
const response = await requestConfluence(`/wiki/api/v2/space-permissions/transition/combinations`, {
headers: {
'Accept': 'application/json'
}
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"results": [
{
"combinationId": "<string>",
"spaceCount": 54,
"principalCount": 82,
"permissions": [
{
"id": "<string>",
"displayName": "<string>"
}
],
"principalTypes": [
"USER"
]
}
],
"generatedAt": "<string>",
"cursor": "<string>"
}Submits a task to refresh the space permission combinations in the database, which identifies all unique permission combinations across the site. This provides permission combination IDs that can be used with the assign-roles and remove-access endpoints.
Permissions required: User must be a Confluence administrator.
write:configuration:confluenceConnect app scope required: ADMIN
This request has no parameters.
Returned if the generation task is successfully submitted.
1
2
3
4
5
6
7
8
9
10
11
12
13
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestConfluence } from "@forge/bridge";
const response = await requestConfluence(`/wiki/api/v2/space-permissions/transition/combinations`, {
method: 'POST',
headers: {
'Accept': 'application/json'
}
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());1
2
3
4
5
{
"taskId": "<string>",
"status": "IN_PROGRESS",
"statusUrl": "<string>"
}Bulk assigns roles for one or more permission combination IDs obtained from the space permission combinations. Supports targeting all spaces, specific spaces, or excluding specific spaces.
Permissions required: User must be a Confluence administrator.
write:configuration:confluenceConnect app scope required: ADMIN
array<BulkTransitionRoleAssignment>
RequiredBulkTransitionSpaceSelection
RequiredReturned if the bulk assign roles task is successfully submitted.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestConfluence } from "@forge/bridge";
var bodyData = `{
"assignments": [
{
"permissionCombinationId": "<string>",
"principalTypeAssignments": [
{
"principalType": "USER",
"removeAccess": true,
"roleId": "<string>"
}
]
}
],
"spaceSelection": {
"spaceType": "ALL",
"selectedSpaces": [
{
"id": "<string>",
"key": "<string>"
}
]
}
}`;
const response = await requestConfluence(`/wiki/api/v2/space-permissions/transition/role-assignments`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());1
2
3
4
5
{
"taskId": "<string>",
"status": "IN_PROGRESS",
"statusUrl": "<string>"
}Bulk removes access for one or more permission combination IDs obtained from the space permission combinations. This removes all space permissions for the specified combinations across the targeted spaces.
Permissions required: User must be a Confluence administrator.
write:configuration:confluenceConnect app scope required: ADMIN
array<string>
RequiredBulkTransitionSpaceSelection
RequiredReturned if the bulk remove access task is successfully submitted.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestConfluence } from "@forge/bridge";
var bodyData = `{
"permissionCombinationIds": [
"<string>"
],
"spaceSelection": {
"spaceType": "ALL",
"selectedSpaces": [
{
"id": "<string>",
"key": "<string>"
}
]
}
}`;
const response = await requestConfluence(`/wiki/api/v2/space-permissions/transition/access-removals`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());1
2
3
4
5
{
"taskId": "<string>",
"status": "IN_PROGRESS",
"statusUrl": "<string>"
}Retrieves the status of an async space permission transition task. Use the taskId returned from the generate-combinations, assign-roles, or remove-access endpoints to poll for progress and completion.
Permissions required: User must be a Confluence administrator.
read:configuration:confluenceConnect app scope required: ADMIN
string
RequiredReturned if the task is found and the status is successfully retrieved.
1
2
3
4
5
6
7
8
9
10
11
12
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestConfluence } from "@forge/bridge";
const response = await requestConfluence(`/wiki/api/v2/space-permissions/transition/tasks/{taskId}`, {
headers: {
'Accept': 'application/json'
}
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());1
2
3
4
5
{
"taskId": "<string>",
"status": "IN_PROGRESS",
"errorMessage": "<string>"
}Rate this page: