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,75 @@
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 quota as m
11
+ from ..response import (
12
+ Page,
13
+ )
14
+
15
+ _OPS = {
16
+ "listQuotas": Operation(
17
+ id="listQuotas",
18
+ method="GET",
19
+ path="/v1/quotas",
20
+ authenticated=True,
21
+ requiredQuery=[],
22
+ requiredHeaders=[],
23
+ queryEncoding={"region": {"style": "form", "explode": True}},
24
+ bodyRequired=False,
25
+ contentType="",
26
+ accept="application/json",
27
+ itemsKey="quotas",
28
+ ),
29
+ }
30
+
31
+
32
+ class QuotaService:
33
+ def __init__(self, transport: SyncTransport) -> None:
34
+ self._transport = transport
35
+
36
+ def list_quotas(
37
+ self, *, query: m.ListQuotasQuery | None = None, options: RequestOptions | None = None
38
+ ) -> Page[m.ListQuotasResponse, m.ListQuotasItem]:
39
+ "List quotas"
40
+ return cast(
41
+ Page[m.ListQuotasResponse, m.ListQuotasItem],
42
+ self._transport.request(
43
+ "quota",
44
+ "https://quota.basaltic.sh",
45
+ _OPS["listQuotas"],
46
+ "page",
47
+ {},
48
+ UNSET,
49
+ query,
50
+ options,
51
+ ),
52
+ )
53
+
54
+
55
+ class AsyncQuotaService:
56
+ def __init__(self, transport: AsyncTransport) -> None:
57
+ self._transport = transport
58
+
59
+ async def list_quotas(
60
+ self, *, query: m.ListQuotasQuery | None = None, options: RequestOptions | None = None
61
+ ) -> Page[m.ListQuotasResponse, m.ListQuotasItem]:
62
+ "List quotas"
63
+ return cast(
64
+ Page[m.ListQuotasResponse, m.ListQuotasItem],
65
+ await self._transport.request(
66
+ "quota",
67
+ "https://quota.basaltic.sh",
68
+ _OPS["listQuotas"],
69
+ "page",
70
+ {},
71
+ UNSET,
72
+ query,
73
+ options,
74
+ ),
75
+ )
@@ -0,0 +1,550 @@
1
+ """Generated typed API methods; do not edit."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import AsyncIterator, Iterator
6
+ from typing import cast
7
+
8
+ from .._common import UNSET, Operation, Unset
9
+ from .._transport import AsyncTransport, SyncTransport
10
+ from ..config import RequestOptions
11
+ from ..models import secrets as m
12
+ from ..response import (
13
+ ApiResponse,
14
+ Page,
15
+ aiterate_pages,
16
+ iterate_pages,
17
+ )
18
+
19
+ _OPS = {
20
+ "createSecret": Operation(
21
+ id="createSecret",
22
+ method="POST",
23
+ path="/v1/secrets",
24
+ authenticated=True,
25
+ requiredQuery=[],
26
+ requiredHeaders=[],
27
+ queryEncoding={},
28
+ bodyRequired=True,
29
+ contentType="application/json",
30
+ accept="application/json",
31
+ ),
32
+ "deleteSecret": Operation(
33
+ id="deleteSecret",
34
+ method="DELETE",
35
+ path="/v1/secrets/{secret_id}",
36
+ authenticated=True,
37
+ requiredQuery=[],
38
+ requiredHeaders=[],
39
+ queryEncoding={},
40
+ bodyRequired=False,
41
+ contentType="application/json",
42
+ accept="application/json",
43
+ ),
44
+ "describeSecret": Operation(
45
+ id="describeSecret",
46
+ method="GET",
47
+ path="/v1/secrets/{secret_id}",
48
+ authenticated=True,
49
+ requiredQuery=[],
50
+ requiredHeaders=[],
51
+ queryEncoding={},
52
+ bodyRequired=False,
53
+ contentType="",
54
+ accept="application/json",
55
+ ),
56
+ "getSecretValue": Operation(
57
+ id="getSecretValue",
58
+ method="GET",
59
+ path="/v1/secrets/{secret_id}/value",
60
+ authenticated=True,
61
+ requiredQuery=[],
62
+ requiredHeaders=[],
63
+ queryEncoding={"version": {"style": "form", "explode": True}},
64
+ bodyRequired=False,
65
+ contentType="",
66
+ accept="application/json",
67
+ ),
68
+ "listSecrets": Operation(
69
+ id="listSecrets",
70
+ method="GET",
71
+ path="/v1/secrets",
72
+ authenticated=True,
73
+ requiredQuery=[],
74
+ requiredHeaders=[],
75
+ queryEncoding={
76
+ "name": {"style": "form", "explode": True},
77
+ "crn": {"style": "form", "explode": True},
78
+ "include_deleted": {"style": "form", "explode": True},
79
+ "marker": {"style": "form", "explode": True},
80
+ "limit": {"style": "form", "explode": True},
81
+ },
82
+ bodyRequired=False,
83
+ contentType="",
84
+ accept="application/json",
85
+ itemsKey="secrets",
86
+ ),
87
+ "listVersions": Operation(
88
+ id="listVersions",
89
+ method="GET",
90
+ path="/v1/secrets/{secret_id}/versions",
91
+ authenticated=True,
92
+ requiredQuery=[],
93
+ requiredHeaders=[],
94
+ queryEncoding={
95
+ "crn": {"style": "form", "explode": True},
96
+ "marker": {"style": "form", "explode": True},
97
+ "limit": {"style": "form", "explode": True},
98
+ },
99
+ bodyRequired=False,
100
+ contentType="",
101
+ accept="application/json",
102
+ itemsKey="versions",
103
+ ),
104
+ "putSecretValue": Operation(
105
+ id="putSecretValue",
106
+ method="POST",
107
+ path="/v1/secrets/{secret_id}/value",
108
+ authenticated=True,
109
+ requiredQuery=[],
110
+ requiredHeaders=[],
111
+ queryEncoding={},
112
+ bodyRequired=True,
113
+ contentType="application/json",
114
+ accept="application/json",
115
+ ),
116
+ "restoreSecret": Operation(
117
+ id="restoreSecret",
118
+ method="POST",
119
+ path="/v1/secrets/{secret_id}/restore",
120
+ authenticated=True,
121
+ requiredQuery=[],
122
+ requiredHeaders=[],
123
+ queryEncoding={},
124
+ bodyRequired=False,
125
+ contentType="",
126
+ accept="application/json",
127
+ ),
128
+ "updateSecret": Operation(
129
+ id="updateSecret",
130
+ method="PATCH",
131
+ path="/v1/secrets/{secret_id}",
132
+ authenticated=True,
133
+ requiredQuery=[],
134
+ requiredHeaders=[],
135
+ queryEncoding={},
136
+ bodyRequired=True,
137
+ contentType="application/json",
138
+ accept="application/json",
139
+ ),
140
+ }
141
+
142
+
143
+ class SecretsService:
144
+ def __init__(self, transport: SyncTransport) -> None:
145
+ self._transport = transport
146
+
147
+ def create_secret(
148
+ self, body: m.CreateSecretBody, *, options: RequestOptions | None = None
149
+ ) -> ApiResponse[m.CreateSecretResponse]:
150
+ "Create a new secret with an initial value"
151
+ return cast(
152
+ ApiResponse[m.CreateSecretResponse],
153
+ self._transport.request(
154
+ "secrets",
155
+ "https://secrets.{region}.basaltic.sh",
156
+ _OPS["createSecret"],
157
+ "json",
158
+ {},
159
+ body,
160
+ None,
161
+ options,
162
+ ),
163
+ )
164
+
165
+ def delete_secret(
166
+ self,
167
+ secret_id: str,
168
+ body: m.DeleteSecretBody | Unset = UNSET,
169
+ *,
170
+ options: RequestOptions | None = None,
171
+ ) -> ApiResponse[m.DeleteSecretResponse]:
172
+ "Schedule deletion (soft delete with recovery window)"
173
+ return cast(
174
+ ApiResponse[m.DeleteSecretResponse],
175
+ self._transport.request(
176
+ "secrets",
177
+ "https://secrets.{region}.basaltic.sh",
178
+ _OPS["deleteSecret"],
179
+ "json",
180
+ {"secret_id": secret_id},
181
+ body,
182
+ None,
183
+ options,
184
+ ),
185
+ )
186
+
187
+ def describe_secret(
188
+ self, secret_id: str, *, options: RequestOptions | None = None
189
+ ) -> ApiResponse[m.DescribeSecretResponse]:
190
+ "Describe a secret (no value)"
191
+ return cast(
192
+ ApiResponse[m.DescribeSecretResponse],
193
+ self._transport.request(
194
+ "secrets",
195
+ "https://secrets.{region}.basaltic.sh",
196
+ _OPS["describeSecret"],
197
+ "json",
198
+ {"secret_id": secret_id},
199
+ UNSET,
200
+ None,
201
+ options,
202
+ ),
203
+ )
204
+
205
+ def get_secret_value(
206
+ self,
207
+ secret_id: str,
208
+ *,
209
+ query: m.GetSecretValueQuery | None = None,
210
+ options: RequestOptions | None = None,
211
+ ) -> ApiResponse[m.GetSecretValueResponse]:
212
+ "Read the current value (or a specific version)"
213
+ return cast(
214
+ ApiResponse[m.GetSecretValueResponse],
215
+ self._transport.request(
216
+ "secrets",
217
+ "https://secrets.{region}.basaltic.sh",
218
+ _OPS["getSecretValue"],
219
+ "json",
220
+ {"secret_id": secret_id},
221
+ UNSET,
222
+ query,
223
+ options,
224
+ ),
225
+ )
226
+
227
+ def list_secrets(
228
+ self, *, query: m.ListSecretsQuery | None = None, options: RequestOptions | None = None
229
+ ) -> Page[m.ListSecretsResponse, m.ListSecretsItem]:
230
+ "List secrets"
231
+ return cast(
232
+ Page[m.ListSecretsResponse, m.ListSecretsItem],
233
+ self._transport.request(
234
+ "secrets",
235
+ "https://secrets.{region}.basaltic.sh",
236
+ _OPS["listSecrets"],
237
+ "page",
238
+ {},
239
+ UNSET,
240
+ query,
241
+ options,
242
+ ),
243
+ )
244
+
245
+ def list_secrets_all(
246
+ self, *, query: m.ListSecretsQuery | None = None, options: RequestOptions | None = None
247
+ ) -> Iterator[m.ListSecretsItem]:
248
+ return iterate_pages(
249
+ lambda marker: self.list_secrets(
250
+ query=cast(m.ListSecretsQuery, {**(query or {}), "marker": marker}), options=options
251
+ ),
252
+ (query or {}).get("marker", ""),
253
+ )
254
+
255
+ def list_versions(
256
+ self,
257
+ secret_id: str,
258
+ *,
259
+ query: m.ListVersionsQuery | None = None,
260
+ options: RequestOptions | None = None,
261
+ ) -> Page[m.ListVersionsResponse, m.ListVersionsItem]:
262
+ "List versions"
263
+ return cast(
264
+ Page[m.ListVersionsResponse, m.ListVersionsItem],
265
+ self._transport.request(
266
+ "secrets",
267
+ "https://secrets.{region}.basaltic.sh",
268
+ _OPS["listVersions"],
269
+ "page",
270
+ {"secret_id": secret_id},
271
+ UNSET,
272
+ query,
273
+ options,
274
+ ),
275
+ )
276
+
277
+ def list_versions_all(
278
+ self,
279
+ secret_id: str,
280
+ *,
281
+ query: m.ListVersionsQuery | None = None,
282
+ options: RequestOptions | None = None,
283
+ ) -> Iterator[m.ListVersionsItem]:
284
+ return iterate_pages(
285
+ lambda marker: self.list_versions(
286
+ secret_id,
287
+ query=cast(m.ListVersionsQuery, {**(query or {}), "marker": marker}),
288
+ options=options,
289
+ ),
290
+ (query or {}).get("marker", ""),
291
+ )
292
+
293
+ def put_secret_value(
294
+ self, secret_id: str, body: m.PutSecretValueBody, *, options: RequestOptions | None = None
295
+ ) -> ApiResponse[m.PutSecretValueResponse]:
296
+ "Store a new version (becomes current)"
297
+ return cast(
298
+ ApiResponse[m.PutSecretValueResponse],
299
+ self._transport.request(
300
+ "secrets",
301
+ "https://secrets.{region}.basaltic.sh",
302
+ _OPS["putSecretValue"],
303
+ "json",
304
+ {"secret_id": secret_id},
305
+ body,
306
+ None,
307
+ options,
308
+ ),
309
+ )
310
+
311
+ def restore_secret(
312
+ self, secret_id: str, *, options: RequestOptions | None = None
313
+ ) -> ApiResponse[m.RestoreSecretResponse]:
314
+ "Restore a secret from the recovery window"
315
+ return cast(
316
+ ApiResponse[m.RestoreSecretResponse],
317
+ self._transport.request(
318
+ "secrets",
319
+ "https://secrets.{region}.basaltic.sh",
320
+ _OPS["restoreSecret"],
321
+ "json",
322
+ {"secret_id": secret_id},
323
+ UNSET,
324
+ None,
325
+ options,
326
+ ),
327
+ )
328
+
329
+ def update_secret(
330
+ self, secret_id: str, body: m.UpdateSecretBody, *, options: RequestOptions | None = None
331
+ ) -> ApiResponse[m.UpdateSecretResponse]:
332
+ "Update mutable metadata"
333
+ return cast(
334
+ ApiResponse[m.UpdateSecretResponse],
335
+ self._transport.request(
336
+ "secrets",
337
+ "https://secrets.{region}.basaltic.sh",
338
+ _OPS["updateSecret"],
339
+ "json",
340
+ {"secret_id": secret_id},
341
+ body,
342
+ None,
343
+ options,
344
+ ),
345
+ )
346
+
347
+
348
+ class AsyncSecretsService:
349
+ def __init__(self, transport: AsyncTransport) -> None:
350
+ self._transport = transport
351
+
352
+ async def create_secret(
353
+ self, body: m.CreateSecretBody, *, options: RequestOptions | None = None
354
+ ) -> ApiResponse[m.CreateSecretResponse]:
355
+ "Create a new secret with an initial value"
356
+ return cast(
357
+ ApiResponse[m.CreateSecretResponse],
358
+ await self._transport.request(
359
+ "secrets",
360
+ "https://secrets.{region}.basaltic.sh",
361
+ _OPS["createSecret"],
362
+ "json",
363
+ {},
364
+ body,
365
+ None,
366
+ options,
367
+ ),
368
+ )
369
+
370
+ async def delete_secret(
371
+ self,
372
+ secret_id: str,
373
+ body: m.DeleteSecretBody | Unset = UNSET,
374
+ *,
375
+ options: RequestOptions | None = None,
376
+ ) -> ApiResponse[m.DeleteSecretResponse]:
377
+ "Schedule deletion (soft delete with recovery window)"
378
+ return cast(
379
+ ApiResponse[m.DeleteSecretResponse],
380
+ await self._transport.request(
381
+ "secrets",
382
+ "https://secrets.{region}.basaltic.sh",
383
+ _OPS["deleteSecret"],
384
+ "json",
385
+ {"secret_id": secret_id},
386
+ body,
387
+ None,
388
+ options,
389
+ ),
390
+ )
391
+
392
+ async def describe_secret(
393
+ self, secret_id: str, *, options: RequestOptions | None = None
394
+ ) -> ApiResponse[m.DescribeSecretResponse]:
395
+ "Describe a secret (no value)"
396
+ return cast(
397
+ ApiResponse[m.DescribeSecretResponse],
398
+ await self._transport.request(
399
+ "secrets",
400
+ "https://secrets.{region}.basaltic.sh",
401
+ _OPS["describeSecret"],
402
+ "json",
403
+ {"secret_id": secret_id},
404
+ UNSET,
405
+ None,
406
+ options,
407
+ ),
408
+ )
409
+
410
+ async def get_secret_value(
411
+ self,
412
+ secret_id: str,
413
+ *,
414
+ query: m.GetSecretValueQuery | None = None,
415
+ options: RequestOptions | None = None,
416
+ ) -> ApiResponse[m.GetSecretValueResponse]:
417
+ "Read the current value (or a specific version)"
418
+ return cast(
419
+ ApiResponse[m.GetSecretValueResponse],
420
+ await self._transport.request(
421
+ "secrets",
422
+ "https://secrets.{region}.basaltic.sh",
423
+ _OPS["getSecretValue"],
424
+ "json",
425
+ {"secret_id": secret_id},
426
+ UNSET,
427
+ query,
428
+ options,
429
+ ),
430
+ )
431
+
432
+ async def list_secrets(
433
+ self, *, query: m.ListSecretsQuery | None = None, options: RequestOptions | None = None
434
+ ) -> Page[m.ListSecretsResponse, m.ListSecretsItem]:
435
+ "List secrets"
436
+ return cast(
437
+ Page[m.ListSecretsResponse, m.ListSecretsItem],
438
+ await self._transport.request(
439
+ "secrets",
440
+ "https://secrets.{region}.basaltic.sh",
441
+ _OPS["listSecrets"],
442
+ "page",
443
+ {},
444
+ UNSET,
445
+ query,
446
+ options,
447
+ ),
448
+ )
449
+
450
+ def list_secrets_all(
451
+ self, *, query: m.ListSecretsQuery | None = None, options: RequestOptions | None = None
452
+ ) -> AsyncIterator[m.ListSecretsItem]:
453
+ return aiterate_pages(
454
+ lambda marker: self.list_secrets(
455
+ query=cast(m.ListSecretsQuery, {**(query or {}), "marker": marker}), options=options
456
+ ),
457
+ (query or {}).get("marker", ""),
458
+ )
459
+
460
+ async def list_versions(
461
+ self,
462
+ secret_id: str,
463
+ *,
464
+ query: m.ListVersionsQuery | None = None,
465
+ options: RequestOptions | None = None,
466
+ ) -> Page[m.ListVersionsResponse, m.ListVersionsItem]:
467
+ "List versions"
468
+ return cast(
469
+ Page[m.ListVersionsResponse, m.ListVersionsItem],
470
+ await self._transport.request(
471
+ "secrets",
472
+ "https://secrets.{region}.basaltic.sh",
473
+ _OPS["listVersions"],
474
+ "page",
475
+ {"secret_id": secret_id},
476
+ UNSET,
477
+ query,
478
+ options,
479
+ ),
480
+ )
481
+
482
+ def list_versions_all(
483
+ self,
484
+ secret_id: str,
485
+ *,
486
+ query: m.ListVersionsQuery | None = None,
487
+ options: RequestOptions | None = None,
488
+ ) -> AsyncIterator[m.ListVersionsItem]:
489
+ return aiterate_pages(
490
+ lambda marker: self.list_versions(
491
+ secret_id,
492
+ query=cast(m.ListVersionsQuery, {**(query or {}), "marker": marker}),
493
+ options=options,
494
+ ),
495
+ (query or {}).get("marker", ""),
496
+ )
497
+
498
+ async def put_secret_value(
499
+ self, secret_id: str, body: m.PutSecretValueBody, *, options: RequestOptions | None = None
500
+ ) -> ApiResponse[m.PutSecretValueResponse]:
501
+ "Store a new version (becomes current)"
502
+ return cast(
503
+ ApiResponse[m.PutSecretValueResponse],
504
+ await self._transport.request(
505
+ "secrets",
506
+ "https://secrets.{region}.basaltic.sh",
507
+ _OPS["putSecretValue"],
508
+ "json",
509
+ {"secret_id": secret_id},
510
+ body,
511
+ None,
512
+ options,
513
+ ),
514
+ )
515
+
516
+ async def restore_secret(
517
+ self, secret_id: str, *, options: RequestOptions | None = None
518
+ ) -> ApiResponse[m.RestoreSecretResponse]:
519
+ "Restore a secret from the recovery window"
520
+ return cast(
521
+ ApiResponse[m.RestoreSecretResponse],
522
+ await self._transport.request(
523
+ "secrets",
524
+ "https://secrets.{region}.basaltic.sh",
525
+ _OPS["restoreSecret"],
526
+ "json",
527
+ {"secret_id": secret_id},
528
+ UNSET,
529
+ None,
530
+ options,
531
+ ),
532
+ )
533
+
534
+ async def update_secret(
535
+ self, secret_id: str, body: m.UpdateSecretBody, *, options: RequestOptions | None = None
536
+ ) -> ApiResponse[m.UpdateSecretResponse]:
537
+ "Update mutable metadata"
538
+ return cast(
539
+ ApiResponse[m.UpdateSecretResponse],
540
+ await self._transport.request(
541
+ "secrets",
542
+ "https://secrets.{region}.basaltic.sh",
543
+ _OPS["updateSecret"],
544
+ "json",
545
+ {"secret_id": secret_id},
546
+ body,
547
+ None,
548
+ options,
549
+ ),
550
+ )