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.
- basaltic/__init__.py +26 -0
- basaltic/_client.py +136 -0
- basaltic/_common.py +284 -0
- basaltic/_transport.py +196 -0
- basaltic/_version.py +3 -0
- basaltic/auth.py +231 -0
- basaltic/client.py +144 -0
- basaltic/config.py +151 -0
- basaltic/errors.py +73 -0
- basaltic/models/__init__.py +17 -0
- basaltic/models/audit.py +85 -0
- basaltic/models/billing.py +284 -0
- basaltic/models/catalog.py +35 -0
- basaltic/models/certificate.py +127 -0
- basaltic/models/compute.py +905 -0
- basaltic/models/dns.py +256 -0
- basaltic/models/iam.py +736 -0
- basaltic/models/kms.py +157 -0
- basaltic/models/loadbalancer.py +574 -0
- basaltic/models/network.py +985 -0
- basaltic/models/quota.py +30 -0
- basaltic/models/secrets.py +136 -0
- basaltic/models/storage.py +789 -0
- basaltic/models/telemetry.py +393 -0
- basaltic/models/workspace.py +734 -0
- basaltic/py.typed +0 -0
- basaltic/response.py +152 -0
- basaltic/services/__init__.py +1 -0
- basaltic/services/audit.py +211 -0
- basaltic/services/billing.py +777 -0
- basaltic/services/catalog.py +172 -0
- basaltic/services/certificate.py +395 -0
- basaltic/services/compute.py +2395 -0
- basaltic/services/dns.py +1079 -0
- basaltic/services/iam.py +3405 -0
- basaltic/services/kms.py +742 -0
- basaltic/services/loadbalancer.py +1727 -0
- basaltic/services/network.py +4691 -0
- basaltic/services/quota.py +75 -0
- basaltic/services/secrets.py +550 -0
- basaltic/services/storage.py +3059 -0
- basaltic/services/telemetry.py +1316 -0
- basaltic/services/workspace.py +3899 -0
- basaltic_sdk_python-0.1.1.dist-info/METADATA +211 -0
- basaltic_sdk_python-0.1.1.dist-info/RECORD +47 -0
- basaltic_sdk_python-0.1.1.dist-info/WHEEL +4 -0
- 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
|
+
)
|