basaltic-sdk-python 0.1.1__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 (47) hide show
  1. basaltic/__init__.py +26 -0
  2. basaltic/_client.py +136 -0
  3. basaltic/_common.py +284 -0
  4. basaltic/_transport.py +196 -0
  5. basaltic/_version.py +3 -0
  6. basaltic/auth.py +231 -0
  7. basaltic/client.py +144 -0
  8. basaltic/config.py +151 -0
  9. basaltic/errors.py +73 -0
  10. basaltic/models/__init__.py +17 -0
  11. basaltic/models/audit.py +85 -0
  12. basaltic/models/billing.py +284 -0
  13. basaltic/models/catalog.py +35 -0
  14. basaltic/models/certificate.py +127 -0
  15. basaltic/models/compute.py +905 -0
  16. basaltic/models/dns.py +256 -0
  17. basaltic/models/iam.py +736 -0
  18. basaltic/models/kms.py +157 -0
  19. basaltic/models/loadbalancer.py +574 -0
  20. basaltic/models/network.py +985 -0
  21. basaltic/models/quota.py +30 -0
  22. basaltic/models/secrets.py +136 -0
  23. basaltic/models/storage.py +789 -0
  24. basaltic/models/telemetry.py +393 -0
  25. basaltic/models/workspace.py +734 -0
  26. basaltic/py.typed +0 -0
  27. basaltic/response.py +152 -0
  28. basaltic/services/__init__.py +1 -0
  29. basaltic/services/audit.py +211 -0
  30. basaltic/services/billing.py +777 -0
  31. basaltic/services/catalog.py +172 -0
  32. basaltic/services/certificate.py +395 -0
  33. basaltic/services/compute.py +2395 -0
  34. basaltic/services/dns.py +1079 -0
  35. basaltic/services/iam.py +3405 -0
  36. basaltic/services/kms.py +742 -0
  37. basaltic/services/loadbalancer.py +1727 -0
  38. basaltic/services/network.py +4691 -0
  39. basaltic/services/quota.py +75 -0
  40. basaltic/services/secrets.py +550 -0
  41. basaltic/services/storage.py +3059 -0
  42. basaltic/services/telemetry.py +1316 -0
  43. basaltic/services/workspace.py +3899 -0
  44. basaltic_sdk_python-0.1.1.dist-info/METADATA +211 -0
  45. basaltic_sdk_python-0.1.1.dist-info/RECORD +47 -0
  46. basaltic_sdk_python-0.1.1.dist-info/WHEEL +4 -0
  47. basaltic_sdk_python-0.1.1.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,3405 @@
