cmdop 0.1.25__py3-none-any.whl → 0.1.26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cmdop/__init__.py +9 -4
- cmdop/_generated/rpc_messages/browser_pb2.py +138 -138
- cmdop/_generated/rpc_messages/browser_pb2.pyi +6 -2
- cmdop/api/generated/machines/__init__.py +1 -1
- cmdop/api/generated/machines/enums.py +0 -112
- cmdop/api/generated/machines/machines__api__machine_sharing/client.py +21 -6
- cmdop/api/generated/machines/machines__api__machine_sharing/models.py +46 -19
- cmdop/api/generated/machines/machines__api__machine_sharing/sync_client.py +20 -5
- cmdop/api/generated/machines/machines__api__machines/client.py +90 -25
- cmdop/api/generated/machines/machines__api__machines/models.py +143 -125
- cmdop/api/generated/machines/machines__api__machines/sync_client.py +84 -19
- cmdop/api/generated/machines/schema.json +72 -0
- cmdop/api/generated/system/__init__.py +1 -1
- cmdop/api/generated/system/enums.py +0 -52
- cmdop/api/generated/system/schema.json +54 -0
- cmdop/api/generated/system/system__api__oauth/client.py +42 -12
- cmdop/api/generated/system/system__api__oauth/models.py +111 -85
- cmdop/api/generated/system/system__api__oauth/sync_client.py +38 -8
- cmdop/api/generated/system/system__api__system/client.py +98 -23
- cmdop/api/generated/system/system__api__system/models.py +83 -83
- cmdop/api/generated/system/system__api__system/sync_client.py +94 -19
- cmdop/api/generated/workspaces/__init__.py +1 -1
- cmdop/api/generated/workspaces/enums.py +0 -137
- cmdop/api/generated/workspaces/schema.json +47 -0
- cmdop/api/generated/workspaces/workspaces__api__workspaces/client.py +156 -41
- cmdop/api/generated/workspaces/workspaces__api__workspaces/models.py +126 -85
- cmdop/api/generated/workspaces/workspaces__api__workspaces/sync_client.py +145 -29
- cmdop/helpers/__init__.py +0 -4
- cmdop/services/browser/service/sync.py +4 -0
- {cmdop-0.1.25.dist-info → cmdop-0.1.26.dist-info}/METADATA +24 -14
- {cmdop-0.1.25.dist-info → cmdop-0.1.26.dist-info}/RECORD +33 -35
- cmdop/helpers/cleaner.py +0 -53
- cmdop/helpers/formatting.py +0 -15
- {cmdop-0.1.25.dist-info → cmdop-0.1.26.dist-info}/WHEEL +0 -0
- {cmdop-0.1.25.dist-info → cmdop-0.1.26.dist-info}/licenses/LICENSE +0 -0
|
@@ -20,6 +20,15 @@
|
|
|
20
20
|
"description": "List all pending invitations for workspaces you manage",
|
|
21
21
|
"summary": "List invitations",
|
|
22
22
|
"parameters": [
|
|
23
|
+
{
|
|
24
|
+
"name": "ordering",
|
|
25
|
+
"required": false,
|
|
26
|
+
"in": "query",
|
|
27
|
+
"description": "Which field to use when ordering the results.",
|
|
28
|
+
"schema": {
|
|
29
|
+
"type": "string"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
23
32
|
{
|
|
24
33
|
"name": "page",
|
|
25
34
|
"required": false,
|
|
@@ -37,6 +46,15 @@
|
|
|
37
46
|
"schema": {
|
|
38
47
|
"type": "integer"
|
|
39
48
|
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "search",
|
|
52
|
+
"required": false,
|
|
53
|
+
"in": "query",
|
|
54
|
+
"description": "A search term.",
|
|
55
|
+
"schema": {
|
|
56
|
+
"type": "string"
|
|
57
|
+
}
|
|
40
58
|
}
|
|
41
59
|
],
|
|
42
60
|
"tags": [
|
|
@@ -394,6 +412,15 @@
|
|
|
394
412
|
"operationId": "workspaces_members_list",
|
|
395
413
|
"description": "List workspace members with optional search and role filters.",
|
|
396
414
|
"parameters": [
|
|
415
|
+
{
|
|
416
|
+
"name": "ordering",
|
|
417
|
+
"required": false,
|
|
418
|
+
"in": "query",
|
|
419
|
+
"description": "Which field to use when ordering the results.",
|
|
420
|
+
"schema": {
|
|
421
|
+
"type": "string"
|
|
422
|
+
}
|
|
423
|
+
},
|
|
397
424
|
{
|
|
398
425
|
"name": "page",
|
|
399
426
|
"required": false,
|
|
@@ -743,6 +770,26 @@
|
|
|
743
770
|
"get": {
|
|
744
771
|
"operationId": "workspaces_workspaces_list",
|
|
745
772
|
"description": "ViewSet for Workspace operations.\n\nProvides CRUD operations for workspaces with team/personal modes.",
|
|
773
|
+
"parameters": [
|
|
774
|
+
{
|
|
775
|
+
"name": "ordering",
|
|
776
|
+
"required": false,
|
|
777
|
+
"in": "query",
|
|
778
|
+
"description": "Which field to use when ordering the results.",
|
|
779
|
+
"schema": {
|
|
780
|
+
"type": "string"
|
|
781
|
+
}
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"name": "search",
|
|
785
|
+
"required": false,
|
|
786
|
+
"in": "query",
|
|
787
|
+
"description": "A search term.",
|
|
788
|
+
"schema": {
|
|
789
|
+
"type": "string"
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
],
|
|
746
793
|
"tags": [
|
|
747
794
|
"Workspaces"
|
|
748
795
|
],
|
|
@@ -12,15 +12,20 @@ class WorkspacesWorkspacesAPI:
|
|
|
12
12
|
"""Initialize sub-client with shared httpx client."""
|
|
13
13
|
self._client = client
|
|
14
14
|
|
|
15
|
-
async def invitations_list(self, page: int | None = None, page_size: int | None = None) -> list[PaginatedWorkspaceInvitationList]:
|
|
15
|
+
async def invitations_list(self, ordering: str | None = None, page: int | None = None, page_size: int | None = None, search: str | None = None) -> list[PaginatedWorkspaceInvitationList]:
|
|
16
16
|
"""
|
|
17
17
|
List invitations
|
|
18
18
|
|
|
19
19
|
List all pending invitations for workspaces you manage
|
|
20
20
|
"""
|
|
21
21
|
url = "/api/workspaces/invitations/"
|
|
22
|
-
response = await self._client.get(url, params={"page": page if page is not None else None, "page_size": page_size if page_size is not None else None})
|
|
23
|
-
response.
|
|
22
|
+
response = await self._client.get(url, params={"ordering": ordering if ordering is not None else None, "page": page if page is not None else None, "page_size": page_size if page_size is not None else None, "search": search if search is not None else None})
|
|
23
|
+
if not response.is_success:
|
|
24
|
+
try:
|
|
25
|
+
error_body = response.json()
|
|
26
|
+
except Exception:
|
|
27
|
+
error_body = response.text
|
|
28
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
24
29
|
return PaginatedWorkspaceInvitationList.model_validate(response.json())
|
|
25
30
|
|
|
26
31
|
|
|
@@ -31,8 +36,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
31
36
|
Invite a user to a workspace by email
|
|
32
37
|
"""
|
|
33
38
|
url = "/api/workspaces/invitations/"
|
|
34
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
35
|
-
response.
|
|
39
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
40
|
+
if not response.is_success:
|
|
41
|
+
try:
|
|
42
|
+
error_body = response.json()
|
|
43
|
+
except Exception:
|
|
44
|
+
error_body = response.text
|
|
45
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
36
46
|
return WorkspaceInvitation.model_validate(response.json())
|
|
37
47
|
|
|
38
48
|
|
|
@@ -44,7 +54,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
44
54
|
"""
|
|
45
55
|
url = f"/api/workspaces/invitations/{id}/"
|
|
46
56
|
response = await self._client.get(url)
|
|
47
|
-
response.
|
|
57
|
+
if not response.is_success:
|
|
58
|
+
try:
|
|
59
|
+
error_body = response.json()
|
|
60
|
+
except Exception:
|
|
61
|
+
error_body = response.text
|
|
62
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
48
63
|
return WorkspaceInvitation.model_validate(response.json())
|
|
49
64
|
|
|
50
65
|
|
|
@@ -56,7 +71,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
56
71
|
"""
|
|
57
72
|
url = f"/api/workspaces/invitations/{id}/"
|
|
58
73
|
response = await self._client.delete(url)
|
|
59
|
-
response.
|
|
74
|
+
if not response.is_success:
|
|
75
|
+
try:
|
|
76
|
+
error_body = response.json()
|
|
77
|
+
except Exception:
|
|
78
|
+
error_body = response.text
|
|
79
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
60
80
|
return None
|
|
61
81
|
|
|
62
82
|
|
|
@@ -67,8 +87,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
67
87
|
Resend invitation email and regenerate token
|
|
68
88
|
"""
|
|
69
89
|
url = f"/api/workspaces/invitations/{id}/resend/"
|
|
70
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
71
|
-
response.
|
|
90
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
91
|
+
if not response.is_success:
|
|
92
|
+
try:
|
|
93
|
+
error_body = response.json()
|
|
94
|
+
except Exception:
|
|
95
|
+
error_body = response.text
|
|
96
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
72
97
|
return WorkspaceInvitation.model_validate(response.json())
|
|
73
98
|
|
|
74
99
|
|
|
@@ -79,8 +104,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
79
104
|
Accept a workspace invitation
|
|
80
105
|
"""
|
|
81
106
|
url = "/api/workspaces/invitations/accept/"
|
|
82
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
83
|
-
response.
|
|
107
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
108
|
+
if not response.is_success:
|
|
109
|
+
try:
|
|
110
|
+
error_body = response.json()
|
|
111
|
+
except Exception:
|
|
112
|
+
error_body = response.text
|
|
113
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
84
114
|
return None
|
|
85
115
|
|
|
86
116
|
|
|
@@ -91,8 +121,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
91
121
|
Decline a workspace invitation (no auth required)
|
|
92
122
|
"""
|
|
93
123
|
url = "/api/workspaces/invitations/decline/"
|
|
94
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
95
|
-
response.
|
|
124
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
125
|
+
if not response.is_success:
|
|
126
|
+
try:
|
|
127
|
+
error_body = response.json()
|
|
128
|
+
except Exception:
|
|
129
|
+
error_body = response.text
|
|
130
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
96
131
|
return None
|
|
97
132
|
|
|
98
133
|
|
|
@@ -104,17 +139,27 @@ class WorkspacesWorkspacesAPI:
|
|
|
104
139
|
"""
|
|
105
140
|
url = f"/api/workspaces/invitations/details/{token}/"
|
|
106
141
|
response = await self._client.get(url)
|
|
107
|
-
response.
|
|
142
|
+
if not response.is_success:
|
|
143
|
+
try:
|
|
144
|
+
error_body = response.json()
|
|
145
|
+
except Exception:
|
|
146
|
+
error_body = response.text
|
|
147
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
108
148
|
return WorkspaceInvitationPublic.model_validate(response.json())
|
|
109
149
|
|
|
110
150
|
|
|
111
|
-
async def members_list(self, page: int | None = None, page_size: int | None = None, role: str | None = None, search: str | None = None) -> list[PaginatedWorkspaceMemberList]:
|
|
151
|
+
async def members_list(self, ordering: str | None = None, page: int | None = None, page_size: int | None = None, role: str | None = None, search: str | None = None) -> list[PaginatedWorkspaceMemberList]:
|
|
112
152
|
"""
|
|
113
153
|
List workspace members with optional search and role filters.
|
|
114
154
|
"""
|
|
115
155
|
url = "/api/workspaces/members/"
|
|
116
|
-
response = await self._client.get(url, params={"page": page if page is not None else None, "page_size": page_size if page_size is not None else None, "role": role if role is not None else None, "search": search if search is not None else None})
|
|
117
|
-
response.
|
|
156
|
+
response = await self._client.get(url, params={"ordering": ordering if ordering is not None else None, "page": page if page is not None else None, "page_size": page_size if page_size is not None else None, "role": role if role is not None else None, "search": search if search is not None else None})
|
|
157
|
+
if not response.is_success:
|
|
158
|
+
try:
|
|
159
|
+
error_body = response.json()
|
|
160
|
+
except Exception:
|
|
161
|
+
error_body = response.text
|
|
162
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
118
163
|
return PaginatedWorkspaceMemberList.model_validate(response.json())
|
|
119
164
|
|
|
120
165
|
|
|
@@ -124,8 +169,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
124
169
|
roles.
|
|
125
170
|
"""
|
|
126
171
|
url = "/api/workspaces/members/"
|
|
127
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
128
|
-
response.
|
|
172
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
173
|
+
if not response.is_success:
|
|
174
|
+
try:
|
|
175
|
+
error_body = response.json()
|
|
176
|
+
except Exception:
|
|
177
|
+
error_body = response.text
|
|
178
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
129
179
|
return WorkspaceMember.model_validate(response.json())
|
|
130
180
|
|
|
131
181
|
|
|
@@ -136,7 +186,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
136
186
|
"""
|
|
137
187
|
url = f"/api/workspaces/members/{id}/"
|
|
138
188
|
response = await self._client.get(url)
|
|
139
|
-
response.
|
|
189
|
+
if not response.is_success:
|
|
190
|
+
try:
|
|
191
|
+
error_body = response.json()
|
|
192
|
+
except Exception:
|
|
193
|
+
error_body = response.text
|
|
194
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
140
195
|
return WorkspaceMember.model_validate(response.json())
|
|
141
196
|
|
|
142
197
|
|
|
@@ -146,8 +201,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
146
201
|
roles.
|
|
147
202
|
"""
|
|
148
203
|
url = f"/api/workspaces/members/{id}/"
|
|
149
|
-
response = await self._client.put(url, json=data.model_dump())
|
|
150
|
-
response.
|
|
204
|
+
response = await self._client.put(url, json=data.model_dump(exclude_unset=True))
|
|
205
|
+
if not response.is_success:
|
|
206
|
+
try:
|
|
207
|
+
error_body = response.json()
|
|
208
|
+
except Exception:
|
|
209
|
+
error_body = response.text
|
|
210
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
151
211
|
return WorkspaceMember.model_validate(response.json())
|
|
152
212
|
|
|
153
213
|
|
|
@@ -157,8 +217,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
157
217
|
roles.
|
|
158
218
|
"""
|
|
159
219
|
url = f"/api/workspaces/members/{id}/"
|
|
160
|
-
response = await self._client.patch(url, json=data.model_dump() if data is not None else None)
|
|
161
|
-
response.
|
|
220
|
+
response = await self._client.patch(url, json=data.model_dump(exclude_unset=True) if data is not None else None)
|
|
221
|
+
if not response.is_success:
|
|
222
|
+
try:
|
|
223
|
+
error_body = response.json()
|
|
224
|
+
except Exception:
|
|
225
|
+
error_body = response.text
|
|
226
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
162
227
|
return WorkspaceMember.model_validate(response.json())
|
|
163
228
|
|
|
164
229
|
|
|
@@ -169,7 +234,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
169
234
|
"""
|
|
170
235
|
url = f"/api/workspaces/members/{id}/"
|
|
171
236
|
response = await self._client.delete(url)
|
|
172
|
-
response.
|
|
237
|
+
if not response.is_success:
|
|
238
|
+
try:
|
|
239
|
+
error_body = response.json()
|
|
240
|
+
except Exception:
|
|
241
|
+
error_body = response.text
|
|
242
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
173
243
|
return None
|
|
174
244
|
|
|
175
245
|
|
|
@@ -180,20 +250,30 @@ class WorkspacesWorkspacesAPI:
|
|
|
180
250
|
Update workspace member role.
|
|
181
251
|
"""
|
|
182
252
|
url = f"/api/workspaces/members/{id}/update-role/"
|
|
183
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
184
|
-
response.
|
|
253
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
254
|
+
if not response.is_success:
|
|
255
|
+
try:
|
|
256
|
+
error_body = response.json()
|
|
257
|
+
except Exception:
|
|
258
|
+
error_body = response.text
|
|
259
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
185
260
|
return WorkspaceMember.model_validate(response.json())
|
|
186
261
|
|
|
187
262
|
|
|
188
|
-
async def workspaces_list(self) ->
|
|
263
|
+
async def workspaces_list(self, ordering: str | None = None, search: str | None = None) -> list[Workspace]:
|
|
189
264
|
"""
|
|
190
265
|
ViewSet for Workspace operations. Provides CRUD operations for
|
|
191
266
|
workspaces with team/personal modes.
|
|
192
267
|
"""
|
|
193
268
|
url = "/api/workspaces/workspaces/"
|
|
194
|
-
response = await self._client.get(url)
|
|
195
|
-
response.
|
|
196
|
-
|
|
269
|
+
response = await self._client.get(url, params={"ordering": ordering if ordering is not None else None, "search": search if search is not None else None})
|
|
270
|
+
if not response.is_success:
|
|
271
|
+
try:
|
|
272
|
+
error_body = response.json()
|
|
273
|
+
except Exception:
|
|
274
|
+
error_body = response.text
|
|
275
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
276
|
+
return [Workspace.model_validate(item) for item in response.json()]
|
|
197
277
|
|
|
198
278
|
|
|
199
279
|
async def workspaces_create(self, data: WorkspaceCreateRequest) -> Workspace:
|
|
@@ -203,8 +283,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
203
283
|
Create workspace and return full workspace data.
|
|
204
284
|
"""
|
|
205
285
|
url = "/api/workspaces/workspaces/"
|
|
206
|
-
response = await self._client.post(url, json=data.model_dump())
|
|
207
|
-
response.
|
|
286
|
+
response = await self._client.post(url, json=data.model_dump(exclude_unset=True))
|
|
287
|
+
if not response.is_success:
|
|
288
|
+
try:
|
|
289
|
+
error_body = response.json()
|
|
290
|
+
except Exception:
|
|
291
|
+
error_body = response.text
|
|
292
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
208
293
|
return Workspace.model_validate(response.json())
|
|
209
294
|
|
|
210
295
|
|
|
@@ -215,7 +300,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
215
300
|
"""
|
|
216
301
|
url = f"/api/workspaces/workspaces/{id}/"
|
|
217
302
|
response = await self._client.get(url)
|
|
218
|
-
response.
|
|
303
|
+
if not response.is_success:
|
|
304
|
+
try:
|
|
305
|
+
error_body = response.json()
|
|
306
|
+
except Exception:
|
|
307
|
+
error_body = response.text
|
|
308
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
219
309
|
return Workspace.model_validate(response.json())
|
|
220
310
|
|
|
221
311
|
|
|
@@ -225,8 +315,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
225
315
|
workspaces with team/personal modes.
|
|
226
316
|
"""
|
|
227
317
|
url = f"/api/workspaces/workspaces/{id}/"
|
|
228
|
-
response = await self._client.put(url, json=data.model_dump())
|
|
229
|
-
response.
|
|
318
|
+
response = await self._client.put(url, json=data.model_dump(exclude_unset=True))
|
|
319
|
+
if not response.is_success:
|
|
320
|
+
try:
|
|
321
|
+
error_body = response.json()
|
|
322
|
+
except Exception:
|
|
323
|
+
error_body = response.text
|
|
324
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
230
325
|
return Workspace.model_validate(response.json())
|
|
231
326
|
|
|
232
327
|
|
|
@@ -236,8 +331,13 @@ class WorkspacesWorkspacesAPI:
|
|
|
236
331
|
workspaces with team/personal modes.
|
|
237
332
|
"""
|
|
238
333
|
url = f"/api/workspaces/workspaces/{id}/"
|
|
239
|
-
response = await self._client.patch(url, json=data.model_dump() if data is not None else None)
|
|
240
|
-
response.
|
|
334
|
+
response = await self._client.patch(url, json=data.model_dump(exclude_unset=True) if data is not None else None)
|
|
335
|
+
if not response.is_success:
|
|
336
|
+
try:
|
|
337
|
+
error_body = response.json()
|
|
338
|
+
except Exception:
|
|
339
|
+
error_body = response.text
|
|
340
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
241
341
|
return Workspace.model_validate(response.json())
|
|
242
342
|
|
|
243
343
|
|
|
@@ -248,7 +348,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
248
348
|
"""
|
|
249
349
|
url = f"/api/workspaces/workspaces/{id}/"
|
|
250
350
|
response = await self._client.delete(url)
|
|
251
|
-
response.
|
|
351
|
+
if not response.is_success:
|
|
352
|
+
try:
|
|
353
|
+
error_body = response.json()
|
|
354
|
+
except Exception:
|
|
355
|
+
error_body = response.text
|
|
356
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
252
357
|
return None
|
|
253
358
|
|
|
254
359
|
|
|
@@ -260,7 +365,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
260
365
|
"""
|
|
261
366
|
url = f"/api/workspaces/workspaces/{id}/members/"
|
|
262
367
|
response = await self._client.get(url)
|
|
263
|
-
response.
|
|
368
|
+
if not response.is_success:
|
|
369
|
+
try:
|
|
370
|
+
error_body = response.json()
|
|
371
|
+
except Exception:
|
|
372
|
+
error_body = response.text
|
|
373
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
264
374
|
return None
|
|
265
375
|
|
|
266
376
|
|
|
@@ -272,7 +382,12 @@ class WorkspacesWorkspacesAPI:
|
|
|
272
382
|
"""
|
|
273
383
|
url = f"/api/workspaces/workspaces/{id}/stats/"
|
|
274
384
|
response = await self._client.get(url)
|
|
275
|
-
response.
|
|
385
|
+
if not response.is_success:
|
|
386
|
+
try:
|
|
387
|
+
error_body = response.json()
|
|
388
|
+
except Exception:
|
|
389
|
+
error_body = response.text
|
|
390
|
+
raise httpx.HTTPStatusError(f"{response.status_code}: {error_body}", request=response.request, response=response)
|
|
276
391
|
return None
|
|
277
392
|
|
|
278
393
|
|