Skip to content

Commit 60f82be

Browse files
release: 1.23.0 (#807)
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
1 parent 018cb8c commit 60f82be

11 files changed

Lines changed: 88 additions & 30 deletions

File tree

.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.22.1"
2+
".": "1.23.0"
33
}

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 120
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-96b0ac0a148db6fde2e8363ea2dcfaa63f2dc23cf35c30c5fcfffbefc222e5d1.yml
3-
openapi_spec_hash: 01b9dbab4b732e4b83952debd108e404
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-22ab4a80734e5e3792b7287a1281280d52eff936be4d805011521a1b64e1998d.yml
3+
openapi_spec_hash: d109d3b797016fe7657935d55549cc31
44
config_hash: ed1fdd7c9f0a25647e16b602bad4ff2e

CHANGELOG.md

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

3+
## 1.23.0 (2026-06-05)
4+
5+
Full Changelog: [v1.22.1...v1.23.0](https://github.com/runloopai/api-client-python/compare/v1.22.1...v1.23.0)
6+
7+
### Features
8+
9+
* **devbox:** add SCHEDULED status to the data model ([#9654](https://github.com/runloopai/api-client-python/issues/9654)) ([8f45663](https://github.com/runloopai/api-client-python/commit/8f456631f96a56612ae9b438e9b6d2dc8d69095f))
10+
* **portal:** support tunnel authorization header ([#9597](https://github.com/runloopai/api-client-python/issues/9597)) ([8ca990e](https://github.com/runloopai/api-client-python/commit/8ca990e360f072adfdb9f789e37dbd2bb08e8f77))
11+
312
## 1.22.1 (2026-06-01)
413

514
Full Changelog: [v1.22.0...v1.22.1](https://github.com/runloopai/api-client-python/compare/v1.22.0...v1.22.1)

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.22.1"
3+
version = "1.23.0"
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.22.1" # x-release-please-version
4+
__version__ = "1.23.0" # x-release-please-version

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,15 @@ def list(
532532
limit: int | Omit = omit,
533533
starting_after: str | Omit = omit,
534534
status: Literal[
535-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
535+
"scheduled",
536+
"provisioning",
537+
"initializing",
538+
"running",
539+
"suspending",
540+
"suspended",
541+
"resuming",
542+
"failure",
543+
"shutdown",
536544
]
537545
| Omit = omit,
538546
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -600,8 +608,8 @@ def create_pty_tunnel(
600608
Devbox.
601609
602610
This tunnel is not persisted on the Devbox and is generated fresh on
603-
each request. The returned auth_token must be passed as a Bearer token in the
604-
Authorization header.
611+
each request. The returned auth_token should be passed as a Bearer token in the
612+
X-Runloop-Tunnel-Authorization header.
605613
606614
Args:
607615
extra_headers: Send extra headers
@@ -2195,7 +2203,15 @@ def list(
21952203
limit: int | Omit = omit,
21962204
starting_after: str | Omit = omit,
21972205
status: Literal[
2198-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
2206+
"scheduled",
2207+
"provisioning",
2208+
"initializing",
2209+
"running",
2210+
"suspending",
2211+
"suspended",
2212+
"resuming",
2213+
"failure",
2214+
"shutdown",
21992215
]
22002216
| Omit = omit,
22012217
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -2263,8 +2279,8 @@ async def create_pty_tunnel(
22632279
Devbox.
22642280
22652281
This tunnel is not persisted on the Devbox and is generated fresh on
2266-
each request. The returned auth_token must be passed as a Bearer token in the
2267-
Authorization header.
2282+
each request. The returned auth_token should be passed as a Bearer token in the
2283+
X-Runloop-Tunnel-Authorization header.
22682284
22692285
Args:
22702286
extra_headers: Send extra headers

src/runloop_api_client/types/devbox_list_params.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ class DevboxListParams(TypedDict, total=False):
2121
"""Load the next page of data starting after the item with the given ID."""
2222

2323
status: Literal[
24-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
24+
"scheduled",
25+
"provisioning",
26+
"initializing",
27+
"running",
28+
"suspending",
29+
"suspended",
30+
"resuming",
31+
"failure",
32+
"shutdown",
2533
]
2634
"""Filter by status"""

src/runloop_api_client/types/devbox_view.py

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,30 @@
1212

1313
class StateTransition(BaseModel):
1414
status: Optional[
15-
Literal["provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"]
15+
Literal[
16+
"scheduled",
17+
"provisioning",
18+
"initializing",
19+
"running",
20+
"suspending",
21+
"suspended",
22+
"resuming",
23+
"failure",
24+
"shutdown",
25+
]
1626
] = None
1727
"""The status of the Devbox.
1828
19-
provisioning: Runloop is allocating and booting the necessary infrastructure
20-
resources. initializing: Runloop defined boot scripts are running to enable the
21-
environment for interaction. running: The Devbox is ready for interaction.
22-
suspending: The Devbox disk is being snapshotted as part of suspension.
23-
suspended: The Devbox disk is saved and no more active compute is being used for
24-
the Devbox. resuming: The Devbox disk is being loaded as part of booting a
25-
suspended Devbox. failure: The Devbox failed as part of booting or running user
26-
requested actions. shutdown: The Devbox was successfully shutdown and no more
27-
active compute is being used.
29+
scheduled: The Devbox is scheduled to run but infrastructure allocation has not
30+
started yet. provisioning: Runloop is allocating and booting the necessary
31+
infrastructure resources. initializing: Runloop defined boot scripts are running
32+
to enable the environment for interaction. running: The Devbox is ready for
33+
interaction. suspending: The Devbox disk is being snapshotted as part of
34+
suspension. suspended: The Devbox disk is saved and no more active compute is
35+
being used for the Devbox. resuming: The Devbox disk is being loaded as part of
36+
booting a suspended Devbox. failure: The Devbox failed as part of booting or
37+
running user requested actions. shutdown: The Devbox was successfully shutdown
38+
and no more active compute is being used.
2839
"""
2940

3041
transition_time_ms: Optional[object] = None
@@ -78,7 +89,15 @@ class DevboxView(BaseModel):
7889
"""A list of state transitions in order with durations"""
7990

8091
status: Literal[
81-
"provisioning", "initializing", "running", "suspending", "suspended", "resuming", "failure", "shutdown"
92+
"scheduled",
93+
"provisioning",
94+
"initializing",
95+
"running",
96+
"suspending",
97+
"suspended",
98+
"resuming",
99+
"failure",
100+
"shutdown",
82101
]
83102
"""The current status of the Devbox."""
84103

@@ -146,5 +165,6 @@ class DevboxView(BaseModel):
146165
services running inside a Devbox without requiring direct network access. Each
147166
tunnel is uniquely identified by an encrypted tunnel_key and can be configured
148167
for either open (public) or authenticated access. Usage:
149-
https://{port}-{tunnel_key}.tunnel.runloop.ai
168+
https://{port}-{tunnel_key}.tunnel.runloop.ai. Authenticated tunnels should pass
169+
auth_token as X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
150170
"""

src/runloop_api_client/types/pty_tunnel_view.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
class PtyTunnelView(BaseModel):
99
"""An ephemeral PTY tunnel providing authenticated terminal access to a Devbox.
1010
11-
These tunnels are not stored on the Devbox and are generated fresh on each request. Usage: https://{port}-{tunnel_key}.tunnel.runloop.ai with Authorization: Bearer {auth_token}
11+
These tunnels are not stored on the Devbox and are generated fresh on each request. Usage: https://{port}-{tunnel_key}.tunnel.runloop.ai with X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
1212
"""
1313

1414
auth_token: str
15-
"""Bearer token for tunnel authentication. Always required for PTY tunnels."""
15+
"""Bearer token for tunnel authentication.
16+
17+
Always required for PTY tunnels. Pass as X-Runloop-Tunnel-Authorization: Bearer
18+
{auth_token}.
19+
"""
1620

1721
tunnel_key: str
1822
"""The encrypted tunnel key used to construct the tunnel URL.

src/runloop_api_client/types/tunnel_view.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class TunnelView(BaseModel):
1212
"""A V2 tunnel provides secure HTTP access to services running on a Devbox.
1313
1414
Tunnels allow external clients to reach web servers, APIs, or other HTTP services running inside a Devbox without requiring direct network access. Each tunnel is uniquely identified by an encrypted tunnel_key and can be configured for either open (public) or authenticated access.
15-
Usage: https://{port}-{tunnel_key}.tunnel.runloop.ai
15+
Usage: https://{port}-{tunnel_key}.tunnel.runloop.ai. Authenticated tunnels should pass auth_token as X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
1616
"""
1717

1818
auth_mode: Literal["open", "authenticated"]
@@ -42,5 +42,6 @@ class TunnelView(BaseModel):
4242
auth_token: Optional[str] = None
4343
"""Bearer token for tunnel authentication.
4444
45-
Only present when auth_mode is 'authenticated'.
45+
Only present when auth_mode is 'authenticated'. Pass as
46+
X-Runloop-Tunnel-Authorization: Bearer {auth_token}.
4647
"""

0 commit comments

Comments
 (0)