opencode-python-sdk 0.0.1.dev1__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.
- opencode/.generated.json +39 -0
- opencode/__init__.py +221 -0
- opencode/_base_client.py +539 -0
- opencode/_client.py +255 -0
- opencode/_constants.py +27 -0
- opencode/_errors.py +547 -0
- opencode/_events.py +732 -0
- opencode/_exceptions.py +271 -0
- opencode/_models.py +54 -0
- opencode/_pagination.py +192 -0
- opencode/_pty.py +586 -0
- opencode/_qs.py +95 -0
- opencode/_resource.py +42 -0
- opencode/_rpc.py +489 -0
- opencode/_server.py +335 -0
- opencode/_streaming.py +248 -0
- opencode/_types.py +77 -0
- opencode/_unions.py +46 -0
- opencode/_version.py +8 -0
- opencode/lib/__init__.py +5 -0
- opencode/lib/_ready.py +91 -0
- opencode/lib/_session.py +231 -0
- opencode/py.typed +0 -0
- opencode/resources/__init__.py +364 -0
- opencode/resources/agent.py +179 -0
- opencode/resources/command.py +100 -0
- opencode/resources/config.py +240 -0
- opencode/resources/credential.py +384 -0
- opencode/resources/debug.py +178 -0
- opencode/resources/event.py +88 -0
- opencode/resources/experimental.py +765 -0
- opencode/resources/file.py +355 -0
- opencode/resources/form.py +100 -0
- opencode/resources/generate.py +110 -0
- opencode/resources/integration.py +1033 -0
- opencode/resources/location.py +162 -0
- opencode/resources/mcp.py +492 -0
- opencode/resources/message.py +152 -0
- opencode/resources/migration.py +118 -0
- opencode/resources/model.py +177 -0
- opencode/resources/permission.py +704 -0
- opencode/resources/plugin.py +250 -0
- opencode/resources/project.py +187 -0
- opencode/resources/provider.py +183 -0
- opencode/resources/pty.py +522 -0
- opencode/resources/reference.py +100 -0
- opencode/resources/rpc.py +113 -0
- opencode/resources/server.py +230 -0
- opencode/resources/session.py +3567 -0
- opencode/resources/shell.py +412 -0
- opencode/resources/skill.py +100 -0
- opencode/resources/vcs.py +500 -0
- opencode/resources/voice.py +113 -0
- opencode/resources/websearch.py +184 -0
- opencode/resources/worktree.py +336 -0
- opencode/testing.py +508 -0
- opencode/types/__init__.py +1462 -0
- opencode/types/_generated.py +8540 -0
- opencode_python_sdk-0.0.1.dev1.dist-info/METADATA +468 -0
- opencode_python_sdk-0.0.1.dev1.dist-info/RECORD +62 -0
- opencode_python_sdk-0.0.1.dev1.dist-info/WHEEL +4 -0
- opencode_python_sdk-0.0.1.dev1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
# This file is generated by `python -m codegen` from spec/contract.json. Do not edit it by hand.
|
|
2
|
+
# OpenCode 2.1.2
|
|
3
|
+
|
|
4
|
+
"""The ``permission`` resource."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import builtins
|
|
9
|
+
from collections.abc import Mapping, Sequence
|
|
10
|
+
from functools import cached_property
|
|
11
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
12
|
+
|
|
13
|
+
from .._base_client import RequestOptions
|
|
14
|
+
from .._qs import encode_path_segment
|
|
15
|
+
from .._resource import AsyncAPIResource, SyncAPIResource
|
|
16
|
+
from .._types import NOT_GIVEN, Body, Headers, NotGiven, Query, Timeout
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..types import (
|
|
20
|
+
AgentID,
|
|
21
|
+
Location,
|
|
22
|
+
PermissionCreateResponse,
|
|
23
|
+
PermissionID,
|
|
24
|
+
PermissionReply,
|
|
25
|
+
PermissionRequest,
|
|
26
|
+
PermissionRequestListResponse,
|
|
27
|
+
PermissionSavedID,
|
|
28
|
+
PermissionSavedInfo,
|
|
29
|
+
PermissionSource,
|
|
30
|
+
ProjectID,
|
|
31
|
+
SessionID,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
__all__ = ["PermissionResource", "AsyncPermissionResource"]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class PermissionRequestResource(SyncAPIResource):
|
|
38
|
+
"""Operations under ``client.permission.request`` (OpenCode ``permission.request``)."""
|
|
39
|
+
|
|
40
|
+
def list(
|
|
41
|
+
self,
|
|
42
|
+
*,
|
|
43
|
+
location: Location | NotGiven | None = NOT_GIVEN,
|
|
44
|
+
extra_headers: Headers | None = None,
|
|
45
|
+
extra_query: Query | None = None,
|
|
46
|
+
extra_body: Body | None = None,
|
|
47
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
48
|
+
) -> PermissionRequestListResponse:
|
|
49
|
+
"""List pending permission requests.
|
|
50
|
+
|
|
51
|
+
Retrieve pending permission requests for a location.
|
|
52
|
+
|
|
53
|
+
Raises:
|
|
54
|
+
InvalidRequestError: The server answered 400.
|
|
55
|
+
UnauthorizedError: The server answered 401.
|
|
56
|
+
LocationNotFoundError: The server answered 404.
|
|
57
|
+
|
|
58
|
+
``GET /api/permission/request``
|
|
59
|
+
"""
|
|
60
|
+
return cast(
|
|
61
|
+
"PermissionRequestListResponse",
|
|
62
|
+
self._client.request(
|
|
63
|
+
RequestOptions(
|
|
64
|
+
method="GET",
|
|
65
|
+
path="/api/permission/request",
|
|
66
|
+
query={"location": self._location(location)},
|
|
67
|
+
extra_headers=extra_headers,
|
|
68
|
+
extra_query=extra_query,
|
|
69
|
+
extra_body=extra_body,
|
|
70
|
+
timeout=timeout,
|
|
71
|
+
),
|
|
72
|
+
response_type="PermissionRequestListResponse",
|
|
73
|
+
),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class PermissionSavedResource(SyncAPIResource):
|
|
78
|
+
"""Operations under ``client.permission.saved`` (OpenCode ``permission.saved``)."""
|
|
79
|
+
|
|
80
|
+
def list(
|
|
81
|
+
self,
|
|
82
|
+
*,
|
|
83
|
+
project_id: ProjectID | NotGiven | None = NOT_GIVEN,
|
|
84
|
+
extra_headers: Headers | None = None,
|
|
85
|
+
extra_query: Query | None = None,
|
|
86
|
+
extra_body: Body | None = None,
|
|
87
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
88
|
+
) -> builtins.list[PermissionSavedInfo]:
|
|
89
|
+
"""List saved permissions.
|
|
90
|
+
|
|
91
|
+
Retrieve saved permissions, optionally filtered by project.
|
|
92
|
+
|
|
93
|
+
Raises:
|
|
94
|
+
InvalidRequestError: The server answered 400.
|
|
95
|
+
UnauthorizedError: The server answered 401.
|
|
96
|
+
LocationNotFoundError: The server answered 404.
|
|
97
|
+
|
|
98
|
+
``GET /api/permission/saved``
|
|
99
|
+
"""
|
|
100
|
+
return cast(
|
|
101
|
+
"builtins.list[PermissionSavedInfo]",
|
|
102
|
+
self._client.request(
|
|
103
|
+
RequestOptions(
|
|
104
|
+
method="GET",
|
|
105
|
+
path="/api/permission/saved",
|
|
106
|
+
query={"projectID": project_id},
|
|
107
|
+
extra_headers=extra_headers,
|
|
108
|
+
extra_query=extra_query,
|
|
109
|
+
extra_body=extra_body,
|
|
110
|
+
timeout=timeout,
|
|
111
|
+
),
|
|
112
|
+
response_type="builtins.list[PermissionSavedInfo]",
|
|
113
|
+
unwrap=True,
|
|
114
|
+
),
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
def update(
|
|
118
|
+
self,
|
|
119
|
+
id: PermissionSavedID,
|
|
120
|
+
*,
|
|
121
|
+
action: str | NotGiven | None = NOT_GIVEN,
|
|
122
|
+
resource: str | NotGiven | None = NOT_GIVEN,
|
|
123
|
+
extra_headers: Headers | None = None,
|
|
124
|
+
extra_query: Query | None = None,
|
|
125
|
+
extra_body: Body | None = None,
|
|
126
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
127
|
+
) -> PermissionSavedInfo:
|
|
128
|
+
"""Update saved permission.
|
|
129
|
+
|
|
130
|
+
Change the action or resource of a saved permission. Fails with a conflict when the project already has a saved permission with the same action and resource.
|
|
131
|
+
|
|
132
|
+
Raises:
|
|
133
|
+
InvalidRequestError: The server answered 400.
|
|
134
|
+
UnauthorizedError: The server answered 401.
|
|
135
|
+
PermissionSavedNotFoundError: The server answered 404.
|
|
136
|
+
LocationNotFoundError: The server answered 404.
|
|
137
|
+
ConflictError: The server answered 409.
|
|
138
|
+
|
|
139
|
+
``PATCH /api/permission/saved/:id``
|
|
140
|
+
"""
|
|
141
|
+
return cast(
|
|
142
|
+
"PermissionSavedInfo",
|
|
143
|
+
self._client.request(
|
|
144
|
+
RequestOptions(
|
|
145
|
+
method="PATCH",
|
|
146
|
+
path=f"/api/permission/saved/{encode_path_segment(id)}",
|
|
147
|
+
body={"action": action, "resource": resource},
|
|
148
|
+
extra_headers=extra_headers,
|
|
149
|
+
extra_query=extra_query,
|
|
150
|
+
extra_body=extra_body,
|
|
151
|
+
timeout=timeout,
|
|
152
|
+
),
|
|
153
|
+
response_type="PermissionSavedInfo",
|
|
154
|
+
unwrap=True,
|
|
155
|
+
),
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
def remove(
|
|
159
|
+
self,
|
|
160
|
+
id: PermissionSavedID,
|
|
161
|
+
*,
|
|
162
|
+
extra_headers: Headers | None = None,
|
|
163
|
+
extra_query: Query | None = None,
|
|
164
|
+
extra_body: Body | None = None,
|
|
165
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
166
|
+
) -> None:
|
|
167
|
+
"""Remove saved permission.
|
|
168
|
+
|
|
169
|
+
Remove a saved permission by ID.
|
|
170
|
+
|
|
171
|
+
Raises:
|
|
172
|
+
InvalidRequestError: The server answered 400.
|
|
173
|
+
UnauthorizedError: The server answered 401.
|
|
174
|
+
LocationNotFoundError: The server answered 404.
|
|
175
|
+
|
|
176
|
+
``DELETE /api/permission/saved/:id``
|
|
177
|
+
"""
|
|
178
|
+
self._client.request(
|
|
179
|
+
RequestOptions(
|
|
180
|
+
method="DELETE",
|
|
181
|
+
path=f"/api/permission/saved/{encode_path_segment(id)}",
|
|
182
|
+
extra_headers=extra_headers,
|
|
183
|
+
extra_query=extra_query,
|
|
184
|
+
extra_body=extra_body,
|
|
185
|
+
timeout=timeout,
|
|
186
|
+
),
|
|
187
|
+
kind="void",
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class PermissionResource(SyncAPIResource):
|
|
192
|
+
"""Operations under ``client.permission`` (OpenCode ``permission``)."""
|
|
193
|
+
|
|
194
|
+
@cached_property
|
|
195
|
+
def request_(self) -> PermissionRequestResource:
|
|
196
|
+
"""Operations under ``client.permission.request``."""
|
|
197
|
+
return PermissionRequestResource(self._client)
|
|
198
|
+
|
|
199
|
+
@cached_property
|
|
200
|
+
def saved(self) -> PermissionSavedResource:
|
|
201
|
+
"""Operations under ``client.permission.saved``."""
|
|
202
|
+
return PermissionSavedResource(self._client)
|
|
203
|
+
|
|
204
|
+
def create(
|
|
205
|
+
self,
|
|
206
|
+
session_id: SessionID,
|
|
207
|
+
*,
|
|
208
|
+
action: str,
|
|
209
|
+
resources: Sequence[str],
|
|
210
|
+
id: PermissionID | NotGiven | None = NOT_GIVEN,
|
|
211
|
+
save: Sequence[str] | NotGiven = NOT_GIVEN,
|
|
212
|
+
metadata: Mapping[str, Any] | NotGiven = NOT_GIVEN,
|
|
213
|
+
source: PermissionSource | NotGiven = NOT_GIVEN,
|
|
214
|
+
agent: AgentID | NotGiven | None = NOT_GIVEN,
|
|
215
|
+
extra_headers: Headers | None = None,
|
|
216
|
+
extra_query: Query | None = None,
|
|
217
|
+
extra_body: Body | None = None,
|
|
218
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
219
|
+
) -> PermissionCreateResponse:
|
|
220
|
+
"""Create permission request.
|
|
221
|
+
|
|
222
|
+
Evaluate and, when approval is required, create a permission request for a session.
|
|
223
|
+
|
|
224
|
+
Raises:
|
|
225
|
+
InvalidRequestError: The server answered 400.
|
|
226
|
+
UnauthorizedError: The server answered 401.
|
|
227
|
+
SessionNotFoundError: The server answered 404.
|
|
228
|
+
LocationNotFoundError: The server answered 404.
|
|
229
|
+
|
|
230
|
+
``POST /api/session/:sessionID/permission``
|
|
231
|
+
"""
|
|
232
|
+
return cast(
|
|
233
|
+
"PermissionCreateResponse",
|
|
234
|
+
self._client.request(
|
|
235
|
+
RequestOptions(
|
|
236
|
+
method="POST",
|
|
237
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission",
|
|
238
|
+
body={
|
|
239
|
+
"id": id,
|
|
240
|
+
"action": action,
|
|
241
|
+
"resources": resources,
|
|
242
|
+
"save": save,
|
|
243
|
+
"metadata": metadata,
|
|
244
|
+
"source": source,
|
|
245
|
+
"agent": agent,
|
|
246
|
+
},
|
|
247
|
+
extra_headers=extra_headers,
|
|
248
|
+
extra_query=extra_query,
|
|
249
|
+
extra_body=extra_body,
|
|
250
|
+
timeout=timeout,
|
|
251
|
+
),
|
|
252
|
+
response_type="PermissionCreateResponse",
|
|
253
|
+
unwrap=True,
|
|
254
|
+
),
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
def list(
|
|
258
|
+
self,
|
|
259
|
+
session_id: SessionID,
|
|
260
|
+
*,
|
|
261
|
+
extra_headers: Headers | None = None,
|
|
262
|
+
extra_query: Query | None = None,
|
|
263
|
+
extra_body: Body | None = None,
|
|
264
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
265
|
+
) -> builtins.list[PermissionRequest]:
|
|
266
|
+
"""List session permission requests.
|
|
267
|
+
|
|
268
|
+
Retrieve pending permission requests owned by a session.
|
|
269
|
+
|
|
270
|
+
Raises:
|
|
271
|
+
InvalidRequestError: The server answered 400.
|
|
272
|
+
UnauthorizedError: The server answered 401.
|
|
273
|
+
SessionNotFoundError: The server answered 404.
|
|
274
|
+
LocationNotFoundError: The server answered 404.
|
|
275
|
+
|
|
276
|
+
``GET /api/session/:sessionID/permission``
|
|
277
|
+
"""
|
|
278
|
+
return cast(
|
|
279
|
+
"builtins.list[PermissionRequest]",
|
|
280
|
+
self._client.request(
|
|
281
|
+
RequestOptions(
|
|
282
|
+
method="GET",
|
|
283
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission",
|
|
284
|
+
extra_headers=extra_headers,
|
|
285
|
+
extra_query=extra_query,
|
|
286
|
+
extra_body=extra_body,
|
|
287
|
+
timeout=timeout,
|
|
288
|
+
),
|
|
289
|
+
response_type="builtins.list[PermissionRequest]",
|
|
290
|
+
unwrap=True,
|
|
291
|
+
),
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
def get(
|
|
295
|
+
self,
|
|
296
|
+
session_id: SessionID,
|
|
297
|
+
request_id: PermissionID,
|
|
298
|
+
*,
|
|
299
|
+
extra_headers: Headers | None = None,
|
|
300
|
+
extra_query: Query | None = None,
|
|
301
|
+
extra_body: Body | None = None,
|
|
302
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
303
|
+
) -> PermissionRequest:
|
|
304
|
+
"""Get permission request.
|
|
305
|
+
|
|
306
|
+
Retrieve a pending permission request owned by a session.
|
|
307
|
+
|
|
308
|
+
Raises:
|
|
309
|
+
InvalidRequestError: The server answered 400.
|
|
310
|
+
UnauthorizedError: The server answered 401.
|
|
311
|
+
SessionNotFoundError: The server answered 404.
|
|
312
|
+
PermissionNotFoundError: The server answered 404.
|
|
313
|
+
LocationNotFoundError: The server answered 404.
|
|
314
|
+
|
|
315
|
+
``GET /api/session/:sessionID/permission/:requestID``
|
|
316
|
+
"""
|
|
317
|
+
return cast(
|
|
318
|
+
"PermissionRequest",
|
|
319
|
+
self._client.request(
|
|
320
|
+
RequestOptions(
|
|
321
|
+
method="GET",
|
|
322
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission/{encode_path_segment(request_id)}",
|
|
323
|
+
extra_headers=extra_headers,
|
|
324
|
+
extra_query=extra_query,
|
|
325
|
+
extra_body=extra_body,
|
|
326
|
+
timeout=timeout,
|
|
327
|
+
),
|
|
328
|
+
response_type="PermissionRequest",
|
|
329
|
+
unwrap=True,
|
|
330
|
+
),
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
def reply(
|
|
334
|
+
self,
|
|
335
|
+
session_id: SessionID,
|
|
336
|
+
request_id: PermissionID,
|
|
337
|
+
*,
|
|
338
|
+
decision: PermissionReply,
|
|
339
|
+
message: str | NotGiven | None = NOT_GIVEN,
|
|
340
|
+
extra_headers: Headers | None = None,
|
|
341
|
+
extra_query: Query | None = None,
|
|
342
|
+
extra_body: Body | None = None,
|
|
343
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
344
|
+
) -> None:
|
|
345
|
+
"""Reply to pending permission request.
|
|
346
|
+
|
|
347
|
+
Respond to a pending permission request owned by a session.
|
|
348
|
+
|
|
349
|
+
Raises:
|
|
350
|
+
InvalidRequestError: The server answered 400.
|
|
351
|
+
UnauthorizedError: The server answered 401.
|
|
352
|
+
SessionNotFoundError: The server answered 404.
|
|
353
|
+
PermissionNotFoundError: The server answered 404.
|
|
354
|
+
LocationNotFoundError: The server answered 404.
|
|
355
|
+
|
|
356
|
+
``POST /api/session/:sessionID/permission/:requestID/reply``
|
|
357
|
+
"""
|
|
358
|
+
self._client.request(
|
|
359
|
+
RequestOptions(
|
|
360
|
+
method="POST",
|
|
361
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission/{encode_path_segment(request_id)}/reply",
|
|
362
|
+
body={"decision": decision, "message": message},
|
|
363
|
+
extra_headers=extra_headers,
|
|
364
|
+
extra_query=extra_query,
|
|
365
|
+
extra_body=extra_body,
|
|
366
|
+
timeout=timeout,
|
|
367
|
+
),
|
|
368
|
+
kind="void",
|
|
369
|
+
)
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
class AsyncPermissionRequestResource(AsyncAPIResource):
|
|
373
|
+
"""Operations under ``client.permission.request`` (OpenCode ``permission.request``)."""
|
|
374
|
+
|
|
375
|
+
async def list(
|
|
376
|
+
self,
|
|
377
|
+
*,
|
|
378
|
+
location: Location | NotGiven | None = NOT_GIVEN,
|
|
379
|
+
extra_headers: Headers | None = None,
|
|
380
|
+
extra_query: Query | None = None,
|
|
381
|
+
extra_body: Body | None = None,
|
|
382
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
383
|
+
) -> PermissionRequestListResponse:
|
|
384
|
+
"""List pending permission requests.
|
|
385
|
+
|
|
386
|
+
Retrieve pending permission requests for a location.
|
|
387
|
+
|
|
388
|
+
Raises:
|
|
389
|
+
InvalidRequestError: The server answered 400.
|
|
390
|
+
UnauthorizedError: The server answered 401.
|
|
391
|
+
LocationNotFoundError: The server answered 404.
|
|
392
|
+
|
|
393
|
+
``GET /api/permission/request``
|
|
394
|
+
"""
|
|
395
|
+
return cast(
|
|
396
|
+
"PermissionRequestListResponse",
|
|
397
|
+
await self._client.request(
|
|
398
|
+
RequestOptions(
|
|
399
|
+
method="GET",
|
|
400
|
+
path="/api/permission/request",
|
|
401
|
+
query={"location": self._location(location)},
|
|
402
|
+
extra_headers=extra_headers,
|
|
403
|
+
extra_query=extra_query,
|
|
404
|
+
extra_body=extra_body,
|
|
405
|
+
timeout=timeout,
|
|
406
|
+
),
|
|
407
|
+
response_type="PermissionRequestListResponse",
|
|
408
|
+
),
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
class AsyncPermissionSavedResource(AsyncAPIResource):
|
|
413
|
+
"""Operations under ``client.permission.saved`` (OpenCode ``permission.saved``)."""
|
|
414
|
+
|
|
415
|
+
async def list(
|
|
416
|
+
self,
|
|
417
|
+
*,
|
|
418
|
+
project_id: ProjectID | NotGiven | None = NOT_GIVEN,
|
|
419
|
+
extra_headers: Headers | None = None,
|
|
420
|
+
extra_query: Query | None = None,
|
|
421
|
+
extra_body: Body | None = None,
|
|
422
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
423
|
+
) -> builtins.list[PermissionSavedInfo]:
|
|
424
|
+
"""List saved permissions.
|
|
425
|
+
|
|
426
|
+
Retrieve saved permissions, optionally filtered by project.
|
|
427
|
+
|
|
428
|
+
Raises:
|
|
429
|
+
InvalidRequestError: The server answered 400.
|
|
430
|
+
UnauthorizedError: The server answered 401.
|
|
431
|
+
LocationNotFoundError: The server answered 404.
|
|
432
|
+
|
|
433
|
+
``GET /api/permission/saved``
|
|
434
|
+
"""
|
|
435
|
+
return cast(
|
|
436
|
+
"builtins.list[PermissionSavedInfo]",
|
|
437
|
+
await self._client.request(
|
|
438
|
+
RequestOptions(
|
|
439
|
+
method="GET",
|
|
440
|
+
path="/api/permission/saved",
|
|
441
|
+
query={"projectID": project_id},
|
|
442
|
+
extra_headers=extra_headers,
|
|
443
|
+
extra_query=extra_query,
|
|
444
|
+
extra_body=extra_body,
|
|
445
|
+
timeout=timeout,
|
|
446
|
+
),
|
|
447
|
+
response_type="builtins.list[PermissionSavedInfo]",
|
|
448
|
+
unwrap=True,
|
|
449
|
+
),
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
async def update(
|
|
453
|
+
self,
|
|
454
|
+
id: PermissionSavedID,
|
|
455
|
+
*,
|
|
456
|
+
action: str | NotGiven | None = NOT_GIVEN,
|
|
457
|
+
resource: str | NotGiven | None = NOT_GIVEN,
|
|
458
|
+
extra_headers: Headers | None = None,
|
|
459
|
+
extra_query: Query | None = None,
|
|
460
|
+
extra_body: Body | None = None,
|
|
461
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
462
|
+
) -> PermissionSavedInfo:
|
|
463
|
+
"""Update saved permission.
|
|
464
|
+
|
|
465
|
+
Change the action or resource of a saved permission. Fails with a conflict when the project already has a saved permission with the same action and resource.
|
|
466
|
+
|
|
467
|
+
Raises:
|
|
468
|
+
InvalidRequestError: The server answered 400.
|
|
469
|
+
UnauthorizedError: The server answered 401.
|
|
470
|
+
PermissionSavedNotFoundError: The server answered 404.
|
|
471
|
+
LocationNotFoundError: The server answered 404.
|
|
472
|
+
ConflictError: The server answered 409.
|
|
473
|
+
|
|
474
|
+
``PATCH /api/permission/saved/:id``
|
|
475
|
+
"""
|
|
476
|
+
return cast(
|
|
477
|
+
"PermissionSavedInfo",
|
|
478
|
+
await self._client.request(
|
|
479
|
+
RequestOptions(
|
|
480
|
+
method="PATCH",
|
|
481
|
+
path=f"/api/permission/saved/{encode_path_segment(id)}",
|
|
482
|
+
body={"action": action, "resource": resource},
|
|
483
|
+
extra_headers=extra_headers,
|
|
484
|
+
extra_query=extra_query,
|
|
485
|
+
extra_body=extra_body,
|
|
486
|
+
timeout=timeout,
|
|
487
|
+
),
|
|
488
|
+
response_type="PermissionSavedInfo",
|
|
489
|
+
unwrap=True,
|
|
490
|
+
),
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
async def remove(
|
|
494
|
+
self,
|
|
495
|
+
id: PermissionSavedID,
|
|
496
|
+
*,
|
|
497
|
+
extra_headers: Headers | None = None,
|
|
498
|
+
extra_query: Query | None = None,
|
|
499
|
+
extra_body: Body | None = None,
|
|
500
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
501
|
+
) -> None:
|
|
502
|
+
"""Remove saved permission.
|
|
503
|
+
|
|
504
|
+
Remove a saved permission by ID.
|
|
505
|
+
|
|
506
|
+
Raises:
|
|
507
|
+
InvalidRequestError: The server answered 400.
|
|
508
|
+
UnauthorizedError: The server answered 401.
|
|
509
|
+
LocationNotFoundError: The server answered 404.
|
|
510
|
+
|
|
511
|
+
``DELETE /api/permission/saved/:id``
|
|
512
|
+
"""
|
|
513
|
+
await self._client.request(
|
|
514
|
+
RequestOptions(
|
|
515
|
+
method="DELETE",
|
|
516
|
+
path=f"/api/permission/saved/{encode_path_segment(id)}",
|
|
517
|
+
extra_headers=extra_headers,
|
|
518
|
+
extra_query=extra_query,
|
|
519
|
+
extra_body=extra_body,
|
|
520
|
+
timeout=timeout,
|
|
521
|
+
),
|
|
522
|
+
kind="void",
|
|
523
|
+
)
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
class AsyncPermissionResource(AsyncAPIResource):
|
|
527
|
+
"""Operations under ``client.permission`` (OpenCode ``permission``)."""
|
|
528
|
+
|
|
529
|
+
@cached_property
|
|
530
|
+
def request_(self) -> AsyncPermissionRequestResource:
|
|
531
|
+
"""Operations under ``client.permission.request``."""
|
|
532
|
+
return AsyncPermissionRequestResource(self._client)
|
|
533
|
+
|
|
534
|
+
@cached_property
|
|
535
|
+
def saved(self) -> AsyncPermissionSavedResource:
|
|
536
|
+
"""Operations under ``client.permission.saved``."""
|
|
537
|
+
return AsyncPermissionSavedResource(self._client)
|
|
538
|
+
|
|
539
|
+
async def create(
|
|
540
|
+
self,
|
|
541
|
+
session_id: SessionID,
|
|
542
|
+
*,
|
|
543
|
+
action: str,
|
|
544
|
+
resources: Sequence[str],
|
|
545
|
+
id: PermissionID | NotGiven | None = NOT_GIVEN,
|
|
546
|
+
save: Sequence[str] | NotGiven = NOT_GIVEN,
|
|
547
|
+
metadata: Mapping[str, Any] | NotGiven = NOT_GIVEN,
|
|
548
|
+
source: PermissionSource | NotGiven = NOT_GIVEN,
|
|
549
|
+
agent: AgentID | NotGiven | None = NOT_GIVEN,
|
|
550
|
+
extra_headers: Headers | None = None,
|
|
551
|
+
extra_query: Query | None = None,
|
|
552
|
+
extra_body: Body | None = None,
|
|
553
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
554
|
+
) -> PermissionCreateResponse:
|
|
555
|
+
"""Create permission request.
|
|
556
|
+
|
|
557
|
+
Evaluate and, when approval is required, create a permission request for a session.
|
|
558
|
+
|
|
559
|
+
Raises:
|
|
560
|
+
InvalidRequestError: The server answered 400.
|
|
561
|
+
UnauthorizedError: The server answered 401.
|
|
562
|
+
SessionNotFoundError: The server answered 404.
|
|
563
|
+
LocationNotFoundError: The server answered 404.
|
|
564
|
+
|
|
565
|
+
``POST /api/session/:sessionID/permission``
|
|
566
|
+
"""
|
|
567
|
+
return cast(
|
|
568
|
+
"PermissionCreateResponse",
|
|
569
|
+
await self._client.request(
|
|
570
|
+
RequestOptions(
|
|
571
|
+
method="POST",
|
|
572
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission",
|
|
573
|
+
body={
|
|
574
|
+
"id": id,
|
|
575
|
+
"action": action,
|
|
576
|
+
"resources": resources,
|
|
577
|
+
"save": save,
|
|
578
|
+
"metadata": metadata,
|
|
579
|
+
"source": source,
|
|
580
|
+
"agent": agent,
|
|
581
|
+
},
|
|
582
|
+
extra_headers=extra_headers,
|
|
583
|
+
extra_query=extra_query,
|
|
584
|
+
extra_body=extra_body,
|
|
585
|
+
timeout=timeout,
|
|
586
|
+
),
|
|
587
|
+
response_type="PermissionCreateResponse",
|
|
588
|
+
unwrap=True,
|
|
589
|
+
),
|
|
590
|
+
)
|
|
591
|
+
|
|
592
|
+
async def list(
|
|
593
|
+
self,
|
|
594
|
+
session_id: SessionID,
|
|
595
|
+
*,
|
|
596
|
+
extra_headers: Headers | None = None,
|
|
597
|
+
extra_query: Query | None = None,
|
|
598
|
+
extra_body: Body | None = None,
|
|
599
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
600
|
+
) -> builtins.list[PermissionRequest]:
|
|
601
|
+
"""List session permission requests.
|
|
602
|
+
|
|
603
|
+
Retrieve pending permission requests owned by a session.
|
|
604
|
+
|
|
605
|
+
Raises:
|
|
606
|
+
InvalidRequestError: The server answered 400.
|
|
607
|
+
UnauthorizedError: The server answered 401.
|
|
608
|
+
SessionNotFoundError: The server answered 404.
|
|
609
|
+
LocationNotFoundError: The server answered 404.
|
|
610
|
+
|
|
611
|
+
``GET /api/session/:sessionID/permission``
|
|
612
|
+
"""
|
|
613
|
+
return cast(
|
|
614
|
+
"builtins.list[PermissionRequest]",
|
|
615
|
+
await self._client.request(
|
|
616
|
+
RequestOptions(
|
|
617
|
+
method="GET",
|
|
618
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission",
|
|
619
|
+
extra_headers=extra_headers,
|
|
620
|
+
extra_query=extra_query,
|
|
621
|
+
extra_body=extra_body,
|
|
622
|
+
timeout=timeout,
|
|
623
|
+
),
|
|
624
|
+
response_type="builtins.list[PermissionRequest]",
|
|
625
|
+
unwrap=True,
|
|
626
|
+
),
|
|
627
|
+
)
|
|
628
|
+
|
|
629
|
+
async def get(
|
|
630
|
+
self,
|
|
631
|
+
session_id: SessionID,
|
|
632
|
+
request_id: PermissionID,
|
|
633
|
+
*,
|
|
634
|
+
extra_headers: Headers | None = None,
|
|
635
|
+
extra_query: Query | None = None,
|
|
636
|
+
extra_body: Body | None = None,
|
|
637
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
638
|
+
) -> PermissionRequest:
|
|
639
|
+
"""Get permission request.
|
|
640
|
+
|
|
641
|
+
Retrieve a pending permission request owned by a session.
|
|
642
|
+
|
|
643
|
+
Raises:
|
|
644
|
+
InvalidRequestError: The server answered 400.
|
|
645
|
+
UnauthorizedError: The server answered 401.
|
|
646
|
+
SessionNotFoundError: The server answered 404.
|
|
647
|
+
PermissionNotFoundError: The server answered 404.
|
|
648
|
+
LocationNotFoundError: The server answered 404.
|
|
649
|
+
|
|
650
|
+
``GET /api/session/:sessionID/permission/:requestID``
|
|
651
|
+
"""
|
|
652
|
+
return cast(
|
|
653
|
+
"PermissionRequest",
|
|
654
|
+
await self._client.request(
|
|
655
|
+
RequestOptions(
|
|
656
|
+
method="GET",
|
|
657
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission/{encode_path_segment(request_id)}",
|
|
658
|
+
extra_headers=extra_headers,
|
|
659
|
+
extra_query=extra_query,
|
|
660
|
+
extra_body=extra_body,
|
|
661
|
+
timeout=timeout,
|
|
662
|
+
),
|
|
663
|
+
response_type="PermissionRequest",
|
|
664
|
+
unwrap=True,
|
|
665
|
+
),
|
|
666
|
+
)
|
|
667
|
+
|
|
668
|
+
async def reply(
|
|
669
|
+
self,
|
|
670
|
+
session_id: SessionID,
|
|
671
|
+
request_id: PermissionID,
|
|
672
|
+
*,
|
|
673
|
+
decision: PermissionReply,
|
|
674
|
+
message: str | NotGiven | None = NOT_GIVEN,
|
|
675
|
+
extra_headers: Headers | None = None,
|
|
676
|
+
extra_query: Query | None = None,
|
|
677
|
+
extra_body: Body | None = None,
|
|
678
|
+
timeout: Timeout | NotGiven = NOT_GIVEN,
|
|
679
|
+
) -> None:
|
|
680
|
+
"""Reply to pending permission request.
|
|
681
|
+
|
|
682
|
+
Respond to a pending permission request owned by a session.
|
|
683
|
+
|
|
684
|
+
Raises:
|
|
685
|
+
InvalidRequestError: The server answered 400.
|
|
686
|
+
UnauthorizedError: The server answered 401.
|
|
687
|
+
SessionNotFoundError: The server answered 404.
|
|
688
|
+
PermissionNotFoundError: The server answered 404.
|
|
689
|
+
LocationNotFoundError: The server answered 404.
|
|
690
|
+
|
|
691
|
+
``POST /api/session/:sessionID/permission/:requestID/reply``
|
|
692
|
+
"""
|
|
693
|
+
await self._client.request(
|
|
694
|
+
RequestOptions(
|
|
695
|
+
method="POST",
|
|
696
|
+
path=f"/api/session/{encode_path_segment(session_id)}/permission/{encode_path_segment(request_id)}/reply",
|
|
697
|
+
body={"decision": decision, "message": message},
|
|
698
|
+
extra_headers=extra_headers,
|
|
699
|
+
extra_query=extra_query,
|
|
700
|
+
extra_body=extra_body,
|
|
701
|
+
timeout=timeout,
|
|
702
|
+
),
|
|
703
|
+
kind="void",
|
|
704
|
+
)
|