{"openapi":"3.0.3","info":{"title":"The Confluence Cloud REST API v2","description":"This document describes Confluence's v2 APIs. This is intended to be an iteration on the existing Confluence Cloud REST API with improvements in both endpoint definitions and performance.","termsOfService":"https://developer.atlassian.com/platform/marketplace/atlassian-developer-terms/","version":"2.0.0"},"externalDocs":{"description":"The online and complete version of the Confluence Cloud REST API docs.","url":"https://developer.atlassian.com/cloud/confluence/rest/v2"},"servers":[{"url":"https://{your-domain}/wiki/api/v2","variables":{"your-domain":{"default":"no-default","description":"Specific domain of the Confluence site being used. Must be provided."}}}],"tags":[{"name":"Admin Key","description":"The [Admin Key feature](https://support.atlassian.com/confluence-cloud/docs/bypass-access-restrictions-on-a-page-with-admin-key/) is only offered with Confluence Cloud Premium and Enterprise to organization or site admins.\n\n**NOTE:** Users can only make calls to our public REST APIs using a valid Admin Key by adding the following HTTP header on their requests: `Atl-Confluence-With-Admin-Key: true`. Visit the [Confluence Cloud Changelog](https://developer.atlassian.com/cloud/confluence/changelog/#CHANGE-2480) for more details."},{"name":"Attachment","description":""},{"name":"App Properties","description":""},{"name":"Ancestors","description":""},{"name":"Blog Post","description":""},{"name":"Children","description":""},{"name":"Classification Level","description":""},{"name":"Comment","description":""},{"name":"Content","description":""},{"name":"Content Permissions","description":""},{"name":"Content Properties","description":""},{"name":"Custom Content","description":""},{"name":"Database","description":""},{"name":"Data Policies","description":""},{"name":"Descendants","description":""},{"name":"Folder","description":""},{"name":"Label","description":""},{"name":"Like","description":""},{"name":"Operation","description":""},{"name":"Page","description":""},{"name":"Redactions","description":""},{"name":"Smart Link","description":""},{"name":"Space","description":""},{"name":"Space Permissions","description":""},{"name":"Space Permission Transition","description":""},{"name":"Space Properties","description":""},{"name":"Space Roles","description":""},{"name":"Task","description":""},{"name":"User","description":""},{"name":"Version","description":""},{"name":"Whiteboard","description":""}],"paths":{"/pages/{id}/restriction-state":{"get":{"tags":["Content Permissions"],"operationId":"getPageRestrictionState","summary":"Get page restriction state","description":"Returns the restriction state of a page.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the page.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the page.","schema":{"format":"int64","type":"integer"}}],"responses":{"200":{"description":"Returned if the restriction state is successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:page:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setPageRestrictionState","summary":"Set page restriction state","description":"Sets the restriction state of a page.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the page or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the page.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"$ref":"#/components/schemas/ContentRestrictionState"}}}}}},"responses":{"200":{"description":"Returned if the state was successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/blogposts/{id}/restriction-state":{"get":{"tags":["Content Permissions"],"operationId":"getBlogPostRestrictionState","summary":"Get blog post restriction state","description":"Returns the restriction state of a blog post.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the blog post.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the blog post.","schema":{"format":"int64","type":"integer"}}],"responses":{"200":{"description":"Returned if the restriction state is successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:page:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setBlogPostRestrictionState","summary":"Set blog post restriction state","description":"Sets the restriction state of a blog post.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the blog post or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the blog post.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"$ref":"#/components/schemas/ContentRestrictionState"}}}}}},"responses":{"200":{"description":"Returned if the state was successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/databases/{id}/restriction-state":{"get":{"tags":["Content Permissions"],"operationId":"getDatabaseRestrictionState","summary":"Get database restriction state","description":"Returns the restriction state of a database.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the database.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the database.","schema":{"format":"int64","type":"integer"}}],"responses":{"200":{"description":"Returned if the restriction state is successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:database:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:database:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setDatabaseRestrictionState","summary":"Set database restriction state","description":"Sets the restriction state of a database.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the database or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the database.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"$ref":"#/components/schemas/ContentRestrictionState"}}}}}},"responses":{"200":{"description":"Returned if the state was successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:database:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:database:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/whiteboards/{id}/restriction-state":{"get":{"tags":["Content Permissions"],"operationId":"getWhiteboardRestrictionState","summary":"Get whiteboard restriction state","description":"Returns the restriction state of a whiteboard.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the whiteboard.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the whiteboard.","schema":{"format":"int64","type":"integer"}}],"responses":{"200":{"description":"Returned if the restriction state is successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:whiteboard:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:whiteboard:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setWhiteboardRestrictionState","summary":"Set whiteboard restriction state","description":"Sets the restriction state of a whiteboard.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the whiteboard or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the whiteboard.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"$ref":"#/components/schemas/ContentRestrictionState"}}}}}},"responses":{"200":{"description":"Returned if the state was successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:whiteboard:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:whiteboard:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/folders/{id}/restriction-state":{"get":{"tags":["Content Permissions"],"operationId":"getFolderRestrictionState","summary":"Get folder restriction state","description":"Returns the restriction state of a folder.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the folder.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the folder.","schema":{"format":"int64","type":"integer"}}],"responses":{"200":{"description":"Returned if the restriction state is successfully retrieved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:folder:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:folder:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setFolderRestrictionState","summary":"Set folder restriction state","description":"Sets the restriction state of a folder.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the folder or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the folder.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"$ref":"#/components/schemas/ContentRestrictionState"}}}}}},"responses":{"200":{"description":"Returned if the state was successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestrictionStateResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:folder:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:folder:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/pages/{id}/permissions":{"get":{"tags":["Content Permissions"],"operationId":"getPagePermissions","summary":"Get page permissions","description":"Returns the direct content permissions on a page with optional filtering by operation, principal-type, and principal-id.\nResults are cursor-paginated (max 250 per page).\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the page.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the page.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation (`read` or `update`).","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type (`user` or `group`). May be used without `principal-id` to return all permissions for that type.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for pagination. Use the value from the previous response's `_links.next`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of permission entries to return. Must be between 1 and 250.","schema":{"format":"int32","type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Returned if the permissions are successfully retrieved.","content":{"application/json":{"schema":{"title":"MultiEntityResult","type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ContentPermissionOutput"}},"_links":{"$ref":"#/components/schemas/MultiEntityLinks"}}}}}},"400":{"description":"Returned if the request parameters are invalid (e.g. `principal-id` provided without `principal-type`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:page:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"post":{"tags":["Content Permissions"],"operationId":"addPagePermissions","summary":"Add page permissions","description":"Adds or replaces direct content permissions for the specified principals on a page. Permissions for other principals are preserved; use `PUT` to replace all permissions at once.\n\nA principal can hold only one `read` or `update` permission. Adding `read` for a principal that currently has `update` downgrades that principal to `read`; adding `update` upgrades them. If the same request contains both operations for a principal, `update` takes precedence.\n\nReasserting a principal's existing permission is idempotent and returns a successful response without creating a duplicate entry.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the page or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the page.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid or the operation would result in an invalid permission state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setPagePermissions","summary":"Set page permissions","description":"Replaces all direct content permissions on a page with the provided set. Any permissions not included in the request body are removed.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the page or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the page.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid or the operation would result in an invalid permission state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"delete":{"tags":["Content Permissions"],"operationId":"deletePagePermissions","summary":"Delete page permissions","description":"Deletes direct content permissions from a page. Filters narrow the deletion scope; omitting all filters deletes all direct permissions.\n\nThe following filter combinations are supported:\n- No filters: deletes all direct permissions.\n- `principal-type` + `principal-id`: deletes the principal's direct `read` or `update` permission.\n- `operation` + `principal-type` + `principal-id`: deletes the permission only when its operation matches.\n\nProviding `operation` without `principal-type`/`principal-id`, or providing only one of `principal-type`/`principal-id`, returns a 400 error.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the page or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the page.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation. Must be provided together with `principal-type` and `principal-id`.","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type. Must be provided together with `principal-id`.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Returned if the permissions are successfully deleted."},"400":{"description":"Returned if the filter combination is invalid or the operation would result in an invalid permission state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/blogposts/{id}/permissions":{"get":{"tags":["Content Permissions"],"operationId":"getBlogPostPermissions","summary":"Get blog post permissions","description":"Returns the direct content permissions on a blog post with optional filtering by operation, principal-type, and principal-id.\nResults are cursor-paginated (max 250 per page).\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the blog post.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the blog post.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation (`read` or `update`).","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type (`user` or `group`). May be used without `principal-id` to return all permissions for that type.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for pagination. Use the value from the previous response's `_links.next`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of permission entries to return. Must be between 1 and 250.","schema":{"format":"int32","type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Returned if the permissions are successfully retrieved.","content":{"application/json":{"schema":{"title":"MultiEntityResult","type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ContentPermissionOutput"}},"_links":{"$ref":"#/components/schemas/MultiEntityLinks"}}}}}},"400":{"description":"Returned if the request parameters are invalid (e.g. `principal-id` provided without `principal-type`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:page:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"post":{"tags":["Content Permissions"],"operationId":"addBlogPostPermissions","summary":"Add blog post permissions","description":"Adds or replaces direct content permissions for the specified principals on a blog post. Permissions for other principals are preserved; use `PUT` to replace all permissions at once.\n\nA principal can hold only one `read` or `update` permission. Adding `read` for a principal that currently has `update` downgrades that principal to `read`; adding `update` upgrades them. If the same request contains both operations for a principal, `update` takes precedence.\n\nReasserting a principal's existing permission is idempotent and returns a successful response without creating a duplicate entry.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the blog post or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the blog post.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid or the operation would result in an invalid permission state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setBlogPostPermissions","summary":"Set blog post permissions","description":"Replaces all direct content permissions on a blog post with the provided set. Any permissions not included in the request body are removed.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the blog post or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the blog post.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid or the operation would result in an invalid permission state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"delete":{"tags":["Content Permissions"],"operationId":"deleteBlogPostPermissions","summary":"Delete blog post permissions","description":"Deletes direct content permissions from a blog post. See `DELETE /pages/{id}/permissions` for filter semantics.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the blog post or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the blog post.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation. Must be provided together with `principal-type` and `principal-id`.","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type. Must be provided together with `principal-id`.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Returned if the permissions are successfully deleted."},"400":{"description":"Returned if the filter combination is invalid or the operation would result in an invalid permission state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:page:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:page:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/databases/{id}/permissions":{"get":{"tags":["Content Permissions"],"operationId":"getDatabasePermissions","summary":"Get database permissions","description":"Returns the direct content permissions on a database with optional filtering.\nResults are cursor-paginated (max 250 per page).\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the database.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the database.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation (`read` or `update`).","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type (`user` or `group`). May be used without `principal-id` to return all permissions for that type.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for pagination. Use the value from the previous response's `_links.next`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of permission entries to return. Must be between 1 and 250.","schema":{"format":"int32","type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Returned if the permissions are successfully retrieved.","content":{"application/json":{"schema":{"title":"MultiEntityResult","type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ContentPermissionOutput"}},"_links":{"$ref":"#/components/schemas/MultiEntityLinks"}}}}}},"400":{"description":"Returned if the request parameters are invalid (e.g. `principal-id` provided without `principal-type`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:database:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:database:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"post":{"tags":["Content Permissions"],"operationId":"addDatabasePermissions","summary":"Add database permissions","description":"Adds or replaces direct content permissions for the specified principals on a database. Permissions for other principals are preserved; use `PUT` to replace all permissions at once.\n\nA principal can hold only one `read` or `update` permission. Adding `read` for a principal that currently has `update` downgrades that principal to `read`; adding `update` upgrades them. If the same request contains both operations for a principal, `update` takes precedence.\n\nReasserting a principal's existing permission is idempotent and returns a successful response without creating a duplicate entry.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the database or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the database.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:database:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:database:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setDatabasePermissions","summary":"Set database permissions","description":"Replaces all direct content permissions on a database with the provided set.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the database or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the database.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:database:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:database:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"delete":{"tags":["Content Permissions"],"operationId":"deleteDatabasePermissions","summary":"Delete database permissions","description":"Deletes direct content permissions from a database. See `DELETE /pages/{id}/permissions` for filter semantics.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the database or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the database.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation. Must be provided together with `principal-type` and `principal-id`.","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type. Must be provided together with `principal-id`.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Returned if the permissions are successfully deleted."},"400":{"description":"Returned if the filter combination is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:database:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:database:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/whiteboards/{id}/permissions":{"get":{"tags":["Content Permissions"],"operationId":"getWhiteboardPermissions","summary":"Get whiteboard permissions","description":"Returns the direct content permissions on a whiteboard with optional filtering.\nResults are cursor-paginated (max 250 per page).\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the whiteboard.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the whiteboard.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation (`read` or `update`).","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type (`user` or `group`). May be used without `principal-id` to return all permissions for that type.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for pagination. Use the value from the previous response's `_links.next`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of permission entries to return. Must be between 1 and 250.","schema":{"format":"int32","type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Returned if the permissions are successfully retrieved.","content":{"application/json":{"schema":{"title":"MultiEntityResult","type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ContentPermissionOutput"}},"_links":{"$ref":"#/components/schemas/MultiEntityLinks"}}}}}},"400":{"description":"Returned if the request parameters are invalid (e.g. `principal-id` provided without `principal-type`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:whiteboard:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:whiteboard:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"post":{"tags":["Content Permissions"],"operationId":"addWhiteboardPermissions","summary":"Add whiteboard permissions","description":"Adds or replaces direct content permissions for the specified principals on a whiteboard. Permissions for other principals are preserved; use `PUT` to replace all permissions at once.\n\nA principal can hold only one `read` or `update` permission. Adding `read` for a principal that currently has `update` downgrades that principal to `read`; adding `update` upgrades them. If the same request contains both operations for a principal, `update` takes precedence.\n\nReasserting a principal's existing permission is idempotent and returns a successful response without creating a duplicate entry.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the whiteboard or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the whiteboard.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:whiteboard:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:whiteboard:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setWhiteboardPermissions","summary":"Set whiteboard permissions","description":"Replaces all direct content permissions on a whiteboard with the provided set.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the whiteboard or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the whiteboard.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:whiteboard:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:whiteboard:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"delete":{"tags":["Content Permissions"],"operationId":"deleteWhiteboardPermissions","summary":"Delete whiteboard permissions","description":"Deletes direct content permissions from a whiteboard. See `DELETE /pages/{id}/permissions` for filter semantics.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the whiteboard or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the whiteboard.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation. Must be provided together with `principal-type` and `principal-id`.","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type. Must be provided together with `principal-id`.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Returned if the permissions are successfully deleted."},"400":{"description":"Returned if the filter combination is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:whiteboard:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:whiteboard:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/folders/{id}/permissions":{"get":{"tags":["Content Permissions"],"operationId":"getFolderPermissions","summary":"Get folder permissions","description":"Returns the direct content permissions on a folder with optional filtering.\nResults are cursor-paginated (max 250 per page).\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the folder.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the folder.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation (`read` or `update`).","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type (`user` or `group`). May be used without `principal-id` to return all permissions for that type.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor for pagination. Use the value from the previous response's `_links.next`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of permission entries to return. Must be between 1 and 250.","schema":{"format":"int32","type":"integer","minimum":1,"maximum":250,"default":100}}],"responses":{"200":{"description":"Returned if the permissions are successfully retrieved.","content":{"application/json":{"schema":{"title":"MultiEntityResult","type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ContentPermissionOutput"}},"_links":{"$ref":"#/components/schemas/MultiEntityLinks"}}}}}},"400":{"description":"Returned if the request parameters are invalid (e.g. `principal-id` provided without `principal-type`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:folder:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:folder:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"post":{"tags":["Content Permissions"],"operationId":"addFolderPermissions","summary":"Add folder permissions","description":"Adds or replaces direct content permissions for the specified principals on a folder. Permissions for other principals are preserved; use `PUT` to replace all permissions at once.\n\nA principal can hold only one `read` or `update` permission. Adding `read` for a principal that currently has `update` downgrades that principal to `read`; adding `update` upgrades them. If the same request contains both operations for a principal, `update` takes precedence.\n\nReasserting a principal's existing permission is idempotent and returns a successful response without creating a duplicate entry.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the folder or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the folder.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:folder:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:folder:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"put":{"tags":["Content Permissions"],"operationId":"setFolderPermissions","summary":"Set folder permissions","description":"Replaces all direct content permissions on a folder with the provided set.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the folder or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the folder.","schema":{"format":"int64","type":"integer"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsRequest"}}}},"responses":{"200":{"description":"Returned if the permissions are successfully replaced.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionsResponse"}}}},"400":{"description":"Returned if the request body is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:folder:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:folder:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"delete":{"tags":["Content Permissions"],"operationId":"deleteFolderPermissions","summary":"Delete folder permissions","description":"Deletes direct content permissions from a folder. See `DELETE /pages/{id}/permissions` for filter semantics.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to edit the folder or administer the space.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the folder.","schema":{"format":"int64","type":"integer"}},{"name":"operation","in":"query","required":false,"description":"Filter by operation. Must be provided together with `principal-type` and `principal-id`.","schema":{"type":"string","enum":["read","update"]}},{"name":"principal-type","in":"query","required":false,"description":"Filter by principal type. Must be provided together with `principal-id`.","schema":{"type":"string","enum":["user","group"]}},{"name":"principal-id","in":"query","required":false,"description":"Filter by principal ID. Must be provided together with `principal-type`.","schema":{"type":"string"}},{"name":"allow-self-lockout","in":"query","required":false,"description":"If `false` (default), the request is rejected when it would remove the calling user's own edit access.\nSet to `true` to allow the operation even when it locks out the caller.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Returned if the permissions are successfully deleted."},"400":{"description":"Returned if the filter combination is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the content was not found or the calling user does not have permission to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPermissionErrorResponse"}}}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["write:folder:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["write:folder:confluence"]}],"x-atlassian-connect-scope":"WRITE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/admin-key":{"get":{"tags":["Admin Key"],"operationId":"getAdminKey","summary":"Get Admin Key","description":"Returns information about the admin key if one is currently enabled for the calling user within the site.\n\n**[Permissions](https://support.atlassian.com/user-management/docs/give-users-admin-permissions/#Centralized-user-management-content) required**:\nUser must be an organization or site admin.","responses":{"200":{"description":"Returned if an admin key is currently enabled for the calling user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminKeyResponse"}}}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the calling user does not currently have an admin key, if the calling user does not have permission to use admin keys, or if the site is not a Confluence Cloud Premium or Enterprise instance.","content":{}}},"x-atlassian-connect-scope":"INACCESSIBLE"},"post":{"tags":["Admin Key"],"operationId":"enableAdminKey","summary":"Enable Admin Key","description":"Enables admin key access for the calling user within the site. If an admin key already exists for the user, a new one will be issued with an updated expiration time.\n\n**Note:** The `durationInMinutes` field within the request body is optional. If the request body is empty or if the `durationInMinutes` is set to 0 minutes, a new admin key will be issued to the calling user with a default duration of 10 minutes.\n\n**[Permissions](https://support.atlassian.com/user-management/docs/give-users-admin-permissions/#Centralized-user-management-content) required**:\nUser must be an organization or site admin.","requestBody":{"$ref":"#/components/requestBodies/AdminKeyRequest"},"responses":{"200":{"description":"Returned if a new admin key is successfully issued for the calling user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminKeyResponse"}}}},"400":{"description":"Returned if the request body contains an invalid `durationInMinutes`.","content":{}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the calling user does not have permission to use admin keys or if the site is not a Confluence Cloud Premium or Enterprise instance.","content":{}}},"x-atlassian-connect-scope":"INACCESSIBLE"},"delete":{"tags":["Admin Key"],"operationId":"disableAdminKey","summary":"Disable Admin Key","description":"Disables admin key access for the calling user within the site.\n\n**[Permissions](https://support.atlassian.com/user-management/docs/give-users-admin-permissions/#Centralized-user-management-content) required**:\nUser must be an organization or site admin.","responses":{"204":{"description":"Returned if admin key access was successfully disabled for the calling user or if the user did not have an admin key in the first place.","content":{}},"401":{"description":"Returned if the authentication credentials are incorrect or missing from the request.","content":{}},"404":{"description":"Returned if the calling user does not have permission to use admin keys or if the site is not a Confluence Cloud Premium or Enterprise instance.","content":{}}},"x-atlassian-connect-scope":"INACCESSIBLE"}},"/attachments":{"get":{"tags":["Attachment"],"operationId":"getAttachments","summary":"Get attachments","description":"Returns all attachments. The number of results is limited by the `limit` parameter and additional results (if available)\nwill be available through the `next` URL present in the `Link` response header.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the container of the attachment.","parameters":[{"name":"sort","in":"query","required":false,"description":"Used to sort the result by a particular field.","schema":{"$ref":"#/components/schemas/AttachmentSortOrder"}},{"name":"cursor","in":"query","required":false,"description":"Used for pagination, this opaque cursor will be returned in the `next` URL in the `Link` response header. Use the relative URL in the `Link` header to retrieve the `next` set of results.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter the results to attachments based on their status. By default, `current` and `archived` are used.","schema":{"type":"array","items":{"type":"string","enum":["current","archived","trashed"]}}},{"name":"mediaType","in":"query","required":false,"description":"Filters on the mediaType of attachments. Only one may be specified.","schema":{"type":"string"}},{"name":"filename","in":"query","required":false,"description":"Filters on the file-name of attachments. Only one may be specified.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of attachments per result to return. If more results exist, use the `Link` header to retrieve a relative URL that will return the next set of results.","schema":{"format":"int32","default":50,"minimum":1,"maximum":250,"type":"integer"}}],"responses":{"200":{"description":"Returned if the requested attachments are returned.","content":{"application/json":{"schema":{"title":"MultiEntityResult","type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentBulk"}},"_links":{"$ref":"#/components/schemas/MultiEntityLinks"}}}}},"headers":{"Link":{"schema":{"type":"string"},"description":"This header contains URL(s) within angle brackets and a relation description for each URL, describing how the provided URL relates to the incoming request's URL. For example, rel=\"next\" would be the URL necessary to get the next page of information. Example response header format: `Link: >; rel=\"next\", ; rel=\"base\"`\n"}}},"400":{"description":"Returned if an invalid request is provided.","content":{}},"401":{"description":"Returned if the authentication credentials are incorrect or missing\nfrom the request.","content":{}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:attachment:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:attachment:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/attachments/{id}":{"get":{"tags":["Attachment"],"operationId":"getAttachmentById","summary":"Get attachment by id","description":"Returns a specific attachment.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the attachment's container.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the attachment to be returned. If you don't know the attachment's ID, use Get attachments for page/blogpost/custom content.","schema":{"type":"string","pattern":"(att)?[0-9]+"}},{"name":"version","in":"query","description":"Allows you to retrieve a previously published version. Specify the previous version's number to retrieve its details.","schema":{"type":"integer"}},{"name":"include-labels","in":"query","description":"Includes labels associated with this attachment in the response.\nThe number of results will be limited to 50 and sorted in the default sort order. \nA `meta` and `_links` property will be present to indicate if more results are available and a link to retrieve the rest of the results.","schema":{"type":"boolean","default":false}},{"name":"include-properties","in":"query","description":"Includes content properties associated with this attachment in the response.\nThe number of results will be limited to 50 and sorted in the default sort order. \nA `meta` and `_links` property will be present to indicate if more results are available and a link to retrieve the rest of the results.","schema":{"type":"boolean","default":false}},{"name":"include-operations","in":"query","description":"Includes operations associated with this attachment in the response, as defined in the `Operation` object.\nThe number of results will be limited to 50 and sorted in the default sort order. \nA `meta` and `_links` property will be present to indicate if more results are available and a link to retrieve the rest of the results.","schema":{"type":"boolean","default":false}},{"name":"include-versions","in":"query","description":"Includes versions associated with this attachment in the response.\nThe number of results will be limited to 50 and sorted in the default sort order. \nA `meta` and `_links` property will be present to indicate if more results are available and a link to retrieve the rest of the results.","schema":{"type":"boolean","default":false}},{"name":"include-version","in":"query","description":"Includes the current version associated with this attachment in the response.\nBy default this is included and can be omitted by setting the value to `false`.","schema":{"type":"boolean","default":true}},{"name":"include-collaborators","in":"query","description":"Includes collaborators on the attachment.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Returned if the requested attachment is returned.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/AttachmentSingle"},{"type":"object","properties":{"_links":{"type":"object","properties":{"base":{"type":"string","description":"Base url of the Confluence site."}}}}}]}}}},"400":{"description":"Returned if an invalid request is provided.","content":{}},"401":{"description":"Returned if the authentication credentials are incorrect or missing\nfrom the request.","content":{}},"404":{"description":"Returned if the calling user does not have permission to view the\nrequested attachment or the attachment was not found.","content":{}}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["read:attachment:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["read:attachment:confluence"]}],"x-atlassian-connect-scope":"READ","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]},"delete":{"tags":["Attachment"],"operationId":"deleteAttachment","summary":"Delete attachment","description":"Delete an attachment by id.\n\nDeleting an attachment moves the attachment to the trash, where it can be restored later. To permanently delete an attachment (or \"purge\" it),\nthe endpoint must be called on a **trashed** attachment with the following param `purge=true`.\n\n**[Permissions](https://support.atlassian.com/confluence-cloud/docs/what-are-confluences-roles/) required**:\nPermission to view the container of the attachment.\nPermission to delete attachments in the space.\n[`manage/content`](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permissions/#api-space-permissions-get) permission for the space (if attempting to purge).\n\n**Note:** To find the display name for each permission ID, call the [Get available space permissions](https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-space-permissions/#api-space-permissions-get) API.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the attachment to be deleted.","schema":{"format":"int64","type":"integer"}},{"name":"purge","in":"query","required":false,"description":"If attempting to purge the attachment.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Returned if the attachment was successfully deleted.","content":{}},"400":{"description":"Returned if an invalid request is provided.","content":{}},"401":{"description":"Returned if the authentication credentials are incorrect or missing\nfrom the request.","content":{}},"404":{"description":"Returned if:\n- The provided attachment does not exist\n- The user does not have permissions to view the container of the attachment\n- The user does not have the needed permissions to delete an attachment in the space"}},"security":[{"basicAuth":[]},{"oAuthDefinitions":["delete:attachment:confluence"]}],"x-atlassian-oauth2-scopes":[{"scheme":"oAuthDefinitions","state":"Current","scopes":["delete:attachment:confluence"]}],"x-atlassian-connect-scope":"DELETE","x-atlassian-data-security-policy":[{"app-access-rule-exempt":false}]}},"/attachments/{id}/labels":{"get":{"tags":["Label"],"operationId":"getAttachmentLabels","summary":"Get labels for attachment","description":"Returns the labels of specific attachment. The number of results is limited by the `limit` parameter and additional results (if available)\nwill be available through the `next` URL present in the `Link` response header.\n\n**[Permissions](https://confluence.atlassian.com/x/_AozKw) required**:\nPermission to view the parent content of the attachment and its corresponding space.\nOnly labels that the user has permission to view will be returned.","parameters":[{"name":"id","in":"path","required":true,"description":"The ID of the attachment for which labels should be returned.","schema":{"format":"int64","type":"integer"}},{"name":"prefix","in":"query","required":false,"description":"Filter the results to labels based on their prefix.","schema":{"type":"string","enum":["my","team","global","system"]}},{"name":"sort","in":"query","required":false,"description":"Used to sort the result by a particular field.","schema":{"type":"string","items":{"$ref":"#/components/schemas/LabelSortOrder"}}},{"name":"cursor","in":"query","required":false,"description":"Used for pagination, this opaque cursor will be returned in the `next` URL in the `Link` response header. Use the relative URL in the `Link` header to retrieve the `next` set of results.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of labels per result to return. If more results exist, use the `Link` header to retrieve a relative URL that will return the next set of results.","schema":{"format":"int32","default":25,"minimum":1,"maximum":250,"type":"integer"}}],"responses":{"200":{"description":"Returned if the requested labels are returned.","content":{"application/json":{"schema":{"title":"MultiEntityResult