render_sdk 0.1.2__py3-none-any.whl → 0.2.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.
Files changed (156) hide show
  1. render_sdk/__init__.py +41 -4
  2. render_sdk/client/__init__.py +25 -0
  3. render_sdk/client/client.py +5 -0
  4. render_sdk/client/sse.py +5 -1
  5. render_sdk/client/tests/test_client.py +6 -4
  6. render_sdk/client/tests/test_sse.py +1 -0
  7. render_sdk/client/types.py +2 -1
  8. render_sdk/client/workflows.py +13 -3
  9. render_sdk/experimental/__init__.py +31 -0
  10. render_sdk/experimental/experimental.py +71 -0
  11. render_sdk/experimental/object/__init__.py +30 -0
  12. render_sdk/experimental/object/api.py +260 -0
  13. render_sdk/experimental/object/client.py +475 -0
  14. render_sdk/experimental/object/types.py +87 -0
  15. render_sdk/public_api/api/audit_logs/list_organization_audit_logs.py +303 -0
  16. render_sdk/public_api/api/audit_logs/list_owner_audit_logs.py +303 -0
  17. render_sdk/public_api/api/blob_storage/delete_blob.py +215 -0
  18. render_sdk/public_api/api/blob_storage/get_blob.py +221 -0
  19. render_sdk/public_api/api/{workflows/list_workflow_versions.py → blob_storage/list_blobs.py} +52 -30
  20. render_sdk/public_api/api/blob_storage/put_blob.py +248 -0
  21. render_sdk/public_api/api/blueprints/validate_blueprint.py +212 -0
  22. render_sdk/public_api/api/key_value/resume_key_value.py +203 -0
  23. render_sdk/public_api/api/key_value/suspend_key_value.py +203 -0
  24. render_sdk/public_api/api/metrics/get_bandwidth_sources.py +251 -0
  25. render_sdk/public_api/api/postgres/create_postgres_user.py +229 -0
  26. render_sdk/public_api/api/postgres/delete_postgres_user.py +201 -0
  27. render_sdk/public_api/api/postgres/list_postgres_users.py +195 -0
  28. render_sdk/public_api/api/redis_deprecated/__init__.py +1 -0
  29. render_sdk/public_api/api/{redis → redis_deprecated}/create_redis.py +4 -4
  30. render_sdk/public_api/api/{redis → redis_deprecated}/delete_redis.py +4 -4
  31. render_sdk/public_api/api/{redis → redis_deprecated}/list_redis.py +4 -0
  32. render_sdk/public_api/api/{redis → redis_deprecated}/retrieve_redis.py +4 -4
  33. render_sdk/public_api/api/{redis → redis_deprecated}/retrieve_redis_connection_info.py +4 -0
  34. render_sdk/public_api/api/{redis → redis_deprecated}/update_redis.py +4 -4
  35. render_sdk/public_api/api/services/create_service.py +4 -4
  36. render_sdk/public_api/api/workflow_tasks_ea/__init__.py +1 -0
  37. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/cancel_task_run.py +12 -4
  38. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/create_task.py +12 -4
  39. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/get_task.py +12 -4
  40. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/get_task_run.py +12 -4
  41. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/list_task_runs.py +12 -0
  42. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/list_tasks.py +24 -12
  43. render_sdk/public_api/api/workflows_ea/__init__.py +1 -0
  44. render_sdk/public_api/api/workflows_ea/create_workflow.py +199 -0
  45. render_sdk/public_api/api/{workflows/deploy_workflow.py → workflows_ea/create_workflow_version.py} +31 -14
  46. render_sdk/public_api/api/{workflows → workflows_ea}/delete_workflow.py +12 -4
  47. render_sdk/public_api/api/{workflows → workflows_ea}/get_workflow.py +32 -14
  48. render_sdk/public_api/api/{workflows → workflows_ea}/get_workflow_version.py +12 -4
  49. render_sdk/public_api/api/workflows_ea/list_workflow_versions.py +275 -0
  50. render_sdk/public_api/api/{workflows → workflows_ea}/list_workflows.py +41 -14
  51. render_sdk/public_api/api/workflows_ea/update_workflow.py +212 -0
  52. render_sdk/public_api/api/workspaces/remove_workspace_member.py +206 -0
  53. render_sdk/public_api/api/workspaces/update_workspace_member.py +235 -0
  54. render_sdk/public_api/models/__init__.py +82 -4
  55. render_sdk/public_api/models/audit_log.py +113 -0
  56. render_sdk/public_api/models/audit_log_actor.py +80 -0
  57. render_sdk/public_api/models/audit_log_actor_type.py +10 -0
  58. render_sdk/public_api/models/audit_log_event.py +80 -0
  59. render_sdk/public_api/models/audit_log_metadata.py +49 -0
  60. render_sdk/public_api/models/audit_log_status.py +9 -0
  61. render_sdk/public_api/models/audit_log_with_cursor.py +73 -0
  62. render_sdk/public_api/models/background_worker_details.py +2 -2
  63. render_sdk/public_api/models/background_worker_details_patch.py +1 -1
  64. render_sdk/public_api/models/background_worker_details_post.py +1 -1
  65. render_sdk/public_api/models/blob_metadata.py +85 -0
  66. render_sdk/public_api/models/blob_with_cursor.py +73 -0
  67. render_sdk/public_api/models/cache.py +6 -4
  68. render_sdk/public_api/models/cache_profile.py +10 -0
  69. render_sdk/public_api/models/create_deploy_body.py +23 -0
  70. render_sdk/public_api/models/create_version.py +70 -0
  71. render_sdk/public_api/models/credential_create_input.py +59 -0
  72. render_sdk/public_api/models/cron_job_details.py +2 -2
  73. render_sdk/public_api/models/cron_job_details_patch.py +1 -1
  74. render_sdk/public_api/models/cron_job_details_post.py +1 -1
  75. render_sdk/public_api/models/deploy_mode.py +9 -0
  76. render_sdk/public_api/models/event.py +11 -27
  77. render_sdk/public_api/models/event_type.py +1 -1
  78. render_sdk/public_api/models/get_bandwidth_sources_response_200.py +75 -0
  79. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item.py +101 -0
  80. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_labels.py +78 -0
  81. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_labels_traffic_source.py +12 -0
  82. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_values_item.py +68 -0
  83. render_sdk/public_api/models/{server_unhealthy.py → get_bandwidth_sources_response_400.py} +12 -12
  84. render_sdk/public_api/models/get_blob_output.py +71 -0
  85. render_sdk/public_api/models/list_postgres_users_response_200_item.py +86 -0
  86. render_sdk/public_api/models/otel_provider_type.py +2 -0
  87. render_sdk/public_api/models/postgres.py +8 -0
  88. render_sdk/public_api/models/postgres_detail.py +26 -0
  89. render_sdk/public_api/models/postgres_parameter_overrides.py +44 -0
  90. render_sdk/public_api/models/postgres_patch_input.py +27 -0
  91. render_sdk/public_api/models/postgres_post_input.py +27 -0
  92. render_sdk/public_api/models/postgres_version.py +1 -0
  93. render_sdk/public_api/models/preview_input.py +2 -2
  94. render_sdk/public_api/models/private_service_details.py +2 -2
  95. render_sdk/public_api/models/private_service_details_patch.py +1 -1
  96. render_sdk/public_api/models/private_service_details_post.py +1 -1
  97. render_sdk/public_api/models/project_post_environment_input.py +26 -1
  98. render_sdk/public_api/models/put_blob_input.py +59 -0
  99. render_sdk/public_api/models/put_blob_output.py +79 -0
  100. render_sdk/public_api/models/read_replica.py +25 -1
  101. render_sdk/public_api/models/read_replica_input.py +25 -1
  102. render_sdk/public_api/models/run_task.py +35 -7
  103. render_sdk/public_api/models/service_event.py +12 -27
  104. render_sdk/public_api/models/service_event_type.py +0 -1
  105. render_sdk/public_api/models/service_post.py +9 -6
  106. render_sdk/public_api/models/task_attempt.py +88 -0
  107. render_sdk/public_api/models/task_attempt_details.py +108 -0
  108. render_sdk/public_api/models/task_data_type_1.py +44 -0
  109. render_sdk/public_api/models/task_run.py +23 -1
  110. render_sdk/public_api/models/task_run_details.py +50 -5
  111. render_sdk/public_api/models/task_run_status.py +1 -0
  112. render_sdk/public_api/models/task_with_cursor.py +73 -0
  113. render_sdk/public_api/models/team_member.py +5 -4
  114. render_sdk/public_api/models/team_member_role.py +12 -0
  115. render_sdk/public_api/models/update_workspace_member_body.py +61 -0
  116. render_sdk/public_api/models/validate_blueprint_request.py +84 -0
  117. render_sdk/public_api/models/validate_blueprint_response.py +105 -0
  118. render_sdk/public_api/models/validation_error.py +88 -0
  119. render_sdk/public_api/models/validation_plan_summary.py +107 -0
  120. render_sdk/public_api/models/web_service_details.py +2 -2
  121. render_sdk/public_api/models/web_service_details_patch.py +6 -5
  122. render_sdk/public_api/models/web_service_details_post.py +6 -5
  123. render_sdk/public_api/models/workflow.py +144 -0
  124. render_sdk/public_api/models/workflow_create.py +99 -0
  125. render_sdk/public_api/models/workflow_update.py +90 -0
  126. render_sdk/public_api/models/workflow_version.py +10 -14
  127. render_sdk/public_api/models/workflow_version_status.py +13 -0
  128. render_sdk/public_api/models/workflow_version_with_cursor.py +73 -0
  129. render_sdk/public_api/models/workflow_with_cursor.py +73 -0
  130. render_sdk/render.py +65 -0
  131. render_sdk/version.py +27 -0
  132. render_sdk/workflows/__init__.py +5 -1
  133. render_sdk/workflows/app.py +262 -0
  134. render_sdk/workflows/callback_api/models/__init__.py +2 -0
  135. render_sdk/workflows/callback_api/models/task.py +21 -0
  136. render_sdk/workflows/callback_api/models/task_options.py +18 -0
  137. render_sdk/workflows/callback_api/models/task_parameter.py +88 -0
  138. render_sdk/workflows/callback_api/py.typed +1 -1
  139. render_sdk/workflows/cli.py +58 -0
  140. render_sdk/workflows/client.py +8 -9
  141. render_sdk/workflows/executor.py +19 -7
  142. render_sdk/workflows/runner.py +43 -10
  143. render_sdk/workflows/task.py +84 -5
  144. render_sdk/workflows/tests/test_app.py +412 -0
  145. render_sdk/workflows/tests/test_cli.py +134 -0
  146. render_sdk/workflows/tests/test_end_to_end.py +71 -1
  147. render_sdk/workflows/tests/test_registration.py +58 -1
  148. {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info}/METADATA +4 -3
  149. {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info}/RECORD +155 -83
  150. {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info}/WHEEL +1 -1
  151. render_sdk-0.2.0.dist-info/entry_points.txt +3 -0
  152. render_sdk/public_api/models/image_version.py +0 -79
  153. /render_sdk/public_api/api/{redis → audit_logs}/__init__.py +0 -0
  154. /render_sdk/public_api/api/{workflows → blob_storage}/__init__.py +0 -0
  155. /render_sdk/public_api/api/{workflows → workflow_tasks_ea}/stream_task_runs_events.py +0 -0
  156. {render_sdk-0.1.2.dist-info → render_sdk-0.2.0.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,248 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.error import Error
9
+ from ...models.put_blob_input import PutBlobInput
10
+ from ...models.put_blob_output import PutBlobOutput
11
+ from ...models.region import Region
12
+ from ...types import Response
13
+
14
+
15
+ def _get_kwargs(
16
+ owner_id: str,
17
+ region: Region,
18
+ key: str,
19
+ *,
20
+ body: PutBlobInput,
21
+ ) -> dict[str, Any]:
22
+ headers: dict[str, Any] = {}
23
+
24
+ _kwargs: dict[str, Any] = {
25
+ "method": "put",
26
+ "url": f"/blobs/{owner_id}/{region}/{key}",
27
+ }
28
+
29
+ _kwargs["json"] = body.to_dict()
30
+
31
+ headers["Content-Type"] = "application/json"
32
+
33
+ _kwargs["headers"] = headers
34
+ return _kwargs
35
+
36
+
37
+ def _parse_response(
38
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
39
+ ) -> Optional[Union[Error, PutBlobOutput]]:
40
+ if response.status_code == 200:
41
+ response_200 = PutBlobOutput.from_dict(response.json())
42
+
43
+ return response_200
44
+
45
+ if response.status_code == 400:
46
+ response_400 = Error.from_dict(response.json())
47
+
48
+ return response_400
49
+
50
+ if response.status_code == 401:
51
+ response_401 = Error.from_dict(response.json())
52
+
53
+ return response_401
54
+
55
+ if response.status_code == 403:
56
+ response_403 = Error.from_dict(response.json())
57
+
58
+ return response_403
59
+
60
+ if response.status_code == 404:
61
+ response_404 = Error.from_dict(response.json())
62
+
63
+ return response_404
64
+
65
+ if response.status_code == 429:
66
+ response_429 = Error.from_dict(response.json())
67
+
68
+ return response_429
69
+
70
+ if response.status_code == 500:
71
+ response_500 = Error.from_dict(response.json())
72
+
73
+ return response_500
74
+
75
+ if response.status_code == 503:
76
+ response_503 = Error.from_dict(response.json())
77
+
78
+ return response_503
79
+
80
+ if client.raise_on_unexpected_status:
81
+ raise errors.UnexpectedStatus(response.status_code, response.content)
82
+ else:
83
+ return None
84
+
85
+
86
+ def _build_response(
87
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
88
+ ) -> Response[Union[Error, PutBlobOutput]]:
89
+ return Response(
90
+ status_code=HTTPStatus(response.status_code),
91
+ content=response.content,
92
+ headers=response.headers,
93
+ parsed=_parse_response(client=client, response=response),
94
+ )
95
+
96
+
97
+ def sync_detailed(
98
+ owner_id: str,
99
+ region: Region,
100
+ key: str,
101
+ *,
102
+ client: Union[AuthenticatedClient, Client],
103
+ body: PutBlobInput,
104
+ ) -> Response[Union[Error, PutBlobOutput]]:
105
+ """Get presigned URL to upload a blob
106
+
107
+ Returns a presigned URL for uploading a blob to the specified key.
108
+ The blob must begin being uploaded within the URL's expiration time.
109
+
110
+ Args:
111
+ owner_id (str):
112
+ region (Region): Defaults to "oregon"
113
+ key (str):
114
+ body (PutBlobInput):
115
+
116
+ Raises:
117
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
118
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
119
+
120
+ Returns:
121
+ Response[Union[Error, PutBlobOutput]]
122
+ """
123
+
124
+ kwargs = _get_kwargs(
125
+ owner_id=owner_id,
126
+ region=region,
127
+ key=key,
128
+ body=body,
129
+ )
130
+
131
+ response = client.get_httpx_client().request(
132
+ **kwargs,
133
+ )
134
+
135
+ return _build_response(client=client, response=response)
136
+
137
+
138
+ def sync(
139
+ owner_id: str,
140
+ region: Region,
141
+ key: str,
142
+ *,
143
+ client: Union[AuthenticatedClient, Client],
144
+ body: PutBlobInput,
145
+ ) -> Optional[Union[Error, PutBlobOutput]]:
146
+ """Get presigned URL to upload a blob
147
+
148
+ Returns a presigned URL for uploading a blob to the specified key.
149
+ The blob must begin being uploaded within the URL's expiration time.
150
+
151
+ Args:
152
+ owner_id (str):
153
+ region (Region): Defaults to "oregon"
154
+ key (str):
155
+ body (PutBlobInput):
156
+
157
+ Raises:
158
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
159
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
160
+
161
+ Returns:
162
+ Union[Error, PutBlobOutput]
163
+ """
164
+
165
+ return sync_detailed(
166
+ owner_id=owner_id,
167
+ region=region,
168
+ key=key,
169
+ client=client,
170
+ body=body,
171
+ ).parsed
172
+
173
+
174
+ async def asyncio_detailed(
175
+ owner_id: str,
176
+ region: Region,
177
+ key: str,
178
+ *,
179
+ client: Union[AuthenticatedClient, Client],
180
+ body: PutBlobInput,
181
+ ) -> Response[Union[Error, PutBlobOutput]]:
182
+ """Get presigned URL to upload a blob
183
+
184
+ Returns a presigned URL for uploading a blob to the specified key.
185
+ The blob must begin being uploaded within the URL's expiration time.
186
+
187
+ Args:
188
+ owner_id (str):
189
+ region (Region): Defaults to "oregon"
190
+ key (str):
191
+ body (PutBlobInput):
192
+
193
+ Raises:
194
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
195
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
196
+
197
+ Returns:
198
+ Response[Union[Error, PutBlobOutput]]
199
+ """
200
+
201
+ kwargs = _get_kwargs(
202
+ owner_id=owner_id,
203
+ region=region,
204
+ key=key,
205
+ body=body,
206
+ )
207
+
208
+ response = await client.get_async_httpx_client().request(**kwargs)
209
+
210
+ return _build_response(client=client, response=response)
211
+
212
+
213
+ async def asyncio(
214
+ owner_id: str,
215
+ region: Region,
216
+ key: str,
217
+ *,
218
+ client: Union[AuthenticatedClient, Client],
219
+ body: PutBlobInput,
220
+ ) -> Optional[Union[Error, PutBlobOutput]]:
221
+ """Get presigned URL to upload a blob
222
+
223
+ Returns a presigned URL for uploading a blob to the specified key.
224
+ The blob must begin being uploaded within the URL's expiration time.
225
+
226
+ Args:
227
+ owner_id (str):
228
+ region (Region): Defaults to "oregon"
229
+ key (str):
230
+ body (PutBlobInput):
231
+
232
+ Raises:
233
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
234
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
235
+
236
+ Returns:
237
+ Union[Error, PutBlobOutput]
238
+ """
239
+
240
+ return (
241
+ await asyncio_detailed(
242
+ owner_id=owner_id,
243
+ region=region,
244
+ key=key,
245
+ client=client,
246
+ body=body,
247
+ )
248
+ ).parsed
@@ -0,0 +1,212 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.error import Error
9
+ from ...models.validate_blueprint_request import ValidateBlueprintRequest
10
+ from ...models.validate_blueprint_response import ValidateBlueprintResponse
11
+ from ...types import Response
12
+
13
+
14
+ def _get_kwargs(
15
+ *,
16
+ body: ValidateBlueprintRequest,
17
+ ) -> dict[str, Any]:
18
+ headers: dict[str, Any] = {}
19
+
20
+ _kwargs: dict[str, Any] = {
21
+ "method": "post",
22
+ "url": "/blueprints/validate",
23
+ }
24
+
25
+ _kwargs["files"] = body.to_multipart()
26
+
27
+ _kwargs["headers"] = headers
28
+ return _kwargs
29
+
30
+
31
+ def _parse_response(
32
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
33
+ ) -> Optional[Union[Error, ValidateBlueprintResponse]]:
34
+ if response.status_code == 200:
35
+ response_200 = ValidateBlueprintResponse.from_dict(response.json())
36
+
37
+ return response_200
38
+
39
+ if response.status_code == 400:
40
+ response_400 = Error.from_dict(response.json())
41
+
42
+ return response_400
43
+
44
+ if response.status_code == 401:
45
+ response_401 = Error.from_dict(response.json())
46
+
47
+ return response_401
48
+
49
+ if response.status_code == 403:
50
+ response_403 = Error.from_dict(response.json())
51
+
52
+ return response_403
53
+
54
+ if response.status_code == 429:
55
+ response_429 = Error.from_dict(response.json())
56
+
57
+ return response_429
58
+
59
+ if response.status_code == 500:
60
+ response_500 = Error.from_dict(response.json())
61
+
62
+ return response_500
63
+
64
+ if client.raise_on_unexpected_status:
65
+ raise errors.UnexpectedStatus(response.status_code, response.content)
66
+ else:
67
+ return None
68
+
69
+
70
+ def _build_response(
71
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
72
+ ) -> Response[Union[Error, ValidateBlueprintResponse]]:
73
+ return Response(
74
+ status_code=HTTPStatus(response.status_code),
75
+ content=response.content,
76
+ headers=response.headers,
77
+ parsed=_parse_response(client=client, response=response),
78
+ )
79
+
80
+
81
+ def sync_detailed(
82
+ *,
83
+ client: Union[AuthenticatedClient, Client],
84
+ body: ValidateBlueprintRequest,
85
+ ) -> Response[Union[Error, ValidateBlueprintResponse]]:
86
+ """Validate Blueprint
87
+
88
+ Validate a `render.yaml` Blueprint file without creating or modifying any resources. This endpoint
89
+ checks the syntax and structure of the Blueprint, validates that all required fields are present,
90
+ and returns a plan indicating the resources that would be created.
91
+
92
+ Requests to this endpoint use `Content-Type: multipart/form-data`. The provided Blueprint file
93
+ cannot exceed 10MB in size.
94
+
95
+ Args:
96
+ body (ValidateBlueprintRequest):
97
+
98
+ Raises:
99
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
100
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
101
+
102
+ Returns:
103
+ Response[Union[Error, ValidateBlueprintResponse]]
104
+ """
105
+
106
+ kwargs = _get_kwargs(
107
+ body=body,
108
+ )
109
+
110
+ response = client.get_httpx_client().request(
111
+ **kwargs,
112
+ )
113
+
114
+ return _build_response(client=client, response=response)
115
+
116
+
117
+ def sync(
118
+ *,
119
+ client: Union[AuthenticatedClient, Client],
120
+ body: ValidateBlueprintRequest,
121
+ ) -> Optional[Union[Error, ValidateBlueprintResponse]]:
122
+ """Validate Blueprint
123
+
124
+ Validate a `render.yaml` Blueprint file without creating or modifying any resources. This endpoint
125
+ checks the syntax and structure of the Blueprint, validates that all required fields are present,
126
+ and returns a plan indicating the resources that would be created.
127
+
128
+ Requests to this endpoint use `Content-Type: multipart/form-data`. The provided Blueprint file
129
+ cannot exceed 10MB in size.
130
+
131
+ Args:
132
+ body (ValidateBlueprintRequest):
133
+
134
+ Raises:
135
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
136
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
137
+
138
+ Returns:
139
+ Union[Error, ValidateBlueprintResponse]
140
+ """
141
+
142
+ return sync_detailed(
143
+ client=client,
144
+ body=body,
145
+ ).parsed
146
+
147
+
148
+ async def asyncio_detailed(
149
+ *,
150
+ client: Union[AuthenticatedClient, Client],
151
+ body: ValidateBlueprintRequest,
152
+ ) -> Response[Union[Error, ValidateBlueprintResponse]]:
153
+ """Validate Blueprint
154
+
155
+ Validate a `render.yaml` Blueprint file without creating or modifying any resources. This endpoint
156
+ checks the syntax and structure of the Blueprint, validates that all required fields are present,
157
+ and returns a plan indicating the resources that would be created.
158
+
159
+ Requests to this endpoint use `Content-Type: multipart/form-data`. The provided Blueprint file
160
+ cannot exceed 10MB in size.
161
+
162
+ Args:
163
+ body (ValidateBlueprintRequest):
164
+
165
+ Raises:
166
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
167
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
168
+
169
+ Returns:
170
+ Response[Union[Error, ValidateBlueprintResponse]]
171
+ """
172
+
173
+ kwargs = _get_kwargs(
174
+ body=body,
175
+ )
176
+
177
+ response = await client.get_async_httpx_client().request(**kwargs)
178
+
179
+ return _build_response(client=client, response=response)
180
+
181
+
182
+ async def asyncio(
183
+ *,
184
+ client: Union[AuthenticatedClient, Client],
185
+ body: ValidateBlueprintRequest,
186
+ ) -> Optional[Union[Error, ValidateBlueprintResponse]]:
187
+ """Validate Blueprint
188
+
189
+ Validate a `render.yaml` Blueprint file without creating or modifying any resources. This endpoint
190
+ checks the syntax and structure of the Blueprint, validates that all required fields are present,
191
+ and returns a plan indicating the resources that would be created.
192
+
193
+ Requests to this endpoint use `Content-Type: multipart/form-data`. The provided Blueprint file
194
+ cannot exceed 10MB in size.
195
+
196
+ Args:
197
+ body (ValidateBlueprintRequest):
198
+
199
+ Raises:
200
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
201
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
202
+
203
+ Returns:
204
+ Union[Error, ValidateBlueprintResponse]
205
+ """
206
+
207
+ return (
208
+ await asyncio_detailed(
209
+ client=client,
210
+ body=body,
211
+ )
212
+ ).parsed
@@ -0,0 +1,203 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union, cast
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.error import Error
9
+ from ...types import Response
10
+
11
+
12
+ def _get_kwargs(
13
+ key_value_id: str,
14
+ ) -> dict[str, Any]:
15
+ _kwargs: dict[str, Any] = {
16
+ "method": "post",
17
+ "url": f"/key-value/{key_value_id}/resume",
18
+ }
19
+
20
+ return _kwargs
21
+
22
+
23
+ def _parse_response(
24
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
25
+ ) -> Optional[Union[Any, Error]]:
26
+ if response.status_code == 202:
27
+ response_202 = cast(Any, None)
28
+ return response_202
29
+
30
+ if response.status_code == 400:
31
+ response_400 = Error.from_dict(response.json())
32
+
33
+ return response_400
34
+
35
+ if response.status_code == 401:
36
+ response_401 = Error.from_dict(response.json())
37
+
38
+ return response_401
39
+
40
+ if response.status_code == 403:
41
+ response_403 = Error.from_dict(response.json())
42
+
43
+ return response_403
44
+
45
+ if response.status_code == 404:
46
+ response_404 = Error.from_dict(response.json())
47
+
48
+ return response_404
49
+
50
+ if response.status_code == 406:
51
+ response_406 = Error.from_dict(response.json())
52
+
53
+ return response_406
54
+
55
+ if response.status_code == 410:
56
+ response_410 = Error.from_dict(response.json())
57
+
58
+ return response_410
59
+
60
+ if response.status_code == 429:
61
+ response_429 = Error.from_dict(response.json())
62
+
63
+ return response_429
64
+
65
+ if response.status_code == 500:
66
+ response_500 = Error.from_dict(response.json())
67
+
68
+ return response_500
69
+
70
+ if response.status_code == 503:
71
+ response_503 = Error.from_dict(response.json())
72
+
73
+ return response_503
74
+
75
+ if client.raise_on_unexpected_status:
76
+ raise errors.UnexpectedStatus(response.status_code, response.content)
77
+ else:
78
+ return None
79
+
80
+
81
+ def _build_response(
82
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
83
+ ) -> Response[Union[Any, Error]]:
84
+ return Response(
85
+ status_code=HTTPStatus(response.status_code),
86
+ content=response.content,
87
+ headers=response.headers,
88
+ parsed=_parse_response(client=client, response=response),
89
+ )
90
+
91
+
92
+ def sync_detailed(
93
+ key_value_id: str,
94
+ *,
95
+ client: Union[AuthenticatedClient, Client],
96
+ ) -> Response[Union[Any, Error]]:
97
+ """Resume Key Value instance
98
+
99
+ Resume a Key Value instance by ID.
100
+
101
+ Args:
102
+ key_value_id (str):
103
+
104
+ Raises:
105
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
106
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
107
+
108
+ Returns:
109
+ Response[Union[Any, Error]]
110
+ """
111
+
112
+ kwargs = _get_kwargs(
113
+ key_value_id=key_value_id,
114
+ )
115
+
116
+ response = client.get_httpx_client().request(
117
+ **kwargs,
118
+ )
119
+
120
+ return _build_response(client=client, response=response)
121
+
122
+
123
+ def sync(
124
+ key_value_id: str,
125
+ *,
126
+ client: Union[AuthenticatedClient, Client],
127
+ ) -> Optional[Union[Any, Error]]:
128
+ """Resume Key Value instance
129
+
130
+ Resume a Key Value instance by ID.
131
+
132
+ Args:
133
+ key_value_id (str):
134
+
135
+ Raises:
136
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
137
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
138
+
139
+ Returns:
140
+ Union[Any, Error]
141
+ """
142
+
143
+ return sync_detailed(
144
+ key_value_id=key_value_id,
145
+ client=client,
146
+ ).parsed
147
+
148
+
149
+ async def asyncio_detailed(
150
+ key_value_id: str,
151
+ *,
152
+ client: Union[AuthenticatedClient, Client],
153
+ ) -> Response[Union[Any, Error]]:
154
+ """Resume Key Value instance
155
+
156
+ Resume a Key Value instance by ID.
157
+
158
+ Args:
159
+ key_value_id (str):
160
+
161
+ Raises:
162
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
163
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
164
+
165
+ Returns:
166
+ Response[Union[Any, Error]]
167
+ """
168
+
169
+ kwargs = _get_kwargs(
170
+ key_value_id=key_value_id,
171
+ )
172
+
173
+ response = await client.get_async_httpx_client().request(**kwargs)
174
+
175
+ return _build_response(client=client, response=response)
176
+
177
+
178
+ async def asyncio(
179
+ key_value_id: str,
180
+ *,
181
+ client: Union[AuthenticatedClient, Client],
182
+ ) -> Optional[Union[Any, Error]]:
183
+ """Resume Key Value instance
184
+
185
+ Resume a Key Value instance by ID.
186
+
187
+ Args:
188
+ key_value_id (str):
189
+
190
+ Raises:
191
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
192
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
193
+
194
+ Returns:
195
+ Union[Any, Error]
196
+ """
197
+
198
+ return (
199
+ await asyncio_detailed(
200
+ key_value_id=key_value_id,
201
+ client=client,
202
+ )
203
+ ).parsed