render 1.0.1__tar.gz → 1.2.0__tar.gz

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 (849) hide show
  1. {render-1.0.1 → render-1.2.0}/CHANGELOG.md +38 -0
  2. {render-1.0.1 → render-1.2.0}/PKG-INFO +25 -1
  3. {render-1.0.1 → render-1.2.0}/README.md +24 -0
  4. render-1.2.0/example/task/.claude/settings.local.json +7 -0
  5. {render-1.0.1 → render-1.2.0}/pyproject.toml +1 -1
  6. {render-1.0.1 → render-1.2.0}/render/__init__.py +3 -1
  7. {render-1.0.1 → render-1.2.0}/render/client/errors.py +7 -2
  8. {render-1.0.1 → render-1.2.0}/render/client/tests/test_client.py +60 -4
  9. {render-1.0.1 → render-1.2.0}/render/client/tests/test_method_parity.py +6 -2
  10. {render-1.0.1 → render-1.2.0}/render/client/tests/test_util.py +72 -0
  11. {render-1.0.1 → render-1.2.0}/render/client/tests/test_workflows_sync.py +56 -4
  12. {render-1.0.1 → render-1.2.0}/render/client/util.py +26 -4
  13. {render-1.0.1 → render-1.2.0}/render/client/util_sync.py +2 -0
  14. {render-1.0.1 → render-1.2.0}/render/client/workflows.py +26 -5
  15. {render-1.0.1 → render-1.2.0}/render/client/workflows_sync.py +24 -5
  16. render-1.2.0/render/experimental/key_value/tests/test_types.py +25 -0
  17. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/types.py +8 -1
  18. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/__init__.py +16 -1
  19. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/api.py +246 -45
  20. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/api_sync.py +244 -43
  21. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/client.py +126 -2
  22. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/client_sync.py +126 -2
  23. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/errors.py +16 -0
  24. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/tests/test_client.py +161 -0
  25. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/tests/test_e2e.py +103 -0
  26. render-1.2.0/render/experimental/sandbox/tests/test_snapshots.py +713 -0
  27. render-1.2.0/render/experimental/sandbox/tests/test_types.py +129 -0
  28. render-1.2.0/render/experimental/sandbox/types.py +95 -0
  29. render-1.2.0/render/public_api/api/blueprints/create_blueprint.py +244 -0
  30. render-1.0.1/render/public_api/api/artifact_sources/add_or_update_artifact_source_secret_file.py → render-1.2.0/render/public_api/api/build_sources/add_or_update_build_source_secret_file.py +36 -36
  31. render-1.0.1/render/public_api/api/artifact_sources/create_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/create_build_source.py +39 -39
  32. render-1.0.1/render/public_api/api/artifact_sources/delete_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/delete_build_source.py +22 -22
  33. render-1.0.1/render/public_api/api/artifact_sources/delete_artifact_source_env_var.py → render-1.2.0/render/public_api/api/build_sources/delete_build_source_env_var.py +22 -22
  34. render-1.0.1/render/public_api/api/artifact_sources/delete_artifact_source_secret_file.py → render-1.2.0/render/public_api/api/build_sources/delete_build_source_secret_file.py +26 -26
  35. render-1.2.0/render/public_api/api/build_sources/get_build_source.py +185 -0
  36. render-1.0.1/render/public_api/api/artifact_sources/get_env_vars_for_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/get_env_vars_for_build_source.py +18 -18
  37. render-1.0.1/render/public_api/api/artifact_sources/link_artifact_source_to_env_group.py → render-1.2.0/render/public_api/api/build_sources/link_env_group_to_build_source.py +30 -30
  38. render-1.0.1/render/public_api/api/artifact_sources/list_artifact_sources.py → render-1.2.0/render/public_api/api/build_sources/list_build_sources.py +40 -25
  39. render-1.0.1/render/public_api/api/artifact_sources/list_artifacts_in_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/list_builds_in_build_source.py +34 -34
  40. render-1.0.1/render/public_api/api/artifact_sources/list_secret_files_for_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/list_secret_files_for_build_source.py +18 -18
  41. render-1.0.1/render/public_api/api/artifact_sources/retrieve_artifact_source_env_var.py → render-1.2.0/render/public_api/api/build_sources/retrieve_build_source_env_var.py +22 -22
  42. render-1.0.1/render/public_api/api/artifact_sources/retrieve_artifact_source_secret_file.py → render-1.2.0/render/public_api/api/build_sources/retrieve_build_source_secret_file.py +26 -26
  43. render-1.2.0/render/public_api/api/build_sources/trigger_build_source_build.py +227 -0
  44. render-1.2.0/render/public_api/api/build_sources/unlink_env_group_from_build_source.py +209 -0
  45. render-1.0.1/render/public_api/api/artifact_sources/update_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/update_build_source.py +60 -60
  46. render-1.0.1/render/public_api/api/artifact_sources/update_artifact_source_env_var.py → render-1.2.0/render/public_api/api/build_sources/update_build_source_env_var.py +22 -22
  47. render-1.0.1/render/public_api/api/artifact_sources/update_env_vars_for_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/update_env_vars_for_build_source.py +18 -18
  48. render-1.0.1/render/public_api/api/artifact_sources/update_secret_files_for_artifact_source.py → render-1.2.0/render/public_api/api/build_sources/update_secret_files_for_build_source.py +30 -30
  49. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/connect_sandbox_files.py +10 -10
  50. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/connect_sandbox_run.py +10 -10
  51. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/create_sandbox.py +50 -0
  52. render-1.2.0/render/public_api/api/sandboxes/create_sandbox_snapshot.py +262 -0
  53. render-1.2.0/render/public_api/api/sandboxes/delete_sandbox_snapshot.py +256 -0
  54. render-1.2.0/render/public_api/api/sandboxes/list_sandbox_executions.py +251 -0
  55. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/list_sandbox_groups.py +15 -19
  56. render-1.2.0/render/public_api/api/sandboxes/list_sandbox_snapshots.py +302 -0
  57. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/list_sandboxes.py +18 -22
  58. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/retrieve_sandbox.py +10 -10
  59. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/retrieve_sandbox_execution.py +10 -10
  60. render-1.2.0/render/public_api/api/sandboxes/retrieve_sandbox_snapshot.py +249 -0
  61. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/terminate_sandbox.py +10 -10
  62. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/update_sandbox_exec.py +10 -10
  63. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/create_service.py +20 -10
  64. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/list_services.py +25 -10
  65. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/preview_service.py +20 -10
  66. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/retrieve_service.py +20 -10
  67. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/update_service.py +20 -10
  68. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/stream_task_runs_events.py +56 -4
  69. {render-1.0.1 → render-1.2.0}/render/public_api/models/__init__.py +68 -34
  70. render-1.0.1/render/public_api/models/add_or_update_artifact_source_secret_file_body.py → render-1.2.0/render/public_api/models/add_or_update_build_source_secret_file_body.py +5 -5
  71. {render-1.0.1 → render-1.2.0}/render/public_api/models/artifact_fetch_failed.py +6 -6
  72. {render-1.0.1 → render-1.2.0}/render/public_api/models/artifact_source_changed.py +15 -16
  73. {render-1.0.1 → render-1.2.0}/render/public_api/models/background_worker_details.py +3 -3
  74. {render-1.0.1 → render-1.2.0}/render/public_api/models/background_worker_details_patch.py +1 -1
  75. {render-1.0.1 → render-1.2.0}/render/public_api/models/background_worker_details_post.py +8 -8
  76. {render-1.0.1 → render-1.2.0}/render/public_api/models/blueprint.py +6 -2
  77. {render-1.0.1 → render-1.2.0}/render/public_api/models/blueprint_detail.py +6 -2
  78. {render-1.0.1 → render-1.2.0}/render/public_api/models/blueprint_patch.py +5 -1
  79. render-1.2.0/render/public_api/models/blueprint_source.py +79 -0
  80. render-1.0.1/render/public_api/models/artifact.py → render-1.2.0/render/public_api/models/build.py +29 -29
  81. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_config.py +3 -2
  82. render-1.2.0/render/public_api/models/build_config_update.py +105 -0
  83. render-1.0.1/render/public_api/models/build.py → render-1.2.0/render/public_api/models/build_run.py +24 -23
  84. render-1.0.1/render/public_api/models/build_runtime.py → render-1.2.0/render/public_api/models/build_run_runtime.py +1 -1
  85. render-1.0.1/render/public_api/models/build_status.py → render-1.2.0/render/public_api/models/build_run_status.py +1 -1
  86. render-1.0.1/render/public_api/models/artifact_source.py → render-1.2.0/render/public_api/models/build_source.py +24 -24
  87. render-1.0.1/render/public_api/models/artifact_source_git.py → render-1.2.0/render/public_api/models/build_source_git.py +15 -15
  88. render-1.0.1/render/public_api/models/artifact_source_git_region.py → render-1.2.0/render/public_api/models/build_source_git_region.py +1 -1
  89. render-1.0.1/render/public_api/models/artifact_source_git_runtime.py → render-1.2.0/render/public_api/models/build_source_git_runtime.py +1 -1
  90. render-1.0.1/render/public_api/models/artifact_source_image.py → render-1.2.0/render/public_api/models/build_source_image.py +5 -5
  91. render-1.0.1/render/public_api/models/artifact_source_patch_git.py → render-1.2.0/render/public_api/models/build_source_patch_git.py +21 -20
  92. render-1.0.1/render/public_api/models/artifact_source_patch_git_region.py → render-1.2.0/render/public_api/models/build_source_patch_git_region.py +1 -1
  93. render-1.0.1/render/public_api/models/artifact_source_patch_git_runtime.py → render-1.2.0/render/public_api/models/build_source_patch_git_runtime.py +1 -1
  94. render-1.0.1/render/public_api/models/artifact_source_patch_image.py → render-1.2.0/render/public_api/models/build_source_patch_image.py +11 -9
  95. render-1.0.1/render/public_api/models/artifact_source_patch_input.py → render-1.2.0/render/public_api/models/build_source_patch_input.py +19 -19
  96. render-1.0.1/render/public_api/models/artifact_source_post_input.py → render-1.2.0/render/public_api/models/build_source_post_input.py +20 -20
  97. render-1.0.1/render/public_api/models/artifact_source_service_link.py → render-1.2.0/render/public_api/models/build_source_service_link.py +5 -5
  98. render-1.2.0/render/public_api/models/build_source_with_cursor.py +73 -0
  99. render-1.2.0/render/public_api/models/create_blueprint_request.py +118 -0
  100. render-1.2.0/render/public_api/models/create_blueprint_response.py +76 -0
  101. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_deploy_body.py +14 -12
  102. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_details.py +3 -3
  103. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_details_patch.py +1 -1
  104. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_details_post.py +8 -8
  105. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy.py +0 -9
  106. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_ended.py +8 -8
  107. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_started.py +7 -8
  108. {render-1.0.1 → render-1.2.0}/render/public_api/models/docker_details_patch.py +2 -1
  109. render-1.2.0/render/public_api/models/error_code.py +29 -0
  110. {render-1.0.1 → render-1.2.0}/render/public_api/models/event.py +60 -30
  111. render-1.2.0/render/public_api/models/execution_with_cursor.py +77 -0
  112. render-1.2.0/render/public_api/models/existing_resource_mode.py +9 -0
  113. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_plan.py +6 -0
  114. render-1.2.0/render/public_api/models/paid_plan.py +27 -0
  115. {render-1.0.1 → render-1.2.0}/render/public_api/models/plan.py +14 -0
  116. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_plans.py +23 -0
  117. {render-1.0.1 → render-1.2.0}/render/public_api/models/preview_input.py +3 -3
  118. {render-1.0.1 → render-1.2.0}/render/public_api/models/private_service_details.py +3 -3
  119. {render-1.0.1 → render-1.2.0}/render/public_api/models/private_service_details_patch.py +1 -1
  120. {render-1.0.1 → render-1.2.0}/render/public_api/models/private_service_details_post.py +8 -8
  121. {render-1.0.1 → render-1.2.0}/render/public_api/models/recovery_input.py +18 -13
  122. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_plan.py +6 -0
  123. {render-1.0.1 → render-1.2.0}/render/public_api/models/resource_ref_type.py +2 -1
  124. {render-1.0.1 → render-1.2.0}/render/public_api/models/run_task.py +17 -2
  125. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_network_policy.py +20 -1
  126. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_network_policy_default.py +1 -0
  127. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_post.py +22 -0
  128. render-1.2.0/render/public_api/models/sandbox_snapshot.py +216 -0
  129. render-1.2.0/render/public_api/models/sandbox_snapshot_kind.py +9 -0
  130. render-1.2.0/render/public_api/models/sandbox_snapshot_post.py +104 -0
  131. render-1.2.0/render/public_api/models/sandbox_snapshot_status.py +10 -0
  132. render-1.2.0/render/public_api/models/sandbox_snapshot_with_cursor.py +74 -0
  133. {render-1.0.1 → render-1.2.0}/render/public_api/models/schemas_image.py +1 -1
  134. render-1.2.0/render/public_api/models/service.py +358 -0
  135. render-1.2.0/render/public_api/models/service_and_deploy.py +81 -0
  136. render-1.2.0/render/public_api/models/service_disk_usage_high.py +91 -0
  137. render-1.2.0/render/public_api/models/service_disk_usage_recovered.py +91 -0
  138. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_event.py +62 -31
  139. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_event_type.py +2 -0
  140. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_patch.py +14 -14
  141. render-1.2.0/render/public_api/models/service_service_suspended_state.py +9 -0
  142. render-1.2.0/render/public_api/models/service_with_cursor.py +73 -0
  143. {render-1.0.1 → render-1.2.0}/render/public_api/models/user.py +8 -0
  144. {render-1.0.1 → render-1.2.0}/render/public_api/models/validation_plan_summary.py +11 -0
  145. {render-1.0.1 → render-1.2.0}/render/public_api/models/web_service_details.py +3 -3
  146. {render-1.0.1 → render-1.2.0}/render/public_api/models/web_service_details_patch.py +3 -3
  147. {render-1.0.1 → render-1.2.0}/render/public_api/models/web_service_details_post.py +10 -10
  148. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow_create.py +1 -1
  149. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow_update.py +8 -7
  150. {render-1.0.1 → render-1.2.0}/render/workflows/__init__.py +2 -1
  151. {render-1.0.1 → render-1.2.0}/render/workflows/_callback_models.py +10 -1
  152. {render-1.0.1 → render-1.2.0}/render/workflows/context.py +48 -1
  153. {render-1.0.1 → render-1.2.0}/render/workflows/executor.py +12 -4
  154. {render-1.0.1 → render-1.2.0}/render/workflows/runner.py +1 -1
  155. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_context.py +29 -1
  156. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_end_to_end.py +99 -1
  157. {render-1.0.1 → render-1.2.0}/scripts/unasync.py +1 -0
  158. {render-1.0.1 → render-1.2.0}/typing_tests/run_inference.py +14 -1
  159. {render-1.0.1 → render-1.2.0}/uv.lock +441 -401
  160. render-1.0.1/render/experimental/sandbox/tests/test_types.py +0 -57
  161. render-1.0.1/render/experimental/sandbox/types.py +0 -46
  162. render-1.0.1/render/public_api/api/artifact_sources/get_artifact_source.py +0 -185
  163. render-1.0.1/render/public_api/api/artifact_sources/unlink_artifact_source_from_env_group.py +0 -209
  164. render-1.0.1/render/public_api/models/artifact_source_with_cursor.py +0 -73
  165. render-1.0.1/render/public_api/models/error_code.py +0 -10
  166. render-1.0.1/render/public_api/models/paid_plan.py +0 -13
  167. {render-1.0.1 → render-1.2.0}/.gitignore +0 -0
  168. {render-1.0.1 → render-1.2.0}/.python-version +0 -0
  169. {render-1.0.1 → render-1.2.0}/LICENSE +0 -0
  170. {render-1.0.1 → render-1.2.0}/example/__init__.py +0 -0
  171. {render-1.0.1 → render-1.2.0}/example/client/__init__.py +0 -0
  172. {render-1.0.1 → render-1.2.0}/example/client/async_main.py +0 -0
  173. {render-1.0.1 → render-1.2.0}/example/client/main.py +0 -0
  174. {render-1.0.1 → render-1.2.0}/example/sandbox/__init__.py +0 -0
  175. {render-1.0.1 → render-1.2.0}/example/sandbox/main.py +0 -0
  176. {render-1.0.1 → render-1.2.0}/example/task/__init__.py +0 -0
  177. {render-1.0.1 → render-1.2.0}/example/task/main.py +0 -0
  178. {render-1.0.1 → render-1.2.0}/render/client/__init__.py +0 -0
  179. {render-1.0.1 → render-1.2.0}/render/client/client.py +0 -0
  180. {render-1.0.1 → render-1.2.0}/render/client/sse.py +0 -0
  181. {render-1.0.1 → render-1.2.0}/render/client/sse_sync.py +0 -0
  182. {render-1.0.1 → render-1.2.0}/render/client/tests/__init__.py +0 -0
  183. {render-1.0.1 → render-1.2.0}/render/client/tests/test_render.py +0 -0
  184. {render-1.0.1 → render-1.2.0}/render/client/tests/test_sse.py +0 -0
  185. {render-1.0.1 → render-1.2.0}/render/client/tests/test_util_sync.py +0 -0
  186. {render-1.0.1 → render-1.2.0}/render/client/types.py +0 -0
  187. {render-1.0.1 → render-1.2.0}/render/experimental/__init__.py +0 -0
  188. {render-1.0.1 → render-1.2.0}/render/experimental/experimental.py +0 -0
  189. {render-1.0.1 → render-1.2.0}/render/experimental/experimental_sync.py +0 -0
  190. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/__init__.py +0 -0
  191. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/api.py +0 -0
  192. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/compare.py +0 -0
  193. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/provider.py +0 -0
  194. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/tests/__init__.py +0 -0
  195. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/tests/test_api.py +0 -0
  196. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/tests/test_compare.py +0 -0
  197. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/tests/test_provider.py +0 -0
  198. {render-1.0.1 → render-1.2.0}/render/experimental/key_value/utils.py +0 -0
  199. {render-1.0.1 → render-1.2.0}/render/experimental/object/__init__.py +0 -0
  200. {render-1.0.1 → render-1.2.0}/render/experimental/object/api.py +0 -0
  201. {render-1.0.1 → render-1.2.0}/render/experimental/object/api_sync.py +0 -0
  202. {render-1.0.1 → render-1.2.0}/render/experimental/object/client.py +0 -0
  203. {render-1.0.1 → render-1.2.0}/render/experimental/object/client_sync.py +0 -0
  204. {render-1.0.1 → render-1.2.0}/render/experimental/object/e2e_helpers.py +0 -0
  205. {render-1.0.1 → render-1.2.0}/render/experimental/object/tests/__init__.py +0 -0
  206. {render-1.0.1 → render-1.2.0}/render/experimental/object/tests/test_client.py +0 -0
  207. {render-1.0.1 → render-1.2.0}/render/experimental/object/tests/test_e2e.py +0 -0
  208. {render-1.0.1 → render-1.2.0}/render/experimental/object/types.py +0 -0
  209. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/_tar.py +0 -0
  210. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/files.py +0 -0
  211. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/tests/__init__.py +0 -0
  212. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/tests/test_download.py +0 -0
  213. {render-1.0.1 → render-1.2.0}/render/experimental/sandbox/tests/test_tar.py +0 -0
  214. {render-1.0.1 → render-1.2.0}/render/public_api/__init__.py +0 -0
  215. {render-1.0.1 → render-1.2.0}/render/public_api/api/__init__.py +0 -0
  216. {render-1.0.1/render/public_api/api/artifact_sources → render-1.2.0/render/public_api/api/audit_logs}/__init__.py +0 -0
  217. {render-1.0.1 → render-1.2.0}/render/public_api/api/audit_logs/list_organization_audit_logs.py +0 -0
  218. {render-1.0.1 → render-1.2.0}/render/public_api/api/audit_logs/list_owner_audit_logs.py +0 -0
  219. {render-1.0.1/render/public_api/api/audit_logs → render-1.2.0/render/public_api/api/blueprints}/__init__.py +0 -0
  220. {render-1.0.1 → render-1.2.0}/render/public_api/api/blueprints/disconnect_blueprint.py +0 -0
  221. {render-1.0.1 → render-1.2.0}/render/public_api/api/blueprints/list_blueprint_syncs.py +0 -0
  222. {render-1.0.1 → render-1.2.0}/render/public_api/api/blueprints/list_blueprints.py +0 -0
  223. {render-1.0.1 → render-1.2.0}/render/public_api/api/blueprints/retrieve_blueprint.py +0 -0
  224. {render-1.0.1 → render-1.2.0}/render/public_api/api/blueprints/update_blueprint.py +0 -0
  225. {render-1.0.1 → render-1.2.0}/render/public_api/api/blueprints/validate_blueprint.py +0 -0
  226. {render-1.0.1/render/public_api/api/blueprints → render-1.2.0/render/public_api/api/build_sources}/__init__.py +0 -0
  227. {render-1.0.1 → render-1.2.0}/render/public_api/api/custom_domains/__init__.py +0 -0
  228. {render-1.0.1 → render-1.2.0}/render/public_api/api/custom_domains/create_custom_domain.py +0 -0
  229. {render-1.0.1 → render-1.2.0}/render/public_api/api/custom_domains/delete_custom_domain.py +0 -0
  230. {render-1.0.1 → render-1.2.0}/render/public_api/api/custom_domains/list_custom_domains.py +0 -0
  231. {render-1.0.1 → render-1.2.0}/render/public_api/api/custom_domains/refresh_custom_domain.py +0 -0
  232. {render-1.0.1 → render-1.2.0}/render/public_api/api/custom_domains/retrieve_custom_domain.py +0 -0
  233. {render-1.0.1 → render-1.2.0}/render/public_api/api/dedicated_i_ps/__init__.py +0 -0
  234. {render-1.0.1 → render-1.2.0}/render/public_api/api/dedicated_i_ps/create_dedicated_ip.py +0 -0
  235. {render-1.0.1 → render-1.2.0}/render/public_api/api/dedicated_i_ps/delete_dedicated_ip.py +0 -0
  236. {render-1.0.1 → render-1.2.0}/render/public_api/api/dedicated_i_ps/list_dedicated_ips.py +0 -0
  237. {render-1.0.1 → render-1.2.0}/render/public_api/api/dedicated_i_ps/retrieve_dedicated_ip.py +0 -0
  238. {render-1.0.1 → render-1.2.0}/render/public_api/api/dedicated_i_ps/update_dedicated_ip.py +0 -0
  239. {render-1.0.1 → render-1.2.0}/render/public_api/api/deploys/__init__.py +0 -0
  240. {render-1.0.1 → render-1.2.0}/render/public_api/api/deploys/cancel_deploy.py +0 -0
  241. {render-1.0.1 → render-1.2.0}/render/public_api/api/deploys/create_deploy.py +0 -0
  242. {render-1.0.1 → render-1.2.0}/render/public_api/api/deploys/list_deploys.py +0 -0
  243. {render-1.0.1 → render-1.2.0}/render/public_api/api/deploys/retrieve_deploy.py +0 -0
  244. {render-1.0.1 → render-1.2.0}/render/public_api/api/deploys/rollback_deploy.py +0 -0
  245. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/__init__.py +0 -0
  246. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/add_disk.py +0 -0
  247. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/delete_disk.py +0 -0
  248. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/list_disks.py +0 -0
  249. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/list_snapshots.py +0 -0
  250. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/restore_snapshot.py +0 -0
  251. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/retrieve_disk.py +0 -0
  252. {render-1.0.1 → render-1.2.0}/render/public_api/api/disks/update_disk.py +0 -0
  253. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/__init__.py +0 -0
  254. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/create_env_group.py +0 -0
  255. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/delete_env_group.py +0 -0
  256. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/delete_env_group_env_var.py +0 -0
  257. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/delete_env_group_secret_file.py +0 -0
  258. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/link_service_to_env_group.py +0 -0
  259. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/list_env_groups.py +0 -0
  260. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/retrieve_env_group.py +0 -0
  261. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/retrieve_env_group_env_var.py +0 -0
  262. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/retrieve_env_group_secret_file.py +0 -0
  263. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/unlink_service_from_env_group.py +0 -0
  264. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/update_env_group.py +0 -0
  265. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/update_env_group_env_var.py +0 -0
  266. {render-1.0.1 → render-1.2.0}/render/public_api/api/environment_groups/update_env_group_secret_file.py +0 -0
  267. {render-1.0.1 → render-1.2.0}/render/public_api/api/events/__init__.py +0 -0
  268. {render-1.0.1 → render-1.2.0}/render/public_api/api/events/retrieve_event.py +0 -0
  269. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/__init__.py +0 -0
  270. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/create_key_value.py +0 -0
  271. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/delete_key_value.py +0 -0
  272. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/list_key_value.py +0 -0
  273. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/resume_key_value.py +0 -0
  274. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/retrieve_key_value.py +0 -0
  275. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/retrieve_key_value_connection_info.py +0 -0
  276. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/suspend_key_value.py +0 -0
  277. {render-1.0.1 → render-1.2.0}/render/public_api/api/key_value/update_key_value.py +0 -0
  278. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/__init__.py +0 -0
  279. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/delete_owner_log_stream.py +0 -0
  280. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/delete_resource_log_stream.py +0 -0
  281. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/get_owner_log_stream.py +0 -0
  282. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/get_resource_log_stream.py +0 -0
  283. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/list_logs.py +0 -0
  284. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/list_logs_values.py +0 -0
  285. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/list_resource_log_streams.py +0 -0
  286. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/subscribe_logs.py +0 -0
  287. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/update_owner_log_stream.py +0 -0
  288. {render-1.0.1 → render-1.2.0}/render/public_api/api/logs/update_resource_log_stream.py +0 -0
  289. {render-1.0.1 → render-1.2.0}/render/public_api/api/maintenance/__init__.py +0 -0
  290. {render-1.0.1 → render-1.2.0}/render/public_api/api/maintenance/list_maintenance.py +0 -0
  291. {render-1.0.1 → render-1.2.0}/render/public_api/api/maintenance/retrieve_maintenance.py +0 -0
  292. {render-1.0.1 → render-1.2.0}/render/public_api/api/maintenance/trigger_maintenance.py +0 -0
  293. {render-1.0.1 → render-1.2.0}/render/public_api/api/maintenance/update_maintenance.py +0 -0
  294. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/__init__.py +0 -0
  295. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/delete_owner_metrics_stream.py +0 -0
  296. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_active_connections.py +0 -0
  297. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_bandwidth.py +0 -0
  298. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_bandwidth_sources.py +0 -0
  299. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_cpu.py +0 -0
  300. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_cpu_limit.py +0 -0
  301. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_cpu_target.py +0 -0
  302. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_disk_capacity.py +0 -0
  303. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_disk_usage.py +0 -0
  304. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_http_latency.py +0 -0
  305. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_http_requests.py +0 -0
  306. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_instance_count.py +0 -0
  307. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_memory.py +0 -0
  308. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_memory_limit.py +0 -0
  309. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_memory_target.py +0 -0
  310. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_owner_metrics_stream.py +0 -0
  311. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_replication_lag.py +0 -0
  312. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_task_runs_completed.py +0 -0
  313. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/get_task_runs_queued.py +0 -0
  314. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/list_application_filter_values.py +0 -0
  315. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/list_http_filter_values.py +0 -0
  316. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/list_path_filter_values.py +0 -0
  317. {render-1.0.1 → render-1.2.0}/render/public_api/api/metrics/upsert_owner_metrics_stream.py +0 -0
  318. {render-1.0.1 → render-1.2.0}/render/public_api/api/notification_settings/__init__.py +0 -0
  319. {render-1.0.1 → render-1.2.0}/render/public_api/api/notification_settings/list_notification_overrides.py +0 -0
  320. {render-1.0.1 → render-1.2.0}/render/public_api/api/notification_settings/patch_owner_notification_settings.py +0 -0
  321. {render-1.0.1 → render-1.2.0}/render/public_api/api/notification_settings/patch_service_notification_overrides.py +0 -0
  322. {render-1.0.1 → render-1.2.0}/render/public_api/api/notification_settings/retrieve_owner_notification_settings.py +0 -0
  323. {render-1.0.1 → render-1.2.0}/render/public_api/api/notification_settings/retrieve_service_notification_overrides.py +0 -0
  324. {render-1.0.1 → render-1.2.0}/render/public_api/api/object_storage/__init__.py +0 -0
  325. {render-1.0.1 → render-1.2.0}/render/public_api/api/object_storage/delete_object.py +0 -0
  326. {render-1.0.1 → render-1.2.0}/render/public_api/api/object_storage/get_object.py +0 -0
  327. {render-1.0.1 → render-1.2.0}/render/public_api/api/object_storage/list_objects.py +0 -0
  328. {render-1.0.1 → render-1.2.0}/render/public_api/api/object_storage/put_object.py +0 -0
  329. {render-1.0.1 → render-1.2.0}/render/public_api/api/one_off_jobs/__init__.py +0 -0
  330. {render-1.0.1 → render-1.2.0}/render/public_api/api/one_off_jobs/cancel_job.py +0 -0
  331. {render-1.0.1 → render-1.2.0}/render/public_api/api/one_off_jobs/list_job.py +0 -0
  332. {render-1.0.1 → render-1.2.0}/render/public_api/api/one_off_jobs/post_job.py +0 -0
  333. {render-1.0.1 → render-1.2.0}/render/public_api/api/one_off_jobs/retrieve_job.py +0 -0
  334. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/__init__.py +0 -0
  335. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/create_postgres.py +0 -0
  336. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/create_postgres_export.py +0 -0
  337. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/create_postgres_user.py +0 -0
  338. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/delete_postgres.py +0 -0
  339. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/delete_postgres_user.py +0 -0
  340. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/failover_postgres.py +0 -0
  341. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_available_postgres_parameter_overrides.py +0 -0
  342. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres.py +0 -0
  343. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_export.py +0 -0
  344. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_parameter_overrides.py +0 -0
  345. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_processes.py +0 -0
  346. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_sizes.py +0 -0
  347. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_table_scans.py +0 -0
  348. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_top_queries.py +0 -0
  349. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/list_postgres_users.py +0 -0
  350. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/promote_postgres.py +0 -0
  351. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/recover_postgres.py +0 -0
  352. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/restart_postgres.py +0 -0
  353. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/resume_postgres.py +0 -0
  354. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/retrieve_postgres.py +0 -0
  355. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/retrieve_postgres_connection_info.py +0 -0
  356. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/retrieve_postgres_recovery_info.py +0 -0
  357. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/setup_postgres_replication.py +0 -0
  358. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/suspend_postgres.py +0 -0
  359. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/update_postgres.py +0 -0
  360. {render-1.0.1 → render-1.2.0}/render/public_api/api/postgres/update_postgres_parameter_overrides.py +0 -0
  361. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/__init__.py +0 -0
  362. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/add_resources_to_environment.py +0 -0
  363. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/create_environment.py +0 -0
  364. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/create_project.py +0 -0
  365. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/delete_environment.py +0 -0
  366. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/delete_project.py +0 -0
  367. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/list_environments.py +0 -0
  368. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/list_projects.py +0 -0
  369. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/remove_resources_from_environment.py +0 -0
  370. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/retrieve_environment.py +0 -0
  371. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/retrieve_project.py +0 -0
  372. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/update_environment.py +0 -0
  373. {render-1.0.1 → render-1.2.0}/render/public_api/api/projects_environments/update_project.py +0 -0
  374. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/__init__.py +0 -0
  375. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/create_redis.py +0 -0
  376. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/delete_redis.py +0 -0
  377. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/list_redis.py +0 -0
  378. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/resume_redis.py +0 -0
  379. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/retrieve_redis.py +0 -0
  380. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/retrieve_redis_connection_info.py +0 -0
  381. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/suspend_redis.py +0 -0
  382. {render-1.0.1 → render-1.2.0}/render/public_api/api/redis_deprecated/update_redis.py +0 -0
  383. {render-1.0.1 → render-1.2.0}/render/public_api/api/registry_credentials/__init__.py +0 -0
  384. {render-1.0.1 → render-1.2.0}/render/public_api/api/registry_credentials/create_registry_credential.py +0 -0
  385. {render-1.0.1 → render-1.2.0}/render/public_api/api/registry_credentials/delete_registry_credential.py +0 -0
  386. {render-1.0.1 → render-1.2.0}/render/public_api/api/registry_credentials/list_registry_credentials.py +0 -0
  387. {render-1.0.1 → render-1.2.0}/render/public_api/api/registry_credentials/retrieve_registry_credential.py +0 -0
  388. {render-1.0.1 → render-1.2.0}/render/public_api/api/registry_credentials/update_registry_credential.py +0 -0
  389. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/__init__.py +0 -0
  390. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/list_sandbox_files.py +0 -0
  391. {render-1.0.1 → render-1.2.0}/render/public_api/api/sandboxes/stream_sandbox_logs.py +0 -0
  392. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/__init__.py +0 -0
  393. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/add_or_update_secret_file.py +0 -0
  394. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/autoscale_service.py +0 -0
  395. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/create_ephemeral_shell.py +0 -0
  396. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/delete_autoscaling_config.py +0 -0
  397. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/delete_env_var.py +0 -0
  398. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/delete_secret_file.py +0 -0
  399. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/delete_service.py +0 -0
  400. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/get_env_vars_for_service.py +0 -0
  401. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/list_events.py +0 -0
  402. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/list_instances.py +0 -0
  403. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/list_secret_files_for_service.py +0 -0
  404. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/purge_cache.py +0 -0
  405. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/restart_service.py +0 -0
  406. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/resume_service.py +0 -0
  407. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/retrieve_env_var.py +0 -0
  408. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/retrieve_secret_file.py +0 -0
  409. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/retrieve_service_outbound_ips.py +0 -0
  410. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/scale_service.py +0 -0
  411. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/suspend_service.py +0 -0
  412. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/update_env_var.py +0 -0
  413. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/update_env_vars_for_service.py +0 -0
  414. {render-1.0.1 → render-1.2.0}/render/public_api/api/services/update_secret_files_for_service.py +0 -0
  415. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_cron_jobs/__init__.py +0 -0
  416. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_cron_jobs/cancel_cron_job_run.py +0 -0
  417. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_cron_jobs/run_cron_job.py +0 -0
  418. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_headers/__init__.py +0 -0
  419. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_headers/add_headers.py +0 -0
  420. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_headers/delete_header.py +0 -0
  421. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_headers/list_headers.py +0 -0
  422. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_headers/update_headers.py +0 -0
  423. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_routes/__init__.py +0 -0
  424. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_routes/add_route.py +0 -0
  425. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_routes/delete_route.py +0 -0
  426. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_routes/list_routes.py +0 -0
  427. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_routes/patch_route.py +0 -0
  428. {render-1.0.1 → render-1.2.0}/render/public_api/api/services_routes/put_routes.py +0 -0
  429. {render-1.0.1 → render-1.2.0}/render/public_api/api/users/__init__.py +0 -0
  430. {render-1.0.1 → render-1.2.0}/render/public_api/api/users/get_user.py +0 -0
  431. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/__init__.py +0 -0
  432. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/create_webhook.py +0 -0
  433. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/delete_webhook.py +0 -0
  434. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/list_webhook_events.py +0 -0
  435. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/list_webhooks.py +0 -0
  436. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/retrieve_webhook.py +0 -0
  437. {render-1.0.1 → render-1.2.0}/render/public_api/api/webhooks/update_webhook.py +0 -0
  438. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/__init__.py +0 -0
  439. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/cancel_task_run.py +0 -0
  440. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/create_task.py +0 -0
  441. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/get_task.py +0 -0
  442. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/get_task_run.py +0 -0
  443. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/list_task_runs.py +0 -0
  444. {render-1.0.1/render/public_api/api/workflow_tasks_beta → render-1.2.0/render/public_api/api/workflow_tasks}/list_tasks.py +0 -0
  445. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/__init__.py +0 -0
  446. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/create_workflow.py +0 -0
  447. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/create_workflow_version.py +0 -0
  448. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/delete_workflow.py +0 -0
  449. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/get_workflow.py +0 -0
  450. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/get_workflow_version.py +0 -0
  451. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/list_workflow_versions.py +0 -0
  452. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/list_workflows.py +0 -0
  453. {render-1.0.1/render/public_api/api/workflows_beta → render-1.2.0/render/public_api/api/workflows}/update_workflow.py +0 -0
  454. {render-1.0.1 → render-1.2.0}/render/public_api/api/workspaces/__init__.py +0 -0
  455. {render-1.0.1 → render-1.2.0}/render/public_api/api/workspaces/list_owners.py +0 -0
  456. {render-1.0.1 → render-1.2.0}/render/public_api/api/workspaces/remove_workspace_member.py +0 -0
  457. {render-1.0.1 → render-1.2.0}/render/public_api/api/workspaces/retrieve_owner.py +0 -0
  458. {render-1.0.1 → render-1.2.0}/render/public_api/api/workspaces/retrieve_owner_members.py +0 -0
  459. {render-1.0.1 → render-1.2.0}/render/public_api/api/workspaces/update_workspace_member.py +0 -0
  460. {render-1.0.1 → render-1.2.0}/render/public_api/client.py +0 -0
  461. {render-1.0.1 → render-1.2.0}/render/public_api/errors.py +0 -0
  462. {render-1.0.1 → render-1.2.0}/render/public_api/models/add_headers_response_201.py +0 -0
  463. {render-1.0.1 → render-1.2.0}/render/public_api/models/add_or_update_secret_file_body.py +0 -0
  464. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log.py +0 -0
  465. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log_actor.py +0 -0
  466. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log_actor_type.py +0 -0
  467. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log_event.py +0 -0
  468. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log_metadata.py +0 -0
  469. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log_status.py +0 -0
  470. {render-1.0.1 → render-1.2.0}/render/public_api/models/audit_log_with_cursor.py +0 -0
  471. {render-1.0.1 → render-1.2.0}/render/public_api/models/auto_deploy.py +0 -0
  472. {render-1.0.1 → render-1.2.0}/render/public_api/models/auto_deploy_disabled.py +0 -0
  473. {render-1.0.1 → render-1.2.0}/render/public_api/models/auto_deploy_enabled.py +0 -0
  474. {render-1.0.1 → render-1.2.0}/render/public_api/models/auto_deploy_trigger.py +0 -0
  475. {render-1.0.1 → render-1.2.0}/render/public_api/models/autoscaling_config.py +0 -0
  476. {render-1.0.1 → render-1.2.0}/render/public_api/models/autoscaling_config_changed.py +0 -0
  477. {render-1.0.1 → render-1.2.0}/render/public_api/models/autoscaling_criteria.py +0 -0
  478. {render-1.0.1 → render-1.2.0}/render/public_api/models/autoscaling_criteria_percentage.py +0 -0
  479. {render-1.0.1 → render-1.2.0}/render/public_api/models/autoscaling_ended.py +0 -0
  480. {render-1.0.1 → render-1.2.0}/render/public_api/models/autoscaling_started.py +0 -0
  481. {render-1.0.1 → render-1.2.0}/render/public_api/models/blueprint_with_cursor.py +0 -0
  482. {render-1.0.1 → render-1.2.0}/render/public_api/models/branch_deleted.py +0 -0
  483. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_deploy_end_reason.py +0 -0
  484. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_deploy_end_reason_id.py +0 -0
  485. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_deploy_trigger.py +0 -0
  486. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_ended.py +0 -0
  487. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_filter.py +0 -0
  488. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_plan.py +0 -0
  489. {render-1.0.1 → render-1.2.0}/render/public_api/models/build_started.py +0 -0
  490. {render-1.0.1 → render-1.2.0}/render/public_api/models/cache.py +0 -0
  491. {render-1.0.1 → render-1.2.0}/render/public_api/models/cache_profile.py +0 -0
  492. {render-1.0.1 → render-1.2.0}/render/public_api/models/cidr_block_and_description.py +0 -0
  493. {render-1.0.1 → render-1.2.0}/render/public_api/models/commit_ignored.py +0 -0
  494. {render-1.0.1 → render-1.2.0}/render/public_api/models/commit_ref.py +0 -0
  495. {render-1.0.1 → render-1.2.0}/render/public_api/models/connect_sandbox_files_operation.py +0 -0
  496. {render-1.0.1 → render-1.2.0}/render/public_api/models/connect_sandbox_run_operation.py +0 -0
  497. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_custom_domain_body.py +0 -0
  498. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_deploy_body_clear_cache.py +0 -0
  499. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_ephemeral_shell_body.py +0 -0
  500. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_ephemeral_shell_response_201.py +0 -0
  501. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_registry_credential_body.py +0 -0
  502. {render-1.0.1 → render-1.2.0}/render/public_api/models/create_version.py +0 -0
  503. {render-1.0.1 → render-1.2.0}/render/public_api/models/credential_create_input.py +0 -0
  504. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_run.py +0 -0
  505. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_run_ended.py +0 -0
  506. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_run_started.py +0 -0
  507. {render-1.0.1 → render-1.2.0}/render/public_api/models/cron_job_run_status.py +0 -0
  508. {render-1.0.1 → render-1.2.0}/render/public_api/models/custom_domain.py +0 -0
  509. {render-1.0.1 → render-1.2.0}/render/public_api/models/custom_domain_domain_type.py +0 -0
  510. {render-1.0.1 → render-1.2.0}/render/public_api/models/custom_domain_server.py +0 -0
  511. {render-1.0.1 → render-1.2.0}/render/public_api/models/custom_domain_verification_status.py +0 -0
  512. {render-1.0.1 → render-1.2.0}/render/public_api/models/custom_domain_with_cursor.py +0 -0
  513. {render-1.0.1 → render-1.2.0}/render/public_api/models/database_role.py +0 -0
  514. {render-1.0.1 → render-1.2.0}/render/public_api/models/database_status.py +0 -0
  515. {render-1.0.1 → render-1.2.0}/render/public_api/models/dedicated_ip.py +0 -0
  516. {render-1.0.1 → render-1.2.0}/render/public_api/models/dedicated_ip_status.py +0 -0
  517. {render-1.0.1 → render-1.2.0}/render/public_api/models/dedicated_ippatch.py +0 -0
  518. {render-1.0.1 → render-1.2.0}/render/public_api/models/dedicated_ippost.py +0 -0
  519. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_commit.py +0 -0
  520. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_image.py +0 -0
  521. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_mode.py +0 -0
  522. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_status.py +0 -0
  523. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_trigger.py +0 -0
  524. {render-1.0.1 → render-1.2.0}/render/public_api/models/deploy_with_cursor.py +0 -0
  525. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk.py +0 -0
  526. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_created.py +0 -0
  527. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_deleted.py +0 -0
  528. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_details.py +0 -0
  529. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_patch.py +0 -0
  530. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_post.py +0 -0
  531. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_snapshot.py +0 -0
  532. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_updated.py +0 -0
  533. {render-1.0.1 → render-1.2.0}/render/public_api/models/disk_with_cursor.py +0 -0
  534. {render-1.0.1 → render-1.2.0}/render/public_api/models/docker_details.py +0 -0
  535. {render-1.0.1 → render-1.2.0}/render/public_api/models/docker_details_post.py +0 -0
  536. {render-1.0.1 → render-1.2.0}/render/public_api/models/edge_cache_disabled.py +0 -0
  537. {render-1.0.1 → render-1.2.0}/render/public_api/models/edge_cache_enabled.py +0 -0
  538. {render-1.0.1 → render-1.2.0}/render/public_api/models/edge_cache_purged.py +0 -0
  539. {render-1.0.1 → render-1.2.0}/render/public_api/models/edge_cache_trigger.py +0 -0
  540. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_group.py +0 -0
  541. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_group_link.py +0 -0
  542. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_group_meta.py +0 -0
  543. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_group_patch_input.py +0 -0
  544. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_group_post_input.py +0 -0
  545. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_var.py +0 -0
  546. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_var_generate_value.py +0 -0
  547. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_var_key_generate_value.py +0 -0
  548. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_var_key_value.py +0 -0
  549. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_var_value.py +0 -0
  550. {render-1.0.1 → render-1.2.0}/render/public_api/models/env_var_with_cursor.py +0 -0
  551. {render-1.0.1 → render-1.2.0}/render/public_api/models/environment.py +0 -0
  552. {render-1.0.1 → render-1.2.0}/render/public_api/models/environment_patch_input.py +0 -0
  553. {render-1.0.1 → render-1.2.0}/render/public_api/models/environment_post_input.py +0 -0
  554. {render-1.0.1 → render-1.2.0}/render/public_api/models/environment_resources_post_input.py +0 -0
  555. {render-1.0.1 → render-1.2.0}/render/public_api/models/environment_with_cursor.py +0 -0
  556. {render-1.0.1 → render-1.2.0}/render/public_api/models/error.py +0 -0
  557. {render-1.0.1 → render-1.2.0}/render/public_api/models/event_status.py +0 -0
  558. {render-1.0.1 → render-1.2.0}/render/public_api/models/event_type.py +0 -0
  559. {render-1.0.1 → render-1.2.0}/render/public_api/models/execution.py +0 -0
  560. {render-1.0.1 → render-1.2.0}/render/public_api/models/execution_operation.py +0 -0
  561. {render-1.0.1 → render-1.2.0}/render/public_api/models/execution_type.py +0 -0
  562. {render-1.0.1 → render-1.2.0}/render/public_api/models/failure_reason.py +0 -0
  563. {render-1.0.1 → render-1.2.0}/render/public_api/models/filter_application_values_collection_item.py +0 -0
  564. {render-1.0.1 → render-1.2.0}/render/public_api/models/filter_application_values_collection_item_filter.py +0 -0
  565. {render-1.0.1 → render-1.2.0}/render/public_api/models/filter_http_values_collection_item.py +0 -0
  566. {render-1.0.1 → render-1.2.0}/render/public_api/models/filter_http_values_collection_item_filter.py +0 -0
  567. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_bandwidth_sources_response_200.py +0 -0
  568. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item.py +0 -0
  569. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_labels.py +0 -0
  570. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_labels_traffic_source.py +0 -0
  571. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_values_item.py +0 -0
  572. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_cpu_aggregation_method.py +0 -0
  573. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_http_requests_aggregate_by.py +0 -0
  574. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_object_output.py +0 -0
  575. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_task_runs_completed_aggregate_by.py +0 -0
  576. {render-1.0.1 → render-1.2.0}/render/public_api/models/get_task_runs_completed_state.py +0 -0
  577. {render-1.0.1 → render-1.2.0}/render/public_api/models/header.py +0 -0
  578. {render-1.0.1 → render-1.2.0}/render/public_api/models/header_input.py +0 -0
  579. {render-1.0.1 → render-1.2.0}/render/public_api/models/header_with_cursor.py +0 -0
  580. {render-1.0.1 → render-1.2.0}/render/public_api/models/image.py +0 -0
  581. {render-1.0.1 → render-1.2.0}/render/public_api/models/image_pull_failed.py +0 -0
  582. {render-1.0.1 → render-1.2.0}/render/public_api/models/initial_deploy_hook_ended.py +0 -0
  583. {render-1.0.1 → render-1.2.0}/render/public_api/models/initial_deploy_hook_started.py +0 -0
  584. {render-1.0.1 → render-1.2.0}/render/public_api/models/instance_count_changed.py +0 -0
  585. {render-1.0.1 → render-1.2.0}/render/public_api/models/instance_type_changed.py +0 -0
  586. {render-1.0.1 → render-1.2.0}/render/public_api/models/internal_routing.py +0 -0
  587. {render-1.0.1 → render-1.2.0}/render/public_api/models/job.py +0 -0
  588. {render-1.0.1 → render-1.2.0}/render/public_api/models/job_run_ended.py +0 -0
  589. {render-1.0.1 → render-1.2.0}/render/public_api/models/job_status.py +0 -0
  590. {render-1.0.1 → render-1.2.0}/render/public_api/models/job_with_cursor.py +0 -0
  591. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value.py +0 -0
  592. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_available.py +0 -0
  593. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_config_restart.py +0 -0
  594. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_connection_info.py +0 -0
  595. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_detail.py +0 -0
  596. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_options.py +0 -0
  597. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_patch_input.py +0 -0
  598. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_post_input.py +0 -0
  599. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_unhealthy.py +0 -0
  600. {render-1.0.1 → render-1.2.0}/render/public_api/models/key_value_with_cursor.py +0 -0
  601. {render-1.0.1 → render-1.2.0}/render/public_api/models/label.py +0 -0
  602. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_custom_domains_domain_type.py +0 -0
  603. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_custom_domains_verification_status.py +0 -0
  604. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_logs_response_200.py +0 -0
  605. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_logs_values_label.py +0 -0
  606. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_objects_response.py +0 -0
  607. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_postgres_suspended_item.py +0 -0
  608. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_postgres_users_response_200_item.py +0 -0
  609. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_routes_type_item.py +0 -0
  610. {render-1.0.1 → render-1.2.0}/render/public_api/models/list_services_suspended_item.py +0 -0
  611. {render-1.0.1 → render-1.2.0}/render/public_api/models/log.py +0 -0
  612. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_direction.py +0 -0
  613. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_label.py +0 -0
  614. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_label_name.py +0 -0
  615. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_stream_owner_update.py +0 -0
  616. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_stream_preview_setting.py +0 -0
  617. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_stream_resource_update.py +0 -0
  618. {render-1.0.1 → render-1.2.0}/render/public_api/models/log_stream_setting.py +0 -0
  619. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_ended.py +0 -0
  620. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_mode.py +0 -0
  621. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_mode_enabled.py +0 -0
  622. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_mode_uri_updated.py +0 -0
  623. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_run.py +0 -0
  624. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_run_patch.py +0 -0
  625. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_run_with_resource.py +0 -0
  626. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_started.py +0 -0
  627. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_state.py +0 -0
  628. {render-1.0.1 → render-1.2.0}/render/public_api/models/maintenance_trigger.py +0 -0
  629. {render-1.0.1 → render-1.2.0}/render/public_api/models/maxmemory_policy.py +0 -0
  630. {render-1.0.1 → render-1.2.0}/render/public_api/models/metrics_stream.py +0 -0
  631. {render-1.0.1 → render-1.2.0}/render/public_api/models/metrics_stream_input.py +0 -0
  632. {render-1.0.1 → render-1.2.0}/render/public_api/models/native_environment_details.py +0 -0
  633. {render-1.0.1 → render-1.2.0}/render/public_api/models/native_environment_details_patch.py +0 -0
  634. {render-1.0.1 → render-1.2.0}/render/public_api/models/native_environment_details_post.py +0 -0
  635. {render-1.0.1 → render-1.2.0}/render/public_api/models/notification_override.py +0 -0
  636. {render-1.0.1 → render-1.2.0}/render/public_api/models/notification_override_with_cursor.py +0 -0
  637. {render-1.0.1 → render-1.2.0}/render/public_api/models/notification_service_override.py +0 -0
  638. {render-1.0.1 → render-1.2.0}/render/public_api/models/notification_service_override_patch.py +0 -0
  639. {render-1.0.1 → render-1.2.0}/render/public_api/models/notification_setting.py +0 -0
  640. {render-1.0.1 → render-1.2.0}/render/public_api/models/notification_setting_patch.py +0 -0
  641. {render-1.0.1 → render-1.2.0}/render/public_api/models/notify_override.py +0 -0
  642. {render-1.0.1 → render-1.2.0}/render/public_api/models/notify_preview_override.py +0 -0
  643. {render-1.0.1 → render-1.2.0}/render/public_api/models/notify_setting.py +0 -0
  644. {render-1.0.1 → render-1.2.0}/render/public_api/models/notify_setting_v2.py +0 -0
  645. {render-1.0.1 → render-1.2.0}/render/public_api/models/object_metadata.py +0 -0
  646. {render-1.0.1 → render-1.2.0}/render/public_api/models/object_with_cursor.py +0 -0
  647. {render-1.0.1 → render-1.2.0}/render/public_api/models/oom_killed.py +0 -0
  648. {render-1.0.1 → render-1.2.0}/render/public_api/models/otel_provider_type.py +0 -0
  649. {render-1.0.1 → render-1.2.0}/render/public_api/models/outbound_ips.py +0 -0
  650. {render-1.0.1 → render-1.2.0}/render/public_api/models/outbound_ips_type.py +0 -0
  651. {render-1.0.1 → render-1.2.0}/render/public_api/models/owner.py +0 -0
  652. {render-1.0.1 → render-1.2.0}/render/public_api/models/owner_log_stream_setting.py +0 -0
  653. {render-1.0.1 → render-1.2.0}/render/public_api/models/owner_type.py +0 -0
  654. {render-1.0.1 → render-1.2.0}/render/public_api/models/owner_with_cursor.py +0 -0
  655. {render-1.0.1 → render-1.2.0}/render/public_api/models/patch_route_response_200.py +0 -0
  656. {render-1.0.1 → render-1.2.0}/render/public_api/models/persistence_mode.py +0 -0
  657. {render-1.0.1 → render-1.2.0}/render/public_api/models/pipeline_minutes_exhausted.py +0 -0
  658. {render-1.0.1 → render-1.2.0}/render/public_api/models/post_job_body.py +0 -0
  659. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres.py +0 -0
  660. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_available.py +0 -0
  661. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_available_parameter_override.py +0 -0
  662. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_available_parameter_overrides_result.py +0 -0
  663. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_backup_completed.py +0 -0
  664. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_backup_failed.py +0 -0
  665. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_backup_started.py +0 -0
  666. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_cluster_leader_changed.py +0 -0
  667. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_connection_info.py +0 -0
  668. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_connection_pool_changed.py +0 -0
  669. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_connection_pool_enabled_changed.py +0 -0
  670. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_created.py +0 -0
  671. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_detail.py +0 -0
  672. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_detail_suspended.py +0 -0
  673. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_disk_size_changed.py +0 -0
  674. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_export.py +0 -0
  675. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_ha_status_changed.py +0 -0
  676. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_parameter_overrides.py +0 -0
  677. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_parameter_overrides_wrapper.py +0 -0
  678. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_patch_input.py +0 -0
  679. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_pitr_checkpoint_completed.py +0 -0
  680. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_pitr_checkpoint_failed.py +0 -0
  681. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_pitr_checkpoint_started.py +0 -0
  682. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_post_input.py +0 -0
  683. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_process.py +0 -0
  684. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_processes_result.py +0 -0
  685. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_put_parameter_overrides_result.py +0 -0
  686. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_query_statistic.py +0 -0
  687. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_read_replica_stale.py +0 -0
  688. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_read_replicas_changed.py +0 -0
  689. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_replication_setup_input.py +0 -0
  690. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_restarted.py +0 -0
  691. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_size.py +0 -0
  692. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_sizes_result.py +0 -0
  693. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_suspended.py +0 -0
  694. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_table_scan.py +0 -0
  695. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_table_scans_result.py +0 -0
  696. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_top_queries_result.py +0 -0
  697. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_unavailable.py +0 -0
  698. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_upgrade_failed.py +0 -0
  699. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_upgrade_started.py +0 -0
  700. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_upgrade_succeeded.py +0 -0
  701. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_version.py +0 -0
  702. {render-1.0.1 → render-1.2.0}/render/public_api/models/postgres_with_cursor.py +0 -0
  703. {render-1.0.1 → render-1.2.0}/render/public_api/models/pre_deploy_ended.py +0 -0
  704. {render-1.0.1 → render-1.2.0}/render/public_api/models/pre_deploy_started.py +0 -0
  705. {render-1.0.1 → render-1.2.0}/render/public_api/models/previews.py +0 -0
  706. {render-1.0.1 → render-1.2.0}/render/public_api/models/previews_generation.py +0 -0
  707. {render-1.0.1 → render-1.2.0}/render/public_api/models/project.py +0 -0
  708. {render-1.0.1 → render-1.2.0}/render/public_api/models/project_patch_input.py +0 -0
  709. {render-1.0.1 → render-1.2.0}/render/public_api/models/project_post_environment_input.py +0 -0
  710. {render-1.0.1 → render-1.2.0}/render/public_api/models/project_post_input.py +0 -0
  711. {render-1.0.1 → render-1.2.0}/render/public_api/models/project_with_cursor.py +0 -0
  712. {render-1.0.1 → render-1.2.0}/render/public_api/models/protected_status.py +0 -0
  713. {render-1.0.1 → render-1.2.0}/render/public_api/models/pull_request_previews_enabled.py +0 -0
  714. {render-1.0.1 → render-1.2.0}/render/public_api/models/put_object_input.py +0 -0
  715. {render-1.0.1 → render-1.2.0}/render/public_api/models/put_object_output.py +0 -0
  716. {render-1.0.1 → render-1.2.0}/render/public_api/models/read_replica.py +0 -0
  717. {render-1.0.1 → render-1.2.0}/render/public_api/models/read_replica_input.py +0 -0
  718. {render-1.0.1 → render-1.2.0}/render/public_api/models/recovery_info.py +0 -0
  719. {render-1.0.1 → render-1.2.0}/render/public_api/models/recovery_info_recovery_status.py +0 -0
  720. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis.py +0 -0
  721. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_connection_info.py +0 -0
  722. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_detail.py +0 -0
  723. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_options.py +0 -0
  724. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_patch_input.py +0 -0
  725. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_post_input.py +0 -0
  726. {render-1.0.1 → render-1.2.0}/render/public_api/models/redis_with_cursor.py +0 -0
  727. {render-1.0.1 → render-1.2.0}/render/public_api/models/region.py +0 -0
  728. {render-1.0.1 → render-1.2.0}/render/public_api/models/registry_credential.py +0 -0
  729. {render-1.0.1 → render-1.2.0}/render/public_api/models/registry_credential_registry.py +0 -0
  730. {render-1.0.1 → render-1.2.0}/render/public_api/models/registry_credential_summary.py +0 -0
  731. {render-1.0.1 → render-1.2.0}/render/public_api/models/render_subdomain_policy.py +0 -0
  732. {render-1.0.1 → render-1.2.0}/render/public_api/models/resource.py +0 -0
  733. {render-1.0.1 → render-1.2.0}/render/public_api/models/resource_log_stream_setting.py +0 -0
  734. {render-1.0.1 → render-1.2.0}/render/public_api/models/resource_ref.py +0 -0
  735. {render-1.0.1 → render-1.2.0}/render/public_api/models/rollback_deploy_body.py +0 -0
  736. {render-1.0.1 → render-1.2.0}/render/public_api/models/route.py +0 -0
  737. {render-1.0.1 → render-1.2.0}/render/public_api/models/route_patch.py +0 -0
  738. {render-1.0.1 → render-1.2.0}/render/public_api/models/route_post.py +0 -0
  739. {render-1.0.1 → render-1.2.0}/render/public_api/models/route_put.py +0 -0
  740. {render-1.0.1 → render-1.2.0}/render/public_api/models/route_type.py +0 -0
  741. {render-1.0.1 → render-1.2.0}/render/public_api/models/route_with_cursor.py +0 -0
  742. {render-1.0.1 → render-1.2.0}/render/public_api/models/runtime.py +0 -0
  743. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox.py +0 -0
  744. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_connect_request.py +0 -0
  745. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_connect_response.py +0 -0
  746. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_directory_listing.py +0 -0
  747. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_exec_update_request.py +0 -0
  748. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_exec_update_response.py +0 -0
  749. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_file_entry.py +0 -0
  750. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_file_entry_type.py +0 -0
  751. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_group.py +0 -0
  752. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_group_with_cursor.py +0 -0
  753. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_plan.py +0 -0
  754. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_post_env.py +0 -0
  755. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_status.py +0 -0
  756. {render-1.0.1 → render-1.2.0}/render/public_api/models/sandbox_with_cursor.py +0 -0
  757. {render-1.0.1 → render-1.2.0}/render/public_api/models/scale_service_body.py +0 -0
  758. {render-1.0.1 → render-1.2.0}/render/public_api/models/schemas_build_filter.py +0 -0
  759. {render-1.0.1 → render-1.2.0}/render/public_api/models/schemas_user.py +0 -0
  760. {render-1.0.1 → render-1.2.0}/render/public_api/models/secret_file.py +0 -0
  761. {render-1.0.1 → render-1.2.0}/render/public_api/models/secret_file_input.py +0 -0
  762. {render-1.0.1 → render-1.2.0}/render/public_api/models/secret_file_with_cursor.py +0 -0
  763. {render-1.0.1 → render-1.2.0}/render/public_api/models/server_available.py +0 -0
  764. {render-1.0.1 → render-1.2.0}/render/public_api/models/server_failed.py +0 -0
  765. {render-1.0.1 → render-1.2.0}/render/public_api/models/server_hardware_failure.py +0 -0
  766. {render-1.0.1 → render-1.2.0}/render/public_api/models/server_port.py +0 -0
  767. {render-1.0.1 → render-1.2.0}/render/public_api/models/server_port_protocol.py +0 -0
  768. {render-1.0.1 → render-1.2.0}/render/public_api/models/server_restarted.py +0 -0
  769. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_disk.py +0 -0
  770. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_env.py +0 -0
  771. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_event_with_cursor.py +0 -0
  772. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_instance.py +0 -0
  773. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_post.py +0 -0
  774. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_resumed.py +0 -0
  775. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_runtime.py +0 -0
  776. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_suspended.py +0 -0
  777. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_type.py +0 -0
  778. {render-1.0.1 → render-1.2.0}/render/public_api/models/service_type_short.py +0 -0
  779. {render-1.0.1 → render-1.2.0}/render/public_api/models/setup_postgres_replication_response_201.py +0 -0
  780. {render-1.0.1 → render-1.2.0}/render/public_api/models/snapshot_restore_post.py +0 -0
  781. {render-1.0.1 → render-1.2.0}/render/public_api/models/static_site_details.py +0 -0
  782. {render-1.0.1 → render-1.2.0}/render/public_api/models/static_site_details_patch.py +0 -0
  783. {render-1.0.1 → render-1.2.0}/render/public_api/models/static_site_details_post.py +0 -0
  784. {render-1.0.1 → render-1.2.0}/render/public_api/models/status.py +0 -0
  785. {render-1.0.1 → render-1.2.0}/render/public_api/models/stream_sandbox_logs_accept.py +0 -0
  786. {render-1.0.1 → render-1.2.0}/render/public_api/models/stream_task_runs_events_accept.py +0 -0
  787. {render-1.0.1 → render-1.2.0}/render/public_api/models/suspender_added.py +0 -0
  788. {render-1.0.1 → render-1.2.0}/render/public_api/models/suspender_removed.py +0 -0
  789. {render-1.0.1 → render-1.2.0}/render/public_api/models/suspender_type.py +0 -0
  790. {render-1.0.1 → render-1.2.0}/render/public_api/models/sync.py +0 -0
  791. {render-1.0.1 → render-1.2.0}/render/public_api/models/sync_state.py +0 -0
  792. {render-1.0.1 → render-1.2.0}/render/public_api/models/sync_with_cursor.py +0 -0
  793. {render-1.0.1 → render-1.2.0}/render/public_api/models/task.py +0 -0
  794. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_attempt.py +0 -0
  795. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_attempt_details.py +0 -0
  796. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_data_type_1.py +0 -0
  797. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_run.py +0 -0
  798. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_run_details.py +0 -0
  799. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_run_status.py +0 -0
  800. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_run_with_cursor.py +0 -0
  801. {render-1.0.1 → render-1.2.0}/render/public_api/models/task_with_cursor.py +0 -0
  802. {render-1.0.1 → render-1.2.0}/render/public_api/models/team_member.py +0 -0
  803. {render-1.0.1 → render-1.2.0}/render/public_api/models/team_member_role.py +0 -0
  804. {render-1.0.1 → render-1.2.0}/render/public_api/models/team_member_status.py +0 -0
  805. {render-1.0.1 → render-1.2.0}/render/public_api/models/time_series.py +0 -0
  806. {render-1.0.1 → render-1.2.0}/render/public_api/models/time_series_value.py +0 -0
  807. {render-1.0.1 → render-1.2.0}/render/public_api/models/update_env_group_secret_file_body.py +0 -0
  808. {render-1.0.1 → render-1.2.0}/render/public_api/models/update_registry_credential_body.py +0 -0
  809. {render-1.0.1 → render-1.2.0}/render/public_api/models/update_workspace_member_body.py +0 -0
  810. {render-1.0.1 → render-1.2.0}/render/public_api/models/validate_blueprint_request.py +0 -0
  811. {render-1.0.1 → render-1.2.0}/render/public_api/models/validate_blueprint_response.py +0 -0
  812. {render-1.0.1 → render-1.2.0}/render/public_api/models/validation_error.py +0 -0
  813. {render-1.0.1 → render-1.2.0}/render/public_api/models/webhook.py +0 -0
  814. {render-1.0.1 → render-1.2.0}/render/public_api/models/webhook_event.py +0 -0
  815. {render-1.0.1 → render-1.2.0}/render/public_api/models/webhook_event_with_cursor.py +0 -0
  816. {render-1.0.1 → render-1.2.0}/render/public_api/models/webhook_patch_input.py +0 -0
  817. {render-1.0.1 → render-1.2.0}/render/public_api/models/webhook_post_input.py +0 -0
  818. {render-1.0.1 → render-1.2.0}/render/public_api/models/webhook_with_cursor.py +0 -0
  819. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow.py +0 -0
  820. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow_version.py +0 -0
  821. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow_version_status.py +0 -0
  822. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow_version_with_cursor.py +0 -0
  823. {render-1.0.1 → render-1.2.0}/render/public_api/models/workflow_with_cursor.py +0 -0
  824. {render-1.0.1 → render-1.2.0}/render/public_api/models/zero_downtime_redeploy_ended.py +0 -0
  825. {render-1.0.1 → render-1.2.0}/render/public_api/models/zero_downtime_redeploy_started.py +0 -0
  826. {render-1.0.1 → render-1.2.0}/render/public_api/py.typed +0 -0
  827. {render-1.0.1 → render-1.2.0}/render/public_api/types.py +0 -0
  828. {render-1.0.1 → render-1.2.0}/render/py.typed +0 -0
  829. {render-1.0.1 → render-1.2.0}/render/render.py +0 -0
  830. {render-1.0.1 → render-1.2.0}/render/render_async.py +0 -0
  831. {render-1.0.1 → render-1.2.0}/render/version.py +0 -0
  832. {render-1.0.1 → render-1.2.0}/render/workflows/_uds_http.py +0 -0
  833. {render-1.0.1 → render-1.2.0}/render/workflows/app.py +0 -0
  834. {render-1.0.1 → render-1.2.0}/render/workflows/cli.py +0 -0
  835. {render-1.0.1 → render-1.2.0}/render/workflows/client.py +0 -0
  836. {render-1.0.1 → render-1.2.0}/render/workflows/task.py +0 -0
  837. {render-1.0.1 → render-1.2.0}/render/workflows/tests/__init__.py +0 -0
  838. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_app.py +0 -0
  839. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_cli.py +0 -0
  840. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_client.py +0 -0
  841. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_executor.py +0 -0
  842. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_lazy_imports.py +0 -0
  843. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_registration.py +0 -0
  844. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_translate_errors.py +0 -0
  845. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_uds_http.py +0 -0
  846. {render-1.0.1 → render-1.2.0}/render/workflows/tests/test_version.py +0 -0
  847. {render-1.0.1 → render-1.2.0}/tox.ini +0 -0
  848. {render-1.0.1 → render-1.2.0}/typing_tests/README.md +0 -0
  849. {render-1.0.1 → render-1.2.0}/typing_tests/client_decorators.py +0 -0
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.2.0] - 2026-09-23
4
+
5
+ ### Added
6
+
7
+ - (Workflows) `start_task()` and `run_task()` accept a keyword-only `idempotency_key`, which makes starting a run safe to retry: repeating a call with the same key within 24 hours returns the run the first call started
8
+ - (Workflows) `ctx.metadata` exposes `task_run_id`, `root_task_run_id` and `parent_task_run_id` for the running task. The IDs come from the task's initial input, so reading them does not make a network request; each is `None` when unavailable
9
+ - (Sandboxes) Snapshot names: `snapshots.create()` accepts `name`, `sandboxes.create()` accepts `snapshot_name` to start from the snapshot that name resolves to, and `Snapshot` exposes `name`. Passing both `snapshot_id` and `snapshot_name` raises `ValueError`
10
+
11
+ ### Changed
12
+
13
+ - Regenerated the REST client from the latest OpenAPI schema: blueprint creation, `include_previews` when listing build sources, and allowed domains on sandbox network policies. `Deploy` no longer has a `build_id` field
14
+
15
+ ## [1.1.0] - 2026-09-10
16
+
17
+ ### Added
18
+
19
+ - (Sandboxes) `sandboxes.list_groups()`, async and sync, returning a `SandboxGroupList` of `SandboxGroup` snapshots and an optional `next_cursor`. Alpha guarantees at most one group per workspace, so the page holds zero or one group
20
+ - (Sandboxes) Sandbox snapshots through `sandboxes.snapshots`, with `create`, `from_id`, `list` and `delete`, async and sync
21
+ - (Sandboxes) Snapshot `kind` in `snapshots.create()`: `filesystem` captures the writable filesystem, `runtime` also captures memory and CPU state; optional `expires_at`
22
+ - (Sandboxes) `sandboxes.create()` accepts `snapshot_id` to start from a snapshot instead of the base image
23
+ - (Sandboxes) Snapshot error types `SnapshotNotFoundError`, `SnapshotNotReadyError` and `SnapshotPlanMismatchError`, each exposing the API error `code` when the API sends one
24
+ - (Key Value) The size-based plan names (`256mb`, `1g`, `5g`, `10g`, `20g`, `40g`) are accepted as `InstanceConfiguration.plan` for automatic provisioning
25
+ - `ClientError.code` carries the API error code when the response includes one
26
+
27
+ ### Fixed
28
+
29
+ - (Blueprints) `ResourceRefType.WORKFLOW`, so `BlueprintDetail.from_dict` parses a blueprint that declares workflows instead of raising `ValueError`
30
+
31
+ ### Changed
32
+
33
+ - Regenerated the REST client from the latest OpenAPI schema: the new compute plan identifiers, sandbox execution listing and retrieval, service disk usage events, and env group linking against artifact sources
34
+
35
+ ## [1.0.1] - 2026-08-21
36
+
37
+ ### Changed
38
+
39
+ - **Breaking** The package is now named `render` rather than `render_sdk`; install `render` and import `render`. `render_sdk` remains on PyPI as a shim that re-exports `render` at the same version and warns on import
40
+
3
41
  ## [1.0.0] - 2026-08-20
