casedev 0.1.0__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.
- casedev/__init__.py +104 -0
- casedev/_base_client.py +1995 -0
- casedev/_client.py +560 -0
- casedev/_compat.py +219 -0
- casedev/_constants.py +14 -0
- casedev/_exceptions.py +108 -0
- casedev/_files.py +123 -0
- casedev/_models.py +857 -0
- casedev/_qs.py +150 -0
- casedev/_resource.py +43 -0
- casedev/_response.py +830 -0
- casedev/_streaming.py +333 -0
- casedev/_types.py +260 -0
- casedev/_utils/__init__.py +64 -0
- casedev/_utils/_compat.py +45 -0
- casedev/_utils/_datetime_parse.py +136 -0
- casedev/_utils/_logs.py +25 -0
- casedev/_utils/_proxy.py +65 -0
- casedev/_utils/_reflection.py +42 -0
- casedev/_utils/_resources_proxy.py +24 -0
- casedev/_utils/_streams.py +12 -0
- casedev/_utils/_sync.py +58 -0
- casedev/_utils/_transform.py +457 -0
- casedev/_utils/_typing.py +156 -0
- casedev/_utils/_utils.py +421 -0
- casedev/_version.py +4 -0
- casedev/lib/.keep +4 -0
- casedev/py.typed +0 -0
- casedev/resources/__init__.py +173 -0
- casedev/resources/actions/__init__.py +33 -0
- casedev/resources/actions/actions.py +102 -0
- casedev/resources/actions/v1.py +640 -0
- casedev/resources/compute/__init__.py +33 -0
- casedev/resources/compute/compute.py +102 -0
- casedev/resources/compute/v1/__init__.py +89 -0
- casedev/resources/compute/v1/environments.py +492 -0
- casedev/resources/compute/v1/functions.py +278 -0
- casedev/resources/compute/v1/invoke.py +216 -0
- casedev/resources/compute/v1/runs.py +290 -0
- casedev/resources/compute/v1/secrets.py +655 -0
- casedev/resources/compute/v1/v1.py +583 -0
- casedev/resources/convert/__init__.py +33 -0
- casedev/resources/convert/convert.py +102 -0
- casedev/resources/convert/v1/__init__.py +33 -0
- casedev/resources/convert/v1/jobs.py +254 -0
- casedev/resources/convert/v1/v1.py +450 -0
- casedev/resources/format/__init__.py +33 -0
- casedev/resources/format/format.py +102 -0
- casedev/resources/format/v1/__init__.py +33 -0
- casedev/resources/format/v1/templates.py +419 -0
- casedev/resources/format/v1/v1.py +244 -0
- casedev/resources/llm/__init__.py +33 -0
- casedev/resources/llm/llm.py +192 -0
- casedev/resources/llm/v1/__init__.py +33 -0
- casedev/resources/llm/v1/chat.py +243 -0
- casedev/resources/llm/v1/v1.py +317 -0
- casedev/resources/ocr/__init__.py +33 -0
- casedev/resources/ocr/ocr.py +102 -0
- casedev/resources/ocr/v1.py +407 -0
- casedev/resources/search/__init__.py +33 -0
- casedev/resources/search/search.py +102 -0
- casedev/resources/search/v1.py +1052 -0
- casedev/resources/templates/__init__.py +33 -0
- casedev/resources/templates/templates.py +102 -0
- casedev/resources/templates/v1.py +633 -0
- casedev/resources/vault/__init__.py +47 -0
- casedev/resources/vault/graphrag.py +256 -0
- casedev/resources/vault/objects.py +571 -0
- casedev/resources/vault/vault.py +764 -0
- casedev/resources/voice/__init__.py +61 -0
- casedev/resources/voice/streaming.py +160 -0
- casedev/resources/voice/transcription.py +327 -0
- casedev/resources/voice/v1/__init__.py +33 -0
- casedev/resources/voice/v1/speak.py +478 -0
- casedev/resources/voice/v1/v1.py +290 -0
- casedev/resources/voice/voice.py +166 -0
- casedev/resources/webhooks/__init__.py +33 -0
- casedev/resources/webhooks/v1.py +447 -0
- casedev/resources/webhooks/webhooks.py +102 -0
- casedev/resources/workflows/__init__.py +33 -0
- casedev/resources/workflows/v1.py +1053 -0
- casedev/resources/workflows/workflows.py +102 -0
- casedev/types/__init__.py +12 -0
- casedev/types/actions/__init__.py +8 -0
- casedev/types/actions/v1_create_params.py +22 -0
- casedev/types/actions/v1_create_response.py +33 -0
- casedev/types/actions/v1_execute_params.py +16 -0
- casedev/types/actions/v1_execute_response.py +31 -0
- casedev/types/compute/__init__.py +7 -0
- casedev/types/compute/v1/__init__.py +18 -0
- casedev/types/compute/v1/environment_create_params.py +12 -0
- casedev/types/compute/v1/environment_create_response.py +34 -0
- casedev/types/compute/v1/environment_delete_response.py +11 -0
- casedev/types/compute/v1/function_get_logs_params.py +12 -0
- casedev/types/compute/v1/function_list_params.py +12 -0
- casedev/types/compute/v1/invoke_run_params.py +21 -0
- casedev/types/compute/v1/invoke_run_response.py +39 -0
- casedev/types/compute/v1/run_list_params.py +18 -0
- casedev/types/compute/v1/secret_create_params.py +24 -0
- casedev/types/compute/v1/secret_create_response.py +24 -0
- casedev/types/compute/v1/secret_delete_group_params.py +18 -0
- casedev/types/compute/v1/secret_list_params.py +15 -0
- casedev/types/compute/v1/secret_retrieve_group_params.py +12 -0
- casedev/types/compute/v1/secret_update_group_params.py +16 -0
- casedev/types/compute/v1_deploy_params.py +114 -0
- casedev/types/compute/v1_deploy_response.py +30 -0
- casedev/types/compute/v1_get_usage_params.py +15 -0
- casedev/types/convert/__init__.py +8 -0
- casedev/types/convert/v1/__init__.py +3 -0
- casedev/types/convert/v1_process_params.py +15 -0
- casedev/types/convert/v1_process_response.py +19 -0
- casedev/types/convert/v1_webhook_params.py +32 -0
- casedev/types/convert/v1_webhook_response.py +13 -0
- casedev/types/format/__init__.py +5 -0
- casedev/types/format/v1/__init__.py +7 -0
- casedev/types/format/v1/template_create_params.py +32 -0
- casedev/types/format/v1/template_create_response.py +27 -0
- casedev/types/format/v1/template_list_params.py +12 -0
- casedev/types/format/v1_create_document_params.py +42 -0
- casedev/types/llm/__init__.py +5 -0
- casedev/types/llm/v1/__init__.py +6 -0
- casedev/types/llm/v1/chat_create_completion_params.py +42 -0
- casedev/types/llm/v1/chat_create_completion_response.py +49 -0
- casedev/types/llm/v1_create_embedding_params.py +27 -0
- casedev/types/ocr/__init__.py +6 -0
- casedev/types/ocr/v1_process_params.py +44 -0
- casedev/types/ocr/v1_process_response.py +32 -0
- casedev/types/search/__init__.py +15 -0
- casedev/types/search/v1_answer_params.py +45 -0
- casedev/types/search/v1_answer_response.py +35 -0
- casedev/types/search/v1_contents_params.py +42 -0
- casedev/types/search/v1_contents_response.py +31 -0
- casedev/types/search/v1_research_params.py +23 -0
- casedev/types/search/v1_research_response.py +20 -0
- casedev/types/search/v1_retrieve_research_params.py +15 -0
- casedev/types/search/v1_search_params.py +56 -0
- casedev/types/search/v1_search_response.py +38 -0
- casedev/types/search/v1_similar_params.py +44 -0
- casedev/types/search/v1_similar_response.py +33 -0
- casedev/types/templates/__init__.py +8 -0
- casedev/types/templates/v1_execute_params.py +22 -0
- casedev/types/templates/v1_execute_response.py +31 -0
- casedev/types/templates/v1_list_params.py +32 -0
- casedev/types/templates/v1_search_params.py +18 -0
- casedev/types/vault/__init__.py +6 -0
- casedev/types/vault/object_create_presigned_url_params.py +22 -0
- casedev/types/vault/object_create_presigned_url_response.py +51 -0
- casedev/types/vault_create_params.py +20 -0
- casedev/types/vault_create_response.py +36 -0
- casedev/types/vault_ingest_response.py +26 -0
- casedev/types/vault_list_response.py +40 -0
- casedev/types/vault_search_params.py +27 -0
- casedev/types/vault_search_response.py +53 -0
- casedev/types/vault_upload_params.py +26 -0
- casedev/types/vault_upload_response.py +39 -0
- casedev/types/voice/__init__.py +7 -0
- casedev/types/voice/transcription_create_params.py +36 -0
- casedev/types/voice/transcription_retrieve_response.py +41 -0
- casedev/types/voice/v1/__init__.py +6 -0
- casedev/types/voice/v1/speak_create_params.py +59 -0
- casedev/types/voice/v1/speak_stream_params.py +58 -0
- casedev/types/voice/v1_list_voices_params.py +36 -0
- casedev/types/webhooks/__init__.py +6 -0
- casedev/types/webhooks/v1_create_params.py +20 -0
- casedev/types/webhooks/v1_create_response.py +33 -0
- casedev/types/workflows/__init__.py +19 -0
- casedev/types/workflows/v1_create_params.py +32 -0
- casedev/types/workflows/v1_create_response.py +29 -0
- casedev/types/workflows/v1_delete_response.py +13 -0
- casedev/types/workflows/v1_deploy_response.py +20 -0
- casedev/types/workflows/v1_execute_params.py +12 -0
- casedev/types/workflows/v1_execute_response.py +22 -0
- casedev/types/workflows/v1_list_executions_params.py +13 -0
- casedev/types/workflows/v1_list_executions_response.py +27 -0
- casedev/types/workflows/v1_list_params.py +18 -0
- casedev/types/workflows/v1_list_response.py +37 -0
- casedev/types/workflows/v1_retrieve_execution_response.py +31 -0
- casedev/types/workflows/v1_retrieve_response.py +35 -0
- casedev/types/workflows/v1_undeploy_response.py +13 -0
- casedev/types/workflows/v1_update_params.py +26 -0
- casedev/types/workflows/v1_update_response.py +17 -0
- casedev-0.1.0.dist-info/METADATA +454 -0
- casedev-0.1.0.dist-info/RECORD +185 -0
- casedev-0.1.0.dist-info/WHEEL +4 -0
- casedev-0.1.0.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Dict
|
|
6
|
+
|
|
7
|
+
import httpx
|
|
8
|
+
|
|
9
|
+
from ...._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given
|
|
10
|
+
from ...._utils import maybe_transform, async_maybe_transform
|
|
11
|
+
from ...._compat import cached_property
|
|
12
|
+
from ...._resource import SyncAPIResource, AsyncAPIResource
|
|
13
|
+
from ...._response import (
|
|
14
|
+
to_raw_response_wrapper,
|
|
15
|
+
to_streamed_response_wrapper,
|
|
16
|
+
async_to_raw_response_wrapper,
|
|
17
|
+
async_to_streamed_response_wrapper,
|
|
18
|
+
)
|
|
19
|
+
from ...._base_client import make_request_options
|
|
20
|
+
from ....types.compute.v1 import (
|
|
21
|
+
secret_list_params,
|
|
22
|
+
secret_create_params,
|
|
23
|
+
secret_delete_group_params,
|
|
24
|
+
secret_update_group_params,
|
|
25
|
+
secret_retrieve_group_params,
|
|
26
|
+
)
|
|
27
|
+
from ....types.compute.v1.secret_create_response import SecretCreateResponse
|
|
28
|
+
|
|
29
|
+
__all__ = ["SecretsResource", "AsyncSecretsResource"]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class SecretsResource(SyncAPIResource):
|
|
33
|
+
@cached_property
|
|
34
|
+
def with_raw_response(self) -> SecretsResourceWithRawResponse:
|
|
35
|
+
"""
|
|
36
|
+
This property can be used as a prefix for any HTTP method call to return
|
|
37
|
+
the raw response object instead of the parsed content.
|
|
38
|
+
|
|
39
|
+
For more information, see https://www.github.com/CaseMark/casedev-python#accessing-raw-response-data-eg-headers
|
|
40
|
+
"""
|
|
41
|
+
return SecretsResourceWithRawResponse(self)
|
|
42
|
+
|
|
43
|
+
@cached_property
|
|
44
|
+
def with_streaming_response(self) -> SecretsResourceWithStreamingResponse:
|
|
45
|
+
"""
|
|
46
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
47
|
+
|
|
48
|
+
For more information, see https://www.github.com/CaseMark/casedev-python#with_streaming_response
|
|
49
|
+
"""
|
|
50
|
+
return SecretsResourceWithStreamingResponse(self)
|
|
51
|
+
|
|
52
|
+
def create(
|
|
53
|
+
self,
|
|
54
|
+
*,
|
|
55
|
+
name: str,
|
|
56
|
+
description: str | Omit = omit,
|
|
57
|
+
env: str | Omit = omit,
|
|
58
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
59
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
60
|
+
extra_headers: Headers | None = None,
|
|
61
|
+
extra_query: Query | None = None,
|
|
62
|
+
extra_body: Body | None = None,
|
|
63
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
64
|
+
) -> SecretCreateResponse:
|
|
65
|
+
"""Creates a new secret group in a compute environment.
|
|
66
|
+
|
|
67
|
+
Secret groups organize
|
|
68
|
+
related secrets for use in serverless functions and workflows. If no environment
|
|
69
|
+
is specified, the group is created in the default environment.
|
|
70
|
+
|
|
71
|
+
**Features:**
|
|
72
|
+
|
|
73
|
+
- Organize secrets by logical groups (e.g., database, APIs, third-party
|
|
74
|
+
services)
|
|
75
|
+
- Environment-based isolation
|
|
76
|
+
- Validation of group names
|
|
77
|
+
- Conflict detection for existing groups
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
name: Unique name for the secret group. Must contain only letters, numbers, hyphens,
|
|
81
|
+
and underscores.
|
|
82
|
+
|
|
83
|
+
description: Optional description of the secret group's purpose
|
|
84
|
+
|
|
85
|
+
env: Environment name where the secret group will be created. Uses default
|
|
86
|
+
environment if not specified.
|
|
87
|
+
|
|
88
|
+
extra_headers: Send extra headers
|
|
89
|
+
|
|
90
|
+
extra_query: Add additional query parameters to the request
|
|
91
|
+
|
|
92
|
+
extra_body: Add additional JSON properties to the request
|
|
93
|
+
|
|
94
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
95
|
+
"""
|
|
96
|
+
return self._post(
|
|
97
|
+
"/compute/v1/secrets",
|
|
98
|
+
body=maybe_transform(
|
|
99
|
+
{
|
|
100
|
+
"name": name,
|
|
101
|
+
"description": description,
|
|
102
|
+
"env": env,
|
|
103
|
+
},
|
|
104
|
+
secret_create_params.SecretCreateParams,
|
|
105
|
+
),
|
|
106
|
+
options=make_request_options(
|
|
107
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
108
|
+
),
|
|
109
|
+
cast_to=SecretCreateResponse,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
def list(
|
|
113
|
+
self,
|
|
114
|
+
*,
|
|
115
|
+
env: str | Omit = omit,
|
|
116
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
117
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
118
|
+
extra_headers: Headers | None = None,
|
|
119
|
+
extra_query: Query | None = None,
|
|
120
|
+
extra_body: Body | None = None,
|
|
121
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
122
|
+
) -> None:
|
|
123
|
+
"""Retrieve all secret groups for a compute environment.
|
|
124
|
+
|
|
125
|
+
Secret groups organize
|
|
126
|
+
related secrets (API keys, credentials, etc.) that can be securely accessed by
|
|
127
|
+
compute jobs during execution.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
env: Environment name to list secret groups for. If not specified, uses the default
|
|
131
|
+
environment.
|
|
132
|
+
|
|
133
|
+
extra_headers: Send extra headers
|
|
134
|
+
|
|
135
|
+
extra_query: Add additional query parameters to the request
|
|
136
|
+
|
|
137
|
+
extra_body: Add additional JSON properties to the request
|
|
138
|
+
|
|
139
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
140
|
+
"""
|
|
141
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
142
|
+
return self._get(
|
|
143
|
+
"/compute/v1/secrets",
|
|
144
|
+
options=make_request_options(
|
|
145
|
+
extra_headers=extra_headers,
|
|
146
|
+
extra_query=extra_query,
|
|
147
|
+
extra_body=extra_body,
|
|
148
|
+
timeout=timeout,
|
|
149
|
+
query=maybe_transform({"env": env}, secret_list_params.SecretListParams),
|
|
150
|
+
),
|
|
151
|
+
cast_to=NoneType,
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
def delete_group(
|
|
155
|
+
self,
|
|
156
|
+
group: str,
|
|
157
|
+
*,
|
|
158
|
+
env: str | Omit = omit,
|
|
159
|
+
key: str | Omit = omit,
|
|
160
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
161
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
162
|
+
extra_headers: Headers | None = None,
|
|
163
|
+
extra_query: Query | None = None,
|
|
164
|
+
extra_body: Body | None = None,
|
|
165
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
166
|
+
) -> None:
|
|
167
|
+
"""
|
|
168
|
+
Delete an entire secret group or a specific key within a secret group.
|
|
169
|
+
Automatically syncs the deletion to Modal compute infrastructure. When deleting
|
|
170
|
+
a specific key, the remaining secrets in the group are re-synced. When deleting
|
|
171
|
+
the entire group, all secrets and the group itself are removed from both the
|
|
172
|
+
database and Modal.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
env: Environment name. If not provided, uses the default environment
|
|
176
|
+
|
|
177
|
+
key: Specific key to delete within the group. If not provided, the entire group is
|
|
178
|
+
deleted
|
|
179
|
+
|
|
180
|
+
extra_headers: Send extra headers
|
|
181
|
+
|
|
182
|
+
extra_query: Add additional query parameters to the request
|
|
183
|
+
|
|
184
|
+
extra_body: Add additional JSON properties to the request
|
|
185
|
+
|
|
186
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
187
|
+
"""
|
|
188
|
+
if not group:
|
|
189
|
+
raise ValueError(f"Expected a non-empty value for `group` but received {group!r}")
|
|
190
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
191
|
+
return self._delete(
|
|
192
|
+
f"/compute/v1/secrets/{group}",
|
|
193
|
+
options=make_request_options(
|
|
194
|
+
extra_headers=extra_headers,
|
|
195
|
+
extra_query=extra_query,
|
|
196
|
+
extra_body=extra_body,
|
|
197
|
+
timeout=timeout,
|
|
198
|
+
query=maybe_transform(
|
|
199
|
+
{
|
|
200
|
+
"env": env,
|
|
201
|
+
"key": key,
|
|
202
|
+
},
|
|
203
|
+
secret_delete_group_params.SecretDeleteGroupParams,
|
|
204
|
+
),
|
|
205
|
+
),
|
|
206
|
+
cast_to=NoneType,
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
def retrieve_group(
|
|
210
|
+
self,
|
|
211
|
+
group: str,
|
|
212
|
+
*,
|
|
213
|
+
env: str | Omit = omit,
|
|
214
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
215
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
216
|
+
extra_headers: Headers | None = None,
|
|
217
|
+
extra_query: Query | None = None,
|
|
218
|
+
extra_body: Body | None = None,
|
|
219
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
220
|
+
) -> None:
|
|
221
|
+
"""
|
|
222
|
+
Retrieve the keys (names) of secrets in a specified group within a compute
|
|
223
|
+
environment. For security reasons, actual secret values are not returned - only
|
|
224
|
+
the keys and metadata.
|
|
225
|
+
|
|
226
|
+
Args:
|
|
227
|
+
env: Environment name. If not specified, uses the default environment
|
|
228
|
+
|
|
229
|
+
extra_headers: Send extra headers
|
|
230
|
+
|
|
231
|
+
extra_query: Add additional query parameters to the request
|
|
232
|
+
|
|
233
|
+
extra_body: Add additional JSON properties to the request
|
|
234
|
+
|
|
235
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
236
|
+
"""
|
|
237
|
+
if not group:
|
|
238
|
+
raise ValueError(f"Expected a non-empty value for `group` but received {group!r}")
|
|
239
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
240
|
+
return self._get(
|
|
241
|
+
f"/compute/v1/secrets/{group}",
|
|
242
|
+
options=make_request_options(
|
|
243
|
+
extra_headers=extra_headers,
|
|
244
|
+
extra_query=extra_query,
|
|
245
|
+
extra_body=extra_body,
|
|
246
|
+
timeout=timeout,
|
|
247
|
+
query=maybe_transform({"env": env}, secret_retrieve_group_params.SecretRetrieveGroupParams),
|
|
248
|
+
),
|
|
249
|
+
cast_to=NoneType,
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
def update_group(
|
|
253
|
+
self,
|
|
254
|
+
group: str,
|
|
255
|
+
*,
|
|
256
|
+
secrets: Dict[str, str],
|
|
257
|
+
env: str | Omit = omit,
|
|
258
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
259
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
260
|
+
extra_headers: Headers | None = None,
|
|
261
|
+
extra_query: Query | None = None,
|
|
262
|
+
extra_body: Body | None = None,
|
|
263
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
264
|
+
) -> None:
|
|
265
|
+
"""Set or update secrets in a compute secret group.
|
|
266
|
+
|
|
267
|
+
Secrets are encrypted with
|
|
268
|
+
AES-256-GCM and synced to compute infrastructure in real-time. Use this to
|
|
269
|
+
manage environment variables and API keys for your compute workloads.
|
|
270
|
+
|
|
271
|
+
Args:
|
|
272
|
+
secrets: Key-value pairs of secrets to set
|
|
273
|
+
|
|
274
|
+
env: Environment name (optional, uses default if not specified)
|
|
275
|
+
|
|
276
|
+
extra_headers: Send extra headers
|
|
277
|
+
|
|
278
|
+
extra_query: Add additional query parameters to the request
|
|
279
|
+
|
|
280
|
+
extra_body: Add additional JSON properties to the request
|
|
281
|
+
|
|
282
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
283
|
+
"""
|
|
284
|
+
if not group:
|
|
285
|
+
raise ValueError(f"Expected a non-empty value for `group` but received {group!r}")
|
|
286
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
287
|
+
return self._put(
|
|
288
|
+
f"/compute/v1/secrets/{group}",
|
|
289
|
+
body=maybe_transform(
|
|
290
|
+
{
|
|
291
|
+
"secrets": secrets,
|
|
292
|
+
"env": env,
|
|
293
|
+
},
|
|
294
|
+
secret_update_group_params.SecretUpdateGroupParams,
|
|
295
|
+
),
|
|
296
|
+
options=make_request_options(
|
|
297
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
298
|
+
),
|
|
299
|
+
cast_to=NoneType,
|
|
300
|
+
)
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
class AsyncSecretsResource(AsyncAPIResource):
|
|
304
|
+
@cached_property
|
|
305
|
+
def with_raw_response(self) -> AsyncSecretsResourceWithRawResponse:
|
|
306
|
+
"""
|
|
307
|
+
This property can be used as a prefix for any HTTP method call to return
|
|
308
|
+
the raw response object instead of the parsed content.
|
|
309
|
+
|
|
310
|
+
For more information, see https://www.github.com/CaseMark/casedev-python#accessing-raw-response-data-eg-headers
|
|
311
|
+
"""
|
|
312
|
+
return AsyncSecretsResourceWithRawResponse(self)
|
|
313
|
+
|
|
314
|
+
@cached_property
|
|
315
|
+
def with_streaming_response(self) -> AsyncSecretsResourceWithStreamingResponse:
|
|
316
|
+
"""
|
|
317
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
318
|
+
|
|
319
|
+
For more information, see https://www.github.com/CaseMark/casedev-python#with_streaming_response
|
|
320
|
+
"""
|
|
321
|
+
return AsyncSecretsResourceWithStreamingResponse(self)
|
|
322
|
+
|
|
323
|
+
async def create(
|
|
324
|
+
self,
|
|
325
|
+
*,
|
|
326
|
+
name: str,
|
|
327
|
+
description: str | Omit = omit,
|
|
328
|
+
env: str | Omit = omit,
|
|
329
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
330
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
331
|
+
extra_headers: Headers | None = None,
|
|
332
|
+
extra_query: Query | None = None,
|
|
333
|
+
extra_body: Body | None = None,
|
|
334
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
335
|
+
) -> SecretCreateResponse:
|
|
336
|
+
"""Creates a new secret group in a compute environment.
|
|
337
|
+
|
|
338
|
+
Secret groups organize
|
|
339
|
+
related secrets for use in serverless functions and workflows. If no environment
|
|
340
|
+
is specified, the group is created in the default environment.
|
|
341
|
+
|
|
342
|
+
**Features:**
|
|
343
|
+
|
|
344
|
+
- Organize secrets by logical groups (e.g., database, APIs, third-party
|
|
345
|
+
services)
|
|
346
|
+
- Environment-based isolation
|
|
347
|
+
- Validation of group names
|
|
348
|
+
- Conflict detection for existing groups
|
|
349
|
+
|
|
350
|
+
Args:
|
|
351
|
+
name: Unique name for the secret group. Must contain only letters, numbers, hyphens,
|
|
352
|
+
and underscores.
|
|
353
|
+
|
|
354
|
+
description: Optional description of the secret group's purpose
|
|
355
|
+
|
|
356
|
+
env: Environment name where the secret group will be created. Uses default
|
|
357
|
+
environment if not specified.
|
|
358
|
+
|
|
359
|
+
extra_headers: Send extra headers
|
|
360
|
+
|
|
361
|
+
extra_query: Add additional query parameters to the request
|
|
362
|
+
|
|
363
|
+
extra_body: Add additional JSON properties to the request
|
|
364
|
+
|
|
365
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
366
|
+
"""
|
|
367
|
+
return await self._post(
|
|
368
|
+
"/compute/v1/secrets",
|
|
369
|
+
body=await async_maybe_transform(
|
|
370
|
+
{
|
|
371
|
+
"name": name,
|
|
372
|
+
"description": description,
|
|
373
|
+
"env": env,
|
|
374
|
+
},
|
|
375
|
+
secret_create_params.SecretCreateParams,
|
|
376
|
+
),
|
|
377
|
+
options=make_request_options(
|
|
378
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
379
|
+
),
|
|
380
|
+
cast_to=SecretCreateResponse,
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
async def list(
|
|
384
|
+
self,
|
|
385
|
+
*,
|
|
386
|
+
env: str | Omit = omit,
|
|
387
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
388
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
389
|
+
extra_headers: Headers | None = None,
|
|
390
|
+
extra_query: Query | None = None,
|
|
391
|
+
extra_body: Body | None = None,
|
|
392
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
393
|
+
) -> None:
|
|
394
|
+
"""Retrieve all secret groups for a compute environment.
|
|
395
|
+
|
|
396
|
+
Secret groups organize
|
|
397
|
+
related secrets (API keys, credentials, etc.) that can be securely accessed by
|
|
398
|
+
compute jobs during execution.
|
|
399
|
+
|
|
400
|
+
Args:
|
|
401
|
+
env: Environment name to list secret groups for. If not specified, uses the default
|
|
402
|
+
environment.
|
|
403
|
+
|
|
404
|
+
extra_headers: Send extra headers
|
|
405
|
+
|
|
406
|
+
extra_query: Add additional query parameters to the request
|
|
407
|
+
|
|
408
|
+
extra_body: Add additional JSON properties to the request
|
|
409
|
+
|
|
410
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
411
|
+
"""
|
|
412
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
413
|
+
return await self._get(
|
|
414
|
+
"/compute/v1/secrets",
|
|
415
|
+
options=make_request_options(
|
|
416
|
+
extra_headers=extra_headers,
|
|
417
|
+
extra_query=extra_query,
|
|
418
|
+
extra_body=extra_body,
|
|
419
|
+
timeout=timeout,
|
|
420
|
+
query=await async_maybe_transform({"env": env}, secret_list_params.SecretListParams),
|
|
421
|
+
),
|
|
422
|
+
cast_to=NoneType,
|
|
423
|
+
)
|
|
424
|
+
|
|
425
|
+
async def delete_group(
|
|
426
|
+
self,
|
|
427
|
+
group: str,
|
|
428
|
+
*,
|
|
429
|
+
env: str | Omit = omit,
|
|
430
|
+
key: str | Omit = omit,
|
|
431
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
432
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
433
|
+
extra_headers: Headers | None = None,
|
|
434
|
+
extra_query: Query | None = None,
|
|
435
|
+
extra_body: Body | None = None,
|
|
436
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
437
|
+
) -> None:
|
|
438
|
+
"""
|
|
439
|
+
Delete an entire secret group or a specific key within a secret group.
|
|
440
|
+
Automatically syncs the deletion to Modal compute infrastructure. When deleting
|
|
441
|
+
a specific key, the remaining secrets in the group are re-synced. When deleting
|
|
442
|
+
the entire group, all secrets and the group itself are removed from both the
|
|
443
|
+
database and Modal.
|
|
444
|
+
|
|
445
|
+
Args:
|
|
446
|
+
env: Environment name. If not provided, uses the default environment
|
|
447
|
+
|
|
448
|
+
key: Specific key to delete within the group. If not provided, the entire group is
|
|
449
|
+
deleted
|
|
450
|
+
|
|
451
|
+
extra_headers: Send extra headers
|
|
452
|
+
|
|
453
|
+
extra_query: Add additional query parameters to the request
|
|
454
|
+
|
|
455
|
+
extra_body: Add additional JSON properties to the request
|
|
456
|
+
|
|
457
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
458
|
+
"""
|
|
459
|
+
if not group:
|
|
460
|
+
raise ValueError(f"Expected a non-empty value for `group` but received {group!r}")
|
|
461
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
462
|
+
return await self._delete(
|
|
463
|
+
f"/compute/v1/secrets/{group}",
|
|
464
|
+
options=make_request_options(
|
|
465
|
+
extra_headers=extra_headers,
|
|
466
|
+
extra_query=extra_query,
|
|
467
|
+
extra_body=extra_body,
|
|
468
|
+
timeout=timeout,
|
|
469
|
+
query=await async_maybe_transform(
|
|
470
|
+
{
|
|
471
|
+
"env": env,
|
|
472
|
+
"key": key,
|
|
473
|
+
},
|
|
474
|
+
secret_delete_group_params.SecretDeleteGroupParams,
|
|
475
|
+
),
|
|
476
|
+
),
|
|
477
|
+
cast_to=NoneType,
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
async def retrieve_group(
|
|
481
|
+
self,
|
|
482
|
+
group: str,
|
|
483
|
+
*,
|
|
484
|
+
env: str | Omit = omit,
|
|
485
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
486
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
487
|
+
extra_headers: Headers | None = None,
|
|
488
|
+
extra_query: Query | None = None,
|
|
489
|
+
extra_body: Body | None = None,
|
|
490
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
491
|
+
) -> None:
|
|
492
|
+
"""
|
|
493
|
+
Retrieve the keys (names) of secrets in a specified group within a compute
|
|
494
|
+
environment. For security reasons, actual secret values are not returned - only
|
|
495
|
+
the keys and metadata.
|
|
496
|
+
|
|
497
|
+
Args:
|
|
498
|
+
env: Environment name. If not specified, uses the default environment
|
|
499
|
+
|
|
500
|
+
extra_headers: Send extra headers
|
|
501
|
+
|
|
502
|
+
extra_query: Add additional query parameters to the request
|
|
503
|
+
|
|
504
|
+
extra_body: Add additional JSON properties to the request
|
|
505
|
+
|
|
506
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
507
|
+
"""
|
|
508
|
+
if not group:
|
|
509
|
+
raise ValueError(f"Expected a non-empty value for `group` but received {group!r}")
|
|
510
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
511
|
+
return await self._get(
|
|
512
|
+
f"/compute/v1/secrets/{group}",
|
|
513
|
+
options=make_request_options(
|
|
514
|
+
extra_headers=extra_headers,
|
|
515
|
+
extra_query=extra_query,
|
|
516
|
+
extra_body=extra_body,
|
|
517
|
+
timeout=timeout,
|
|
518
|
+
query=await async_maybe_transform({"env": env}, secret_retrieve_group_params.SecretRetrieveGroupParams),
|
|
519
|
+
),
|
|
520
|
+
cast_to=NoneType,
|
|
521
|
+
)
|
|
522
|
+
|
|
523
|
+
async def update_group(
|
|
524
|
+
self,
|
|
525
|
+
group: str,
|
|
526
|
+
*,
|
|
527
|
+
secrets: Dict[str, str],
|
|
528
|
+
env: str | Omit = omit,
|
|
529
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
530
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
531
|
+
extra_headers: Headers | None = None,
|
|
532
|
+
extra_query: Query | None = None,
|
|
533
|
+
extra_body: Body | None = None,
|
|
534
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
535
|
+
) -> None:
|
|
536
|
+
"""Set or update secrets in a compute secret group.
|
|
537
|
+
|
|
538
|
+
Secrets are encrypted with
|
|
539
|
+
AES-256-GCM and synced to compute infrastructure in real-time. Use this to
|
|
540
|
+
manage environment variables and API keys for your compute workloads.
|
|
541
|
+
|
|
542
|
+
Args:
|
|
543
|
+
secrets: Key-value pairs of secrets to set
|
|
544
|
+
|
|
545
|
+
env: Environment name (optional, uses default if not specified)
|
|
546
|
+
|
|
547
|
+
extra_headers: Send extra headers
|
|
548
|
+
|
|
549
|
+
extra_query: Add additional query parameters to the request
|
|
550
|
+
|
|
551
|
+
extra_body: Add additional JSON properties to the request
|
|
552
|
+
|
|
553
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
554
|
+
"""
|
|
555
|
+
if not group:
|
|
556
|
+
raise ValueError(f"Expected a non-empty value for `group` but received {group!r}")
|
|
557
|
+
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
|
|
558
|
+
return await self._put(
|
|
559
|
+
f"/compute/v1/secrets/{group}",
|
|
560
|
+
body=await async_maybe_transform(
|
|
561
|
+
{
|
|
562
|
+
"secrets": secrets,
|
|
563
|
+
"env": env,
|
|
564
|
+
},
|
|
565
|
+
secret_update_group_params.SecretUpdateGroupParams,
|
|
566
|
+
),
|
|
567
|
+
options=make_request_options(
|
|
568
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
569
|
+
),
|
|
570
|
+
cast_to=NoneType,
|
|
571
|
+
)
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
class SecretsResourceWithRawResponse:
|
|
575
|
+
def __init__(self, secrets: SecretsResource) -> None:
|
|
576
|
+
self._secrets = secrets
|
|
577
|
+
|
|
578
|
+
self.create = to_raw_response_wrapper(
|
|
579
|
+
secrets.create,
|
|
580
|
+
)
|
|
581
|
+
self.list = to_raw_response_wrapper(
|
|
582
|
+
secrets.list,
|
|
583
|
+
)
|
|
584
|
+
self.delete_group = to_raw_response_wrapper(
|
|
585
|
+
secrets.delete_group,
|
|
586
|
+
)
|
|
587
|
+
self.retrieve_group = to_raw_response_wrapper(
|
|
588
|
+
secrets.retrieve_group,
|
|
589
|
+
)
|
|
590
|
+
self.update_group = to_raw_response_wrapper(
|
|
591
|
+
secrets.update_group,
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
class AsyncSecretsResourceWithRawResponse:
|
|
596
|
+
def __init__(self, secrets: AsyncSecretsResource) -> None:
|
|
597
|
+
self._secrets = secrets
|
|
598
|
+
|
|
599
|
+
self.create = async_to_raw_response_wrapper(
|
|
600
|
+
secrets.create,
|
|
601
|
+
)
|
|
602
|
+
self.list = async_to_raw_response_wrapper(
|
|
603
|
+
secrets.list,
|
|
604
|
+
)
|
|
605
|
+
self.delete_group = async_to_raw_response_wrapper(
|
|
606
|
+
secrets.delete_group,
|
|
607
|
+
)
|
|
608
|
+
self.retrieve_group = async_to_raw_response_wrapper(
|
|
609
|
+
secrets.retrieve_group,
|
|
610
|
+
)
|
|
611
|
+
self.update_group = async_to_raw_response_wrapper(
|
|
612
|
+
secrets.update_group,
|
|
613
|
+
)
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
class SecretsResourceWithStreamingResponse:
|
|
617
|
+
def __init__(self, secrets: SecretsResource) -> None:
|
|
618
|
+
self._secrets = secrets
|
|
619
|
+
|
|
620
|
+
self.create = to_streamed_response_wrapper(
|
|
621
|
+
secrets.create,
|
|
622
|
+
)
|
|
623
|
+
self.list = to_streamed_response_wrapper(
|
|
624
|
+
secrets.list,
|
|
625
|
+
)
|
|
626
|
+
self.delete_group = to_streamed_response_wrapper(
|
|
627
|
+
secrets.delete_group,
|
|
628
|
+
)
|
|
629
|
+
self.retrieve_group = to_streamed_response_wrapper(
|
|
630
|
+
secrets.retrieve_group,
|
|
631
|
+
)
|
|
632
|
+
self.update_group = to_streamed_response_wrapper(
|
|
633
|
+
secrets.update_group,
|
|
634
|
+
)
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
class AsyncSecretsResourceWithStreamingResponse:
|
|
638
|
+
def __init__(self, secrets: AsyncSecretsResource) -> None:
|
|
639
|
+
self._secrets = secrets
|
|
640
|
+
|
|
641
|
+
self.create = async_to_streamed_response_wrapper(
|
|
642
|
+
secrets.create,
|
|
643
|
+
)
|
|
644
|
+
self.list = async_to_streamed_response_wrapper(
|
|
645
|
+
secrets.list,
|
|
646
|
+
)
|
|
647
|
+
self.delete_group = async_to_streamed_response_wrapper(
|
|
648
|
+
secrets.delete_group,
|
|
649
|
+
)
|
|
650
|
+
self.retrieve_group = async_to_streamed_response_wrapper(
|
|
651
|
+
secrets.retrieve_group,
|
|
652
|
+
)
|
|
653
|
+
self.update_group = async_to_streamed_response_wrapper(
|
|
654
|
+
secrets.update_group,
|
|
655
|
+
)
|