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,1079 @@
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, Operation
11
+ from .._transport import AsyncTransport, SyncTransport
12
+ from ..config import RequestOptions
13
+ from ..models import dns 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
+ "associateZoneVPC": Operation(
26
+ id="associateZoneVPC",
27
+ method="POST",
28
+ path="/v1/zones/{zone_id}/vpc-associations",
29
+ authenticated=True,
30
+ requiredQuery=[],
31
+ requiredHeaders=[],
32
+ queryEncoding={},
33
+ bodyRequired=True,
34
+ contentType="application/json",
35
+ accept="application/json",
36
+ ),
37
+ "createRecord": Operation(
38
+ id="createRecord",
39
+ method="POST",
40
+ path="/v1/zones/{zone_id}/records",
41
+ authenticated=True,
42
+ requiredQuery=[],
43
+ requiredHeaders=[],
44
+ queryEncoding={},
45
+ bodyRequired=True,
46
+ contentType="application/json",
47
+ accept="application/json",
48
+ ),
49
+ "createZone": Operation(
50
+ id="createZone",
51
+ method="POST",
52
+ path="/v1/zones",
53
+ authenticated=True,
54
+ requiredQuery=[],
55
+ requiredHeaders=[],
56
+ queryEncoding={},
57
+ bodyRequired=True,
58
+ contentType="application/json",
59
+ accept="application/json",
60
+ ),
61
+ "deleteRecord": Operation(
62
+ id="deleteRecord",
63
+ method="DELETE",
64
+ path="/v1/zones/{zone_id}/records/{record_id}",
65
+ authenticated=True,
66
+ requiredQuery=[],
67
+ requiredHeaders=[],
68
+ queryEncoding={},
69
+ bodyRequired=False,
70
+ contentType="",
71
+ accept="application/json",
72
+ ),
73
+ "deleteZone": Operation(
74
+ id="deleteZone",
75
+ method="DELETE",
76
+ path="/v1/zones/{zone_id}",
77
+ authenticated=True,
78
+ requiredQuery=[],
79
+ requiredHeaders=[],
80
+ queryEncoding={},
81
+ bodyRequired=False,
82
+ contentType="",
83
+ accept="application/json",
84
+ ),
85
+ "deleteZoneRecordImport": Operation(
86
+ id="deleteZoneRecordImport",
87
+ method="DELETE",
88
+ path="/v1/zones/{zone_id}/record-import",
89
+ authenticated=True,
90
+ requiredQuery=[],
91
+ requiredHeaders=[],
92
+ queryEncoding={},
93
+ bodyRequired=False,
94
+ contentType="",
95
+ accept="application/json",
96
+ ),
97
+ "dissociateZoneVPC": Operation(
98
+ id="dissociateZoneVPC",
99
+ method="DELETE",
100
+ path="/v1/zones/{zone_id}/vpc-associations/{vpc_id}",
101
+ authenticated=True,
102
+ requiredQuery=[],
103
+ requiredHeaders=[],
104
+ queryEncoding={},
105
+ bodyRequired=False,
106
+ contentType="",
107
+ accept="application/json",
108
+ ),
109
+ "exportZoneFile": Operation(
110
+ id="exportZoneFile",
111
+ method="GET",
112
+ path="/v1/zones/{zone_id}/export",
113
+ authenticated=True,
114
+ requiredQuery=[],
115
+ requiredHeaders=[],
116
+ queryEncoding={},
117
+ bodyRequired=False,
118
+ contentType="",
119
+ accept="*/*",
120
+ ),
121
+ "getRecord": Operation(
122
+ id="getRecord",
123
+ method="GET",
124
+ path="/v1/zones/{zone_id}/records/{record_id}",
125
+ authenticated=True,
126
+ requiredQuery=[],
127
+ requiredHeaders=[],
128
+ queryEncoding={},
129
+ bodyRequired=False,
130
+ contentType="",
131
+ accept="application/json",
132
+ ),
133
+ "getZone": Operation(
134
+ id="getZone",
135
+ method="GET",
136
+ path="/v1/zones/{zone_id}",
137
+ authenticated=True,
138
+ requiredQuery=[],
139
+ requiredHeaders=[],
140
+ queryEncoding={},
141
+ bodyRequired=False,
142
+ contentType="",
143
+ accept="application/json",
144
+ ),
145
+ "getZoneRecordImport": Operation(
146
+ id="getZoneRecordImport",
147
+ method="GET",
148
+ path="/v1/zones/{zone_id}/record-import",
149
+ authenticated=True,
150
+ requiredQuery=[],
151
+ requiredHeaders=[],
152
+ queryEncoding={},
153
+ bodyRequired=False,
154
+ contentType="",
155
+ accept="application/json",
156
+ ),
157
+ "importZoneFile": Operation(
158
+ id="importZoneFile",
159
+ method="POST",
160
+ path="/v1/zones/{zone_id}/import",
161
+ authenticated=True,
162
+ requiredQuery=[],
163
+ requiredHeaders=[],
164
+ queryEncoding={},
165
+ bodyRequired=True,
166
+ contentType="application/json",
167
+ accept="application/json",
168
+ ),
169
+ "listRecords": Operation(
170
+ id="listRecords",
171
+ method="GET",
172
+ path="/v1/zones/{zone_id}/records",
173
+ authenticated=True,
174
+ requiredQuery=[],
175
+ requiredHeaders=[],
176
+ queryEncoding={
177
+ "type": {"style": "form", "explode": True},
178
+ "name": {"style": "form", "explode": True},
179
+ "crn": {"style": "form", "explode": True},
180
+ "include_managed": {"style": "form", "explode": True},
181
+ "limit": {"style": "form", "explode": True},
182
+ "marker": {"style": "form", "explode": True},
183
+ },
184
+ bodyRequired=False,
185
+ contentType="",
186
+ accept="application/json",
187
+ itemsKey="records",
188
+ ),
189
+ "listZoneVPCAssociations": Operation(
190
+ id="listZoneVPCAssociations",
191
+ method="GET",
192
+ path="/v1/zones/{zone_id}/vpc-associations",
193
+ authenticated=True,
194
+ requiredQuery=[],
195
+ requiredHeaders=[],
196
+ queryEncoding={
197
+ "name": {"style": "form", "explode": True},
198
+ "crn": {"style": "form", "explode": True},
199
+ },
200
+ bodyRequired=False,
201
+ contentType="",
202
+ accept="application/json",
203
+ itemsKey="vpc_ids",
204
+ ),
205
+ "listZones": Operation(
206
+ id="listZones",
207
+ method="GET",
208
+ path="/v1/zones",
209
+ authenticated=True,
210
+ requiredQuery=[],
211
+ requiredHeaders=[],
212
+ queryEncoding={
213
+ "name": {"style": "form", "explode": True},
214
+ "crn": {"style": "form", "explode": True},
215
+ "limit": {"style": "form", "explode": True},
216
+ "marker": {"style": "form", "explode": True},
217
+ },
218
+ bodyRequired=False,
219
+ contentType="",
220
+ accept="application/json",
221
+ itemsKey="zones",
222
+ ),
223
+ "updateRecord": Operation(
224
+ id="updateRecord",
225
+ method="PATCH",
226
+ path="/v1/zones/{zone_id}/records/{record_id}",
227
+ authenticated=True,
228
+ requiredQuery=[],
229
+ requiredHeaders=[],
230
+ queryEncoding={},
231
+ bodyRequired=True,
232
+ contentType="application/json",
233
+ accept="application/json",
234
+ ),
235
+ "updateZone": Operation(
236
+ id="updateZone",
237
+ method="PATCH",
238
+ path="/v1/zones/{zone_id}",
239
+ authenticated=True,
240
+ requiredQuery=[],
241
+ requiredHeaders=[],
242
+ queryEncoding={},
243
+ bodyRequired=True,
244
+ contentType="application/json",
245
+ accept="application/json",
246
+ ),
247
+ "verifyZoneOwnership": Operation(
248
+ id="verifyZoneOwnership",
249
+ method="POST",
250
+ path="/v1/zones/{zone_id}/verify-ownership",
251
+ authenticated=True,
252
+ requiredQuery=[],
253
+ requiredHeaders=[],
254
+ queryEncoding={},
255
+ bodyRequired=False,
256
+ contentType="",
257
+ accept="application/json",
258
+ ),
259
+ }
260
+
261
+
262
+ class DnsService:
263
+ def __init__(self, transport: SyncTransport) -> None:
264
+ self._transport = transport
265
+
266
+ def associate_zone_vpc(
267
+ self, zone_id: str, body: m.AssociateZoneVPCBody, *, options: RequestOptions | None = None
268
+ ) -> ApiResponse[m.AssociateZoneVPCResponse]:
269
+ "Associate a VPC with a private zone"
270
+ return cast(
271
+ ApiResponse[m.AssociateZoneVPCResponse],
272
+ self._transport.request(
273
+ "dns",
274
+ "https://dns.basaltic.sh",
275
+ _OPS["associateZoneVPC"],
276
+ "json",
277
+ {"zone_id": zone_id},
278
+ body,
279
+ None,
280
+ options,
281
+ ),
282
+ )
283
+
284
+ def create_record(
285
+ self, zone_id: str, body: m.CreateRecordBody, *, options: RequestOptions | None = None
286
+ ) -> ApiResponse[m.CreateRecordResponse]:
287
+ "Create record"
288
+ return cast(
289
+ ApiResponse[m.CreateRecordResponse],
290
+ self._transport.request(
291
+ "dns",
292
+ "https://dns.basaltic.sh",
293
+ _OPS["createRecord"],
294
+ "json",
295
+ {"zone_id": zone_id},
296
+ body,
297
+ None,
298
+ options,
299
+ ),
300
+ )
301
+
302
+ def create_zone(
303
+ self, body: m.CreateZoneBody, *, options: RequestOptions | None = None
304
+ ) -> ApiResponse[m.CreateZoneResponse]:
305
+ "Create zone"
306
+ return cast(
307
+ ApiResponse[m.CreateZoneResponse],
308
+ self._transport.request(
309
+ "dns",
310
+ "https://dns.basaltic.sh",
311
+ _OPS["createZone"],
312
+ "json",
313
+ {},
314
+ body,
315
+ None,
316
+ options,
317
+ ),
318
+ )
319
+
320
+ def delete_record(
321
+ self, zone_id: str, record_id: str, *, options: RequestOptions | None = None
322
+ ) -> None:
323
+ "Delete record"
324
+ return cast(
325
+ None,
326
+ self._transport.request(
327
+ "dns",
328
+ "https://dns.basaltic.sh",
329
+ _OPS["deleteRecord"],
330
+ "discard",
331
+ {"zone_id": zone_id, "record_id": record_id},
332
+ UNSET,
333
+ None,
334
+ options,
335
+ ),
336
+ )
337
+
338
+ def delete_zone(self, zone_id: str, *, options: RequestOptions | None = None) -> None:
339
+ "Delete zone"
340
+ return cast(
341
+ None,
342
+ self._transport.request(
343
+ "dns",
344
+ "https://dns.basaltic.sh",
345
+ _OPS["deleteZone"],
346
+ "discard",
347
+ {"zone_id": zone_id},
348
+ UNSET,
349
+ None,
350
+ options,
351
+ ),
352
+ )
353
+
354
+ def delete_zone_record_import(
355
+ self, zone_id: str, *, options: RequestOptions | None = None
356
+ ) -> None:
357
+ "Discard the record-import outcome"
358
+ return cast(
359
+ None,
360
+ self._transport.request(
361
+ "dns",
362
+ "https://dns.basaltic.sh",
363
+ _OPS["deleteZoneRecordImport"],
364
+ "discard",
365
+ {"zone_id": zone_id},
366
+ UNSET,
367
+ None,
368
+ options,
369
+ ),
370
+ )
371
+
372
+ def dissociate_zone_vpc(
373
+ self, zone_id: str, vpc_id: str, *, options: RequestOptions | None = None
374
+ ) -> None:
375
+ "Dissociate a VPC from a private zone"
376
+ return cast(
377
+ None,
378
+ self._transport.request(
379
+ "dns",
380
+ "https://dns.basaltic.sh",
381
+ _OPS["dissociateZoneVPC"],
382
+ "discard",
383
+ {"zone_id": zone_id, "vpc_id": vpc_id},
384
+ UNSET,
385
+ None,
386
+ options,
387
+ ),
388
+ )
389
+
390
+ def export_zone_file(
391
+ self, zone_id: str, *, options: RequestOptions | None = None
392
+ ) -> httpx.Response:
393
+ "Export the zone as a zone file"
394
+ return cast(
395
+ httpx.Response,
396
+ self._transport.request(
397
+ "dns",
398
+ "https://dns.basaltic.sh",
399
+ _OPS["exportZoneFile"],
400
+ "binary",
401
+ {"zone_id": zone_id},
402
+ UNSET,
403
+ None,
404
+ options,
405
+ ),
406
+ )
407
+
408
+ def get_record(
409
+ self, zone_id: str, record_id: str, *, options: RequestOptions | None = None
410
+ ) -> ApiResponse[m.GetRecordResponse]:
411
+ "Get record"
412
+ return cast(
413
+ ApiResponse[m.GetRecordResponse],
414
+ self._transport.request(
415
+ "dns",
416
+ "https://dns.basaltic.sh",
417
+ _OPS["getRecord"],
418
+ "json",
419
+ {"zone_id": zone_id, "record_id": record_id},
420
+ UNSET,
421
+ None,
422
+ options,
423
+ ),
424
+ )
425
+
426
+ def get_record_by_reference(
427
+ self,
428
+ zone_id: str,
429
+ reference: str,
430
+ *,
431
+ scope: m.GetRecordScope | None = None,
432
+ options: RequestOptions | None = None,
433
+ ) -> ApiResponse[m.GetRecordResource]:
434
+ return cast(
435
+ ApiResponse[m.GetRecordResource],
436
+ resolve_reference(
437
+ reference,
438
+ lambda id: self.get_record(zone_id, id, options=options),
439
+ lambda match: self.list_records(
440
+ zone_id,
441
+ query=cast(m.ListRecordsQuery, {**reference_scope(scope), **match, "limit": 2}),
442
+ options=options,
443
+ ),
444
+ True,
445
+ "record",
446
+ ),
447
+ )
448
+
449
+ def get_zone(
450
+ self, zone_id: str, *, options: RequestOptions | None = None
451
+ ) -> ApiResponse[m.GetZoneResponse]:
452
+ "Get zone"
453
+ return cast(
454
+ ApiResponse[m.GetZoneResponse],
455
+ self._transport.request(
456
+ "dns",
457
+ "https://dns.basaltic.sh",
458
+ _OPS["getZone"],
459
+ "json",
460
+ {"zone_id": zone_id},
461
+ UNSET,
462
+ None,
463
+ options,
464
+ ),
465
+ )
466
+
467
+ def get_zone_by_reference(
468
+ self,
469
+ reference: str,
470
+ *,
471
+ scope: m.GetZoneScope | None = None,
472
+ options: RequestOptions | None = None,
473
+ ) -> ApiResponse[m.GetZoneResource]:
474
+ return cast(
475
+ ApiResponse[m.GetZoneResource],
476
+ resolve_reference(
477
+ reference,
478
+ lambda id: self.get_zone(id, options=options),
479
+ lambda match: self.list_zones(
480
+ query=cast(m.ListZonesQuery, {**reference_scope(scope), **match, "limit": 2}),
481
+ options=options,
482
+ ),
483
+ True,
484
+ "zone",
485
+ ),
486
+ )
487
+
488
+ def get_zone_record_import(
489
+ self, zone_id: str, *, options: RequestOptions | None = None
490
+ ) -> ApiResponse[m.GetZoneRecordImportResponse]:
491
+ "Get the record-import outcome"
492
+ return cast(
493
+ ApiResponse[m.GetZoneRecordImportResponse],
494
+ self._transport.request(
495
+ "dns",
496
+ "https://dns.basaltic.sh",
497
+ _OPS["getZoneRecordImport"],
498
+ "json",
499
+ {"zone_id": zone_id},
500
+ UNSET,
501
+ None,
502
+ options,
503
+ ),
504
+ )
505
+
506
+ def import_zone_file(
507
+ self, zone_id: str, body: m.ImportZoneFileBody, *, options: RequestOptions | None = None
508
+ ) -> ApiResponse[m.ImportZoneFileResponse]:
509
+ "Import a zone file"
510
+ return cast(
511
+ ApiResponse[m.ImportZoneFileResponse],
512
+ self._transport.request(
513
+ "dns",
514
+ "https://dns.basaltic.sh",
515
+ _OPS["importZoneFile"],
516
+ "json",
517
+ {"zone_id": zone_id},
518
+ body,
519
+ None,
520
+ options,
521
+ ),
522
+ )
523
+
524
+ def list_records(
525
+ self,
526
+ zone_id: str,
527
+ *,
528
+ query: m.ListRecordsQuery | None = None,
529
+ options: RequestOptions | None = None,
530
+ ) -> Page[m.ListRecordsResponse, m.ListRecordsItem]:
531
+ "List records"
532
+ return cast(
533
+ Page[m.ListRecordsResponse, m.ListRecordsItem],
534
+ self._transport.request(
535
+ "dns",
536
+ "https://dns.basaltic.sh",
537
+ _OPS["listRecords"],
538
+ "page",
539
+ {"zone_id": zone_id},
540
+ UNSET,
541
+ query,
542
+ options,
543
+ ),
544
+ )
545
+
546
+ def list_records_all(
547
+ self,
548
+ zone_id: str,
549
+ *,
550
+ query: m.ListRecordsQuery | None = None,
551
+ options: RequestOptions | None = None,
552
+ ) -> Iterator[m.ListRecordsItem]:
553
+ return iterate_pages(
554
+ lambda marker: self.list_records(
555
+ zone_id,
556
+ query=cast(m.ListRecordsQuery, {**(query or {}), "marker": marker}),
557
+ options=options,
558
+ ),
559
+ (query or {}).get("marker", ""),
560
+ )
561
+
562
+ def list_zone_vpc_associations(
563
+ self,
564
+ zone_id: str,
565
+ *,
566
+ query: m.ListZoneVPCAssociationsQuery | None = None,
567
+ options: RequestOptions | None = None,
568
+ ) -> Page[m.ListZoneVPCAssociationsResponse, m.ListZoneVPCAssociationsItem]:
569
+ "List VPC associations"
570
+ return cast(
571
+ Page[m.ListZoneVPCAssociationsResponse, m.ListZoneVPCAssociationsItem],
572
+ self._transport.request(
573
+ "dns",
574
+ "https://dns.basaltic.sh",
575
+ _OPS["listZoneVPCAssociations"],
576
+ "page",
577
+ {"zone_id": zone_id},
578
+ UNSET,
579
+ query,
580
+ options,
581
+ ),
582
+ )
583
+
584
+ def list_zones(
585
+ self, *, query: m.ListZonesQuery | None = None, options: RequestOptions | None = None
586
+ ) -> Page[m.ListZonesResponse, m.ListZonesItem]:
587
+ "List zones"
588
+ return cast(
589
+ Page[m.ListZonesResponse, m.ListZonesItem],
590
+ self._transport.request(
591
+ "dns",
592
+ "https://dns.basaltic.sh",
593
+ _OPS["listZones"],
594
+ "page",
595
+ {},
596
+ UNSET,
597
+ query,
598
+ options,
599
+ ),
600
+ )
601
+
602
+ def list_zones_all(
603
+ self, *, query: m.ListZonesQuery | None = None, options: RequestOptions | None = None
604
+ ) -> Iterator[m.ListZonesItem]:
605
+ return iterate_pages(
606
+ lambda marker: self.list_zones(
607
+ query=cast(m.ListZonesQuery, {**(query or {}), "marker": marker}), options=options
608
+ ),
609
+ (query or {}).get("marker", ""),
610
+ )
611
+
612
+ def update_record(
613
+ self,
614
+ zone_id: str,
615
+ record_id: str,
616
+ body: m.UpdateRecordBody,
617
+ *,
618
+ options: RequestOptions | None = None,
619
+ ) -> ApiResponse[m.UpdateRecordResponse]:
620
+ "Update record"
621
+ return cast(
622
+ ApiResponse[m.UpdateRecordResponse],
623
+ self._transport.request(
624
+ "dns",
625
+ "https://dns.basaltic.sh",
626
+ _OPS["updateRecord"],
627
+ "json",
628
+ {"zone_id": zone_id, "record_id": record_id},
629
+ body,
630
+ None,
631
+ options,
632
+ ),
633
+ )
634
+
635
+ def update_zone(
636
+ self, zone_id: str, body: m.UpdateZoneBody, *, options: RequestOptions | None = None
637
+ ) -> ApiResponse[m.UpdateZoneResponse]:
638
+ "Update zone"
639
+ return cast(
640
+ ApiResponse[m.UpdateZoneResponse],
641
+ self._transport.request(
642
+ "dns",
643
+ "https://dns.basaltic.sh",
644
+ _OPS["updateZone"],
645
+ "json",
646
+ {"zone_id": zone_id},
647
+ body,
648
+ None,
649
+ options,
650
+ ),
651
+ )
652
+
653
+ def verify_zone_ownership(
654
+ self, zone_id: str, *, options: RequestOptions | None = None
655
+ ) -> ApiResponse[m.VerifyZoneOwnershipResponse]:
656
+ "Verify zone ownership"
657
+ return cast(
658
+ ApiResponse[m.VerifyZoneOwnershipResponse],
659
+ self._transport.request(
660
+ "dns",
661
+ "https://dns.basaltic.sh",
662
+ _OPS["verifyZoneOwnership"],
663
+ "json",
664
+ {"zone_id": zone_id},
665
+ UNSET,
666
+ None,
667
+ options,
668
+ ),
669
+ )
670
+
671
+
672
+ class AsyncDnsService:
673
+ def __init__(self, transport: AsyncTransport) -> None:
674
+ self._transport = transport
675
+
676
+ async def associate_zone_vpc(
677
+ self, zone_id: str, body: m.AssociateZoneVPCBody, *, options: RequestOptions | None = None
678
+ ) -> ApiResponse[m.AssociateZoneVPCResponse]:
679
+ "Associate a VPC with a private zone"
680
+ return cast(
681
+ ApiResponse[m.AssociateZoneVPCResponse],
682
+ await self._transport.request(
683
+ "dns",
684
+ "https://dns.basaltic.sh",
685
+ _OPS["associateZoneVPC"],
686
+ "json",
687
+ {"zone_id": zone_id},
688
+ body,
689
+ None,
690
+ options,
691
+ ),
692
+ )
693
+
694
+ async def create_record(
695
+ self, zone_id: str, body: m.CreateRecordBody, *, options: RequestOptions | None = None
696
+ ) -> ApiResponse[m.CreateRecordResponse]:
697
+ "Create record"
698
+ return cast(
699
+ ApiResponse[m.CreateRecordResponse],
700
+ await self._transport.request(
701
+ "dns",
702
+ "https://dns.basaltic.sh",
703
+ _OPS["createRecord"],
704
+ "json",
705
+ {"zone_id": zone_id},
706
+ body,
707
+ None,
708
+ options,
709
+ ),
710
+ )
711
+
712
+ async def create_zone(
713
+ self, body: m.CreateZoneBody, *, options: RequestOptions | None = None
714
+ ) -> ApiResponse[m.CreateZoneResponse]:
715
+ "Create zone"
716
+ return cast(
717
+ ApiResponse[m.CreateZoneResponse],
718
+ await self._transport.request(
719
+ "dns",
720
+ "https://dns.basaltic.sh",
721
+ _OPS["createZone"],
722
+ "json",
723
+ {},
724
+ body,
725
+ None,
726
+ options,
727
+ ),
728
+ )
729
+
730
+ async def delete_record(
731
+ self, zone_id: str, record_id: str, *, options: RequestOptions | None = None
732
+ ) -> None:
733
+ "Delete record"
734
+ return cast(
735
+ None,
736
+ await self._transport.request(
737
+ "dns",
738
+ "https://dns.basaltic.sh",
739
+ _OPS["deleteRecord"],
740
+ "discard",
741
+ {"zone_id": zone_id, "record_id": record_id},
742
+ UNSET,
743
+ None,
744
+ options,
745
+ ),
746
+ )
747
+
748
+ async def delete_zone(self, zone_id: str, *, options: RequestOptions | None = None) -> None:
749
+ "Delete zone"
750
+ return cast(
751
+ None,
752
+ await self._transport.request(
753
+ "dns",
754
+ "https://dns.basaltic.sh",
755
+ _OPS["deleteZone"],
756
+ "discard",
757
+ {"zone_id": zone_id},
758
+ UNSET,
759
+ None,
760
+ options,
761
+ ),
762
+ )
763
+
764
+ async def delete_zone_record_import(
765
+ self, zone_id: str, *, options: RequestOptions | None = None
766
+ ) -> None:
767
+ "Discard the record-import outcome"
768
+ return cast(
769
+ None,
770
+ await self._transport.request(
771
+ "dns",
772
+ "https://dns.basaltic.sh",
773
+ _OPS["deleteZoneRecordImport"],
774
+ "discard",
775
+ {"zone_id": zone_id},
776
+ UNSET,
777
+ None,
778
+ options,
779
+ ),
780
+ )
781
+
782
+ async def dissociate_zone_vpc(
783
+ self, zone_id: str, vpc_id: str, *, options: RequestOptions | None = None
784
+ ) -> None:
785
+ "Dissociate a VPC from a private zone"
786
+ return cast(
787
+ None,
788
+ await self._transport.request(
789
+ "dns",
790
+ "https://dns.basaltic.sh",
791
+ _OPS["dissociateZoneVPC"],
792
+ "discard",
793
+ {"zone_id": zone_id, "vpc_id": vpc_id},
794
+ UNSET,
795
+ None,
796
+ options,
797
+ ),
798
+ )
799
+
800
+ async def export_zone_file(
801
+ self, zone_id: str, *, options: RequestOptions | None = None
802
+ ) -> httpx.Response:
803
+ "Export the zone as a zone file"
804
+ return cast(
805
+ httpx.Response,
806
+ await self._transport.request(
807
+ "dns",
808
+ "https://dns.basaltic.sh",
809
+ _OPS["exportZoneFile"],
810
+ "binary",
811
+ {"zone_id": zone_id},
812
+ UNSET,
813
+ None,
814
+ options,
815
+ ),
816
+ )
817
+
818
+ async def get_record(
819
+ self, zone_id: str, record_id: str, *, options: RequestOptions | None = None
820
+ ) -> ApiResponse[m.GetRecordResponse]:
821
+ "Get record"
822
+ return cast(
823
+ ApiResponse[m.GetRecordResponse],
824
+ await self._transport.request(
825
+ "dns",
826
+ "https://dns.basaltic.sh",
827
+ _OPS["getRecord"],
828
+ "json",
829
+ {"zone_id": zone_id, "record_id": record_id},
830
+ UNSET,
831
+ None,
832
+ options,
833
+ ),
834
+ )
835
+
836
+ async def get_record_by_reference(
837
+ self,
838
+ zone_id: str,
839
+ reference: str,
840
+ *,
841
+ scope: m.GetRecordScope | None = None,
842
+ options: RequestOptions | None = None,
843
+ ) -> ApiResponse[m.GetRecordResource]:
844
+ return cast(
845
+ ApiResponse[m.GetRecordResource],
846
+ await aresolve_reference(
847
+ reference,
848
+ lambda id: self.get_record(zone_id, id, options=options),
849
+ lambda match: self.list_records(
850
+ zone_id,
851
+ query=cast(m.ListRecordsQuery, {**reference_scope(scope), **match, "limit": 2}),
852
+ options=options,
853
+ ),
854
+ True,
855
+ "record",
856
+ ),
857
+ )
858
+
859
+ async def get_zone(
860
+ self, zone_id: str, *, options: RequestOptions | None = None
861
+ ) -> ApiResponse[m.GetZoneResponse]:
862
+ "Get zone"
863
+ return cast(
864
+ ApiResponse[m.GetZoneResponse],
865
+ await self._transport.request(
866
+ "dns",
867
+ "https://dns.basaltic.sh",
868
+ _OPS["getZone"],
869
+ "json",
870
+ {"zone_id": zone_id},
871
+ UNSET,
872
+ None,
873
+ options,
874
+ ),
875
+ )
876
+
877
+ async def get_zone_by_reference(
878
+ self,
879
+ reference: str,
880
+ *,
881
+ scope: m.GetZoneScope | None = None,
882
+ options: RequestOptions | None = None,
883
+ ) -> ApiResponse[m.GetZoneResource]:
884
+ return cast(
885
+ ApiResponse[m.GetZoneResource],
886
+ await aresolve_reference(
887
+ reference,
888
+ lambda id: self.get_zone(id, options=options),
889
+ lambda match: self.list_zones(
890
+ query=cast(m.ListZonesQuery, {**reference_scope(scope), **match, "limit": 2}),
891
+ options=options,
892
+ ),
893
+ True,
894
+ "zone",
895
+ ),
896
+ )
897
+
898
+ async def get_zone_record_import(
899
+ self, zone_id: str, *, options: RequestOptions | None = None
900
+ ) -> ApiResponse[m.GetZoneRecordImportResponse]:
901
+ "Get the record-import outcome"
902
+ return cast(
903
+ ApiResponse[m.GetZoneRecordImportResponse],
904
+ await self._transport.request(
905
+ "dns",
906
+ "https://dns.basaltic.sh",
907
+ _OPS["getZoneRecordImport"],
908
+ "json",
909
+ {"zone_id": zone_id},
910
+ UNSET,
911
+ None,
912
+ options,
913
+ ),
914
+ )
915
+
916
+ async def import_zone_file(
917
+ self, zone_id: str, body: m.ImportZoneFileBody, *, options: RequestOptions | None = None
918
+ ) -> ApiResponse[m.ImportZoneFileResponse]:
919
+ "Import a zone file"
920
+ return cast(
921
+ ApiResponse[m.ImportZoneFileResponse],
922
+ await self._transport.request(
923
+ "dns",
924
+ "https://dns.basaltic.sh",
925
+ _OPS["importZoneFile"],
926
+ "json",
927
+ {"zone_id": zone_id},
928
+ body,
929
+ None,
930
+ options,
931
+ ),
932
+ )
933
+
934
+ async def list_records(
935
+ self,
936
+ zone_id: str,
937
+ *,
938
+ query: m.ListRecordsQuery | None = None,
939
+ options: RequestOptions | None = None,
940
+ ) -> Page[m.ListRecordsResponse, m.ListRecordsItem]:
941
+ "List records"
942
+ return cast(
943
+ Page[m.ListRecordsResponse, m.ListRecordsItem],
944
+ await self._transport.request(
945
+ "dns",
946
+ "https://dns.basaltic.sh",
947
+ _OPS["listRecords"],
948
+ "page",
949
+ {"zone_id": zone_id},
950
+ UNSET,
951
+ query,
952
+ options,
953
+ ),
954
+ )
955
+
956
+ def list_records_all(
957
+ self,
958
+ zone_id: str,
959
+ *,
960
+ query: m.ListRecordsQuery | None = None,
961
+ options: RequestOptions | None = None,
962
+ ) -> AsyncIterator[m.ListRecordsItem]:
963
+ return aiterate_pages(
964
+ lambda marker: self.list_records(
965
+ zone_id,
966
+ query=cast(m.ListRecordsQuery, {**(query or {}), "marker": marker}),
967
+ options=options,
968
+ ),
969
+ (query or {}).get("marker", ""),
970
+ )
971
+
972
+ async def list_zone_vpc_associations(
973
+ self,
974
+ zone_id: str,
975
+ *,
976
+ query: m.ListZoneVPCAssociationsQuery | None = None,
977
+ options: RequestOptions | None = None,
978
+ ) -> Page[m.ListZoneVPCAssociationsResponse, m.ListZoneVPCAssociationsItem]:
979
+ "List VPC associations"
980
+ return cast(
981
+ Page[m.ListZoneVPCAssociationsResponse, m.ListZoneVPCAssociationsItem],
982
+ await self._transport.request(
983
+ "dns",
984
+ "https://dns.basaltic.sh",
985
+ _OPS["listZoneVPCAssociations"],
986
+ "page",
987
+ {"zone_id": zone_id},
988
+ UNSET,
989
+ query,
990
+ options,
991
+ ),
992
+ )
993
+
994
+ async def list_zones(
995
+ self, *, query: m.ListZonesQuery | None = None, options: RequestOptions | None = None
996
+ ) -> Page[m.ListZonesResponse, m.ListZonesItem]:
997
+ "List zones"
998
+ return cast(
999
+ Page[m.ListZonesResponse, m.ListZonesItem],
1000
+ await self._transport.request(
1001
+ "dns",
1002
+ "https://dns.basaltic.sh",
1003
+ _OPS["listZones"],
1004
+ "page",
1005
+ {},
1006
+ UNSET,
1007
+ query,
1008
+ options,
1009
+ ),
1010
+ )
1011
+
1012
+ def list_zones_all(
1013
+ self, *, query: m.ListZonesQuery | None = None, options: RequestOptions | None = None
1014
+ ) -> AsyncIterator[m.ListZonesItem]:
1015
+ return aiterate_pages(
1016
+ lambda marker: self.list_zones(
1017
+ query=cast(m.ListZonesQuery, {**(query or {}), "marker": marker}), options=options
1018
+ ),
1019
+ (query or {}).get("marker", ""),
1020
+ )
1021
+
1022
+ async def update_record(
1023
+ self,
1024
+ zone_id: str,
1025
+ record_id: str,
1026
+ body: m.UpdateRecordBody,
1027
+ *,
1028
+ options: RequestOptions | None = None,
1029
+ ) -> ApiResponse[m.UpdateRecordResponse]:
1030
+ "Update record"
1031
+ return cast(
1032
+ ApiResponse[m.UpdateRecordResponse],
1033
+ await self._transport.request(
1034
+ "dns",
1035
+ "https://dns.basaltic.sh",
1036
+ _OPS["updateRecord"],
1037
+ "json",
1038
+ {"zone_id": zone_id, "record_id": record_id},
1039
+ body,
1040
+ None,
1041
+ options,
1042
+ ),
1043
+ )
1044
+
1045
+ async def update_zone(
1046
+ self, zone_id: str, body: m.UpdateZoneBody, *, options: RequestOptions | None = None
1047
+ ) -> ApiResponse[m.UpdateZoneResponse]:
1048
+ "Update zone"
1049
+ return cast(
1050
+ ApiResponse[m.UpdateZoneResponse],
1051
+ await self._transport.request(
1052
+ "dns",
1053
+ "https://dns.basaltic.sh",
1054
+ _OPS["updateZone"],
1055
+ "json",
1056
+ {"zone_id": zone_id},
1057
+ body,
1058
+ None,
1059
+ options,
1060
+ ),
1061
+ )
1062
+
1063
+ async def verify_zone_ownership(
1064
+ self, zone_id: str, *, options: RequestOptions | None = None
1065
+ ) -> ApiResponse[m.VerifyZoneOwnershipResponse]:
1066
+ "Verify zone ownership"
1067
+ return cast(
1068
+ ApiResponse[m.VerifyZoneOwnershipResponse],
1069
+ await self._transport.request(
1070
+ "dns",
1071
+ "https://dns.basaltic.sh",
1072
+ _OPS["verifyZoneOwnership"],
1073
+ "json",
1074
+ {"zone_id": zone_id},
1075
+ UNSET,
1076
+ None,
1077
+ options,
1078
+ ),
1079
+ )