Skip to content

Commit e31e345

Browse files
release: 1.12.1 (#760)
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Albert Li <albert@runloop.ai>
1 parent 8002c0a commit e31e345

20 files changed

Lines changed: 27 additions & 383 deletions

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.12.0"
2+
".": "1.12.1"
33
}

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 118
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-132ed160716591bdcd9231c00da8c506d9451a5486b165fc27b2a01d93202082.yml
3-
openapi_spec_hash: c2b44d9e9cda56e32141a7ea3794bbba
4-
config_hash: 3bd89c812b96708c461fb98286ebf0b5
1+
configured_endpoints: 117
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-0568973e19e8af9fa953b2ded109ab2b69e76e90e2b74f33617dbf7092e26274.yml
3+
openapi_spec_hash: 10ba804ce69510d7985e05c77d0ffcf6
4+
config_hash: de99cfce88e2d1f02246dc6c2f43bc6c

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 1.12.1 (2026-03-19)
4+
5+
Full Changelog: [v1.12.0...v1.12.1](https://github.com/runloopai/api-client-python/compare/v1.12.0...v1.12.1)
6+
7+
### Chores
8+
9+
* remove create_tunnel endpoint ([627c994](https://github.com/runloopai/api-client-python/commit/627c9945cdaf3b2d0ca46a2832092dd4fa011863))
10+
311
## 1.12.0 (2026-03-18)
412

513
Full Changelog: [v1.11.0...v1.12.0](https://github.com/runloopai/api-client-python/compare/v1.11.0...v1.12.0)

README.md

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,6 @@ and offers both synchronous and asynchronous clients powered by [httpx](https://
99

1010
It is generated with [Stainless](https://www.stainless.com/).
1111

12-
## MCP Server
13-
14-
Use the Runloop MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.
15-
16-
[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40runloop%2Fapi-client-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBydW5sb29wL2FwaS1jbGllbnQtbWNwIl0sImVudiI6eyJSVU5MT09QX0FQSV9LRVkiOiJNeSBCZWFyZXIgVG9rZW4ifX0)
17-
[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40runloop%2Fapi-client-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40runloop%2Fapi-client-mcp%22%5D%2C%22env%22%3A%7B%22RUNLOOP_API_KEY%22%3A%22My%20Bearer%20Token%22%7D%7D)
18-
19-
> Note: You may need to set environment variables in your MCP client.
20-
2112
## Documentation
2213

2314
The REST API documentation can be found on

api.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ from runloop_api_client.types import (
131131
DevboxSendStdInResult,
132132
DevboxSnapshotListView,
133133
DevboxSnapshotView,
134-
DevboxTunnelView,
135134
DevboxView,
136135
TunnelView,
137136
DevboxCreateSSHKeyResponse,
@@ -147,7 +146,6 @@ Methods:
147146
- <code title="post /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
148147
- <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_view.py">SyncDevboxesCursorIDPage[DevboxView]</a></code>
149148
- <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>
150-
- <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>
151149
- <code title="post /v1/devboxes/disk_snapshots/{id}/delete">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">delete_disk_snapshot</a>(id) -> object</code>
152150
- <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>
153151
- <code title="post /v1/devboxes/{id}/enable_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">enable_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_enable_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/tunnel_view.py">TunnelView</a></code>

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "runloop_api_client"
3-
version = "1.12.0"
3+
version = "1.12.1"
44
description = "The official Python library for the runloop API"
55
dynamic = ["readme"]
66
license = "MIT"

src/runloop_api_client/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
__title__ = "runloop_api_client"
4-
__version__ = "1.12.0" # x-release-please-version
4+
__version__ = "1.12.1" # x-release-please-version

src/runloop_api_client/resources/benchmark_runs.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,11 @@ def cancel(
145145
timeout: float | httpx.Timeout | None | NotGiven = not_given,
146146
idempotency_key: str | None = None,
147147
) -> BenchmarkRunView:
148-
"""
149-
Cancel a currently running Benchmark run.
148+
"""Cancel a Benchmark run.
149+
150+
This will do the following: 1. Cancel all running
151+
scenarios and shutdown the underlying Devbox resources 2. Update the benchmark
152+
state to CANCELED 3. Calculate final score from completed scenarios
150153
151154
Args:
152155
extra_headers: Send extra headers
@@ -388,8 +391,11 @@ async def cancel(
388391
timeout: float | httpx.Timeout | None | NotGiven = not_given,
389392
idempotency_key: str | None = None,
390393
) -> BenchmarkRunView:
391-
"""
392-
Cancel a currently running Benchmark run.
394+
"""Cancel a Benchmark run.
395+
396+
This will do the following: 1. Cancel all running
397+
scenarios and shutdown the underlying Devbox resources 2. Update the benchmark
398+
state to CANCELED 3. Calculate final score from completed scenarios
393399
394400
Args:
395401
extra_headers: Send extra headers

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 0 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
devbox_shutdown_params,
2828
devbox_upload_file_params,
2929
devbox_execute_sync_params,
30-
devbox_create_tunnel_params,
3130
devbox_download_file_params,
3231
devbox_enable_tunnel_params,
3332
devbox_execute_async_params,
@@ -102,7 +101,6 @@
102101
from ...lib.polling_async import async_poll_until
103102
from ...types.devbox_view import DevboxView
104103
from ...types.tunnel_view import TunnelView
105-
from ...types.devbox_tunnel_view import DevboxTunnelView
106104
from ...types.shared_params.mount import Mount
107105
from ...types.devbox_snapshot_view import DevboxSnapshotView
108106
from ...types.shared.launch_parameters import LaunchParameters as SharedLaunchParameters
@@ -664,56 +662,6 @@ def create_ssh_key(
664662
cast_to=DevboxCreateSSHKeyResponse,
665663
)
666664

667-
@typing_extensions.deprecated(
668-
"create_tunnel is deprecated; use enable_tunnel or configure a tunnel at devbox creation."
669-
)
670-
def create_tunnel(
671-
self,
672-
id: str,
673-
*,
674-
port: int,
675-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
676-
# The extra values given here take precedence over values defined on the client or passed to this method.
677-
extra_headers: Headers | None = None,
678-
extra_query: Query | None = None,
679-
extra_body: Body | None = None,
680-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
681-
idempotency_key: str | None = None,
682-
) -> DevboxTunnelView:
683-
"""[Deprecated] Use enable_tunnel or configure a tunnel at devbox creation instead.
684-
685-
This endpoint
686-
creates a legacy tunnel. The new enable_tunnel endpoint provides improved tunnel
687-
functionality with authentication options.
688-
689-
Args:
690-
port: Devbox port that tunnel will expose.
691-
692-
extra_headers: Send extra headers
693-
694-
extra_query: Add additional query parameters to the request
695-
696-
extra_body: Add additional JSON properties to the request
697-
698-
timeout: Override the client-level default timeout for this request, in seconds
699-
700-
idempotency_key: Specify a custom idempotency key for this request
701-
"""
702-
if not id:
703-
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
704-
return self._post(
705-
f"/v1/devboxes/{id}/create_tunnel",
706-
body=maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
707-
options=make_request_options(
708-
extra_headers=extra_headers,
709-
extra_query=extra_query,
710-
extra_body=extra_body,
711-
timeout=timeout,
712-
idempotency_key=idempotency_key,
713-
),
714-
cast_to=DevboxTunnelView,
715-
)
716-
717665
def delete_disk_snapshot(
718666
self,
719667
id: str,
@@ -2345,56 +2293,6 @@ async def create_ssh_key(
23452293
cast_to=DevboxCreateSSHKeyResponse,
23462294
)
23472295

2348-
@typing_extensions.deprecated(
2349-
"create_tunnel is deprecated; use enable_tunnel or configure a tunnel at devbox creation."
2350-
)
2351-
async def create_tunnel(
2352-
self,
2353-
id: str,
2354-
*,
2355-
port: int,
2356-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2357-
# The extra values given here take precedence over values defined on the client or passed to this method.
2358-
extra_headers: Headers | None = None,
2359-
extra_query: Query | None = None,
2360-
extra_body: Body | None = None,
2361-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
2362-
idempotency_key: str | None = None,
2363-
) -> DevboxTunnelView:
2364-
"""[Deprecated] Use enable_tunnel or configure a tunnel at devbox creation instead.
2365-
2366-
This endpoint
2367-
creates a legacy tunnel. The new enable_tunnel endpoint provides improved tunnel
2368-
functionality with authentication options.
2369-
2370-
Args:
2371-
port: Devbox port that tunnel will expose.
2372-
2373-
extra_headers: Send extra headers
2374-
2375-
extra_query: Add additional query parameters to the request
2376-
2377-
extra_body: Add additional JSON properties to the request
2378-
2379-
timeout: Override the client-level default timeout for this request, in seconds
2380-
2381-
idempotency_key: Specify a custom idempotency key for this request
2382-
"""
2383-
if not id:
2384-
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
2385-
return await self._post(
2386-
f"/v1/devboxes/{id}/create_tunnel",
2387-
body=await async_maybe_transform({"port": port}, devbox_create_tunnel_params.DevboxCreateTunnelParams),
2388-
options=make_request_options(
2389-
extra_headers=extra_headers,
2390-
extra_query=extra_query,
2391-
extra_body=extra_body,
2392-
timeout=timeout,
2393-
idempotency_key=idempotency_key,
2394-
),
2395-
cast_to=DevboxTunnelView,
2396-
)
2397-
23982296
async def delete_disk_snapshot(
23992297
self,
24002298
id: str,
@@ -3525,11 +3423,6 @@ def __init__(self, devboxes: DevboxesResource) -> None:
35253423
self.create_ssh_key = to_raw_response_wrapper(
35263424
devboxes.create_ssh_key,
35273425
)
3528-
self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3529-
to_raw_response_wrapper(
3530-
devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3531-
)
3532-
)
35333426
self.delete_disk_snapshot = to_raw_response_wrapper(
35343427
devboxes.delete_disk_snapshot,
35353428
)
@@ -3633,11 +3526,6 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
36333526
self.create_ssh_key = async_to_raw_response_wrapper(
36343527
devboxes.create_ssh_key,
36353528
)
3636-
self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3637-
async_to_raw_response_wrapper(
3638-
devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3639-
)
3640-
)
36413529
self.delete_disk_snapshot = async_to_raw_response_wrapper(
36423530
devboxes.delete_disk_snapshot,
36433531
)
@@ -3741,11 +3629,6 @@ def __init__(self, devboxes: DevboxesResource) -> None:
37413629
self.create_ssh_key = to_streamed_response_wrapper(
37423630
devboxes.create_ssh_key,
37433631
)
3744-
self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3745-
to_streamed_response_wrapper(
3746-
devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3747-
)
3748-
)
37493632
self.delete_disk_snapshot = to_streamed_response_wrapper(
37503633
devboxes.delete_disk_snapshot,
37513634
)
@@ -3849,11 +3732,6 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
38493732
self.create_ssh_key = async_to_streamed_response_wrapper(
38503733
devboxes.create_ssh_key,
38513734
)
3852-
self.create_tunnel = ( # pyright: ignore[reportDeprecated]
3853-
async_to_streamed_response_wrapper(
3854-
devboxes.create_tunnel, # pyright: ignore[reportDeprecated],
3855-
)
3856-
)
38573735
self.delete_disk_snapshot = async_to_streamed_response_wrapper(
38583736
devboxes.delete_disk_snapshot,
38593737
)

src/runloop_api_client/sdk/_types.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
DevboxUploadFileParams,
2525
GatewayConfigListParams,
2626
NetworkPolicyListParams,
27-
DevboxCreateTunnelParams,
2827
DevboxDownloadFileParams,
2928
DevboxEnableTunnelParams,
3029
DevboxRemoveTunnelParams,
@@ -124,10 +123,6 @@ class SDKDevboxUploadFileParams(DevboxUploadFileParams, LongRequestOptions):
124123
pass
125124

126125

127-
class SDKDevboxCreateTunnelParams(DevboxCreateTunnelParams, LongRequestOptions):
128-
pass
129-
130-
131126
class SDKDevboxEnableTunnelParams(DevboxEnableTunnelParams, LongRequestOptions):
132127
pass
133128

0 commit comments

Comments
 (0)