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