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,172 @@
1
+ """Generated typed API methods; do not edit."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import cast
6
+
7
+ from .._common import UNSET, Operation
8
+ from .._transport import AsyncTransport, SyncTransport
9
+ from ..config import RequestOptions
10
+ from ..models import catalog as m
11
+ from ..response import (
12
+ ApiResponse,
13
+ Page,
14
+ aresolve_reference,
15
+ reference_scope,
16
+ resolve_reference,
17
+ )
18
+
19
+ _OPS = {
20
+ "getRegion": Operation(
21
+ id="getRegion",
22
+ method="GET",
23
+ path="/v1/regions/{code}",
24
+ authenticated=False,
25
+ requiredQuery=[],
26
+ requiredHeaders=[],
27
+ queryEncoding={},
28
+ bodyRequired=False,
29
+ contentType="",
30
+ accept="application/json",
31
+ ),
32
+ "listRegions": Operation(
33
+ id="listRegions",
34
+ method="GET",
35
+ path="/v1/regions",
36
+ authenticated=False,
37
+ requiredQuery=[],
38
+ requiredHeaders=[],
39
+ queryEncoding={
40
+ "name": {"style": "form", "explode": True},
41
+ "crn": {"style": "form", "explode": True},
42
+ },
43
+ bodyRequired=False,
44
+ contentType="",
45
+ accept="application/json",
46
+ itemsKey="regions",
47
+ ),
48
+ }
49
+
50
+
51
+ class CatalogService:
52
+ def __init__(self, transport: SyncTransport) -> None:
53
+ self._transport = transport
54
+
55
+ def get_region(
56
+ self, code: str, *, options: RequestOptions | None = None
57
+ ) -> ApiResponse[m.GetRegionResponse]:
58
+ "Get a region"
59
+ return cast(
60
+ ApiResponse[m.GetRegionResponse],
61
+ self._transport.request(
62
+ "catalog",
63
+ "https://catalog.basaltic.sh",
64
+ _OPS["getRegion"],
65
+ "json",
66
+ {"code": code},
67
+ UNSET,
68
+ None,
69
+ options,
70
+ ),
71
+ )
72
+
73
+ def get_region_by_reference(
74
+ self,
75
+ reference: str,
76
+ *,
77
+ scope: m.GetRegionScope | None = None,
78
+ options: RequestOptions | None = None,
79
+ ) -> ApiResponse[m.GetRegionResource]:
80
+ return cast(
81
+ ApiResponse[m.GetRegionResource],
82
+ resolve_reference(
83
+ reference,
84
+ lambda id: self.get_region(id, options=options),
85
+ lambda match: self.list_regions(
86
+ query=cast(m.ListRegionsQuery, {**reference_scope(scope), **match}),
87
+ options=options,
88
+ ),
89
+ True,
90
+ None,
91
+ ),
92
+ )
93
+
94
+ def list_regions(
95
+ self, *, query: m.ListRegionsQuery | None = None, options: RequestOptions | None = None
96
+ ) -> Page[m.ListRegionsResponse, m.ListRegionsItem]:
97
+ "List regions"
98
+ return cast(
99
+ Page[m.ListRegionsResponse, m.ListRegionsItem],
100
+ self._transport.request(
101
+ "catalog",
102
+ "https://catalog.basaltic.sh",
103
+ _OPS["listRegions"],
104
+ "page",
105
+ {},
106
+ UNSET,
107
+ query,
108
+ options,
109
+ ),
110
+ )
111
+
112
+
113
+ class AsyncCatalogService:
114
+ def __init__(self, transport: AsyncTransport) -> None:
115
+ self._transport = transport
116
+
117
+ async def get_region(
118
+ self, code: str, *, options: RequestOptions | None = None
119
+ ) -> ApiResponse[m.GetRegionResponse]:
120
+ "Get a region"
121
+ return cast(
122
+ ApiResponse[m.GetRegionResponse],
123
+ await self._transport.request(
124
+ "catalog",
125
+ "https://catalog.basaltic.sh",
126
+ _OPS["getRegion"],
127
+ "json",
128
+ {"code": code},
129
+ UNSET,
130
+ None,
131
+ options,
132
+ ),
133
+ )
134
+
135
+ async def get_region_by_reference(
136
+ self,
137
+ reference: str,
138
+ *,
139
+ scope: m.GetRegionScope | None = None,
140
+ options: RequestOptions | None = None,
141
+ ) -> ApiResponse[m.GetRegionResource]:
142
+ return cast(
143
+ ApiResponse[m.GetRegionResource],
144
+ await aresolve_reference(
145
+ reference,
146
+ lambda id: self.get_region(id, options=options),
147
+ lambda match: self.list_regions(
148
+ query=cast(m.ListRegionsQuery, {**reference_scope(scope), **match}),
149
+ options=options,
150
+ ),
151
+ True,
152
+ None,
153
+ ),
154
+ )
155
+
156
+ async def list_regions(
157
+ self, *, query: m.ListRegionsQuery | None = None, options: RequestOptions | None = None
158
+ ) -> Page[m.ListRegionsResponse, m.ListRegionsItem]:
159
+ "List regions"
160
+ return cast(
161
+ Page[m.ListRegionsResponse, m.ListRegionsItem],
162
+ await self._transport.request(
163
+ "catalog",
164
+ "https://catalog.basaltic.sh",
165
+ _OPS["listRegions"],
166
+ "page",
167
+ {},
168
+ UNSET,
169
+ query,
170
+ options,
171
+ ),
172
+ )
@@ -0,0 +1,395 @@
1
+ """Generated typed API methods; do not edit."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import AsyncIterator, Iterator
6
+ from typing import cast
7
+
8
+ from .._common import UNSET, Operation
9
+ from .._transport import AsyncTransport, SyncTransport
10
+ from ..config import RequestOptions
11
+ from ..models import certificate as m
12
+ from ..response import (
13
+ ApiResponse,
14
+ Page,
15
+ aiterate_pages,
16
+ aresolve_reference,
17
+ iterate_pages,
18
+ reference_scope,
19
+ resolve_reference,
20
+ )
21
+
22
+ _OPS = {
23
+ "createCertificate": Operation(
24
+ id="createCertificate",
25
+ method="POST",
26
+ path="/v1/certificates",
27
+ authenticated=True,
28
+ requiredQuery=[],
29
+ requiredHeaders=[],
30
+ queryEncoding={},
31
+ bodyRequired=True,
32
+ contentType="application/json",
33
+ accept="application/json",
34
+ ),
35
+ "deleteCertificate": Operation(
36
+ id="deleteCertificate",
37
+ method="DELETE",
38
+ path="/v1/certificates/{certificate_id}",
39
+ authenticated=True,
40
+ requiredQuery=[],
41
+ requiredHeaders=[],
42
+ queryEncoding={},
43
+ bodyRequired=False,
44
+ contentType="",
45
+ accept="application/json",
46
+ ),
47
+ "getCertificate": Operation(
48
+ id="getCertificate",
49
+ method="GET",
50
+ path="/v1/certificates/{certificate_id}",
51
+ authenticated=True,
52
+ requiredQuery=[],
53
+ requiredHeaders=[],
54
+ queryEncoding={},
55
+ bodyRequired=False,
56
+ contentType="",
57
+ accept="application/json",
58
+ ),
59
+ "getCertificateMaterial": Operation(
60
+ id="getCertificateMaterial",
61
+ method="GET",
62
+ path="/v1/certificates/{certificate_id}/material",
63
+ authenticated=True,
64
+ requiredQuery=[],
65
+ requiredHeaders=[],
66
+ queryEncoding={},
67
+ bodyRequired=False,
68
+ contentType="",
69
+ accept="application/json",
70
+ ),
71
+ "listCertificates": Operation(
72
+ id="listCertificates",
73
+ method="GET",
74
+ path="/v1/certificates",
75
+ authenticated=True,
76
+ requiredQuery=[],
77
+ requiredHeaders=[],
78
+ queryEncoding={
79
+ "name": {"style": "form", "explode": True},
80
+ "crn": {"style": "form", "explode": True},
81
+ "limit": {"style": "form", "explode": True},
82
+ "marker": {"style": "form", "explode": True},
83
+ },
84
+ bodyRequired=False,
85
+ contentType="",
86
+ accept="application/json",
87
+ itemsKey="certificates",
88
+ ),
89
+ "revokeCertificate": Operation(
90
+ id="revokeCertificate",
91
+ method="POST",
92
+ path="/v1/certificates/{certificate_id}/revoke",
93
+ authenticated=True,
94
+ requiredQuery=[],
95
+ requiredHeaders=[],
96
+ queryEncoding={},
97
+ bodyRequired=False,
98
+ contentType="",
99
+ accept="application/json",
100
+ ),
101
+ }
102
+
103
+
104
+ class CertificateService:
105
+ def __init__(self, transport: SyncTransport) -> None:
106
+ self._transport = transport
107
+
108
+ def create_certificate(
109
+ self, body: m.CreateCertificateBody, *, options: RequestOptions | None = None
110
+ ) -> ApiResponse[m.CreateCertificateResponse]:
111
+ "Create certificate"
112
+ return cast(
113
+ ApiResponse[m.CreateCertificateResponse],
114
+ self._transport.request(
115
+ "certificate",
116
+ "https://certificate.{region}.basaltic.sh",
117
+ _OPS["createCertificate"],
118
+ "json",
119
+ {},
120
+ body,
121
+ None,
122
+ options,
123
+ ),
124
+ )
125
+
126
+ def delete_certificate(
127
+ self, certificate_id: str, *, options: RequestOptions | None = None
128
+ ) -> None:
129
+ "Delete certificate"
130
+ return cast(
131
+ None,
132
+ self._transport.request(
133
+ "certificate",
134
+ "https://certificate.{region}.basaltic.sh",
135
+ _OPS["deleteCertificate"],
136
+ "discard",
137
+ {"certificate_id": certificate_id},
138
+ UNSET,
139
+ None,
140
+ options,
141
+ ),
142
+ )
143
+
144
+ def get_certificate(
145
+ self, certificate_id: str, *, options: RequestOptions | None = None
146
+ ) -> ApiResponse[m.GetCertificateResponse]:
147
+ "Get certificate"
148
+ return cast(
149
+ ApiResponse[m.GetCertificateResponse],
150
+ self._transport.request(
151
+ "certificate",
152
+ "https://certificate.{region}.basaltic.sh",
153
+ _OPS["getCertificate"],
154
+ "json",
155
+ {"certificate_id": certificate_id},
156
+ UNSET,
157
+ None,
158
+ options,
159
+ ),
160
+ )
161
+
162
+ def get_certificate_by_reference(
163
+ self,
164
+ reference: str,
165
+ *,
166
+ scope: m.GetCertificateScope | None = None,
167
+ options: RequestOptions | None = None,
168
+ ) -> ApiResponse[m.GetCertificateResource]:
169
+ return cast(
170
+ ApiResponse[m.GetCertificateResource],
171
+ resolve_reference(
172
+ reference,
173
+ lambda id: self.get_certificate(id, options=options),
174
+ lambda match: self.list_certificates(
175
+ query=cast(
176
+ m.ListCertificatesQuery, {**reference_scope(scope), **match, "limit": 2}
177
+ ),
178
+ options=options,
179
+ ),
180
+ True,
181
+ "certificate",
182
+ ),
183
+ )
184
+
185
+ def get_certificate_material(
186
+ self, certificate_id: str, *, options: RequestOptions | None = None
187
+ ) -> ApiResponse[m.GetCertificateMaterialResponse]:
188
+ "Fetch certificate material (leaf, chain, private key)"
189
+ return cast(
190
+ ApiResponse[m.GetCertificateMaterialResponse],
191
+ self._transport.request(
192
+ "certificate",
193
+ "https://certificate.{region}.basaltic.sh",
194
+ _OPS["getCertificateMaterial"],
195
+ "json",
196
+ {"certificate_id": certificate_id},
197
+ UNSET,
198
+ None,
199
+ options,
200
+ ),
201
+ )
202
+
203
+ def list_certificates(
204
+ self, *, query: m.ListCertificatesQuery | None = None, options: RequestOptions | None = None
205
+ ) -> Page[m.ListCertificatesResponse, m.ListCertificatesItem]:
206
+ "List certificates"
207
+ return cast(
208
+ Page[m.ListCertificatesResponse, m.ListCertificatesItem],
209
+ self._transport.request(
210
+ "certificate",
211
+ "https://certificate.{region}.basaltic.sh",
212
+ _OPS["listCertificates"],
213
+ "page",
214
+ {},
215
+ UNSET,
216
+ query,
217
+ options,
218
+ ),
219
+ )
220
+
221
+ def list_certificates_all(
222
+ self, *, query: m.ListCertificatesQuery | None = None, options: RequestOptions | None = None
223
+ ) -> Iterator[m.ListCertificatesItem]:
224
+ return iterate_pages(
225
+ lambda marker: self.list_certificates(
226
+ query=cast(m.ListCertificatesQuery, {**(query or {}), "marker": marker}),
227
+ options=options,
228
+ ),
229
+ (query or {}).get("marker", ""),
230
+ )
231
+
232
+ def revoke_certificate(
233
+ self, certificate_id: str, *, options: RequestOptions | None = None
234
+ ) -> ApiResponse[m.RevokeCertificateResponse]:
235
+ "Revoke certificate"
236
+ return cast(
237
+ ApiResponse[m.RevokeCertificateResponse],
238
+ self._transport.request(
239
+ "certificate",
240
+ "https://certificate.{region}.basaltic.sh",
241
+ _OPS["revokeCertificate"],
242
+ "json",
243
+ {"certificate_id": certificate_id},
244
+ UNSET,
245
+ None,
246
+ options,
247
+ ),
248
+ )
249
+
250
+
251
+ class AsyncCertificateService:
252
+ def __init__(self, transport: AsyncTransport) -> None:
253
+ self._transport = transport
254
+
255
+ async def create_certificate(
256
+ self, body: m.CreateCertificateBody, *, options: RequestOptions | None = None
257
+ ) -> ApiResponse[m.CreateCertificateResponse]:
258
+ "Create certificate"
259
+ return cast(
260
+ ApiResponse[m.CreateCertificateResponse],
261
+ await self._transport.request(
262
+ "certificate",
263
+ "https://certificate.{region}.basaltic.sh",
264
+ _OPS["createCertificate"],
265
+ "json",
266
+ {},
267
+ body,
268
+ None,
269
+ options,
270
+ ),
271
+ )
272
+
273
+ async def delete_certificate(
274
+ self, certificate_id: str, *, options: RequestOptions | None = None
275
+ ) -> None:
276
+ "Delete certificate"
277
+ return cast(
278
+ None,
279
+ await self._transport.request(
280
+ "certificate",
281
+ "https://certificate.{region}.basaltic.sh",
282
+ _OPS["deleteCertificate"],
283
+ "discard",
284
+ {"certificate_id": certificate_id},
285
+ UNSET,
286
+ None,
287
+ options,
288
+ ),
289
+ )
290
+
291
+ async def get_certificate(
292
+ self, certificate_id: str, *, options: RequestOptions | None = None
293
+ ) -> ApiResponse[m.GetCertificateResponse]:
294
+ "Get certificate"
295
+ return cast(
296
+ ApiResponse[m.GetCertificateResponse],
297
+ await self._transport.request(
298
+ "certificate",
299
+ "https://certificate.{region}.basaltic.sh",
300
+ _OPS["getCertificate"],
301
+ "json",
302
+ {"certificate_id": certificate_id},
303
+ UNSET,
304
+ None,
305
+ options,
306
+ ),
307
+ )
308
+
309
+ async def get_certificate_by_reference(
310
+ self,
311
+ reference: str,
312
+ *,
313
+ scope: m.GetCertificateScope | None = None,
314
+ options: RequestOptions | None = None,
315
+ ) -> ApiResponse[m.GetCertificateResource]:
316
+ return cast(
317
+ ApiResponse[m.GetCertificateResource],
318
+ await aresolve_reference(
319
+ reference,
320
+ lambda id: self.get_certificate(id, options=options),
321
+ lambda match: self.list_certificates(
322
+ query=cast(
323
+ m.ListCertificatesQuery, {**reference_scope(scope), **match, "limit": 2}
324
+ ),
325
+ options=options,
326
+ ),
327
+ True,
328
+ "certificate",
329
+ ),
330
+ )
331
+
332
+ async def get_certificate_material(
333
+ self, certificate_id: str, *, options: RequestOptions | None = None
334
+ ) -> ApiResponse[m.GetCertificateMaterialResponse]:
335
+ "Fetch certificate material (leaf, chain, private key)"
336
+ return cast(
337
+ ApiResponse[m.GetCertificateMaterialResponse],
338
+ await self._transport.request(
339
+ "certificate",
340
+ "https://certificate.{region}.basaltic.sh",
341
+ _OPS["getCertificateMaterial"],
342
+ "json",
343
+ {"certificate_id": certificate_id},
344
+ UNSET,
345
+ None,
346
+ options,
347
+ ),
348
+ )
349
+
350
+ async def list_certificates(
351
+ self, *, query: m.ListCertificatesQuery | None = None, options: RequestOptions | None = None
352
+ ) -> Page[m.ListCertificatesResponse, m.ListCertificatesItem]:
353
+ "List certificates"
354
+ return cast(
355
+ Page[m.ListCertificatesResponse, m.ListCertificatesItem],
356
+ await self._transport.request(
357
+ "certificate",
358
+ "https://certificate.{region}.basaltic.sh",
359
+ _OPS["listCertificates"],
360
+ "page",
361
+ {},
362
+ UNSET,
363
+ query,
364
+ options,
365
+ ),
366
+ )
367
+
368
+ def list_certificates_all(
369
+ self, *, query: m.ListCertificatesQuery | None = None, options: RequestOptions | None = None
370
+ ) -> AsyncIterator[m.ListCertificatesItem]:
371
+ return aiterate_pages(
372
+ lambda marker: self.list_certificates(
373
+ query=cast(m.ListCertificatesQuery, {**(query or {}), "marker": marker}),
374
+ options=options,
375
+ ),
376
+ (query or {}).get("marker", ""),
377
+ )
378
+
379
+ async def revoke_certificate(
380
+ self, certificate_id: str, *, options: RequestOptions | None = None
381
+ ) -> ApiResponse[m.RevokeCertificateResponse]:
382
+ "Revoke certificate"
383
+ return cast(
384
+ ApiResponse[m.RevokeCertificateResponse],
385
+ await self._transport.request(
386
+ "certificate",
387
+ "https://certificate.{region}.basaltic.sh",
388
+ _OPS["revokeCertificate"],
389
+ "json",
390
+ {"certificate_id": certificate_id},
391
+ UNSET,
392
+ None,
393
+ options,
394
+ ),
395
+ )