Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.17.0"
".": "1.18.1"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 109
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-a1c7e69cbbf7a7cf63893358470cee52714633e6d31ce6dff2e7255c7445a1aa.yml
openapi_spec_hash: a0e88c05a9b74c2bc9192bd7d94de3c0
config_hash: ecb1ff09d29b565ed1452b5e0362e64d
configured_endpoints: 110
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-f0eb12cf4df4fa3046bd88aae4966062eb6e9703768a07a0136da2f26a2ebd56.yml
openapi_spec_hash: cdbd63a8162f1e987e937042cbd60eea
config_hash: 526cf0707adc54c690fc687a1c6db728
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## 1.18.1 (2026-04-10)

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

### Bug Fixes

* 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))
* 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))


### Documentation

* 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))

## 1.17.0 (2026-04-09)

Full Changelog: [v1.16.0...v1.17.0](https://github.com/runloopai/api-client-python/compare/v1.16.0...v1.17.0)
Expand Down
12 changes: 12 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,18 @@ Methods:
- <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>
- <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>

## Events

Types:

```python
from runloop_api_client.types.axons import AxonEventListView
```

Methods:

- <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>

## Sql

Types:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "runloop_api_client"
version = "1.17.0"
version = "1.18.1"
description = "The official Python library for the runloop API"
dynamic = ["readme"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion src/runloop_api_client/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "runloop_api_client"
__version__ = "1.17.0" # x-release-please-version
__version__ = "1.18.1" # x-release-please-version
14 changes: 14 additions & 0 deletions src/runloop_api_client/resources/axons/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,22 @@
AxonsResourceWithStreamingResponse,
AsyncAxonsResourceWithStreamingResponse,
)
from .events import (
EventsResource,
AsyncEventsResource,
EventsResourceWithRawResponse,
AsyncEventsResourceWithRawResponse,
EventsResourceWithStreamingResponse,
AsyncEventsResourceWithStreamingResponse,
)

__all__ = [
"EventsResource",
"AsyncEventsResource",
"EventsResourceWithRawResponse",
"AsyncEventsResourceWithRawResponse",
"EventsResourceWithStreamingResponse",
"AsyncEventsResourceWithStreamingResponse",
"SqlResource",
"AsyncSqlResource",
"SqlResourceWithRawResponse",
Expand Down
32 changes: 32 additions & 0 deletions src/runloop_api_client/resources/axons/axons.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@
SqlResourceWithStreamingResponse,
AsyncSqlResourceWithStreamingResponse,
)
from .events import (
EventsResource,
AsyncEventsResource,
EventsResourceWithRawResponse,
AsyncEventsResourceWithRawResponse,
EventsResourceWithStreamingResponse,
AsyncEventsResourceWithStreamingResponse,
)
from ...types import axon_list_params, axon_create_params, axon_publish_params, axon_subscribe_sse_params
from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
from ..._utils import path_template, maybe_transform, async_maybe_transform
Expand All @@ -37,6 +45,10 @@


class AxonsResource(SyncAPIResource):
@cached_property
def events(self) -> EventsResource:
return EventsResource(self._client)

@cached_property
def sql(self) -> SqlResource:
return SqlResource(self._client)
Expand Down Expand Up @@ -304,6 +316,10 @@ def subscribe_sse(


class AsyncAxonsResource(AsyncAPIResource):
@cached_property
def events(self) -> AsyncEventsResource:
return AsyncEventsResource(self._client)

@cached_property
def sql(self) -> AsyncSqlResource:
return AsyncSqlResource(self._client)
Expand Down Expand Up @@ -590,6 +606,10 @@ def __init__(self, axons: AxonsResource) -> None:
axons.subscribe_sse,
)

@cached_property
def events(self) -> EventsResourceWithRawResponse:
return EventsResourceWithRawResponse(self._axons.events)

@cached_property
def sql(self) -> SqlResourceWithRawResponse:
return SqlResourceWithRawResponse(self._axons.sql)
Expand All @@ -615,6 +635,10 @@ def __init__(self, axons: AsyncAxonsResource) -> None:
axons.subscribe_sse,
)

@cached_property
def events(self) -> AsyncEventsResourceWithRawResponse:
return AsyncEventsResourceWithRawResponse(self._axons.events)

@cached_property
def sql(self) -> AsyncSqlResourceWithRawResponse:
return AsyncSqlResourceWithRawResponse(self._axons.sql)
Expand All @@ -640,6 +664,10 @@ def __init__(self, axons: AxonsResource) -> None:
axons.subscribe_sse,
)

@cached_property
def events(self) -> EventsResourceWithStreamingResponse:
return EventsResourceWithStreamingResponse(self._axons.events)

