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