render 1.2.0__tar.gz → 1.4.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 (891) hide show
  1. {render-1.2.0 → render-1.4.0}/CHANGELOG.md +27 -0
  2. {render-1.2.0 → render-1.4.0}/PKG-INFO +2 -2
  3. {render-1.2.0 → render-1.4.0}/README.md +1 -1
  4. {render-1.2.0 → render-1.4.0}/pyproject.toml +1 -1
  5. {render-1.2.0 → render-1.4.0}/render/__init__.py +6 -1
  6. render-1.4.0/render/_startup.py +34 -0
  7. render-1.4.0/render/experimental/object/tests/rate_limit.py +59 -0
  8. {render-1.2.0 → render-1.4.0}/render/experimental/object/tests/test_e2e.py +14 -12
  9. render-1.4.0/render/experimental/object/tests/test_rate_limit.py +75 -0
  10. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/__init__.py +4 -0
  11. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/api.py +56 -14
  12. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/api_sync.py +56 -14
  13. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/client.py +13 -4
  14. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/client_sync.py +13 -4
  15. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/test_client.py +183 -4
  16. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/test_e2e.py +91 -0
  17. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/test_snapshots.py +43 -4
  18. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/test_types.py +11 -2
  19. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/types.py +27 -1
  20. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/list_blueprint_syncs.py +4 -0
  21. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/update_blueprint.py +5 -0
  22. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/list_builds_in_build_source.py +20 -16
  23. render-1.4.0/render/public_api/api/build_sources/retrieve_build_source_build.py +213 -0
  24. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/connect_sandbox_files.py +8 -0
  25. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/connect_sandbox_run.py +8 -0
  26. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/create_sandbox.py +20 -0
  27. render-1.4.0/render/public_api/api/sandboxes/create_sandbox_group_credential.py +242 -0
  28. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/create_sandbox_snapshot.py +8 -4
  29. render-1.4.0/render/public_api/api/sandboxes/delete_sandbox_group_credential.py +223 -0
  30. render-1.4.0/render/public_api/api/sandboxes/list_sandbox_group_credential_versions.py +242 -0
  31. render-1.4.0/render/public_api/api/sandboxes/list_sandbox_group_credentials.py +204 -0
  32. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/list_sandbox_groups.py +4 -8
  33. render-1.4.0/render/public_api/api/sandboxes/restore_sandbox_group_credential.py +271 -0
  34. render-1.4.0/render/public_api/api/sandboxes/retrieve_sandbox_group_credential.py +224 -0
  35. render-1.4.0/render/public_api/api/sandboxes/update_sandbox_group_credential.py +299 -0
  36. render-1.4.0/render/public_api/api/workflow_flows/cancel_flow_run.py +193 -0
  37. render-1.4.0/render/public_api/api/workflow_flows/get_flow.py +190 -0
  38. render-1.4.0/render/public_api/api/workflow_flows/get_flow_run.py +195 -0
  39. render-1.4.0/render/public_api/api/workflow_flows/get_flow_run_step.py +208 -0
  40. render-1.4.0/render/public_api/api/workflow_flows/list_flow_run_steps.py +236 -0
  41. render-1.4.0/render/public_api/api/workflow_flows/list_flow_runs.py +345 -0
  42. render-1.4.0/render/public_api/api/workflow_flows/list_flows.py +303 -0
  43. render-1.4.0/render/public_api/api/workflow_flows/start_flow_run.py +204 -0
  44. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/cancel_task_run.py +5 -0
  45. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/get_task_run.py +5 -0
  46. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/list_task_runs.py +5 -0
  47. render-1.4.0/render/public_api/api/workspaces/__init__.py +1 -0
  48. {render-1.2.0 → render-1.4.0}/render/public_api/models/__init__.py +54 -14
  49. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log_event.py +2 -0
  50. {render-1.2.0 → render-1.4.0}/render/public_api/models/auto_deploy_disabled.py +6 -2
  51. {render-1.2.0 → render-1.4.0}/render/public_api/models/auto_deploy_enabled.py +6 -2
  52. {render-1.2.0 → render-1.4.0}/render/public_api/models/background_worker_details_post.py +17 -12
  53. {render-1.2.0 → render-1.4.0}/render/public_api/models/blueprint_patch.py +12 -0
  54. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_git.py +10 -9
  55. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_patch_git.py +10 -9
  56. render-1.4.0/render/public_api/models/build_with_cursor.py +73 -0
  57. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_details_post.py +16 -8
  58. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_run.py +1 -1
  59. {render-1.2.0 → render-1.4.0}/render/public_api/models/error_code.py +2 -0
  60. render-1.4.0/render/public_api/models/flow.py +97 -0
  61. render-1.4.0/render/public_api/models/flow_input_type_1.py +44 -0
  62. render-1.4.0/render/public_api/models/flow_run.py +112 -0
  63. render-1.4.0/render/public_api/models/flow_run_attempt.py +113 -0
  64. render-1.4.0/render/public_api/models/flow_run_details.py +183 -0
  65. render-1.4.0/render/public_api/models/flow_run_status.py +13 -0
  66. render-1.4.0/render/public_api/models/flow_run_step.py +158 -0
  67. render-1.4.0/render/public_api/models/flow_run_step_attempt.py +93 -0
  68. render-1.4.0/render/public_api/models/flow_run_step_details.py +209 -0
  69. render-1.4.0/render/public_api/models/flow_run_step_status.py +10 -0
  70. render-1.4.0/render/public_api/models/flow_run_step_type.py +10 -0
  71. render-1.4.0/render/public_api/models/flow_run_step_with_cursor.py +73 -0
  72. render-1.4.0/render/public_api/models/flow_run_with_cursor.py +73 -0
  73. render-1.4.0/render/public_api/models/flow_with_cursor.py +73 -0
  74. {render-1.2.0 → render-1.4.0}/render/public_api/models/private_service_details_post.py +17 -12
  75. {render-1.2.0 → render-1.4.0}/render/public_api/models/run_task.py +2 -3
  76. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox.py +28 -5
  77. render-1.4.0/render/public_api/models/sandbox_credential.py +133 -0
  78. render-1.4.0/render/public_api/models/sandbox_credential_create.py +128 -0
  79. render-1.4.0/render/public_api/models/sandbox_credential_injection.py +86 -0
  80. render-1.4.0/render/public_api/models/sandbox_credential_injection_type.py +11 -0
  81. render-1.4.0/render/public_api/models/sandbox_credential_restore.py +59 -0
  82. render-1.4.0/render/public_api/models/sandbox_credential_update.py +129 -0
  83. render-1.4.0/render/public_api/models/sandbox_credential_version.py +100 -0
  84. render-1.4.0/render/public_api/models/sandbox_egress_rule.py +83 -0
  85. render-1.4.0/render/public_api/models/sandbox_egress_rule_protocol.py +8 -0
  86. render-1.4.0/render/public_api/models/sandbox_network_policy.py +106 -0
  87. render-1.4.0/render/public_api/models/sandbox_network_policy_post.py +113 -0
  88. render-1.2.0/render/public_api/models/sandbox_network_policy_default.py → render-1.4.0/render/public_api/models/sandbox_network_policy_type.py +1 -1
  89. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_plan.py +4 -0
  90. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_post.py +43 -20
  91. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_snapshot.py +19 -4
  92. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_snapshot_post.py +2 -2
  93. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_status.py +1 -0
  94. {render-1.2.0 → render-1.4.0}/render/public_api/models/service.py +11 -3
  95. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_event_with_cursor.py +8 -0
  96. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_patch.py +11 -3
  97. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_post.py +11 -3
  98. render-1.4.0/render/public_api/models/start_flow_run.py +110 -0
  99. {render-1.2.0 → render-1.4.0}/render/public_api/models/web_service_details_post.py +17 -12
  100. {render-1.2.0 → render-1.4.0}/render/workflows/client.py +2 -1
  101. {render-1.2.0 → render-1.4.0}/render/workflows/runner.py +2 -0
  102. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_client.py +30 -0
  103. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_end_to_end.py +1 -0
  104. render-1.4.0/render/workflows/tests/test_startup.py +43 -0
  105. render-1.4.0/uv.lock +2231 -0
  106. render-1.2.0/example/task/.claude/settings.local.json +0 -7
  107. render-1.2.0/render/public_api/api/blueprints/create_blueprint.py +0 -244
  108. render-1.2.0/render/public_api/api/sandboxes/update_sandbox_exec.py +0 -258
  109. render-1.2.0/render/public_api/models/blueprint_source.py +0 -79
  110. render-1.2.0/render/public_api/models/create_blueprint_request.py +0 -118
  111. render-1.2.0/render/public_api/models/create_blueprint_response.py +0 -76
  112. render-1.2.0/render/public_api/models/existing_resource_mode.py +0 -9
  113. render-1.2.0/render/public_api/models/sandbox_exec_update_request.py +0 -60
  114. render-1.2.0/render/public_api/models/sandbox_exec_update_response.py +0 -130
  115. render-1.2.0/render/public_api/models/sandbox_network_policy.py +0 -80
  116. render-1.2.0/uv.lock +0 -1945
  117. {render-1.2.0 → render-1.4.0}/.gitignore +0 -0
  118. {render-1.2.0 → render-1.4.0}/.python-version +0 -0
  119. {render-1.2.0 → render-1.4.0}/LICENSE +0 -0
  120. {render-1.2.0 → render-1.4.0}/example/__init__.py +0 -0
  121. {render-1.2.0 → render-1.4.0}/example/client/__init__.py +0 -0
  122. {render-1.2.0 → render-1.4.0}/example/client/async_main.py +0 -0
  123. {render-1.2.0 → render-1.4.0}/example/client/main.py +0 -0
  124. {render-1.2.0 → render-1.4.0}/example/sandbox/__init__.py +0 -0
  125. {render-1.2.0 → render-1.4.0}/example/sandbox/main.py +0 -0
  126. {render-1.2.0 → render-1.4.0}/example/task/__init__.py +0 -0
  127. {render-1.2.0 → render-1.4.0}/example/task/main.py +0 -0
  128. {render-1.2.0 → render-1.4.0}/render/client/__init__.py +0 -0
  129. {render-1.2.0 → render-1.4.0}/render/client/client.py +0 -0
  130. {render-1.2.0 → render-1.4.0}/render/client/errors.py +0 -0
  131. {render-1.2.0 → render-1.4.0}/render/client/sse.py +0 -0
  132. {render-1.2.0 → render-1.4.0}/render/client/sse_sync.py +0 -0
  133. {render-1.2.0 → render-1.4.0}/render/client/tests/__init__.py +0 -0
  134. {render-1.2.0 → render-1.4.0}/render/client/tests/test_client.py +0 -0
  135. {render-1.2.0 → render-1.4.0}/render/client/tests/test_method_parity.py +0 -0
  136. {render-1.2.0 → render-1.4.0}/render/client/tests/test_render.py +0 -0
  137. {render-1.2.0 → render-1.4.0}/render/client/tests/test_sse.py +0 -0
  138. {render-1.2.0 → render-1.4.0}/render/client/tests/test_util.py +0 -0
  139. {render-1.2.0 → render-1.4.0}/render/client/tests/test_util_sync.py +0 -0
  140. {render-1.2.0 → render-1.4.0}/render/client/tests/test_workflows_sync.py +0 -0
  141. {render-1.2.0 → render-1.4.0}/render/client/types.py +0 -0
  142. {render-1.2.0 → render-1.4.0}/render/client/util.py +0 -0
  143. {render-1.2.0 → render-1.4.0}/render/client/util_sync.py +0 -0
  144. {render-1.2.0 → render-1.4.0}/render/client/workflows.py +0 -0
  145. {render-1.2.0 → render-1.4.0}/render/client/workflows_sync.py +0 -0
  146. {render-1.2.0 → render-1.4.0}/render/experimental/__init__.py +0 -0
  147. {render-1.2.0 → render-1.4.0}/render/experimental/experimental.py +0 -0
  148. {render-1.2.0 → render-1.4.0}/render/experimental/experimental_sync.py +0 -0
  149. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/__init__.py +0 -0
  150. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/api.py +0 -0
  151. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/compare.py +0 -0
  152. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/provider.py +0 -0
  153. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/tests/__init__.py +0 -0
  154. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/tests/test_api.py +0 -0
  155. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/tests/test_compare.py +0 -0
  156. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/tests/test_provider.py +0 -0
  157. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/tests/test_types.py +0 -0
  158. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/types.py +0 -0
  159. {render-1.2.0 → render-1.4.0}/render/experimental/key_value/utils.py +0 -0
  160. {render-1.2.0 → render-1.4.0}/render/experimental/object/__init__.py +0 -0
  161. {render-1.2.0 → render-1.4.0}/render/experimental/object/api.py +0 -0
  162. {render-1.2.0 → render-1.4.0}/render/experimental/object/api_sync.py +0 -0
  163. {render-1.2.0 → render-1.4.0}/render/experimental/object/client.py +0 -0
  164. {render-1.2.0 → render-1.4.0}/render/experimental/object/client_sync.py +0 -0
  165. {render-1.2.0 → render-1.4.0}/render/experimental/object/e2e_helpers.py +0 -0
  166. {render-1.2.0 → render-1.4.0}/render/experimental/object/tests/__init__.py +0 -0
  167. {render-1.2.0 → render-1.4.0}/render/experimental/object/tests/test_client.py +0 -0
  168. {render-1.2.0 → render-1.4.0}/render/experimental/object/types.py +0 -0
  169. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/_tar.py +0 -0
  170. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/errors.py +0 -0
  171. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/files.py +0 -0
  172. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/__init__.py +0 -0
  173. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/test_download.py +0 -0
  174. {render-1.2.0 → render-1.4.0}/render/experimental/sandbox/tests/test_tar.py +0 -0
  175. {render-1.2.0 → render-1.4.0}/render/public_api/__init__.py +0 -0
  176. {render-1.2.0 → render-1.4.0}/render/public_api/api/__init__.py +0 -0
  177. {render-1.2.0 → render-1.4.0}/render/public_api/api/audit_logs/__init__.py +0 -0
  178. {render-1.2.0 → render-1.4.0}/render/public_api/api/audit_logs/list_organization_audit_logs.py +0 -0
  179. {render-1.2.0 → render-1.4.0}/render/public_api/api/audit_logs/list_owner_audit_logs.py +0 -0
  180. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/__init__.py +0 -0
  181. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/disconnect_blueprint.py +0 -0
  182. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/list_blueprints.py +0 -0
  183. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/retrieve_blueprint.py +0 -0
  184. {render-1.2.0 → render-1.4.0}/render/public_api/api/blueprints/validate_blueprint.py +0 -0
  185. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/__init__.py +0 -0
  186. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/add_or_update_build_source_secret_file.py +0 -0
  187. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/create_build_source.py +0 -0
  188. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/delete_build_source.py +0 -0
  189. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/delete_build_source_env_var.py +0 -0
  190. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/delete_build_source_secret_file.py +0 -0
  191. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/get_build_source.py +0 -0
  192. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/get_env_vars_for_build_source.py +0 -0
  193. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/link_env_group_to_build_source.py +0 -0
  194. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/list_build_sources.py +0 -0
  195. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/list_secret_files_for_build_source.py +0 -0
  196. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/retrieve_build_source_env_var.py +0 -0
  197. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/retrieve_build_source_secret_file.py +0 -0
  198. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/trigger_build_source_build.py +0 -0
  199. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/unlink_env_group_from_build_source.py +0 -0
  200. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/update_build_source.py +0 -0
  201. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/update_build_source_env_var.py +0 -0
  202. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/update_env_vars_for_build_source.py +0 -0
  203. {render-1.2.0 → render-1.4.0}/render/public_api/api/build_sources/update_secret_files_for_build_source.py +0 -0
  204. {render-1.2.0 → render-1.4.0}/render/public_api/api/custom_domains/__init__.py +0 -0
  205. {render-1.2.0 → render-1.4.0}/render/public_api/api/custom_domains/create_custom_domain.py +0 -0
  206. {render-1.2.0 → render-1.4.0}/render/public_api/api/custom_domains/delete_custom_domain.py +0 -0
  207. {render-1.2.0 → render-1.4.0}/render/public_api/api/custom_domains/list_custom_domains.py +0 -0
  208. {render-1.2.0 → render-1.4.0}/render/public_api/api/custom_domains/refresh_custom_domain.py +0 -0
  209. {render-1.2.0 → render-1.4.0}/render/public_api/api/custom_domains/retrieve_custom_domain.py +0 -0
  210. {render-1.2.0 → render-1.4.0}/render/public_api/api/dedicated_i_ps/__init__.py +0 -0
  211. {render-1.2.0 → render-1.4.0}/render/public_api/api/dedicated_i_ps/create_dedicated_ip.py +0 -0
  212. {render-1.2.0 → render-1.4.0}/render/public_api/api/dedicated_i_ps/delete_dedicated_ip.py +0 -0
  213. {render-1.2.0 → render-1.4.0}/render/public_api/api/dedicated_i_ps/list_dedicated_ips.py +0 -0
  214. {render-1.2.0 → render-1.4.0}/render/public_api/api/dedicated_i_ps/retrieve_dedicated_ip.py +0 -0
  215. {render-1.2.0 → render-1.4.0}/render/public_api/api/dedicated_i_ps/update_dedicated_ip.py +0 -0
  216. {render-1.2.0 → render-1.4.0}/render/public_api/api/deploys/__init__.py +0 -0
  217. {render-1.2.0 → render-1.4.0}/render/public_api/api/deploys/cancel_deploy.py +0 -0
  218. {render-1.2.0 → render-1.4.0}/render/public_api/api/deploys/create_deploy.py +0 -0
  219. {render-1.2.0 → render-1.4.0}/render/public_api/api/deploys/list_deploys.py +0 -0
  220. {render-1.2.0 → render-1.4.0}/render/public_api/api/deploys/retrieve_deploy.py +0 -0
  221. {render-1.2.0 → render-1.4.0}/render/public_api/api/deploys/rollback_deploy.py +0 -0
  222. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/__init__.py +0 -0
  223. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/add_disk.py +0 -0
  224. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/delete_disk.py +0 -0
  225. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/list_disks.py +0 -0
  226. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/list_snapshots.py +0 -0
  227. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/restore_snapshot.py +0 -0
  228. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/retrieve_disk.py +0 -0
  229. {render-1.2.0 → render-1.4.0}/render/public_api/api/disks/update_disk.py +0 -0
  230. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/__init__.py +0 -0
  231. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/create_env_group.py +0 -0
  232. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/delete_env_group.py +0 -0
  233. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/delete_env_group_env_var.py +0 -0
  234. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/delete_env_group_secret_file.py +0 -0
  235. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/link_service_to_env_group.py +0 -0
  236. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/list_env_groups.py +0 -0
  237. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/retrieve_env_group.py +0 -0
  238. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/retrieve_env_group_env_var.py +0 -0
  239. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/retrieve_env_group_secret_file.py +0 -0
  240. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/unlink_service_from_env_group.py +0 -0
  241. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/update_env_group.py +0 -0
  242. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/update_env_group_env_var.py +0 -0
  243. {render-1.2.0 → render-1.4.0}/render/public_api/api/environment_groups/update_env_group_secret_file.py +0 -0
  244. {render-1.2.0 → render-1.4.0}/render/public_api/api/events/__init__.py +0 -0
  245. {render-1.2.0 → render-1.4.0}/render/public_api/api/events/retrieve_event.py +0 -0
  246. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/__init__.py +0 -0
  247. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/create_key_value.py +0 -0
  248. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/delete_key_value.py +0 -0
  249. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/list_key_value.py +0 -0
  250. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/resume_key_value.py +0 -0
  251. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/retrieve_key_value.py +0 -0
  252. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/retrieve_key_value_connection_info.py +0 -0
  253. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/suspend_key_value.py +0 -0
  254. {render-1.2.0 → render-1.4.0}/render/public_api/api/key_value/update_key_value.py +0 -0
  255. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/__init__.py +0 -0
  256. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/delete_owner_log_stream.py +0 -0
  257. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/delete_resource_log_stream.py +0 -0
  258. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/get_owner_log_stream.py +0 -0
  259. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/get_resource_log_stream.py +0 -0
  260. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/list_logs.py +0 -0
  261. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/list_logs_values.py +0 -0
  262. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/list_resource_log_streams.py +0 -0
  263. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/subscribe_logs.py +0 -0
  264. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/update_owner_log_stream.py +0 -0
  265. {render-1.2.0 → render-1.4.0}/render/public_api/api/logs/update_resource_log_stream.py +0 -0
  266. {render-1.2.0 → render-1.4.0}/render/public_api/api/maintenance/__init__.py +0 -0
  267. {render-1.2.0 → render-1.4.0}/render/public_api/api/maintenance/list_maintenance.py +0 -0
  268. {render-1.2.0 → render-1.4.0}/render/public_api/api/maintenance/retrieve_maintenance.py +0 -0
  269. {render-1.2.0 → render-1.4.0}/render/public_api/api/maintenance/trigger_maintenance.py +0 -0
  270. {render-1.2.0 → render-1.4.0}/render/public_api/api/maintenance/update_maintenance.py +0 -0
  271. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/__init__.py +0 -0
  272. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/delete_owner_metrics_stream.py +0 -0
  273. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_active_connections.py +0 -0
  274. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_bandwidth.py +0 -0
  275. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_bandwidth_sources.py +0 -0
  276. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_cpu.py +0 -0
  277. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_cpu_limit.py +0 -0
  278. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_cpu_target.py +0 -0
  279. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_disk_capacity.py +0 -0
  280. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_disk_usage.py +0 -0
  281. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_http_latency.py +0 -0
  282. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_http_requests.py +0 -0
  283. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_instance_count.py +0 -0
  284. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_memory.py +0 -0
  285. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_memory_limit.py +0 -0
  286. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_memory_target.py +0 -0
  287. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_owner_metrics_stream.py +0 -0
  288. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_replication_lag.py +0 -0
  289. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_task_runs_completed.py +0 -0
  290. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/get_task_runs_queued.py +0 -0
  291. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/list_application_filter_values.py +0 -0
  292. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/list_http_filter_values.py +0 -0
  293. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/list_path_filter_values.py +0 -0
  294. {render-1.2.0 → render-1.4.0}/render/public_api/api/metrics/upsert_owner_metrics_stream.py +0 -0
  295. {render-1.2.0 → render-1.4.0}/render/public_api/api/notification_settings/__init__.py +0 -0
  296. {render-1.2.0 → render-1.4.0}/render/public_api/api/notification_settings/list_notification_overrides.py +0 -0
  297. {render-1.2.0 → render-1.4.0}/render/public_api/api/notification_settings/patch_owner_notification_settings.py +0 -0
  298. {render-1.2.0 → render-1.4.0}/render/public_api/api/notification_settings/patch_service_notification_overrides.py +0 -0
  299. {render-1.2.0 → render-1.4.0}/render/public_api/api/notification_settings/retrieve_owner_notification_settings.py +0 -0
  300. {render-1.2.0 → render-1.4.0}/render/public_api/api/notification_settings/retrieve_service_notification_overrides.py +0 -0
  301. {render-1.2.0 → render-1.4.0}/render/public_api/api/object_storage/__init__.py +0 -0
  302. {render-1.2.0 → render-1.4.0}/render/public_api/api/object_storage/delete_object.py +0 -0
  303. {render-1.2.0 → render-1.4.0}/render/public_api/api/object_storage/get_object.py +0 -0
  304. {render-1.2.0 → render-1.4.0}/render/public_api/api/object_storage/list_objects.py +0 -0
  305. {render-1.2.0 → render-1.4.0}/render/public_api/api/object_storage/put_object.py +0 -0
  306. {render-1.2.0 → render-1.4.0}/render/public_api/api/one_off_jobs/__init__.py +0 -0
  307. {render-1.2.0 → render-1.4.0}/render/public_api/api/one_off_jobs/cancel_job.py +0 -0
  308. {render-1.2.0 → render-1.4.0}/render/public_api/api/one_off_jobs/list_job.py +0 -0
  309. {render-1.2.0 → render-1.4.0}/render/public_api/api/one_off_jobs/post_job.py +0 -0
  310. {render-1.2.0 → render-1.4.0}/render/public_api/api/one_off_jobs/retrieve_job.py +0 -0
  311. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/__init__.py +0 -0
  312. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/create_postgres.py +0 -0
  313. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/create_postgres_export.py +0 -0
  314. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/create_postgres_user.py +0 -0
  315. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/delete_postgres.py +0 -0
  316. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/delete_postgres_user.py +0 -0
  317. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/failover_postgres.py +0 -0
  318. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_available_postgres_parameter_overrides.py +0 -0
  319. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres.py +0 -0
  320. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_export.py +0 -0
  321. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_parameter_overrides.py +0 -0
  322. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_processes.py +0 -0
  323. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_sizes.py +0 -0
  324. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_table_scans.py +0 -0
  325. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_top_queries.py +0 -0
  326. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/list_postgres_users.py +0 -0
  327. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/promote_postgres.py +0 -0
  328. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/recover_postgres.py +0 -0
  329. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/restart_postgres.py +0 -0
  330. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/resume_postgres.py +0 -0
  331. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/retrieve_postgres.py +0 -0
  332. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/retrieve_postgres_connection_info.py +0 -0
  333. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/retrieve_postgres_recovery_info.py +0 -0
  334. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/setup_postgres_replication.py +0 -0
  335. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/suspend_postgres.py +0 -0
  336. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/update_postgres.py +0 -0
  337. {render-1.2.0 → render-1.4.0}/render/public_api/api/postgres/update_postgres_parameter_overrides.py +0 -0
  338. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/__init__.py +0 -0
  339. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/add_resources_to_environment.py +0 -0
  340. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/create_environment.py +0 -0
  341. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/create_project.py +0 -0
  342. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/delete_environment.py +0 -0
  343. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/delete_project.py +0 -0
  344. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/list_environments.py +0 -0
  345. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/list_projects.py +0 -0
  346. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/remove_resources_from_environment.py +0 -0
  347. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/retrieve_environment.py +0 -0
  348. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/retrieve_project.py +0 -0
  349. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/update_environment.py +0 -0
  350. {render-1.2.0 → render-1.4.0}/render/public_api/api/projects_environments/update_project.py +0 -0
  351. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/__init__.py +0 -0
  352. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/create_redis.py +0 -0
  353. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/delete_redis.py +0 -0
  354. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/list_redis.py +0 -0
  355. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/resume_redis.py +0 -0
  356. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/retrieve_redis.py +0 -0
  357. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/retrieve_redis_connection_info.py +0 -0
  358. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/suspend_redis.py +0 -0
  359. {render-1.2.0 → render-1.4.0}/render/public_api/api/redis_deprecated/update_redis.py +0 -0
  360. {render-1.2.0 → render-1.4.0}/render/public_api/api/registry_credentials/__init__.py +0 -0
  361. {render-1.2.0 → render-1.4.0}/render/public_api/api/registry_credentials/create_registry_credential.py +0 -0
  362. {render-1.2.0 → render-1.4.0}/render/public_api/api/registry_credentials/delete_registry_credential.py +0 -0
  363. {render-1.2.0 → render-1.4.0}/render/public_api/api/registry_credentials/list_registry_credentials.py +0 -0
  364. {render-1.2.0 → render-1.4.0}/render/public_api/api/registry_credentials/retrieve_registry_credential.py +0 -0
  365. {render-1.2.0 → render-1.4.0}/render/public_api/api/registry_credentials/update_registry_credential.py +0 -0
  366. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/__init__.py +0 -0
  367. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/delete_sandbox_snapshot.py +0 -0
  368. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/list_sandbox_executions.py +0 -0
  369. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/list_sandbox_files.py +0 -0
  370. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/list_sandbox_snapshots.py +0 -0
  371. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/list_sandboxes.py +0 -0
  372. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/retrieve_sandbox.py +0 -0
  373. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/retrieve_sandbox_execution.py +0 -0
  374. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/retrieve_sandbox_snapshot.py +0 -0
  375. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/stream_sandbox_logs.py +0 -0
  376. {render-1.2.0 → render-1.4.0}/render/public_api/api/sandboxes/terminate_sandbox.py +0 -0
  377. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/__init__.py +0 -0
  378. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/add_or_update_secret_file.py +0 -0
  379. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/autoscale_service.py +0 -0
  380. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/create_ephemeral_shell.py +0 -0
  381. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/create_service.py +0 -0
  382. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/delete_autoscaling_config.py +0 -0
  383. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/delete_env_var.py +0 -0
  384. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/delete_secret_file.py +0 -0
  385. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/delete_service.py +0 -0
  386. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/get_env_vars_for_service.py +0 -0
  387. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/list_events.py +0 -0
  388. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/list_instances.py +0 -0
  389. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/list_secret_files_for_service.py +0 -0
  390. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/list_services.py +0 -0
  391. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/preview_service.py +0 -0
  392. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/purge_cache.py +0 -0
  393. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/restart_service.py +0 -0
  394. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/resume_service.py +0 -0
  395. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/retrieve_env_var.py +0 -0
  396. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/retrieve_secret_file.py +0 -0
  397. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/retrieve_service.py +0 -0
  398. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/retrieve_service_outbound_ips.py +0 -0
  399. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/scale_service.py +0 -0
  400. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/suspend_service.py +0 -0
  401. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/update_env_var.py +0 -0
  402. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/update_env_vars_for_service.py +0 -0
  403. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/update_secret_files_for_service.py +0 -0
  404. {render-1.2.0 → render-1.4.0}/render/public_api/api/services/update_service.py +0 -0
  405. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_cron_jobs/__init__.py +0 -0
  406. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_cron_jobs/cancel_cron_job_run.py +0 -0
  407. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_cron_jobs/run_cron_job.py +0 -0
  408. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_headers/__init__.py +0 -0
  409. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_headers/add_headers.py +0 -0
  410. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_headers/delete_header.py +0 -0
  411. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_headers/list_headers.py +0 -0
  412. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_headers/update_headers.py +0 -0
  413. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_routes/__init__.py +0 -0
  414. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_routes/add_route.py +0 -0
  415. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_routes/delete_route.py +0 -0
  416. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_routes/list_routes.py +0 -0
  417. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_routes/patch_route.py +0 -0
  418. {render-1.2.0 → render-1.4.0}/render/public_api/api/services_routes/put_routes.py +0 -0
  419. {render-1.2.0 → render-1.4.0}/render/public_api/api/users/__init__.py +0 -0
  420. {render-1.2.0 → render-1.4.0}/render/public_api/api/users/get_user.py +0 -0
  421. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/__init__.py +0 -0
  422. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/create_webhook.py +0 -0
  423. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/delete_webhook.py +0 -0
  424. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/list_webhook_events.py +0 -0
  425. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/list_webhooks.py +0 -0
  426. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/retrieve_webhook.py +0 -0
  427. {render-1.2.0 → render-1.4.0}/render/public_api/api/webhooks/update_webhook.py +0 -0
  428. {render-1.2.0/render/public_api/api/workflow_tasks → render-1.4.0/render/public_api/api/workflow_flows}/__init__.py +0 -0
  429. {render-1.2.0/render/public_api/api/workflows → render-1.4.0/render/public_api/api/workflow_tasks}/__init__.py +0 -0
  430. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/create_task.py +0 -0
  431. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/get_task.py +0 -0
  432. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/list_tasks.py +0 -0
  433. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflow_tasks/stream_task_runs_events.py +0 -0
  434. {render-1.2.0/render/public_api/api/workspaces → render-1.4.0/render/public_api/api/workflows}/__init__.py +0 -0
  435. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/create_workflow.py +0 -0
  436. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/create_workflow_version.py +0 -0
  437. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/delete_workflow.py +0 -0
  438. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/get_workflow.py +0 -0
  439. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/get_workflow_version.py +0 -0
  440. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/list_workflow_versions.py +0 -0
  441. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/list_workflows.py +0 -0
  442. {render-1.2.0 → render-1.4.0}/render/public_api/api/workflows/update_workflow.py +0 -0
  443. {render-1.2.0 → render-1.4.0}/render/public_api/api/workspaces/list_owners.py +0 -0
  444. {render-1.2.0 → render-1.4.0}/render/public_api/api/workspaces/remove_workspace_member.py +0 -0
  445. {render-1.2.0 → render-1.4.0}/render/public_api/api/workspaces/retrieve_owner.py +0 -0
  446. {render-1.2.0 → render-1.4.0}/render/public_api/api/workspaces/retrieve_owner_members.py +0 -0
  447. {render-1.2.0 → render-1.4.0}/render/public_api/api/workspaces/update_workspace_member.py +0 -0
  448. {render-1.2.0 → render-1.4.0}/render/public_api/client.py +0 -0
  449. {render-1.2.0 → render-1.4.0}/render/public_api/errors.py +0 -0
  450. {render-1.2.0 → render-1.4.0}/render/public_api/models/add_headers_response_201.py +0 -0
  451. {render-1.2.0 → render-1.4.0}/render/public_api/models/add_or_update_build_source_secret_file_body.py +0 -0
  452. {render-1.2.0 → render-1.4.0}/render/public_api/models/add_or_update_secret_file_body.py +0 -0
  453. {render-1.2.0 → render-1.4.0}/render/public_api/models/artifact_fetch_failed.py +0 -0
  454. {render-1.2.0 → render-1.4.0}/render/public_api/models/artifact_source_changed.py +0 -0
  455. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log.py +0 -0
  456. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log_actor.py +0 -0
  457. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log_actor_type.py +0 -0
  458. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log_metadata.py +0 -0
  459. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log_status.py +0 -0
  460. {render-1.2.0 → render-1.4.0}/render/public_api/models/audit_log_with_cursor.py +0 -0
  461. {render-1.2.0 → render-1.4.0}/render/public_api/models/auto_deploy.py +0 -0
  462. {render-1.2.0 → render-1.4.0}/render/public_api/models/auto_deploy_trigger.py +0 -0
  463. {render-1.2.0 → render-1.4.0}/render/public_api/models/autoscaling_config.py +0 -0
  464. {render-1.2.0 → render-1.4.0}/render/public_api/models/autoscaling_config_changed.py +0 -0
  465. {render-1.2.0 → render-1.4.0}/render/public_api/models/autoscaling_criteria.py +0 -0
  466. {render-1.2.0 → render-1.4.0}/render/public_api/models/autoscaling_criteria_percentage.py +0 -0
  467. {render-1.2.0 → render-1.4.0}/render/public_api/models/autoscaling_ended.py +0 -0
  468. {render-1.2.0 → render-1.4.0}/render/public_api/models/autoscaling_started.py +0 -0
  469. {render-1.2.0 → render-1.4.0}/render/public_api/models/background_worker_details.py +0 -0
  470. {render-1.2.0 → render-1.4.0}/render/public_api/models/background_worker_details_patch.py +0 -0
  471. {render-1.2.0 → render-1.4.0}/render/public_api/models/blueprint.py +0 -0
  472. {render-1.2.0 → render-1.4.0}/render/public_api/models/blueprint_detail.py +0 -0
  473. {render-1.2.0 → render-1.4.0}/render/public_api/models/blueprint_with_cursor.py +0 -0
  474. {render-1.2.0 → render-1.4.0}/render/public_api/models/branch_deleted.py +0 -0
  475. {render-1.2.0 → render-1.4.0}/render/public_api/models/build.py +0 -0
  476. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_config.py +0 -0
  477. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_config_update.py +0 -0
  478. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_deploy_end_reason.py +0 -0
  479. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_deploy_end_reason_id.py +0 -0
  480. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_deploy_trigger.py +0 -0
  481. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_ended.py +0 -0
  482. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_filter.py +0 -0
  483. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_plan.py +0 -0
  484. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_run.py +0 -0
  485. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_run_runtime.py +0 -0
  486. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_run_status.py +0 -0
  487. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source.py +0 -0
  488. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_git_region.py +0 -0
  489. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_git_runtime.py +0 -0
  490. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_image.py +0 -0
  491. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_patch_git_region.py +0 -0
  492. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_patch_git_runtime.py +0 -0
  493. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_patch_image.py +0 -0
  494. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_patch_input.py +0 -0
  495. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_post_input.py +0 -0
  496. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_service_link.py +0 -0
  497. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_source_with_cursor.py +0 -0
  498. {render-1.2.0 → render-1.4.0}/render/public_api/models/build_started.py +0 -0
  499. {render-1.2.0 → render-1.4.0}/render/public_api/models/cache.py +0 -0
  500. {render-1.2.0 → render-1.4.0}/render/public_api/models/cache_profile.py +0 -0
  501. {render-1.2.0 → render-1.4.0}/render/public_api/models/cidr_block_and_description.py +0 -0
  502. {render-1.2.0 → render-1.4.0}/render/public_api/models/commit_ignored.py +0 -0
  503. {render-1.2.0 → render-1.4.0}/render/public_api/models/commit_ref.py +0 -0
  504. {render-1.2.0 → render-1.4.0}/render/public_api/models/connect_sandbox_files_operation.py +0 -0
  505. {render-1.2.0 → render-1.4.0}/render/public_api/models/connect_sandbox_run_operation.py +0 -0
  506. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_custom_domain_body.py +0 -0
  507. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_deploy_body.py +0 -0
  508. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_deploy_body_clear_cache.py +0 -0
  509. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_ephemeral_shell_body.py +0 -0
  510. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_ephemeral_shell_response_201.py +0 -0
  511. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_registry_credential_body.py +0 -0
  512. {render-1.2.0 → render-1.4.0}/render/public_api/models/create_version.py +0 -0
  513. {render-1.2.0 → render-1.4.0}/render/public_api/models/credential_create_input.py +0 -0
  514. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_details.py +0 -0
  515. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_details_patch.py +0 -0
  516. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_run_ended.py +0 -0
  517. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_run_started.py +0 -0
  518. {render-1.2.0 → render-1.4.0}/render/public_api/models/cron_job_run_status.py +0 -0
  519. {render-1.2.0 → render-1.4.0}/render/public_api/models/custom_domain.py +0 -0
  520. {render-1.2.0 → render-1.4.0}/render/public_api/models/custom_domain_domain_type.py +0 -0
  521. {render-1.2.0 → render-1.4.0}/render/public_api/models/custom_domain_server.py +0 -0
  522. {render-1.2.0 → render-1.4.0}/render/public_api/models/custom_domain_verification_status.py +0 -0
  523. {render-1.2.0 → render-1.4.0}/render/public_api/models/custom_domain_with_cursor.py +0 -0
  524. {render-1.2.0 → render-1.4.0}/render/public_api/models/database_role.py +0 -0
  525. {render-1.2.0 → render-1.4.0}/render/public_api/models/database_status.py +0 -0
  526. {render-1.2.0 → render-1.4.0}/render/public_api/models/dedicated_ip.py +0 -0
  527. {render-1.2.0 → render-1.4.0}/render/public_api/models/dedicated_ip_status.py +0 -0
  528. {render-1.2.0 → render-1.4.0}/render/public_api/models/dedicated_ippatch.py +0 -0
  529. {render-1.2.0 → render-1.4.0}/render/public_api/models/dedicated_ippost.py +0 -0
  530. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy.py +0 -0
  531. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_commit.py +0 -0
  532. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_ended.py +0 -0
  533. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_image.py +0 -0
  534. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_mode.py +0 -0
  535. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_started.py +0 -0
  536. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_status.py +0 -0
  537. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_trigger.py +0 -0
  538. {render-1.2.0 → render-1.4.0}/render/public_api/models/deploy_with_cursor.py +0 -0
  539. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk.py +0 -0
  540. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_created.py +0 -0
  541. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_deleted.py +0 -0
  542. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_details.py +0 -0
  543. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_patch.py +0 -0
  544. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_post.py +0 -0
  545. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_snapshot.py +0 -0
  546. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_updated.py +0 -0
  547. {render-1.2.0 → render-1.4.0}/render/public_api/models/disk_with_cursor.py +0 -0
  548. {render-1.2.0 → render-1.4.0}/render/public_api/models/docker_details.py +0 -0
  549. {render-1.2.0 → render-1.4.0}/render/public_api/models/docker_details_patch.py +0 -0
  550. {render-1.2.0 → render-1.4.0}/render/public_api/models/docker_details_post.py +0 -0
  551. {render-1.2.0 → render-1.4.0}/render/public_api/models/edge_cache_disabled.py +0 -0
  552. {render-1.2.0 → render-1.4.0}/render/public_api/models/edge_cache_enabled.py +0 -0
  553. {render-1.2.0 → render-1.4.0}/render/public_api/models/edge_cache_purged.py +0 -0
  554. {render-1.2.0 → render-1.4.0}/render/public_api/models/edge_cache_trigger.py +0 -0
  555. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_group.py +0 -0
  556. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_group_link.py +0 -0
  557. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_group_meta.py +0 -0
  558. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_group_patch_input.py +0 -0
  559. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_group_post_input.py +0 -0
  560. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_var.py +0 -0
  561. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_var_generate_value.py +0 -0
  562. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_var_key_generate_value.py +0 -0
  563. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_var_key_value.py +0 -0
  564. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_var_value.py +0 -0
  565. {render-1.2.0 → render-1.4.0}/render/public_api/models/env_var_with_cursor.py +0 -0
  566. {render-1.2.0 → render-1.4.0}/render/public_api/models/environment.py +0 -0
  567. {render-1.2.0 → render-1.4.0}/render/public_api/models/environment_patch_input.py +0 -0
  568. {render-1.2.0 → render-1.4.0}/render/public_api/models/environment_post_input.py +0 -0
  569. {render-1.2.0 → render-1.4.0}/render/public_api/models/environment_resources_post_input.py +0 -0
  570. {render-1.2.0 → render-1.4.0}/render/public_api/models/environment_with_cursor.py +0 -0
  571. {render-1.2.0 → render-1.4.0}/render/public_api/models/error.py +0 -0
  572. {render-1.2.0 → render-1.4.0}/render/public_api/models/event.py +0 -0
  573. {render-1.2.0 → render-1.4.0}/render/public_api/models/event_status.py +0 -0
  574. {render-1.2.0 → render-1.4.0}/render/public_api/models/event_type.py +0 -0
  575. {render-1.2.0 → render-1.4.0}/render/public_api/models/execution.py +0 -0
  576. {render-1.2.0 → render-1.4.0}/render/public_api/models/execution_operation.py +0 -0
  577. {render-1.2.0 → render-1.4.0}/render/public_api/models/execution_type.py +0 -0
  578. {render-1.2.0 → render-1.4.0}/render/public_api/models/execution_with_cursor.py +0 -0
  579. {render-1.2.0 → render-1.4.0}/render/public_api/models/failure_reason.py +0 -0
  580. {render-1.2.0 → render-1.4.0}/render/public_api/models/filter_application_values_collection_item.py +0 -0
  581. {render-1.2.0 → render-1.4.0}/render/public_api/models/filter_application_values_collection_item_filter.py +0 -0
  582. {render-1.2.0 → render-1.4.0}/render/public_api/models/filter_http_values_collection_item.py +0 -0
  583. {render-1.2.0 → render-1.4.0}/render/public_api/models/filter_http_values_collection_item_filter.py +0 -0
  584. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_bandwidth_sources_response_200.py +0 -0
  585. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item.py +0 -0
  586. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_labels.py +0 -0
  587. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_labels_traffic_source.py +0 -0
  588. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_values_item.py +0 -0
  589. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_cpu_aggregation_method.py +0 -0
  590. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_http_requests_aggregate_by.py +0 -0
  591. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_object_output.py +0 -0
  592. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_task_runs_completed_aggregate_by.py +0 -0
  593. {render-1.2.0 → render-1.4.0}/render/public_api/models/get_task_runs_completed_state.py +0 -0
  594. {render-1.2.0 → render-1.4.0}/render/public_api/models/header.py +0 -0
  595. {render-1.2.0 → render-1.4.0}/render/public_api/models/header_input.py +0 -0
  596. {render-1.2.0 → render-1.4.0}/render/public_api/models/header_with_cursor.py +0 -0
  597. {render-1.2.0 → render-1.4.0}/render/public_api/models/image.py +0 -0
  598. {render-1.2.0 → render-1.4.0}/render/public_api/models/image_pull_failed.py +0 -0
  599. {render-1.2.0 → render-1.4.0}/render/public_api/models/initial_deploy_hook_ended.py +0 -0
  600. {render-1.2.0 → render-1.4.0}/render/public_api/models/initial_deploy_hook_started.py +0 -0
  601. {render-1.2.0 → render-1.4.0}/render/public_api/models/instance_count_changed.py +0 -0
  602. {render-1.2.0 → render-1.4.0}/render/public_api/models/instance_type_changed.py +0 -0
  603. {render-1.2.0 → render-1.4.0}/render/public_api/models/internal_routing.py +0 -0
  604. {render-1.2.0 → render-1.4.0}/render/public_api/models/job.py +0 -0
  605. {render-1.2.0 → render-1.4.0}/render/public_api/models/job_run_ended.py +0 -0
  606. {render-1.2.0 → render-1.4.0}/render/public_api/models/job_status.py +0 -0
  607. {render-1.2.0 → render-1.4.0}/render/public_api/models/job_with_cursor.py +0 -0
  608. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value.py +0 -0
  609. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_available.py +0 -0
  610. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_config_restart.py +0 -0
  611. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_connection_info.py +0 -0
  612. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_detail.py +0 -0
  613. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_options.py +0 -0
  614. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_patch_input.py +0 -0
  615. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_plan.py +0 -0
  616. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_post_input.py +0 -0
  617. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_unhealthy.py +0 -0
  618. {render-1.2.0 → render-1.4.0}/render/public_api/models/key_value_with_cursor.py +0 -0
  619. {render-1.2.0 → render-1.4.0}/render/public_api/models/label.py +0 -0
  620. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_custom_domains_domain_type.py +0 -0
  621. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_custom_domains_verification_status.py +0 -0
  622. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_logs_response_200.py +0 -0
  623. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_logs_values_label.py +0 -0
  624. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_objects_response.py +0 -0
  625. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_postgres_suspended_item.py +0 -0
  626. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_postgres_users_response_200_item.py +0 -0
  627. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_routes_type_item.py +0 -0
  628. {render-1.2.0 → render-1.4.0}/render/public_api/models/list_services_suspended_item.py +0 -0
  629. {render-1.2.0 → render-1.4.0}/render/public_api/models/log.py +0 -0
  630. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_direction.py +0 -0
  631. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_label.py +0 -0
  632. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_label_name.py +0 -0
  633. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_stream_owner_update.py +0 -0
  634. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_stream_preview_setting.py +0 -0
  635. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_stream_resource_update.py +0 -0
  636. {render-1.2.0 → render-1.4.0}/render/public_api/models/log_stream_setting.py +0 -0
  637. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_ended.py +0 -0
  638. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_mode.py +0 -0
  639. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_mode_enabled.py +0 -0
  640. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_mode_uri_updated.py +0 -0
  641. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_run.py +0 -0
  642. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_run_patch.py +0 -0
  643. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_run_with_resource.py +0 -0
  644. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_started.py +0 -0
  645. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_state.py +0 -0
  646. {render-1.2.0 → render-1.4.0}/render/public_api/models/maintenance_trigger.py +0 -0
  647. {render-1.2.0 → render-1.4.0}/render/public_api/models/maxmemory_policy.py +0 -0
  648. {render-1.2.0 → render-1.4.0}/render/public_api/models/metrics_stream.py +0 -0
  649. {render-1.2.0 → render-1.4.0}/render/public_api/models/metrics_stream_input.py +0 -0
  650. {render-1.2.0 → render-1.4.0}/render/public_api/models/native_environment_details.py +0 -0
  651. {render-1.2.0 → render-1.4.0}/render/public_api/models/native_environment_details_patch.py +0 -0
  652. {render-1.2.0 → render-1.4.0}/render/public_api/models/native_environment_details_post.py +0 -0
  653. {render-1.2.0 → render-1.4.0}/render/public_api/models/notification_override.py +0 -0
  654. {render-1.2.0 → render-1.4.0}/render/public_api/models/notification_override_with_cursor.py +0 -0
  655. {render-1.2.0 → render-1.4.0}/render/public_api/models/notification_service_override.py +0 -0
  656. {render-1.2.0 → render-1.4.0}/render/public_api/models/notification_service_override_patch.py +0 -0
  657. {render-1.2.0 → render-1.4.0}/render/public_api/models/notification_setting.py +0 -0
  658. {render-1.2.0 → render-1.4.0}/render/public_api/models/notification_setting_patch.py +0 -0
  659. {render-1.2.0 → render-1.4.0}/render/public_api/models/notify_override.py +0 -0
  660. {render-1.2.0 → render-1.4.0}/render/public_api/models/notify_preview_override.py +0 -0
  661. {render-1.2.0 → render-1.4.0}/render/public_api/models/notify_setting.py +0 -0
  662. {render-1.2.0 → render-1.4.0}/render/public_api/models/notify_setting_v2.py +0 -0
  663. {render-1.2.0 → render-1.4.0}/render/public_api/models/object_metadata.py +0 -0
  664. {render-1.2.0 → render-1.4.0}/render/public_api/models/object_with_cursor.py +0 -0
  665. {render-1.2.0 → render-1.4.0}/render/public_api/models/oom_killed.py +0 -0
  666. {render-1.2.0 → render-1.4.0}/render/public_api/models/otel_provider_type.py +0 -0
  667. {render-1.2.0 → render-1.4.0}/render/public_api/models/outbound_ips.py +0 -0
  668. {render-1.2.0 → render-1.4.0}/render/public_api/models/outbound_ips_type.py +0 -0
  669. {render-1.2.0 → render-1.4.0}/render/public_api/models/owner.py +0 -0
  670. {render-1.2.0 → render-1.4.0}/render/public_api/models/owner_log_stream_setting.py +0 -0
  671. {render-1.2.0 → render-1.4.0}/render/public_api/models/owner_type.py +0 -0
  672. {render-1.2.0 → render-1.4.0}/render/public_api/models/owner_with_cursor.py +0 -0
  673. {render-1.2.0 → render-1.4.0}/render/public_api/models/paid_plan.py +0 -0
  674. {render-1.2.0 → render-1.4.0}/render/public_api/models/patch_route_response_200.py +0 -0
  675. {render-1.2.0 → render-1.4.0}/render/public_api/models/persistence_mode.py +0 -0
  676. {render-1.2.0 → render-1.4.0}/render/public_api/models/pipeline_minutes_exhausted.py +0 -0
  677. {render-1.2.0 → render-1.4.0}/render/public_api/models/plan.py +0 -0
  678. {render-1.2.0 → render-1.4.0}/render/public_api/models/post_job_body.py +0 -0
  679. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres.py +0 -0
  680. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_available.py +0 -0
  681. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_available_parameter_override.py +0 -0
  682. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_available_parameter_overrides_result.py +0 -0
  683. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_backup_completed.py +0 -0
  684. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_backup_failed.py +0 -0
  685. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_backup_started.py +0 -0
  686. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_cluster_leader_changed.py +0 -0
  687. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_connection_info.py +0 -0
  688. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_connection_pool_changed.py +0 -0
  689. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_connection_pool_enabled_changed.py +0 -0
  690. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_created.py +0 -0
  691. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_detail.py +0 -0
  692. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_detail_suspended.py +0 -0
  693. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_disk_size_changed.py +0 -0
  694. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_export.py +0 -0
  695. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_ha_status_changed.py +0 -0
  696. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_parameter_overrides.py +0 -0
  697. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_parameter_overrides_wrapper.py +0 -0
  698. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_patch_input.py +0 -0
  699. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_pitr_checkpoint_completed.py +0 -0
  700. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_pitr_checkpoint_failed.py +0 -0
  701. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_pitr_checkpoint_started.py +0 -0
  702. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_plans.py +0 -0
  703. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_post_input.py +0 -0
  704. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_process.py +0 -0
  705. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_processes_result.py +0 -0
  706. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_put_parameter_overrides_result.py +0 -0
  707. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_query_statistic.py +0 -0
  708. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_read_replica_stale.py +0 -0
  709. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_read_replicas_changed.py +0 -0
  710. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_replication_setup_input.py +0 -0
  711. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_restarted.py +0 -0
  712. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_size.py +0 -0
  713. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_sizes_result.py +0 -0
  714. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_suspended.py +0 -0
  715. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_table_scan.py +0 -0
  716. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_table_scans_result.py +0 -0
  717. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_top_queries_result.py +0 -0
  718. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_unavailable.py +0 -0
  719. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_upgrade_failed.py +0 -0
  720. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_upgrade_started.py +0 -0
  721. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_upgrade_succeeded.py +0 -0
  722. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_version.py +0 -0
  723. {render-1.2.0 → render-1.4.0}/render/public_api/models/postgres_with_cursor.py +0 -0
  724. {render-1.2.0 → render-1.4.0}/render/public_api/models/pre_deploy_ended.py +0 -0
  725. {render-1.2.0 → render-1.4.0}/render/public_api/models/pre_deploy_started.py +0 -0
  726. {render-1.2.0 → render-1.4.0}/render/public_api/models/preview_input.py +0 -0
  727. {render-1.2.0 → render-1.4.0}/render/public_api/models/previews.py +0 -0
  728. {render-1.2.0 → render-1.4.0}/render/public_api/models/previews_generation.py +0 -0
  729. {render-1.2.0 → render-1.4.0}/render/public_api/models/private_service_details.py +0 -0
  730. {render-1.2.0 → render-1.4.0}/render/public_api/models/private_service_details_patch.py +0 -0
  731. {render-1.2.0 → render-1.4.0}/render/public_api/models/project.py +0 -0
  732. {render-1.2.0 → render-1.4.0}/render/public_api/models/project_patch_input.py +0 -0
  733. {render-1.2.0 → render-1.4.0}/render/public_api/models/project_post_environment_input.py +0 -0
  734. {render-1.2.0 → render-1.4.0}/render/public_api/models/project_post_input.py +0 -0
  735. {render-1.2.0 → render-1.4.0}/render/public_api/models/project_with_cursor.py +0 -0
  736. {render-1.2.0 → render-1.4.0}/render/public_api/models/protected_status.py +0 -0
  737. {render-1.2.0 → render-1.4.0}/render/public_api/models/pull_request_previews_enabled.py +0 -0
  738. {render-1.2.0 → render-1.4.0}/render/public_api/models/put_object_input.py +0 -0
  739. {render-1.2.0 → render-1.4.0}/render/public_api/models/put_object_output.py +0 -0
  740. {render-1.2.0 → render-1.4.0}/render/public_api/models/read_replica.py +0 -0
  741. {render-1.2.0 → render-1.4.0}/render/public_api/models/read_replica_input.py +0 -0
  742. {render-1.2.0 → render-1.4.0}/render/public_api/models/recovery_info.py +0 -0
  743. {render-1.2.0 → render-1.4.0}/render/public_api/models/recovery_info_recovery_status.py +0 -0
  744. {render-1.2.0 → render-1.4.0}/render/public_api/models/recovery_input.py +0 -0
  745. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis.py +0 -0
  746. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_connection_info.py +0 -0
  747. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_detail.py +0 -0
  748. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_options.py +0 -0
  749. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_patch_input.py +0 -0
  750. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_plan.py +0 -0
  751. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_post_input.py +0 -0
  752. {render-1.2.0 → render-1.4.0}/render/public_api/models/redis_with_cursor.py +0 -0
  753. {render-1.2.0 → render-1.4.0}/render/public_api/models/region.py +0 -0
  754. {render-1.2.0 → render-1.4.0}/render/public_api/models/registry_credential.py +0 -0
  755. {render-1.2.0 → render-1.4.0}/render/public_api/models/registry_credential_registry.py +0 -0
  756. {render-1.2.0 → render-1.4.0}/render/public_api/models/registry_credential_summary.py +0 -0
  757. {render-1.2.0 → render-1.4.0}/render/public_api/models/render_subdomain_policy.py +0 -0
  758. {render-1.2.0 → render-1.4.0}/render/public_api/models/resource.py +0 -0
  759. {render-1.2.0 → render-1.4.0}/render/public_api/models/resource_log_stream_setting.py +0 -0
  760. {render-1.2.0 → render-1.4.0}/render/public_api/models/resource_ref.py +0 -0
  761. {render-1.2.0 → render-1.4.0}/render/public_api/models/resource_ref_type.py +0 -0
  762. {render-1.2.0 → render-1.4.0}/render/public_api/models/rollback_deploy_body.py +0 -0
  763. {render-1.2.0 → render-1.4.0}/render/public_api/models/route.py +0 -0
  764. {render-1.2.0 → render-1.4.0}/render/public_api/models/route_patch.py +0 -0
  765. {render-1.2.0 → render-1.4.0}/render/public_api/models/route_post.py +0 -0
  766. {render-1.2.0 → render-1.4.0}/render/public_api/models/route_put.py +0 -0
  767. {render-1.2.0 → render-1.4.0}/render/public_api/models/route_type.py +0 -0
  768. {render-1.2.0 → render-1.4.0}/render/public_api/models/route_with_cursor.py +0 -0
  769. {render-1.2.0 → render-1.4.0}/render/public_api/models/runtime.py +0 -0
  770. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_connect_request.py +0 -0
  771. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_connect_response.py +0 -0
  772. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_directory_listing.py +0 -0
  773. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_file_entry.py +0 -0
  774. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_file_entry_type.py +0 -0
  775. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_group.py +0 -0
  776. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_group_with_cursor.py +0 -0
  777. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_post_env.py +0 -0
  778. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_snapshot_kind.py +0 -0
  779. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_snapshot_status.py +0 -0
  780. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_snapshot_with_cursor.py +0 -0
  781. {render-1.2.0 → render-1.4.0}/render/public_api/models/sandbox_with_cursor.py +0 -0
  782. {render-1.2.0 → render-1.4.0}/render/public_api/models/scale_service_body.py +0 -0
  783. {render-1.2.0 → render-1.4.0}/render/public_api/models/schemas_build_filter.py +0 -0
  784. {render-1.2.0 → render-1.4.0}/render/public_api/models/schemas_image.py +0 -0
  785. {render-1.2.0 → render-1.4.0}/render/public_api/models/schemas_user.py +0 -0
  786. {render-1.2.0 → render-1.4.0}/render/public_api/models/secret_file.py +0 -0
  787. {render-1.2.0 → render-1.4.0}/render/public_api/models/secret_file_input.py +0 -0
  788. {render-1.2.0 → render-1.4.0}/render/public_api/models/secret_file_with_cursor.py +0 -0
  789. {render-1.2.0 → render-1.4.0}/render/public_api/models/server_available.py +0 -0
  790. {render-1.2.0 → render-1.4.0}/render/public_api/models/server_failed.py +0 -0
  791. {render-1.2.0 → render-1.4.0}/render/public_api/models/server_hardware_failure.py +0 -0
  792. {render-1.2.0 → render-1.4.0}/render/public_api/models/server_port.py +0 -0
  793. {render-1.2.0 → render-1.4.0}/render/public_api/models/server_port_protocol.py +0 -0
  794. {render-1.2.0 → render-1.4.0}/render/public_api/models/server_restarted.py +0 -0
  795. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_and_deploy.py +0 -0
  796. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_disk.py +0 -0
  797. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_disk_usage_high.py +0 -0
  798. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_disk_usage_recovered.py +0 -0
  799. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_env.py +0 -0
  800. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_event.py +0 -0
  801. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_event_type.py +0 -0
  802. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_instance.py +0 -0
  803. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_resumed.py +0 -0
  804. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_runtime.py +0 -0
  805. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_service_suspended_state.py +0 -0
  806. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_suspended.py +0 -0
  807. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_type.py +0 -0
  808. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_type_short.py +0 -0
  809. {render-1.2.0 → render-1.4.0}/render/public_api/models/service_with_cursor.py +0 -0
  810. {render-1.2.0 → render-1.4.0}/render/public_api/models/setup_postgres_replication_response_201.py +0 -0
  811. {render-1.2.0 → render-1.4.0}/render/public_api/models/snapshot_restore_post.py +0 -0
  812. {render-1.2.0 → render-1.4.0}/render/public_api/models/static_site_details.py +0 -0
  813. {render-1.2.0 → render-1.4.0}/render/public_api/models/static_site_details_patch.py +0 -0
  814. {render-1.2.0 → render-1.4.0}/render/public_api/models/static_site_details_post.py +0 -0
  815. {render-1.2.0 → render-1.4.0}/render/public_api/models/status.py +0 -0
  816. {render-1.2.0 → render-1.4.0}/render/public_api/models/stream_sandbox_logs_accept.py +0 -0
  817. {render-1.2.0 → render-1.4.0}/render/public_api/models/stream_task_runs_events_accept.py +0 -0
  818. {render-1.2.0 → render-1.4.0}/render/public_api/models/suspender_added.py +0 -0
  819. {render-1.2.0 → render-1.4.0}/render/public_api/models/suspender_removed.py +0 -0
  820. {render-1.2.0 → render-1.4.0}/render/public_api/models/suspender_type.py +0 -0
  821. {render-1.2.0 → render-1.4.0}/render/public_api/models/sync.py +0 -0
  822. {render-1.2.0 → render-1.4.0}/render/public_api/models/sync_state.py +0 -0
  823. {render-1.2.0 → render-1.4.0}/render/public_api/models/sync_with_cursor.py +0 -0
  824. {render-1.2.0 → render-1.4.0}/render/public_api/models/task.py +0 -0
  825. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_attempt.py +0 -0
  826. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_attempt_details.py +0 -0
  827. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_data_type_1.py +0 -0
  828. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_run.py +0 -0
  829. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_run_details.py +0 -0
  830. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_run_status.py +0 -0
  831. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_run_with_cursor.py +0 -0
  832. {render-1.2.0 → render-1.4.0}/render/public_api/models/task_with_cursor.py +0 -0
  833. {render-1.2.0 → render-1.4.0}/render/public_api/models/team_member.py +0 -0
  834. {render-1.2.0 → render-1.4.0}/render/public_api/models/team_member_role.py +0 -0
  835. {render-1.2.0 → render-1.4.0}/render/public_api/models/team_member_status.py +0 -0
  836. {render-1.2.0 → render-1.4.0}/render/public_api/models/time_series.py +0 -0
  837. {render-1.2.0 → render-1.4.0}/render/public_api/models/time_series_value.py +0 -0
  838. {render-1.2.0 → render-1.4.0}/render/public_api/models/update_env_group_secret_file_body.py +0 -0
  839. {render-1.2.0 → render-1.4.0}/render/public_api/models/update_registry_credential_body.py +0 -0
  840. {render-1.2.0 → render-1.4.0}/render/public_api/models/update_workspace_member_body.py +0 -0
  841. {render-1.2.0 → render-1.4.0}/render/public_api/models/user.py +0 -0
  842. {render-1.2.0 → render-1.4.0}/render/public_api/models/validate_blueprint_request.py +0 -0
  843. {render-1.2.0 → render-1.4.0}/render/public_api/models/validate_blueprint_response.py +0 -0
  844. {render-1.2.0 → render-1.4.0}/render/public_api/models/validation_error.py +0 -0
  845. {render-1.2.0 → render-1.4.0}/render/public_api/models/validation_plan_summary.py +0 -0
  846. {render-1.2.0 → render-1.4.0}/render/public_api/models/web_service_details.py +0 -0
  847. {render-1.2.0 → render-1.4.0}/render/public_api/models/web_service_details_patch.py +0 -0
  848. {render-1.2.0 → render-1.4.0}/render/public_api/models/webhook.py +0 -0
  849. {render-1.2.0 → render-1.4.0}/render/public_api/models/webhook_event.py +0 -0
  850. {render-1.2.0 → render-1.4.0}/render/public_api/models/webhook_event_with_cursor.py +0 -0
  851. {render-1.2.0 → render-1.4.0}/render/public_api/models/webhook_patch_input.py +0 -0
  852. {render-1.2.0 → render-1.4.0}/render/public_api/models/webhook_post_input.py +0 -0
  853. {render-1.2.0 → render-1.4.0}/render/public_api/models/webhook_with_cursor.py +0 -0
  854. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow.py +0 -0
  855. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow_create.py +0 -0
  856. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow_update.py +0 -0
  857. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow_version.py +0 -0
  858. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow_version_status.py +0 -0
  859. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow_version_with_cursor.py +0 -0
  860. {render-1.2.0 → render-1.4.0}/render/public_api/models/workflow_with_cursor.py +0 -0
  861. {render-1.2.0 → render-1.4.0}/render/public_api/models/zero_downtime_redeploy_ended.py +0 -0
  862. {render-1.2.0 → render-1.4.0}/render/public_api/models/zero_downtime_redeploy_started.py +0 -0
  863. {render-1.2.0 → render-1.4.0}/render/public_api/py.typed +0 -0
  864. {render-1.2.0 → render-1.4.0}/render/public_api/types.py +0 -0
  865. {render-1.2.0 → render-1.4.0}/render/py.typed +0 -0
  866. {render-1.2.0 → render-1.4.0}/render/render.py +0 -0
  867. {render-1.2.0 → render-1.4.0}/render/render_async.py +0 -0
  868. {render-1.2.0 → render-1.4.0}/render/version.py +0 -0
  869. {render-1.2.0 → render-1.4.0}/render/workflows/__init__.py +0 -0
  870. {render-1.2.0 → render-1.4.0}/render/workflows/_callback_models.py +0 -0
  871. {render-1.2.0 → render-1.4.0}/render/workflows/_uds_http.py +0 -0
  872. {render-1.2.0 → render-1.4.0}/render/workflows/app.py +0 -0
  873. {render-1.2.0 → render-1.4.0}/render/workflows/cli.py +0 -0
  874. {render-1.2.0 → render-1.4.0}/render/workflows/context.py +0 -0
  875. {render-1.2.0 → render-1.4.0}/render/workflows/executor.py +0 -0
  876. {render-1.2.0 → render-1.4.0}/render/workflows/task.py +0 -0
  877. {render-1.2.0 → render-1.4.0}/render/workflows/tests/__init__.py +0 -0
  878. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_app.py +0 -0
  879. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_cli.py +0 -0
  880. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_context.py +0 -0
  881. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_executor.py +0 -0
  882. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_lazy_imports.py +0 -0
  883. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_registration.py +0 -0
  884. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_translate_errors.py +0 -0
  885. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_uds_http.py +0 -0
  886. {render-1.2.0 → render-1.4.0}/render/workflows/tests/test_version.py +0 -0
  887. {render-1.2.0 → render-1.4.0}/scripts/unasync.py +0 -0
  888. {render-1.2.0 → render-1.4.0}/tox.ini +0 -0
  889. {render-1.2.0 → render-1.4.0}/typing_tests/README.md +0 -0
  890. {render-1.2.0 → render-1.4.0}/typing_tests/client_decorators.py +0 -0
  891. {render-1.2.0 → render-1.4.0}/typing_tests/run_inference.py +0 -0
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.4.0] - 2026-10-21
4
+
5
+ ### Added
6
+
7
+ - (Sandboxes) `sandboxes.create()` accepts `idle_timeout_seconds`; use `0` to disable automatic idle suspension. Returned `Sandbox` values expose the effective setting.
8
+ - (Sandboxes) `sandboxes.create()` accepts any plan string.
9
+
10
+ ### Changed
11
+
12
+ - (Sandboxes) `snapshots.create()` no longer defaults `kind` to `"filesystem"`. When `kind` is omitted the API picks the default, which is currently `runtime`. Pass `kind="filesystem"` to keep the previous behavior.
13
+ - (Workflows) Idempotency keys are scoped to the workflow rather than a single workflow version, so the same key resolves to the original run across deploys. This is a documentation change; the SDK sends the key as before.
14
+ - **Breaking:** (REST API) Removed the unused `update_sandbox_exec` endpoint and its request and response models. Error codes include `sandbox_group_suspended` and `sandbox_group_limit_reached`.
15
+
16
+ ## [1.3.0] - 2026-10-17
17
+
18
+ ### Added
19
+
20
+ - (Sandboxes) `sandboxes.create()` accepts `network_policy=NetworkPolicy(type="allow-list", rules=[EgressRule(domain="pypi.org")])` to restrict outbound traffic. Rules support domain names and wildcard domains such as `*.pypi.org`. `EgressRule.protocol` defaults to `"https"`. Both the sync and async clients support these rules.
21
+ - (REST API) Generated clients include flows, flow runs, run steps, and individual build retrieval.
22
+
23
+ ### Changed
24
+
25
+ - **Breaking:** (Sandboxes) `Sandbox.network_policy` is a `NetworkPolicy` object with `type` and `rules` instead of a string. Read `sandbox.network_policy.type` to get the policy type. String inputs such as `network_policy="deny-all"` still work when you create a sandbox.
26
+ - **Breaking:** (REST API) Removed `create_blueprint` and its request and response models. Build source Git fields use `docker_context` instead of `base_dir`. Build lists return `BuildWithCursor` entries with `build` and `cursor` fields instead of bare `Build` entries.
27
+ - (REST API) Service creation can omit `runtime` when `build_source_id` is set. `auto_deploy` is deprecated; use `auto_deploy_trigger`. Sandbox status includes `suspending`. Service event list entries include a `cursor`.
28
+ - (Workflows) The SDK sends import and startup timestamps with the initial input request. The runtime can use these timestamps to measure SDK import and startup time.
29
+
3
30
  ## [1.2.0] - 2026-09-23
