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,3059 @@
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
+ import httpx
9
+
10
+ from .._common import UNSET, AsyncBinaryBody, BinaryBody, Operation
11
+ from .._transport import AsyncTransport, SyncTransport
12
+ from ..config import RequestOptions
13
+ from ..models import storage as m
14
+ from ..response import (
15
+ ApiResponse,
16
+ Page,
17
+ aiterate_pages,
18
+ aresolve_reference,
19
+ iterate_pages,
20
+ reference_scope,
21
+ resolve_reference,
22
+ )
23
+
24
+ _OPS = {
25
+ "abortMultipartUpload": Operation(
26
+ id="abortMultipartUpload",
27
+ method="DELETE",
28
+ path="/v1/buckets/{bucket}/multipart-uploads/{upload_id}",
29
+ authenticated=True,
30
+ requiredQuery=[],
31
+ requiredHeaders=[],
32
+ queryEncoding={},
33
+ bodyRequired=False,
34
+ contentType="",
35
+ accept="application/json",
36
+ ),
37
+ "completeMultipartUpload": Operation(
38
+ id="completeMultipartUpload",
39
+ method="POST",
40
+ path="/v1/buckets/{bucket}/multipart-uploads/{upload_id}/complete",
41
+ authenticated=True,
42
+ requiredQuery=[],
43
+ requiredHeaders=[],
44
+ queryEncoding={},
45
+ bodyRequired=True,
46
+ contentType="application/json",
47
+ accept="application/json",
48
+ ),
49
+ "createBucket": Operation(
50
+ id="createBucket",
51
+ method="POST",
52
+ path="/v1/buckets",
53
+ authenticated=True,
54
+ requiredQuery=[],
55
+ requiredHeaders=[],
56
+ queryEncoding={},
57
+ bodyRequired=True,
58
+ contentType="application/json",
59
+ accept="application/json",
60
+ ),
61
+ "createSnapshot": Operation(
62
+ id="createSnapshot",
63
+ method="POST",
64
+ path="/v1/snapshots",
65
+ authenticated=True,
66
+ requiredQuery=[],
67
+ requiredHeaders=[],
68
+ queryEncoding={},
69
+ bodyRequired=True,
70
+ contentType="application/json",
71
+ accept="application/json",
72
+ ),
73
+ "createSnapshotPolicy": Operation(
74
+ id="createSnapshotPolicy",
75
+ method="POST",
76
+ path="/v1/snapshot-policies",
77
+ authenticated=True,
78
+ requiredQuery=[],
79
+ requiredHeaders=[],
80
+ queryEncoding={},
81
+ bodyRequired=True,
82
+ contentType="application/json",
83
+ accept="application/json",
84
+ ),
85
+ "createVolume": Operation(
86
+ id="createVolume",
87
+ method="POST",
88
+ path="/v1/volumes",
89
+ authenticated=True,
90
+ requiredQuery=[],
91
+ requiredHeaders=[],
92
+ queryEncoding={},
93
+ bodyRequired=True,
94
+ contentType="application/json",
95
+ accept="application/json",
96
+ ),
97
+ "deleteBucket": Operation(
98
+ id="deleteBucket",
99
+ method="DELETE",
100
+ path="/v1/buckets/{bucket}",
101
+ authenticated=True,
102
+ requiredQuery=[],
103
+ requiredHeaders=[],
104
+ queryEncoding={},
105
+ bodyRequired=False,
106
+ contentType="",
107
+ accept="application/json",
108
+ ),
109
+ "deleteBucketCORS": Operation(
110
+ id="deleteBucketCORS",
111
+ method="DELETE",
112
+ path="/v1/buckets/{bucket}/cors",
113
+ authenticated=True,
114
+ requiredQuery=[],
115
+ requiredHeaders=[],
116
+ queryEncoding={},
117
+ bodyRequired=False,
118
+ contentType="",
119
+ accept="application/json",
120
+ ),
121
+ "deleteBucketEncryption": Operation(
122
+ id="deleteBucketEncryption",
123
+ method="DELETE",
124
+ path="/v1/buckets/{bucket}/encryption",
125
+ authenticated=True,
126
+ requiredQuery=[],
127
+ requiredHeaders=[],
128
+ queryEncoding={},
129
+ bodyRequired=False,
130
+ contentType="",
131
+ accept="application/json",
132
+ ),
133
+ "deleteBucketLifecycle": Operation(
134
+ id="deleteBucketLifecycle",
135
+ method="DELETE",
136
+ path="/v1/buckets/{bucket}/lifecycle",
137
+ authenticated=True,
138
+ requiredQuery=[],
139
+ requiredHeaders=["If-Match"],
140
+ queryEncoding={},
141
+ bodyRequired=False,
142
+ contentType="",
143
+ accept="application/json",
144
+ ),
145
+ "deleteBucketObjectLock": Operation(
146
+ id="deleteBucketObjectLock",
147
+ method="DELETE",
148
+ path="/v1/buckets/{bucket}/object-lock",
149
+ authenticated=True,
150
+ requiredQuery=[],
151
+ requiredHeaders=[],
152
+ queryEncoding={},
153
+ bodyRequired=False,
154
+ contentType="",
155
+ accept="application/json",
156
+ ),
157
+ "deleteBucketPolicy": Operation(
158
+ id="deleteBucketPolicy",
159
+ method="DELETE",
160
+ path="/v1/buckets/{bucket}/policy",
161
+ authenticated=True,
162
+ requiredQuery=[],
163
+ requiredHeaders=[],
164
+ queryEncoding={},
165
+ bodyRequired=False,
166
+ contentType="",
167
+ accept="application/json",
168
+ ),
169
+ "deleteBucketTagging": Operation(
170
+ id="deleteBucketTagging",
171
+ method="DELETE",
172
+ path="/v1/buckets/{bucket}/tagging",
173
+ authenticated=True,
174
+ requiredQuery=[],
175
+ requiredHeaders=[],
176
+ queryEncoding={},
177
+ bodyRequired=False,
178
+ contentType="",
179
+ accept="application/json",
180
+ ),
181
+ "deleteObject": Operation(
182
+ id="deleteObject",
183
+ method="DELETE",
184
+ path="/v1/buckets/{bucket}/objects/{key}",
185
+ authenticated=True,
186
+ requiredQuery=[],
187
+ requiredHeaders=[],
188
+ queryEncoding={},
189
+ bodyRequired=False,
190
+ contentType="",
191
+ accept="application/json",
192
+ ),
193
+ "deleteSnapshot": Operation(
194
+ id="deleteSnapshot",
195
+ method="DELETE",
196
+ path="/v1/snapshots/{snapshot_id}",
197
+ authenticated=True,
198
+ requiredQuery=[],
199
+ requiredHeaders=[],
200
+ queryEncoding={},
201
+ bodyRequired=False,
202
+ contentType="",
203
+ accept="application/json",
204
+ ),
205
+ "deleteSnapshotPolicy": Operation(
206
+ id="deleteSnapshotPolicy",
207
+ method="DELETE",
208
+ path="/v1/snapshot-policies/{policy_id}",
209
+ authenticated=True,
210
+ requiredQuery=[],
211
+ requiredHeaders=[],
212
+ queryEncoding={},
213
+ bodyRequired=False,
214
+ contentType="",
215
+ accept="application/json",
216
+ ),
217
+ "deleteVolume": Operation(
218
+ id="deleteVolume",
219
+ method="DELETE",
220
+ path="/v1/volumes/{volume_id}",
221
+ authenticated=True,
222
+ requiredQuery=[],
223
+ requiredHeaders=[],
224
+ queryEncoding={},
225
+ bodyRequired=False,
226
+ contentType="",
227
+ accept="application/json",
228
+ ),
229
+ "extendVolume": Operation(
230
+ id="extendVolume",
231
+ method="POST",
232
+ path="/v1/volumes/{volume_id}/extend",
233
+ authenticated=True,
234
+ requiredQuery=[],
235
+ requiredHeaders=[],
236
+ queryEncoding={},
237
+ bodyRequired=True,
238
+ contentType="application/json",
239
+ accept="application/json",
240
+ ),
241
+ "getBucketCORS": Operation(
242
+ id="getBucketCORS",
243
+ method="GET",
244
+ path="/v1/buckets/{bucket}/cors",
245
+ authenticated=True,
246
+ requiredQuery=[],
247
+ requiredHeaders=[],
248
+ queryEncoding={},
249
+ bodyRequired=False,
250
+ contentType="",
251
+ accept="application/json",
252
+ ),
253
+ "getBucketEncryption": Operation(
254
+ id="getBucketEncryption",
255
+ method="GET",
256
+ path="/v1/buckets/{bucket}/encryption",
257
+ authenticated=True,
258
+ requiredQuery=[],
259
+ requiredHeaders=[],
260
+ queryEncoding={},
261
+ bodyRequired=False,
262
+ contentType="",
263
+ accept="application/json",
264
+ ),
265
+ "getBucketLifecycle": Operation(
266
+ id="getBucketLifecycle",
267
+ method="GET",
268
+ path="/v1/buckets/{bucket}/lifecycle",
269
+ authenticated=True,
270
+ requiredQuery=[],
271
+ requiredHeaders=[],
272
+ queryEncoding={},
273
+ bodyRequired=False,
274
+ contentType="",
275
+ accept="application/json",
276
+ ),
277
+ "getBucketObjectLock": Operation(
278
+ id="getBucketObjectLock",
279
+ method="GET",
280
+ path="/v1/buckets/{bucket}/object-lock",
281
+ authenticated=True,
282
+ requiredQuery=[],
283
+ requiredHeaders=[],
284
+ queryEncoding={},
285
+ bodyRequired=False,
286
+ contentType="",
287
+ accept="application/json",
288
+ ),
289
+ "getBucketPolicy": Operation(
290
+ id="getBucketPolicy",
291
+ method="GET",
292
+ path="/v1/buckets/{bucket}/policy",
293
+ authenticated=True,
294
+ requiredQuery=[],
295
+ requiredHeaders=[],
296
+ queryEncoding={},
297
+ bodyRequired=False,
298
+ contentType="",
299
+ accept="application/json",
300
+ ),
301
+ "getBucketTagging": Operation(
302
+ id="getBucketTagging",
303
+ method="GET",
304
+ path="/v1/buckets/{bucket}/tagging",
305
+ authenticated=True,
306
+ requiredQuery=[],
307
+ requiredHeaders=[],
308
+ queryEncoding={},
309
+ bodyRequired=False,
310
+ contentType="",
311
+ accept="application/json",
312
+ ),
313
+ "getBucketVersioning": Operation(
314
+ id="getBucketVersioning",
315
+ method="GET",
316
+ path="/v1/buckets/{bucket}/versioning",
317
+ authenticated=True,
318
+ requiredQuery=[],
319
+ requiredHeaders=[],
320
+ queryEncoding={},
321
+ bodyRequired=False,
322
+ contentType="",
323
+ accept="application/json",
324
+ ),
325
+ "getObject": Operation(
326
+ id="getObject",
327
+ method="GET",
328
+ path="/v1/buckets/{bucket}/objects/{key}",
329
+ authenticated=True,
330
+ requiredQuery=[],
331
+ requiredHeaders=[],
332
+ queryEncoding={},
333
+ bodyRequired=False,
334
+ contentType="",
335
+ accept="*/*",
336
+ ),
337
+ "getSnapshot": Operation(
338
+ id="getSnapshot",
339
+ method="GET",
340
+ path="/v1/snapshots/{snapshot_id}",
341
+ authenticated=True,
342
+ requiredQuery=[],
343
+ requiredHeaders=[],
344
+ queryEncoding={},
345
+ bodyRequired=False,
346
+ contentType="",
347
+ accept="application/json",
348
+ ),
349
+ "getSnapshotPolicy": Operation(
350
+ id="getSnapshotPolicy",
351
+ method="GET",
352
+ path="/v1/snapshot-policies/{policy_id}",
353
+ authenticated=True,
354
+ requiredQuery=[],
355
+ requiredHeaders=[],
356
+ queryEncoding={},
357
+ bodyRequired=False,
358
+ contentType="",
359
+ accept="application/json",
360
+ ),
361
+ "getVolume": Operation(
362
+ id="getVolume",
363
+ method="GET",
364
+ path="/v1/volumes/{volume_id}",
365
+ authenticated=True,
366
+ requiredQuery=[],
367
+ requiredHeaders=[],
368
+ queryEncoding={},
369
+ bodyRequired=False,
370
+ contentType="",
371
+ accept="application/json",
372
+ ),
373
+ "headBucket": Operation(
374
+ id="headBucket",
375
+ method="HEAD",
376
+ path="/v1/buckets/{bucket}",
377
+ authenticated=True,
378
+ requiredQuery=[],
379
+ requiredHeaders=[],
380
+ queryEncoding={},
381
+ bodyRequired=False,
382
+ contentType="",
383
+ accept="*/*",
384
+ ),
385
+ "headObject": Operation(
386
+ id="headObject",
387
+ method="HEAD",
388
+ path="/v1/buckets/{bucket}/objects/{key}",
389
+ authenticated=True,
390
+ requiredQuery=[],
391
+ requiredHeaders=[],
392
+ queryEncoding={},
393
+ bodyRequired=False,
394
+ contentType="",
395
+ accept="*/*",
396
+ ),
397
+ "initiateMultipartUpload": Operation(
398
+ id="initiateMultipartUpload",
399
+ method="POST",
400
+ path="/v1/buckets/{bucket}/multipart-uploads",
401
+ authenticated=True,
402
+ requiredQuery=[],
403
+ requiredHeaders=[],
404
+ queryEncoding={},
405
+ bodyRequired=True,
406
+ contentType="application/json",
407
+ accept="application/json",
408
+ ),
409
+ "listBuckets": Operation(
410
+ id="listBuckets",
411
+ method="GET",
412
+ path="/v1/buckets",
413
+ authenticated=True,
414
+ requiredQuery=[],
415
+ requiredHeaders=[],
416
+ queryEncoding={
417
+ "limit": {"style": "form", "explode": True},
418
+ "marker": {"style": "form", "explode": True},
419
+ "name": {"style": "form", "explode": True},
420
+ "crn": {"style": "form", "explode": True},
421
+ },
422
+ bodyRequired=False,
423
+ contentType="",
424
+ accept="application/json",
425
+ itemsKey="buckets",
426
+ ),
427
+ "listMultipartUploads": Operation(
428
+ id="listMultipartUploads",
429
+ method="GET",
430
+ path="/v1/buckets/{bucket}/multipart-uploads",
431
+ authenticated=True,
432
+ requiredQuery=[],
433
+ requiredHeaders=[],
434
+ queryEncoding={
435
+ "prefix": {"style": "form", "explode": True},
436
+ "max_uploads": {"style": "form", "explode": True},
437
+ },
438
+ bodyRequired=False,
439
+ contentType="",
440
+ accept="application/json",
441
+ itemsKey="uploads",
442
+ ),
443
+ "listObjectVersions": Operation(
444
+ id="listObjectVersions",
445
+ method="GET",
446
+ path="/v1/buckets/{bucket}/object-versions",
447
+ authenticated=True,
448
+ requiredQuery=[],
449
+ requiredHeaders=[],
450
+ queryEncoding={
451
+ "prefix": {"style": "form", "explode": True},
452
+ "key_marker": {"style": "form", "explode": True},
453
+ "version_id_marker": {"style": "form", "explode": True},
454
+ "max_keys": {"style": "form", "explode": True},
455
+ },
456
+ bodyRequired=False,
457
+ contentType="",
458
+ accept="application/json",
459
+ itemsKey="versions",
460
+ ),
461
+ "listObjects": Operation(
462
+ id="listObjects",
463
+ method="GET",
464
+ path="/v1/buckets/{bucket}/objects",
465
+ authenticated=True,
466
+ requiredQuery=[],
467
+ requiredHeaders=[],
468
+ queryEncoding={
469
+ "prefix": {"style": "form", "explode": True},
470
+ "delimiter": {"style": "form", "explode": True},
471
+ "marker": {"style": "form", "explode": True},
472
+ "max_keys": {"style": "form", "explode": True},
473
+ },
474
+ bodyRequired=False,
475
+ contentType="",
476
+ accept="application/json",
477
+ ),
478
+ "listParts": Operation(
479
+ id="listParts",
480
+ method="GET",
481
+ path="/v1/buckets/{bucket}/multipart-uploads/{upload_id}/parts",
482
+ authenticated=True,
483
+ requiredQuery=[],
484
+ requiredHeaders=[],
485
+ queryEncoding={},
486
+ bodyRequired=False,
487
+ contentType="",
488
+ accept="application/json",
489
+ itemsKey="parts",
490
+ ),
491
+ "listSnapshotPolicies": Operation(
492
+ id="listSnapshotPolicies",
493
+ method="GET",
494
+ path="/v1/snapshot-policies",
495
+ authenticated=True,
496
+ requiredQuery=[],
497
+ requiredHeaders=[],
498
+ queryEncoding={
499
+ "limit": {"style": "form", "explode": True},
500
+ "marker": {"style": "form", "explode": True},
501
+ "volume": {"style": "form", "explode": True},
502
+ "enabled": {"style": "form", "explode": True},
503
+ "name": {"style": "form", "explode": True},
504
+ "crn": {"style": "form", "explode": True},
505
+ },
506
+ bodyRequired=False,
507
+ contentType="",
508
+ accept="application/json",
509
+ itemsKey="snapshot_policies",
510
+ ),
511
+ "listSnapshots": Operation(
512
+ id="listSnapshots",
513
+ method="GET",
514
+ path="/v1/snapshots",
515
+ authenticated=True,
516
+ requiredQuery=[],
517
+ requiredHeaders=[],
518
+ queryEncoding={
519
+ "limit": {"style": "form", "explode": True},
520
+ "marker": {"style": "form", "explode": True},
521
+ "volume": {"style": "form", "explode": True},
522
+ "name": {"style": "form", "explode": True},
523
+ "status": {"style": "form", "explode": True},
524
+ "crn": {"style": "form", "explode": True},
525
+ "snapshot_policy": {"style": "form", "explode": True},
526
+ },
527
+ bodyRequired=False,
528
+ contentType="",
529
+ accept="application/json",
530
+ itemsKey="snapshots",
531
+ ),
532
+ "listVolumeTypes": Operation(
533
+ id="listVolumeTypes",
534
+ method="GET",
535
+ path="/v1/volume-types",
536
+ authenticated=True,
537
+ requiredQuery=[],
538
+ requiredHeaders=[],
539
+ queryEncoding={
540
+ "name": {"style": "form", "explode": True},
541
+ "crn": {"style": "form", "explode": True},
542
+ },
543
+ bodyRequired=False,
544
+ contentType="",
545
+ accept="application/json",
546
+ itemsKey="volume_types",
547
+ ),
548
+ "listVolumes": Operation(
549
+ id="listVolumes",
550
+ method="GET",
551
+ path="/v1/volumes",
552
+ authenticated=True,
553
+ requiredQuery=[],
554
+ requiredHeaders=[],
555
+ queryEncoding={
556
+ "limit": {"style": "form", "explode": True},
557
+ "marker": {"style": "form", "explode": True},
558
+ "name": {"style": "form", "explode": True},
559
+ "status": {"style": "form", "explode": True},
560
+ "crn": {"style": "form", "explode": True},
561
+ },
562
+ bodyRequired=False,
563
+ contentType="",
564
+ accept="application/json",
565
+ itemsKey="volumes",
566
+ ),
567
+ "putBucketCORS": Operation(
568
+ id="putBucketCORS",
569
+ method="PUT",
570
+ path="/v1/buckets/{bucket}/cors",
571
+ authenticated=True,
572
+ requiredQuery=[],
573
+ requiredHeaders=[],
574
+ queryEncoding={},
575
+ bodyRequired=True,
576
+ contentType="application/json",
577
+ accept="application/json",
578
+ ),
579
+ "putBucketDeletionProtection": Operation(
580
+ id="putBucketDeletionProtection",
581
+ method="PUT",
582
+ path="/v1/buckets/{bucket}/deletion-protection",
583
+ authenticated=True,
584
+ requiredQuery=[],
585
+ requiredHeaders=[],
586
+ queryEncoding={},
587
+ bodyRequired=True,
588
+ contentType="application/json",
589
+ accept="application/json",
590
+ ),
591
+ "putBucketEncryption": Operation(
592
+ id="putBucketEncryption",
593
+ method="PUT",
594
+ path="/v1/buckets/{bucket}/encryption",
595
+ authenticated=True,
596
+ requiredQuery=[],
597
+ requiredHeaders=[],
598
+ queryEncoding={},
599
+ bodyRequired=True,
600
+ contentType="application/json",
601
+ accept="application/json",
602
+ ),
603
+ "putBucketLifecycle": Operation(
604
+ id="putBucketLifecycle",
605
+ method="PUT",
606
+ path="/v1/buckets/{bucket}/lifecycle",
607
+ authenticated=True,
608
+ requiredQuery=[],
609
+ requiredHeaders=["If-Match"],
610
+ queryEncoding={},
611
+ bodyRequired=True,
612
+ contentType="application/json",
613
+ accept="application/json",
614
+ ),
615
+ "putBucketObjectLock": Operation(
616
+ id="putBucketObjectLock",
617
+ method="PUT",
618
+ path="/v1/buckets/{bucket}/object-lock",
619
+ authenticated=True,
620
+ requiredQuery=[],
621
+ requiredHeaders=[],
622
+ queryEncoding={},
623
+ bodyRequired=True,
624
+ contentType="application/json",
625
+ accept="application/json",
626
+ ),
627
+ "putBucketPolicy": Operation(
628
+ id="putBucketPolicy",
629
+ method="PUT",
630
+ path="/v1/buckets/{bucket}/policy",
631
+ authenticated=True,
632
+ requiredQuery=[],
633
+ requiredHeaders=[],
634
+ queryEncoding={},
635
+ bodyRequired=True,
636
+ contentType="application/json",
637
+ accept="application/json",
638
+ ),
639
+ "putBucketTagging": Operation(
640
+ id="putBucketTagging",
641
+ method="PUT",
642
+ path="/v1/buckets/{bucket}/tagging",
643
+ authenticated=True,
644
+ requiredQuery=[],
645
+ requiredHeaders=[],
646
+ queryEncoding={},
647
+ bodyRequired=True,
648
+ contentType="application/json",
649
+ accept="application/json",
650
+ ),
651
+ "putBucketVersioning": Operation(
652
+ id="putBucketVersioning",
653
+ method="PUT",
654
+ path="/v1/buckets/{bucket}/versioning",
655
+ authenticated=True,
656
+ requiredQuery=[],
657
+ requiredHeaders=[],
658
+ queryEncoding={},
659
+ bodyRequired=True,
660
+ contentType="application/json",
661
+ accept="application/json",
662
+ ),
663
+ "putObject": Operation(
664
+ id="putObject",
665
+ method="PUT",
666
+ path="/v1/buckets/{bucket}/objects/{key}",
667
+ authenticated=True,
668
+ requiredQuery=[],
669
+ requiredHeaders=[],
670
+ queryEncoding={},
671
+ bodyRequired=True,
672
+ contentType="application/octet-stream",
673
+ accept="application/json",
674
+ ),
675
+ "restoreBucket": Operation(
676
+ id="restoreBucket",
677
+ method="POST",
678
+ path="/v1/buckets/{bucket}/restore",
679
+ authenticated=True,
680
+ requiredQuery=[],
681
+ requiredHeaders=[],
682
+ queryEncoding={},
683
+ bodyRequired=False,
684
+ contentType="",
685
+ accept="application/json",
686
+ ),
687
+ "updateSnapshot": Operation(
688
+ id="updateSnapshot",
689
+ method="PATCH",
690
+ path="/v1/snapshots/{snapshot_id}",
691
+ authenticated=True,
692
+ requiredQuery=[],
693
+ requiredHeaders=[],
694
+ queryEncoding={},
695
+ bodyRequired=True,
696
+ contentType="application/json",
697
+ accept="application/json",
698
+ ),
699
+ "updateSnapshotPolicy": Operation(
700
+ id="updateSnapshotPolicy",
701
+ method="PATCH",
702
+ path="/v1/snapshot-policies/{policy_id}",
703
+ authenticated=True,
704
+ requiredQuery=[],
705
+ requiredHeaders=[],
706
+ queryEncoding={},
707
+ bodyRequired=True,
708
+ contentType="application/json",
709
+ accept="application/json",
710
+ ),
711
+ "updateVolume": Operation(
712
+ id="updateVolume",
713
+ method="PATCH",
714
+ path="/v1/volumes/{volume_id}",
715
+ authenticated=True,
716
+ requiredQuery=[],
717
+ requiredHeaders=[],
718
+ queryEncoding={},
719
+ bodyRequired=True,
720
+ contentType="application/json",
721
+ accept="application/json",
722
+ ),
723
+ "updateVolumePerformance": Operation(
724
+ id="updateVolumePerformance",
725
+ method="POST",
726
+ path="/v1/volumes/{volume_id}/performance",
727
+ authenticated=True,
728
+ requiredQuery=[],
729
+ requiredHeaders=[],
730
+ queryEncoding={},
731
+ bodyRequired=True,
732
+ contentType="application/json",
733
+ accept="application/json",
734
+ ),
735
+ "uploadPart": Operation(
736
+ id="uploadPart",
737
+ method="PUT",
738
+ path="/v1/buckets/{bucket}/multipart-uploads/{upload_id}/parts/{part_number}",
739
+ authenticated=True,
740
+ requiredQuery=[],
741
+ requiredHeaders=[],
742
+ queryEncoding={},
743
+ bodyRequired=True,
744
+ contentType="application/octet-stream",
745
+ accept="application/json",
746
+ ),
747
+ }
748
+
749
+
750
+ class StorageService:
751
+ def __init__(self, transport: SyncTransport) -> None:
752
+ self._transport = transport
753
+
754
+ def abort_multipart_upload(
755
+ self, bucket: str, upload_id: str, *, options: RequestOptions | None = None
756
+ ) -> None:
757
+ "Abort a multipart upload"
758
+ return cast(
759
+ None,
760
+ self._transport.request(
761
+ "storage",
762
+ "https://storage.{region}.basaltic.sh",
763
+ _OPS["abortMultipartUpload"],
764
+ "discard",
765
+ {"bucket": bucket, "upload_id": upload_id},
766
+ UNSET,
767
+ None,
768
+ options,
769
+ ),
770
+ )
771
+
772
+ def complete_multipart_upload(
773
+ self,
774
+ bucket: str,
775
+ upload_id: str,
776
+ body: m.CompleteMultipartUploadBody,
777
+ *,
778
+ options: RequestOptions | None = None,
779
+ ) -> ApiResponse[m.CompleteMultipartUploadResponse]:
780
+ "Complete a multipart upload"
781
+ return cast(
782
+ ApiResponse[m.CompleteMultipartUploadResponse],
783
+ self._transport.request(
784
+ "storage",
785
+ "https://storage.{region}.basaltic.sh",
786
+ _OPS["completeMultipartUpload"],
787
+ "json",
788
+ {"bucket": bucket, "upload_id": upload_id},
789
+ body,
790
+ None,
791
+ options,
792
+ ),
793
+ )
794
+
795
+ def create_bucket(
796
+ self, body: m.CreateBucketBody, *, options: RequestOptions | None = None
797
+ ) -> ApiResponse[m.CreateBucketResponse]:
798
+ "Create bucket"
799
+ return cast(
800
+ ApiResponse[m.CreateBucketResponse],
801
+ self._transport.request(
802
+ "storage",
803
+ "https://storage.{region}.basaltic.sh",
804
+ _OPS["createBucket"],
805
+ "json",
806
+ {},
807
+ body,
808
+ None,
809
+ options,
810
+ ),
811
+ )
812
+
813
+ def create_snapshot(
814
+ self, body: m.CreateSnapshotBody, *, options: RequestOptions | None = None
815
+ ) -> ApiResponse[m.CreateSnapshotResponse]:
816
+ "Create snapshot"
817
+ return cast(
818
+ ApiResponse[m.CreateSnapshotResponse],
819
+ self._transport.request(
820
+ "storage",
821
+ "https://storage.{region}.basaltic.sh",
822
+ _OPS["createSnapshot"],
823
+ "json",
824
+ {},
825
+ body,
826
+ None,
827
+ options,
828
+ ),
829
+ )
830
+
831
+ def create_snapshot_policy(
832
+ self, body: m.CreateSnapshotPolicyBody, *, options: RequestOptions | None = None
833
+ ) -> ApiResponse[m.CreateSnapshotPolicyResponse]:
834
+ "Create snapshot policy"
835
+ return cast(
836
+ ApiResponse[m.CreateSnapshotPolicyResponse],
837
+ self._transport.request(
838
+ "storage",
839
+ "https://storage.{region}.basaltic.sh",
840
+ _OPS["createSnapshotPolicy"],
841
+ "json",
842
+ {},
843
+ body,
844
+ None,
845
+ options,
846
+ ),
847
+ )
848
+
849
+ def create_volume(
850
+ self, body: m.CreateVolumeBody, *, options: RequestOptions | None = None
851
+ ) -> ApiResponse[m.CreateVolumeResponse]:
852
+ "Create volume"
853
+ return cast(
854
+ ApiResponse[m.CreateVolumeResponse],
855
+ self._transport.request(
856
+ "storage",
857
+ "https://storage.{region}.basaltic.sh",
858
+ _OPS["createVolume"],
859
+ "json",
860
+ {},
861
+ body,
862
+ None,
863
+ options,
864
+ ),
865
+ )
866
+
867
+ def delete_bucket(
868
+ self, bucket: str, *, options: RequestOptions | None = None
869
+ ) -> ApiResponse[m.DeleteBucketResponse]:
870
+ "Delete bucket"
871
+ return cast(
872
+ ApiResponse[m.DeleteBucketResponse],
873
+ self._transport.request(
874
+ "storage",
875
+ "https://storage.{region}.basaltic.sh",
876
+ _OPS["deleteBucket"],
877
+ "json",
878
+ {"bucket": bucket},
879
+ UNSET,
880
+ None,
881
+ options,
882
+ ),
883
+ )
884
+
885
+ def delete_bucket_cors(self, bucket: str, *, options: RequestOptions | None = None) -> None:
886
+ "Delete bucket CORS configuration"
887
+ return cast(
888
+ None,
889
+ self._transport.request(
890
+ "storage",
891
+ "https://storage.{region}.basaltic.sh",
892
+ _OPS["deleteBucketCORS"],
893
+ "discard",
894
+ {"bucket": bucket},
895
+ UNSET,
896
+ None,
897
+ options,
898
+ ),
899
+ )
900
+
901
+ def delete_bucket_encryption(
902
+ self, bucket: str, *, options: RequestOptions | None = None
903
+ ) -> None:
904
+ "Delete bucket encryption configuration"
905
+ return cast(
906
+ None,
907
+ self._transport.request(
908
+ "storage",
909
+ "https://storage.{region}.basaltic.sh",
910
+ _OPS["deleteBucketEncryption"],
911
+ "discard",
912
+ {"bucket": bucket},
913
+ UNSET,
914
+ None,
915
+ options,
916
+ ),
917
+ )
918
+
919
+ def delete_bucket_lifecycle(self, bucket: str, *, options: RequestOptions) -> None:
920
+ "Delete bucket lifecycle configuration"
921
+ return cast(
922
+ None,
923
+ self._transport.request(
924
+ "storage",
925
+ "https://storage.{region}.basaltic.sh",
926
+ _OPS["deleteBucketLifecycle"],
927
+ "discard",
928
+ {"bucket": bucket},
929
+ UNSET,
930
+ None,
931
+ options,
932
+ ),
933
+ )
934
+
935
+ def delete_bucket_object_lock(
936
+ self, bucket: str, *, options: RequestOptions | None = None
937
+ ) -> None:
938
+ "Delete bucket object-lock configuration"
939
+ return cast(
940
+ None,
941
+ self._transport.request(
942
+ "storage",
943
+ "https://storage.{region}.basaltic.sh",
944
+ _OPS["deleteBucketObjectLock"],
945
+ "discard",
946
+ {"bucket": bucket},
947
+ UNSET,
948
+ None,
949
+ options,
950
+ ),
951
+ )
952
+
953
+ def delete_bucket_policy(self, bucket: str, *, options: RequestOptions | None = None) -> None:
954
+ "Delete bucket policy"
955
+ return cast(
956
+ None,
957
+ self._transport.request(
958
+ "storage",
959
+ "https://storage.{region}.basaltic.sh",
960
+ _OPS["deleteBucketPolicy"],
961
+ "discard",
962
+ {"bucket": bucket},
963
+ UNSET,
964
+ None,
965
+ options,
966
+ ),
967
+ )
968
+
969
+ def delete_bucket_tagging(self, bucket: str, *, options: RequestOptions | None = None) -> None:
970
+ "Delete bucket tag set"
971
+ return cast(
972
+ None,
973
+ self._transport.request(
974
+ "storage",
975
+ "https://storage.{region}.basaltic.sh",
976
+ _OPS["deleteBucketTagging"],
977
+ "discard",
978
+ {"bucket": bucket},
979
+ UNSET,
980
+ None,
981
+ options,
982
+ ),
983
+ )
984
+
985
+ def delete_object(
986
+ self, bucket: str, key: str, *, options: RequestOptions | None = None
987
+ ) -> None:
988
+ "Delete object"
989
+ return cast(
990
+ None,
991
+ self._transport.request(
992
+ "storage",
993
+ "https://storage.{region}.basaltic.sh",
994
+ _OPS["deleteObject"],
995
+ "discard",
996
+ {"bucket": bucket, "key": key},
997
+ UNSET,
998
+ None,
999
+ options,
1000
+ ),
1001
+ )
1002
+
1003
+ def delete_snapshot(self, snapshot_id: str, *, options: RequestOptions | None = None) -> None:
1004
+ "Delete snapshot"
1005
+ return cast(
1006
+ None,
1007
+ self._transport.request(
1008
+ "storage",
1009
+ "https://storage.{region}.basaltic.sh",
1010
+ _OPS["deleteSnapshot"],
1011
+ "discard",
1012
+ {"snapshot_id": snapshot_id},
1013
+ UNSET,
1014
+ None,
1015
+ options,
1016
+ ),
1017
+ )
1018
+
1019
+ def delete_snapshot_policy(
1020
+ self, policy_id: str, *, options: RequestOptions | None = None
1021
+ ) -> None:
1022
+ "Delete snapshot policy"
1023
+ return cast(
1024
+ None,
1025
+ self._transport.request(
1026
+ "storage",
1027
+ "https://storage.{region}.basaltic.sh",
1028
+ _OPS["deleteSnapshotPolicy"],
1029
+ "discard",
1030
+ {"policy_id": policy_id},
1031
+ UNSET,
1032
+ None,
1033
+ options,
1034
+ ),
1035
+ )
1036
+
1037
+ def delete_volume(self, volume_id: str, *, options: RequestOptions | None = None) -> None:
1038
+ "Delete volume"
1039
+ return cast(
1040
+ None,
1041
+ self._transport.request(
1042
+ "storage",
1043
+ "https://storage.{region}.basaltic.sh",
1044
+ _OPS["deleteVolume"],
1045
+ "discard",
1046
+ {"volume_id": volume_id},
1047
+ UNSET,
1048
+ None,
1049
+ options,
1050
+ ),
1051
+ )
1052
+
1053
+ def extend_volume(
1054
+ self, volume_id: str, body: m.ExtendVolumeBody, *, options: RequestOptions | None = None
1055
+ ) -> ApiResponse[m.ExtendVolumeResponse]:
1056
+ "Extend volume"
1057
+ return cast(
1058
+ ApiResponse[m.ExtendVolumeResponse],
1059
+ self._transport.request(
1060
+ "storage",
1061
+ "https://storage.{region}.basaltic.sh",
1062
+ _OPS["extendVolume"],
1063
+ "json",
1064
+ {"volume_id": volume_id},
1065
+ body,
1066
+ None,
1067
+ options,
1068
+ ),
1069
+ )
1070
+
1071
+ def get_bucket_cors(
1072
+ self, bucket: str, *, options: RequestOptions | None = None
1073
+ ) -> ApiResponse[m.GetBucketCORSResponse]:
1074
+ "Get bucket CORS configuration"
1075
+ return cast(
1076
+ ApiResponse[m.GetBucketCORSResponse],
1077
+ self._transport.request(
1078
+ "storage",
1079
+ "https://storage.{region}.basaltic.sh",
1080
+ _OPS["getBucketCORS"],
1081
+ "json",
1082
+ {"bucket": bucket},
1083
+ UNSET,
1084
+ None,
1085
+ options,
1086
+ ),
1087
+ )
1088
+
1089
+ def get_bucket_encryption(
1090
+ self, bucket: str, *, options: RequestOptions | None = None
1091
+ ) -> ApiResponse[m.GetBucketEncryptionResponse]:
1092
+ "Get bucket encryption configuration"
1093
+ return cast(
1094
+ ApiResponse[m.GetBucketEncryptionResponse],
1095
+ self._transport.request(
1096
+ "storage",
1097
+ "https://storage.{region}.basaltic.sh",
1098
+ _OPS["getBucketEncryption"],
1099
+ "json",
1100
+ {"bucket": bucket},
1101
+ UNSET,
1102
+ None,
1103
+ options,
1104
+ ),
1105
+ )
1106
+
1107
+ def get_bucket_lifecycle(
1108
+ self, bucket: str, *, options: RequestOptions | None = None
1109
+ ) -> ApiResponse[m.GetBucketLifecycleResponse]:
1110
+ "Get bucket lifecycle configuration"
1111
+ return cast(
1112
+ ApiResponse[m.GetBucketLifecycleResponse],
1113
+ self._transport.request(
1114
+ "storage",
1115
+ "https://storage.{region}.basaltic.sh",
1116
+ _OPS["getBucketLifecycle"],
1117
+ "json",
1118
+ {"bucket": bucket},
1119
+ UNSET,
1120
+ None,
1121
+ options,
1122
+ ),
1123
+ )
1124
+
1125
+ def get_bucket_object_lock(
1126
+ self, bucket: str, *, options: RequestOptions | None = None
1127
+ ) -> ApiResponse[m.GetBucketObjectLockResponse]:
1128
+ "Get bucket object-lock configuration"
1129
+ return cast(
1130
+ ApiResponse[m.GetBucketObjectLockResponse],
1131
+ self._transport.request(
1132
+ "storage",
1133
+ "https://storage.{region}.basaltic.sh",
1134
+ _OPS["getBucketObjectLock"],
1135
+ "json",
1136
+ {"bucket": bucket},
1137
+ UNSET,
1138
+ None,
1139
+ options,
1140
+ ),
1141
+ )
1142
+
1143
+ def get_bucket_policy(
1144
+ self, bucket: str, *, options: RequestOptions | None = None
1145
+ ) -> ApiResponse[m.GetBucketPolicyResponse]:
1146
+ "Get bucket policy"
1147
+ return cast(
1148
+ ApiResponse[m.GetBucketPolicyResponse],
1149
+ self._transport.request(
1150
+ "storage",
1151
+ "https://storage.{region}.basaltic.sh",
1152
+ _OPS["getBucketPolicy"],
1153
+ "json",
1154
+ {"bucket": bucket},
1155
+ UNSET,
1156
+ None,
1157
+ options,
1158
+ ),
1159
+ )
1160
+
1161
+ def get_bucket_tagging(
1162
+ self, bucket: str, *, options: RequestOptions | None = None
1163
+ ) -> ApiResponse[m.GetBucketTaggingResponse]:
1164
+ "Get bucket tag set"
1165
+ return cast(
1166
+ ApiResponse[m.GetBucketTaggingResponse],
1167
+ self._transport.request(
1168
+ "storage",
1169
+ "https://storage.{region}.basaltic.sh",
1170
+ _OPS["getBucketTagging"],
1171
+ "json",
1172
+ {"bucket": bucket},
1173
+ UNSET,
1174
+ None,
1175
+ options,
1176
+ ),
1177
+ )
1178
+
1179
+ def get_bucket_versioning(
1180
+ self, bucket: str, *, options: RequestOptions | None = None
1181
+ ) -> ApiResponse[m.GetBucketVersioningResponse]:
1182
+ "Get bucket versioning state"
1183
+ return cast(
1184
+ ApiResponse[m.GetBucketVersioningResponse],
1185
+ self._transport.request(
1186
+ "storage",
1187
+ "https://storage.{region}.basaltic.sh",
1188
+ _OPS["getBucketVersioning"],
1189
+ "json",
1190
+ {"bucket": bucket},
1191
+ UNSET,
1192
+ None,
1193
+ options,
1194
+ ),
1195
+ )
1196
+
1197
+ def get_object(
1198
+ self, bucket: str, key: str, *, options: RequestOptions | None = None
1199
+ ) -> httpx.Response:
1200
+ "Download object"
1201
+ return cast(
1202
+ httpx.Response,
1203
+ self._transport.request(
1204
+ "storage",
1205
+ "https://storage.{region}.basaltic.sh",
1206
+ _OPS["getObject"],
1207
+ "binary",
1208
+ {"bucket": bucket, "key": key},
1209
+ UNSET,
1210
+ None,
1211
+ options,
1212
+ ),
1213
+ )
1214
+
1215
+ def get_snapshot(
1216
+ self, snapshot_id: str, *, options: RequestOptions | None = None
1217
+ ) -> ApiResponse[m.GetSnapshotResponse]:
1218
+ "Get snapshot"
1219
+ return cast(
1220
+ ApiResponse[m.GetSnapshotResponse],
1221
+ self._transport.request(
1222
+ "storage",
1223
+ "https://storage.{region}.basaltic.sh",
1224
+ _OPS["getSnapshot"],
1225
+ "json",
1226
+ {"snapshot_id": snapshot_id},
1227
+ UNSET,
1228
+ None,
1229
+ options,
1230
+ ),
1231
+ )
1232
+
1233
+ def get_snapshot_by_reference(
1234
+ self,
1235
+ reference: str,
1236
+ *,
1237
+ scope: m.GetSnapshotScope | None = None,
1238
+ options: RequestOptions | None = None,
1239
+ ) -> ApiResponse[m.GetSnapshotResource]:
1240
+ return cast(
1241
+ ApiResponse[m.GetSnapshotResource],
1242
+ resolve_reference(
1243
+ reference,
1244
+ lambda id: self.get_snapshot(id, options=options),
1245
+ lambda match: self.list_snapshots(
1246
+ query=cast(
1247
+ m.ListSnapshotsQuery, {**reference_scope(scope), **match, "limit": 2}
1248
+ ),
1249
+ options=options,
1250
+ ),
1251
+ True,
1252
+ "snapshot",
1253
+ ),
1254
+ )
1255
+
1256
+ def get_snapshot_policy(
1257
+ self, policy_id: str, *, options: RequestOptions | None = None
1258
+ ) -> ApiResponse[m.GetSnapshotPolicyResponse]:
1259
+ "Get snapshot policy"
1260
+ return cast(
1261
+ ApiResponse[m.GetSnapshotPolicyResponse],
1262
+ self._transport.request(
1263
+ "storage",
1264
+ "https://storage.{region}.basaltic.sh",
1265
+ _OPS["getSnapshotPolicy"],
1266
+ "json",
1267
+ {"policy_id": policy_id},
1268
+ UNSET,
1269
+ None,
1270
+ options,
1271
+ ),
1272
+ )
1273
+
1274
+ def get_snapshot_policy_by_reference(
1275
+ self,
1276
+ reference: str,
1277
+ *,
1278
+ scope: m.GetSnapshotPolicyScope | None = None,
1279
+ options: RequestOptions | None = None,
1280
+ ) -> ApiResponse[m.GetSnapshotPolicyResource]:
1281
+ return cast(
1282
+ ApiResponse[m.GetSnapshotPolicyResource],
1283
+ resolve_reference(
1284
+ reference,
1285
+ lambda id: self.get_snapshot_policy(id, options=options),
1286
+ lambda match: self.list_snapshot_policies(
1287
+ query=cast(
1288
+ m.ListSnapshotPoliciesQuery, {**reference_scope(scope), **match, "limit": 2}
1289
+ ),
1290
+ options=options,
1291
+ ),
1292
+ True,
1293
+ "snapshot_policy",
1294
+ ),
1295
+ )
1296
+
1297
+ def get_volume(
1298
+ self, volume_id: str, *, options: RequestOptions | None = None
1299
+ ) -> ApiResponse[m.GetVolumeResponse]:
1300
+ "Get volume"
1301
+ return cast(
1302
+ ApiResponse[m.GetVolumeResponse],
1303
+ self._transport.request(
1304
+ "storage",
1305
+ "https://storage.{region}.basaltic.sh",
1306
+ _OPS["getVolume"],
1307
+ "json",
1308
+ {"volume_id": volume_id},
1309
+ UNSET,
1310
+ None,
1311
+ options,
1312
+ ),
1313
+ )
1314
+
1315
+ def get_volume_by_reference(
1316
+ self,
1317
+ reference: str,
1318
+ *,
1319
+ scope: m.GetVolumeScope | None = None,
1320
+ options: RequestOptions | None = None,
1321
+ ) -> ApiResponse[m.GetVolumeResource]:
1322
+ return cast(
1323
+ ApiResponse[m.GetVolumeResource],
1324
+ resolve_reference(
1325
+ reference,
1326
+ lambda id: self.get_volume(id, options=options),
1327
+ lambda match: self.list_volumes(
1328
+ query=cast(m.ListVolumesQuery, {**reference_scope(scope), **match, "limit": 2}),
1329
+ options=options,
1330
+ ),
1331
+ True,
1332
+ "volume",
1333
+ ),
1334
+ )
1335
+
1336
+ def head_bucket(self, bucket: str, *, options: RequestOptions | None = None) -> httpx.Response:
1337
+ "Head bucket"
1338
+ return cast(
1339
+ httpx.Response,
1340
+ self._transport.request(
1341
+ "storage",
1342
+ "https://storage.{region}.basaltic.sh",
1343
+ _OPS["headBucket"],
1344
+ "binary",
1345
+ {"bucket": bucket},
1346
+ UNSET,
1347
+ None,
1348
+ options,
1349
+ ),
1350
+ )
1351
+
1352
+ def head_object(
1353
+ self, bucket: str, key: str, *, options: RequestOptions | None = None
1354
+ ) -> httpx.Response:
1355
+ "Head object"
1356
+ return cast(
1357
+ httpx.Response,
1358
+ self._transport.request(
1359
+ "storage",
1360
+ "https://storage.{region}.basaltic.sh",
1361
+ _OPS["headObject"],
1362
+ "binary",
1363
+ {"bucket": bucket, "key": key},
1364
+ UNSET,
1365
+ None,
1366
+ options,
1367
+ ),
1368
+ )
1369
+
1370
+ def initiate_multipart_upload(
1371
+ self,
1372
+ bucket: str,
1373
+ body: m.InitiateMultipartUploadBody,
1374
+ *,
1375
+ options: RequestOptions | None = None,
1376
+ ) -> ApiResponse[m.InitiateMultipartUploadResponse]:
1377
+ "Initiate a multipart upload"
1378
+ return cast(
1379
+ ApiResponse[m.InitiateMultipartUploadResponse],
1380
+ self._transport.request(
1381
+ "storage",
1382
+ "https://storage.{region}.basaltic.sh",
1383
+ _OPS["initiateMultipartUpload"],
1384
+ "json",
1385
+ {"bucket": bucket},
1386
+ body,
1387
+ None,
1388
+ options,
1389
+ ),
1390
+ )
1391
+
1392
+ def list_buckets(
1393
+ self, *, query: m.ListBucketsQuery | None = None, options: RequestOptions | None = None
1394
+ ) -> Page[m.ListBucketsResponse, m.ListBucketsItem]:
1395
+ "List buckets"
1396
+ return cast(
1397
+ Page[m.ListBucketsResponse, m.ListBucketsItem],
1398
+ self._transport.request(
1399
+ "storage",
1400
+ "https://storage.{region}.basaltic.sh",
1401
+ _OPS["listBuckets"],
1402
+ "page",
1403
+ {},
1404
+ UNSET,
1405
+ query,
1406
+ options,
1407
+ ),
1408
+ )
1409
+
1410
+ def list_buckets_all(
1411
+ self, *, query: m.ListBucketsQuery | None = None, options: RequestOptions | None = None
1412
+ ) -> Iterator[m.ListBucketsItem]:
1413
+ return iterate_pages(
1414
+ lambda marker: self.list_buckets(
1415
+ query=cast(m.ListBucketsQuery, {**(query or {}), "marker": marker}), options=options
1416
+ ),
1417
+ (query or {}).get("marker", ""),
1418
+ )
1419
+
1420
+ def list_multipart_uploads(
1421
+ self,
1422
+ bucket: str,
1423
+ *,
1424
+ query: m.ListMultipartUploadsQuery | None = None,
1425
+ options: RequestOptions | None = None,
1426
+ ) -> Page[m.ListMultipartUploadsResponse, m.ListMultipartUploadsItem]:
1427
+ "List in-flight multipart uploads"
1428
+ return cast(
1429
+ Page[m.ListMultipartUploadsResponse, m.ListMultipartUploadsItem],
1430
+ self._transport.request(
1431
+ "storage",
1432
+ "https://storage.{region}.basaltic.sh",
1433
+ _OPS["listMultipartUploads"],
1434
+ "page",
1435
+ {"bucket": bucket},
1436
+ UNSET,
1437
+ query,
1438
+ options,
1439
+ ),
1440
+ )
1441
+
1442
+ def list_object_versions(
1443
+ self,
1444
+ bucket: str,
1445
+ *,
1446
+ query: m.ListObjectVersionsQuery | None = None,
1447
+ options: RequestOptions | None = None,
1448
+ ) -> Page[m.ListObjectVersionsResponse, m.ListObjectVersionsItem]:
1449
+ "List object versions"
1450
+ return cast(
1451
+ Page[m.ListObjectVersionsResponse, m.ListObjectVersionsItem],
1452
+ self._transport.request(
1453
+ "storage",
1454
+ "https://storage.{region}.basaltic.sh",
1455
+ _OPS["listObjectVersions"],
1456
+ "page",
1457
+ {"bucket": bucket},
1458
+ UNSET,
1459
+ query,
1460
+ options,
1461
+ ),
1462
+ )
1463
+
1464
+ def list_objects(
1465
+ self,
1466
+ bucket: str,
1467
+ *,
1468
+ query: m.ListObjectsQuery | None = None,
1469
+ options: RequestOptions | None = None,
1470
+ ) -> ApiResponse[m.ListObjectsResponse]:
1471
+ "List objects"
1472
+ return cast(
1473
+ ApiResponse[m.ListObjectsResponse],
1474
+ self._transport.request(
1475
+ "storage",
1476
+ "https://storage.{region}.basaltic.sh",
1477
+ _OPS["listObjects"],
1478
+ "json",
1479
+ {"bucket": bucket},
1480
+ UNSET,
1481
+ query,
1482
+ options,
1483
+ ),
1484
+ )
1485
+
1486
+ def list_parts(
1487
+ self, bucket: str, upload_id: str, *, options: RequestOptions | None = None
1488
+ ) -> Page[m.ListPartsResponse, m.ListPartsItem]:
1489
+ "List uploaded parts"
1490
+ return cast(
1491
+ Page[m.ListPartsResponse, m.ListPartsItem],
1492
+ self._transport.request(
1493
+ "storage",
1494
+ "https://storage.{region}.basaltic.sh",
1495
+ _OPS["listParts"],
1496
+ "page",
1497
+ {"bucket": bucket, "upload_id": upload_id},
1498
+ UNSET,
1499
+ None,
1500
+ options,
1501
+ ),
1502
+ )
1503
+
1504
+ def list_snapshot_policies(
1505
+ self,
1506
+ *,
1507
+ query: m.ListSnapshotPoliciesQuery | None = None,
1508
+ options: RequestOptions | None = None,
1509
+ ) -> Page[m.ListSnapshotPoliciesResponse, m.ListSnapshotPoliciesItem]:
1510
+ "List snapshot policies"
1511
+ return cast(
1512
+ Page[m.ListSnapshotPoliciesResponse, m.ListSnapshotPoliciesItem],
1513
+ self._transport.request(
1514
+ "storage",
1515
+ "https://storage.{region}.basaltic.sh",
1516
+ _OPS["listSnapshotPolicies"],
1517
+ "page",
1518
+ {},
1519
+ UNSET,
1520
+ query,
1521
+ options,
1522
+ ),
1523
+ )
1524
+
1525
+ def list_snapshot_policies_all(
1526
+ self,
1527
+ *,
1528
+ query: m.ListSnapshotPoliciesQuery | None = None,
1529
+ options: RequestOptions | None = None,
1530
+ ) -> Iterator[m.ListSnapshotPoliciesItem]:
1531
+ return iterate_pages(
1532
+ lambda marker: self.list_snapshot_policies(
1533
+ query=cast(m.ListSnapshotPoliciesQuery, {**(query or {}), "marker": marker}),
1534
+ options=options,
1535
+ ),
1536
+ (query or {}).get("marker", ""),
1537
+ )
1538
+
1539
+ def list_snapshots(
1540
+ self, *, query: m.ListSnapshotsQuery | None = None, options: RequestOptions | None = None
1541
+ ) -> Page[m.ListSnapshotsResponse, m.ListSnapshotsItem]:
1542
+ "List snapshots"
1543
+ return cast(
1544
+ Page[m.ListSnapshotsResponse, m.ListSnapshotsItem],
1545
+ self._transport.request(
1546
+ "storage",
1547
+ "https://storage.{region}.basaltic.sh",
1548
+ _OPS["listSnapshots"],
1549
+ "page",
1550
+ {},
1551
+ UNSET,
1552
+ query,
1553
+ options,
1554
+ ),
1555
+ )
1556
+
1557
+ def list_snapshots_all(
1558
+ self, *, query: m.ListSnapshotsQuery | None = None, options: RequestOptions | None = None
1559
+ ) -> Iterator[m.ListSnapshotsItem]:
1560
+ return iterate_pages(
1561
+ lambda marker: self.list_snapshots(
1562
+ query=cast(m.ListSnapshotsQuery, {**(query or {}), "marker": marker}),
1563
+ options=options,
1564
+ ),
1565
+ (query or {}).get("marker", ""),
1566
+ )
1567
+
1568
+ def list_volume_types(
1569
+ self, *, query: m.ListVolumeTypesQuery | None = None, options: RequestOptions | None = None
1570
+ ) -> Page[m.ListVolumeTypesResponse, m.ListVolumeTypesItem]:
1571
+ "List volume types"
1572
+ return cast(
1573
+ Page[m.ListVolumeTypesResponse, m.ListVolumeTypesItem],
1574
+ self._transport.request(
1575
+ "storage",
1576
+ "https://storage.{region}.basaltic.sh",
1577
+ _OPS["listVolumeTypes"],
1578
+ "page",
1579
+ {},
1580
+ UNSET,
1581
+ query,
1582
+ options,
1583
+ ),
1584
+ )
1585
+
1586
+ def list_volumes(
1587
+ self, *, query: m.ListVolumesQuery | None = None, options: RequestOptions | None = None
1588
+ ) -> Page[m.ListVolumesResponse, m.ListVolumesItem]:
1589
+ "List volumes"
1590
+ return cast(
1591
+ Page[m.ListVolumesResponse, m.ListVolumesItem],
1592
+ self._transport.request(
1593
+ "storage",
1594
+ "https://storage.{region}.basaltic.sh",
1595
+ _OPS["listVolumes"],
1596
+ "page",
1597
+ {},
1598
+ UNSET,
1599
+ query,
1600
+ options,
1601
+ ),
1602
+ )
1603
+
1604
+ def list_volumes_all(
1605
+ self, *, query: m.ListVolumesQuery | None = None, options: RequestOptions | None = None
1606
+ ) -> Iterator[m.ListVolumesItem]:
1607
+ return iterate_pages(
1608
+ lambda marker: self.list_volumes(
1609
+ query=cast(m.ListVolumesQuery, {**(query or {}), "marker": marker}), options=options
1610
+ ),
1611
+ (query or {}).get("marker", ""),
1612
+ )
1613
+
1614
+ def put_bucket_cors(
1615
+ self, bucket: str, body: m.PutBucketCORSBody, *, options: RequestOptions | None = None
1616
+ ) -> None:
1617
+ "Put bucket CORS configuration"
1618
+ return cast(
1619
+ None,
1620
+ self._transport.request(
1621
+ "storage",
1622
+ "https://storage.{region}.basaltic.sh",
1623
+ _OPS["putBucketCORS"],
1624
+ "discard",
1625
+ {"bucket": bucket},
1626
+ body,
1627
+ None,
1628
+ options,
1629
+ ),
1630
+ )
1631
+
1632
+ def put_bucket_deletion_protection(
1633
+ self,
1634
+ bucket: str,
1635
+ body: m.PutBucketDeletionProtectionBody,
1636
+ *,
1637
+ options: RequestOptions | None = None,
1638
+ ) -> None:
1639
+ "Set bucket deletion protection"
1640
+ return cast(
1641
+ None,
1642
+ self._transport.request(
1643
+ "storage",
1644
+ "https://storage.{region}.basaltic.sh",
1645
+ _OPS["putBucketDeletionProtection"],
1646
+ "discard",
1647
+ {"bucket": bucket},
1648
+ body,
1649
+ None,
1650
+ options,
1651
+ ),
1652
+ )
1653
+
1654
+ def put_bucket_encryption(
1655
+ self, bucket: str, body: m.PutBucketEncryptionBody, *, options: RequestOptions | None = None
1656
+ ) -> None:
1657
+ "Put bucket encryption configuration"
1658
+ return cast(
1659
+ None,
1660
+ self._transport.request(
1661
+ "storage",
1662
+ "https://storage.{region}.basaltic.sh",
1663
+ _OPS["putBucketEncryption"],
1664
+ "discard",
1665
+ {"bucket": bucket},
1666
+ body,
1667
+ None,
1668
+ options,
1669
+ ),
1670
+ )
1671
+
1672
+ def put_bucket_lifecycle(
1673
+ self, bucket: str, body: m.PutBucketLifecycleBody, *, options: RequestOptions
1674
+ ) -> None:
1675
+ "Put bucket lifecycle configuration"
1676
+ return cast(
1677
+ None,
1678
+ self._transport.request(
1679
+ "storage",
1680
+ "https://storage.{region}.basaltic.sh",
1681
+ _OPS["putBucketLifecycle"],
1682
+ "discard",
1683
+ {"bucket": bucket},
1684
+ body,
1685
+ None,
1686
+ options,
1687
+ ),
1688
+ )
1689
+
1690
+ def put_bucket_object_lock(
1691
+ self, bucket: str, body: m.PutBucketObjectLockBody, *, options: RequestOptions | None = None
1692
+ ) -> None:
1693
+ "Put bucket object-lock configuration"
1694
+ return cast(
1695
+ None,
1696
+ self._transport.request(
1697
+ "storage",
1698
+ "https://storage.{region}.basaltic.sh",
1699
+ _OPS["putBucketObjectLock"],
1700
+ "discard",
1701
+ {"bucket": bucket},
1702
+ body,
1703
+ None,
1704
+ options,
1705
+ ),
1706
+ )
1707
+
1708
+ def put_bucket_policy(
1709
+ self, bucket: str, body: m.PutBucketPolicyBody, *, options: RequestOptions | None = None
1710
+ ) -> None:
1711
+ "Put bucket policy"
1712
+ return cast(
1713
+ None,
1714
+ self._transport.request(
1715
+ "storage",
1716
+ "https://storage.{region}.basaltic.sh",
1717
+ _OPS["putBucketPolicy"],
1718
+ "discard",
1719
+ {"bucket": bucket},
1720
+ body,
1721
+ None,
1722
+ options,
1723
+ ),
1724
+ )
1725
+
1726
+ def put_bucket_tagging(
1727
+ self, bucket: str, body: m.PutBucketTaggingBody, *, options: RequestOptions | None = None
1728
+ ) -> None:
1729
+ "Put bucket tag set"
1730
+ return cast(
1731
+ None,
1732
+ self._transport.request(
1733
+ "storage",
1734
+ "https://storage.{region}.basaltic.sh",
1735
+ _OPS["putBucketTagging"],
1736
+ "discard",
1737
+ {"bucket": bucket},
1738
+ body,
1739
+ None,
1740
+ options,
1741
+ ),
1742
+ )
1743
+
1744
+ def put_bucket_versioning(
1745
+ self, bucket: str, body: m.PutBucketVersioningBody, *, options: RequestOptions | None = None
1746
+ ) -> None:
1747
+ "Set bucket versioning state"
1748
+ return cast(
1749
+ None,
1750
+ self._transport.request(
1751
+ "storage",
1752
+ "https://storage.{region}.basaltic.sh",
1753
+ _OPS["putBucketVersioning"],
1754
+ "discard",
1755
+ {"bucket": bucket},
1756
+ body,
1757
+ None,
1758
+ options,
1759
+ ),
1760
+ )
1761
+
1762
+ def put_object(
1763
+ self, bucket: str, key: str, body: BinaryBody, *, options: RequestOptions | None = None
1764
+ ) -> ApiResponse[m.PutObjectResponse]:
1765
+ "Upload object"
1766
+ return cast(
1767
+ ApiResponse[m.PutObjectResponse],
1768
+ self._transport.request(
1769
+ "storage",
1770
+ "https://storage.{region}.basaltic.sh",
1771
+ _OPS["putObject"],
1772
+ "json",
1773
+ {"bucket": bucket, "key": key},
1774
+ body,
1775
+ None,
1776
+ options,
1777
+ ),
1778
+ )
1779
+
1780
+ def restore_bucket(self, bucket: str, *, options: RequestOptions | None = None) -> None:
1781
+ "Restore a bucket pending deletion"
1782
+ return cast(
1783
+ None,
1784
+ self._transport.request(
1785
+ "storage",
1786
+ "https://storage.{region}.basaltic.sh",
1787
+ _OPS["restoreBucket"],
1788
+ "discard",
1789
+ {"bucket": bucket},
1790
+ UNSET,
1791
+ None,
1792
+ options,
1793
+ ),
1794
+ )
1795
+
1796
+ def update_snapshot(
1797
+ self, snapshot_id: str, body: m.UpdateSnapshotBody, *, options: RequestOptions | None = None
1798
+ ) -> ApiResponse[m.UpdateSnapshotResponse]:
1799
+ "Update snapshot metadata"
1800
+ return cast(
1801
+ ApiResponse[m.UpdateSnapshotResponse],
1802
+ self._transport.request(
1803
+ "storage",
1804
+ "https://storage.{region}.basaltic.sh",
1805
+ _OPS["updateSnapshot"],
1806
+ "json",
1807
+ {"snapshot_id": snapshot_id},
1808
+ body,
1809
+ None,
1810
+ options,
1811
+ ),
1812
+ )
1813
+
1814
+ def update_snapshot_policy(
1815
+ self,
1816
+ policy_id: str,
1817
+ body: m.UpdateSnapshotPolicyBody,
1818
+ *,
1819
+ options: RequestOptions | None = None,
1820
+ ) -> ApiResponse[m.UpdateSnapshotPolicyResponse]:
1821
+ "Update snapshot policy"
1822
+ return cast(
1823
+ ApiResponse[m.UpdateSnapshotPolicyResponse],
1824
+ self._transport.request(
1825
+ "storage",
1826
+ "https://storage.{region}.basaltic.sh",
1827
+ _OPS["updateSnapshotPolicy"],
1828
+ "json",
1829
+ {"policy_id": policy_id},
1830
+ body,
1831
+ None,
1832
+ options,
1833
+ ),
1834
+ )
1835
+
1836
+ def update_volume(
1837
+ self, volume_id: str, body: m.UpdateVolumeBody, *, options: RequestOptions | None = None
1838
+ ) -> ApiResponse[m.UpdateVolumeResponse]:
1839
+ "Update volume metadata"
1840
+ return cast(
1841
+ ApiResponse[m.UpdateVolumeResponse],
1842
+ self._transport.request(
1843
+ "storage",
1844
+ "https://storage.{region}.basaltic.sh",
1845
+ _OPS["updateVolume"],
1846
+ "json",
1847
+ {"volume_id": volume_id},
1848
+ body,
1849
+ None,
1850
+ options,
1851
+ ),
1852
+ )
1853
+
1854
+ def update_volume_performance(
1855
+ self,
1856
+ volume_id: str,
1857
+ body: m.UpdateVolumePerformanceBody,
1858
+ *,
1859
+ options: RequestOptions | None = None,
1860
+ ) -> ApiResponse[m.UpdateVolumePerformanceResponse]:
1861
+ "Update provisioned performance"
1862
+ return cast(
1863
+ ApiResponse[m.UpdateVolumePerformanceResponse],
1864
+ self._transport.request(
1865
+ "storage",
1866
+ "https://storage.{region}.basaltic.sh",
1867
+ _OPS["updateVolumePerformance"],
1868
+ "json",
1869
+ {"volume_id": volume_id},
1870
+ body,
1871
+ None,
1872
+ options,
1873
+ ),
1874
+ )
1875
+
1876
+ def upload_part(
1877
+ self,
1878
+ bucket: str,
1879
+ upload_id: str,
1880
+ part_number: str,
1881
+ body: BinaryBody,
1882
+ *,
1883
+ options: RequestOptions | None = None,
1884
+ ) -> ApiResponse[m.UploadPartResponse]:
1885
+ "Upload a part"
1886
+ return cast(
1887
+ ApiResponse[m.UploadPartResponse],
1888
+ self._transport.request(
1889
+ "storage",
1890
+ "https://storage.{region}.basaltic.sh",
1891
+ _OPS["uploadPart"],
1892
+ "json",
1893
+ {"bucket": bucket, "upload_id": upload_id, "part_number": part_number},
1894
+ body,
1895
+ None,
1896
+ options,
1897
+ ),
1898
+ )
1899
+
1900
+
1901
+ class AsyncStorageService:
1902
+ def __init__(self, transport: AsyncTransport) -> None:
1903
+ self._transport = transport
1904
+
1905
+ async def abort_multipart_upload(
1906
+ self, bucket: str, upload_id: str, *, options: RequestOptions | None = None
1907
+ ) -> None:
1908
+ "Abort a multipart upload"
1909
+ return cast(
1910
+ None,
1911
+ await self._transport.request(
1912
+ "storage",
1913
+ "https://storage.{region}.basaltic.sh",
1914
+ _OPS["abortMultipartUpload"],
1915
+ "discard",
1916
+ {"bucket": bucket, "upload_id": upload_id},
1917
+ UNSET,
1918
+ None,
1919
+ options,
1920
+ ),
1921
+ )
1922
+
1923
+ async def complete_multipart_upload(
1924
+ self,
1925
+ bucket: str,
1926
+ upload_id: str,
1927
+ body: m.CompleteMultipartUploadBody,
1928
+ *,
1929
+ options: RequestOptions | None = None,
1930
+ ) -> ApiResponse[m.CompleteMultipartUploadResponse]:
1931
+ "Complete a multipart upload"
1932
+ return cast(
1933
+ ApiResponse[m.CompleteMultipartUploadResponse],
1934
+ await self._transport.request(
1935
+ "storage",
1936
+ "https://storage.{region}.basaltic.sh",
1937
+ _OPS["completeMultipartUpload"],
1938
+ "json",
1939
+ {"bucket": bucket, "upload_id": upload_id},
1940
+ body,
1941
+ None,
1942
+ options,
1943
+ ),
1944
+ )
1945
+
1946
+ async def create_bucket(
1947
+ self, body: m.CreateBucketBody, *, options: RequestOptions | None = None
1948
+ ) -> ApiResponse[m.CreateBucketResponse]:
1949
+ "Create bucket"
1950
+ return cast(
1951
+ ApiResponse[m.CreateBucketResponse],
1952
+ await self._transport.request(
1953
+ "storage",
1954
+ "https://storage.{region}.basaltic.sh",
1955
+ _OPS["createBucket"],
1956
+ "json",
1957
+ {},
1958
+ body,
1959
+ None,
1960
+ options,
1961
+ ),
1962
+ )
1963
+
1964
+ async def create_snapshot(
1965
+ self, body: m.CreateSnapshotBody, *, options: RequestOptions | None = None
1966
+ ) -> ApiResponse[m.CreateSnapshotResponse]:
1967
+ "Create snapshot"
1968
+ return cast(
1969
+ ApiResponse[m.CreateSnapshotResponse],
1970
+ await self._transport.request(
1971
+ "storage",
1972
+ "https://storage.{region}.basaltic.sh",
1973
+ _OPS["createSnapshot"],
1974
+ "json",
1975
+ {},
1976
+ body,
1977
+ None,
1978
+ options,
1979
+ ),
1980
+ )
1981
+
1982
+ async def create_snapshot_policy(
1983
+ self, body: m.CreateSnapshotPolicyBody, *, options: RequestOptions | None = None
1984
+ ) -> ApiResponse[m.CreateSnapshotPolicyResponse]:
1985
+ "Create snapshot policy"
1986
+ return cast(
1987
+ ApiResponse[m.CreateSnapshotPolicyResponse],
1988
+ await self._transport.request(
1989
+ "storage",
1990
+ "https://storage.{region}.basaltic.sh",
1991
+ _OPS["createSnapshotPolicy"],
1992
+ "json",
1993
+ {},
1994
+ body,
1995
+ None,
1996
+ options,
1997
+ ),
1998
+ )
1999
+
2000
+ async def create_volume(
2001
+ self, body: m.CreateVolumeBody, *, options: RequestOptions | None = None
2002
+ ) -> ApiResponse[m.CreateVolumeResponse]:
2003
+ "Create volume"
2004
+ return cast(
2005
+ ApiResponse[m.CreateVolumeResponse],
2006
+ await self._transport.request(
2007
+ "storage",
2008
+ "https://storage.{region}.basaltic.sh",
2009
+ _OPS["createVolume"],
2010
+ "json",
2011
+ {},
2012
+ body,
2013
+ None,
2014
+ options,
2015
+ ),
2016
+ )
2017
+
2018
+ async def delete_bucket(
2019
+ self, bucket: str, *, options: RequestOptions | None = None
2020
+ ) -> ApiResponse[m.DeleteBucketResponse]:
2021
+ "Delete bucket"
2022
+ return cast(
2023
+ ApiResponse[m.DeleteBucketResponse],
2024
+ await self._transport.request(
2025
+ "storage",
2026
+ "https://storage.{region}.basaltic.sh",
2027
+ _OPS["deleteBucket"],
2028
+ "json",
2029
+ {"bucket": bucket},
2030
+ UNSET,
2031
+ None,
2032
+ options,
2033
+ ),
2034
+ )
2035
+
2036
+ async def delete_bucket_cors(
2037
+ self, bucket: str, *, options: RequestOptions | None = None
2038
+ ) -> None:
2039
+ "Delete bucket CORS configuration"
2040
+ return cast(
2041
+ None,
2042
+ await self._transport.request(
2043
+ "storage",
2044
+ "https://storage.{region}.basaltic.sh",
2045
+ _OPS["deleteBucketCORS"],
2046
+ "discard",
2047
+ {"bucket": bucket},
2048
+ UNSET,
2049
+ None,
2050
+ options,
2051
+ ),
2052
+ )
2053
+
2054
+ async def delete_bucket_encryption(
2055
+ self, bucket: str, *, options: RequestOptions | None = None
2056
+ ) -> None:
2057
+ "Delete bucket encryption configuration"
2058
+ return cast(
2059
+ None,
2060
+ await self._transport.request(
2061
+ "storage",
2062
+ "https://storage.{region}.basaltic.sh",
2063
+ _OPS["deleteBucketEncryption"],
2064
+ "discard",
2065
+ {"bucket": bucket},
2066
+ UNSET,
2067
+ None,
2068
+ options,
2069
+ ),
2070
+ )
2071
+
2072
+ async def delete_bucket_lifecycle(self, bucket: str, *, options: RequestOptions) -> None:
2073
+ "Delete bucket lifecycle configuration"
2074
+ return cast(
2075
+ None,
2076
+ await self._transport.request(
2077
+ "storage",
2078
+ "https://storage.{region}.basaltic.sh",
2079
+ _OPS["deleteBucketLifecycle"],
2080
+ "discard",
2081
+ {"bucket": bucket},
2082
+ UNSET,
2083
+ None,
2084
+ options,
2085
+ ),
2086
+ )
2087
+
2088
+ async def delete_bucket_object_lock(
2089
+ self, bucket: str, *, options: RequestOptions | None = None
2090
+ ) -> None:
2091
+ "Delete bucket object-lock configuration"
2092
+ return cast(
2093
+ None,
2094
+ await self._transport.request(
2095
+ "storage",
2096
+ "https://storage.{region}.basaltic.sh",
2097
+ _OPS["deleteBucketObjectLock"],
2098
+ "discard",
2099
+ {"bucket": bucket},
2100
+ UNSET,
2101
+ None,
2102
+ options,
2103
+ ),
2104
+ )
2105
+
2106
+ async def delete_bucket_policy(
2107
+ self, bucket: str, *, options: RequestOptions | None = None
2108
+ ) -> None:
2109
+ "Delete bucket policy"
2110
+ return cast(
2111
+ None,
2112
+ await self._transport.request(
2113
+ "storage",
2114
+ "https://storage.{region}.basaltic.sh",
2115
+ _OPS["deleteBucketPolicy"],
2116
+ "discard",
2117
+ {"bucket": bucket},
2118
+ UNSET,
2119
+ None,
2120
+ options,
2121
+ ),
2122
+ )
2123
+
2124
+ async def delete_bucket_tagging(
2125
+ self, bucket: str, *, options: RequestOptions | None = None
2126
+ ) -> None:
2127
+ "Delete bucket tag set"
2128
+ return cast(
2129
+ None,
2130
+ await self._transport.request(
2131
+ "storage",
2132
+ "https://storage.{region}.basaltic.sh",
2133
+ _OPS["deleteBucketTagging"],
2134
+ "discard",
2135
+ {"bucket": bucket},
2136
+ UNSET,
2137
+ None,
2138
+ options,
2139
+ ),
2140
+ )
2141
+
2142
+ async def delete_object(
2143
+ self, bucket: str, key: str, *, options: RequestOptions | None = None
2144
+ ) -> None:
2145
+ "Delete object"
2146
+ return cast(
2147
+ None,
2148
+ await self._transport.request(
2149
+ "storage",
2150
+ "https://storage.{region}.basaltic.sh",
2151
+ _OPS["deleteObject"],
2152
+ "discard",
2153
+ {"bucket": bucket, "key": key},
2154
+ UNSET,
2155
+ None,
2156
+ options,
2157
+ ),
2158
+ )
2159
+
2160
+ async def delete_snapshot(
2161
+ self, snapshot_id: str, *, options: RequestOptions | None = None
2162
+ ) -> None:
2163
+ "Delete snapshot"
2164
+ return cast(
2165
+ None,
2166
+ await self._transport.request(
2167
+ "storage",
2168
+ "https://storage.{region}.basaltic.sh",
2169
+ _OPS["deleteSnapshot"],
2170
+ "discard",
2171
+ {"snapshot_id": snapshot_id},
2172
+ UNSET,
2173
+ None,
2174
+ options,
2175
+ ),
2176
+ )
2177
+
2178
+ async def delete_snapshot_policy(
2179
+ self, policy_id: str, *, options: RequestOptions | None = None
2180
+ ) -> None:
2181
+ "Delete snapshot policy"
2182
+ return cast(
2183
+ None,
2184
+ await self._transport.request(
2185
+ "storage",
2186
+ "https://storage.{region}.basaltic.sh",
2187
+ _OPS["deleteSnapshotPolicy"],
2188
+ "discard",
2189
+ {"policy_id": policy_id},
2190
+ UNSET,
2191
+ None,
2192
+ options,
2193
+ ),
2194
+ )
2195
+
2196
+ async def delete_volume(self, volume_id: str, *, options: RequestOptions | None = None) -> None:
2197
+ "Delete volume"
2198
+ return cast(
2199
+ None,
2200
+ await self._transport.request(
2201
+ "storage",
2202
+ "https://storage.{region}.basaltic.sh",
2203
+ _OPS["deleteVolume"],
2204
+ "discard",
2205
+ {"volume_id": volume_id},
2206
+ UNSET,
2207
+ None,
2208
+ options,
2209
+ ),
2210
+ )
2211
+
2212
+ async def extend_volume(
2213
+ self, volume_id: str, body: m.ExtendVolumeBody, *, options: RequestOptions | None = None
2214
+ ) -> ApiResponse[m.ExtendVolumeResponse]:
2215
+ "Extend volume"
2216
+ return cast(
2217
+ ApiResponse[m.ExtendVolumeResponse],
2218
+ await self._transport.request(
2219
+ "storage",
2220
+ "https://storage.{region}.basaltic.sh",
2221
+ _OPS["extendVolume"],
2222
+ "json",
2223
+ {"volume_id": volume_id},
2224
+ body,
2225
+ None,
2226
+ options,
2227
+ ),
2228
+ )
2229
+
2230
+ async def get_bucket_cors(
2231
+ self, bucket: str, *, options: RequestOptions | None = None
2232
+ ) -> ApiResponse[m.GetBucketCORSResponse]:
2233
+ "Get bucket CORS configuration"
2234
+ return cast(
2235
+ ApiResponse[m.GetBucketCORSResponse],
2236
+ await self._transport.request(
2237
+ "storage",
2238
+ "https://storage.{region}.basaltic.sh",
2239
+ _OPS["getBucketCORS"],
2240
+ "json",
2241
+ {"bucket": bucket},
2242
+ UNSET,
2243
+ None,
2244
+ options,
2245
+ ),
2246
+ )
2247
+
2248
+ async def get_bucket_encryption(
2249
+ self, bucket: str, *, options: RequestOptions | None = None
2250
+ ) -> ApiResponse[m.GetBucketEncryptionResponse]:
2251
+ "Get bucket encryption configuration"
2252
+ return cast(
2253
+ ApiResponse[m.GetBucketEncryptionResponse],
2254
+ await self._transport.request(
2255
+ "storage",
2256
+ "https://storage.{region}.basaltic.sh",
2257
+ _OPS["getBucketEncryption"],
2258
+ "json",
2259
+ {"bucket": bucket},
2260
+ UNSET,
2261
+ None,
2262
+ options,
2263
+ ),
2264
+ )
2265
+
2266
+ async def get_bucket_lifecycle(
2267
+ self, bucket: str, *, options: RequestOptions | None = None
2268
+ ) -> ApiResponse[m.GetBucketLifecycleResponse]:
2269
+ "Get bucket lifecycle configuration"
2270
+ return cast(
2271
+ ApiResponse[m.GetBucketLifecycleResponse],
2272
+ await self._transport.request(
2273
+ "storage",
2274
+ "https://storage.{region}.basaltic.sh",
2275
+ _OPS["getBucketLifecycle"],
2276
+ "json",
2277
+ {"bucket": bucket},
2278
+ UNSET,
2279
+ None,
2280
+ options,
2281
+ ),
2282
+ )
2283
+
2284
+ async def get_bucket_object_lock(
2285
+ self, bucket: str, *, options: RequestOptions | None = None
2286
+ ) -> ApiResponse[m.GetBucketObjectLockResponse]:
2287
+ "Get bucket object-lock configuration"
2288
+ return cast(
2289
+ ApiResponse[m.GetBucketObjectLockResponse],
2290
+ await self._transport.request(
2291
+ "storage",
2292
+ "https://storage.{region}.basaltic.sh",
2293
+ _OPS["getBucketObjectLock"],
2294
+ "json",
2295
+ {"bucket": bucket},
2296
+ UNSET,
2297
+ None,
2298
+ options,
2299
+ ),
2300
+ )
2301
+
2302
+ async def get_bucket_policy(
2303
+ self, bucket: str, *, options: RequestOptions | None = None
2304
+ ) -> ApiResponse[m.GetBucketPolicyResponse]:
2305
+ "Get bucket policy"
2306
+ return cast(
2307
+ ApiResponse[m.GetBucketPolicyResponse],
2308
+ await self._transport.request(
2309
+ "storage",
2310
+ "https://storage.{region}.basaltic.sh",
2311
+ _OPS["getBucketPolicy"],
2312
+ "json",
2313
+ {"bucket": bucket},
2314
+ UNSET,
2315
+ None,
2316
+ options,
2317
+ ),
2318
+ )
2319
+
2320
+ async def get_bucket_tagging(
2321
+ self, bucket: str, *, options: RequestOptions | None = None
2322
+ ) -> ApiResponse[m.GetBucketTaggingResponse]:
2323
+ "Get bucket tag set"
2324
+ return cast(
2325
+ ApiResponse[m.GetBucketTaggingResponse],
2326
+ await self._transport.request(
2327
+ "storage",
2328
+ "https://storage.{region}.basaltic.sh",
2329
+ _OPS["getBucketTagging"],
2330
+ "json",
2331
+ {"bucket": bucket},
2332
+ UNSET,
2333
+ None,
2334
+ options,
2335
+ ),
2336
+ )
2337
+
2338
+ async def get_bucket_versioning(
2339
+ self, bucket: str, *, options: RequestOptions | None = None
2340
+ ) -> ApiResponse[m.GetBucketVersioningResponse]:
2341
+ "Get bucket versioning state"
2342
+ return cast(
2343
+ ApiResponse[m.GetBucketVersioningResponse],
2344
+ await self._transport.request(
2345
+ "storage",
2346
+ "https://storage.{region}.basaltic.sh",
2347
+ _OPS["getBucketVersioning"],
2348
+ "json",
2349
+ {"bucket": bucket},
2350
+ UNSET,
2351
+ None,
2352
+ options,
2353
+ ),
2354
+ )
2355
+
2356
+ async def get_object(
2357
+ self, bucket: str, key: str, *, options: RequestOptions | None = None
2358
+ ) -> httpx.Response:
2359
+ "Download object"
2360
+ return cast(
2361
+ httpx.Response,
2362
+ await self._transport.request(
2363
+ "storage",
2364
+ "https://storage.{region}.basaltic.sh",
2365
+ _OPS["getObject"],
2366
+ "binary",
2367
+ {"bucket": bucket, "key": key},
2368
+ UNSET,
2369
+ None,
2370
+ options,
2371
+ ),
2372
+ )
2373
+
2374
+ async def get_snapshot(
2375
+ self, snapshot_id: str, *, options: RequestOptions | None = None
2376
+ ) -> ApiResponse[m.GetSnapshotResponse]:
2377
+ "Get snapshot"
2378
+ return cast(
2379
+ ApiResponse[m.GetSnapshotResponse],
2380
+ await self._transport.request(
2381
+ "storage",
2382
+ "https://storage.{region}.basaltic.sh",
2383
+ _OPS["getSnapshot"],
2384
+ "json",
2385
+ {"snapshot_id": snapshot_id},
2386
+ UNSET,
2387
+ None,
2388
+ options,
2389
+ ),
2390
+ )
2391
+
2392
+ async def get_snapshot_by_reference(
2393
+ self,
2394
+ reference: str,
2395
+ *,
2396
+ scope: m.GetSnapshotScope | None = None,
2397
+ options: RequestOptions | None = None,
2398
+ ) -> ApiResponse[m.GetSnapshotResource]:
2399
+ return cast(
2400
+ ApiResponse[m.GetSnapshotResource],
2401
+ await aresolve_reference(
2402
+ reference,
2403
+ lambda id: self.get_snapshot(id, options=options),
2404
+ lambda match: self.list_snapshots(
2405
+ query=cast(
2406
+ m.ListSnapshotsQuery, {**reference_scope(scope), **match, "limit": 2}
2407
+ ),
2408
+ options=options,
2409
+ ),
2410
+ True,
2411
+ "snapshot",
2412
+ ),
2413
+ )
2414
+
2415
+ async def get_snapshot_policy(
2416
+ self, policy_id: str, *, options: RequestOptions | None = None
2417
+ ) -> ApiResponse[m.GetSnapshotPolicyResponse]:
2418
+ "Get snapshot policy"
2419
+ return cast(
2420
+ ApiResponse[m.GetSnapshotPolicyResponse],
2421
+ await self._transport.request(
2422
+ "storage",
2423
+ "https://storage.{region}.basaltic.sh",
2424
+ _OPS["getSnapshotPolicy"],
2425
+ "json",
2426
+ {"policy_id": policy_id},
2427
+ UNSET,
2428
+ None,
2429
+ options,
2430
+ ),
2431
+ )
2432
+
2433
+ async def get_snapshot_policy_by_reference(
2434
+ self,
2435
+ reference: str,
2436
+ *,
2437
+ scope: m.GetSnapshotPolicyScope | None = None,
2438
+ options: RequestOptions | None = None,
2439
+ ) -> ApiResponse[m.GetSnapshotPolicyResource]:
2440
+ return cast(
2441
+ ApiResponse[m.GetSnapshotPolicyResource],
2442
+ await aresolve_reference(
2443
+ reference,
2444
+ lambda id: self.get_snapshot_policy(id, options=options),
2445
+ lambda match: self.list_snapshot_policies(
2446
+ query=cast(
2447
+ m.ListSnapshotPoliciesQuery, {**reference_scope(scope), **match, "limit": 2}
2448
+ ),
2449
+ options=options,
2450
+ ),
2451
+ True,
2452
+ "snapshot_policy",
2453
+ ),
2454
+ )
2455
+
2456
+ async def get_volume(
2457
+ self, volume_id: str, *, options: RequestOptions | None = None
2458
+ ) -> ApiResponse[m.GetVolumeResponse]:
2459
+ "Get volume"
2460
+ return cast(
2461
+ ApiResponse[m.GetVolumeResponse],
2462
+ await self._transport.request(
2463
+ "storage",
2464
+ "https://storage.{region}.basaltic.sh",
2465
+ _OPS["getVolume"],
2466
+ "json",
2467
+ {"volume_id": volume_id},
2468
+ UNSET,
2469
+ None,
2470
+ options,
2471
+ ),
2472
+ )
2473
+
2474
+ async def get_volume_by_reference(
2475
+ self,
2476
+ reference: str,
2477
+ *,
2478
+ scope: m.GetVolumeScope | None = None,
2479
+ options: RequestOptions | None = None,
2480
+ ) -> ApiResponse[m.GetVolumeResource]:
2481
+ return cast(
2482
+ ApiResponse[m.GetVolumeResource],
2483
+ await aresolve_reference(
2484
+ reference,
2485
+ lambda id: self.get_volume(id, options=options),
2486
+ lambda match: self.list_volumes(
2487
+ query=cast(m.ListVolumesQuery, {**reference_scope(scope), **match, "limit": 2}),
2488
+ options=options,
2489
+ ),
2490
+ True,
2491
+ "volume",
2492
+ ),
2493
+ )
2494
+
2495
+ async def head_bucket(
2496
+ self, bucket: str, *, options: RequestOptions | None = None
2497
+ ) -> httpx.Response:
2498
+ "Head bucket"
2499
+ return cast(
2500
+ httpx.Response,
2501
+ await self._transport.request(
2502
+ "storage",
2503
+ "https://storage.{region}.basaltic.sh",
2504
+ _OPS["headBucket"],
2505
+ "binary",
2506
+ {"bucket": bucket},
2507
+ UNSET,
2508
+ None,
2509
+ options,
2510
+ ),
2511
+ )
2512
+
2513
+ async def head_object(
2514
+ self, bucket: str, key: str, *, options: RequestOptions | None = None
2515
+ ) -> httpx.Response:
2516
+ "Head object"
2517
+ return cast(
2518
+ httpx.Response,
2519
+ await self._transport.request(
2520
+ "storage",
2521
+ "https://storage.{region}.basaltic.sh",
2522
+ _OPS["headObject"],
2523
+ "binary",
2524
+ {"bucket": bucket, "key": key},
2525
+ UNSET,
2526
+ None,
2527
+ options,
2528
+ ),
2529
+ )
2530
+
2531
+ async def initiate_multipart_upload(
2532
+ self,
2533
+ bucket: str,
2534
+ body: m.InitiateMultipartUploadBody,
2535
+ *,
2536
+ options: RequestOptions | None = None,
2537
+ ) -> ApiResponse[m.InitiateMultipartUploadResponse]:
2538
+ "Initiate a multipart upload"
2539
+ return cast(
2540
+ ApiResponse[m.InitiateMultipartUploadResponse],
2541
+ await self._transport.request(
2542
+ "storage",
2543
+ "https://storage.{region}.basaltic.sh",
2544
+ _OPS["initiateMultipartUpload"],
2545
+ "json",
2546
+ {"bucket": bucket},
2547
+ body,
2548
+ None,
2549
+ options,
2550
+ ),
2551
+ )
2552
+
2553
+ async def list_buckets(
2554
+ self, *, query: m.ListBucketsQuery | None = None, options: RequestOptions | None = None
2555
+ ) -> Page[m.ListBucketsResponse, m.ListBucketsItem]:
2556
+ "List buckets"
2557
+ return cast(
2558
+ Page[m.ListBucketsResponse, m.ListBucketsItem],
2559
+ await self._transport.request(
2560
+ "storage",
2561
+ "https://storage.{region}.basaltic.sh",
2562
+ _OPS["listBuckets"],
2563
+ "page",
2564
+ {},
2565
+ UNSET,
2566
+ query,
2567
+ options,
2568
+ ),
2569
+ )
2570
+
2571
+ def list_buckets_all(
2572
+ self, *, query: m.ListBucketsQuery | None = None, options: RequestOptions | None = None
2573
+ ) -> AsyncIterator[m.ListBucketsItem]:
2574
+ return aiterate_pages(
2575
+ lambda marker: self.list_buckets(
2576
+ query=cast(m.ListBucketsQuery, {**(query or {}), "marker": marker}), options=options
2577
+ ),
2578
+ (query or {}).get("marker", ""),
2579
+ )
2580
+
2581
+ async def list_multipart_uploads(
2582
+ self,
2583
+ bucket: str,
2584
+ *,
2585
+ query: m.ListMultipartUploadsQuery | None = None,
2586
+ options: RequestOptions | None = None,
2587
+ ) -> Page[m.ListMultipartUploadsResponse, m.ListMultipartUploadsItem]:
2588
+ "List in-flight multipart uploads"
2589
+ return cast(
2590
+ Page[m.ListMultipartUploadsResponse, m.ListMultipartUploadsItem],
2591
+ await self._transport.request(
2592
+ "storage",
2593
+ "https://storage.{region}.basaltic.sh",
2594
+ _OPS["listMultipartUploads"],
2595
+ "page",
2596
+ {"bucket": bucket},
2597
+ UNSET,
2598
+ query,
2599
+ options,
2600
+ ),
2601
+ )
2602
+
2603
+ async def list_object_versions(
2604
+ self,
2605
+ bucket: str,
2606
+ *,
2607
+ query: m.ListObjectVersionsQuery | None = None,
2608
+ options: RequestOptions | None = None,
2609
+ ) -> Page[m.ListObjectVersionsResponse, m.ListObjectVersionsItem]:
2610
+ "List object versions"
2611
+ return cast(
2612
+ Page[m.ListObjectVersionsResponse, m.ListObjectVersionsItem],
2613
+ await self._transport.request(
2614
+ "storage",
2615
+ "https://storage.{region}.basaltic.sh",
2616
+ _OPS["listObjectVersions"],
2617
+ "page",
2618
+ {"bucket": bucket},
2619
+ UNSET,
2620
+ query,
2621
+ options,
2622
+ ),
2623
+ )
2624
+
2625
+ async def list_objects(
2626
+ self,
2627
+ bucket: str,
2628
+ *,
2629
+ query: m.ListObjectsQuery | None = None,
2630
+ options: RequestOptions | None = None,
2631
+ ) -> ApiResponse[m.ListObjectsResponse]:
2632
+ "List objects"
2633
+ return cast(
2634
+ ApiResponse[m.ListObjectsResponse],
2635
+ await self._transport.request(
2636
+ "storage",
2637
+ "https://storage.{region}.basaltic.sh",
2638
+ _OPS["listObjects"],
2639
+ "json",
2640
+ {"bucket": bucket},
2641
+ UNSET,
2642
+ query,
2643
+ options,
2644
+ ),
2645
+ )
2646
+
2647
+ async def list_parts(
2648
+ self, bucket: str, upload_id: str, *, options: RequestOptions | None = None
2649
+ ) -> Page[m.ListPartsResponse, m.ListPartsItem]:
2650
+ "List uploaded parts"
2651
+ return cast(
2652
+ Page[m.ListPartsResponse, m.ListPartsItem],
2653
+ await self._transport.request(
2654
+ "storage",
2655
+ "https://storage.{region}.basaltic.sh",
2656
+ _OPS["listParts"],
2657
+ "page",
2658
+ {"bucket": bucket, "upload_id": upload_id},
2659
+ UNSET,
2660
+ None,
2661
+ options,
2662
+ ),
2663
+ )
2664
+
2665
+ async def list_snapshot_policies(
2666
+ self,
2667
+ *,
2668
+ query: m.ListSnapshotPoliciesQuery | None = None,
2669
+ options: RequestOptions | None = None,
2670
+ ) -> Page[m.ListSnapshotPoliciesResponse, m.ListSnapshotPoliciesItem]:
2671
+ "List snapshot policies"
2672
+ return cast(
2673
+ Page[m.ListSnapshotPoliciesResponse, m.ListSnapshotPoliciesItem],
2674
+ await self._transport.request(
2675
+ "storage",
2676
+ "https://storage.{region}.basaltic.sh",
2677
+ _OPS["listSnapshotPolicies"],
2678
+ "page",
2679
+ {},
2680
+ UNSET,
2681
+ query,
2682
+ options,
2683
+ ),
2684
+ )
2685
+
2686
+ def list_snapshot_policies_all(
2687
+ self,
2688
+ *,
2689
+ query: m.ListSnapshotPoliciesQuery | None = None,
2690
+ options: RequestOptions | None = None,
2691
+ ) -> AsyncIterator[m.ListSnapshotPoliciesItem]:
2692
+ return aiterate_pages(
2693
+ lambda marker: self.list_snapshot_policies(
2694
+ query=cast(m.ListSnapshotPoliciesQuery, {**(query or {}), "marker": marker}),
2695
+ options=options,
2696
+ ),
2697
+ (query or {}).get("marker", ""),
2698
+ )
2699
+
2700
+ async def list_snapshots(
2701
+ self, *, query: m.ListSnapshotsQuery | None = None, options: RequestOptions | None = None
2702
+ ) -> Page[m.ListSnapshotsResponse, m.ListSnapshotsItem]:
2703
+ "List snapshots"
2704
+ return cast(
2705
+ Page[m.ListSnapshotsResponse, m.ListSnapshotsItem],
2706
+ await self._transport.request(
2707
+ "storage",
2708
+ "https://storage.{region}.basaltic.sh",
2709
+ _OPS["listSnapshots"],
2710
+ "page",
2711
+ {},
2712
+ UNSET,
2713
+ query,
2714
+ options,
2715
+ ),
2716
+ )
2717
+
2718
+ def list_snapshots_all(
2719
+ self, *, query: m.ListSnapshotsQuery | None = None, options: RequestOptions | None = None
2720
+ ) -> AsyncIterator[m.ListSnapshotsItem]:
2721
+ return aiterate_pages(
2722
+ lambda marker: self.list_snapshots(
2723
+ query=cast(m.ListSnapshotsQuery, {**(query or {}), "marker": marker}),
2724
+ options=options,
2725
+ ),
2726
+ (query or {}).get("marker", ""),
2727
+ )
2728
+
2729
+ async def list_volume_types(
2730
+ self, *, query: m.ListVolumeTypesQuery | None = None, options: RequestOptions | None = None
2731
+ ) -> Page[m.ListVolumeTypesResponse, m.ListVolumeTypesItem]:
2732
+ "List volume types"
2733
+ return cast(
2734
+ Page[m.ListVolumeTypesResponse, m.ListVolumeTypesItem],
2735
+ await self._transport.request(
2736
+ "storage",
2737
+ "https://storage.{region}.basaltic.sh",
2738
+ _OPS["listVolumeTypes"],
2739
+ "page",
2740
+ {},
2741
+ UNSET,
2742
+ query,
2743
+ options,
2744
+ ),
2745
+ )
2746
+
2747
+ async def list_volumes(
2748
+ self, *, query: m.ListVolumesQuery | None = None, options: RequestOptions | None = None
2749
+ ) -> Page[m.ListVolumesResponse, m.ListVolumesItem]:
2750
+ "List volumes"
2751
+ return cast(
2752
+ Page[m.ListVolumesResponse, m.ListVolumesItem],
2753
+ await self._transport.request(
2754
+ "storage",
2755
+ "https://storage.{region}.basaltic.sh",
2756
+ _OPS["listVolumes"],
2757
+ "page",
2758
+ {},
2759
+ UNSET,
2760
+ query,
2761
+ options,
2762
+ ),
2763
+ )
2764
+
2765
+ def list_volumes_all(
2766
+ self, *, query: m.ListVolumesQuery | None = None, options: RequestOptions | None = None
2767
+ ) -> AsyncIterator[m.ListVolumesItem]:
2768
+ return aiterate_pages(
2769
+ lambda marker: self.list_volumes(
2770
+ query=cast(m.ListVolumesQuery, {**(query or {}), "marker": marker}), options=options
2771
+ ),
2772
+ (query or {}).get("marker", ""),
2773
+ )
2774
+
2775
+ async def put_bucket_cors(
2776
+ self, bucket: str, body: m.PutBucketCORSBody, *, options: RequestOptions | None = None
2777
+ ) -> None:
2778
+ "Put bucket CORS configuration"
2779
+ return cast(
2780
+ None,
2781
+ await self._transport.request(
2782
+ "storage",
2783
+ "https://storage.{region}.basaltic.sh",
2784
+ _OPS["putBucketCORS"],
2785
+ "discard",
2786
+ {"bucket": bucket},
2787
+ body,
2788
+ None,
2789
+ options,
2790
+ ),
2791
+ )
2792
+
2793
+ async def put_bucket_deletion_protection(
2794
+ self,
2795
+ bucket: str,
2796
+ body: m.PutBucketDeletionProtectionBody,
2797
+ *,
2798
+ options: RequestOptions | None = None,
2799
+ ) -> None:
2800
+ "Set bucket deletion protection"
2801
+ return cast(
2802
+ None,
2803
+ await self._transport.request(
2804
+ "storage",
2805
+ "https://storage.{region}.basaltic.sh",
2806
+ _OPS["putBucketDeletionProtection"],
2807
+ "discard",
2808
+ {"bucket": bucket},
2809
+ body,
2810
+ None,
2811
+ options,
2812
+ ),
2813
+ )
2814
+
2815
+ async def put_bucket_encryption(
2816
+ self, bucket: str, body: m.PutBucketEncryptionBody, *, options: RequestOptions | None = None
2817
+ ) -> None:
2818
+ "Put bucket encryption configuration"
2819
+ return cast(
2820
+ None,
2821
+ await self._transport.request(
2822
+ "storage",
2823
+ "https://storage.{region}.basaltic.sh",
2824
+ _OPS["putBucketEncryption"],
2825
+ "discard",
2826
+ {"bucket": bucket},
2827
+ body,
2828
+ None,
2829
+ options,
2830
+ ),
2831
+ )
2832
+
2833
+ async def put_bucket_lifecycle(
2834
+ self, bucket: str, body: m.PutBucketLifecycleBody, *, options: RequestOptions
2835
+ ) -> None:
2836
+ "Put bucket lifecycle configuration"
2837
+ return cast(
2838
+ None,
2839
+ await self._transport.request(
2840
+ "storage",
2841
+ "https://storage.{region}.basaltic.sh",
2842
+ _OPS["putBucketLifecycle"],
2843
+ "discard",
2844
+ {"bucket": bucket},
2845
+ body,
2846
+ None,
2847
+ options,
2848
+ ),
2849
+ )
2850
+
2851
+ async def put_bucket_object_lock(
2852
+ self, bucket: str, body: m.PutBucketObjectLockBody, *, options: RequestOptions | None = None
2853
+ ) -> None:
2854
+ "Put bucket object-lock configuration"
2855
+ return cast(
2856
+ None,
2857
+ await self._transport.request(
2858
+ "storage",
2859
+ "https://storage.{region}.basaltic.sh",
2860
+ _OPS["putBucketObjectLock"],
2861
+ "discard",
2862
+ {"bucket": bucket},
2863
+ body,
2864
+ None,
2865
+ options,
2866
+ ),
2867
+ )
2868
+
2869
+ async def put_bucket_policy(
2870
+ self, bucket: str, body: m.PutBucketPolicyBody, *, options: RequestOptions | None = None
2871
+ ) -> None:
2872
+ "Put bucket policy"
2873
+ return cast(
2874
+ None,
2875
+ await self._transport.request(
2876
+ "storage",
2877
+ "https://storage.{region}.basaltic.sh",
2878
+ _OPS["putBucketPolicy"],
2879
+ "discard",
2880
+ {"bucket": bucket},
2881
+ body,
2882
+ None,
2883
+ options,
2884
+ ),
2885
+ )
2886
+
2887
+ async def put_bucket_tagging(
2888
+ self, bucket: str, body: m.PutBucketTaggingBody, *, options: RequestOptions | None = None
2889
+ ) -> None:
2890
+ "Put bucket tag set"
2891
+ return cast(
2892
+ None,
2893
+ await self._transport.request(
2894
+ "storage",
2895
+ "https://storage.{region}.basaltic.sh",
2896
+ _OPS["putBucketTagging"],
2897
+ "discard",
2898
+ {"bucket": bucket},
2899
+ body,
2900
+ None,
2901
+ options,
2902
+ ),
2903
+ )
2904
+
2905
+ async def put_bucket_versioning(
2906
+ self, bucket: str, body: m.PutBucketVersioningBody, *, options: RequestOptions | None = None
2907
+ ) -> None:
2908
+ "Set bucket versioning state"
2909
+ return cast(
2910
+ None,
2911
+ await self._transport.request(
2912
+ "storage",
2913
+ "https://storage.{region}.basaltic.sh",
2914
+ _OPS["putBucketVersioning"],
2915
+ "discard",
2916
+ {"bucket": bucket},
2917
+ body,
2918
+ None,
2919
+ options,
2920
+ ),
2921
+ )
2922
+
2923
+ async def put_object(
2924
+ self, bucket: str, key: str, body: AsyncBinaryBody, *, options: RequestOptions | None = None
2925
+ ) -> ApiResponse[m.PutObjectResponse]:
2926
+ "Upload object"
2927
+ return cast(
2928
+ ApiResponse[m.PutObjectResponse],
2929
+ await self._transport.request(
2930
+ "storage",
2931
+ "https://storage.{region}.basaltic.sh",
2932
+ _OPS["putObject"],
2933
+ "json",
2934
+ {"bucket": bucket, "key": key},
2935
+ body,
2936
+ None,
2937
+ options,
2938
+ ),
2939
+ )
2940
+
2941
+ async def restore_bucket(self, bucket: str, *, options: RequestOptions | None = None) -> None:
2942
+ "Restore a bucket pending deletion"
2943
+ return cast(
2944
+ None,
2945
+ await self._transport.request(
2946
+ "storage",
2947
+ "https://storage.{region}.basaltic.sh",
2948
+ _OPS["restoreBucket"],
2949
+ "discard",
2950
+ {"bucket": bucket},
2951
+ UNSET,
2952
+ None,
2953
+ options,
2954
+ ),
2955
+ )
2956
+
2957
+ async def update_snapshot(
2958
+ self, snapshot_id: str, body: m.UpdateSnapshotBody, *, options: RequestOptions | None = None
2959
+ ) -> ApiResponse[m.UpdateSnapshotResponse]:
2960
+ "Update snapshot metadata"
2961
+ return cast(
2962
+ ApiResponse[m.UpdateSnapshotResponse],
2963
+ await self._transport.request(
2964
+ "storage",
2965
+ "https://storage.{region}.basaltic.sh",
2966
+ _OPS["updateSnapshot"],
2967
+ "json",
2968
+ {"snapshot_id": snapshot_id},
2969
+ body,
2970
+ None,
2971
+ options,
2972
+ ),
2973
+ )
2974
+
2975
+ async def update_snapshot_policy(
2976
+ self,
2977
+ policy_id: str,
2978
+ body: m.UpdateSnapshotPolicyBody,
2979
+ *,
2980
+ options: RequestOptions | None = None,
2981
+ ) -> ApiResponse[m.UpdateSnapshotPolicyResponse]:
2982
+ "Update snapshot policy"
2983
+ return cast(
2984
+ ApiResponse[m.UpdateSnapshotPolicyResponse],
2985
+ await self._transport.request(
2986
+ "storage",
2987
+ "https://storage.{region}.basaltic.sh",
2988
+ _OPS["updateSnapshotPolicy"],
2989
+ "json",
2990
+ {"policy_id": policy_id},
2991
+ body,
2992
+ None,
2993
+ options,
2994
+ ),
2995
+ )
2996
+
2997
+ async def update_volume(
2998
+ self, volume_id: str, body: m.UpdateVolumeBody, *, options: RequestOptions | None = None
2999
+ ) -> ApiResponse[m.UpdateVolumeResponse]:
3000
+ "Update volume metadata"
3001
+ return cast(
3002
+ ApiResponse[m.UpdateVolumeResponse],
3003
+ await self._transport.request(
3004
+ "storage",
3005
+ "https://storage.{region}.basaltic.sh",
3006
+ _OPS["updateVolume"],
3007
+ "json",
3008
+ {"volume_id": volume_id},
3009
+ body,
3010
+ None,
3011
+ options,
3012
+ ),
3013
+ )
3014
+
3015
+ async def update_volume_performance(
3016
+ self,
3017
+ volume_id: str,
3018
+ body: m.UpdateVolumePerformanceBody,
3019
+ *,
3020
+ options: RequestOptions | None = None,
3021
+ ) -> ApiResponse[m.UpdateVolumePerformanceResponse]:
3022
+ "Update provisioned performance"
3023
+ return cast(
3024
+ ApiResponse[m.UpdateVolumePerformanceResponse],
3025
+ await self._transport.request(
3026
+ "storage",
3027
+ "https://storage.{region}.basaltic.sh",
3028
+ _OPS["updateVolumePerformance"],
3029
+ "json",
3030
+ {"volume_id": volume_id},
3031
+ body,
3032
+ None,
3033
+ options,
3034
+ ),
3035
+ )
3036
+
3037
+ async def upload_part(
3038
+ self,
3039
+ bucket: str,
3040
+ upload_id: str,
3041
+ part_number: str,
3042
+ body: AsyncBinaryBody,
3043
+ *,
3044
+ options: RequestOptions | None = None,
3045
+ ) -> ApiResponse[m.UploadPartResponse]:
3046
+ "Upload a part"
3047
+ return cast(
3048
+ ApiResponse[m.UploadPartResponse],
3049
+ await self._transport.request(
3050
+ "storage",
3051
+ "https://storage.{region}.basaltic.sh",
3052
+ _OPS["uploadPart"],
3053
+ "json",
3054
+ {"bucket": bucket, "upload_id": upload_id, "part_number": part_number},
3055
+ body,
3056
+ None,
3057
+ options,
3058
+ ),
3059
+ )