4
42
 
5
43
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: render
3
- Version: 1.0.1
3
+ Version: 1.2.0
4
4
  Summary: Python SDK for Render Workflows
5
5
  Author-email: Render <support@render.com>
6
6
  License-File: LICENSE
@@ -102,6 +102,17 @@ from tasks_b import app as app_b
102
102
  combined = Workflows.from_workflows(app_a, app_b)
103
103
  ```
104
104
 
105
+ ### Task run IDs
106
+
107
+ The task context exposes a read-only `ctx.metadata` object with
108
+ `task_run_id`, `root_task_run_id`, and `parent_task_run_id` fields. The SDK reads
109
+ them from the initial input response and keeps them for that execution, so
110
+ accessing metadata does not make a network request.
111
+
112
+ For a root run, `ctx.metadata.root_task_run_id` equals
113
+ `ctx.metadata.task_run_id` and `ctx.metadata.parent_task_run_id` is `None`.
114
+ IDs are `None` when unavailable.
115
+
105
116
  ### Running the Local Task Server
106
117
 
107
118
  For local development, use the Render CLI:
@@ -159,6 +170,19 @@ for event in render.workflows.task_run_events([task_run.id]):
159
170
  runs = render.workflows.list_task_runs(ListTaskRunsParams(limit=10))
160
171
  ```