1
+ """Generated typed API methods; do not edit."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import AsyncIterator, Iterator
6
+ from typing import cast
7
+
8
+ from .._common import UNSET, Operation, Unset
9
+ from .._transport import AsyncTransport, SyncTransport
10
+ from ..config import RequestOptions
11
+ from ..models import iam as m
12
+ from ..response import (
13
+ ApiResponse,
14
+ Page,
15
+ aiterate_pages,
16
+ aresolve_reference,
17
+ iterate_pages,
18
+ reference_scope,
19
+ resolve_reference,
20
+ )
21
+
22
+ _OPS = {
23
+ "assumeRole": Operation(
24
+ id="assumeRole",
25
+ method="POST",
26
+ path="/v1/assume-role",
27
+ authenticated=True,
28
+ requiredQuery=[],
29
+ requiredHeaders=[],
30
+ queryEncoding={},
31
+ bodyRequired=True,
32
+ contentType="application/json",
33
+ accept="application/json",
34
+ ),
35
+ "assumeRoleWithWebIdentity": Operation(
36
+ id="assumeRoleWithWebIdentity",
37
+ method="POST",
38
+ path="/v1/assume-role-with-web-identity",
39
+ authenticated=False,
40
+ requiredQuery=[],
41
+ requiredHeaders=[],
42
+ queryEncoding={},
43
+ bodyRequired=True,
44
+ contentType="application/json",
45
+ accept="application/json",
46
+ ),
47
+ "attachRolePolicy": Operation(
48
+ id="attachRolePolicy",
49
+ method="POST",
50
+ path="/v1/roles/{role_id}/policies",
51
+ authenticated=True,
52
+ requiredQuery=[],
53
+ requiredHeaders=[],
54
+ queryEncoding={},
55
+ bodyRequired=True,
56
+ contentType="application/json",
57
+ accept="application/json",
58
+ ),
59
+ "attachServiceAccountPolicy": Operation(
60
+ id="attachServiceAccountPolicy",
61
+ method="POST",
62
+ path="/v1/service-accounts/{service_account_id}/policies",
63
+ authenticated=True,
64
+ requiredQuery=[],
65
+ requiredHeaders=[],
66
+ queryEncoding={},
67
+ bodyRequired=True,
68
+ contentType="application/json",
69
+ accept="application/json",
70
+ ),
71
+ "authorizeOAuthClient": Operation(
72
+ id="authorizeOAuthClient",
73
+ method="POST",
74
+ path="/v1/oauth/authorize",
75
+ authenticated=True,
76
+ requiredQuery=[],
77
+ requiredHeaders=[],
78
+ queryEncoding={},
79
+ bodyRequired=True,
80
+ contentType="application/json",
81
+ accept="application/json",
82
+ ),
83
+ "createPersonalSSHKey": Operation(
84
+ id="createPersonalSSHKey",
85
+ method="POST",
86
+ path="/v1/auth/ssh-keys",
87
+ authenticated=True,
88
+ requiredQuery=[],
89
+ requiredHeaders=[],
90
+ queryEncoding={},
91
+ bodyRequired=True,
92
+ contentType="application/json",
93
+ accept="application/json",
94
+ ),
95
+ "createPolicy": Operation(
96
+ id="createPolicy",
97
+ method="POST",
98
+ path="/v1/policies",
99
+ authenticated=True,
100
+ requiredQuery=[],
101
+ requiredHeaders=[],
102
+ queryEncoding={},
103
+ bodyRequired=True,
104
+ contentType="application/json",
105
+ accept="application/json",
106
+ ),
107
+ "createRole": Operation(
108
+ id="createRole",
109
+ method="POST",
110
+ path="/v1/roles",
111
+ authenticated=True,
112
+ requiredQuery=[],
113
+ requiredHeaders=[],
114
+ queryEncoding={},
115
+ bodyRequired=True,
116
+ contentType="application/json",
117
+ accept="application/json",
118
+ ),
119
+ "createServiceAccount": Operation(
120
+ id="createServiceAccount",
121
+ method="POST",
122
+ path="/v1/service-accounts",
123
+ authenticated=True,
124
+ requiredQuery=[],
125
+ requiredHeaders=[],
126
+ queryEncoding={},
127
+ bodyRequired=True,
128
+ contentType="application/json",
129
+ accept="application/json",
130
+ ),
131
+ "createServiceAccountCredential": Operation(
132
+ id="createServiceAccountCredential",
133
+ method="POST",
134
+ path="/v1/service-accounts/{service_account_id}/credentials",
135
+ authenticated=True,
136
+ requiredQuery=[],
137
+ requiredHeaders=[],
138
+ queryEncoding={},
139
+ bodyRequired=True,
140
+ contentType="application/json",
141
+ accept="application/json",
142
+ ),
143
+ "createServiceAccountSSHKey": Operation(
144
+ id="createServiceAccountSSHKey",
145
+ method="POST",
146
+ path="/v1/service-accounts/{service_account_id}/ssh-keys",
147
+ authenticated=True,
148
+ requiredQuery=[],
149
+ requiredHeaders=[],
150
+ queryEncoding={},
151
+ bodyRequired=True,
152
+ contentType="application/json",
153
+ accept="application/json",
154
+ ),
155
+ "deletePersonalSSHKey": Operation(
156
+ id="deletePersonalSSHKey",
157
+ method="DELETE",
158
+ path="/v1/auth/ssh-keys/{ssh_key_id}",
159
+ authenticated=True,
160
+ requiredQuery=[],
161
+ requiredHeaders=[],
162
+ queryEncoding={},
163
+ bodyRequired=False,
164
+ contentType="",
165
+ accept="application/json",
166
+ ),
167
+ "deletePolicy": Operation(
168
+ id="deletePolicy",
169
+ method="DELETE",
170
+ path="/v1/policies/{policy_id}",
171
+ authenticated=True,
172
+ requiredQuery=[],
173
+ requiredHeaders=[],
174
+ queryEncoding={},
175
+ bodyRequired=False,
176
+ contentType="",
177
+ accept="application/json",
178
+ ),
179
+ "deleteRole": Operation(
180
+ id="deleteRole",
181
+ method="DELETE",
182
+ path="/v1/roles/{role_id}",
183
+ authenticated=True,
184
+ requiredQuery=[],
185
+ requiredHeaders=[],
186
+ queryEncoding={},
187
+ bodyRequired=False,
188
+ contentType="",
189
+ accept="application/json",
190
+ ),
191
+ "deleteRoleInlinePolicy": Operation(
192
+ id="deleteRoleInlinePolicy",
193
+ method="DELETE",
194
+ path="/v1/roles/{role_id}/inline-policies/{policy_name}",
195
+ authenticated=True,
196
+ requiredQuery=[],
197
+ requiredHeaders=[],
198
+ queryEncoding={},
199
+ bodyRequired=False,
200
+ contentType="",
201
+ accept="application/json",
202
+ ),
203
+ "deleteServiceAccount": Operation(
204
+ id="deleteServiceAccount",
205
+ method="DELETE",
206
+ path="/v1/service-accounts/{service_account_id}",
207
+ authenticated=True,
208
+ requiredQuery=[],
209
+ requiredHeaders=[],
210
+ queryEncoding={},
211
+ bodyRequired=False,
212
+ contentType="",
213
+ accept="application/json",
214
+ ),
215
+ "deleteServiceAccountCredential": Operation(
216
+ id="deleteServiceAccountCredential",
217
+ method="DELETE",
218
+ path="/v1/service-accounts/{service_account_id}/credentials/{credential_id}",
219
+ authenticated=True,
220
+ requiredQuery=[],
221
+ requiredHeaders=[],
222
+ queryEncoding={},
223
+ bodyRequired=False,
224
+ contentType="",
225
+ accept="application/json",
226
+ ),
227
+ "deleteServiceAccountInlinePolicy": Operation(
228
+ id="deleteServiceAccountInlinePolicy",
229
+ method="DELETE",
230
+ path="/v1/service-accounts/{service_account_id}/inline-policies/{policy_name}",
231
+ authenticated=True,
232
+ requiredQuery=[],
233
+ requiredHeaders=[],
234
+ queryEncoding={},
235
+ bodyRequired=False,
236
+ contentType="",
237
+ accept="application/json",
238
+ ),
239
+ "deleteServiceAccountSSHKey": Operation(
240
+ id="deleteServiceAccountSSHKey",
241
+ method="DELETE",
242
+ path="/v1/service-accounts/{service_account_id}/ssh-keys/{ssh_key_id}",
243
+ authenticated=True,
244
+ requiredQuery=[],
245
+ requiredHeaders=[],
246
+ queryEncoding={},
247
+ bodyRequired=False,
248
+ contentType="",
249
+ accept="application/json",
250
+ ),
251
+ "detachRolePolicy": Operation(
252
+ id="detachRolePolicy",
253
+ method="DELETE",
254
+ path="/v1/roles/{role_id}/policies/{policy_id}",
255
+ authenticated=True,
256
+ requiredQuery=[],
257
+ requiredHeaders=[],
258
+ queryEncoding={},
259
+ bodyRequired=False,
260
+ contentType="",
261
+ accept="application/json",
262
+ ),
263
+ "detachServiceAccountPolicy": Operation(
264
+ id="detachServiceAccountPolicy",
265
+ method="DELETE",
266
+ path="/v1/service-accounts/{service_account_id}/policies/{policy_id}",
267
+ authenticated=True,
268
+ requiredQuery=[],
269
+ requiredHeaders=[],
270
+ queryEncoding={},
271
+ bodyRequired=False,
272
+ contentType="",
273
+ accept="application/json",
274
+ ),
275
+ "getOAuthToken": Operation(
276
+ id="getOAuthToken",
277
+ method="POST",
278
+ path="/v1/oauth/token",
279
+ authenticated=False,
280
+ requiredQuery=[],
281
+ requiredHeaders=[],
282
+ queryEncoding={},
283
+ bodyRequired=True,
284
+ contentType="application/json",
285
+ accept="application/json",
286
+ ),
287
+ "getPersonalLinuxIdentity": Operation(
288
+ id="getPersonalLinuxIdentity",
289
+ method="GET",
290
+ path="/v1/auth/linux-identity",
291
+ authenticated=True,
292
+ requiredQuery=[],
293
+ requiredHeaders=[],
294
+ queryEncoding={},
295
+ bodyRequired=False,
296
+ contentType="",
297
+ accept="application/json",
298
+ ),
299
+ "getPolicy": Operation(
300
+ id="getPolicy",
301
+ method="GET",
302
+ path="/v1/policies/{policy_id}",
303
+ authenticated=True,
304
+ requiredQuery=[],
305
+ requiredHeaders=[],
306
+ queryEncoding={},
307
+ bodyRequired=False,
308
+ contentType="",
309
+ accept="application/json",
310
+ ),
311
+ "getRole": Operation(
312
+ id="getRole",
313
+ method="GET",
314
+ path="/v1/roles/{role_id}",
315
+ authenticated=True,
316
+ requiredQuery=[],
317
+ requiredHeaders=[],
318
+ queryEncoding={},
319
+ bodyRequired=False,
320
+ contentType="",
321
+ accept="application/json",
322
+ ),
323
+ "getRoleInlinePolicy": Operation(
324
+ id="getRoleInlinePolicy",
325
+ method="GET",
326
+ path="/v1/roles/{role_id}/inline-policies/{policy_name}",
327
+ authenticated=True,
328
+ requiredQuery=[],
329
+ requiredHeaders=[],
330
+ queryEncoding={},
331
+ bodyRequired=False,
332
+ contentType="",
333
+ accept="application/json",
334
+ ),
335
+ "getRolePermissionBoundary": Operation(
336
+ id="getRolePermissionBoundary",
337
+ method="GET",
338
+ path="/v1/roles/{role_id}/permission-boundary",
339
+ authenticated=True,
340
+ requiredQuery=[],
341
+ requiredHeaders=[],
342
+ queryEncoding={},
343
+ bodyRequired=False,
344
+ contentType="",
345
+ accept="application/json",
346
+ ),
347
+ "getSTSSession": Operation(
348
+ id="getSTSSession",
349
+ method="GET",
350
+ path="/v1/sts-sessions/{session_id}",
351
+ authenticated=True,
352
+ requiredQuery=[],
353
+ requiredHeaders=[],
354
+ queryEncoding={},
355
+ bodyRequired=False,
356
+ contentType="",
357
+ accept="application/json",
358
+ ),
359
+ "getServiceAccount": Operation(
360
+ id="getServiceAccount",
361
+ method="GET",
362
+ path="/v1/service-accounts/{service_account_id}",
363
+ authenticated=True,
364
+ requiredQuery=[],
365
+ requiredHeaders=[],
366
+ queryEncoding={},
367
+ bodyRequired=False,
368
+ contentType="",
369
+ accept="application/json",
370
+ ),
371
+ "getServiceAccountInlinePolicy": Operation(
372
+ id="getServiceAccountInlinePolicy",
373
+ method="GET",
374
+ path="/v1/service-accounts/{service_account_id}/inline-policies/{policy_name}",
375
+ authenticated=True,
376
+ requiredQuery=[],
377
+ requiredHeaders=[],
378
+ queryEncoding={},
379
+ bodyRequired=False,
380
+ contentType="",
381
+ accept="application/json",
382
+ ),
383
+ "getServiceAccountLinuxIdentity": Operation(
384
+ id="getServiceAccountLinuxIdentity",
385
+ method="GET",
386
+ path="/v1/service-accounts/{service_account_id}/linux-identity",
387
+ authenticated=True,
388
+ requiredQuery=[],
389
+ requiredHeaders=[],
390
+ queryEncoding={},
391
+ bodyRequired=False,
392
+ contentType="",
393
+ accept="application/json",
394
+ ),
395
+ "getServiceAccountPermissionBoundary": Operation(
396
+ id="getServiceAccountPermissionBoundary",
397
+ method="GET",
398
+ path="/v1/service-accounts/{service_account_id}/permission-boundary",
399
+ authenticated=True,
400
+ requiredQuery=[],
401
+ requiredHeaders=[],
402
+ queryEncoding={},
403
+ bodyRequired=False,
404
+ contentType="",
405
+ accept="application/json",
406
+ ),
407
+ "listPersonalSSHKeys": Operation(
408
+ id="listPersonalSSHKeys",
409
+ method="GET",
410
+ path="/v1/auth/ssh-keys",
411
+ authenticated=True,
412
+ requiredQuery=[],
413
+ requiredHeaders=[],
414
+ queryEncoding={},
415
+ bodyRequired=False,
416
+ contentType="",
417
+ accept="application/json",
418
+ itemsKey="ssh_keys",
419
+ ),
420
+ "listPolicies": Operation(
421
+ id="listPolicies",
422
+ method="GET",
423
+ path="/v1/policies",
424
+ authenticated=True,
425
+ requiredQuery=[],
426
+ requiredHeaders=[],
427
+ queryEncoding={
428
+ "name": {"style": "form", "explode": True},
429
+ "crn": {"style": "form", "explode": True},
430
+ "limit": {"style": "form", "explode": True},
431
+ "marker": {"style": "form", "explode": True},
432
+ },
433
+ bodyRequired=False,
434
+ contentType="",
435
+ accept="application/json",
436
+ itemsKey="policies",
437
+ ),
438
+ "listPolicyRoles": Operation(
439
+ id="listPolicyRoles",
440
+ method="GET",
441
+ path="/v1/policies/{policy_id}/roles",
442
+ authenticated=True,
443
+ requiredQuery=[],
444
+ requiredHeaders=[],
445
+ queryEncoding={
446
+ "name": {"style": "form", "explode": True},
447
+ "crn": {"style": "form", "explode": True},
448
+ "limit": {"style": "form", "explode": True},
449
+ "marker": {"style": "form", "explode": True},
450
+ },
451
+ bodyRequired=False,
452
+ contentType="",
453
+ accept="application/json",
454
+ itemsKey="roles",
455
+ ),
456
+ "listPolicyServiceAccounts": Operation(
457
+ id="listPolicyServiceAccounts",
458
+ method="GET",
459
+ path="/v1/policies/{policy_id}/service-accounts",
460
+ authenticated=True,
461
+ requiredQuery=[],
462
+ requiredHeaders=[],
463
+ queryEncoding={
464
+ "name": {"style": "form", "explode": True},
465
+ "crn": {"style": "form", "explode": True},
466
+ "limit": {"style": "form", "explode": True},
467
+ "marker": {"style": "form", "explode": True},
468
+ },
469
+ bodyRequired=False,
470
+ contentType="",
471
+ accept="application/json",
472
+ itemsKey="service_accounts",
473
+ ),
474
+ "listRegions": Operation(
475
+ id="listRegions",
476
+ method="GET",
477
+ path="/v1/regions",
478
+ authenticated=False,
479
+ requiredQuery=[],
480
+ requiredHeaders=[],
481
+ queryEncoding={
482
+ "name": {"style": "form", "explode": True},
483
+ "crn": {"style": "form", "explode": True},
484
+ },
485
+ bodyRequired=False,
486
+ contentType="",
487
+ accept="application/json",
488
+ itemsKey="regions",
489
+ ),
490
+ "listRoleInlinePolicies": Operation(
491
+ id="listRoleInlinePolicies",
492
+ method="GET",
493
+ path="/v1/roles/{role_id}/inline-policies",
494
+ authenticated=True,
495
+ requiredQuery=[],
496
+ requiredHeaders=[],
497
+ queryEncoding={
498
+ "name": {"style": "form", "explode": True},
499
+ "crn": {"style": "form", "explode": True},
500
+ },
501
+ bodyRequired=False,
502
+ contentType="",
503
+ accept="application/json",
504
+ itemsKey="inline_policies",
505
+ ),
506
+ "listRolePolicies": Operation(
507
+ id="listRolePolicies",
508
+ method="GET",
509
+ path="/v1/roles/{role_id}/policies",
510
+ authenticated=True,
511
+ requiredQuery=[],
512
+ requiredHeaders=[],
513
+ queryEncoding={
514
+ "name": {"style": "form", "explode": True},
515
+ "crn": {"style": "form", "explode": True},
516
+ },
517
+ bodyRequired=False,
518
+ contentType="",
519
+ accept="application/json",
520
+ itemsKey="policies",
521
+ ),
522
+ "listRoles": Operation(
523
+ id="listRoles",
524
+ method="GET",
525
+ path="/v1/roles",
526
+ authenticated=True,
527
+ requiredQuery=[],
528
+ requiredHeaders=[],
529
+ queryEncoding={
530
+ "name": {"style": "form", "explode": True},
531
+ "crn": {"style": "form", "explode": True},
532
+ "limit": {"style": "form", "explode": True},
533
+ "marker": {"style": "form", "explode": True},
534
+ },
535
+ bodyRequired=False,
536
+ contentType="",
537
+ accept="application/json",
538
+ itemsKey="roles",
539
+ ),
540
+ "listSTSSessions": Operation(
541
+ id="listSTSSessions",
542
+ method="GET",
543
+ path="/v1/sts-sessions",
544
+ authenticated=True,
545
+ requiredQuery=[],
546
+ requiredHeaders=[],
547
+ queryEncoding={
548
+ "name": {"style": "form", "explode": True},
549
+ "crn": {"style": "form", "explode": True},
550
+ "role": {"style": "form", "explode": True},
551
+ "principal": {"style": "form", "explode": True},
552
+ "principal_type": {"style": "form", "explode": True},
553
+ "active_only": {"style": "form", "explode": True},
554
+ "limit": {"style": "form", "explode": True},
555
+ "marker": {"style": "form", "explode": True},
556
+ },
557
+ bodyRequired=False,
558
+ contentType="",
559
+ accept="application/json",
560
+ itemsKey="sts_sessions",
561
+ ),
562
+ "listServiceAccountCredentials": Operation(
563
+ id="listServiceAccountCredentials",
564
+ method="GET",
565
+ path="/v1/service-accounts/{service_account_id}/credentials",
566
+ authenticated=True,
567
+ requiredQuery=[],
568
+ requiredHeaders=[],
569
+ queryEncoding={
570
+ "name": {"style": "form", "explode": True},
571
+ "crn": {"style": "form", "explode": True},
572
+ },
573
+ bodyRequired=False,
574
+ contentType="",
575
+ accept="application/json",
576
+ itemsKey="credentials",
577
+ ),
578
+ "listServiceAccountInlinePolicies": Operation(
579
+ id="listServiceAccountInlinePolicies",
580
+ method="GET",
581
+ path="/v1/service-accounts/{service_account_id}/inline-policies",
582
+ authenticated=True,
583
+ requiredQuery=[],
584
+ requiredHeaders=[],
585
+ queryEncoding={
586
+ "name": {"style": "form", "explode": True},
587
+ "crn": {"style": "form", "explode": True},
588
+ },
589
+ bodyRequired=False,
590
+ contentType="",
591
+ accept="application/json",
592
+ itemsKey="inline_policies",
593
+ ),
594
+ "listServiceAccountPolicies": Operation(
595
+ id="listServiceAccountPolicies",
596
+ method="GET",
597
+ path="/v1/service-accounts/{service_account_id}/policies",
598
+ authenticated=True,
599
+ requiredQuery=[],
600
+ requiredHeaders=[],
601
+ queryEncoding={
602
+ "name": {"style": "form", "explode": True},
603
+ "crn": {"style": "form", "explode": True},
604
+ },
605
+ bodyRequired=False,
606
+ contentType="",
607
+ accept="application/json",
608
+ itemsKey="policies",
609
+ ),
610
+ "listServiceAccountSSHKeys": Operation(
611
+ id="listServiceAccountSSHKeys",
612
+ method="GET",
613
+ path="/v1/service-accounts/{service_account_id}/ssh-keys",
614
+ authenticated=True,
615
+ requiredQuery=[],
616
+ requiredHeaders=[],
617
+ queryEncoding={},
618
+ bodyRequired=False,
619
+ contentType="",
620
+ accept="application/json",
621
+ itemsKey="ssh_keys",
622
+ ),
623
+ "listServiceAccounts": Operation(
624
+ id="listServiceAccounts",
625
+ method="GET",
626
+ path="/v1/service-accounts",
627
+ authenticated=True,
628
+ requiredQuery=[],
629
+ requiredHeaders=[],
630
+ queryEncoding={
631
+ "name": {"style": "form", "explode": True},
632
+ "crn": {"style": "form", "explode": True},
633
+ "limit": {"style": "form", "explode": True},
634
+ "marker": {"style": "form", "explode": True},
635
+ },
636
+ bodyRequired=False,
637
+ contentType="",
638
+ accept="application/json",
639
+ itemsKey="service_accounts",
640
+ ),
641
+ "putRoleInlinePolicy": Operation(
642
+ id="putRoleInlinePolicy",
643
+ method="PUT",
644
+ path="/v1/roles/{role_id}/inline-policies/{policy_name}",
645
+ authenticated=True,
646
+ requiredQuery=[],
647
+ requiredHeaders=[],
648
+ queryEncoding={},
649
+ bodyRequired=True,
650
+ contentType="application/json",
651
+ accept="application/json",
652
+ ),
653
+ "putServiceAccountInlinePolicy": Operation(
654
+ id="putServiceAccountInlinePolicy",
655
+ method="PUT",
656
+ path="/v1/service-accounts/{service_account_id}/inline-policies/{policy_name}",
657
+ authenticated=True,
658
+ requiredQuery=[],
659
+ requiredHeaders=[],
660
+ queryEncoding={},
661
+ bodyRequired=True,
662
+ contentType="application/json",
663
+ accept="application/json",
664
+ ),
665
+ "removeRolePermissionBoundary": Operation(
666
+ id="removeRolePermissionBoundary",
667
+ method="DELETE",
668
+ path="/v1/roles/{role_id}/permission-boundary",
669
+ authenticated=True,
670
+ requiredQuery=[],
671
+ requiredHeaders=[],
672
+ queryEncoding={},
673
+ bodyRequired=False,
674
+ contentType="",
675
+ accept="application/json",
676
+ ),
677
+ "removeServiceAccountPermissionBoundary": Operation(
678
+ id="removeServiceAccountPermissionBoundary",
679
+ method="DELETE",
680
+ path="/v1/service-accounts/{service_account_id}/permission-boundary",
681
+ authenticated=True,
682
+ requiredQuery=[],
683
+ requiredHeaders=[],
684
+ queryEncoding={},
685
+ bodyRequired=False,
686
+ contentType="",
687
+ accept="application/json",
688
+ ),
689
+ "revokeOAuthToken": Operation(
690
+ id="revokeOAuthToken",
691
+ method="POST",
692
+ path="/v1/oauth/revoke",
693
+ authenticated=True,
694
+ requiredQuery=[],
695
+ requiredHeaders=[],
696
+ queryEncoding={},
697
+ bodyRequired=True,
698
+ contentType="application/json",
699
+ accept="application/json",
700
+ ),
701
+ "revokeSTSSession": Operation(
702
+ id="revokeSTSSession",
703
+ method="DELETE",
704
+ path="/v1/sts-sessions/{session_id}",
705
+ authenticated=True,
706
+ requiredQuery=[],
707
+ requiredHeaders=[],
708
+ queryEncoding={},
709
+ bodyRequired=False,
710
+ contentType="application/json",
711
+ accept="application/json",
712
+ ),
713
+ "setRolePermissionBoundary": Operation(
714
+ id="setRolePermissionBoundary",
715
+ method="PUT",
716
+ path="/v1/roles/{role_id}/permission-boundary",
717
+ authenticated=True,
718
+ requiredQuery=[],
719
+ requiredHeaders=[],
720
+ queryEncoding={},
721
+ bodyRequired=True,
722
+ contentType="application/json",
723
+ accept="application/json",
724
+ ),
725
+ "setServiceAccountPermissionBoundary": Operation(
726
+ id="setServiceAccountPermissionBoundary",
727
+ method="PUT",
728
+ path="/v1/service-accounts/{service_account_id}/permission-boundary",
729
+ authenticated=True,
730
+ requiredQuery=[],
731
+ requiredHeaders=[],
732
+ queryEncoding={},
733
+ bodyRequired=True,
734
+ contentType="application/json",
735
+ accept="application/json",
736
+ ),
737
+ "updatePolicy": Operation(
738
+ id="updatePolicy",
739
+ method="PATCH",
740
+ path="/v1/policies/{policy_id}",
741
+ authenticated=True,
742
+ requiredQuery=[],
743
+ requiredHeaders=[],
744
+ queryEncoding={},
745
+ bodyRequired=True,
746
+ contentType="application/json",
747
+ accept="application/json",
748
+ ),
749
+ "updateRole": Operation(
750
+ id="updateRole",
751
+ method="PATCH",
752
+ path="/v1/roles/{role_id}",
753
+ authenticated=True,
754
+ requiredQuery=[],
755
+ requiredHeaders=[],
756
+ queryEncoding={},
757
+ bodyRequired=True,
758
+ contentType="application/json",
759
+ accept="application/json",
760
+ ),
761
+ "updateServiceAccount": Operation(
762
+ id="updateServiceAccount",
763
+ method="PATCH",
764
+ path="/v1/service-accounts/{service_account_id}",
765
+ authenticated=True,
766
+ requiredQuery=[],
767
+ requiredHeaders=[],
768
+ queryEncoding={},
769
+ bodyRequired=True,
770
+ contentType="application/json",
771
+ accept="application/json",
772
+ ),
773
+ }
774
+
775
+
776
+ class IamService:
777
+ def __init__(self, transport: SyncTransport) -> None:
778
+ self._transport = transport
779
+
780
+ def assume_role(
781
+ self, body: m.AssumeRoleBody, *, options: RequestOptions | None = None
782
+ ) -> ApiResponse[m.AssumeRoleResponse]:
783
+ "Assume role"
784
+ return cast(
785
+ ApiResponse[m.AssumeRoleResponse],
786
+ self._transport.request(
787
+ "iam",
788
+ "https://iam.basaltic.sh",
789
+ _OPS["assumeRole"],
790
+ "json",
791
+ {},
792
+ body,
793
+ None,
794
+ options,
795
+ ),
796
+ )
797
+
798
+ def assume_role_with_web_identity(
799
+ self, body: m.AssumeRoleWithWebIdentityBody, *, options: RequestOptions | None = None
800
+ ) -> ApiResponse[m.AssumeRoleWithWebIdentityResponse]:
801
+ "Assume role with web identity"
802
+ return cast(
803
+ ApiResponse[m.AssumeRoleWithWebIdentityResponse],
804
+ self._transport.request(
805
+ "iam",
806
+ "https://iam.basaltic.sh",
807
+ _OPS["assumeRoleWithWebIdentity"],
808
+ "json",
809
+ {},
810
+ body,
811
+ None,
812
+ options,
813
+ ),
814
+ )
815
+
816
+ def attach_role_policy(
817
+ self, role_id: str, body: m.AttachRolePolicyBody, *, options: RequestOptions | None = None
818
+ ) -> None:
819
+ "Attach policy to role"
820
+ return cast(
821
+ None,
822
+ self._transport.request(
823
+ "iam",
824
+ "https://iam.basaltic.sh",
825
+ _OPS["attachRolePolicy"],
826
+ "discard",
827
+ {"role_id": role_id},
828
+ body,
829
+ None,
830
+ options,
831
+ ),
832
+ )
833
+
834
+ def attach_service_account_policy(
835
+ self,
836
+ service_account_id: str,
837
+ body: m.AttachServiceAccountPolicyBody,
838
+ *,
839
+ options: RequestOptions | None = None,
840
+ ) -> None:
841
+ "Attach policy to service account"
842
+ return cast(
843
+ None,
844
+ self._transport.request(
845
+ "iam",
846
+ "https://iam.basaltic.sh",
847
+ _OPS["attachServiceAccountPolicy"],
848
+ "discard",
849
+ {"service_account_id": service_account_id},
850
+ body,
851
+ None,
852
+ options,
853
+ ),
854
+ )
855
+
856
+ def authorize_oauth_client(
857
+ self, body: m.AuthorizeOAuthClientBody, *, options: RequestOptions | None = None
858
+ ) -> ApiResponse[m.AuthorizeOAuthClientResponse]:
859
+ "Approve a CLI login and issue an authorization code"
860
+ return cast(
861
+ ApiResponse[m.AuthorizeOAuthClientResponse],
862
+ self._transport.request(
863
+ "iam",
864
+ "https://iam.basaltic.sh",
865
+ _OPS["authorizeOAuthClient"],
866
+ "json",
867
+ {},
868
+ body,
869
+ None,
870
+ options,
871
+ ),
872
+ )
873
+
874
+ def create_personal_ssh_key(
875
+ self, body: m.CreatePersonalSSHKeyBody, *, options: RequestOptions | None = None
876
+ ) -> ApiResponse[m.CreatePersonalSSHKeyResponse]:
877
+ "Add personal SSH key"
878
+ return cast(
879
+ ApiResponse[m.CreatePersonalSSHKeyResponse],
880
+ self._transport.request(
881
+ "iam",
882
+ "https://iam.basaltic.sh",
883
+ _OPS["createPersonalSSHKey"],
884
+ "json",
885
+ {},
886
+ body,
887
+ None,
888
+ options,
889
+ ),
890
+ )
891
+
892
+ def create_policy(
893
+ self, body: m.CreatePolicyBody, *, options: RequestOptions | None = None
894
+ ) -> ApiResponse[m.CreatePolicyResponse]:
895
+ "Create policy"
896
+ return cast(
897
+ ApiResponse[m.CreatePolicyResponse],
898
+ self._transport.request(
899
+ "iam",
900
+ "https://iam.basaltic.sh",
901
+ _OPS["createPolicy"],
902
+ "json",
903
+ {},
904
+ body,
905
+ None,
906
+ options,
907
+ ),
908
+ )
909
+
910
+ def create_role(
911
+ self, body: m.CreateRoleBody, *, options: RequestOptions | None = None
912
+ ) -> ApiResponse[m.CreateRoleResponse]:
913
+ "Create role"
914
+ return cast(
915
+ ApiResponse[m.CreateRoleResponse],
916
+ self._transport.request(
917
+ "iam",
918
+ "https://iam.basaltic.sh",
919
+ _OPS["createRole"],
920
+ "json",
921
+ {},
922
+ body,
923
+ None,
924
+ options,
925
+ ),
926
+ )
927
+
928
+ def create_service_account(
929
+ self, body: m.CreateServiceAccountBody, *, options: RequestOptions | None = None
930
+ ) -> ApiResponse[m.CreateServiceAccountResponse]:
931
+ "Create service account"
932
+ return cast(
933
+ ApiResponse[m.CreateServiceAccountResponse],
934
+ self._transport.request(
935
+ "iam",
936
+ "https://iam.basaltic.sh",
937
+ _OPS["createServiceAccount"],
938
+ "json",
939
+ {},
940
+ body,
941
+ None,
942
+ options,
943
+ ),
944
+ )
945
+
946
+ def create_service_account_credential(
947
+ self,
948
+ service_account_id: str,
949
+ body: m.CreateServiceAccountCredentialBody,
950
+ *,
951
+ options: RequestOptions | None = None,
952
+ ) -> ApiResponse[m.CreateServiceAccountCredentialResponse]:
953
+ "Create credential"
954
+ return cast(
955
+ ApiResponse[m.CreateServiceAccountCredentialResponse],
956
+ self._transport.request(
957
+ "iam",
958
+ "https://iam.basaltic.sh",
959
+ _OPS["createServiceAccountCredential"],
960
+ "json",
961
+ {"service_account_id": service_account_id},
962
+ body,
963
+ None,
964
+ options,
965
+ ),
966
+ )
967
+
968
+ def create_service_account_ssh_key(
969
+ self,
970
+ service_account_id: str,
971
+ body: m.CreateServiceAccountSSHKeyBody,
972
+ *,
973
+ options: RequestOptions | None = None,
974
+ ) -> ApiResponse[m.CreateServiceAccountSSHKeyResponse]:
975
+ "Add service-account SSH key"
976
+ return cast(
977
+ ApiResponse[m.CreateServiceAccountSSHKeyResponse],
978
+ self._transport.request(
979
+ "iam",
980
+ "https://iam.basaltic.sh",
981
+ _OPS["createServiceAccountSSHKey"],
982
+ "json",
983
+ {"service_account_id": service_account_id},
984
+ body,
985
+ None,
986
+ options,
987
+ ),
988
+ )
989
+
990
+ def delete_personal_ssh_key(
991
+ self, ssh_key_id: str, *, options: RequestOptions | None = None
992
+ ) -> None:
993
+ "Revoke personal SSH key"
994
+ return cast(
995
+ None,
996
+ self._transport.request(
997
+ "iam",
998
+ "https://iam.basaltic.sh",
999
+ _OPS["deletePersonalSSHKey"],
1000
+ "discard",
1001
+ {"ssh_key_id": ssh_key_id},
1002
+ UNSET,
1003
+ None,
1004
+ options,
1005
+ ),
1006
+ )
1007
+
1008
+ def delete_policy(self, policy_id: str, *, options: RequestOptions | None = None) -> None:
1009
+ "Delete policy"
1010
+ return cast(
1011
+ None,
1012
+ self._transport.request(
1013
+ "iam",
1014
+ "https://iam.basaltic.sh",
1015
+ _OPS["deletePolicy"],
1016
+ "discard",
1017
+ {"policy_id": policy_id},
1018
+ UNSET,
1019
+ None,
1020
+ options,
1021
+ ),
1022
+ )
1023
+
1024
+ def delete_role(self, role_id: str, *, options: RequestOptions | None = None) -> None:
1025
+ "Delete role"
1026
+ return cast(
1027
+ None,
1028
+ self._transport.request(
1029
+ "iam",
1030
+ "https://iam.basaltic.sh",
1031
+ _OPS["deleteRole"],
1032
+ "discard",
1033
+ {"role_id": role_id},
1034
+ UNSET,
1035
+ None,
1036
+ options,
1037
+ ),
1038
+ )
1039
+
1040
+ def delete_role_inline_policy(
1041
+ self, role_id: str, policy_name: str, *, options: RequestOptions | None = None
1042
+ ) -> None:
1043
+ "Delete a role's inline policy by name"
1044
+ return cast(
1045
+ None,
1046
+ self._transport.request(
1047
+ "iam",
1048
+ "https://iam.basaltic.sh",
1049
+ _OPS["deleteRoleInlinePolicy"],
1050
+ "discard",
1051
+ {"role_id": role_id, "policy_name": policy_name},
1052
+ UNSET,
1053
+ None,
1054
+ options,
1055
+ ),
1056
+ )
1057
+
1058
+ def delete_service_account(
1059
+ self, service_account_id: str, *, options: RequestOptions | None = None
1060
+ ) -> None:
1061
+ "Delete service account"
1062
+ return cast(
1063
+ None,
1064
+ self._transport.request(
1065
+ "iam",
1066
+ "https://iam.basaltic.sh",
1067
+ _OPS["deleteServiceAccount"],
1068
+ "discard",
1069
+ {"service_account_id": service_account_id},
1070
+ UNSET,
1071
+ None,
1072
+ options,
1073
+ ),
1074
+ )
1075
+
1076
+ def delete_service_account_credential(
1077
+ self, service_account_id: str, credential_id: str, *, options: RequestOptions | None = None
1078
+ ) -> None:
1079
+ "Delete credential"
1080
+ return cast(
1081
+ None,
1082
+ self._transport.request(
1083
+ "iam",
1084
+ "https://iam.basaltic.sh",
1085
+ _OPS["deleteServiceAccountCredential"],
1086
+ "discard",
1087
+ {"service_account_id": service_account_id, "credential_id": credential_id},
1088
+ UNSET,
1089
+ None,
1090
+ options,
1091
+ ),
1092
+ )
1093
+
1094
+ def delete_service_account_inline_policy(
1095
+ self, service_account_id: str, policy_name: str, *, options: RequestOptions | None = None
1096
+ ) -> None:
1097
+ "Delete a service account's inline policy by name"
1098
+ return cast(
1099
+ None,
1100
+ self._transport.request(
1101
+ "iam",
1102
+ "https://iam.basaltic.sh",
1103
+ _OPS["deleteServiceAccountInlinePolicy"],
1104
+ "discard",
1105
+ {"service_account_id": service_account_id, "policy_name": policy_name},
1106
+ UNSET,
1107
+ None,
1108
+ options,
1109
+ ),
1110
+ )
1111
+
1112
+ def delete_service_account_ssh_key(
1113
+ self, service_account_id: str, ssh_key_id: str, *, options: RequestOptions | None = None
1114
+ ) -> None:
1115
+ "Revoke service-account SSH key"
1116
+ return cast(
1117
+ None,
1118
+ self._transport.request(
1119
+ "iam",
1120
+ "https://iam.basaltic.sh",
1121
+ _OPS["deleteServiceAccountSSHKey"],
1122
+ "discard",
1123
+ {"service_account_id": service_account_id, "ssh_key_id": ssh_key_id},
1124
+ UNSET,
1125
+ None,
1126
+ options,
1127
+ ),
1128
+ )
1129
+
1130
+ def detach_role_policy(
1131
+ self, role_id: str, policy_id: str, *, options: RequestOptions | None = None
1132
+ ) -> None:
1133
+ "Detach policy from role"
1134
+ return cast(
1135
+ None,
1136
+ self._transport.request(
1137
+ "iam",
1138
+ "https://iam.basaltic.sh",
1139
+ _OPS["detachRolePolicy"],
1140
+ "discard",
1141
+ {"role_id": role_id, "policy_id": policy_id},
1142
+ UNSET,
1143
+ None,
1144
+ options,
1145
+ ),
1146
+ )
1147
+
1148
+ def detach_service_account_policy(
1149
+ self, service_account_id: str, policy_id: str, *, options: RequestOptions | None = None
1150
+ ) -> None:
1151
+ "Detach policy from service account"
1152
+ return cast(
1153
+ None,
1154
+ self._transport.request(
1155
+ "iam",
1156
+ "https://iam.basaltic.sh",
1157
+ _OPS["detachServiceAccountPolicy"],
1158
+ "discard",
1159
+ {"service_account_id": service_account_id, "policy_id": policy_id},
1160
+ UNSET,
1161
+ None,
1162
+ options,
1163
+ ),
1164
+ )
1165
+
1166
+ def get_oauth_token(
1167
+ self, body: m.GetOAuthTokenBody, *, options: RequestOptions | None = None
1168
+ ) -> ApiResponse[m.GetOAuthTokenResponse]:
1169
+ "Exchange an access key for a bearer token"
1170
+ return cast(
1171
+ ApiResponse[m.GetOAuthTokenResponse],
1172
+ self._transport.request(
1173
+ "iam",
1174
+ "https://iam.basaltic.sh",
1175
+ _OPS["getOAuthToken"],
1176
+ "json",
1177
+ {},
1178
+ body,
1179
+ None,
1180
+ options,
1181
+ ),
1182
+ )
1183
+
1184
+ def get_personal_linux_identity(
1185
+ self, *, options: RequestOptions | None = None
1186
+ ) -> ApiResponse[m.GetPersonalLinuxIdentityResponse]:
1187
+ "Get personal Linux identity"
1188
+ return cast(
1189
+ ApiResponse[m.GetPersonalLinuxIdentityResponse],
1190
+ self._transport.request(
1191
+ "iam",
1192
+ "https://iam.basaltic.sh",
1193
+ _OPS["getPersonalLinuxIdentity"],
1194
+ "json",
1195
+ {},
1196
+ UNSET,
1197
+ None,
1198
+ options,
1199
+ ),
1200
+ )
1201
+
1202
+ def get_policy(
1203
+ self, policy_id: str, *, options: RequestOptions | None = None
1204
+ ) -> ApiResponse[m.GetPolicyResponse]:
1205
+ "Get policy"
1206
+ return cast(
1207
+ ApiResponse[m.GetPolicyResponse],
1208
+ self._transport.request(
1209
+ "iam",
1210
+ "https://iam.basaltic.sh",
1211
+ _OPS["getPolicy"],
1212
+ "json",
1213
+ {"policy_id": policy_id},
1214
+ UNSET,
1215
+ None,
1216
+ options,
1217
+ ),
1218
+ )
1219
+
1220
+ def get_policy_by_reference(
1221
+ self,
1222
+ reference: str,
1223
+ *,
1224
+ scope: m.GetPolicyScope | None = None,
1225
+ options: RequestOptions | None = None,
1226
+ ) -> ApiResponse[m.GetPolicyResource]:
1227
+ return cast(
1228
+ ApiResponse[m.GetPolicyResource],
1229
+ resolve_reference(
1230
+ reference,
1231
+ lambda id: self.get_policy(id, options=options),
1232
+ lambda match: self.list_policies(
1233
+ query=cast(
1234
+ m.ListPoliciesQuery, {**reference_scope(scope), **match, "limit": 2}
1235
+ ),
1236
+ options=options,
1237
+ ),
1238
+ True,
1239
+ "policy",
1240
+ ),
1241
+ )
1242
+
1243
+ def get_role(
1244
+ self, role_id: str, *, options: RequestOptions | None = None
1245
+ ) -> ApiResponse[m.GetRoleResponse]:
1246
+ "Get role"
1247
+ return cast(
1248
+ ApiResponse[m.GetRoleResponse],
1249
+ self._transport.request(
1250
+ "iam",
1251
+ "https://iam.basaltic.sh",
1252
+ _OPS["getRole"],
1253
+ "json",
1254
+ {"role_id": role_id},
1255
+ UNSET,
1256
+ None,
1257
+ options,
1258
+ ),
1259
+ )
1260
+
1261
+ def get_role_by_reference(
1262
+ self,
1263
+ reference: str,
1264
+ *,
1265
+ scope: m.GetRoleScope | None = None,
1266
+ options: RequestOptions | None = None,
1267
+ ) -> ApiResponse[m.GetRoleResource]:
1268
+ return cast(
1269
+ ApiResponse[m.GetRoleResource],
1270
+ resolve_reference(
1271
+ reference,
1272
+ lambda id: self.get_role(id, options=options),
1273
+ lambda match: self.list_roles(
1274
+ query=cast(m.ListRolesQuery, {**reference_scope(scope), **match, "limit": 2}),
1275
+ options=options,
1276
+ ),
1277
+ True,
1278
+ "role",
1279
+ ),
1280
+ )
1281
+
1282
+ def get_role_inline_policy(
1283
+ self, role_id: str, policy_name: str, *, options: RequestOptions | None = None
1284
+ ) -> ApiResponse[m.GetRoleInlinePolicyResponse]:
1285
+ "Get a role's inline policy by name"
1286
+ return cast(
1287
+ ApiResponse[m.GetRoleInlinePolicyResponse],
1288
+ self._transport.request(
1289
+ "iam",
1290
+ "https://iam.basaltic.sh",
1291
+ _OPS["getRoleInlinePolicy"],
1292
+ "json",
1293
+ {"role_id": role_id, "policy_name": policy_name},
1294
+ UNSET,
1295
+ None,
1296
+ options,
1297
+ ),
1298
+ )
1299
+
1300
+ def get_role_inline_policy_by_reference(
1301
+ self,
1302
+ role_id: str,
1303
+ reference: str,
1304
+ *,
1305
+ scope: m.GetRoleInlinePolicyScope | None = None,
1306
+ options: RequestOptions | None = None,
1307
+ ) -> ApiResponse[m.GetRoleInlinePolicyResource]:
1308
+ return cast(
1309
+ ApiResponse[m.GetRoleInlinePolicyResource],
1310
+ resolve_reference(
1311
+ reference,
1312
+ lambda id: self.get_role_inline_policy(role_id, id, options=options),
1313
+ lambda match: self.list_role_inline_policies(
1314
+ role_id,
1315
+ query=cast(m.ListRoleInlinePoliciesQuery, {**reference_scope(scope), **match}),
1316
+ options=options,
1317
+ ),
1318
+ True,
1319
+ "inline_policy",
1320
+ ),
1321
+ )
1322
+
1323
+ def get_role_permission_boundary(
1324
+ self, role_id: str, *, options: RequestOptions | None = None
1325
+ ) -> ApiResponse[m.GetRolePermissionBoundaryResponse]:
1326
+ "Get a role's permission boundary"
1327
+ return cast(
1328
+ ApiResponse[m.GetRolePermissionBoundaryResponse],
1329
+ self._transport.request(
1330
+ "iam",
1331
+ "https://iam.basaltic.sh",
1332
+ _OPS["getRolePermissionBoundary"],
1333
+ "json",
1334
+ {"role_id": role_id},
1335
+ UNSET,
1336
+ None,
1337
+ options,
1338
+ ),
1339
+ )
1340
+
1341
+ def get_sts_session(
1342
+ self, session_id: str, *, options: RequestOptions | None = None
1343
+ ) -> ApiResponse[m.GetSTSSessionResponse]:
1344
+ "Get STS session"
1345
+ return cast(
1346
+ ApiResponse[m.GetSTSSessionResponse],
1347
+ self._transport.request(
1348
+ "iam",
1349
+ "https://iam.basaltic.sh",
1350
+ _OPS["getSTSSession"],
1351
+ "json",
1352
+ {"session_id": session_id},
1353
+ UNSET,
1354
+ None,
1355
+ options,
1356
+ ),
1357
+ )
1358
+
1359
+ def get_sts_session_by_reference(
1360
+ self,
1361
+ reference: str,
1362
+ *,
1363
+ scope: m.GetSTSSessionScope | None = None,
1364
+ options: RequestOptions | None = None,
1365
+ ) -> ApiResponse[m.GetSTSSessionResource]:
1366
+ return cast(
1367
+ ApiResponse[m.GetSTSSessionResource],
1368
+ resolve_reference(
1369
+ reference,
1370
+ lambda id: self.get_sts_session(id, options=options),
1371
+ lambda match: self.list_sts_sessions(
1372
+ query=cast(
1373
+ m.ListSTSSessionsQuery, {**reference_scope(scope), **match, "limit": 2}
1374
+ ),
1375
+ options=options,
1376
+ ),
1377
+ True,
1378
+ "sts_session",
1379
+ ),
1380
+ )
1381
+
1382
+ def get_service_account(
1383
+ self, service_account_id: str, *, options: RequestOptions | None = None
1384
+ ) -> ApiResponse[m.GetServiceAccountResponse]:
1385
+ "Get service account"
1386
+ return cast(
1387
+ ApiResponse[m.GetServiceAccountResponse],
1388
+ self._transport.request(
1389
+ "iam",
1390
+ "https://iam.basaltic.sh",
1391
+ _OPS["getServiceAccount"],
1392
+ "json",
1393
+ {"service_account_id": service_account_id},
1394
+ UNSET,
1395
+ None,
1396
+ options,
1397
+ ),
1398
+ )
1399
+
1400
+ def get_service_account_by_reference(
1401
+ self,
1402
+ reference: str,
1403
+ *,
1404
+ scope: m.GetServiceAccountScope | None = None,
1405
+ options: RequestOptions | None = None,
1406
+ ) -> ApiResponse[m.GetServiceAccountResource]:
1407
+ return cast(
1408
+ ApiResponse[m.GetServiceAccountResource],
1409
+ resolve_reference(
1410
+ reference,
1411
+ lambda id: self.get_service_account(id, options=options),
1412
+ lambda match: self.list_service_accounts(
1413
+ query=cast(
1414
+ m.ListServiceAccountsQuery, {**reference_scope(scope), **match, "limit": 2}
1415
+ ),
1416
+ options=options,
1417
+ ),
1418
+ True,
1419
+ "service_account",
1420
+ ),
1421
+ )
1422
+
1423
+ def get_service_account_inline_policy(
1424
+ self, service_account_id: str, policy_name: str, *, options: RequestOptions | None = None
1425
+ ) -> ApiResponse[m.GetServiceAccountInlinePolicyResponse]:
1426
+ "Get a service account's inline policy by name"
1427
+ return cast(
1428
+ ApiResponse[m.GetServiceAccountInlinePolicyResponse],
1429
+ self._transport.request(
1430
+ "iam",
1431
+ "https://iam.basaltic.sh",
1432
+ _OPS["getServiceAccountInlinePolicy"],
1433
+ "json",
1434
+ {"service_account_id": service_account_id, "policy_name": policy_name},
1435
+ UNSET,
1436
+ None,
1437
+ options,
1438
+ ),
1439
+ )
1440
+
1441
+ def get_service_account_inline_policy_by_reference(
1442
+ self,
1443
+ service_account_id: str,
1444
+ reference: str,
1445
+ *,
1446
+ scope: m.GetServiceAccountInlinePolicyScope | None = None,
1447
+ options: RequestOptions | None = None,
1448
+ ) -> ApiResponse[m.GetServiceAccountInlinePolicyResource]:
1449
+ return cast(
1450
+ ApiResponse[m.GetServiceAccountInlinePolicyResource],
1451
+ resolve_reference(
1452
+ reference,
1453
+ lambda id: self.get_service_account_inline_policy(
1454
+ service_account_id, id, options=options
1455
+ ),
1456
+ lambda match: self.list_service_account_inline_policies(
1457
+ service_account_id,
1458
+ query=cast(
1459
+ m.ListServiceAccountInlinePoliciesQuery, {**reference_scope(scope), **match}
1460
+ ),
1461
+ options=options,
1462
+ ),
1463
+ True,
1464
+ "inline_policy",
1465
+ ),
1466
+ )
1467
+
1468
+ def get_service_account_linux_identity(
1469
+ self, service_account_id: str, *, options: RequestOptions | None = None
1470
+ ) -> ApiResponse[m.GetServiceAccountLinuxIdentityResponse]:
1471
+ "Get serviceaccount Linux identity"
1472
+ return cast(
1473
+ ApiResponse[m.GetServiceAccountLinuxIdentityResponse],
1474
+ self._transport.request(
1475
+ "iam",
1476
+ "https://iam.basaltic.sh",
1477
+ _OPS["getServiceAccountLinuxIdentity"],
1478
+ "json",
1479
+ {"service_account_id": service_account_id},
1480
+ UNSET,
1481
+ None,
1482
+ options,
1483
+ ),
1484
+ )
1485
+
1486
+ def get_service_account_permission_boundary(
1487
+ self, service_account_id: str, *, options: RequestOptions | None = None
1488
+ ) -> ApiResponse[m.GetServiceAccountPermissionBoundaryResponse]:
1489
+ "Get a service account's permission boundary"
1490
+ return cast(
1491
+ ApiResponse[m.GetServiceAccountPermissionBoundaryResponse],
1492
+ self._transport.request(
1493
+ "iam",
1494
+ "https://iam.basaltic.sh",
1495
+ _OPS["getServiceAccountPermissionBoundary"],
1496
+ "json",
1497
+ {"service_account_id": service_account_id},
1498
+ UNSET,
1499
+ None,
1500
+ options,
1501
+ ),
1502
+ )
1503
+
1504
+ def list_personal_ssh_keys(
1505
+ self, *, options: RequestOptions | None = None
1506
+ ) -> Page[m.ListPersonalSSHKeysResponse, m.ListPersonalSSHKeysItem]:
1507
+ "List personal SSH keys"
1508
+ return cast(
1509
+ Page[m.ListPersonalSSHKeysResponse, m.ListPersonalSSHKeysItem],
1510
+ self._transport.request(
1511
+ "iam",
1512
+ "https://iam.basaltic.sh",
1513
+ _OPS["listPersonalSSHKeys"],
1514
+ "page",
1515
+ {},
1516
+ UNSET,
1517
+ None,
1518
+ options,
1519
+ ),
1520
+ )
1521
+
1522
+ def list_policies(
1523
+ self, *, query: m.ListPoliciesQuery | None = None, options: RequestOptions | None = None
1524
+ ) -> Page[m.ListPoliciesResponse, m.ListPoliciesItem]:
1525
+ "List policies"
1526
+ return cast(
1527
+ Page[m.ListPoliciesResponse, m.ListPoliciesItem],
1528
+ self._transport.request(
1529
+ "iam",
1530
+ "https://iam.basaltic.sh",
1531
+ _OPS["listPolicies"],
1532
+ "page",
1533
+ {},
1534
+ UNSET,
1535
+ query,
1536
+ options,
1537
+ ),
1538
+ )
1539
+
1540
+ def list_policies_all(
1541
+ self, *, query: m.ListPoliciesQuery | None = None, options: RequestOptions | None = None
1542
+ ) -> Iterator[m.ListPoliciesItem]:
1543
+ return iterate_pages(
1544
+ lambda marker: self.list_policies(
1545
+ query=cast(m.ListPoliciesQuery, {**(query or {}), "marker": marker}),
1546
+ options=options,
1547
+ ),
1548
+ (query or {}).get("marker", ""),
1549
+ )
1550
+
1551
+ def list_policy_roles(
1552
+ self,
1553
+ policy_id: str,
1554
+ *,
1555
+ query: m.ListPolicyRolesQuery | None = None,
1556
+ options: RequestOptions | None = None,
1557
+ ) -> Page[m.ListPolicyRolesResponse, m.ListPolicyRolesItem]:
1558
+ "List roles with policy"
1559
+ return cast(
1560
+ Page[m.ListPolicyRolesResponse, m.ListPolicyRolesItem],
1561
+ self._transport.request(
1562
+ "iam",
1563
+ "https://iam.basaltic.sh",
1564
+ _OPS["listPolicyRoles"],
1565
+ "page",
1566
+ {"policy_id": policy_id},
1567
+ UNSET,
1568
+ query,
1569
+ options,
1570
+ ),
1571
+ )
1572
+
1573
+ def list_policy_roles_all(
1574
+ self,
1575
+ policy_id: str,
1576
+ *,
1577
+ query: m.ListPolicyRolesQuery | None = None,
1578
+ options: RequestOptions | None = None,
1579
+ ) -> Iterator[m.ListPolicyRolesItem]:
1580
+ return iterate_pages(
1581
+ lambda marker: self.list_policy_roles(
1582
+ policy_id,
1583
+ query=cast(m.ListPolicyRolesQuery, {**(query or {}), "marker": marker}),
1584
+ options=options,
1585
+ ),
1586
+ (query or {}).get("marker", ""),
1587
+ )
1588
+
1589
+ def list_policy_service_accounts(
1590
+ self,
1591
+ policy_id: str,
1592
+ *,
1593
+ query: m.ListPolicyServiceAccountsQuery | None = None,
1594
+ options: RequestOptions | None = None,
1595
+ ) -> Page[m.ListPolicyServiceAccountsResponse, m.ListPolicyServiceAccountsItem]:
1596
+ "List service accounts with policy"
1597
+ return cast(
1598
+ Page[m.ListPolicyServiceAccountsResponse, m.ListPolicyServiceAccountsItem],
1599
+ self._transport.request(
1600
+ "iam",
1601
+ "https://iam.basaltic.sh",
1602
+ _OPS["listPolicyServiceAccounts"],
1603
+ "page",
1604
+ {"policy_id": policy_id},
1605
+ UNSET,
1606
+ query,
1607
+ options,
1608
+ ),
1609
+ )
1610
+
1611
+ def list_policy_service_accounts_all(
1612
+ self,
1613
+ policy_id: str,
1614
+ *,
1615
+ query: m.ListPolicyServiceAccountsQuery | None = None,
1616
+ options: RequestOptions | None = None,
1617
+ ) -> Iterator[m.ListPolicyServiceAccountsItem]:
1618
+ return iterate_pages(
1619
+ lambda marker: self.list_policy_service_accounts(
1620
+ policy_id,
1621
+ query=cast(m.ListPolicyServiceAccountsQuery, {**(query or {}), "marker": marker}),
1622
+ options=options,
1623
+ ),
1624
+ (query or {}).get("marker", ""),
1625
+ )
1626
+
1627
+ def list_regions(
1628
+ self, *, query: m.ListRegionsQuery | None = None, options: RequestOptions | None = None
1629
+ ) -> Page[m.ListRegionsResponse, m.ListRegionsItem]:
1630
+ "List regions (legacy IAM)"
1631
+ return cast(
1632
+ Page[m.ListRegionsResponse, m.ListRegionsItem],
1633
+ self._transport.request(
1634
+ "iam",
1635
+ "https://iam.basaltic.sh",
1636
+ _OPS["listRegions"],
1637
+ "page",
1638
+ {},
1639
+ UNSET,
1640
+ query,
1641
+ options,
1642
+ ),
1643
+ )
1644
+
1645
+ def list_role_inline_policies(
1646
+ self,
1647
+ role_id: str,
1648
+ *,
1649
+ query: m.ListRoleInlinePoliciesQuery | None = None,
1650
+ options: RequestOptions | None = None,
1651
+ ) -> Page[m.ListRoleInlinePoliciesResponse, m.ListRoleInlinePoliciesItem]:
1652
+ "List a role's inline policies"
1653
+ return cast(
1654
+ Page[m.ListRoleInlinePoliciesResponse, m.ListRoleInlinePoliciesItem],
1655
+ self._transport.request(
1656
+ "iam",
1657
+ "https://iam.basaltic.sh",
1658
+ _OPS["listRoleInlinePolicies"],
1659
+ "page",
1660
+ {"role_id": role_id},
1661
+ UNSET,
1662
+ query,
1663
+ options,
1664
+ ),
1665
+ )
1666
+
1667
+ def list_role_policies(
1668
+ self,
1669
+ role_id: str,
1670
+ *,
1671
+ query: m.ListRolePoliciesQuery | None = None,
1672
+ options: RequestOptions | None = None,
1673
+ ) -> Page[m.ListRolePoliciesResponse, m.ListRolePoliciesItem]:
1674
+ "List role policies"
1675
+ return cast(
1676
+ Page[m.ListRolePoliciesResponse, m.ListRolePoliciesItem],
1677
+ self._transport.request(
1678
+ "iam",
1679
+ "https://iam.basaltic.sh",
1680
+ _OPS["listRolePolicies"],
1681
+ "page",
1682
+ {"role_id": role_id},
1683
+ UNSET,
1684
+ query,
1685
+ options,
1686
+ ),
1687
+ )
1688
+
1689
+ def list_roles(
1690
+ self, *, query: m.ListRolesQuery | None = None, options: RequestOptions | None = None
1691
+ ) -> Page[m.ListRolesResponse, m.ListRolesItem]:
1692
+ "List roles"
1693
+ return cast(
1694
+ Page[m.ListRolesResponse, m.ListRolesItem],
1695
+ self._transport.request(
1696
+ "iam",
1697
+ "https://iam.basaltic.sh",
1698
+ _OPS["listRoles"],
1699
+ "page",
1700
+ {},
1701
+ UNSET,
1702
+ query,
1703
+ options,
1704
+ ),
1705
+ )
1706
+
1707
+ def list_roles_all(
1708
+ self, *, query: m.ListRolesQuery | None = None, options: RequestOptions | None = None
1709
+ ) -> Iterator[m.ListRolesItem]:
1710
+ return iterate_pages(
1711
+ lambda marker: self.list_roles(
1712
+ query=cast(m.ListRolesQuery, {**(query or {}), "marker": marker}), options=options
1713
+ ),
1714
+ (query or {}).get("marker", ""),
1715
+ )
1716
+
1717
+ def list_sts_sessions(
1718
+ self, *, query: m.ListSTSSessionsQuery | None = None, options: RequestOptions | None = None
1719
+ ) -> Page[m.ListSTSSessionsResponse, m.ListSTSSessionsItem]:
1720
+ "List STS sessions"
1721
+ return cast(
1722
+ Page[m.ListSTSSessionsResponse, m.ListSTSSessionsItem],
1723
+ self._transport.request(
1724
+ "iam",
1725
+ "https://iam.basaltic.sh",
1726
+ _OPS["listSTSSessions"],
1727
+ "page",
1728
+ {},
1729
+ UNSET,
1730
+ query,
1731
+ options,
1732
+ ),
1733
+ )
1734
+
1735
+ def list_sts_sessions_all(
1736
+ self, *, query: m.ListSTSSessionsQuery | None = None, options: RequestOptions | None = None
1737
+ ) -> Iterator[m.ListSTSSessionsItem]:
1738
+ return iterate_pages(
1739
+ lambda marker: self.list_sts_sessions(
1740
+ query=cast(m.ListSTSSessionsQuery, {**(query or {}), "marker": marker}),
1741
+ options=options,
1742
+ ),
1743
+ (query or {}).get("marker", ""),
1744
+ )
1745
+
1746
+ def list_service_account_credentials(
1747
+ self,
1748
+ service_account_id: str,
1749
+ *,
1750
+ query: m.ListServiceAccountCredentialsQuery | None = None,
1751
+ options: RequestOptions | None = None,
1752
+ ) -> Page[m.ListServiceAccountCredentialsResponse, m.ListServiceAccountCredentialsItem]:
1753
+ "List credentials"
1754
+ return cast(
1755
+ Page[m.ListServiceAccountCredentialsResponse, m.ListServiceAccountCredentialsItem],
1756
+ self._transport.request(
1757
+ "iam",
1758
+ "https://iam.basaltic.sh",
1759
+ _OPS["listServiceAccountCredentials"],
1760
+ "page",
1761
+ {"service_account_id": service_account_id},
1762
+ UNSET,
1763
+ query,
1764
+ options,
1765
+ ),
1766
+ )
1767
+
1768
+ def list_service_account_inline_policies(
1769
+ self,
1770
+ service_account_id: str,
1771
+ *,
1772
+ query: m.ListServiceAccountInlinePoliciesQuery | None = None,
1773
+ options: RequestOptions | None = None,
1774
+ ) -> Page[m.ListServiceAccountInlinePoliciesResponse, m.ListServiceAccountInlinePoliciesItem]:
1775
+ "List a service account's inline policies"
1776
+ return cast(
1777
+ Page[
1778
+ m.ListServiceAccountInlinePoliciesResponse, m.ListServiceAccountInlinePoliciesItem
1779
+ ],
1780
+ self._transport.request(
1781
+ "iam",
1782
+ "https://iam.basaltic.sh",
1783
+ _OPS["listServiceAccountInlinePolicies"],
1784
+ "page",
1785
+ {"service_account_id": service_account_id},
1786
+ UNSET,
1787
+ query,
1788
+ options,
1789
+ ),
1790
+ )
1791
+
1792
+ def list_service_account_policies(
1793
+ self,
1794
+ service_account_id: str,
1795
+ *,
1796
+ query: m.ListServiceAccountPoliciesQuery | None = None,
1797
+ options: RequestOptions | None = None,
1798
+ ) -> Page[m.ListServiceAccountPoliciesResponse, m.ListServiceAccountPoliciesItem]:
1799
+ "List service account policies"
1800
+ return cast(
1801
+ Page[m.ListServiceAccountPoliciesResponse, m.ListServiceAccountPoliciesItem],
1802
+ self._transport.request(
1803
+ "iam",
1804
+ "https://iam.basaltic.sh",
1805
+ _OPS["listServiceAccountPolicies"],
1806
+ "page",
1807
+ {"service_account_id": service_account_id},
1808
+ UNSET,
1809
+ query,
1810
+ options,
1811
+ ),
1812
+ )
1813
+
1814
+ def list_service_account_ssh_keys(
1815
+ self, service_account_id: str, *, options: RequestOptions | None = None
1816
+ ) -> Page[m.ListServiceAccountSSHKeysResponse, m.ListServiceAccountSSHKeysItem]:
1817
+ "List service-account SSH keys"
1818
+ return cast(
1819
+ Page[m.ListServiceAccountSSHKeysResponse, m.ListServiceAccountSSHKeysItem],
1820
+ self._transport.request(
1821
+ "iam",
1822
+ "https://iam.basaltic.sh",
1823
+ _OPS["listServiceAccountSSHKeys"],
1824
+ "page",
1825
+ {"service_account_id": service_account_id},
1826
+ UNSET,
1827
+ None,
1828
+ options,
1829
+ ),
1830
+ )
1831
+
1832
+ def list_service_accounts(
1833
+ self,
1834
+ *,
1835
+ query: m.ListServiceAccountsQuery | None = None,
1836
+ options: RequestOptions | None = None,
1837
+ ) -> Page[m.ListServiceAccountsResponse, m.ListServiceAccountsItem]:
1838
+ "List service accounts"
1839
+ return cast(
1840
+ Page[m.ListServiceAccountsResponse, m.ListServiceAccountsItem],
1841
+ self._transport.request(
1842
+ "iam",
1843
+ "https://iam.basaltic.sh",
1844
+ _OPS["listServiceAccounts"],
1845
+ "page",
1846
+ {},
1847
+ UNSET,
1848
+ query,
1849
+ options,
1850
+ ),
1851
+ )
1852
+
1853
+ def list_service_accounts_all(
1854
+ self,
1855
+ *,
1856
+ query: m.ListServiceAccountsQuery | None = None,
1857
+ options: RequestOptions | None = None,
1858
+ ) -> Iterator[m.ListServiceAccountsItem]:
1859
+ return iterate_pages(
1860
+ lambda marker: self.list_service_accounts(
1861
+ query=cast(m.ListServiceAccountsQuery, {**(query or {}), "marker": marker}),
1862
+ options=options,
1863
+ ),
1864
+ (query or {}).get("marker", ""),
1865
+ )
1866
+
1867
+ def put_role_inline_policy(
1868
+ self,
1869
+ role_id: str,
1870
+ policy_name: str,
1871
+ body: m.PutRoleInlinePolicyBody,
1872
+ *,
1873
+ options: RequestOptions | None = None,
1874
+ ) -> ApiResponse[m.PutRoleInlinePolicyResponse]:
1875
+ "Create or replace a role's inline policy"
1876
+ return cast(
1877
+ ApiResponse[m.PutRoleInlinePolicyResponse],
1878
+ self._transport.request(
1879
+ "iam",
1880
+ "https://iam.basaltic.sh",
1881
+ _OPS["putRoleInlinePolicy"],
1882
+ "json",
1883
+ {"role_id": role_id, "policy_name": policy_name},
1884
+ body,
1885
+ None,
1886
+ options,
1887
+ ),
1888
+ )
1889
+
1890
+ def put_service_account_inline_policy(
1891
+ self,
1892
+ service_account_id: str,
1893
+ policy_name: str,
1894
+ body: m.PutServiceAccountInlinePolicyBody,
1895
+ *,
1896
+ options: RequestOptions | None = None,
1897
+ ) -> ApiResponse[m.PutServiceAccountInlinePolicyResponse]:
1898
+ "Create or replace a service account's inline policy"
1899
+ return cast(
1900
+ ApiResponse[m.PutServiceAccountInlinePolicyResponse],
1901
+ self._transport.request(
1902
+ "iam",
1903
+ "https://iam.basaltic.sh",
1904
+ _OPS["putServiceAccountInlinePolicy"],
1905
+ "json",
1906
+ {"service_account_id": service_account_id, "policy_name": policy_name},
1907
+ body,
1908
+ None,
1909
+ options,
1910
+ ),
1911
+ )
1912
+
1913
+ def remove_role_permission_boundary(
1914
+ self, role_id: str, *, options: RequestOptions | None = None
1915
+ ) -> None:
1916
+ "Remove a role's permission boundary"
1917
+ return cast(
1918
+ None,
1919
+ self._transport.request(
1920
+ "iam",
1921
+ "https://iam.basaltic.sh",
1922
+ _OPS["removeRolePermissionBoundary"],
1923
+ "discard",
1924
+ {"role_id": role_id},
1925
+ UNSET,
1926
+ None,
1927
+ options,
1928
+ ),
1929
+ )
1930
+
1931
+ def remove_service_account_permission_boundary(
1932
+ self, service_account_id: str, *, options: RequestOptions | None = None
1933
+ ) -> None:
1934
+ "Remove a service account's permission boundary"
1935
+ return cast(
1936
+ None,
1937
+ self._transport.request(
1938
+ "iam",
1939
+ "https://iam.basaltic.sh",
1940
+ _OPS["removeServiceAccountPermissionBoundary"],
1941
+ "discard",
1942
+ {"service_account_id": service_account_id},
1943
+ UNSET,
1944
+ None,
1945
+ options,
1946
+ ),
1947
+ )
1948
+
1949
+ def revoke_oauth_token(
1950
+ self, body: m.RevokeOAuthTokenBody, *, options: RequestOptions | None = None
1951
+ ) -> None:
1952
+ "Revoke a bearer token"
1953
+ return cast(
1954
+ None,
1955
+ self._transport.request(
1956
+ "iam",
1957
+ "https://iam.basaltic.sh",
1958
+ _OPS["revokeOAuthToken"],
1959
+ "discard",
1960
+ {},
1961
+ body,
1962
+ None,
1963
+ options,
1964
+ ),
1965
+ )
1966
+
1967
+ def revoke_sts_session(
1968
+ self,
1969
+ session_id: str,
1970
+ body: m.RevokeSTSSessionBody | Unset = UNSET,
1971
+ *,
1972
+ options: RequestOptions | None = None,
1973
+ ) -> ApiResponse[m.RevokeSTSSessionResponse]:
1974
+ "Revoke STS session"
1975
+ return cast(
1976
+ ApiResponse[m.RevokeSTSSessionResponse],
1977
+ self._transport.request(
1978
+ "iam",
1979
+ "https://iam.basaltic.sh",
1980
+ _OPS["revokeSTSSession"],
1981
+ "json",
1982
+ {"session_id": session_id},
1983
+ body,
1984
+ None,
1985
+ options,
1986
+ ),
1987
+ )
1988
+
1989
+ def set_role_permission_boundary(
1990
+ self,
1991
+ role_id: str,
1992
+ body: m.SetRolePermissionBoundaryBody,
1993
+ *,
1994
+ options: RequestOptions | None = None,
1995
+ ) -> None:
1996
+ "Set a role's permission boundary"
1997
+ return cast(
1998
+ None,
1999
+ self._transport.request(
2000
+ "iam",
2001
+ "https://iam.basaltic.sh",
2002
+ _OPS["setRolePermissionBoundary"],
2003
+ "discard",
2004
+ {"role_id": role_id},
2005
+ body,
2006
+ None,
2007
+ options,
2008
+ ),
2009
+ )
2010
+
2011
+ def set_service_account_permission_boundary(
2012
+ self,
2013
+ service_account_id: str,
2014
+ body: m.SetServiceAccountPermissionBoundaryBody,
2015
+ *,
2016
+ options: RequestOptions | None = None,
2017
+ ) -> None:
2018
+ "Set a service account's permission boundary"
2019
+ return cast(
2020
+ None,
2021
+ self._transport.request(
2022
+ "iam",
2023
+ "https://iam.basaltic.sh",
2024
+ _OPS["setServiceAccountPermissionBoundary"],
2025
+ "discard",
2026
+ {"service_account_id": service_account_id},
2027
+ body,
2028
+ None,
2029
+ options,
2030
+ ),
2031
+ )
2032
+
2033
+ def update_policy(
2034
+ self, policy_id: str, body: m.UpdatePolicyBody, *, options: RequestOptions | None = None
2035
+ ) -> ApiResponse[m.UpdatePolicyResponse]:
2036
+ "Update policy"
2037
+ return cast(
2038
+ ApiResponse[m.UpdatePolicyResponse],
2039
+ self._transport.request(
2040
+ "iam",
2041
+ "https://iam.basaltic.sh",
2042
+ _OPS["updatePolicy"],
2043
+ "json",
2044
+ {"policy_id": policy_id},
2045
+ body,
2046
+ None,
2047
+ options,
2048
+ ),
2049
+ )
2050
+
2051
+ def update_role(
2052
+ self, role_id: str, body: m.UpdateRoleBody, *, options: RequestOptions | None = None
2053
+ ) -> ApiResponse[m.UpdateRoleResponse]:
2054
+ "Update role"
2055
+ return cast(
2056
+ ApiResponse[m.UpdateRoleResponse],
2057
+ self._transport.request(
2058
+ "iam",
2059
+ "https://iam.basaltic.sh",
2060
+ _OPS["updateRole"],
2061
+ "json",
2062
+ {"role_id": role_id},
2063
+ body,
2064
+ None,
2065
+ options,
2066
+ ),
2067
+ )
2068
+
2069
+ def update_service_account(
2070
+ self,
2071
+ service_account_id: str,
2072
+ body: m.UpdateServiceAccountBody,
2073
+ *,
2074
+ options: RequestOptions | None = None,
2075
+ ) -> ApiResponse[m.UpdateServiceAccountResponse]:
2076
+ "Update service account"
2077
+ return cast(
2078
+ ApiResponse[m.UpdateServiceAccountResponse],
2079
+ self._transport.request(
2080
+ "iam",
2081
+ "https://iam.basaltic.sh",
2082
+ _OPS["updateServiceAccount"],
2083
+ "json",
2084
+ {"service_account_id": service_account_id},
2085
+ body,
2086
+ None,
2087
+ options,
2088
+ ),
2089
+ )
2090
+
2091
+
2092
+ class AsyncIamService:
2093
+ def __init__(self, transport: AsyncTransport) -> None:
2094
+ self._transport = transport
2095
+
2096
+ async def assume_role(
2097
+ self, body: m.AssumeRoleBody, *, options: RequestOptions | None = None
2098
+ ) -> ApiResponse[m.AssumeRoleResponse]:
2099
+ "Assume role"
2100
+ return cast(
2101
+ ApiResponse[m.AssumeRoleResponse],
2102
+ await self._transport.request(
2103
+ "iam",
2104
+ "https://iam.basaltic.sh",
2105
+ _OPS["assumeRole"],
2106
+ "json",
2107
+ {},
2108
+ body,
2109
+ None,
2110
+ options,
2111
+ ),
2112
+ )
2113
+
2114
+ async def assume_role_with_web_identity(
2115
+ self, body: m.AssumeRoleWithWebIdentityBody, *, options: RequestOptions | None = None
2116
+ ) -> ApiResponse[m.AssumeRoleWithWebIdentityResponse]:
2117
+ "Assume role with web identity"
2118
+ return cast(
2119
+ ApiResponse[m.AssumeRoleWithWebIdentityResponse],
2120
+ await self._transport.request(
2121
+ "iam",
2122
+ "https://iam.basaltic.sh",
2123
+ _OPS["assumeRoleWithWebIdentity"],
2124
+ "json",
2125
+ {},
2126
+ body,
2127
+ None,
2128
+ options,
2129
+ ),
2130
+ )
2131
+
2132
+ async def attach_role_policy(
2133
+ self, role_id: str, body: m.AttachRolePolicyBody, *, options: RequestOptions | None = None
2134
+ ) -> None:
2135
+ "Attach policy to role"
2136
+ return cast(
2137
+ None,
2138
+ await self._transport.request(
2139
+ "iam",
2140
+ "https://iam.basaltic.sh",
2141
+ _OPS["attachRolePolicy"],
2142
+ "discard",
2143
+ {"role_id": role_id},
2144
+ body,
2145
+ None,
2146
+ options,
2147
+ ),
2148
+ )
2149
+
2150
+ async def attach_service_account_policy(
2151
+ self,
2152
+ service_account_id: str,
2153
+ body: m.AttachServiceAccountPolicyBody,
2154
+ *,
2155
+ options: RequestOptions | None = None,
2156
+ ) -> None:
2157
+ "Attach policy to service account"
2158
+ return cast(
2159
+ None,
2160
+ await self._transport.request(
2161
+ "iam",
2162
+ "https://iam.basaltic.sh",
2163
+ _OPS["attachServiceAccountPolicy"],
2164
+ "discard",
2165
+ {"service_account_id": service_account_id},
2166
+ body,
2167
+ None,
2168
+ options,
2169
+ ),
2170
+ )
2171
+
2172
+ async def authorize_oauth_client(
2173
+ self, body: m.AuthorizeOAuthClientBody, *, options: RequestOptions | None = None
2174
+ ) -> ApiResponse[m.AuthorizeOAuthClientResponse]:
2175
+ "Approve a CLI login and issue an authorization code"
2176
+ return cast(
2177
+ ApiResponse[m.AuthorizeOAuthClientResponse],
2178
+ await self._transport.request(
2179
+ "iam",
2180
+ "https://iam.basaltic.sh",
2181
+ _OPS["authorizeOAuthClient"],
2182
+ "json",
2183
+ {},
2184
+ body,
2185
+ None,
2186
+ options,
2187
+ ),
2188
+ )
2189
+
2190
+ async def create_personal_ssh_key(
2191
+ self, body: m.CreatePersonalSSHKeyBody, *, options: RequestOptions | None = None
2192
+ ) -> ApiResponse[m.CreatePersonalSSHKeyResponse]:
2193
+ "Add personal SSH key"
2194
+ return cast(
2195
+ ApiResponse[m.CreatePersonalSSHKeyResponse],
2196
+ await self._transport.request(
2197
+ "iam",
2198
+ "https://iam.basaltic.sh",
2199
+ _OPS["createPersonalSSHKey"],
2200
+ "json",
2201
+ {},
2202
+ body,
2203
+ None,
2204
+ options,
2205
+ ),
2206
+ )
2207
+
2208
+ async def create_policy(
2209
+ self, body: m.CreatePolicyBody, *, options: RequestOptions | None = None
2210
+ ) -> ApiResponse[m.CreatePolicyResponse]:
2211
+ "Create policy"
2212
+ return cast(
2213
+ ApiResponse[m.CreatePolicyResponse],
2214
+ await self._transport.request(
2215
+ "iam",
2216
+ "https://iam.basaltic.sh",
2217
+ _OPS["createPolicy"],
2218
+ "json",
2219
+ {},
2220
+ body,
2221
+ None,
2222
+ options,
2223
+ ),
2224
+ )
2225
+
2226
+ async def create_role(
2227
+ self, body: m.CreateRoleBody, *, options: RequestOptions | None = None
2228
+ ) -> ApiResponse[m.CreateRoleResponse]:
2229
+ "Create role"
2230
+ return cast(
2231
+ ApiResponse[m.CreateRoleResponse],
2232
+ await self._transport.request(
2233
+ "iam",
2234
+ "https://iam.basaltic.sh",
2235
+ _OPS["createRole"],
2236
+ "json",
2237
+ {},
2238
+ body,
2239
+ None,
2240
+ options,
2241
+ ),
2242
+ )
2243
+
2244
+ async def create_service_account(
2245
+ self, body: m.CreateServiceAccountBody, *, options: RequestOptions | None = None
2246
+ ) -> ApiResponse[m.CreateServiceAccountResponse]:
2247
+ "Create service account"
2248
+ return cast(
2249
+ ApiResponse[m.CreateServiceAccountResponse],
2250
+ await self._transport.request(
2251
+ "iam",
2252
+ "https://iam.basaltic.sh",
2253
+ _OPS["createServiceAccount"],
2254
+ "json",
2255
+ {},
2256
+ body,
2257
+ None,
2258
+ options,
2259
+ ),
2260
+ )
2261
+
2262
+ async def create_service_account_credential(
2263
+ self,
2264
+ service_account_id: str,
2265
+ body: m.CreateServiceAccountCredentialBody,
2266
+ *,
2267
+ options: RequestOptions | None = None,
2268
+ ) -> ApiResponse[m.CreateServiceAccountCredentialResponse]:
2269
+ "Create credential"
2270
+ return cast(
2271
+ ApiResponse[m.CreateServiceAccountCredentialResponse],
2272
+ await self._transport.request(
2273
+ "iam",
2274
+ "https://iam.basaltic.sh",
2275
+ _OPS["createServiceAccountCredential"],
2276
+ "json",
2277
+ {"service_account_id": service_account_id},
2278
+ body,
2279
+ None,
2280
+ options,
2281
+ ),
2282
+ )
2283
+
2284
+ async def create_service_account_ssh_key(
2285
+ self,
2286
+ service_account_id: str,
2287
+ body: m.CreateServiceAccountSSHKeyBody,
2288
+ *,
2289
+ options: RequestOptions | None = None,
2290
+ ) -> ApiResponse[m.CreateServiceAccountSSHKeyResponse]:
2291
+ "Add service-account SSH key"
2292
+ return cast(
2293
+ ApiResponse[m.CreateServiceAccountSSHKeyResponse],
2294
+ await self._transport.request(
2295
+ "iam",
2296
+ "https://iam.basaltic.sh",
2297
+ _OPS["createServiceAccountSSHKey"],
2298
+ "json",
2299
+ {"service_account_id": service_account_id},
2300
+ body,
2301
+ None,
2302
+ options,
2303
+ ),
2304
+ )
2305
+
2306
+ async def delete_personal_ssh_key(
2307
+ self, ssh_key_id: str, *, options: RequestOptions | None = None
2308
+ ) -> None:
2309
+ "Revoke personal SSH key"
2310
+ return cast(
2311
+ None,
2312
+ await self._transport.request(
2313
+ "iam",
2314
+ "https://iam.basaltic.sh",
2315
+ _OPS["deletePersonalSSHKey"],
2316
+ "discard",
2317
+ {"ssh_key_id": ssh_key_id},
2318
+ UNSET,
2319
+ None,
2320
+ options,
2321
+ ),
2322
+ )
2323
+
2324
+ async def delete_policy(self, policy_id: str, *, options: RequestOptions | None = None) -> None:
2325
+ "Delete policy"
2326
+ return cast(
2327
+ None,
2328
+ await self._transport.request(
2329
+ "iam",
2330
+ "https://iam.basaltic.sh",
2331
+ _OPS["deletePolicy"],
2332
+ "discard",
2333
+ {"policy_id": policy_id},
2334
+ UNSET,
2335
+ None,
2336
+ options,
2337
+ ),
2338
+ )
2339
+
2340
+ async def delete_role(self, role_id: str, *, options: RequestOptions | None = None) -> None:
2341
+ "Delete role"
2342
+ return cast(
2343
+ None,
2344
+ await self._transport.request(
2345
+ "iam",
2346
+ "https://iam.basaltic.sh",
2347
+ _OPS["deleteRole"],
2348
+ "discard",
2349
+ {"role_id": role_id},
2350
+ UNSET,
2351
+ None,
2352
+ options,
2353
+ ),
2354
+ )
2355
+
2356
+ async def delete_role_inline_policy(
2357
+ self, role_id: str, policy_name: str, *, options: RequestOptions | None = None
2358
+ ) -> None:
2359
+ "Delete a role's inline policy by name"
2360
+ return cast(
2361
+ None,
2362
+ await self._transport.request(
2363
+ "iam",
2364
+ "https://iam.basaltic.sh",
2365
+ _OPS["deleteRoleInlinePolicy"],
2366
+ "discard",
2367
+ {"role_id": role_id, "policy_name": policy_name},
2368
+ UNSET,
2369
+ None,
2370
+ options,
2371
+ ),
2372
+ )
2373
+
2374
+ async def delete_service_account(
2375
+ self, service_account_id: str, *, options: RequestOptions | None = None
2376
+ ) -> None:
2377
+ "Delete service account"
2378
+ return cast(
2379
+ None,
2380
+ await self._transport.request(
2381
+ "iam",
2382
+ "https://iam.basaltic.sh",
2383
+ _OPS["deleteServiceAccount"],
2384
+ "discard",
2385
+ {"service_account_id": service_account_id},
2386
+ UNSET,
2387
+ None,
2388
+ options,
2389
+ ),
2390
+ )
2391
+
2392
+ async def delete_service_account_credential(
2393
+ self, service_account_id: str, credential_id: str, *, options: RequestOptions | None = None
2394
+ ) -> None:
2395
+ "Delete credential"
2396
+ return cast(
2397
+ None,
2398
+ await self._transport.request(
2399
+ "iam",
2400
+ "https://iam.basaltic.sh",
2401
+ _OPS["deleteServiceAccountCredential"],
2402
+ "discard",
2403
+ {"service_account_id": service_account_id, "credential_id": credential_id},
2404
+ UNSET,
2405
+ None,
2406
+ options,
2407
+ ),
2408
+ )
2409
+
2410
+ async def delete_service_account_inline_policy(
2411
+ self, service_account_id: str, policy_name: str, *, options: RequestOptions | None = None
2412
+ ) -> None:
2413
+ "Delete a service account's inline policy by name"
2414
+ return cast(
2415
+ None,
2416
+ await self._transport.request(
2417
+ "iam",
2418
+ "https://iam.basaltic.sh",
2419
+ _OPS["deleteServiceAccountInlinePolicy"],
2420
+ "discard",
2421
+ {"service_account_id": service_account_id, "policy_name": policy_name},
2422
+ UNSET,
2423
+ None,
2424
+ options,
2425
+ ),
2426
+ )
2427
+
2428
+ async def delete_service_account_ssh_key(
2429
+ self, service_account_id: str, ssh_key_id: str, *, options: RequestOptions | None = None
2430
+ ) -> None:
2431
+ "Revoke service-account SSH key"
2432
+ return cast(
2433
+ None,
2434
+ await self._transport.request(
2435
+ "iam",
2436
+ "https://iam.basaltic.sh",
2437
+ _OPS["deleteServiceAccountSSHKey"],
2438
+ "discard",
2439
+ {"service_account_id": service_account_id, "ssh_key_id": ssh_key_id},
2440
+ UNSET,
2441
+ None,
2442
+ options,
2443
+ ),
2444
+ )
2445
+
2446
+ async def detach_role_policy(
2447
+ self, role_id: str, policy_id: str, *, options: RequestOptions | None = None
2448
+ ) -> None:
2449
+ "Detach policy from role"
2450
+ return cast(
2451
+ None,
2452
+ await self._transport.request(
2453
+ "iam",
2454
+ "https://iam.basaltic.sh",
2455
+ _OPS["detachRolePolicy"],
2456
+ "discard",
2457
+ {"role_id": role_id, "policy_id": policy_id},
2458
+ UNSET,
2459
+ None,
2460
+ options,
2461
+ ),
2462
+ )
2463
+
2464
+ async def detach_service_account_policy(
2465
+ self, service_account_id: str, policy_id: str, *, options: RequestOptions | None = None
2466
+ ) -> None:
2467
+ "Detach policy from service account"
2468
+ return cast(
2469
+ None,
2470
+ await self._transport.request(
2471
+ "iam",
2472
+ "https://iam.basaltic.sh",
2473
+ _OPS["detachServiceAccountPolicy"],
2474
+ "discard",
2475
+ {"service_account_id": service_account_id, "policy_id": policy_id},
2476
+ UNSET,
2477
+ None,
2478
+ options,
2479
+ ),
2480
+ )
2481
+
2482
+ async def get_oauth_token(
2483
+ self, body: m.GetOAuthTokenBody, *, options: RequestOptions | None = None
2484
+ ) -> ApiResponse[m.GetOAuthTokenResponse]:
2485
+ "Exchange an access key for a bearer token"
2486
+ return cast(
2487
+ ApiResponse[m.GetOAuthTokenResponse],
2488
+ await self._transport.request(
2489
+ "iam",
2490
+ "https://iam.basaltic.sh",
2491
+ _OPS["getOAuthToken"],
2492
+ "json",
2493
+ {},
2494
+ body,
2495
+ None,
2496
+ options,
2497
+ ),
2498
+ )
2499
+
2500
+ async def get_personal_linux_identity(
2501
+ self, *, options: RequestOptions | None = None
2502
+ ) -> ApiResponse[m.GetPersonalLinuxIdentityResponse]:
2503
+ "Get personal Linux identity"
2504
+ return cast(
2505
+ ApiResponse[m.GetPersonalLinuxIdentityResponse],
2506
+ await self._transport.request(
2507
+ "iam",
2508
+ "https://iam.basaltic.sh",
2509
+ _OPS["getPersonalLinuxIdentity"],
2510
+ "json",
2511
+ {},
2512
+ UNSET,
2513
+ None,
2514
+ options,
2515
+ ),
2516
+ )
2517
+
2518
+ async def get_policy(
2519
+ self, policy_id: str, *, options: RequestOptions | None = None
2520
+ ) -> ApiResponse[m.GetPolicyResponse]:
2521
+ "Get policy"
2522
+ return cast(
2523
+ ApiResponse[m.GetPolicyResponse],
2524
+ await self._transport.request(
2525
+ "iam",
2526
+ "https://iam.basaltic.sh",
2527
+ _OPS["getPolicy"],
2528
+ "json",
2529
+ {"policy_id": policy_id},
2530
+ UNSET,
2531
+ None,
2532
+ options,
2533
+ ),
2534
+ )
2535
+
2536
+ async def get_policy_by_reference(
2537
+ self,
2538
+ reference: str,
2539
+ *,
2540
+ scope: m.GetPolicyScope | None = None,
2541
+ options: RequestOptions | None = None,
2542
+ ) -> ApiResponse[m.GetPolicyResource]:
2543
+ return cast(
2544
+ ApiResponse[m.GetPolicyResource],
2545
+ await aresolve_reference(
2546
+ reference,
2547
+ lambda id: self.get_policy(id, options=options),
2548
+ lambda match: self.list_policies(
2549
+ query=cast(
2550
+ m.ListPoliciesQuery, {**reference_scope(scope), **match, "limit": 2}
2551
+ ),
2552
+ options=options,
2553
+ ),
2554
+ True,
2555
+ "policy",
2556
+ ),
2557
+ )
2558
+
2559
+ async def get_role(
2560
+ self, role_id: str, *, options: RequestOptions | None = None
2561
+ ) -> ApiResponse[m.GetRoleResponse]:
2562
+ "Get role"
2563
+ return cast(
2564
+ ApiResponse[m.GetRoleResponse],
2565
+ await self._transport.request(
2566
+ "iam",
2567
+ "https://iam.basaltic.sh",
2568
+ _OPS["getRole"],
2569
+ "json",
2570
+ {"role_id": role_id},
2571
+ UNSET,
2572
+ None,
2573
+ options,
2574
+ ),
2575
+ )
2576
+
2577
+ async def get_role_by_reference(
2578
+ self,
2579
+ reference: str,
2580
+ *,
2581
+ scope: m.GetRoleScope | None = None,
2582
+ options: RequestOptions | None = None,
2583
+ ) -> ApiResponse[m.GetRoleResource]:
2584
+ return cast(
2585
+ ApiResponse[m.GetRoleResource],
2586
+ await aresolve_reference(
2587
+ reference,
2588
+ lambda id: self.get_role(id, options=options),
2589
+ lambda match: self.list_roles(
2590
+ query=cast(m.ListRolesQuery, {**reference_scope(scope), **match, "limit": 2}),
2591
+ options=options,
2592
+ ),
2593
+ True,
2594
+ "role",
2595
+ ),
2596
+ )
2597
+
2598
+ async def get_role_inline_policy(
2599
+ self, role_id: str, policy_name: str, *, options: RequestOptions | None = None
2600
+ ) -> ApiResponse[m.GetRoleInlinePolicyResponse]:
2601
+ "Get a role's inline policy by name"
2602
+ return cast(
2603
+ ApiResponse[m.GetRoleInlinePolicyResponse],
2604
+ await self._transport.request(
2605
+ "iam",
2606
+ "https://iam.basaltic.sh",
2607
+ _OPS["getRoleInlinePolicy"],
2608
+ "json",
2609
+ {"role_id": role_id, "policy_name": policy_name},
2610
+ UNSET,
2611
+ None,
2612
+ options,
2613
+ ),
2614
+ )
2615
+
2616
+ async def get_role_inline_policy_by_reference(
2617
+ self,
2618
+ role_id: str,
2619
+ reference: str,
2620
+ *,
2621
+ scope: m.GetRoleInlinePolicyScope | None = None,
2622
+ options: RequestOptions | None = None,
2623
+ ) -> ApiResponse[m.GetRoleInlinePolicyResource]:
2624
+ return cast(
2625
+ ApiResponse[m.GetRoleInlinePolicyResource],
2626
+ await aresolve_reference(
2627
+ reference,
2628
+ lambda id: self.get_role_inline_policy(role_id, id, options=options),
2629
+ lambda match: self.list_role_inline_policies(
2630
+ role_id,
2631
+ query=cast(m.ListRoleInlinePoliciesQuery, {**reference_scope(scope), **match}),
2632
+ options=options,
2633
+ ),
2634
+ True,
2635
+ "inline_policy",
2636
+ ),
2637
+ )
2638
+
2639
+ async def get_role_permission_boundary(
2640
+ self, role_id: str, *, options: RequestOptions | None = None
2641
+ ) -> ApiResponse[m.GetRolePermissionBoundaryResponse]:
2642
+ "Get a role's permission boundary"
2643
+ return cast(
2644
+ ApiResponse[m.GetRolePermissionBoundaryResponse],
2645
+ await self._transport.request(
2646
+ "iam",
2647
+ "https://iam.basaltic.sh",
2648
+ _OPS["getRolePermissionBoundary"],
2649
+ "json",
2650
+ {"role_id": role_id},
2651
+ UNSET,
2652
+ None,
2653
+ options,
2654
+ ),
2655
+ )
2656
+
2657
+ async def get_sts_session(
2658
+ self, session_id: str, *, options: RequestOptions | None = None
2659
+ ) -> ApiResponse[m.GetSTSSessionResponse]:
2660
+ "Get STS session"
2661
+ return cast(
2662
+ ApiResponse[m.GetSTSSessionResponse],
2663
+ await self._transport.request(
2664
+ "iam",
2665
+ "https://iam.basaltic.sh",
2666
+ _OPS["getSTSSession"],
2667
+ "json",
2668
+ {"session_id": session_id},
2669
+ UNSET,
2670
+ None,
2671
+ options,
2672
+ ),
2673
+ )
2674
+
2675
+ async def get_sts_session_by_reference(
2676
+ self,
2677
+ reference: str,
2678
+ *,
2679
+ scope: m.GetSTSSessionScope | None = None,
2680
+ options: RequestOptions | None = None,
2681
+ ) -> ApiResponse[m.GetSTSSessionResource]:
2682
+ return cast(
2683
+ ApiResponse[m.GetSTSSessionResource],
2684
+ await aresolve_reference(
2685
+ reference,
2686
+ lambda id: self.get_sts_session(id, options=options),
2687
+ lambda match: self.list_sts_sessions(
2688
+ query=cast(
2689
+ m.ListSTSSessionsQuery, {**reference_scope(scope), **match, "limit": 2}
2690
+ ),
2691
+ options=options,
2692
+ ),
2693
+ True,
2694
+ "sts_session",
2695
+ ),
2696
+ )
2697
+
2698
+ async def get_service_account(
2699
+ self, service_account_id: str, *, options: RequestOptions | None = None
2700
+ ) -> ApiResponse[m.GetServiceAccountResponse]:
2701
+ "Get service account"
2702
+ return cast(
2703
+ ApiResponse[m.GetServiceAccountResponse],
2704
+ await self._transport.request(
2705
+ "iam",
2706
+ "https://iam.basaltic.sh",
2707
+ _OPS["getServiceAccount"],
2708
+ "json",
2709
+ {"service_account_id": service_account_id},
2710
+ UNSET,
2711
+ None,
2712
+ options,
2713
+ ),
2714
+ )
2715
+
2716
+ async def get_service_account_by_reference(
2717
+ self,
2718
+ reference: str,
2719
+ *,
2720
+ scope: m.GetServiceAccountScope | None = None,
2721
+ options: RequestOptions | None = None,
2722
+ ) -> ApiResponse[m.GetServiceAccountResource]:
2723
+ return cast(
2724
+ ApiResponse[m.GetServiceAccountResource],
2725
+ await aresolve_reference(
2726
+ reference,
2727
+ lambda id: self.get_service_account(id, options=options),
2728
+ lambda match: self.list_service_accounts(
2729
+ query=cast(
2730
+ m.ListServiceAccountsQuery, {**reference_scope(scope), **match, "limit": 2}
2731
+ ),
2732
+ options=options,
2733
+ ),
2734
+ True,
2735
+ "service_account",
2736
+ ),
2737
+ )
2738
+
2739
+ async def get_service_account_inline_policy(
2740
+ self, service_account_id: str, policy_name: str, *, options: RequestOptions | None = None
2741
+ ) -> ApiResponse[m.GetServiceAccountInlinePolicyResponse]:
2742
+ "Get a service account's inline policy by name"
2743
+ return cast(
2744
+ ApiResponse[m.GetServiceAccountInlinePolicyResponse],
2745
+ await self._transport.request(
2746
+ "iam",
2747
+ "https://iam.basaltic.sh",
2748
+ _OPS["getServiceAccountInlinePolicy"],
2749
+ "json",
2750
+ {"service_account_id": service_account_id, "policy_name": policy_name},
2751
+ UNSET,
2752
+ None,
2753
+ options,
2754
+ ),
2755
+ )
2756
+
2757
+ async def get_service_account_inline_policy_by_reference(
2758
+ self,
2759
+ service_account_id: str,
2760
+ reference: str,
2761
+ *,
2762
+ scope: m.GetServiceAccountInlinePolicyScope | None = None,
2763
+ options: RequestOptions | None = None,
2764
+ ) -> ApiResponse[m.GetServiceAccountInlinePolicyResource]:
2765
+ return cast(
2766
+ ApiResponse[m.GetServiceAccountInlinePolicyResource],
2767
+ await aresolve_reference(
2768
+ reference,
2769
+ lambda id: self.get_service_account_inline_policy(
2770
+ service_account_id, id, options=options
2771
+ ),
2772
+ lambda match: self.list_service_account_inline_policies(
2773
+ service_account_id,
2774
+ query=cast(
2775
+ m.ListServiceAccountInlinePoliciesQuery, {**reference_scope(scope), **match}
2776
+ ),
2777
+ options=options,
2778
+ ),
2779
+ True,
2780
+ "inline_policy",
2781
+ ),
2782
+ )
2783
+
2784
+ async def get_service_account_linux_identity(
2785
+ self, service_account_id: str, *, options: RequestOptions | None = None
2786
+ ) -> ApiResponse[m.GetServiceAccountLinuxIdentityResponse]:
2787
+ "Get serviceaccount Linux identity"
2788
+ return cast(
2789
+ ApiResponse[m.GetServiceAccountLinuxIdentityResponse],
2790
+ await self._transport.request(
2791
+ "iam",
2792
+ "https://iam.basaltic.sh",
2793
+ _OPS["getServiceAccountLinuxIdentity"],
2794
+ "json",
2795
+ {"service_account_id": service_account_id},
2796
+ UNSET,
2797
+ None,
2798
+ options,
2799
+ ),
2800
+ )
2801
+
2802
+ async def get_service_account_permission_boundary(
2803
+ self, service_account_id: str, *, options: RequestOptions | None = None
2804
+ ) -> ApiResponse[m.GetServiceAccountPermissionBoundaryResponse]:
2805
+ "Get a service account's permission boundary"
2806
+ return cast(
2807
+ ApiResponse[m.GetServiceAccountPermissionBoundaryResponse],
2808
+ await self._transport.request(
2809
+ "iam",
2810
+ "https://iam.basaltic.sh",
2811
+ _OPS["getServiceAccountPermissionBoundary"],
2812
+ "json",
2813
+ {"service_account_id": service_account_id},
2814
+ UNSET,
2815
+ None,
2816
+ options,
2817
+ ),
2818
+ )
2819
+
2820
+ async def list_personal_ssh_keys(
2821
+ self, *, options: RequestOptions | None = None
2822
+ ) -> Page[m.ListPersonalSSHKeysResponse, m.ListPersonalSSHKeysItem]:
2823
+ "List personal SSH keys"
2824
+ return cast(
2825
+ Page[m.ListPersonalSSHKeysResponse, m.ListPersonalSSHKeysItem],
2826
+ await self._transport.request(
2827
+ "iam",
2828
+ "https://iam.basaltic.sh",
2829
+ _OPS["listPersonalSSHKeys"],
2830
+ "page",
2831
+ {},
2832
+ UNSET,
2833
+ None,
2834
+ options,
2835
+ ),
2836
+ )
2837
+
2838
+ async def list_policies(
2839
+ self, *, query: m.ListPoliciesQuery | None = None, options: RequestOptions | None = None
2840
+ ) -> Page[m.ListPoliciesResponse, m.ListPoliciesItem]:
2841
+ "List policies"
2842
+ return cast(
2843
+ Page[m.ListPoliciesResponse, m.ListPoliciesItem],
2844
+ await self._transport.request(
2845
+ "iam",
2846
+ "https://iam.basaltic.sh",
2847
+ _OPS["listPolicies"],
2848
+ "page",
2849
+ {},
2850
+ UNSET,
2851
+ query,
2852
+ options,
2853
+ ),
2854
+ )
2855
+
2856
+ def list_policies_all(
2857
+ self, *, query: m.ListPoliciesQuery | None = None, options: RequestOptions | None = None
2858
+ ) -> AsyncIterator[m.ListPoliciesItem]:
2859
+ return aiterate_pages(
2860
+ lambda marker: self.list_policies(
2861
+ query=cast(m.ListPoliciesQuery, {**(query or {}), "marker": marker}),
2862
+ options=options,
2863
+ ),
2864
+ (query or {}).get("marker", ""),
2865
+ )
2866
+
2867
+ async def list_policy_roles(
2868
+ self,
2869
+ policy_id: str,
2870
+ *,
2871
+ query: m.ListPolicyRolesQuery | None = None,
2872
+ options: RequestOptions | None = None,
2873
+ ) -> Page[m.ListPolicyRolesResponse, m.ListPolicyRolesItem]:
2874
+ "List roles with policy"
2875
+ return cast(
2876
+ Page[m.ListPolicyRolesResponse, m.ListPolicyRolesItem],
2877
+ await self._transport.request(
2878
+ "iam",
2879
+ "https://iam.basaltic.sh",
2880
+ _OPS["listPolicyRoles"],
2881
+ "page",
2882
+ {"policy_id": policy_id},
2883
+ UNSET,
2884
+ query,
2885
+ options,
2886
+ ),
2887
+ )
2888
+
2889
+ def list_policy_roles_all(
2890
+ self,
2891
+ policy_id: str,
2892
+ *,
2893
+ query: m.ListPolicyRolesQuery | None = None,
2894
+ options: RequestOptions | None = None,
2895
+ ) -> AsyncIterator[m.ListPolicyRolesItem]:
2896
+ return aiterate_pages(
2897
+ lambda marker: self.list_policy_roles(
2898
+ policy_id,
2899
+ query=cast(m.ListPolicyRolesQuery, {**(query or {}), "marker": marker}),
2900
+ options=options,
2901
+ ),
2902
+ (query or {}).get("marker", ""),
2903
+ )
2904
+
2905
+ async def list_policy_service_accounts(
2906
+ self,
2907
+ policy_id: str,
2908
+ *,
2909
+ query: m.ListPolicyServiceAccountsQuery | None = None,
2910
+ options: RequestOptions | None = None,
2911
+ ) -> Page[m.ListPolicyServiceAccountsResponse, m.ListPolicyServiceAccountsItem]:
2912
+ "List service accounts with policy"
2913
+ return cast(
2914
+ Page[m.ListPolicyServiceAccountsResponse, m.ListPolicyServiceAccountsItem],
2915
+ await self._transport.request(
2916
+ "iam",
2917
+ "https://iam.basaltic.sh",
2918
+ _OPS["listPolicyServiceAccounts"],
2919
+ "page",
2920
+ {"policy_id": policy_id},
2921
+ UNSET,
2922
+ query,
2923
+ options,
2924
+ ),
2925
+ )
2926
+
2927
+ def list_policy_service_accounts_all(
2928
+ self,
2929
+ policy_id: str,
2930
+ *,
2931
+ query: m.ListPolicyServiceAccountsQuery | None = None,
2932
+ options: RequestOptions | None = None,
2933
+ ) -> AsyncIterator[m.ListPolicyServiceAccountsItem]:
2934
+ return aiterate_pages(
2935
+ lambda marker: self.list_policy_service_accounts(
2936
+ policy_id,
2937
+ query=cast(m.ListPolicyServiceAccountsQuery, {**(query or {}), "marker": marker}),
2938
+ options=options,
2939
+ ),
2940
+ (query or {}).get("marker", ""),
2941
+ )
2942
+
2943
+ async def list_regions(
2944
+ self, *, query: m.ListRegionsQuery | None = None, options: RequestOptions | None = None
2945
+ ) -> Page[m.ListRegionsResponse, m.ListRegionsItem]:
2946
+ "List regions (legacy IAM)"
2947
+ return cast(
2948
+ Page[m.ListRegionsResponse, m.ListRegionsItem],
2949
+ await self._transport.request(
2950
+ "iam",
2951
+ "https://iam.basaltic.sh",
2952
+ _OPS["listRegions"],
2953
+ "page",
2954
+ {},
2955
+ UNSET,
2956
+ query,
2957
+ options,
2958
+ ),
2959
+ )
2960
+
2961
+ async def list_role_inline_policies(
2962
+ self,
2963
+ role_id: str,
2964
+ *,
2965
+ query: m.ListRoleInlinePoliciesQuery | None = None,
2966
+ options: RequestOptions | None = None,
2967
+ ) -> Page[m.ListRoleInlinePoliciesResponse, m.ListRoleInlinePoliciesItem]:
2968
+ "List a role's inline policies"
2969
+ return cast(
2970
+ Page[m.ListRoleInlinePoliciesResponse, m.ListRoleInlinePoliciesItem],
2971
+ await self._transport.request(
2972
+ "iam",
2973
+ "https://iam.basaltic.sh",
2974
+ _OPS["listRoleInlinePolicies"],
2975
+ "page",
2976
+ {"role_id": role_id},
2977
+ UNSET,
2978
+ query,
2979
+ options,
2980
+ ),
2981
+ )
2982
+
2983
+ async def list_role_policies(
2984
+ self,
2985
+ role_id: str,
2986
+ *,
2987
+ query: m.ListRolePoliciesQuery | None = None,
2988
+ options: RequestOptions | None = None,
2989
+ ) -> Page[m.ListRolePoliciesResponse, m.ListRolePoliciesItem]:
2990
+ "List role policies"
2991
+ return cast(
2992
+ Page[m.ListRolePoliciesResponse, m.ListRolePoliciesItem],
2993
+ await self._transport.request(
2994
+ "iam",
2995
+ "https://iam.basaltic.sh",
2996
+ _OPS["listRolePolicies"],
2997
+ "page",
2998
+ {"role_id": role_id},
2999
+ UNSET,
3000
+ query,
3001
+ options,
3002
+ ),
3003
+ )
3004
+
3005
+ async def list_roles(
3006
+ self, *, query: m.ListRolesQuery | None = None, options: RequestOptions | None = None
3007
+ ) -> Page[m.ListRolesResponse, m.ListRolesItem]:
3008
+ "List roles"
3009
+ return cast(
3010
+ Page[m.ListRolesResponse, m.ListRolesItem],
3011
+ await self._transport.request(
3012
+ "iam",
3013
+ "https://iam.basaltic.sh",
3014
+ _OPS["listRoles"],
3015
+ "page",
3016
+ {},
3017
+ UNSET,
3018
+ query,
3019
+ options,
3020
+ ),
3021
+ )
3022
+
3023
+ def list_roles_all(
3024
+ self, *, query: m.ListRolesQuery | None = None, options: RequestOptions | None = None
3025
+ ) -> AsyncIterator[m.ListRolesItem]:
3026
+ return aiterate_pages(
3027
+ lambda marker: self.list_roles(
3028
+ query=cast(m.ListRolesQuery, {**(query or {}), "marker": marker}), options=options
3029
+ ),
3030
+ (query or {}).get("marker", ""),
3031
+ )
3032
+
3033
+ async def list_sts_sessions(
3034
+ self, *, query: m.ListSTSSessionsQuery | None = None, options: RequestOptions | None = None
3035
+ ) -> Page[m.ListSTSSessionsResponse, m.ListSTSSessionsItem]:
3036
+ "List STS sessions"
3037
+ return cast(
3038
+ Page[m.ListSTSSessionsResponse, m.ListSTSSessionsItem],
3039
+ await self._transport.request(
3040
+ "iam",
3041
+ "https://iam.basaltic.sh",
3042
+ _OPS["listSTSSessions"],
3043
+ "page",
3044
+ {},
3045
+ UNSET,
3046
+ query,
3047
+ options,
3048
+ ),
3049
+ )
3050
+
3051
+ def list_sts_sessions_all(
3052
+ self, *, query: m.ListSTSSessionsQuery | None = None, options: RequestOptions | None = None
3053
+ ) -> AsyncIterator[m.ListSTSSessionsItem]:
3054
+ return aiterate_pages(
3055
+ lambda marker: self.list_sts_sessions(
3056
+ query=cast(m.ListSTSSessionsQuery, {**(query or {}), "marker": marker}),
3057
+ options=options,
3058
+ ),
3059
+ (query or {}).get("marker", ""),
3060
+ )
3061
+
3062
+ async def list_service_account_credentials(
3063
+ self,
3064
+ service_account_id: str,
3065
+ *,
3066
+ query: m.ListServiceAccountCredentialsQuery | None = None,
3067
+ options: RequestOptions | None = None,
3068
+ ) -> Page[m.ListServiceAccountCredentialsResponse, m.ListServiceAccountCredentialsItem]:
3069
+ "List credentials"
3070
+ return cast(
3071
+ Page[m.ListServiceAccountCredentialsResponse, m.ListServiceAccountCredentialsItem],
3072
+ await self._transport.request(
3073
+ "iam",
3074
+ "https://iam.basaltic.sh",
3075
+ _OPS["listServiceAccountCredentials"],
3076
+ "page",
3077
+ {"service_account_id": service_account_id},
3078
+ UNSET,
3079
+ query,
3080
+ options,
3081
+ ),
3082
+ )
3083
+
3084
+ async def list_service_account_inline_policies(
3085
+ self,
3086
+ service_account_id: str,
3087
+ *,
3088
+ query: m.ListServiceAccountInlinePoliciesQuery | None = None,
3089
+ options: RequestOptions | None = None,
3090
+ ) -> Page[m.ListServiceAccountInlinePoliciesResponse, m.ListServiceAccountInlinePoliciesItem]:
3091
+ "List a service account's inline policies"
3092
+ return cast(
3093
+ Page[
3094
+ m.ListServiceAccountInlinePoliciesResponse, m.ListServiceAccountInlinePoliciesItem
3095
+ ],
3096
+ await self._transport.request(
3097
+ "iam",
3098
+ "https://iam.basaltic.sh",
3099
+ _OPS["listServiceAccountInlinePolicies"],
3100
+ "page",
3101
+ {"service_account_id": service_account_id},
3102
+ UNSET,
3103
+ query,
3104
+ options,
3105
+ ),
3106
+ )
3107
+
3108
+ async def list_service_account_policies(
3109
+ self,
3110
+ service_account_id: str,
3111
+ *,
3112
+ query: m.ListServiceAccountPoliciesQuery | None = None,
3113
+ options: RequestOptions | None = None,
3114
+ ) -> Page[m.ListServiceAccountPoliciesResponse, m.ListServiceAccountPoliciesItem]:
3115
+ "List service account policies"
3116
+ return cast(
3117
+ Page[m.ListServiceAccountPoliciesResponse, m.ListServiceAccountPoliciesItem],
3118
+ await self._transport.request(
3119
+ "iam",
3120
+ "https://iam.basaltic.sh",
3121
+ _OPS["listServiceAccountPolicies"],
3122
+ "page",
3123
+ {"service_account_id": service_account_id},
3124
+ UNSET,
3125
+ query,
3126
+ options,
3127
+ ),
3128
+ )
3129
+
3130
+ async def list_service_account_ssh_keys(
3131
+ self, service_account_id: str, *, options: RequestOptions | None = None
3132
+ ) -> Page[m.ListServiceAccountSSHKeysResponse, m.ListServiceAccountSSHKeysItem]:
3133
+ "List service-account SSH keys"
3134
+ return cast(
3135
+ Page[m.ListServiceAccountSSHKeysResponse, m.ListServiceAccountSSHKeysItem],
3136
+ await self._transport.request(
3137
+ "iam",
3138
+ "https://iam.basaltic.sh",
3139
+ _OPS["listServiceAccountSSHKeys"],
3140
+ "page",
3141
+ {"service_account_id": service_account_id},
3142
+ UNSET,
3143
+ None,
3144
+ options,
3145
+ ),
3146
+ )
3147
+
3148
+ async def list_service_accounts(
3149
+ self,
3150
+ *,
3151
+ query: m.ListServiceAccountsQuery | None = None,
3152
+ options: RequestOptions | None = None,
3153
+ ) -> Page[m.ListServiceAccountsResponse, m.ListServiceAccountsItem]:
3154
+ "List service accounts"
3155
+ return cast(
3156
+ Page[m.ListServiceAccountsResponse, m.ListServiceAccountsItem],
3157
+ await self._transport.request(
3158
+ "iam",
3159
+ "https://iam.basaltic.sh",
3160
+ _OPS["listServiceAccounts"],
3161
+ "page",
3162
+ {},
3163
+ UNSET,
3164
+ query,
3165
+ options,
3166
+ ),
3167
+ )
3168
+
3169
+ def list_service_accounts_all(
3170
+ self,
3171
+ *,
3172
+ query: m.ListServiceAccountsQuery | None = None,
3173
+ options: RequestOptions | None = None,
3174
+ ) -> AsyncIterator[m.ListServiceAccountsItem]:
3175
+ return aiterate_pages(
3176
+ lambda marker: self.list_service_accounts(
3177
+ query=cast(m.ListServiceAccountsQuery, {**(query or {}), "marker": marker}),
3178
+ options=options,
3179
+ ),
3180
+ (query or {}).get("marker", ""),
3181
+ )
3182
+
3183
+ async def put_role_inline_policy(
3184
+ self,
3185
+ role_id: str,
3186
+ policy_name: str,
3187
+ body: m.PutRoleInlinePolicyBody,
3188
+ *,
3189
+ options: RequestOptions | None = None,
3190
+ ) -> ApiResponse[m.PutRoleInlinePolicyResponse]:
3191
+ "Create or replace a role's inline policy"
3192
+ return cast(
3193
+ ApiResponse[m.PutRoleInlinePolicyResponse],
3194
+ await self._transport.request(
3195
+ "iam",
3196
+ "https://iam.basaltic.sh",
3197
+ _OPS["putRoleInlinePolicy"],
3198
+ "json",
3199
+ {"role_id": role_id, "policy_name": policy_name},
3200
+ body,
3201
+ None,
3202
+ options,
3203
+ ),
3204
+ )
3205
+
3206
+ async def put_service_account_inline_policy(
3207
+ self,
3208
+ service_account_id: str,
3209
+ policy_name: str,
3210
+ body: m.PutServiceAccountInlinePolicyBody,
3211
+ *,
3212
+ options: RequestOptions | None = None,
3213
+ ) -> ApiResponse[m.PutServiceAccountInlinePolicyResponse]:
3214
+ "Create or replace a service account's inline policy"
3215
+ return cast(
3216
+ ApiResponse[m.PutServiceAccountInlinePolicyResponse],
3217
+ await self._transport.request(
3218
+ "iam",
3219
+ "https://iam.basaltic.sh",
3220
+ _OPS["putServiceAccountInlinePolicy"],
3221
+ "json",
3222
+ {"service_account_id": service_account_id, "policy_name": policy_name},
3223
+ body,
3224
+ None,
3225
+ options,
3226
+ ),
3227
+ )
3228
+
3229
+ async def remove_role_permission_boundary(
3230
+ self, role_id: str, *, options: RequestOptions | None = None
3231
+ ) -> None:
3232
+ "Remove a role's permission boundary"
3233
+ return cast(
3234
+ None,
3235
+ await self._transport.request(
3236
+ "iam",
3237
+ "https://iam.basaltic.sh",
3238
+ _OPS["removeRolePermissionBoundary"],
3239
+ "discard",
3240
+ {"role_id": role_id},
3241
+ UNSET,
3242
+ None,
3243
+ options,
3244
+ ),
3245
+ )
3246
+
3247
+ async def remove_service_account_permission_boundary(
3248
+ self, service_account_id: str, *, options: RequestOptions | None = None
3249
+ ) -> None:
3250
+ "Remove a service account's permission boundary"
3251
+ return cast(
3252
+ None,
3253
+ await self._transport.request(
3254
+ "iam",
3255
+ "https://iam.basaltic.sh",
3256
+ _OPS["removeServiceAccountPermissionBoundary"],
3257
+ "discard",
3258
+ {"service_account_id": service_account_id},
3259
+ UNSET,
3260
+ None,
3261
+ options,
3262
+ ),
3263
+ )
3264
+
3265
+ async def revoke_oauth_token(
3266
+ self, body: m.RevokeOAuthTokenBody, *, options: RequestOptions | None = None
3267
+ ) -> None:
3268
+ "Revoke a bearer token"
3269
+ return cast(
3270
+ None,
3271
+ await self._transport.request(
3272
+ "iam",
3273
+ "https://iam.basaltic.sh",
3274
+ _OPS["revokeOAuthToken"],
3275
+ "discard",
3276
+ {},
3277
+ body,
3278
+ None,
3279
+ options,
3280
+ ),
3281
+ )
3282
+
3283
+ async def revoke_sts_session(
3284
+ self,
3285
+ session_id: str,
3286
+ body: m.RevokeSTSSessionBody | Unset = UNSET,
3287
+ *,
3288
+ options: RequestOptions | None = None,
3289
+ ) -> ApiResponse[m.RevokeSTSSessionResponse]:
3290
+ "Revoke STS session"
3291
+ return cast(
3292
+ ApiResponse[m.RevokeSTSSessionResponse],
3293
+ await self._transport.request(
3294
+ "iam",
3295
+ "https://iam.basaltic.sh",
3296
+ _OPS["revokeSTSSession"],
3297
+ "json",
3298
+ {"session_id": session_id},
3299
+ body,
3300
+ None,
3301
+ options,
3302
+ ),
3303
+ )
3304
+
3305
+ async def set_role_permission_boundary(
3306
+ self,
3307
+ role_id: str,
3308
+ body: m.SetRolePermissionBoundaryBody,
3309
+ *,
3310
+ options: RequestOptions | None = None,
3311
+ ) -> None:
3312
+ "Set a role's permission boundary"
3313
+ return cast(
3314
+ None,
3315
+ await self._transport.request(
3316
+ "iam",
3317
+ "https://iam.basaltic.sh",
3318
+ _OPS["setRolePermissionBoundary"],
3319
+ "discard",
3320
+ {"role_id": role_id},
3321
+ body,
3322
+ None,
3323
+ options,
3324
+ ),
3325
+ )
3326
+
3327
+ async def set_service_account_permission_boundary(
3328
+ self,
3329
+ service_account_id: str,
3330
+ body: m.SetServiceAccountPermissionBoundaryBody,
3331
+ *,
3332
+ options: RequestOptions | None = None,
3333
+ ) -> None:
3334
+ "Set a service account's permission boundary"
3335
+ return cast(
3336
+ None,
3337
+ await self._transport.request(
3338
+ "iam",
3339
+ "https://iam.basaltic.sh",
3340
+ _OPS["setServiceAccountPermissionBoundary"],
3341
+ "discard",
3342
+ {"service_account_id": service_account_id},
3343
+ body,
3344
+ None,
3345
+ options,
3346
+ ),
3347
+ )
3348
+
3349
+ async def update_policy(
3350
+ self, policy_id: str, body: m.UpdatePolicyBody, *, options: RequestOptions | None = None
3351
+ ) -> ApiResponse[m.UpdatePolicyResponse]:
3352
+ "Update policy"
3353
+ return cast(
3354
+ ApiResponse[m.UpdatePolicyResponse],
3355
+ await self._transport.request(
3356
+ "iam",
3357
+ "https://iam.basaltic.sh",
3358
+ _OPS["updatePolicy"],
3359
+ "json",
3360
+ {"policy_id": policy_id},
3361
+ body,
3362
+ None,
3363
+ options,
3364
+ ),
3365
+ )
3366
+
3367
+ async def update_role(
3368
+ self, role_id: str, body: m.UpdateRoleBody, *, options: RequestOptions | None = None
3369
+ ) -> ApiResponse[m.UpdateRoleResponse]:
3370
+ "Update role"
3371
+ return cast(
3372
+ ApiResponse[m.UpdateRoleResponse],
3373
+ await self._transport.request(
3374
+ "iam",
3375
+ "https://iam.basaltic.sh",
3376
+ _OPS["updateRole"],
3377
+ "json",
3378
+ {"role_id": role_id},
3379
+ body,
3380
+ None,
3381
+ options,
3382
+ ),
3383
+ )
3384
+
3385
+ async def update_service_account(
3386
+ self,
3387
+ service_account_id: str,
3388
+ body: m.UpdateServiceAccountBody,
3389
+ *,
3390
+ options: RequestOptions | None = None,
3391
+ ) -> ApiResponse[m.UpdateServiceAccountResponse]:
3392
+ "Update service account"
3393
+ return cast(
3394
+ ApiResponse[m.UpdateServiceAccountResponse],
3395
+ await self._transport.request(
3396
+ "iam",
3397
+ "https://iam.basaltic.sh",
3398
+ _OPS["updateServiceAccount"],
3399
+ "json",
3400
+ {"service_account_id": service_account_id},
3401
+ body,
3402
+ None,
3403
+ options,
3404
+ ),
3405
+ )