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,742 @@
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 kms 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
+ "cancelKeyDeletion": Operation(
24
+ id="cancelKeyDeletion",
25
+ method="POST",
26
+ path="/v1/keys/{key_id}/cancel-deletion",
27
+ authenticated=True,
28
+ requiredQuery=[],
29
+ requiredHeaders=[],
30
+ queryEncoding={},
31
+ bodyRequired=False,
32
+ contentType="",
33
+ accept="application/json",
34
+ ),
35
+ "createKey": Operation(
36
+ id="createKey",
37
+ method="POST",
38
+ path="/v1/keys",
39
+ authenticated=True,
40
+ requiredQuery=[],
41
+ requiredHeaders=[],
42
+ queryEncoding={},
43
+ bodyRequired=True,
44
+ contentType="application/json",
45
+ accept="application/json",
46
+ ),
47
+ "decrypt": Operation(
48
+ id="decrypt",
49
+ method="POST",
50
+ path="/v1/keys/{key_id}/decrypt",
51
+ authenticated=True,
52
+ requiredQuery=[],
53
+ requiredHeaders=[],
54
+ queryEncoding={},
55
+ bodyRequired=True,
56
+ contentType="application/json",
57
+ accept="application/json",
58
+ ),
59
+ "disableKey": Operation(
60
+ id="disableKey",
61
+ method="POST",
62
+ path="/v1/keys/{key_id}/disable",
63
+ authenticated=True,
64
+ requiredQuery=[],
65
+ requiredHeaders=[],
66
+ queryEncoding={},
67
+ bodyRequired=False,
68
+ contentType="",
69
+ accept="application/json",
70
+ ),
71
+ "enableKey": Operation(
72
+ id="enableKey",
73
+ method="POST",
74
+ path="/v1/keys/{key_id}/enable",
75
+ authenticated=True,
76
+ requiredQuery=[],
77
+ requiredHeaders=[],
78
+ queryEncoding={},
79
+ bodyRequired=False,
80
+ contentType="",
81
+ accept="application/json",
82
+ ),
83
+ "encrypt": Operation(
84
+ id="encrypt",
85
+ method="POST",
86
+ path="/v1/keys/{key_id}/encrypt",
87
+ authenticated=True,
88
+ requiredQuery=[],
89
+ requiredHeaders=[],
90
+ queryEncoding={},
91
+ bodyRequired=True,
92
+ contentType="application/json",
93
+ accept="application/json",
94
+ ),
95
+ "generateDataKey": Operation(
96
+ id="generateDataKey",
97
+ method="POST",
98
+ path="/v1/keys/{key_id}/generate-data-key",
99
+ authenticated=True,
100
+ requiredQuery=[],
101
+ requiredHeaders=[],
102
+ queryEncoding={},
103
+ bodyRequired=False,
104
+ contentType="application/json",
105
+ accept="application/json",
106
+ ),
107
+ "getKey": Operation(
108
+ id="getKey",
109
+ method="GET",
110
+ path="/v1/keys/{key_id}",
111
+ authenticated=True,
112
+ requiredQuery=[],
113
+ requiredHeaders=[],
114
+ queryEncoding={},
115
+ bodyRequired=False,
116
+ contentType="",
117
+ accept="application/json",
118
+ ),
119
+ "listKeys": Operation(
120
+ id="listKeys",
121
+ method="GET",
122
+ path="/v1/keys",
123
+ authenticated=True,
124
+ requiredQuery=[],
125
+ requiredHeaders=[],
126
+ queryEncoding={
127
+ "limit": {"style": "form", "explode": True},
128
+ "marker": {"style": "form", "explode": True},
129
+ "state": {"style": "form", "explode": True},
130
+ "name": {"style": "form", "explode": True},
131
+ "crn": {"style": "form", "explode": True},
132
+ },
133
+ bodyRequired=False,
134
+ contentType="",
135
+ accept="application/json",
136
+ itemsKey="keys",
137
+ ),
138
+ "scheduleKeyDeletion": Operation(
139
+ id="scheduleKeyDeletion",
140
+ method="POST",
141
+ path="/v1/keys/{key_id}/schedule-deletion",
142
+ authenticated=True,
143
+ requiredQuery=[],
144
+ requiredHeaders=[],
145
+ queryEncoding={},
146
+ bodyRequired=False,
147
+ contentType="application/json",
148
+ accept="application/json",
149
+ ),
150
+ "sign": Operation(
151
+ id="sign",
152
+ method="POST",
153
+ path="/v1/keys/{key_id}/sign",
154
+ authenticated=True,
155
+ requiredQuery=[],
156
+ requiredHeaders=[],
157
+ queryEncoding={},
158
+ bodyRequired=True,
159
+ contentType="application/json",
160
+ accept="application/json",
161
+ ),
162
+ "updateKey": Operation(
163
+ id="updateKey",
164
+ method="PATCH",
165
+ path="/v1/keys/{key_id}",
166
+ authenticated=True,
167
+ requiredQuery=[],
168
+ requiredHeaders=[],
169
+ queryEncoding={},
170
+ bodyRequired=True,
171
+ contentType="application/json",
172
+ accept="application/json",
173
+ ),
174
+ "verify": Operation(
175
+ id="verify",
176
+ method="POST",
177
+ path="/v1/keys/{key_id}/verify",
178
+ authenticated=True,
179
+ requiredQuery=[],
180
+ requiredHeaders=[],
181
+ queryEncoding={},
182
+ bodyRequired=True,
183
+ contentType="application/json",
184
+ accept="application/json",
185
+ ),
186
+ }
187
+
188
+
189
+ class KmsService:
190
+ def __init__(self, transport: SyncTransport) -> None:
191
+ self._transport = transport
192
+
193
+ def cancel_key_deletion(
194
+ self, key_id: str, *, options: RequestOptions | None = None
195
+ ) -> ApiResponse[m.CancelKeyDeletionResponse]:
196
+ "Cancel a scheduled deletion"
197
+ return cast(
198
+ ApiResponse[m.CancelKeyDeletionResponse],
199
+ self._transport.request(
200
+ "kms",
201
+ "https://kms.{region}.basaltic.sh",
202
+ _OPS["cancelKeyDeletion"],
203
+ "json",
204
+ {"key_id": key_id},
205
+ UNSET,
206
+ None,
207
+ options,
208
+ ),
209
+ )
210
+
211
+ def create_key(
212
+ self, body: m.CreateKeyBody, *, options: RequestOptions | None = None
213
+ ) -> ApiResponse[m.CreateKeyResponse]:
214
+ "Create a KMS key"
215
+ return cast(
216
+ ApiResponse[m.CreateKeyResponse],
217
+ self._transport.request(
218
+ "kms",
219
+ "https://kms.{region}.basaltic.sh",
220
+ _OPS["createKey"],
221
+ "json",
222
+ {},
223
+ body,
224
+ None,
225
+ options,
226
+ ),
227
+ )
228
+
229
+ def decrypt(
230
+ self, key_id: str, body: m.DecryptBody, *, options: RequestOptions | None = None
231
+ ) -> ApiResponse[m.DecryptResponse]:
232
+ "Decrypt a ciphertext"
233
+ return cast(
234
+ ApiResponse[m.DecryptResponse],
235
+ self._transport.request(
236
+ "kms",
237
+ "https://kms.{region}.basaltic.sh",
238
+ _OPS["decrypt"],
239
+ "json",
240
+ {"key_id": key_id},
241
+ body,
242
+ None,
243
+ options,
244
+ ),
245
+ )
246
+
247
+ def disable_key(
248
+ self, key_id: str, *, options: RequestOptions | None = None
249
+ ) -> ApiResponse[m.DisableKeyResponse]:
250
+ "Disable a key"
251
+ return cast(
252
+ ApiResponse[m.DisableKeyResponse],
253
+ self._transport.request(
254
+ "kms",
255
+ "https://kms.{region}.basaltic.sh",
256
+ _OPS["disableKey"],
257
+ "json",
258
+ {"key_id": key_id},
259
+ UNSET,
260
+ None,
261
+ options,
262
+ ),
263
+ )
264
+
265
+ def enable_key(
266
+ self, key_id: str, *, options: RequestOptions | None = None
267
+ ) -> ApiResponse[m.EnableKeyResponse]:
268
+ "Enable a disabled key"
269
+ return cast(
270
+ ApiResponse[m.EnableKeyResponse],
271
+ self._transport.request(
272
+ "kms",
273
+ "https://kms.{region}.basaltic.sh",
274
+ _OPS["enableKey"],
275
+ "json",
276
+ {"key_id": key_id},
277
+ UNSET,
278
+ None,
279
+ options,
280
+ ),
281
+ )
282
+
283
+ def encrypt(
284
+ self, key_id: str, body: m.EncryptBody, *, options: RequestOptions | None = None
285
+ ) -> ApiResponse[m.EncryptResponse]:
286
+ "Encrypt a payload"
287
+ return cast(
288
+ ApiResponse[m.EncryptResponse],
289
+ self._transport.request(
290
+ "kms",
291
+ "https://kms.{region}.basaltic.sh",
292
+ _OPS["encrypt"],
293
+ "json",
294
+ {"key_id": key_id},
295
+ body,
296
+ None,
297
+ options,
298
+ ),
299
+ )
300
+
301
+ def generate_data_key(
302
+ self,
303
+ key_id: str,
304
+ body: m.GenerateDataKeyBody | Unset = UNSET,
305
+ *,
306
+ options: RequestOptions | None = None,
307
+ ) -> ApiResponse[m.GenerateDataKeyResponse]:
308
+ "Generate a fresh data key"
309
+ return cast(
310
+ ApiResponse[m.GenerateDataKeyResponse],
311
+ self._transport.request(
312
+ "kms",
313
+ "https://kms.{region}.basaltic.sh",
314
+ _OPS["generateDataKey"],
315
+ "json",
316
+ {"key_id": key_id},
317
+ body,
318
+ None,
319
+ options,
320
+ ),
321
+ )
322
+
323
+ def get_key(
324
+ self, key_id: str, *, options: RequestOptions | None = None
325
+ ) -> ApiResponse[m.GetKeyResponse]:
326
+ "Get a KMS key"
327
+ return cast(
328
+ ApiResponse[m.GetKeyResponse],
329
+ self._transport.request(
330
+ "kms",
331
+ "https://kms.{region}.basaltic.sh",
332
+ _OPS["getKey"],
333
+ "json",
334
+ {"key_id": key_id},
335
+ UNSET,
336
+ None,
337
+ options,
338
+ ),
339
+ )
340
+
341
+ def get_key_by_reference(
342
+ self,
343
+ reference: str,
344
+ *,
345
+ scope: m.GetKeyScope | None = None,
346
+ options: RequestOptions | None = None,
347
+ ) -> ApiResponse[m.GetKeyResource]:
348
+ return cast(
349
+ ApiResponse[m.GetKeyResource],
350
+ resolve_reference(
351
+ reference,
352
+ lambda id: self.get_key(id, options=options),
353
+ lambda match: self.list_keys(
354
+ query=cast(m.ListKeysQuery, {**reference_scope(scope), **match, "limit": 2}),
355
+ options=options,
356
+ ),
357
+ True,
358
+ "key",
359
+ ),
360
+ )
361
+
362
+ def list_keys(
363
+ self, *, query: m.ListKeysQuery | None = None, options: RequestOptions | None = None
364
+ ) -> Page[m.ListKeysResponse, m.ListKeysItem]:
365
+ "List KMS keys"
366
+ return cast(
367
+ Page[m.ListKeysResponse, m.ListKeysItem],
368
+ self._transport.request(
369
+ "kms",
370
+ "https://kms.{region}.basaltic.sh",
371
+ _OPS["listKeys"],
372
+ "page",
373
+ {},
374
+ UNSET,
375
+ query,
376
+ options,
377
+ ),
378
+ )
379
+
380
+ def list_keys_all(
381
+ self, *, query: m.ListKeysQuery | None = None, options: RequestOptions | None = None
382
+ ) -> Iterator[m.ListKeysItem]:
383
+ return iterate_pages(
384
+ lambda marker: self.list_keys(
385
+ query=cast(m.ListKeysQuery, {**(query or {}), "marker": marker}), options=options
386
+ ),
387
+ (query or {}).get("marker", ""),
388
+ )
389
+
390
+ def schedule_key_deletion(
391
+ self,
392
+ key_id: str,
393
+ body: m.ScheduleKeyDeletionBody | Unset = UNSET,
394
+ *,
395
+ options: RequestOptions | None = None,
396
+ ) -> ApiResponse[m.ScheduleKeyDeletionResponse]:
397
+ "Schedule key for deletion"
398
+ return cast(
399
+ ApiResponse[m.ScheduleKeyDeletionResponse],
400
+ self._transport.request(
401
+ "kms",
402
+ "https://kms.{region}.basaltic.sh",
403
+ _OPS["scheduleKeyDeletion"],
404
+ "json",
405
+ {"key_id": key_id},
406
+ body,
407
+ None,
408
+ options,
409
+ ),
410
+ )
411
+
412
+ def sign(
413
+ self, key_id: str, body: m.SignBody, *, options: RequestOptions | None = None
414
+ ) -> ApiResponse[m.SignResponse]:
415
+ "Sign a message"
416
+ return cast(
417
+ ApiResponse[m.SignResponse],
418
+ self._transport.request(
419
+ "kms",
420
+ "https://kms.{region}.basaltic.sh",
421
+ _OPS["sign"],
422
+ "json",
423
+ {"key_id": key_id},
424
+ body,
425
+ None,
426
+ options,
427
+ ),
428
+ )
429
+
430
+ def update_key(
431
+ self, key_id: str, body: m.UpdateKeyBody, *, options: RequestOptions | None = None
432
+ ) -> ApiResponse[m.UpdateKeyResponse]:
433
+ "Update key metadata"
434
+ return cast(
435
+ ApiResponse[m.UpdateKeyResponse],
436
+ self._transport.request(
437
+ "kms",
438
+ "https://kms.{region}.basaltic.sh",
439
+ _OPS["updateKey"],
440
+ "json",
441
+ {"key_id": key_id},
442
+ body,
443
+ None,
444
+ options,
445
+ ),
446
+ )
447
+
448
+ def verify(
449
+ self, key_id: str, body: m.VerifyBody, *, options: RequestOptions | None = None
450
+ ) -> ApiResponse[m.VerifyResponse]:
451
+ "Verify a signature"
452
+ return cast(
453
+ ApiResponse[m.VerifyResponse],
454
+ self._transport.request(
455
+ "kms",
456
+ "https://kms.{region}.basaltic.sh",
457
+ _OPS["verify"],
458
+ "json",
459
+ {"key_id": key_id},
460
+ body,
461
+ None,
462
+ options,
463
+ ),
464
+ )
465
+
466
+
467
+ class AsyncKmsService:
468
+ def __init__(self, transport: AsyncTransport) -> None:
469
+ self._transport = transport
470
+
471
+ async def cancel_key_deletion(
472
+ self, key_id: str, *, options: RequestOptions | None = None
473
+ ) -> ApiResponse[m.CancelKeyDeletionResponse]:
474
+ "Cancel a scheduled deletion"
475
+ return cast(
476
+ ApiResponse[m.CancelKeyDeletionResponse],
477
+ await self._transport.request(
478
+ "kms",
479
+ "https://kms.{region}.basaltic.sh",
480
+ _OPS["cancelKeyDeletion"],
481
+ "json",
482
+ {"key_id": key_id},
483
+ UNSET,
484
+ None,
485
+ options,
486
+ ),
487
+ )
488
+
489
+ async def create_key(
490
+ self, body: m.CreateKeyBody, *, options: RequestOptions | None = None
491
+ ) -> ApiResponse[m.CreateKeyResponse]:
492
+ "Create a KMS key"
493
+ return cast(
494
+ ApiResponse[m.CreateKeyResponse],
495
+ await self._transport.request(
496
+ "kms",
497
+ "https://kms.{region}.basaltic.sh",
498
+ _OPS["createKey"],
499
+ "json",
500
+ {},
501
+ body,
502
+ None,
503
+ options,
504
+ ),
505
+ )
506
+
507
+ async def decrypt(
508
+ self, key_id: str, body: m.DecryptBody, *, options: RequestOptions | None = None
509
+ ) -> ApiResponse[m.DecryptResponse]:
510
+ "Decrypt a ciphertext"
511
+ return cast(
512
+ ApiResponse[m.DecryptResponse],
513
+ await self._transport.request(
514
+ "kms",
515
+ "https://kms.{region}.basaltic.sh",
516
+ _OPS["decrypt"],
517
+ "json",
518
+ {"key_id": key_id},
519
+ body,
520
+ None,
521
+ options,
522
+ ),
523
+ )
524
+
525
+ async def disable_key(
526
+ self, key_id: str, *, options: RequestOptions | None = None
527
+ ) -> ApiResponse[m.DisableKeyResponse]:
528
+ "Disable a key"
529
+ return cast(
530
+ ApiResponse[m.DisableKeyResponse],
531
+ await self._transport.request(
532
+ "kms",
533
+ "https://kms.{region}.basaltic.sh",
534
+ _OPS["disableKey"],
535
+ "json",
536
+ {"key_id": key_id},
537
+ UNSET,
538
+ None,
539
+ options,
540
+ ),
541
+ )
542
+
543
+ async def enable_key(
544
+ self, key_id: str, *, options: RequestOptions | None = None
545
+ ) -> ApiResponse[m.EnableKeyResponse]:
546
+ "Enable a disabled key"
547
+ return cast(
548
+ ApiResponse[m.EnableKeyResponse],
549
+ await self._transport.request(
550
+ "kms",
551
+ "https://kms.{region}.basaltic.sh",
552
+ _OPS["enableKey"],
553
+ "json",
554
+ {"key_id": key_id},
555
+ UNSET,
556
+ None,
557
+ options,
558
+ ),
559
+ )
560
+
561
+ async def encrypt(
562
+ self, key_id: str, body: m.EncryptBody, *, options: RequestOptions | None = None
563
+ ) -> ApiResponse[m.EncryptResponse]:
564
+ "Encrypt a payload"
565
+ return cast(
566
+ ApiResponse[m.EncryptResponse],
567
+ await self._transport.request(
568
+ "kms",
569
+ "https://kms.{region}.basaltic.sh",
570
+ _OPS["encrypt"],
571
+ "json",
572
+ {"key_id": key_id},
573
+ body,
574
+ None,
575
+ options,
576
+ ),
577
+ )
578
+
579
+ async def generate_data_key(
580
+ self,
581
+ key_id: str,
582
+ body: m.GenerateDataKeyBody | Unset = UNSET,
583
+ *,
584
+ options: RequestOptions | None = None,
585
+ ) -> ApiResponse[m.GenerateDataKeyResponse]:
586
+ "Generate a fresh data key"
587
+ return cast(
588
+ ApiResponse[m.GenerateDataKeyResponse],
589
+ await self._transport.request(
590
+ "kms",
591
+ "https://kms.{region}.basaltic.sh",
592
+ _OPS["generateDataKey"],
593
+ "json",
594
+ {"key_id": key_id},
595
+ body,
596
+ None,
597
+ options,
598
+ ),
599
+ )
600
+
601
+ async def get_key(
602
+ self, key_id: str, *, options: RequestOptions | None = None
603
+ ) -> ApiResponse[m.GetKeyResponse]:
604
+ "Get a KMS key"
605
+ return cast(
606
+ ApiResponse[m.GetKeyResponse],
607
+ await self._transport.request(
608
+ "kms",
609
+ "https://kms.{region}.basaltic.sh",
610
+ _OPS["getKey"],
611
+ "json",
612
+ {"key_id": key_id},
613
+ UNSET,
614
+ None,
615
+ options,
616
+ ),
617
+ )
618
+
619
+ async def get_key_by_reference(
620
+ self,
621
+ reference: str,
622
+ *,
623
+ scope: m.GetKeyScope | None = None,
624
+ options: RequestOptions | None = None,
625
+ ) -> ApiResponse[m.GetKeyResource]:
626
+ return cast(
627
+ ApiResponse[m.GetKeyResource],
628
+ await aresolve_reference(
629
+ reference,
630
+ lambda id: self.get_key(id, options=options),
631
+ lambda match: self.list_keys(
632
+ query=cast(m.ListKeysQuery, {**reference_scope(scope), **match, "limit": 2}),
633
+ options=options,
634
+ ),
635
+ True,
636
+ "key",
637
+ ),
638
+ )
639
+
640
+ async def list_keys(
641
+ self, *, query: m.ListKeysQuery | None = None, options: RequestOptions | None = None
642
+ ) -> Page[m.ListKeysResponse, m.ListKeysItem]:
643
+ "List KMS keys"
644
+ return cast(
645
+ Page[m.ListKeysResponse, m.ListKeysItem],
646
+ await self._transport.request(
647
+ "kms",
648
+ "https://kms.{region}.basaltic.sh",
649
+ _OPS["listKeys"],
650
+ "page",
651
+ {},
652
+ UNSET,
653
+ query,
654
+ options,
655
+ ),
656
+ )
657
+
658
+ def list_keys_all(
659
+ self, *, query: m.ListKeysQuery | None = None, options: RequestOptions | None = None
660
+ ) -> AsyncIterator[m.ListKeysItem]:
661
+ return aiterate_pages(
662
+ lambda marker: self.list_keys(
663
+ query=cast(m.ListKeysQuery, {**(query or {}), "marker": marker}), options=options
664
+ ),
665
+ (query or {}).get("marker", ""),
666
+ )
667
+
668
+ async def schedule_key_deletion(
669
+ self,
670
+ key_id: str,
671
+ body: m.ScheduleKeyDeletionBody | Unset = UNSET,
672
+ *,
673
+ options: RequestOptions | None = None,
674
+ ) -> ApiResponse[m.ScheduleKeyDeletionResponse]:
675
+ "Schedule key for deletion"
676
+ return cast(
677
+ ApiResponse[m.ScheduleKeyDeletionResponse],
678
+ await self._transport.request(
679
+ "kms",
680
+ "https://kms.{region}.basaltic.sh",
681
+ _OPS["scheduleKeyDeletion"],
682
+ "json",
683
+ {"key_id": key_id},
684
+ body,
685
+ None,
686
+ options,
687
+ ),
688
+ )
689
+
690
+ async def sign(
691
+ self, key_id: str, body: m.SignBody, *, options: RequestOptions | None = None
692
+ ) -> ApiResponse[m.SignResponse]:
693
+ "Sign a message"
694
+ return cast(
695
+ ApiResponse[m.SignResponse],
696
+ await self._transport.request(
697
+ "kms",
698
+ "https://kms.{region}.basaltic.sh",
699
+ _OPS["sign"],
700
+ "json",
701
+ {"key_id": key_id},
702
+ body,
703
+ None,
704
+ options,
705
+ ),
706
+ )
707
+
708
+ async def update_key(
709
+ self, key_id: str, body: m.UpdateKeyBody, *, options: RequestOptions | None = None
710
+ ) -> ApiResponse[m.UpdateKeyResponse]:
711
+ "Update key metadata"
712
+ return cast(
713
+ ApiResponse[m.UpdateKeyResponse],
714
+ await self._transport.request(
715
+ "kms",
716
+ "https://kms.{region}.basaltic.sh",
717
+ _OPS["updateKey"],
718
+ "json",
719
+ {"key_id": key_id},
720
+ body,
721
+ None,
722
+ options,
723
+ ),
724
+ )
725
+
726
+ async def verify(
727
+ self, key_id: str, body: m.VerifyBody, *, options: RequestOptions | None = None
728
+ ) -> ApiResponse[m.VerifyResponse]:
729
+ "Verify a signature"
730
+ return cast(
731
+ ApiResponse[m.VerifyResponse],
732
+ await self._transport.request(
733
+ "kms",
734
+ "https://kms.{region}.basaltic.sh",
735
+ _OPS["verify"],
736
+ "json",
737
+ {"key_id": key_id},
738
+ body,
739
+ None,
740
+ options,
741
+ ),
742
+ )