161
172
 
173
+ #### Idempotency Keys
174
+
175
+ Pass an `idempotency_key` to make starting a run safe to retry. Repeating a call
176
+ with the same key within 24 hours returns the run the first call started instead
177
+ of starting another one, so a client that retries after a timeout does not run
178
+ the task twice. Keys are scoped to a single workflow version.
179
+
180
+ ```python
181
+ task_run = render.workflows.start_task(
182
+ "my-workflow/charge", [order_id], idempotency_key=f"charge-{order_id}"
183
+ )
184
+ ```
185
+
162
186
  #### Async Usage
163
187
 
164
188
  For async contexts (e.g. FastAPI), use `RenderAsync`:
@@ -77,6 +77,17 @@ from tasks_b import app as app_b
77
77
  combined = Workflows.from_workflows(app_a, app_b)
78
78
  ```
79
79
 
80
+ ### Task run IDs
81
+
82
+ The task context exposes a read-only `ctx.metadata` object with
83
+ `task_run_id`, `root_task_run_id`, and `parent_task_run_id` fields. The SDK reads
84
+ them from the initial input response and keeps them for that execution, so
85
+ accessing metadata does not make a network request.
86
+
87
+ For a root run, `ctx.metadata.root_task_run_id` equals
88
+ `ctx.metadata.task_run_id` and `ctx.metadata.parent_task_run_id` is `None`.
89
+ IDs are `None` when unavailable.
90
+
80
91
  ### Running the Local Task Server
81
92
 
82
93
  For local development, use the Render CLI:
@@ -134,6 +145,19 @@ for event in render.workflows.task_run_events([task_run.id]):
134
145
  runs = render.workflows.list_task_runs(ListTaskRunsParams(limit=10))
135
146
  ```