@cached_property
def sql(self) -> SqlResourceWithStreamingResponse:
return SqlResourceWithStreamingResponse(self._axons.sql)
Expand All @@ -665,6 +693,10 @@ def __init__(self, axons: AsyncAxonsResource) -> None:
axons.subscribe_sse,
)

@cached_property
def events(self) -> AsyncEventsResourceWithStreamingResponse:
return AsyncEventsResourceWithStreamingResponse(self._axons.events)

@cached_property
def sql(self) -> AsyncSqlResourceWithStreamingResponse:
return AsyncSqlResourceWithStreamingResponse(self._axons.sql)
207 changes: 207 additions & 0 deletions src/runloop_api_client/resources/axons/events.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from __future__ import annotations

import httpx

from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
from ..._utils import path_template, maybe_transform, async_maybe_transform
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
from ..._response import (
to_raw_response_wrapper,
to_streamed_response_wrapper,
async_to_raw_response_wrapper,
async_to_streamed_response_wrapper,
)
from ...types.axons import event_list_params
from ..._base_client import make_request_options
from ...types.axons.axon_event_list_view import AxonEventListView

__all__ = ["EventsResource", "AsyncEventsResource"]


class EventsResource(SyncAPIResource):
@cached_property
def with_raw_response(self) -> EventsResourceWithRawResponse:
"""
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.

For more information, see https://www.github.com/runloopai/api-client-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)

@cached_property
def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.

For more information, see https://www.github.com/runloopai/api-client-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)

def list(
self,
id: str,
*,
include_total_count: bool | Omit = omit,
limit: int | Omit = omit,
starting_after: str | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> AxonEventListView:
"""
[Beta] List events from an axon's event stream, ordered by sequence descending.

Args:
include_total_count: If true (default), includes total_count in the response. Set to false to skip
the count query for better performance on large datasets.

limit: The limit of items to return. Default is 20. Max is 5000.

starting_after: Load the next page of data starting after the item with the given ID.

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request

extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
return self._get(
path_template("/v1/axons/{id}/events", id=id),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=maybe_transform(
{
"include_total_count": include_total_count,
"limit": limit,
"starting_after": starting_after,
},
event_list_params.EventListParams,
),
),
cast_to=AxonEventListView,
)


class AsyncEventsResource(AsyncAPIResource):
@cached_property
def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
"""
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.

For more information, see https://www.github.com/runloopai/api-client-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)

@cached_property
def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.

For more information, see https://www.github.com/runloopai/api-client-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)

async def list(
self,
id: str,
*,
include_total_count: bool | Omit = omit,
limit: int | Omit = omit,
starting_after: str | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
) -> AxonEventListView:
"""
[Beta] List events from an axon's event stream, ordered by sequence descending.

Args:
include_total_count: If true (default), includes total_count in the response. Set to false to skip
the count query for better performance on large datasets.

limit: The limit of items to return. Default is 20. Max is 5000.

starting_after: Load the next page of data starting after the item with the given ID.

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request

extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
return await self._get(
path_template("/v1/axons/{id}/events", id=id),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=await async_maybe_transform(
{
"include_total_count": include_total_count,
"limit": limit,
"starting_after": starting_after,
},
event_list_params.EventListParams,
),
),
cast_to=AxonEventListView,
)


class EventsResourceWithRawResponse:
def __init__(self, events: EventsResource) -> None:
self._events = events

self.list = to_raw_response_wrapper(
events.list,
)


class AsyncEventsResourceWithRawResponse:
def __init__(self, events: AsyncEventsResource) -> None:
self._events = events

self.list = async_to_raw_response_wrapper(
events.list,
)


class EventsResourceWithStreamingResponse:
def __init__(self, events: EventsResource) -> None:
self._events = events

self.list = to_streamed_response_wrapper(
events.list,
)


class AsyncEventsResourceWithStreamingResponse:
def __init__(self, events: AsyncEventsResource) -> None:
self._events = events

self.list = async_to_streamed_response_wrapper(
events.list,
)
2 changes: 2 additions & 0 deletions src/runloop_api_client/types/axons/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

from .sql_batch_params import SqlBatchParams as SqlBatchParams
from .sql_query_params import SqlQueryParams as SqlQueryParams
from .event_list_params import EventListParams as EventListParams
from .sql_step_error_view import SqlStepErrorView as SqlStepErrorView
from .axon_event_list_view import AxonEventListView as AxonEventListView
from .sql_column_meta_view import SqlColumnMetaView as SqlColumnMetaView
from .sql_result_meta_view import SqlResultMetaView as SqlResultMetaView
from .sql_statement_params import SqlStatementParams as SqlStatementParams
Expand Down
Loading
Loading