4
31
 
5
32
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: render
3
- Version: 1.2.0
3
+ Version: 1.4.0
4
4
  Summary: Python SDK for Render Workflows
5
5
  Author-email: Render <support@render.com>
6
6
  License-File: LICENSE
@@ -175,7 +175,7 @@ runs = render.workflows.list_task_runs(ListTaskRunsParams(limit=10))
175
175
  Pass an `idempotency_key` to make starting a run safe to retry. Repeating a call
176
176
  with the same key within 24 hours returns the run the first call started instead
177
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.
178
+ the task twice. Keys are scoped to a workflow.
179
179
 
180
180
  ```python
181
181
  task_run = render.workflows.start_task(
@@ -150,7 +150,7 @@ runs = render.workflows.list_task_runs(ListTaskRunsParams(limit=10))
150
150
  Pass an `idempotency_key` to make starting a run safe to retry. Repeating a call
151
151
  with the same key within 24 hours returns the run the first call started instead
152
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.
153
+ the task twice. Keys are scoped to a workflow.
154
154
 
155
155
  ```python
156
156
  task_run = render.workflows.start_task(
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "render"
7
- version = "1.2.0"
7
+ version = "1.4.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,10 @@ Async REST API access:
33
33
  result = await task_run
34
34
  """
35
35
 
36
- __version__ = "1.2.0"
36
+ # Must stay the first import: it records when SDK import began.
37
+ from render import _startup
38
+
39
+ __version__ = "1.4.0"
37
40
 
38
41
  # Render/RenderAsync are lazy-loaded so the workflow worker path stays fast.
39
42
  from typing import TYPE_CHECKING
@@ -98,3 +101,5 @@ def __dir__() -> list[str]:
98
101
  #
99
102
  # Raw API access available via:
100
103
  # from render.public_api import AuthenticatedClient
104
+
105
+ _startup.mark_import_finished()
@@ -0,0 +1,34 @@
1
+ """Wall-clock startup timestamps reported to the server on ``GET /input``.
2
+
3
+ Imported first by ``render/__init__.py`` so the import start is the earliest
4
+ point SDK code runs. Stdlib only, to stay cheap.
5
+ """
6
+
7
+ import time
8
+
9
+ _import_started_ns: int | None = time.time_ns()
10
+ _import_finished_ns: int | None = None
11
+ _sdk_started_ns: int | None = None
12
+
13
+
14
+ def mark_import_finished() -> None:
15
+ global _import_finished_ns
16
+ if _import_finished_ns is None:
17
+ _import_finished_ns = time.time_ns()
18
+
19
+
20
+ def mark_sdk_started() -> None:
21
+ global _sdk_started_ns
22
+ if _sdk_started_ns is None:
23
+ _sdk_started_ns = time.time_ns()
24
+
25
+
26
+ def input_query() -> str:
27
+ """Return ``?k=v&...`` for the timestamps that were captured, or ``""``."""
28
+ params = (
29
+ ("sdk_import_started_at", _import_started_ns),
30
+ ("sdk_import_finished_at", _import_finished_ns),
31
+ ("sdk_started_at", _sdk_started_ns),
32
+ )
33
+ parts = [f"{name}={value}" for name, value in params if value]
34
+ return "?" + "&".join(parts) if parts else ""
@@ -0,0 +1,59 @@
1
+ """Retry 429s in the object storage e2e tests.
2
+
3
+ Every PR's E2E job shares one staging account, so concurrent runs trip the API
4
+ rate limit. RateLimitError doesn't carry the Retry-After header, so back off
5
+ exponentially with jitter instead.
6
+ """
7
+
8
+ import asyncio
9
+ import functools
10
+ import random
11
+ from collections.abc import Awaitable, Callable
12
+ from typing import ParamSpec, TypeVar
13
+
14
+ from render.client.errors import RateLimitError
15
+ from render.experimental.object.client import ObjectClient
16
+
17
+ P = ParamSpec("P")
18
+ R = TypeVar("R")
19
+
20
+ # Total window is ~60 seconds before jitter
21
+ MAX_ATTEMPTS = 7
22
+ INITIAL_DELAY_S = 1.0
23
+ MAX_DELAY_S = 16.0
24
+
25
+
26
+ def retry_rate_limited(
27
+ func: Callable[P, Awaitable[R]],
28
+ *,
29
+ initial_delay_s: float = INITIAL_DELAY_S,
30
+ ) -> Callable[P, Awaitable[R]]:
31
+ @functools.wraps(func)
32
+ async def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
33
+ for attempt in range(MAX_ATTEMPTS):
34
+ try:
35
+ return await func(*args, **kwargs)
36
+ except RateLimitError:
37
+ if attempt >= MAX_ATTEMPTS - 1:
38
+ raise
39
+ delay = min(initial_delay_s * 2**attempt, MAX_DELAY_S)
40
+ await asyncio.sleep(delay * random.uniform(0.5, 1.5)) # noqa: S311
41
+ raise AssertionError("unreachable") # pragma: no cover
42
+
43
+ return wrapper
44
+
45
+
46
+ def patch_rate_limit_retries(
47
+ client: ObjectClient, *, initial_delay_s: float = INITIAL_DELAY_S
48
+ ) -> None:
49
+ """Wrap the client's API methods in place.
50
+
51
+ ScopedObjectClient delegates to these, so scoped() is covered too.
52
+ """
53
+ for name in ("put", "get", "delete", "list"):
54
+ method = getattr(client, name)
55
+ setattr(
56
+ client,
57
+ name,
58
+ retry_rate_limited(method, initial_delay_s=initial_delay_s),
59
+ )
@@ -14,7 +14,9 @@ import uuid
14
14
 
15
15
  import pytest
16
16
 
17
+ from render.experimental.object.client import ObjectClient
17
18
  from render.experimental.object.e2e_helpers import object_storage_crud_check
19
+ from render.experimental.object.tests.rate_limit import patch_rate_limit_retries
18
20
  from render.render_async import RenderAsync
19
21
 
20
22
  # ---------------------------------------------------------------------------
@@ -42,6 +44,13 @@ def render():
42
44
  )
43
45
 
44
46
 
47
+ @pytest.fixture
48
+ def objects(render) -> ObjectClient:
49
+ client = render.client.experimental.storage.objects
50
+ patch_rate_limit_retries(client)
51
+ return client
52
+
53
+
45
54
  @pytest.fixture
46
55
  def owner_id():
47
56
  return os.environ["RENDER_E2E_OWNER_ID"]
@@ -57,20 +66,14 @@ def region():
57
66
  # ---------------------------------------------------------------------------
58
67
  class TestObjectClientE2E:
59
68
  @pytest.mark.asyncio
60
- async def test_crud_cycle(self, render, owner_id, region):
69
+ async def test_crud_cycle(self, objects, owner_id, region):
61
70
  """Full PUT → LIST → GET → DELETE → verify-deletion cycle."""
62
- await object_storage_crud_check(
63
- render.client.experimental.storage.objects,
64
- owner_id,
65
- region,
66
- )
71
+ await object_storage_crud_check(objects, owner_id, region)
67
72
 
68
73
  @pytest.mark.asyncio
69
- async def test_scoped_accessor(self, render, owner_id, region):
74
+ async def test_scoped_accessor(self, objects, owner_id, region):
70
75
  """Verify scoped() wiring with a simple PUT/GET/DELETE."""
71
- scoped = render.client.experimental.storage.objects.scoped(
72
- owner_id=owner_id, region=region
73
- )
76
+ scoped = objects.scoped(owner_id=owner_id, region=region)
74
77
  key = f"e2e-test/{uuid.uuid4()}/scoped-test.txt"
75
78
 
76
79
  try:
@@ -93,11 +96,10 @@ class TestObjectClientE2E:
93
96
  )
94
97
  class TestObjectClientPagination:
95
98
  @pytest.mark.asyncio
96
- async def test_pagination(self, render):
99
+ async def test_pagination(self, objects):
97
100
  """Walk all pages with limit=2, verify multiple pages returned."""
98
101
  owner_id = os.environ["RENDER_E2E_PAGINATION_OWNER_ID"]
99
102
  region = os.environ.get("RENDER_E2E_REGION", "oregon")
100
- objects = render.client.experimental.storage.objects
101
103
 
102
104
  page_size = 2
103
105
  cursor = None
@@ -0,0 +1,75 @@
1
+ """Tests for the e2e rate-limit retry wrapper."""
2
+
3
+ from types import SimpleNamespace
4
+
5
+ import pytest
6
+
7
+ from render.client.errors import ClientError, RateLimitError
8
+ from render.experimental.object.client import ObjectClient
9
+ from render.experimental.object.tests.rate_limit import (
10
+ MAX_ATTEMPTS,
11
+ patch_rate_limit_retries,
12
+ retry_rate_limited,
13
+ )
14
+ from render.experimental.object.types import ListObjectsResponse
15
+
16
+
17
+ @pytest.mark.asyncio
18
+ async def test_retries_rate_limit_until_success():
19
+ calls = 0
20
+
21
+ async def fn() -> str:
22
+ nonlocal calls
23
+ calls += 1
24
+ if calls < 3:
25
+ raise RateLimitError("list objects failed: rate limit exceeded")
26
+ return "ok"
27
+
28
+ assert await retry_rate_limited(fn, initial_delay_s=0)() == "ok"
29
+ assert calls == 3
30
+
31
+
32
+ @pytest.mark.asyncio
33
+ async def test_reraises_after_max_attempts():
34
+ calls = 0
35
+
36
+ async def fn() -> None:
37
+ nonlocal calls
38
+ calls += 1
39
+ raise RateLimitError("rate limit exceeded")
40
+
41
+ with pytest.raises(RateLimitError):
42
+ await retry_rate_limited(fn, initial_delay_s=0)()
43
+ assert calls == MAX_ATTEMPTS
44
+
45
+
46
+ @pytest.mark.asyncio
47
+ async def test_does_not_retry_other_client_errors():
48
+ calls = 0
49
+
50
+ async def fn() -> None:
51
+ nonlocal calls
52
+ calls += 1
53
+ raise ClientError("object not found")
54
+
55
+ with pytest.raises(ClientError):
56
+ await retry_rate_limited(fn, initial_delay_s=0)()
57
+ assert calls == 1
58
+
59
+
60
+ @pytest.mark.asyncio
61
+ async def test_patch_covers_scoped_client(mocker):
62
+ client = ObjectClient(SimpleNamespace())
63
+ list_mock = mocker.AsyncMock(
64
+ side_effect=[
65
+ RateLimitError("rate limit exceeded"),
66
+ ListObjectsResponse(objects=[], next_cursor=None, has_next=False),
67
+ ]
68
+ )
69
+ mocker.patch.object(client, "list", new=list_mock)
70
+
71
+ patch_rate_limit_retries(client, initial_delay_s=0)
72
+ response = await client.scoped(owner_id="tea-test", region="oregon").list()
73
+
74
+ assert response.objects == []
75
+ assert list_mock.await_count == 2
@@ -12,6 +12,8 @@ from render.experimental.sandbox.errors import (
12
12
  SnapshotPlanMismatchError,
13
13
  )
14
14
  from render.experimental.sandbox.types import (
15
+ EgressRule,
16
+ NetworkPolicy,
15
17
  Sandbox,
16
18
  SandboxExecEvent,
17
19
  SandboxExecExit,
@@ -24,6 +26,8 @@ from render.experimental.sandbox.types import (
24
26
  )
25
27
 
26
28
  __all__ = [
29
+ "EgressRule",
30
+ "NetworkPolicy",
27
31
  "Sandbox",
28
32
  "SandboxClient",
29
33
  "SandboxDownloadError",
@@ -54,6 +54,8 @@ from render.experimental.sandbox.files import (
54
54
  resolve_file_dest,
55
55
  )
56
56
  from render.experimental.sandbox.types import (
57
+ EgressRule,
58
+ NetworkPolicy,
57
59
  Sandbox,
58
60
  SandboxExecEvent,
59
61
  SandboxExecExit,
@@ -77,13 +79,21 @@ from render.public_api.api.sandboxes import (
77
79
  )
78
80
  from render.public_api.models.error import Error
79
81
  from render.public_api.models.sandbox import Sandbox as GeneratedSandbox
82
+ from render.public_api.models.sandbox_egress_rule import SandboxEgressRule
83
+ from render.public_api.models.sandbox_egress_rule_protocol import (
84
+ SandboxEgressRuleProtocol,
85
+ )
80
86
  from render.public_api.models.sandbox_group import SandboxGroup as GeneratedSandboxGroup
81
87
  from render.public_api.models.sandbox_group_with_cursor import SandboxGroupWithCursor
82
- from render.public_api.models.sandbox_network_policy import SandboxNetworkPolicy
83
- from render.public_api.models.sandbox_network_policy_default import (
84
- SandboxNetworkPolicyDefault,
88
+ from render.public_api.models.sandbox_network_policy import (
89
+ SandboxNetworkPolicy as GeneratedNetworkPolicy,
90
+ )
91
+ from render.public_api.models.sandbox_network_policy_post import (
92
+ SandboxNetworkPolicyPOST,
93
+ )
94
+ from render.public_api.models.sandbox_network_policy_type import (
95
+ SandboxNetworkPolicyType,
85
96
  )
86
- from render.public_api.models.sandbox_plan import SandboxPlan
87
97
  from render.public_api.models.sandbox_post import SandboxPOST
88
98
  from render.public_api.models.sandbox_post_env import SandboxPOSTEnv
89
99
  from render.public_api.models.sandbox_snapshot import (
@@ -131,14 +141,45 @@ def _set_or_none(value: _T | Unset | None) -> _T | None:
131
141
  return None if isinstance(value, Unset) else value
132
142
 
133
143
 
144
+ def _to_egress_rule(model: SandboxEgressRule) -> EgressRule:
145
+ if isinstance(model.protocol, Unset):
146
+ return EgressRule(domain=model.domain)
147
+ return EgressRule(domain=model.domain, protocol=model.protocol.value)
148
+
149
+
150
+ def _to_network_policy(model: GeneratedNetworkPolicy) -> NetworkPolicy:
151
+ rules = _set_or_none(model.rules) or []
152
+ return NetworkPolicy(
153
+ type=model.type_.value,
154
+ rules=[_to_egress_rule(rule) for rule in rules],
155
+ )
156
+
157
+
158
+ def _to_network_policy_post(policy: NetworkPolicy | str) -> SandboxNetworkPolicyPOST:
159
+ if isinstance(policy, str):
160
+ policy = NetworkPolicy(type=policy)
161
+ body = SandboxNetworkPolicyPOST(type_=SandboxNetworkPolicyType(policy.type))
162
+ if policy.type == "allow-list":
163
+ body.rules = [
164
+ SandboxEgressRule(
165
+ domain=rule.domain, protocol=SandboxEgressRuleProtocol(rule.protocol)
166
+ )
167
+ for rule in policy.rules
168
+ ]
169
+ elif policy.rules:
170
+ raise ValueError("rules are only allowed for an allow-list network policy")
171
+ return body
172
+
173
+
134
174
  def _to_sandbox(model: GeneratedSandbox) -> Sandbox:
135
175
  return Sandbox(
136
176
  id=model.id,
137
177
  status=model.status.value,
138
- plan=model.plan.value,
139
- network_policy=model.network_policy.default.value,
178
+ plan=str(model.plan),
179
+ network_policy=_to_network_policy(model.network_policy),
140
180
  region=model.region,
141
181
  timeout_seconds=model.timeout_seconds,
182
+ idle_timeout_seconds=model.idle_timeout_seconds,
142
183
  created_at=model.created_at,
143
184
  terminated_at=_set_or_none(model.terminated_at),
144
185
  )
@@ -165,7 +206,7 @@ def _to_snapshot(model: GeneratedSandboxSnapshot) -> Snapshot:
165
206
  source_sandbox_id=model.source_sandbox_id,
166
207
  kind=model.kind.value,
167
208
  status=model.status.value,
168
- plan=model.plan.value,
209
+ plan=str(model.plan),
169
210
  requested_at=model.requested_at,
170
211
  name=_set_or_none(model.name),
171
212
  captured_at=_set_or_none(model.captured_at),
@@ -239,7 +280,8 @@ class SandboxApi:
239
280
  owner_id: str,
240
281
  plan: str | None,
241
282
  timeout_seconds: int | None,
242
- network_policy: str | None,
283
+ idle_timeout_seconds: int | None,
284
+ network_policy: NetworkPolicy | str | None,
243
285
  region: str | None,
244
286
  env: dict[str, str] | None,
245
287
  snapshot_id: str | None,
@@ -247,15 +289,15 @@ class SandboxApi:
247
289
  ) -> Sandbox:
248
290
  body = SandboxPOST(owner_id=owner_id)
249
291
  if plan is not None:
250
- body.plan = SandboxPlan(plan)
292
+ body.plan = plan
251
293
  if timeout_seconds is not None:
252
294
  body.timeout_seconds = timeout_seconds
295
+ if idle_timeout_seconds is not None:
296
+ body.idle_timeout_seconds = idle_timeout_seconds
253
297
  if region is not None:
254
298
  body.region = region
255
299
  if network_policy is not None:
256
- body.network_policy = SandboxNetworkPolicy(
257
- default=SandboxNetworkPolicyDefault(network_policy)
258
- )
300
+ body.network_policy = _to_network_policy_post(network_policy)
259
301
  if env is not None:
260
302
  body.env = SandboxPOSTEnv.from_dict(env)
261
303
  if snapshot_id is not None:
@@ -352,13 +394,13 @@ class SandboxApi:
352
394
  async def create_snapshot(
353
395
  self,
354
396
  sandbox_id: str,
355
- kind: str,
397
+ kind: str | None,
356
398
  name: str | None,
357
399
  expires_at: datetime | None,
358
400
  owner_id: str | Unset,
359
401
  ) -> Snapshot:
360
402
  body = SandboxSnapshotPOST(
361
- kind=SandboxSnapshotKind(kind),
403
+ kind=SandboxSnapshotKind(kind) if kind is not None else UNSET,
362
404
  name=name if name is not None else UNSET,
363
405
  expires_at=expires_at if expires_at is not None else UNSET,
364
406
  )
@@ -56,6 +56,8 @@ from render.experimental.sandbox.files import (
56
56
  run_blocking,
57
57
  )
58
58
  from render.experimental.sandbox.types import (
59
+ EgressRule,
60
+ NetworkPolicy,
59
61
  Sandbox,
60
62
  SandboxExecEvent,
61
63
  SandboxExecExit,
@@ -79,13 +81,21 @@ from render.public_api.api.sandboxes import (
79
81
  )
80
82
  from render.public_api.models.error import Error
81
83
  from render.public_api.models.sandbox import Sandbox as GeneratedSandbox
84
+ from render.public_api.models.sandbox_egress_rule import SandboxEgressRule
85
+ from render.public_api.models.sandbox_egress_rule_protocol import (
86
+ SandboxEgressRuleProtocol,
87
+ )
82
88
  from render.public_api.models.sandbox_group import SandboxGroup as GeneratedSandboxGroup
83
89
  from render.public_api.models.sandbox_group_with_cursor import SandboxGroupWithCursor
84
- from render.public_api.models.sandbox_network_policy import SandboxNetworkPolicy
85
- from render.public_api.models.sandbox_network_policy_default import (
86
- SandboxNetworkPolicyDefault,
90
+ from render.public_api.models.sandbox_network_policy import (
91
+ SandboxNetworkPolicy as GeneratedNetworkPolicy,
92
+ )
93
+ from render.public_api.models.sandbox_network_policy_post import (
94
+ SandboxNetworkPolicyPOST,
95
+ )
96
+ from render.public_api.models.sandbox_network_policy_type import (
97
+ SandboxNetworkPolicyType,
87
98
  )
88
- from render.public_api.models.sandbox_plan import SandboxPlan
89
99
  from render.public_api.models.sandbox_post import SandboxPOST
90
100
  from render.public_api.models.sandbox_post_env import SandboxPOSTEnv
91
101
  from render.public_api.models.sandbox_snapshot import (
@@ -133,14 +143,45 @@ def _set_or_none(value: _T | Unset | None) -> _T | None:
133
143
  return None if isinstance(value, Unset) else value
134
144
 
135
145
 
146
+ def _to_egress_rule(model: SandboxEgressRule) -> EgressRule:
147
+ if isinstance(model.protocol, Unset):
148
+ return EgressRule(domain=model.domain)
149
+ return EgressRule(domain=model.domain, protocol=model.protocol.value)
150
+
151
+
152
+ def _to_network_policy(model: GeneratedNetworkPolicy) -> NetworkPolicy:
153
+ rules = _set_or_none(model.rules) or []
154
+ return NetworkPolicy(
155
+ type=model.type_.value,
156
+ rules=[_to_egress_rule(rule) for rule in rules],
157
+ )
158
+
159
+
160
+ def _to_network_policy_post(policy: NetworkPolicy | str) -> SandboxNetworkPolicyPOST:
161
+ if isinstance(policy, str):
162
+ policy = NetworkPolicy(type=policy)
163
+ body = SandboxNetworkPolicyPOST(type_=SandboxNetworkPolicyType(policy.type))
164
+ if policy.type == "allow-list":
165
+ body.rules = [
166
+ SandboxEgressRule(
167
+ domain=rule.domain, protocol=SandboxEgressRuleProtocol(rule.protocol)
168
+ )
169
+ for rule in policy.rules
170
+ ]
171
+ elif policy.rules:
172
+ raise ValueError("rules are only allowed for an allow-list network policy")
173
+ return body
174
+
175
+
136
176
  def _to_sandbox(model: GeneratedSandbox) -> Sandbox:
137
177
  return Sandbox(
138
178
  id=model.id,
139
179
  status=model.status.value,
140
- plan=model.plan.value,
141
- network_policy=model.network_policy.default.value,
180
+ plan=str(model.plan),
181
+ network_policy=_to_network_policy(model.network_policy),
142
182
  region=model.region,
143
183
  timeout_seconds=model.timeout_seconds,
184
+ idle_timeout_seconds=model.idle_timeout_seconds,
144
185
  created_at=model.created_at,
145
186
  terminated_at=_set_or_none(model.terminated_at),
146
187
  )
@@ -167,7 +208,7 @@ def _to_snapshot(model: GeneratedSandboxSnapshot) -> Snapshot:
167
208
  source_sandbox_id=model.source_sandbox_id,
168
209
  kind=model.kind.value,
169
210
  status=model.status.value,
170
- plan=model.plan.value,
211
+ plan=str(model.plan),
171
212
  requested_at=model.requested_at,
172
213
  name=_set_or_none(model.name),
173
214
  captured_at=_set_or_none(model.captured_at),
@@ -241,7 +282,8 @@ class SyncSandboxApi:
241
282
  owner_id: str,
242
283
  plan: str | None,
243
284
  timeout_seconds: int | None,
244
- network_policy: str | None,
285
+ idle_timeout_seconds: int | None,
286
+ network_policy: NetworkPolicy | str | None,
245
287
  region: str | None,
246
288
  env: dict[str, str] | None,
247
289
  snapshot_id: str | None,
@@ -249,15 +291,15 @@ class SyncSandboxApi:
249
291
  ) -> Sandbox:
250
292
  body = SandboxPOST(owner_id=owner_id)
251
293
  if plan is not None:
252
- body.plan = SandboxPlan(plan)
294
+ body.plan = plan
253
295
  if timeout_seconds is not None:
254
296
  body.timeout_seconds = timeout_seconds
297
+ if idle_timeout_seconds is not None:
298
+ body.idle_timeout_seconds = idle_timeout_seconds
255
299
  if region is not None:
256
300
  body.region = region
257
301
  if network_policy is not None:
258
- body.network_policy = SandboxNetworkPolicy(
259
- default=SandboxNetworkPolicyDefault(network_policy)
260
- )
302
+ body.network_policy = _to_network_policy_post(network_policy)
261
303
  if env is not None:
262
304
  body.env = SandboxPOSTEnv.from_dict(env)
263
305
  if snapshot_id is not None:
@@ -352,13 +394,13 @@ class SyncSandboxApi:
352
394
  def create_snapshot(
353
395
  self,
354
396
  sandbox_id: str,
355
- kind: str,
397
+ kind: str | None,
356
398
  name: str | None,
357
399
  expires_at: datetime | None,
358
400
  owner_id: str | Unset,
359
401
  ) -> Snapshot:
360
402
  body = SandboxSnapshotPOST(
361
- kind=SandboxSnapshotKind(kind),
403
+ kind=SandboxSnapshotKind(kind) if kind is not None else UNSET,
362
404
  name=name if name is not None else UNSET,
363
405
  expires_at=expires_at if expires_at is not None else UNSET,
364
406
  )
@@ -11,6 +11,7 @@ from render.client.errors import RenderError
11
11
  from render.experimental.sandbox.api import SandboxApi
12
12
  from render.experimental.sandbox.files import normalize_remote_path
13
13
  from render.experimental.sandbox.types import (
14
+ NetworkPolicy,
14
15
  Sandbox,
15
16
  SandboxExecEvent,
16
17
  SandboxGroupList,
@@ -56,7 +57,8 @@ class SandboxClient:
56
57
  owner_id: str | None = None,
57
58
  plan: str | None = None,
58
59
  timeout_seconds: int | None = None,
59
- network_policy: str | None = None,
60
+ idle_timeout_seconds: int | None = None,
61
+ network_policy: NetworkPolicy | str | None = None,
60
62
  region: str | None = None,
61
63
  env: dict[str, str] | None = None,
62
64
  snapshot_id: str | None = None,
@@ -65,8 +67,14 @@ class SandboxClient:
65
67
  """Create a sandbox and return its initial state.
66
68
 
67
69
  All parameters are optional. Unspecified fields fall back to the
68
- workspace defaults enforced by the API (plan starter, 7200s timeout,
69
- workspace default region and network policy).
70
+ workspace defaults enforced by the API (plan starter, 24-hour lifetime,
71
+ 15-minute idle timeout, workspace default region and network policy).
72
+ Set idle_timeout_seconds to 0 to disable automatic idle suspension.
73
+
74
+ network_policy is a NetworkPolicy, or a policy type string as a
75
+ shorthand for one without rules. To restrict outbound traffic to
76
+ specific destinations, pass
77
+ NetworkPolicy(type="allow-list", rules=[EgressRule(domain=...)]).
70
78
 
71
79
  snapshot_id starts the sandbox from that snapshot; snapshot_name starts
72
80
  it from the available snapshot that name currently resolves to in the
@@ -84,6 +92,7 @@ class SandboxClient:
84
92
  owner_id=resolved_owner_id,
85
93
  plan=plan,
86
94
  timeout_seconds=timeout_seconds,
95
+ idle_timeout_seconds=idle_timeout_seconds,
87
96
  network_policy=network_policy,
88
97
  region=resolved_region,
89
98
  env=env,
@@ -215,7 +224,7 @@ class SnapshotClient:
215
224
  self,
216
225
  sandbox_id: str,
217
226
  *,
218
- kind: str = "filesystem",
227
+ kind: str | None = None,
219
228
  name: str | None = None,
220
229
  expires_at: datetime | None = None,
221
230
  owner_id: str | None = None,