136
147
 
148
+ #### Idempotency Keys
149
+
150
+ Pass an `idempotency_key` to make starting a run safe to retry. Repeating a call
151
+ with the same key within 24 hours returns the run the first call started instead
152
+ of starting another one, so a client that retries after a timeout does not run
153
+ the task twice. Keys are scoped to a single workflow version.
154
+
155
+ ```python
156
+ task_run = render.workflows.start_task(
157
+ "my-workflow/charge", [order_id], idempotency_key=f"charge-{order_id}"
158
+ )
159
+ ```
160
+
137
161
  #### Async Usage
138
162
 
139
163
  For async contexts (e.g. FastAPI), use `RenderAsync`:
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(uv sync:*)"
5
+ ]
6
+ }
7
+ }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "render"
7
- version = "1.0.1"
7
+ version = "1.2.0"
8
8
  description = "Python SDK for Render Workflows"
9
9
  authors = [{ name = "Render", email = "support@render.com" }]
10
10
  readme = "README.md"
@@ -33,7 +33,7 @@ Async REST API access:
33
33
  result = await task_run
34
34
  """
35
35
 
36
- __version__ = "1.0.1"
36
+ __version__ = "1.2.0"
37
37
 
38
38
  # Render/RenderAsync are lazy-loaded so the workflow worker path stays fast.
39
39
  from typing import TYPE_CHECKING
@@ -42,6 +42,7 @@ from render.workflows import (
42
42
  Options,
43
43
  Retry,
44
44
  TaskContext,
45
+ TaskRunMetadata,
45
46
  Workflows,
46
47
  start,
47
48
  task,
@@ -58,6 +59,7 @@ __all__ = [
58
59
  "RenderAsync", # Async REST API client
59
60
  "Workflows", # Task definition
60
61
  "TaskContext", # First parameter of every task
62
+ "TaskRunMetadata",
61
63
  # Configuration
62
64
  "Options",
63
65
  "Retry",
@@ -6,9 +6,14 @@ class RenderError(Exception):
6
6
 
7
7
  class ClientError(RenderError):
8
8
  """Exception for client errors. This is returned when
