From a8a5296d7e78f6aa985d6cadf7a911b18478c949 Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Thu, 24 Jul 2025 16:30:43 +0100 Subject: [PATCH] Limited Workspace (#438) --- .../resources/current/active_user_resource.py | 3 ++- src/specklepy/core/api/models/current.py | 7 +++++-- .../resources/current/active_user_resource.py | 21 ++++--------------- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/specklepy/api/resources/current/active_user_resource.py b/src/specklepy/api/resources/current/active_user_resource.py index c5fe268..25c1ca9 100644 --- a/src/specklepy/api/resources/current/active_user_resource.py +++ b/src/specklepy/api/resources/current/active_user_resource.py @@ -12,6 +12,7 @@ from specklepy.core.api.models import ( User, ) from specklepy.core.api.models.current import ( + LimitedWorkspace, PermissionCheckResult, ProjectWithPermissions, Workspace, @@ -94,7 +95,7 @@ class ActiveUserResource(CoreResource): metrics.track(metrics.SDK, self.account, {"name": "Active User Get Workspaces"}) return super().get_workspaces(limit, cursor, filter) - def get_active_workspace(self) -> Optional[Workspace]: + def get_active_workspace(self) -> Optional[LimitedWorkspace]: metrics.track( metrics.SDK, self.account, {"name": "Active User Get Active Workspace"} ) diff --git a/src/specklepy/core/api/models/current.py b/src/specklepy/core/api/models/current.py index 499484d..8f86c55 100644 --- a/src/specklepy/core/api/models/current.py +++ b/src/specklepy/core/api/models/current.py @@ -213,15 +213,18 @@ class WorkspaceCreationState(GraphQLBaseModel): completed: bool -class Workspace(GraphQLBaseModel): +class LimitedWorkspace(GraphQLBaseModel): id: str name: str role: Optional[str] slug: str logo: Optional[str] + description: Optional[str] + + +class Workspace(LimitedWorkspace): created_at: datetime updated_at: datetime read_only: bool - description: Optional[str] creation_state: Optional[WorkspaceCreationState] permissions: WorkspacePermissionChecks diff --git a/src/specklepy/core/api/resources/current/active_user_resource.py b/src/specklepy/core/api/resources/current/active_user_resource.py index 4a2c27b..068e3af 100644 --- a/src/specklepy/core/api/resources/current/active_user_resource.py +++ b/src/specklepy/core/api/resources/current/active_user_resource.py @@ -14,6 +14,7 @@ from specklepy.core.api.models import ( User, ) from specklepy.core.api.models.current import ( + LimitedWorkspace, PermissionCheckResult, ProjectWithPermissions, Workspace, @@ -295,7 +296,7 @@ class ActiveUserResource(ResourceBase): return response.data.data - def get_active_workspace(self) -> Optional[Workspace]: + def get_active_workspace(self) -> Optional[LimitedWorkspace]: """ This feature is only available on Workspace enabled servers (server versions >=2.23.17) e.g. app.speckle.systems @@ -310,29 +311,15 @@ class ActiveUserResource(ResourceBase): role slug logo - createdAt - updatedAt - readOnly description - creationState - { - completed - } - permissions { - canCreateProject { - authorized - code - message - } - } } } } - """ # noqa: E501 + """ ) response = self.make_request_and_parse_response( - DataResponse[Optional[DataResponse[Optional[Workspace]]]], + DataResponse[Optional[DataResponse[Optional[LimitedWorkspace]]]], QUERY, )