runloop-api-client 0.3.0__tar.gz → 0.5.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 (139) hide show
  1. runloop_api_client-0.5.0/.release-please-manifest.json +3 -0
  2. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/CHANGELOG.md +35 -0
  3. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/PKG-INFO +1 -1
  4. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/api.md +4 -0
  5. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/pyproject.toml +3 -7
  6. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/requirements-dev.lock +1 -1
  7. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_base_client.py +1 -1
  8. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_version.py +1 -1
  9. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/devboxes/devboxes.py +247 -0
  10. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/__init__.py +1 -0
  11. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -1
  12. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -1
  13. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_create_params.py +6 -0
  14. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -1
  15. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_snapshot_view.py +3 -0
  16. runloop_api_client-0.5.0/src/runloop_api_client/types/devbox_tunnel_view.py +17 -0
  17. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_view.py +3 -1
  18. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/test_devboxes.py +231 -0
  19. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_client.py +19 -2
  20. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_models.py +1 -1
  21. runloop_api_client-0.3.0/.release-please-manifest.json +0 -3
  22. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/.gitignore +0 -0
  23. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/CONTRIBUTING.md +0 -0
  24. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/LICENSE +0 -0
  25. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/README.md +0 -0
  26. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/SECURITY.md +0 -0
  27. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/bin/check-release-environment +0 -0
  28. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/bin/publish-pypi +0 -0
  29. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/examples/.keep +0 -0
  30. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/mypy.ini +0 -0
  31. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/noxfile.py +0 -0
  32. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/release-please-config.json +0 -0
  33. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/requirements.lock +0 -0
  34. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop/lib/.keep +0 -0
  35. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/__init__.py +0 -0
  36. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_client.py +0 -0
  37. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_compat.py +0 -0
  38. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_constants.py +0 -0
  39. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_exceptions.py +0 -0
  40. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_files.py +0 -0
  41. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_models.py +0 -0
  42. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_qs.py +0 -0
  43. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_resource.py +0 -0
  44. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_response.py +0 -0
  45. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_streaming.py +0 -0
  46. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_types.py +0 -0
  47. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  48. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  49. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  50. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  51. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  52. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  53. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  54. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  55. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  56. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/lib/.keep +0 -0
  57. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/py.typed +0 -0
  58. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/__init__.py +0 -0
  59. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  60. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  61. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  62. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  63. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/functions/__init__.py +0 -0
  64. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/functions/functions.py +0 -0
  65. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/functions/invocations.py +0 -0
  66. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/projects/__init__.py +0 -0
  67. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/projects/logs.py +0 -0
  68. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/resources/projects/projects.py +0 -0
  69. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  70. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  71. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  72. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  73. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  74. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  75. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  76. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/code_mount_parameters.py +0 -0
  77. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/code_mount_parameters_param.py +0 -0
  78. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  79. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_disk_snapshots_params.py +0 -0
  80. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_disk_snapshots_response.py +0 -0
  81. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  82. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  83. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  84. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  85. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  86. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  87. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  88. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  89. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  90. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  91. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_upload_file_params.py +0 -0
  92. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devbox_write_file_params.py +0 -0
  93. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  94. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  95. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  96. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  97. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  98. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  99. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/function_invoke_async_params.py +0 -0
  100. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/function_invoke_sync_params.py +0 -0
  101. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/function_list_view.py +0 -0
  102. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/functions/__init__.py +0 -0
  103. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/functions/function_invocation_list_view.py +0 -0
  104. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/functions/invocation_list_params.py +0 -0
  105. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/project_list_view.py +0 -0
  106. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/projects/__init__.py +0 -0
  107. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/resource_size.py +0 -0
  108. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  109. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared/function_invocation_execution_detail_view.py +0 -0
  110. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  111. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared/project_logs_view.py +0 -0
  112. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared/resource_size.py +0 -0
  113. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  114. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  115. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/__init__.py +0 -0
  116. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/__init__.py +0 -0
  117. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/devboxes/__init__.py +0 -0
  118. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  119. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  120. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/functions/__init__.py +0 -0
  121. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/functions/test_invocations.py +0 -0
  122. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/projects/__init__.py +0 -0
  123. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/projects/test_logs.py +0 -0
  124. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/test_blueprints.py +0 -0
  125. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/test_functions.py +0 -0
  126. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/api_resources/test_projects.py +0 -0
  127. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/conftest.py +0 -0
  128. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/sample_file.txt +0 -0
  129. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_deepcopy.py +0 -0
  130. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_extract_files.py +0 -0
  131. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_files.py +0 -0
  132. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_qs.py +0 -0
  133. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_required_args.py +0 -0
  134. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_response.py +0 -0
  135. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_streaming.py +0 -0
  136. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_transform.py +0 -0
  137. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_utils/test_proxy.py +0 -0
  138. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/test_utils/test_typing.py +0 -0
  139. {runloop_api_client-0.3.0 → runloop_api_client-0.5.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.5.0"
3
+ }
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 (2024-10-22)
4
+
5
+ Full Changelog: [v0.4.0...v0.5.0](https://github.com/runloopai/api-client-python/compare/v0.4.0...v0.5.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([#224](https://github.com/runloopai/api-client-python/issues/224)) ([f536d22](https://github.com/runloopai/api-client-python/commit/f536d22b28c9c92d08267ae902dafb2e9a825e38))
10
+ * **api:** api update ([#226](https://github.com/runloopai/api-client-python/issues/226)) ([c3f93d1](https://github.com/runloopai/api-client-python/commit/c3f93d1109b5e04afe3c42881b6989e4a940dbf0))
11
+ * **api:** api update ([#227](https://github.com/runloopai/api-client-python/issues/227)) ([ea18fbc](https://github.com/runloopai/api-client-python/commit/ea18fbca67b109d03123effd8b1a5451d041fef5))
12
+ * **api:** api update ([#228](https://github.com/runloopai/api-client-python/issues/228)) ([e5ac996](https://github.com/runloopai/api-client-python/commit/e5ac996e3e4092c2ee513cfe928650f7c3628eb7))
13
+ * **api:** api update ([#229](https://github.com/runloopai/api-client-python/issues/229)) ([df42110](https://github.com/runloopai/api-client-python/commit/df4211097357294424738157119e43f03e9e6da5))
14
+
15
+ ## 0.4.0 (2024-10-22)
16
+
17
+ Full Changelog: [v0.3.0...v0.4.0](https://github.com/runloopai/api-client-python/compare/v0.3.0...v0.4.0)
18
+
19
+ ### Features
20
+
21
+ * **api:** api update ([#206](https://github.com/runloopai/api-client-python/issues/206)) ([1018bb4](https://github.com/runloopai/api-client-python/commit/1018bb4e9416e4d88ba82f435b61c8aba3f1235a))
22
+ * **api:** api update ([#208](https://github.com/runloopai/api-client-python/issues/208)) ([d0c2bd8](https://github.com/runloopai/api-client-python/commit/d0c2bd8ec96edae0a96208d12049991e3ed05a87))
23
+ * **api:** api update ([#209](https://github.com/runloopai/api-client-python/issues/209)) ([5ba4709](https://github.com/runloopai/api-client-python/commit/5ba470949ffd1772f7211769aaf44d848f46fc58))
24
+ * **api:** api update ([#210](https://github.com/runloopai/api-client-python/issues/210)) ([620fcb9](https://github.com/runloopai/api-client-python/commit/620fcb90f24fe01804bd73ed970e3af0d3f65009))
25
+ * **api:** api update ([#211](https://github.com/runloopai/api-client-python/issues/211)) ([b181289](https://github.com/runloopai/api-client-python/commit/b18128942293ab07b3fa1b40cd05061746b5d17c))
26
+ * **api:** api update ([#212](https://github.com/runloopai/api-client-python/issues/212)) ([6410fed](https://github.com/runloopai/api-client-python/commit/6410fed4c958f4d38dea32fa7c2b894fb2424549))
27
+ * **api:** api update ([#213](https://github.com/runloopai/api-client-python/issues/213)) ([4c7552a](https://github.com/runloopai/api-client-python/commit/4c7552ae74d688a75a95cbf9e0147156dd558469))
28
+ * **api:** api update ([#214](https://github.com/runloopai/api-client-python/issues/214)) ([a02b476](https://github.com/runloopai/api-client-python/commit/a02b4763d6c7e2a47b300c6274a9b6b0a5f620dd))
29
+ * **api:** api update ([#215](https://github.com/runloopai/api-client-python/issues/215)) ([87fb66e](https://github.com/runloopai/api-client-python/commit/87fb66ed3d8126db93eb5b7245c10fb2fcf4533b))
30
+ * **api:** api update ([#216](https://github.com/runloopai/api-client-python/issues/216)) ([568d2f8](https://github.com/runloopai/api-client-python/commit/568d2f821df99bff0bd4ea31f1398df94dccbf2d))
31
+ * **api:** api update ([#217](https://github.com/runloopai/api-client-python/issues/217)) ([23902ae](https://github.com/runloopai/api-client-python/commit/23902aead147c749528b726d25c92d72cf0fb5f5))
32
+ * **api:** api update ([#218](https://github.com/runloopai/api-client-python/issues/218)) ([5bd1497](https://github.com/runloopai/api-client-python/commit/5bd1497d6b23f0630b74a38696f52c7d691a9a50))
33
+ * **api:** api update ([#219](https://github.com/runloopai/api-client-python/issues/219)) ([c2f5075](https://github.com/runloopai/api-client-python/commit/c2f5075c8a230524c457b491a8a796550d43695b))
34
+ * **api:** api update ([#220](https://github.com/runloopai/api-client-python/issues/220)) ([6bc6ffb](https://github.com/runloopai/api-client-python/commit/6bc6ffbd7f13204744b9f7e29f129326ea38229a))
35
+ * **api:** api update ([#221](https://github.com/runloopai/api-client-python/issues/221)) ([da27ecc](https://github.com/runloopai/api-client-python/commit/da27eccbfa6df1075e1a20d9e4a4d6abea31f731))
36
+ * **api:** api update ([#222](https://github.com/runloopai/api-client-python/issues/222)) ([753ea7c](https://github.com/runloopai/api-client-python/commit/753ea7cd62cccc384166223f762af1cfea06c08e))
37
+
3
38
  ## 0.3.0 (2024-10-14)
4
39
 
5
40
  Full Changelog: [v0.2.2...v0.3.0](https://github.com/runloopai/api-client-python/compare/v0.2.2...v0.3.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
@@ -50,6 +50,7 @@ from runloop_api_client.types import (
50
50
  DevboxListView,
51
51
  DevboxSnapshotListView,
52
52
  DevboxSnapshotView,
53
+ DevboxTunnelView,
53
54
  DevboxView,
54
55
  DevboxCreateSSHKeyResponse,
55
56
  DevboxReadFileContentsResponse,
@@ -63,13 +64,16 @@ Methods:
63
64
  - <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
64
65
  - <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_list_view.py">DevboxListView</a></code>
65
66
  - <code title="post /v1/devboxes/{id}/create_ssh_key">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_ssh_key</a>(id) -> <a href="./src/runloop_api_client/types/devbox_create_ssh_key_response.py">DevboxCreateSSHKeyResponse</a></code>
67
+ - <code title="post /v1/devboxes/{id}/create_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_tunnel</a>(id) -> <a href="./src/runloop_api_client/types/devbox_tunnel_view.py">DevboxTunnelView</a></code>
66
68
  - <code title="get /v1/devboxes/disk_snapshots">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">disk_snapshots</a>(\*\*<a href="src/runloop_api_client/types/devbox_disk_snapshots_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_list_view.py">DevboxSnapshotListView</a></code>
67
69
  - <code title="post /v1/devboxes/{id}/download_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">download_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_download_file_params.py">params</a>) -> BinaryAPIResponse</code>
68
70
  - <code title="post /v1/devboxes/{id}/execute_async">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_async</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_async_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_async_execution_detail_view.py">DevboxAsyncExecutionDetailView</a></code>
69
71
  - <code title="post /v1/devboxes/{id}/execute_sync">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">execute_sync</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_execute_sync_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
70
72
  - <code title="post /v1/devboxes/{id}/read_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">read_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_read_file_contents_params.py">params</a>) -> str</code>
73
+ - <code title="post /v1/devboxes/{id}/resume">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">resume</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
71
74
  - <code title="post /v1/devboxes/{id}/shutdown">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">shutdown</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
72
75
  - <code title="post /v1/devboxes/{id}/snapshot_disk">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">snapshot_disk</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_snapshot_disk_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
76
+ - <code title="post /v1/devboxes/{id}/suspend">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">suspend</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
73
77
  - <code title="post /v1/devboxes/{id}/upload_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">upload_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_upload_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_upload_file_response.py">object</a></code>
74
78
  - <code title="post /v1/devboxes/{id}/write_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">write_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_write_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>
75
79
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.3.0"
3
+ version = "0.5.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -63,11 +63,11 @@ format = { chain = [
63
63
  "format:ruff",
64
64
  "format:docs",
65
65
  "fix:ruff",
66
+ # run formatting again to fix any inconsistencies when imports are stripped
67
+ "format:ruff",
66
68
  ]}
67
- "format:black" = "black ."
68
69
  "format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
69
70
  "format:ruff" = "ruff format"
70
- "format:isort" = "isort ."
71
71
 
72
72
  "lint" = { chain = [
73
73
  "check:ruff",
@@ -125,10 +125,6 @@ path = "README.md"
125
125
  pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
126
126
  replacement = '[\1](https://github.com/runloopai/api-client-python/tree/main/\g<2>)'
127
127
 
128
- [tool.black]
129
- line-length = 120
130
- target-version = ["py37"]
131
-
132
128
  [tool.pytest.ini_options]
133
129
  testpaths = ["tests"]
134
130
  addopts = "--tb=short"
@@ -80,7 +80,7 @@ pytz==2023.3.post1
80
80
  # via dirty-equals
81
81
  respx==0.20.2
82
82
  rich==13.7.1
83
- ruff==0.6.5
83
+ ruff==0.6.9
84
84
  setuptools==68.2.2
85
85
  # via nodeenv
86
86
  six==1.16.0
@@ -1575,7 +1575,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1575
1575
  except Exception as err:
1576
1576
  log.debug("Encountered Exception", exc_info=True)
1577
1577
 
1578
- if retries_taken > 0:
1578
+ if remaining_retries > 0:
1579
1579
  return await self._retry_request(
1580
1580
  input_options,
1581
1581
  cast_to,
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "runloop_api_client"
4
- __version__ = "0.3.0" # x-release-please-version
4
+ __version__ = "0.5.0" # x-release-please-version
@@ -60,6 +60,7 @@ from ..._response import (
60
60
  from ..._base_client import make_request_options
61
61
  from ...types.devbox_view import DevboxView
62
62
  from ...types.devbox_list_view import DevboxListView
63
+ from ...types.devbox_tunnel_view import DevboxTunnelView
63
64
  from ...types.devbox_snapshot_view import DevboxSnapshotView
64
65
  from ...types.devbox_snapshot_list_view import DevboxSnapshotListView
65
66
  from ...types.code_mount_parameters_param import CodeMountParametersParam
@@ -102,6 +103,7 @@ class DevboxesResource(SyncAPIResource):
102
103
  def create(
103
104
  self,
104
105
  *,
106
+ available_ports: Iterable[int] | NotGiven = NOT_GIVEN,
105
107
  blueprint_id: str | NotGiven = NOT_GIVEN,
106
108
  blueprint_name: str | NotGiven = NOT_GIVEN,
107
109
  code_mounts: Iterable[CodeMountParametersParam] | NotGiven = NOT_GIVEN,
@@ -127,6 +129,9 @@ class DevboxesResource(SyncAPIResource):
127
129
  the 'pending' state and will transition to 'running' once it is ready.
128
130
 
129
131
  Args:
132
+ available_ports: A list of ports to make available on the Devbox. Call createTunnel to open a
133
+ tunnel to the port.
134
+
130
135
  blueprint_id: (Optional) Blueprint to use for the Devbox. If none set, the Devbox will be
131
136
  created with the default Runloop Devbox image.
132
137
 
@@ -169,6 +174,7 @@ class DevboxesResource(SyncAPIResource):
169
174
  "/v1/devboxes",
170
175
  body=maybe_transform(
171
176
  {
177
+ "available_ports": available_ports,
172
178
  "blueprint_id": blueprint_id,
173
179
  "blueprint_name": blueprint_name,
174
180
  "code_mounts": code_mounts,
@@ -309,6 +315,39 @@ class DevboxesResource(SyncAPIResource):
309
315
  cast_to=DevboxCreateSSHKeyResponse,
310
316
  )
311
317
 
318
+ def create_tunnel(
319
+ self,
320
+ id: str,
321
+ *,
322
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
323
+ # The extra values given here take precedence over values defined on the client or passed to this method.
324
+ extra_headers: Headers | None = None,
325
+ extra_query: Query | None = None,
326
+ extra_body: Body | None = None,
327
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
328
+ ) -> DevboxTunnelView:
329
+ """
330
+ Create a tunnel to an available port on the Devbox.
331
+
332
+ Args:
333
+ extra_headers: Send extra headers
334
+
335
+ extra_query: Add additional query parameters to the request
336
+
337
+ extra_body: Add additional JSON properties to the request
338
+
339
+ timeout: Override the client-level default timeout for this request, in seconds
340
+ """
341
+ if not id:
342
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
343
+ return self._post(
344
+ f"/v1/devboxes/{id}/create_tunnel",
345
+ options=make_request_options(
346
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
347
+ ),
348
+ cast_to=DevboxTunnelView,
349
+ )
350
+
312
351
  def disk_snapshots(
313
352
  self,
314
353
  *,
@@ -525,6 +564,39 @@ class DevboxesResource(SyncAPIResource):
525
564
  cast_to=str,
526
565
  )
527
566
 
567
+ def resume(
568
+ self,
569
+ id: str,
570
+ *,
571
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
572
+ # The extra values given here take precedence over values defined on the client or passed to this method.
573
+ extra_headers: Headers | None = None,
574
+ extra_query: Query | None = None,
575
+ extra_body: Body | None = None,
576
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
577
+ ) -> DevboxView:
578
+ """
579
+ Resume a suspended devbox by id.
580
+
581
+ Args:
582
+ extra_headers: Send extra headers
583
+
584
+ extra_query: Add additional query parameters to the request
585
+
586
+ extra_body: Add additional JSON properties to the request
587
+
588
+ timeout: Override the client-level default timeout for this request, in seconds
589
+ """
590
+ if not id:
591
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
592
+ return self._post(
593
+ f"/v1/devboxes/{id}/resume",
594
+ options=make_request_options(
595
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
596
+ ),
597
+ cast_to=DevboxView,
598
+ )
599
+
528
600
  def shutdown(
529
601
  self,
530
602
  id: str,
@@ -605,6 +677,40 @@ class DevboxesResource(SyncAPIResource):
605
677
  cast_to=DevboxSnapshotView,
606
678
  )
607
679
 
680
+ def suspend(
681
+ self,
682
+ id: str,
683
+ *,
684
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
685
+ # The extra values given here take precedence over values defined on the client or passed to this method.
686
+ extra_headers: Headers | None = None,
687
+ extra_query: Query | None = None,
688
+ extra_body: Body | None = None,
689
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
690
+ ) -> DevboxView:
691
+ """Suspend a devbox by id.
692
+
693
+ This will take the devbox out of service.
694
+
695
+ Args:
696
+ extra_headers: Send extra headers
697
+
698
+ extra_query: Add additional query parameters to the request
699
+
700
+ extra_body: Add additional JSON properties to the request
701
+
702
+ timeout: Override the client-level default timeout for this request, in seconds
703
+ """
704
+ if not id:
705
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
706
+ return self._post(
707
+ f"/v1/devboxes/{id}/suspend",
708
+ options=make_request_options(
709
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
710
+ ),
711
+ cast_to=DevboxView,
712
+ )
713
+
608
714
  def upload_file(
609
715
  self,
610
716
  id: str,
@@ -731,6 +837,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
731
837
  async def create(
732
838
  self,
733
839
  *,
840
+ available_ports: Iterable[int] | NotGiven = NOT_GIVEN,
734
841
  blueprint_id: str | NotGiven = NOT_GIVEN,
735
842
  blueprint_name: str | NotGiven = NOT_GIVEN,
736
843
  code_mounts: Iterable[CodeMountParametersParam] | NotGiven = NOT_GIVEN,
@@ -756,6 +863,9 @@ class AsyncDevboxesResource(AsyncAPIResource):
756
863
  the 'pending' state and will transition to 'running' once it is ready.
757
864
 
758
865
  Args:
866
+ available_ports: A list of ports to make available on the Devbox. Call createTunnel to open a
867
+ tunnel to the port.
868
+
759
869
  blueprint_id: (Optional) Blueprint to use for the Devbox. If none set, the Devbox will be
760
870
  created with the default Runloop Devbox image.
761
871
 
@@ -798,6 +908,7 @@ class AsyncDevboxesResource(AsyncAPIResource):
798
908
  "/v1/devboxes",
799
909
  body=await async_maybe_transform(
800
910
  {
911
+ "available_ports": available_ports,
801
912
  "blueprint_id": blueprint_id,
802
913
  "blueprint_name": blueprint_name,
803
914
  "code_mounts": code_mounts,
@@ -938,6 +1049,39 @@ class AsyncDevboxesResource(AsyncAPIResource):
938
1049
  cast_to=DevboxCreateSSHKeyResponse,
939
1050
  )
940
1051
 
1052
+ async def create_tunnel(
1053
+ self,
1054
+ id: str,
1055
+ *,
1056
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1057
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1058
+ extra_headers: Headers | None = None,
1059
+ extra_query: Query | None = None,
1060
+ extra_body: Body | None = None,
1061
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1062
+ ) -> DevboxTunnelView:
1063
+ """
1064
+ Create a tunnel to an available port on the Devbox.
1065
+
1066
+ Args:
1067
+ extra_headers: Send extra headers
1068
+
1069
+ extra_query: Add additional query parameters to the request
1070
+
1071
+ extra_body: Add additional JSON properties to the request
1072
+
1073
+ timeout: Override the client-level default timeout for this request, in seconds
1074
+ """
1075
+ if not id:
1076
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
1077
+ return await self._post(
1078
+ f"/v1/devboxes/{id}/create_tunnel",
1079
+ options=make_request_options(
1080
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1081
+ ),
1082
+ cast_to=DevboxTunnelView,
1083
+ )
1084
+
941
1085
  async def disk_snapshots(
942
1086
  self,
943
1087
  *,
@@ -1154,6 +1298,39 @@ class AsyncDevboxesResource(AsyncAPIResource):
1154
1298
  cast_to=str,
1155
1299
  )
1156
1300
 
1301
+ async def resume(
1302
+ self,
1303
+ id: str,
1304
+ *,
1305
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1306
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1307
+ extra_headers: Headers | None = None,
1308
+ extra_query: Query | None = None,
1309
+ extra_body: Body | None = None,
1310
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1311
+ ) -> DevboxView:
1312
+ """
1313
+ Resume a suspended devbox by id.
1314
+
1315
+ Args:
1316
+ extra_headers: Send extra headers
1317
+
1318
+ extra_query: Add additional query parameters to the request
1319
+
1320
+ extra_body: Add additional JSON properties to the request
1321
+
1322
+ timeout: Override the client-level default timeout for this request, in seconds
1323
+ """
1324
+ if not id:
1325
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
1326
+ return await self._post(
1327
+ f"/v1/devboxes/{id}/resume",
1328
+ options=make_request_options(
1329
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1330
+ ),
1331
+ cast_to=DevboxView,
1332
+ )
1333
+
1157
1334
  async def shutdown(
1158
1335
  self,
1159
1336
  id: str,
@@ -1234,6 +1411,40 @@ class AsyncDevboxesResource(AsyncAPIResource):
1234
1411
  cast_to=DevboxSnapshotView,
1235
1412
  )
1236
1413
 
1414
+ async def suspend(
1415
+ self,
1416
+ id: str,
1417
+ *,
1418
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1419
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1420
+ extra_headers: Headers | None = None,
1421
+ extra_query: Query | None = None,
1422
+ extra_body: Body | None = None,
1423
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1424
+ ) -> DevboxView:
1425
+ """Suspend a devbox by id.
1426
+
1427
+ This will take the devbox out of service.
1428
+
1429
+ Args:
1430
+ extra_headers: Send extra headers
1431
+
1432
+ extra_query: Add additional query parameters to the request
1433
+
1434
+ extra_body: Add additional JSON properties to the request
1435
+
1436
+ timeout: Override the client-level default timeout for this request, in seconds
1437
+ """
1438
+ if not id:
1439
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
1440
+ return await self._post(
1441
+ f"/v1/devboxes/{id}/suspend",
1442
+ options=make_request_options(
1443
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1444
+ ),
1445
+ cast_to=DevboxView,
1446
+ )
1447
+
1237
1448
  async def upload_file(
1238
1449
  self,
1239
1450
  id: str,
@@ -1345,6 +1556,9 @@ class DevboxesResourceWithRawResponse:
1345
1556
  self.create_ssh_key = to_raw_response_wrapper(
1346
1557
  devboxes.create_ssh_key,
1347
1558
  )
1559
+ self.create_tunnel = to_raw_response_wrapper(
1560
+ devboxes.create_tunnel,
1561
+ )
1348
1562
  self.disk_snapshots = to_raw_response_wrapper(
1349
1563
  devboxes.disk_snapshots,
1350
1564
  )
@@ -1361,12 +1575,18 @@ class DevboxesResourceWithRawResponse:
1361
1575
  self.read_file_contents = to_raw_response_wrapper(
1362
1576
  devboxes.read_file_contents,
1363
1577
  )
1578
+ self.resume = to_raw_response_wrapper(
1579
+ devboxes.resume,
1580
+ )
1364
1581
  self.shutdown = to_raw_response_wrapper(
1365
1582
  devboxes.shutdown,
1366
1583
  )
1367
1584
  self.snapshot_disk = to_raw_response_wrapper(
1368
1585
  devboxes.snapshot_disk,
1369
1586
  )
1587
+ self.suspend = to_raw_response_wrapper(
1588
+ devboxes.suspend,
1589
+ )
1370
1590
  self.upload_file = to_raw_response_wrapper(
1371
1591
  devboxes.upload_file,
1372
1592
  )
@@ -1399,6 +1619,9 @@ class AsyncDevboxesResourceWithRawResponse:
1399
1619
  self.create_ssh_key = async_to_raw_response_wrapper(
1400
1620
  devboxes.create_ssh_key,
1401
1621
  )
1622
+ self.create_tunnel = async_to_raw_response_wrapper(
1623
+ devboxes.create_tunnel,
1624
+ )
1402
1625
  self.disk_snapshots = async_to_raw_response_wrapper(
1403
1626
  devboxes.disk_snapshots,
1404
1627
  )
@@ -1415,12 +1638,18 @@ class AsyncDevboxesResourceWithRawResponse:
1415
1638
  self.read_file_contents = async_to_raw_response_wrapper(
1416
1639
  devboxes.read_file_contents,
1417
1640
  )
1641
+ self.resume = async_to_raw_response_wrapper(
1642
+ devboxes.resume,
1643
+ )
1418
1644
  self.shutdown = async_to_raw_response_wrapper(
1419
1645
  devboxes.shutdown,
1420
1646
  )
1421
1647
  self.snapshot_disk = async_to_raw_response_wrapper(
1422
1648
  devboxes.snapshot_disk,
1423
1649
  )
1650
+ self.suspend = async_to_raw_response_wrapper(
1651
+ devboxes.suspend,
1652
+ )
1424
1653
  self.upload_file = async_to_raw_response_wrapper(
1425
1654
  devboxes.upload_file,
1426
1655
  )
@@ -1453,6 +1682,9 @@ class DevboxesResourceWithStreamingResponse:
1453
1682
  self.create_ssh_key = to_streamed_response_wrapper(
1454
1683
  devboxes.create_ssh_key,
1455
1684
  )
1685
+ self.create_tunnel = to_streamed_response_wrapper(
1686
+ devboxes.create_tunnel,
1687
+ )
1456
1688
  self.disk_snapshots = to_streamed_response_wrapper(
1457
1689
  devboxes.disk_snapshots,
1458
1690
  )
@@ -1469,12 +1701,18 @@ class DevboxesResourceWithStreamingResponse:
1469
1701
  self.read_file_contents = to_streamed_response_wrapper(
1470
1702
  devboxes.read_file_contents,
1471
1703
  )
1704
+ self.resume = to_streamed_response_wrapper(
1705
+ devboxes.resume,
1706
+ )
1472
1707
  self.shutdown = to_streamed_response_wrapper(
1473
1708
  devboxes.shutdown,
1474
1709
  )
1475
1710
  self.snapshot_disk = to_streamed_response_wrapper(
1476
1711
  devboxes.snapshot_disk,
1477
1712
  )
1713
+ self.suspend = to_streamed_response_wrapper(
1714
+ devboxes.suspend,
1715
+ )
1478
1716
  self.upload_file = to_streamed_response_wrapper(
1479
1717
  devboxes.upload_file,
1480
1718
  )
@@ -1507,6 +1745,9 @@ class AsyncDevboxesResourceWithStreamingResponse:
1507
1745
  self.create_ssh_key = async_to_streamed_response_wrapper(
1508
1746
  devboxes.create_ssh_key,
1509
1747
  )
1748
+ self.create_tunnel = async_to_streamed_response_wrapper(
1749
+ devboxes.create_tunnel,
1750
+ )
1510
1751
  self.disk_snapshots = async_to_streamed_response_wrapper(
1511
1752
  devboxes.disk_snapshots,
1512
1753
  )
@@ -1523,12 +1764,18 @@ class AsyncDevboxesResourceWithStreamingResponse:
1523
1764
  self.read_file_contents = async_to_streamed_response_wrapper(
1524
1765
  devboxes.read_file_contents,
1525
1766
  )
1767
+ self.resume = async_to_streamed_response_wrapper(
1768
+ devboxes.resume,
1769
+ )
1526
1770
  self.shutdown = async_to_streamed_response_wrapper(
1527
1771
  devboxes.shutdown,
1528
1772
  )
1529
1773
  self.snapshot_disk = async_to_streamed_response_wrapper(
1530
1774
  devboxes.snapshot_disk,
1531
1775
  )
1776
+ self.suspend = async_to_streamed_response_wrapper(
1777
+ devboxes.suspend,
1778
+ )
1532
1779
  self.upload_file = async_to_streamed_response_wrapper(
1533
1780
  devboxes.upload_file,
1534
1781
  )
@@ -12,6 +12,7 @@ from .blueprint_view import BlueprintView as BlueprintView
12
12
  from .devbox_list_view import DevboxListView as DevboxListView
13
13
  from .project_list_view import ProjectListView as ProjectListView
14
14
  from .devbox_list_params import DevboxListParams as DevboxListParams
15
+ from .devbox_tunnel_view import DevboxTunnelView as DevboxTunnelView
15
16
  from .function_list_view import FunctionListView as FunctionListView
16
17
  from .blueprint_build_log import BlueprintBuildLog as BlueprintBuildLog
17
18
  from .blueprint_list_view import BlueprintListView as BlueprintListView
@@ -1,7 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
 
4
-
5
4
  from .._models import BaseModel
6
5
 
7
6
  __all__ = ["BlueprintBuildLog"]
@@ -1,7 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
 
4
-
5
4
  from .._models import BaseModel
6
5
 
7
6
  __all__ = ["BlueprintPreviewView"]
@@ -12,6 +12,12 @@ __all__ = ["DevboxCreateParams"]
12
12
 
13
13
 
14
14
  class DevboxCreateParams(TypedDict, total=False):
15
+ available_ports: Iterable[int]
16
+ """A list of ports to make available on the Devbox.
17
+
18
+ Call createTunnel to open a tunnel to the port.
19
+ """
20
+
15
21
  blueprint_id: str
16
22
  """(Optional) Blueprint to use for the Devbox.
17
23
 
@@ -1,7 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
 
4
-
5
4
  from .._models import BaseModel
6
5
 
7
6
  __all__ = ["DevboxCreateSSHKeyResponse"]
@@ -13,6 +13,9 @@ class DevboxSnapshotView(BaseModel):
13
13
  id: str
14
14
  """The unique identifier of the snapshot."""
15
15
 
16
+ create_time_ms: int
17
+ """Creation time of the Snapshot (Unix timestamp milliseconds)."""
18
+
16
19
  metadata: Dict[str, str]
17
20
  """metadata associated with the snapshot."""
18
21
 
@@ -0,0 +1,17 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+
4
+ from .._models import BaseModel
5
+
6
+ __all__ = ["DevboxTunnelView"]
7
+
8
+
9
+ class DevboxTunnelView(BaseModel):
10
+ devbox_id: str
11
+ """ID of the Devbox the tunnel routes to."""
12
+
13
+ port: int
14
+ """Port of the Devbox the tunnel routes to."""
15
+
16
+ url: str
17
+ """Public url used to access Devbox."""
@@ -28,7 +28,9 @@ class DevboxView(BaseModel):
28
28
  metadata: Dict[str, str]
29
29
  """The user defined Devbox metadata."""
30
30
 
31
- status: Literal["provisioning", "initializing", "running", "failure", "shutdown"]
31
+ status: Literal[
32
+ "provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
33
+ ]
32
34
  """The current status of the Devbox."""
33
35
 
34
36
  blueprint_id: Optional[str] = None