9
- the client makes a request to the API and the API returns a 4xx error."""
9
+ the client makes a request to the API and the API returns a 4xx error.
10
10
 
11
- pass
11
+ code is the machine-readable code from the error body, or None when the
12
+ API did not send one."""
13
+
14
+ def __init__(self, *args: object, code: str | None = None) -> None:
15
+ super().__init__(*args)
16
+ self.code = code
12
17
 
13
18
 
14
19
  class RateLimitError(ClientError):
@@ -77,28 +77,28 @@ def workflows_service(client):
77
77
  @pytest.fixture
78
78
  def mock_cancel_task_run_asyncio(mocker):
79
79
  return mocker.patch(
80
- "render.public_api.api.workflow_tasks_beta.cancel_task_run.asyncio_detailed"
80
+ "render.public_api.api.workflow_tasks.cancel_task_run.asyncio_detailed"
81
81
  )
82
82
 
83
83
 
84
84
  @pytest.fixture
85
85
  def mock_list_task_runs_asyncio(mocker):
86
86
  return mocker.patch(
87
- "render.public_api.api.workflow_tasks_beta.list_task_runs.asyncio_detailed"
87
+ "render.public_api.api.workflow_tasks.list_task_runs.asyncio_detailed"
88
88
  )
89
89
 
