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.
Files changed (62) hide show
  1. opencode/.generated.json +39 -0
  2. opencode/__init__.py +221 -0
  3. opencode/_base_client.py +539 -0
  4. opencode/_client.py +255 -0
  5. opencode/_constants.py +27 -0
  6. opencode/_errors.py +547 -0
  7. opencode/_events.py +732 -0
  8. opencode/_exceptions.py +271 -0
  9. opencode/_models.py +54 -0
  10. opencode/_pagination.py +192 -0
  11. opencode/_pty.py +586 -0
  12. opencode/_qs.py +95 -0
  13. opencode/_resource.py +42 -0
  14. opencode/_rpc.py +489 -0
  15. opencode/_server.py +335 -0
  16. opencode/_streaming.py +248 -0
  17. opencode/_types.py +77 -0
  18. opencode/_unions.py +46 -0
  19. opencode/_version.py +8 -0
  20. opencode/lib/__init__.py +5 -0
  21. opencode/lib/_ready.py +91 -0
  22. opencode/lib/_session.py +231 -0
  23. opencode/py.typed +0 -0
  24. opencode/resources/__init__.py +364 -0
  25. opencode/resources/agent.py +179 -0
  26. opencode/resources/command.py +100 -0
  27. opencode/resources/config.py +240 -0
  28. opencode/resources/credential.py +384 -0
  29. opencode/resources/debug.py +178 -0
  30. opencode/resources/event.py +88 -0
  31. opencode/resources/experimental.py +765 -0
  32. opencode/resources/file.py +355 -0
  33. opencode/resources/form.py +100 -0
  34. opencode/resources/generate.py +110 -0
  35. opencode/resources/integration.py +1033 -0
  36. opencode/resources/location.py +162 -0
  37. opencode/resources/mcp.py +492 -0
  38. opencode/resources/message.py +152 -0
  39. opencode/resources/migration.py +118 -0
  40. opencode/resources/model.py +177 -0
  41. opencode/resources/permission.py +704 -0
  42. opencode/resources/plugin.py +250 -0
  43. opencode/resources/project.py +187 -0
  44. opencode/resources/provider.py +183 -0
  45. opencode/resources/pty.py +522 -0
  46. opencode/resources/reference.py +100 -0
  47. opencode/resources/rpc.py +113 -0
  48. opencode/resources/server.py +230 -0
  49. opencode/resources/session.py +3567 -0
  50. opencode/resources/shell.py +412 -0
  51. opencode/resources/skill.py +100 -0
  52. opencode/resources/vcs.py +500 -0
  53. opencode/resources/voice.py +113 -0
  54. opencode/resources/websearch.py +184 -0
  55. opencode/resources/worktree.py +336 -0
  56. opencode/testing.py +508 -0
  57. opencode/types/__init__.py +1462 -0
  58. opencode/types/_generated.py +8540 -0
  59. opencode_python_sdk-0.0.1.dev1.dist-info/METADATA +468 -0
  60. opencode_python_sdk-0.0.1.dev1.dist-info/RECORD +62 -0
  61. opencode_python_sdk-0.0.1.dev1.dist-info/WHEEL +4 -0
  62. 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
+ )