Skip to content

Commit 11923a3

Browse files
feat(api): api update (#229)
1 parent ca45adf commit 11923a3

6 files changed

Lines changed: 489 additions & 1 deletion

File tree

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 29
1+
configured_endpoints: 32
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-6cf047d01929db28b7655b33123900eeb28f3c5c12878b4a6d59676d839e8ccc.yml

api.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ from runloop_api_client.types import (
5050
DevboxListView,
5151
DevboxSnapshotListView,
5252
DevboxSnapshotView,
53+
DevboxTunnelView,
5354
DevboxView,
5455
DevboxCreateSSHKeyResponse,
5556
DevboxReadFileContentsResponse,
@@ -63,13 +64,16 @@ Methods:
6364
- <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>
6465
- <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>
6566
- <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>
6668
- <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>
6769
- <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>
6870
- <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>
6971
- <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>
7072
- <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>
7174
- <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>
7275
- <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>
7377
- <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>
7478
- <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>
7579

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
from ..._base_client import make_request_options
6161
from ...types.devbox_view import DevboxView
6262
from ...types.devbox_list_view import DevboxListView
63+
from ...types.devbox_tunnel_view import DevboxTunnelView
6364
from ...types.devbox_snapshot_view import DevboxSnapshotView
6465
from ...types.devbox_snapshot_list_view import DevboxSnapshotListView
6566
from ...types.code_mount_parameters_param import CodeMountParametersParam
@@ -314,6 +315,39 @@ def create_ssh_key(
314315
cast_to=DevboxCreateSSHKeyResponse,
315316
)
316317

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+
317351
def disk_snapshots(
318352
self,
319353
*,
@@ -530,6 +564,39 @@ def read_file_contents(
530564
cast_to=str,
531565
)
532566

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+
533600
def shutdown(
534601
self,
535602
id: str,
@@ -610,6 +677,40 @@ def snapshot_disk(
610677
cast_to=DevboxSnapshotView,
611678
)
612679

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+
613714
def upload_file(
614715
self,
615716
id: str,
@@ -948,6 +1049,39 @@ async def create_ssh_key(
9481049
cast_to=DevboxCreateSSHKeyResponse,
9491050
)
9501051

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+
9511085
async def disk_snapshots(
9521086
self,
9531087
*,
@@ -1164,6 +1298,39 @@ async def read_file_contents(
11641298
cast_to=str,
11651299
)
11661300

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+
11671334
async def shutdown(
11681335
self,
11691336
id: str,
@@ -1244,6 +1411,40 @@ async def snapshot_disk(
12441411
cast_to=DevboxSnapshotView,
12451412
)
12461413

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+
12471448
async def upload_file(
12481449
self,
12491450
id: str,
@@ -1355,6 +1556,9 @@ def __init__(self, devboxes: DevboxesResource) -> None:
13551556
self.create_ssh_key = to_raw_response_wrapper(
13561557
devboxes.create_ssh_key,
13571558
)
1559+
self.create_tunnel = to_raw_response_wrapper(
1560+
devboxes.create_tunnel,
1561+
)
13581562
self.disk_snapshots = to_raw_response_wrapper(
13591563
devboxes.disk_snapshots,
13601564
)
@@ -1371,12 +1575,18 @@ def __init__(self, devboxes: DevboxesResource) -> None:
13711575
self.read_file_contents = to_raw_response_wrapper(
13721576
devboxes.read_file_contents,
13731577
)
1578+
self.resume = to_raw_response_wrapper(
1579+
devboxes.resume,
1580+
)
13741581
self.shutdown = to_raw_response_wrapper(
13751582
devboxes.shutdown,
13761583
)
13771584
self.snapshot_disk = to_raw_response_wrapper(
13781585
devboxes.snapshot_disk,
13791586
)
1587+
self.suspend = to_raw_response_wrapper(
1588+
devboxes.suspend,
1589+
)
13801590
self.upload_file = to_raw_response_wrapper(
13811591
devboxes.upload_file,
13821592
)
@@ -1409,6 +1619,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
14091619
self.create_ssh_key = async_to_raw_response_wrapper(
14101620
devboxes.create_ssh_key,
14111621
)
1622+
self.create_tunnel = async_to_raw_response_wrapper(
1623+
devboxes.create_tunnel,
1624+
)
14121625
self.disk_snapshots = async_to_raw_response_wrapper(
14131626
devboxes.disk_snapshots,
14141627
)
@@ -1425,12 +1638,18 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
14251638
self.read_file_contents = async_to_raw_response_wrapper(
14261639
devboxes.read_file_contents,
14271640
)
1641+
self.resume = async_to_raw_response_wrapper(
1642+
devboxes.resume,
1643+
)
14281644
self.shutdown = async_to_raw_response_wrapper(
14291645
devboxes.shutdown,
14301646
)
14311647
self.snapshot_disk = async_to_raw_response_wrapper(
14321648
devboxes.snapshot_disk,
14331649
)
1650+
self.suspend = async_to_raw_response_wrapper(
1651+
devboxes.suspend,
1652+
)
14341653
self.upload_file = async_to_raw_response_wrapper(
14351654
devboxes.upload_file,
14361655
)
@@ -1463,6 +1682,9 @@ def __init__(self, devboxes: DevboxesResource) -> None:
14631682
self.create_ssh_key = to_streamed_response_wrapper(
14641683
devboxes.create_ssh_key,
14651684
)
1685+
self.create_tunnel = to_streamed_response_wrapper(
1686+
devboxes.create_tunnel,
1687+
)
14661688
self.disk_snapshots = to_streamed_response_wrapper(
14671689
devboxes.disk_snapshots,
14681690
)
@@ -1479,12 +1701,18 @@ def __init__(self, devboxes: DevboxesResource) -> None:
14791701
self.read_file_contents = to_streamed_response_wrapper(
14801702
devboxes.read_file_contents,
14811703
)
1704+
self.resume = to_streamed_response_wrapper(
1705+
devboxes.resume,
1706+
)
14821707
self.shutdown = to_streamed_response_wrapper(
14831708
devboxes.shutdown,
14841709
)
14851710
self.snapshot_disk = to_streamed_response_wrapper(
14861711
devboxes.snapshot_disk,
14871712
)
1713+
self.suspend = to_streamed_response_wrapper(
1714+
devboxes.suspend,
1715+
)
14881716
self.upload_file = to_streamed_response_wrapper(
14891717
devboxes.upload_file,
14901718
)
@@ -1517,6 +1745,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
15171745
self.create_ssh_key = async_to_streamed_response_wrapper(
15181746
devboxes.create_ssh_key,
15191747
)
1748+
self.create_tunnel = async_to_streamed_response_wrapper(
1749+
devboxes.create_tunnel,
1750+
)
15201751
self.disk_snapshots = async_to_streamed_response_wrapper(
15211752
devboxes.disk_snapshots,
15221753
)
@@ -1533,12 +1764,18 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
15331764
self.read_file_contents = async_to_streamed_response_wrapper(
15341765
devboxes.read_file_contents,
15351766
)
1767+
self.resume = async_to_streamed_response_wrapper(
1768+
devboxes.resume,
1769+
)
15361770
self.shutdown = async_to_streamed_response_wrapper(
15371771
devboxes.shutdown,
15381772
)
15391773
self.snapshot_disk = async_to_streamed_response_wrapper(
15401774
devboxes.snapshot_disk,
15411775
)
1776+
self.suspend = async_to_streamed_response_wrapper(
1777+
devboxes.suspend,
1778+
)
15421779
self.upload_file = async_to_streamed_response_wrapper(
15431780
devboxes.upload_file,
15441781
)

0 commit comments

Comments
 (0)