90
90
 
91
91
  @pytest.fixture
92
92
  def mock_create_task_asyncio(mocker):
93
93
  return mocker.patch(
94
- "render.public_api.api.workflow_tasks_beta.create_task.asyncio_detailed"
94
+ "render.public_api.api.workflow_tasks.create_task.asyncio_detailed"
95
95
  )
96
96
 
97
97
 
98
98
  @pytest.fixture
99
99
  def mock_get_task_run_asyncio(mocker):
100
100
  return mocker.patch(
101
- "render.public_api.api.workflow_tasks_beta.get_task_run.asyncio_detailed"
101
+ "render.public_api.api.workflow_tasks.get_task_run.asyncio_detailed"
102
102
  )
103
103
 
104
104
 
@@ -118,6 +118,62 @@ async def test_start_task_success(
118
118
  mock_create_task_asyncio.assert_called_once()
119
119
 
120
120
 
121
+ @pytest.mark.asyncio
122
+ async def test_start_task_omits_idempotency_key_when_not_given(
123
+ mock_create_task_asyncio, workflows_service, mock_task_run
124
+ ):
125
+ mock_create_task_asyncio.return_value = Response(
126
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
127
+ )
128
+
129
+ await workflows_service.start_task("test-task", {"input": "data"})
130
+
131
+ body = mock_create_task_asyncio.call_args.kwargs["body"]
132
+ assert "idempotencyKey" not in body.to_dict()
133
+
134
+
135
+ @pytest.mark.asyncio
136
+ async def test_start_task_sends_idempotency_key(
137
+ mock_create_task_asyncio, workflows_service, mock_task_run
138
+ ):
139
+ mock_create_task_asyncio.return_value = Response(
140
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
141
+ )
142
+
143
+ await workflows_service.start_task(
144
+ "test-task", {"input": "data"}, idempotency_key="order-42"
145
+ )
146
+
147
+ body = mock_create_task_asyncio.call_args.kwargs["body"]
148
+ assert body.to_dict()["idempotencyKey"] == "order-42"
149
+
150
+
151
+ @pytest.mark.asyncio
152
+ async def test_run_task_sends_idempotency_key(
153
+ mocker,
154
+ mock_create_task_asyncio,
155
+ workflows_service,
156
+ mock_task_run,
157
+ mock_task_run_details,
158
+ ):
159
+ mock_create_task_asyncio.return_value = Response(
160
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
161
+ )
162
+ mocker.patch.object(
163
+ AwaitableTaskRun,
164
+ "_wait_for_completion",
165
+ new_callable=mocker.AsyncMock,
166
+ return_value=mock_task_run_details,
167
+ )
168
+
169
+ await workflows_service.run_task(
170
+ "test-task", {"input": "data"}, idempotency_key="order-42"
171
+ )
172
+
173
+ body = mock_create_task_asyncio.call_args.kwargs["body"]
174
+ assert body.idempotency_key == "order-42"
175
+
176
+
121
177
  @pytest.mark.asyncio
122
178
  async def test_start_task_failure(mock_create_task_asyncio, workflows_service):
123
179
  """Test task start failure."""
@@ -25,8 +25,11 @@ from render.experimental.object.client_sync import (
25
25
  )
26
26
  from render.experimental.sandbox.api import SandboxApi
27
27
  from render.experimental.sandbox.api_sync import SyncSandboxApi
28
- from render.experimental.sandbox.client import SandboxClient
29
- from render.experimental.sandbox.client_sync import SyncSandboxClient
28
+ from render.experimental.sandbox.client import SandboxClient, SnapshotClient
29
+ from render.experimental.sandbox.client_sync import (
30
+ SyncSandboxClient,
31
+ SyncSnapshotClient,
32
+ )
30
33
 
31
34
  # All async/sync class pairs. Add new pairs here when creating a new service.
32
35
  ASYNC_SYNC_PAIRS = [
@@ -38,6 +41,7 @@ ASYNC_SYNC_PAIRS = [
38
41
  (ScopedObjectClient, SyncScopedObjectClient),
39
42
  (SandboxApi, SyncSandboxApi),
40
43
  (SandboxClient, SyncSandboxClient),
44
+ (SnapshotClient, SyncSnapshotClient),
41
45
  ]
42
46
 
43
47
  # Modules that contain async service classes. If you add a new module with
@@ -10,6 +10,7 @@ from render.client.util import (
10
10
  handle_http_error,
11
11
  handle_httpx_exception,
12
12
  handle_storage_http_error,
13
+ request_errors,
13
14
  retry_with_backoff,
14
15
  )
15
16
  from render.public_api.models.error import Error
@@ -159,6 +160,51 @@ def test_handle_api_error_extracts_message_from_content_when_parsed_is_none():
159
160
  handle_api_error(response, "API request")
160
161
 
161
162
 
163
+ def test_handle_api_error_sets_code_from_parsed_error():
164
+ response = Response(
165
+ status_code=409,
166
+ content=b"",
167
+ headers={},
168
+ parsed=Error(message="sandbox is suspended", code="sandbox_not_running"),
169
+ )
170
+ with pytest.raises(ClientError, match="sandbox is suspended") as excinfo:
171
+ handle_api_error(response, "create snapshot")
172
+ assert excinfo.value.code == "sandbox_not_running"
173
+
174
+
175
+ def test_handle_api_error_sets_code_from_content_when_parsed_is_none():
176
+ response = Response(
177
+ status_code=409,
178
+ content=b'{"message": "still creating", "code": "snapshot_creating"}',
179
+ headers={},
180
+ parsed=None,
181
+ )
182
+ with pytest.raises(ClientError) as excinfo:
183
+ handle_api_error(response, "delete snapshot")
184
+ assert excinfo.value.code == "snapshot_creating"
185
+
186
+
187
+ def test_handle_api_error_code_is_none_when_absent():
188
+ response = Response(
189
+ status_code=400, content=b"", headers={}, parsed=Error(message="Bad request")
190
+ )
191
+ with pytest.raises(ClientError) as excinfo:
192
+ handle_api_error(response, "API request")
193
+ assert excinfo.value.code is None
194
+
195
+
196
+ def test_handle_api_error_ignores_non_string_code_in_content():
197
+ response = Response(
198
+ status_code=409,
199
+ content=b'{"message": "still creating", "code": 409}',
200
+ headers={},
201
+ parsed=None,
202
+ )
203
+ with pytest.raises(ClientError) as excinfo:
204
+ handle_api_error(response, "delete snapshot")
205
+ assert excinfo.value.code is None
206
+
207
+
162
208
  def test_handle_api_error_fallback_when_content_is_not_json():
163
209
  """When parsed is None and content is not JSON, should use fallback message."""
164
210
  response = Response(
@@ -206,6 +252,32 @@ def test_handle_wrapper_exception_unexpected_error():
206
252
  _handle_wrapper_exception(exc, "op")
207
253
 
208
254
 
255
+ def test_request_errors_passes_through_when_nothing_is_raised():
256
+ with request_errors("op"):
257
+ pass
258
+
259
+
260
+ def test_request_errors_reraises_render_error():
261
+ with (
262
+ pytest.raises(ClientError, match="already a render error"),
263
+ request_errors("op"),
264
+ ):
265
+ raise ClientError("already a render error")
266
+
267
+
268
+ def test_request_errors_translates_httpx_request_error():
269
+ with pytest.raises(TimeoutError, match="op timed out"), request_errors("op"):
270
+ raise httpx.TimeoutException("timed out")
271
+
272
+
273
+ def test_request_errors_wraps_unexpected_error():
274
+ with (
275
+ pytest.raises(RenderError, match="failed with unexpected error: boom"),
276
+ request_errors("op"),
277
+ ):
278
+ raise ValueError("boom")
279
+
280
+
209
281
  class TestHandleStorageHttpError:
210
282
  """Tests for handle_storage_http_error function."""
211
283
 
@@ -77,28 +77,28 @@ def sync_workflows_service(client):
77
77
  @pytest.fixture
78
78
  def mock_cancel_task_run_sync(mocker):
79
79
  return mocker.patch(
80
- "render.public_api.api.workflow_tasks_beta.cancel_task_run.sync_detailed"
80
+ "render.public_api.api.workflow_tasks.cancel_task_run.sync_detailed"
81
81
  )
82
82
 
83
83
 
84
84
  @pytest.fixture
85
85
  def mock_list_task_runs_sync(mocker):
86
86
  return mocker.patch(
87
- "render.public_api.api.workflow_tasks_beta.list_task_runs.sync_detailed"
87
+ "render.public_api.api.workflow_tasks.list_task_runs.sync_detailed"
88
88
  )
89
89
 
90
90
 
91
91
  @pytest.fixture
92
92
  def mock_create_task_sync(mocker):
93
93
  return mocker.patch(
94
- "render.public_api.api.workflow_tasks_beta.create_task.sync_detailed"
94
+ "render.public_api.api.workflow_tasks.create_task.sync_detailed"
95
95
  )
96
96
 
97
97
 
98
98
  @pytest.fixture
99
99
  def mock_get_task_run_sync(mocker):
100
100
  return mocker.patch(
101
- "render.public_api.api.workflow_tasks_beta.get_task_run.sync_detailed"
101
+ "render.public_api.api.workflow_tasks.get_task_run.sync_detailed"
102
102
  )
103
103
 
104
104
 
@@ -117,6 +117,58 @@ def test_start_task_success(
117
117
  mock_create_task_sync.assert_called_once()
118
118
 
119
119
 
120
+ def test_start_task_omits_idempotency_key_when_not_given(
121
+ mock_create_task_sync, sync_workflows_service, mock_task_run
122
+ ):
123
+ mock_create_task_sync.return_value = Response(
124
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
125
+ )
126
+
127
+ sync_workflows_service.start_task("test-task", {"input": "data"})
128
+
129
+ body = mock_create_task_sync.call_args.kwargs["body"]
130
+ assert "idempotencyKey" not in body.to_dict()
131
+
132
+
133
+ def test_start_task_sends_idempotency_key(
134
+ mock_create_task_sync, sync_workflows_service, mock_task_run
135
+ ):
136
+ mock_create_task_sync.return_value = Response(
137
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
138
+ )
139
+
140
+ sync_workflows_service.start_task(
141
+ "test-task", {"input": "data"}, idempotency_key="order-42"
142
+ )
143
+
144
+ body = mock_create_task_sync.call_args.kwargs["body"]
145
+ assert body.to_dict()["idempotencyKey"] == "order-42"
146
+
147
+
148
+ def test_run_task_sends_idempotency_key(
149
+ mocker,
150
+ mock_create_task_sync,
151
+ sync_workflows_service,
152
+ mock_task_run,
153
+ mock_task_run_details,
154
+ ):
155
+ mock_create_task_sync.return_value = Response(
156
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
157
+ )
158
+ mocker.patch.object(
159
+ sync_workflows_service,
160
+ "_task_run_completed_with_sse",
161
+ return_value=mock_task_run_details,
162
+ )
163
+
164
+ sync_workflows_service.run_task(
165
+ "test-task", {"input": "data"}, idempotency_key="order-42"
166
+ )
167
+
168
+ body = mock_create_task_sync.call_args.kwargs["body"]
169
+ assert body.idempotency_key == "order-42"
170
+
171
+
120
172
  def test_start_task_failure(mock_create_task_sync, sync_workflows_service):
121
173
  """Test task start failure."""
122
174
 
@@ -4,7 +4,8 @@ import functools
4
4
  import json
5
5
  import logging
6
6
  from asyncio import sleep
7
- from collections.abc import Awaitable, Callable
7
+ from collections.abc import Awaitable, Callable, Generator
8
+ from contextlib import contextmanager
8
9
  from typing import TYPE_CHECKING, Any, NoReturn
9
10
 
10
11
  import httpx
@@ -194,6 +195,7 @@ def handle_api_error(
194
195
 
195
196
  message: str | None = None
196
197
  error_id: str | None = None
198
+ code: str | None = None
197
199
 
198
200
  # Try to extract error info from parsed response
199
201
  if isinstance(response.parsed, Error):
@@ -203,6 +205,9 @@ def handle_api_error(
203
205
  raw_id = getattr(response.parsed, "id", None)
204
206
  if raw_id is not None and not isinstance(raw_id, Unset):
205
207
  error_id = raw_id
208
+ raw_code = getattr(response.parsed, "code", None)
209
+ if raw_code is not None and not isinstance(raw_code, Unset):
210
+ code = raw_code
206
211
  elif response.parsed is None and response.content:
207
212
  # Parsed is None (e.g., 400 not handled) - try to extract from raw content
208
213
  try:
@@ -210,6 +215,8 @@ def handle_api_error(
210
215
  if isinstance(error_data, dict):
211
216
  message = error_data.get("message")
212
217
  error_id = error_data.get("id")
218
+ raw_code = error_data.get("code")
219
+ code = raw_code if isinstance(raw_code, str) else None
213
220
  except (json.JSONDecodeError, UnicodeDecodeError):
214
221
  pass
215
222
 
@@ -225,13 +232,13 @@ def handle_api_error(
225
232
 
226
233
  if response.status_code:
227
234
  if response.status_code == 429:
228
- raise RateLimitError(full_message)
235
+ raise RateLimitError(full_message, code=code)
229
236
  if response.status_code >= 400 and response.status_code < 500:
230
- raise ClientError(full_message)
237
+ raise ClientError(full_message, code=code)
231
238
  elif response.status_code >= 500:
232
239
  raise ServerError(full_message)
233
240
  else:
234
- raise ClientError(full_message)
241
+ raise ClientError(full_message, code=code)
235
242
 
236
243
 
237
244
  def _handle_wrapper_exception(exc: Exception, operation: str) -> NoReturn:
@@ -252,6 +259,21 @@ def _handle_wrapper_exception(exc: Exception, operation: str) -> NoReturn:
252
259
  raise RenderError(f"{operation} failed with unexpected error: {exc}") from exc
253
260
 
254
261
 
262
+ @contextmanager
263
+ def request_errors(operation: str) -> Generator[None, None, None]:
264
+ """
265
+ Context manager form of handle_http_errors for a single request.
266
+
267
+ Translates HTTPX exceptions and non-JSON responses raised inside the block
268
+ into custom exceptions. Unlike the decorator, it leaves the HTTP status of
269
+ the response to the caller.
270
+ """
271
+ try:
272
+ yield
273
+ except Exception as exc:
274
+ _handle_wrapper_exception(exc, operation)
275
+
276
+
255
277
  def handle_http_errors(operation: str):
256
278
  """
257
279
  Decorator that handles HTTPX exceptions and HTTP error responses.
@@ -16,6 +16,7 @@ from render.client.util import (
16
16
  handle_http_error,
17
17
  handle_httpx_exception,
18
18
  handle_storage_http_error,
19
+ request_errors,
19
20
  )
20
21
  from render.public_api.models.error import Error
21
22
  from render.public_api.types import Response
@@ -28,6 +29,7 @@ __all__ = [
28
29
  "handle_api_error",
29
30
  "handle_http_error",
30
31
  "handle_httpx_exception",
32
+ "request_errors",
31
33
  "handle_storage_http_error",
32
34
  ]
33
35
 
@@ -24,13 +24,13 @@ from render.client.util import (
24
24
  handle_httpx_exception,
25
25
  retry_with_backoff,
26
26
  )
27
- from render.public_api.api.workflow_tasks_beta import (
27
+ from render.public_api.api.workflow_tasks import (
28
28
  cancel_task_run,
29
29
  create_task,
30
30
  get_task_run,
31
31
  list_task_runs,
32
32
  )
33
- from render.public_api.api.workflow_tasks_beta.stream_task_runs_events import (
33
+ from render.public_api.api.workflow_tasks.stream_task_runs_events import (
34
34
  _get_kwargs,
35
35
  )
36
36
  from render.public_api.models.error import Error
@@ -184,6 +184,8 @@ class WorkflowsService:
184
184
  self,
185
185
  task_slug: TaskSlug,
186
186
  input_data: TaskData,
187
+ *,
188
+ idempotency_key: str | None = None,
187
189
  ) -> AwaitableTaskRun:
188
190
  """Start a task and return an awaitable task run without waiting for completion.
189
191
 
@@ -203,6 +205,9 @@ class WorkflowsService:
203
205
  input_data: The input data for the task. Can be either:
204
206
  - A list for positional arguments: [arg1, arg2, arg3]
205
207
  - A dict for named parameters: {"param1": value1, "param2": value2}
208
+ idempotency_key: Optional client-generated key that makes this call safe
209
+ to retry. Repeating a call with the same key within 24 hours returns
210
+ the task run the first call started instead of starting another one.
206
211
 
207
212
  Returns:
208
213
  AwaitableTaskRun: A task run that can be awaited for the result
@@ -212,7 +217,11 @@ class WorkflowsService:
212
217
  ServerError: For 5xx server errors and network failures
213
218
  TimeoutError: If the request times out
214
219
  """
215
- response = (await self._create_task_api_call(task_slug, input_data)).parsed
220
+ response = (
221
+ await self._create_task_api_call(
222
+ task_slug, input_data, idempotency_key=idempotency_key
223
+ )
224
+ ).parsed
216
225
 
217
226
  return AwaitableTaskRun(response, self)
218
227
 
@@ -220,6 +229,8 @@ class WorkflowsService:
220
229
  self,
221
230
  task_slug: TaskSlug,
222
231
  input_data: TaskData,
232
+ *,
233
+ idempotency_key: str | None = None,
223
234
  ) -> TaskRunDetails:
224
235
  """Start a task and wait for it to complete, returning the result.
225
236
 
@@ -231,6 +242,9 @@ class WorkflowsService:
231
242
  input_data: The input data for the task. Can be either:
232
243
  - A list for positional arguments: [arg1, arg2, arg3]
233
244
  - A dict for named parameters: {"param1": value1, "param2": value2}
245
+ idempotency_key: Optional client-generated key that makes this call safe
246
+ to retry. Repeating a call with the same key within 24 hours returns
247
+ the task run the first call started instead of starting another one.
234
248
 
235
249
  Returns:
236
250
  TaskRunDetails: The completed task run details
@@ -241,12 +255,18 @@ class WorkflowsService:
241
255
  TimeoutError: If the request times out
242
256
  TaskRunError: If the task run fails with an error
243
257
  """
244
- task_run = await self.start_task(task_slug, input_data)
258
+ task_run = await self.start_task(
259
+ task_slug, input_data, idempotency_key=idempotency_key
260
+ )
245
261
  return await task_run
246
262
 
247
263
  @handle_http_errors("create task")
248
264
  async def _create_task_api_call(
249
- self, task_slug: TaskSlug, input_data: TaskData
265
+ self,
266
+ task_slug: TaskSlug,
267
+ input_data: TaskData,
268
+ *,
269
+ idempotency_key: str | None = None,
250
270
  ) -> Response[Error | TaskRun]:
251
271
  """Internal method to make the create task API call."""
252
272
  # Convert dict to TaskDataType1 for named parameters
@@ -260,6 +280,7 @@ class WorkflowsService:
260
280
  run_task = RunTask(
261
281
  task=task_slug,
262
282
  input_=task_data_input,
283
+ idempotency_key=idempotency_key if idempotency_key is not None else UNSET,
263
284
  )
264
285
 
265
286
  # Make the API call