Source code for cybsi.cloud.auth.resource

from typing import Optional

from ..error import JsonObject
from ..internal import BaseAPI, JsonObjectView
from ..pagination import Cursor, Page


[docs] class ResourcesAPI(BaseAPI): """Resources API.""" _path = "/auth/resources"
[docs] def filter( self, *, parent_id: Optional[int] = None, cursor: Optional[Cursor] = None, limit: Optional[int] = None, ) -> Page["ResourceView"]: """Get resources. Note: Calls `GET /auth/resources`. Args: parent_id: identifier of parent resource. It must be greater than 0. cursor: Page cursor. limit: Page limit. Return: Page with resource common views and next page cursor. Raises: :class:`~cybsi.cloud.error.InvalidRequestError`: Provided values are invalid (see args value requirements). :class:`~cybsi.cloud.error.SemanticError`: Form contains logic errors. Note: Semantic error codes specific for this method: * :attr:`~cybsi.cloud.error.SemanticErrorCodes.ResourceNotFound` """ params: JsonObject = {} if parent_id is not None: params["parentID"] = parent_id if cursor is not None: params["cursor"] = str(cursor) if limit is not None: params["limit"] = limit resp = self._connector.do_get(path=self._path, params=params) page = Page(self._connector.do_get, resp, ResourceView) return page
[docs] class ResourceRefView(JsonObjectView): """Resource reference view.""" @property def id(self) -> int: """API-Key identifier.""" return self._get("id")
[docs] class ResourceView(JsonObjectView): """Resource view.""" @property def id(self) -> int: """Resource identifier.""" return self._get("id") @property def name(self) -> str: """Resource name.""" return self._get("name") @property def parent(self) -> Optional[ResourceRefView]: """Parent resource.""" return self._map_optional("parent", ResourceRefView)