diff --git a/backend/ee/onyx/external_permissions/confluence/doc_sync.py b/backend/ee/onyx/external_permissions/confluence/doc_sync.py index bd78a8ead..9805cdad6 100644 --- a/backend/ee/onyx/external_permissions/confluence/doc_sync.py +++ b/backend/ee/onyx/external_permissions/confluence/doc_sync.py @@ -24,7 +24,9 @@ _REQUEST_PAGINATION_LIMIT = 5000 def _get_server_space_permissions( confluence_client: OnyxConfluence, space_key: str ) -> ExternalAccess: - space_permissions = confluence_client.get_space_permissions(space_key=space_key) + space_permissions = confluence_client.get_all_space_permissions_server( + space_key=space_key + ) viewspace_permissions = [] for permission_category in space_permissions: diff --git a/backend/onyx/connectors/confluence/onyx_confluence.py b/backend/onyx/connectors/confluence/onyx_confluence.py index d95fa1963..e6a2b957e 100644 --- a/backend/onyx/connectors/confluence/onyx_confluence.py +++ b/backend/onyx/connectors/confluence/onyx_confluence.py @@ -354,6 +354,33 @@ class OnyxConfluence(Confluence): group_name = quote(group_name) yield from self._paginate_url(f"rest/api/group/{group_name}/member", limit) + def get_all_space_permissions_server( + self, + space_key: str, + ) -> list[dict[str, Any]]: + """ + This is a confluence server specific method that can be used to + fetch the permissions of a space. + This is better logging than calling the get_space_permissions method + because it returns a jsonrpc response. + """ + url = "rpc/json-rpc/confluenceservice-v2" + data = { + "jsonrpc": "2.0", + "method": "getSpacePermissionSets", + "id": 7, + "params": [space_key], + } + response = self.post(url, data=data) + logger.debug(f"jsonrpc response: {response}") + if not response.get("result"): + logger.warning( + f"No jsonrpc response for space permissions for space {space_key}" + f"\nResponse: {response}" + ) + + return response.get("result", []) + def _validate_connector_configuration( credentials: dict[str, Any],