Skip to content

Commit 4e5f564

Browse files
feat(api): api update (#236)
1 parent 62ead5b commit 4e5f564

6 files changed

Lines changed: 40 additions & 10 deletions

File tree

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
configured_endpoints: 32
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-07fcefe880969dc7bb3c631d9943c83ff37c08f8f234fa303b05db09447b4a42.yml
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-3514fda365f190ba42def1c37a4893abb983bbc168970a03dcfb6fc1bd996a38.yml

api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Methods:
6464
- <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>
6565
- <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>
6666
- <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>
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_create_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_tunnel_view.py">DevboxTunnelView</a></code>
6868
- <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>
6969
- <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>
7070
- <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>

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
devbox_write_file_params,
2121
devbox_upload_file_params,
2222
devbox_execute_sync_params,
23+
devbox_create_tunnel_params,
2324
devbox_download_file_params,
2425
devbox_execute_async_params,
2526
devbox_snapshot_disk_params,
@@ -314,6 +315,7 @@ def create_tunnel(
314315
self,
315316
id: str,
316317
*,
318+
port: int,
317319
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
318320
# The extra values given here take precedence over values defined on the client or passed to this method.
319321
extra_headers: Headers | None = None,
@@ -325,6 +327,8 @@ def create_tunnel(
325327
Create a tunnel to an available port on the Devbox.
326328
327329
Args:
330+
port: Devbox port that tunnel will expose.
331+
328332
extra_headers: Send extra headers
329333
330334
extra_query: Add additional query parameters to the request
@@ -337,6 +341,7 @@ def create_tunnel(
337341
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
338342
return self._post(
339343
f"/v1/devboxes/{id}/create_tunnel",
344+
body=maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
340345
options=make_request_options(
341346
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
342347
),
@@ -1043,6 +1048,7 @@ async def create_tunnel(
10431048
self,
10441049
id: str,
10451050
*,
1051+
port: int,
10461052
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
10471053
# The extra values given here take precedence over values defined on the client or passed to this method.
10481054
extra_headers: Headers | None = None,
@@ -1054,6 +1060,8 @@ async def create_tunnel(
10541060
Create a tunnel to an available port on the Devbox.
10551061
10561062
Args:
1063+
port: Devbox port that tunnel will expose.
1064+
10571065
extra_headers: Send extra headers
10581066
10591067
extra_query: Add additional query parameters to the request
@@ -1066,6 +1074,7 @@ async def create_tunnel(
10661074
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
10671075
return await self._post(
10681076
f"/v1/devboxes/{id}/create_tunnel",
1077+
body=await async_maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
10691078
options=make_request_options(
10701079
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
10711080
),

src/runloop_api_client/types/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from .blueprint_build_parameters import BlueprintBuildParameters as BlueprintBuildParameters
3030
from .devbox_execute_sync_params import DevboxExecuteSyncParams as DevboxExecuteSyncParams
3131
from .code_mount_parameters_param import CodeMountParametersParam as CodeMountParametersParam
32+
from .devbox_create_tunnel_params import DevboxCreateTunnelParams as DevboxCreateTunnelParams
3233
from .devbox_download_file_params import DevboxDownloadFileParams as DevboxDownloadFileParams
3334
from .devbox_execute_async_params import DevboxExecuteAsyncParams as DevboxExecuteAsyncParams
3435
from .devbox_snapshot_disk_params import DevboxSnapshotDiskParams as DevboxSnapshotDiskParams
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
from typing_extensions import Required, TypedDict
6+
7+
__all__ = ["DevboxCreateTunnelParams"]
8+
9+
10+
class DevboxCreateTunnelParams(TypedDict, total=False):
11+
port: Required[int]
12+
"""Devbox port that tunnel will expose."""

tests/api_resources/test_devboxes.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -214,14 +214,16 @@ def test_path_params_create_ssh_key(self, client: Runloop) -> None:
214214
@parametrize
215215
def test_method_create_tunnel(self, client: Runloop) -> None:
216216
devbox = client.devboxes.create_tunnel(
217-
"id",
217+
id="id",
218+
port=0,
218219
)
219220
assert_matches_type(DevboxTunnelView, devbox, path=["response"])
220221

221222
@parametrize
222223
def test_raw_response_create_tunnel(self, client: Runloop) -> None:
223224
response = client.devboxes.with_raw_response.create_tunnel(
224-
"id",
225+
id="id",
226+
port=0,
225227
)
226228

227229
assert response.is_closed is True
@@ -232,7 +234,8 @@ def test_raw_response_create_tunnel(self, client: Runloop) -> None:
232234
@parametrize
233235
def test_streaming_response_create_tunnel(self, client: Runloop) -> None:
234236
with client.devboxes.with_streaming_response.create_tunnel(
235-
"id",
237+
id="id",
238+
port=0,
236239
) as response:
237240
assert not response.is_closed
238241
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -246,7 +249,8 @@ def test_streaming_response_create_tunnel(self, client: Runloop) -> None:
246249
def test_path_params_create_tunnel(self, client: Runloop) -> None:
247250
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
248251
client.devboxes.with_raw_response.create_tunnel(
249-
"",
252+
id="",
253+
port=0,
250254
)
251255

252256
@parametrize
@@ -922,14 +926,16 @@ async def test_path_params_create_ssh_key(self, async_client: AsyncRunloop) -> N
922926
@parametrize
923927
async def test_method_create_tunnel(self, async_client: AsyncRunloop) -> None:
924928
devbox = await async_client.devboxes.create_tunnel(
925-
"id",
929+
id="id",
930+
port=0,
926931
)
927932
assert_matches_type(DevboxTunnelView, devbox, path=["response"])
928933

929934
@parametrize
930935
async def test_raw_response_create_tunnel(self, async_client: AsyncRunloop) -> None:
931936
response = await async_client.devboxes.with_raw_response.create_tunnel(
932-
"id",
937+
id="id",
938+
port=0,
933939
)
934940

935941
assert response.is_closed is True
@@ -940,7 +946,8 @@ async def test_raw_response_create_tunnel(self, async_client: AsyncRunloop) -> N
940946
@parametrize
941947
async def test_streaming_response_create_tunnel(self, async_client: AsyncRunloop) -> None:
942948
async with async_client.devboxes.with_streaming_response.create_tunnel(
943-
"id",
949+
id="id",
950+
port=0,
944951
) as response:
945952
assert not response.is_closed
946953
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
@@ -954,7 +961,8 @@ async def test_streaming_response_create_tunnel(self, async_client: AsyncRunloop
954961
async def test_path_params_create_tunnel(self, async_client: AsyncRunloop) -> None:
955962
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
956963
await async_client.devboxes.with_raw_response.create_tunnel(
957-
"",
964+
id="",
965+
port=0,
958966
)
959967

960968
@parametrize

0 commit comments

Comments
 (0)