Skip to content

Commit 6a76ed1

Browse files
release: 1.18.1 (#781)
Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
1 parent f59b88f commit 6a76ed1

18 files changed

Lines changed: 453 additions & 12 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.17.0"
2+
".": "1.18.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: 109
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-a1c7e69cbbf7a7cf63893358470cee52714633e6d31ce6dff2e7255c7445a1aa.yml
3-
openapi_spec_hash: a0e88c05a9b74c2bc9192bd7d94de3c0
4-
config_hash: ecb1ff09d29b565ed1452b5e0362e64d
1+
configured_endpoints: 110
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-f0eb12cf4df4fa3046bd88aae4966062eb6e9703768a07a0136da2f26a2ebd56.yml
3+
openapi_spec_hash: cdbd63a8162f1e987e937042cbd60eea
4+
config_hash: 526cf0707adc54c690fc687a1c6db728

CHANGELOG.md

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

3+
## 1.18.1 (2026-04-10)
4+
5+
Full Changelog: [v1.17.0...v1.18.1](https://github.com/runloopai/api-client-python/compare/v1.17.0...v1.18.1)
6+
7+
### Bug Fixes
8+
9+
* add list events to axon ([#8648](https://github.com/runloopai/api-client-python/issues/8648)) ([1203b57](https://github.com/runloopai/api-client-python/commit/1203b577b105dc0c7cd94eae644a609a525b7c32))
10+
* TTL shutdown showed non-standard reason in devbox logs ([#8636](https://github.com/runloopai/api-client-python/issues/8636)) ([8ac5cc5](https://github.com/runloopai/api-client-python/commit/8ac5cc5116b771316d28b426bfa13fd6af5cedd2))
11+
12+
13+
### Documentation
14+
15+
* clarify that we don't support git commit SHA in git agents/blueprint builds ([#8638](https://github.com/runloopai/api-client-python/issues/8638)) ([66b0895](https://github.com/runloopai/api-client-python/commit/66b0895865737ac3dd7f84be74785504fc7bede5))
16+
317
## 1.17.0 (2026-04-09)
418

519
Full Changelog: [v1.16.0...v1.17.0](https://github.com/runloopai/api-client-python/compare/v1.16.0...v1.17.0)

api.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,18 @@ Methods:
111111
- <code title="post /v1/axons/{id}/publish">client.axons.<a href="./src/runloop_api_client/resources/axons/axons.py">publish</a>(id, \*\*<a href="src/runloop_api_client/types/axon_publish_params.py">params</a>) -> <a href="./src/runloop_api_client/types/publish_result_view.py">PublishResultView</a></code>
112112
- <code title="get /v1/axons/{id}/subscribe/sse">client.axons.<a href="./src/runloop_api_client/resources/axons/axons.py">subscribe_sse</a>(id, \*\*<a href="src/runloop_api_client/types/axon_subscribe_sse_params.py">params</a>) -> <a href="./src/runloop_api_client/types/axon_event_view.py">AxonEventView</a></code>
113113

114+
## Events
115+
116+
Types:
117+
118+
```python
119+
from runloop_api_client.types.axons import AxonEventListView
120+
```
121+
122+
Methods:
123+
124+
- <code title="get /v1/axons/{id}/events">client.axons.events.<a href="./src/runloop_api_client/resources/axons/events.py">list</a>(id, \*\*<a href="src/runloop_api_client/types/axons/event_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/axons/axon_event_list_view.py">AxonEventListView</a></code>
125+
114126
## Sql
115127

116128
Types:

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

src/runloop_api_client/resources/axons/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,22 @@
1616
AxonsResourceWithStreamingResponse,
1717
AsyncAxonsResourceWithStreamingResponse,
1818
)
19+
from .events import (
20+
EventsResource,
21+
AsyncEventsResource,
22+
EventsResourceWithRawResponse,
23+
AsyncEventsResourceWithRawResponse,
24+
EventsResourceWithStreamingResponse,
25+
AsyncEventsResourceWithStreamingResponse,
26+
)
1927

2028
__all__ = [
29+
"EventsResource",
30+
"AsyncEventsResource",
31+
"EventsResourceWithRawResponse",
32+
"AsyncEventsResourceWithRawResponse",
33+
"EventsResourceWithStreamingResponse",
34+
"AsyncEventsResourceWithStreamingResponse",
2135
"SqlResource",
2236
"AsyncSqlResource",
2337
"SqlResourceWithRawResponse",

src/runloop_api_client/resources/axons/axons.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@
1515
SqlResourceWithStreamingResponse,
1616
AsyncSqlResourceWithStreamingResponse,
1717
)
18+
from .events import (
19+
EventsResource,
20+
AsyncEventsResource,
21+
EventsResourceWithRawResponse,
22+
AsyncEventsResourceWithRawResponse,
23+
EventsResourceWithStreamingResponse,
24+
AsyncEventsResourceWithStreamingResponse,
25+
)
1826
from ...types import axon_list_params, axon_create_params, axon_publish_params, axon_subscribe_sse_params
1927
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
2028
from ..._utils import path_template, maybe_transform, async_maybe_transform
@@ -37,6 +45,10 @@
3745

3846

3947
class AxonsResource(SyncAPIResource):
48+
@cached_property
49+
def events(self) -> EventsResource:
50+
return EventsResource(self._client)
51+
4052
@cached_property
4153
def sql(self) -> SqlResource:
4254
return SqlResource(self._client)
@@ -304,6 +316,10 @@ def subscribe_sse(
304316

305317

306318
class AsyncAxonsResource(AsyncAPIResource):
319+
@cached_property
320+
def events(self) -> AsyncEventsResource:
321+
return AsyncEventsResource(self._client)
322+
307323
@cached_property
308324
def sql(self) -> AsyncSqlResource:
309325
return AsyncSqlResource(self._client)
@@ -590,6 +606,10 @@ def __init__(self, axons: AxonsResource) -> None:
590606
axons.subscribe_sse,
591607
)
592608

609+
@cached_property
610+
def events(self) -> EventsResourceWithRawResponse:
611+
return EventsResourceWithRawResponse(self._axons.events)
612+
593613
@cached_property
594614
def sql(self) -> SqlResourceWithRawResponse:
595615
return SqlResourceWithRawResponse(self._axons.sql)
@@ -615,6 +635,10 @@ def __init__(self, axons: AsyncAxonsResource) -> None:
615635
axons.subscribe_sse,
616636
)
617637

638+
@cached_property
639+
def events(self) -> AsyncEventsResourceWithRawResponse:
640+
return AsyncEventsResourceWithRawResponse(self._axons.events)
641+
618642
@cached_property
619643
def sql(self) -> AsyncSqlResourceWithRawResponse:
620644
return AsyncSqlResourceWithRawResponse(self._axons.sql)
@@ -640,6 +664,10 @@ def __init__(self, axons: AxonsResource) -> None:
640664
axons.subscribe_sse,
641665
)
642666

667+
@cached_property
668+
def events(self) -> EventsResourceWithStreamingResponse:
669+
return EventsResourceWithStreamingResponse(self._axons.events)
670+
643671
@cached_property
644672
def sql(self) -> SqlResourceWithStreamingResponse:
645673
return SqlResourceWithStreamingResponse(self._axons.sql)
@@ -665,6 +693,10 @@ def __init__(self, axons: AsyncAxonsResource) -> None:
665693
axons.subscribe_sse,
666694
)
667695

696+
@cached_property
697+
def events(self) -> AsyncEventsResourceWithStreamingResponse:
698+
return AsyncEventsResourceWithStreamingResponse(self._axons.events)
699+
668700
@cached_property
669701
def sql(self) -> AsyncSqlResourceWithStreamingResponse:
670702
return AsyncSqlResourceWithStreamingResponse(self._axons.sql)
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
import httpx
6+
7+
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
8+
from ..._utils import path_template, maybe_transform, async_maybe_transform
9+
from ..._compat import cached_property
10+
from ..._resource import SyncAPIResource, AsyncAPIResource
11+
from ..._response import (
12+
to_raw_response_wrapper,
13+
to_streamed_response_wrapper,
14+
async_to_raw_response_wrapper,
15+
async_to_streamed_response_wrapper,
16+
)
17+
from ...types.axons import event_list_params
18+
from ..._base_client import make_request_options
19+
from ...types.axons.axon_event_list_view import AxonEventListView
20+
21+
__all__ = ["EventsResource", "AsyncEventsResource"]
22+
23+
24+
class EventsResource(SyncAPIResource):
25+
@cached_property
26+
def with_raw_response(self) -> EventsResourceWithRawResponse:
27+
"""
28+
This property can be used as a prefix for any HTTP method call to return
29+
the raw response object instead of the parsed content.
30+
31+
For more information, see https://www.github.com/runloopai/api-client-python#accessing-raw-response-data-eg-headers
32+
"""
33+
return EventsResourceWithRawResponse(self)
34+
35+
@cached_property
36+
def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
37+
"""
38+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
39+
40+
For more information, see https://www.github.com/runloopai/api-client-python#with_streaming_response
41+
"""
42+
return EventsResourceWithStreamingResponse(self)
43+
44+
def list(
45+
self,
46+
id: str,
47+
*,
48+
include_total_count: bool | Omit = omit,
49+
limit: int | Omit = omit,
50+
starting_after: str | Omit = omit,
51+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
52+
# The extra values given here take precedence over values defined on the client or passed to this method.
53+
extra_headers: Headers | None = None,
54+
extra_query: Query | None = None,
55+
extra_body: Body | None = None,
56+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
57+
) -> AxonEventListView:
58+
"""
59+
[Beta] List events from an axon's event stream, ordered by sequence descending.
60+
61+
Args:
62+
include_total_count: If true (default), includes total_count in the response. Set to false to skip
63+
the count query for better performance on large datasets.
64+
65+
limit: The limit of items to return. Default is 20. Max is 5000.
66+
67+
starting_after: Load the next page of data starting after the item with the given ID.
68+
69+
extra_headers: Send extra headers
70+
71+
extra_query: Add additional query parameters to the request
72+
73+
extra_body: Add additional JSON properties to the request
74+
75+
timeout: Override the client-level default timeout for this request, in seconds
76+
"""
77+
if not id:
78+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
79+
return self._get(
80+
path_template("/v1/axons/{id}/events", id=id),
81+
options=make_request_options(
82+
extra_headers=extra_headers,
83+
extra_query=extra_query,
84+
extra_body=extra_body,
85+
timeout=timeout,
86+
query=maybe_transform(
87+
{
88+
"include_total_count": include_total_count,
89+
"limit": limit,
90+
"starting_after": starting_after,
91+
},
92+
event_list_params.EventListParams,
93+
),
94+
),
95+
cast_to=AxonEventListView,
96+
)
97+
98+
99+
class AsyncEventsResource(AsyncAPIResource):
100+
@cached_property
101+
def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
102+
"""
103+
This property can be used as a prefix for any HTTP method call to return
104+
the raw response object instead of the parsed content.
105+
106+
For more information, see https://www.github.com/runloopai/api-client-python#accessing-raw-response-data-eg-headers
107+
"""
108+
return AsyncEventsResourceWithRawResponse(self)
109+
110+
@cached_property
111+
def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
112+
"""
113+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
114+
115+
For more information, see https://www.github.com/runloopai/api-client-python#with_streaming_response
116+
"""
117+
return AsyncEventsResourceWithStreamingResponse(self)
118+
119+
async def list(
120+
self,
121+
id: str,
122+
*,
123+
include_total_count: bool | Omit = omit,
124+
limit: int | Omit = omit,
125+
starting_after: str | Omit = omit,
126+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
127+
# The extra values given here take precedence over values defined on the client or passed to this method.
128+
extra_headers: Headers | None = None,
129+
extra_query: Query | None = None,
130+
extra_body: Body | None = None,
131+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
132+
) -> AxonEventListView:
133+
"""
134+
[Beta] List events from an axon's event stream, ordered by sequence descending.
135+
136+
Args:
137+
include_total_count: If true (default), includes total_count in the response. Set to false to skip
138+
the count query for better performance on large datasets.
139+
140+
limit: The limit of items to return. Default is 20. Max is 5000.
141+
142+
starting_after: Load the next page of data starting after the item with the given ID.
143+
144+
extra_headers: Send extra headers
145+
146+
extra_query: Add additional query parameters to the request
147+
148+
extra_body: Add additional JSON properties to the request
149+
150+
timeout: Override the client-level default timeout for this request, in seconds
151+
"""
152+
if not id:
153+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
154+
return await self._get(
155+
path_template("/v1/axons/{id}/events", id=id),
156+
options=make_request_options(
157+
extra_headers=extra_headers,
158+
extra_query=extra_query,
159+
extra_body=extra_body,
160+
timeout=timeout,
161+
query=await async_maybe_transform(
162+
{
163+
"include_total_count": include_total_count,
164+
"limit": limit,
165+
"starting_after": starting_after,
166+
},
167+
event_list_params.EventListParams,
168+
),
169+
),
170+
cast_to=AxonEventListView,
171+
)
172+
173+
174+
class EventsResourceWithRawResponse:
175+
def __init__(self, events: EventsResource) -> None:
176+
self._events = events
177+
178+
self.list = to_raw_response_wrapper(
179+
events.list,
180+
)
181+
182+
183+
class AsyncEventsResourceWithRawResponse:
184+
def __init__(self, events: AsyncEventsResource) -> None:
185+
self._events = events
186+
187+
self.list = async_to_raw_response_wrapper(
188+
events.list,
189+
)
190+
191+
192+
class EventsResourceWithStreamingResponse:
193+
def __init__(self, events: EventsResource) -> None:
194+
self._events = events
195+
196+
self.list = to_streamed_response_wrapper(
197+
events.list,
198+
)
199+
200+
201+
class AsyncEventsResourceWithStreamingResponse:
202+
def __init__(self, events: AsyncEventsResource) -> None:
203+
self._events = events
204+
205+
self.list = async_to_streamed_response_wrapper(
206+
events.list,
207+
)

src/runloop_api_client/types/axons/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
from .sql_batch_params import SqlBatchParams as SqlBatchParams
66
from .sql_query_params import SqlQueryParams as SqlQueryParams
7+
from .event_list_params import EventListParams as EventListParams
78
from .sql_step_error_view import SqlStepErrorView as SqlStepErrorView
9+
from .axon_event_list_view import AxonEventListView as AxonEventListView
810
from .sql_column_meta_view import SqlColumnMetaView as SqlColumnMetaView
911
from .sql_result_meta_view import SqlResultMetaView as SqlResultMetaView
1012
from .sql_statement_params import SqlStatementParams as SqlStatementParams

0 commit comments

Comments
 (0)