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 @@
{
".": "0.54.0"
".": "0.55.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 92
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-20da49cddb76a81f77844447916c6d445b25634ff99aae15d8dfd50fe6d854e6.yml
openapi_spec_hash: 2097a1bfb48092ed3b03fa606f5c5447
config_hash: 60681f589a9e641fdb7f19af2021a033
configured_endpoints: 93
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-5bf266bfc4635f690b764f54cbbcd71ff347622e3bfd8540a7d2a4d7d2d78be8.yml
openapi_spec_hash: 3769820d0ac76caf6a1950802c73a382
config_hash: 7d940dc50b19e75e3719c4d41fd0e8dd
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 0.55.0 (2025-08-19)

Full Changelog: [v0.54.0...v0.55.0](https://github.com/runloopai/api-client-python/compare/v0.54.0...v0.55.0)

### Features

* **api:** api update ([b861c73](https://github.com/runloopai/api-client-python/commit/b861c73595eb0d0744a7a3d81bb46cc2cc397486))
* **api:** api update ([06ec7b9](https://github.com/runloopai/api-client-python/commit/06ec7b9b9b47b96c1876427f74a063640a4f6fb7))


### Chores

* **internal:** fix ruff target version ([91fb064](https://github.com/runloopai/api-client-python/commit/91fb0649d64f4982c292330ade9f61b26ff4841c))
* **internal:** update comment in script ([4b8d5ba](https://github.com/runloopai/api-client-python/commit/4b8d5ba0dd2553ca32f56876bd6a20ec04991778))
* update @stainless-api/prism-cli to v5.15.0 ([3119d91](https://github.com/runloopai/api-client-python/commit/3119d91af94985c86961db8b137753f70ef13748))

## 0.54.0 (2025-08-05)

Full Changelog: [v0.53.0...v0.54.0](https://github.com/runloopai/api-client-python/compare/v0.53.0...v0.54.0)
Expand Down
3 changes: 2 additions & 1 deletion api.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ Methods:
- <code title="get /v1/blueprints/{id}">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_view.py">BlueprintView</a></code>
- <code title="get /v1/blueprints">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">list</a>(\*\*<a href="src/runloop_api_client/types/blueprint_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_view.py">SyncBlueprintsCursorIDPage[BlueprintView]</a></code>
- <code title="post /v1/blueprints/{id}/delete">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">delete</a>(id) -> object</code>
- <code title="get /v1/blueprints/list_public">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">list_public</a>(\*\*<a href="src/runloop_api_client/types/blueprint_list_public_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_view.py">SyncBlueprintsCursorIDPage[BlueprintView]</a></code>
- <code title="get /v1/blueprints/{id}/logs">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">logs</a>(id) -> <a href="./src/runloop_api_client/types/blueprint_build_logs_list_view.py">BlueprintBuildLogsListView</a></code>
- <code title="post /v1/blueprints/preview">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">preview</a>(\*\*<a href="src/runloop_api_client/types/blueprint_preview_params.py">params</a>) -> <a href="./src/runloop_api_client/types/blueprint_preview_view.py">BlueprintPreviewView</a></code>
- <code title="create_and_await_build_complete">client.blueprints.<a href="./src/runloop_api_client/resources/blueprints.py">create_and_await_build_complete</a>(<a href="src/runloop_api_client/types/blueprint_create_params.py">create_args</a>, <a href="src/runloop_api_client/resources/blueprints.py">request_args</a>=None) -> <a href="./src/runloop_api_client/types/blueprint_view.py">BlueprintView</a></code>
Expand Down Expand Up @@ -364,5 +365,5 @@ Methods:

- <code title="post /v1/secrets">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">create</a>(\*\*<a href="src/runloop_api_client/types/secret_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/secret_view.py">SecretView</a></code>
- <code title="post /v1/secrets/{name}">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">update</a>(name, \*\*<a href="src/runloop_api_client/types/secret_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/secret_view.py">SecretView</a></code>
- <code title="get /v1/secrets">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">list</a>() -> <a href="./src/runloop_api_client/types/secret_list_view.py">SecretListView</a></code>
- <code title="get /v1/secrets">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">list</a>(\*\*<a href="src/runloop_api_client/types/secret_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/secret_list_view.py">SecretListView</a></code>
- <code title="post /v1/secrets/{name}/delete">client.secrets.<a href="./src/runloop_api_client/resources/secrets.py">delete</a>(name) -> <a href="./src/runloop_api_client/types/secret_view.py">SecretView</a></code>
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "runloop_api_client"
version = "0.54.0"
version = "0.55.0"
description = "The official Python library for the runloop API"
dynamic = ["readme"]
license = "MIT"
Expand Down Expand Up @@ -168,7 +168,7 @@ reportPrivateUsage = false
[tool.ruff]
line-length = 120
output-format = "grouped"
target-version = "py37"
target-version = "py38"

[tool.ruff.format]
docstring-code-format = true
Expand Down
4 changes: 2 additions & 2 deletions scripts/mock
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ echo "==> Starting mock server with URL ${URL}"

# Run prism mock on the given spec
if [ "$1" == "--daemon" ]; then
npm exec --package=@stainless-api/prism-cli@5.8.5 -- prism mock "$URL" &> .prism.log &
npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" &> .prism.log &

# Wait for server to come online
echo -n "Waiting for server"
Expand All @@ -37,5 +37,5 @@ if [ "$1" == "--daemon" ]; then

echo
else
npm exec --package=@stainless-api/prism-cli@5.8.5 -- prism mock "$URL"
npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL"
fi
2 changes: 1 addition & 1 deletion scripts/test
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ elif ! prism_is_running ; then
echo -e "To run the server, pass in the path or url of your OpenAPI"
echo -e "spec to the prism command:"
echo
echo -e " \$ ${YELLOW}npm exec --package=@stoplight/prism-cli@~5.3.2 -- prism mock path/to/your.openapi.yml${NC}"
echo -e " \$ ${YELLOW}npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock path/to/your.openapi.yml${NC}"
echo

exit 1
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__ = "0.54.0" # x-release-please-version
__version__ = "0.55.0" # x-release-please-version
145 changes: 144 additions & 1 deletion src/runloop_api_client/resources/blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@

import httpx

from ..types import blueprint_list_params, blueprint_create_params, blueprint_preview_params
from ..types import (
blueprint_list_params,
blueprint_create_params,
blueprint_preview_params,
blueprint_list_public_params,
)
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._utils import maybe_transform, async_maybe_transform
from .._compat import cached_property
Expand Down Expand Up @@ -72,6 +77,7 @@ def create(
dockerfile: Optional[str] | NotGiven = NOT_GIVEN,
file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
services: Optional[Iterable[blueprint_create_params.Service]] | NotGiven = NOT_GIVEN,
system_setup_commands: Optional[List[str]] | NotGiven = NOT_GIVEN,
# 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.
Expand Down Expand Up @@ -102,6 +108,10 @@ def create(

launch_parameters: Parameters to configure your Devbox at launch time.

services: (Optional) List of containerized services to include in the Blueprint. These
services will be pre-pulled during the build phase for optimized startup
performance.

system_setup_commands: A list of commands to run to set up your system.

extra_headers: Send extra headers
Expand All @@ -124,6 +134,7 @@ def create(
"dockerfile": dockerfile,
"file_mounts": file_mounts,
"launch_parameters": launch_parameters,
"services": services,
"system_setup_commands": system_setup_commands,
},
blueprint_create_params.BlueprintCreateParams,
Expand Down Expand Up @@ -343,6 +354,57 @@ def delete(
cast_to=object,
)

def list_public(
self,
*,
limit: int | NotGiven = NOT_GIVEN,
name: str | NotGiven = NOT_GIVEN,
starting_after: str | NotGiven = NOT_GIVEN,
# 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,
) -> SyncBlueprintsCursorIDPage[BlueprintView]:
"""
List all public Blueprints that are available to all users.

Args:
limit: The limit of items to return. Default is 20.

name: Filter by name

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
"""
return self._get_api_list(
"/v1/blueprints/list_public",
page=SyncBlueprintsCursorIDPage[BlueprintView],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=maybe_transform(
{
"limit": limit,
"name": name,
"starting_after": starting_after,
},
blueprint_list_public_params.BlueprintListPublicParams,
),
),
model=BlueprintView,
)

def logs(
self,
id: str,
Expand Down Expand Up @@ -385,6 +447,7 @@ def preview(
dockerfile: Optional[str] | NotGiven = NOT_GIVEN,
file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
services: Optional[Iterable[blueprint_preview_params.Service]] | NotGiven = NOT_GIVEN,
system_setup_commands: Optional[List[str]] | NotGiven = NOT_GIVEN,
# 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.
Expand Down Expand Up @@ -413,6 +476,10 @@ def preview(

launch_parameters: Parameters to configure your Devbox at launch time.

services: (Optional) List of containerized services to include in the Blueprint. These
services will be pre-pulled during the build phase for optimized startup
performance.

system_setup_commands: A list of commands to run to set up your system.

extra_headers: Send extra headers
Expand All @@ -435,6 +502,7 @@ def preview(
"dockerfile": dockerfile,
"file_mounts": file_mounts,
"launch_parameters": launch_parameters,
"services": services,
"system_setup_commands": system_setup_commands,
},
blueprint_preview_params.BlueprintPreviewParams,
Expand Down Expand Up @@ -479,6 +547,7 @@ async def create(
dockerfile: Optional[str] | NotGiven = NOT_GIVEN,
file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
services: Optional[Iterable[blueprint_create_params.Service]] | NotGiven = NOT_GIVEN,
system_setup_commands: Optional[List[str]] | NotGiven = NOT_GIVEN,
# 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.
Expand Down Expand Up @@ -509,6 +578,10 @@ async def create(

launch_parameters: Parameters to configure your Devbox at launch time.

services: (Optional) List of containerized services to include in the Blueprint. These
services will be pre-pulled during the build phase for optimized startup
performance.

system_setup_commands: A list of commands to run to set up your system.

extra_headers: Send extra headers
Expand All @@ -531,6 +604,7 @@ async def create(
"dockerfile": dockerfile,
"file_mounts": file_mounts,
"launch_parameters": launch_parameters,
"services": services,
"system_setup_commands": system_setup_commands,
},
blueprint_create_params.BlueprintCreateParams,
Expand Down Expand Up @@ -751,6 +825,57 @@ async def delete(
cast_to=object,
)

def list_public(
self,
*,
limit: int | NotGiven = NOT_GIVEN,
name: str | NotGiven = NOT_GIVEN,
starting_after: str | NotGiven = NOT_GIVEN,
# 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,
) -> AsyncPaginator[BlueprintView, AsyncBlueprintsCursorIDPage[BlueprintView]]:
"""
List all public Blueprints that are available to all users.

Args:
limit: The limit of items to return. Default is 20.

name: Filter by name

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
"""
return self._get_api_list(
"/v1/blueprints/list_public",
page=AsyncBlueprintsCursorIDPage[BlueprintView],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=maybe_transform(
{
"limit": limit,
"name": name,
"starting_after": starting_after,
},
blueprint_list_public_params.BlueprintListPublicParams,
),
),
model=BlueprintView,
)

async def logs(
self,
id: str,
Expand Down Expand Up @@ -793,6 +918,7 @@ async def preview(
dockerfile: Optional[str] | NotGiven = NOT_GIVEN,
file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
services: Optional[Iterable[blueprint_preview_params.Service]] | NotGiven = NOT_GIVEN,
system_setup_commands: Optional[List[str]] | NotGiven = NOT_GIVEN,
# 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.
Expand Down Expand Up @@ -821,6 +947,10 @@ async def preview(

launch_parameters: Parameters to configure your Devbox at launch time.

services: (Optional) List of containerized services to include in the Blueprint. These
services will be pre-pulled during the build phase for optimized startup
performance.

system_setup_commands: A list of commands to run to set up your system.

extra_headers: Send extra headers
Expand All @@ -843,6 +973,7 @@ async def preview(
"dockerfile": dockerfile,
"file_mounts": file_mounts,
"launch_parameters": launch_parameters,
"services": services,
"system_setup_commands": system_setup_commands,
},
blueprint_preview_params.BlueprintPreviewParams,
Expand Down Expand Up @@ -874,6 +1005,9 @@ def __init__(self, blueprints: BlueprintsResource) -> None:
self.delete = to_raw_response_wrapper(
blueprints.delete,
)
self.list_public = to_raw_response_wrapper(
blueprints.list_public,
)
self.logs = to_raw_response_wrapper(
blueprints.logs,
)
Expand All @@ -898,6 +1032,9 @@ def __init__(self, blueprints: AsyncBlueprintsResource) -> None:
self.delete = async_to_raw_response_wrapper(
blueprints.delete,
)
self.list_public = async_to_raw_response_wrapper(
blueprints.list_public,
)
self.logs = async_to_raw_response_wrapper(
blueprints.logs,
)
Expand All @@ -922,6 +1059,9 @@ def __init__(self, blueprints: BlueprintsResource) -> None:
self.delete = to_streamed_response_wrapper(
blueprints.delete,
)
self.list_public = to_streamed_response_wrapper(
blueprints.list_public,
)
self.logs = to_streamed_response_wrapper(
blueprints.logs,
)
Expand All @@ -946,6 +1086,9 @@ def __init__(self, blueprints: AsyncBlueprintsResource) -> None:
self.delete = async_to_streamed_response_wrapper(
blueprints.delete,
)
self.list_public = async_to_streamed_response_wrapper(
blueprints.list_public,
)
self.logs = async_to_streamed_response_wrapper(
blueprints.logs,
)
Expand Down
Loading