diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 86b0e83d7..cb9d2541c 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.21.0"
+ ".": "0.22.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 9d22ea0fc..abd9dea86 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 73
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-76f469266d2a329a84074f63a1e53c27bb78eb39c0585fe7790b082e1758c0c5.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-a6925284ea7678ed801dbaf6b5c60676b97ab7a16191c1b2ff8ef6a468e89f3b.yml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 85b08a7e7..3108be617 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.22.0 (2025-02-04)
+
+Full Changelog: [v0.21.0...v0.22.0](https://github.com/runloopai/api-client-python/compare/v0.21.0...v0.22.0)
+
+### Features
+
+* **api:** api update ([#531](https://github.com/runloopai/api-client-python/issues/531)) ([2952d8d](https://github.com/runloopai/api-client-python/commit/2952d8d3b2653fd02f1bf99ac3cb6e76739a282a))
+
## 0.21.0 (2025-02-04)
Full Changelog: [v0.20.0...v0.21.0](https://github.com/runloopai/api-client-python/compare/v0.20.0...v0.21.0)
diff --git a/api.md b/api.md
index 18f2b224d..0595502d6 100644
--- a/api.md
+++ b/api.md
@@ -111,7 +111,7 @@ from runloop_api_client.types.devboxes import BrowserView
Methods:
-- client.devboxes.browsers.create() -> BrowserView
+- client.devboxes.browsers.create(\*\*params) -> BrowserView
## Computers
diff --git a/pyproject.toml b/pyproject.toml
index e42d7d556..369c275c3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "runloop_api_client"
-version = "0.21.0"
+version = "0.22.0"
description = "The official Python library for the runloop API"
dynamic = ["readme"]
license = "MIT"
diff --git a/src/runloop_api_client/_version.py b/src/runloop_api_client/_version.py
index bd2ebaed5..c524a520b 100644
--- a/src/runloop_api_client/_version.py
+++ b/src/runloop_api_client/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "runloop_api_client"
-__version__ = "0.21.0" # x-release-please-version
+__version__ = "0.22.0" # x-release-please-version
diff --git a/src/runloop_api_client/resources/devboxes/browsers.py b/src/runloop_api_client/resources/devboxes/browsers.py
index 59d264bcc..d59cbcd4d 100644
--- a/src/runloop_api_client/resources/devboxes/browsers.py
+++ b/src/runloop_api_client/resources/devboxes/browsers.py
@@ -2,9 +2,15 @@
from __future__ import annotations
+from typing import Optional
+
import httpx
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
+from ..._utils import (
+ maybe_transform,
+ async_maybe_transform,
+)
from ..._compat import cached_property
from ..._resource import SyncAPIResource, AsyncAPIResource
from ..._response import (
@@ -14,6 +20,7 @@
async_to_streamed_response_wrapper,
)
from ..._base_client import make_request_options
+from ...types.devboxes import browser_create_params
from ...types.devboxes.browser_view import BrowserView
__all__ = ["BrowsersResource", "AsyncBrowsersResource"]
@@ -42,6 +49,7 @@ def with_streaming_response(self) -> BrowsersResourceWithStreamingResponse:
def create(
self,
*,
+ name: Optional[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,
@@ -55,9 +63,23 @@ def create(
As part
of booting the Devbox, the browser will automatically be started with connection
utilities activated.
+
+ Args:
+ name: The name to use for the created Devbox with a Browser.
+
+ 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
+
+ idempotency_key: Specify a custom idempotency key for this request
"""
return self._post(
"/v1/devboxes/browsers",
+ body=maybe_transform({"name": name}, browser_create_params.BrowserCreateParams),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -92,6 +114,7 @@ def with_streaming_response(self) -> AsyncBrowsersResourceWithStreamingResponse:
async def create(
self,
*,
+ name: Optional[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,
@@ -105,9 +128,23 @@ async def create(
As part
of booting the Devbox, the browser will automatically be started with connection
utilities activated.
+
+ Args:
+ name: The name to use for the created Devbox with a Browser.
+
+ 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
+
+ idempotency_key: Specify a custom idempotency key for this request
"""
return await self._post(
"/v1/devboxes/browsers",
+ body=await async_maybe_transform({"name": name}, browser_create_params.BrowserCreateParams),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
diff --git a/src/runloop_api_client/resources/devboxes/computers.py b/src/runloop_api_client/resources/devboxes/computers.py
index c10791302..b34697390 100644
--- a/src/runloop_api_client/resources/devboxes/computers.py
+++ b/src/runloop_api_client/resources/devboxes/computers.py
@@ -59,6 +59,7 @@ def create(
self,
*,
display_dimensions: Optional[computer_create_params.DisplayDimensions] | NotGiven = NOT_GIVEN,
+ name: Optional[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,
@@ -78,6 +79,8 @@ def create(
Args:
display_dimensions: Customize the dimensions of the computer display.
+ name: The name to use for the created computer.
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -91,7 +94,11 @@ def create(
return self._post(
"/v1/devboxes/computers",
body=maybe_transform(
- {"display_dimensions": display_dimensions}, computer_create_params.ComputerCreateParams
+ {
+ "display_dimensions": display_dimensions,
+ "name": name,
+ },
+ computer_create_params.ComputerCreateParams,
),
options=make_request_options(
extra_headers=extra_headers,
@@ -285,6 +292,7 @@ async def create(
self,
*,
display_dimensions: Optional[computer_create_params.DisplayDimensions] | NotGiven = NOT_GIVEN,
+ name: Optional[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,
@@ -304,6 +312,8 @@ async def create(
Args:
display_dimensions: Customize the dimensions of the computer display.
+ name: The name to use for the created computer.
+
extra_headers: Send extra headers
extra_query: Add additional query parameters to the request
@@ -317,7 +327,11 @@ async def create(
return await self._post(
"/v1/devboxes/computers",
body=await async_maybe_transform(
- {"display_dimensions": display_dimensions}, computer_create_params.ComputerCreateParams
+ {
+ "display_dimensions": display_dimensions,
+ "name": name,
+ },
+ computer_create_params.ComputerCreateParams,
),
options=make_request_options(
extra_headers=extra_headers,
diff --git a/src/runloop_api_client/types/devbox_view.py b/src/runloop_api_client/types/devbox_view.py
index f645afde6..0a056748e 100644
--- a/src/runloop_api_client/types/devbox_view.py
+++ b/src/runloop_api_client/types/devbox_view.py
@@ -13,7 +13,7 @@ class DevboxView(BaseModel):
id: str
"""The ID of the Devbox."""
- capabilities: List[Literal["unknown", "computer_usage", "browser_usage"]]
+ capabilities: List[Literal["unknown", "computer_usage", "browser_usage", "language_server"]]
"""A list of capability groups this devbox has access to.
This allows devboxes to be compatible with certain tools sets like computer
diff --git a/src/runloop_api_client/types/devboxes/__init__.py b/src/runloop_api_client/types/devboxes/__init__.py
index eadbfb1b5..6ec9bf85f 100644
--- a/src/runloop_api_client/types/devboxes/__init__.py
+++ b/src/runloop_api_client/types/devboxes/__init__.py
@@ -43,6 +43,7 @@
from .references_response import ReferencesResponse as ReferencesResponse
from .diagnostics_response import DiagnosticsResponse as DiagnosticsResponse
from .base_diagnostic_param import BaseDiagnosticParam as BaseDiagnosticParam
+from .browser_create_params import BrowserCreateParams as BrowserCreateParams
from .code_actions_response import CodeActionsResponse as CodeActionsResponse
from .devbox_logs_list_view import DevboxLogsListView as DevboxLogsListView
from .lsp_formatting_params import LspFormattingParams as LspFormattingParams
diff --git a/src/runloop_api_client/types/devboxes/browser_create_params.py b/src/runloop_api_client/types/devboxes/browser_create_params.py
new file mode 100644
index 000000000..523b03be0
--- /dev/null
+++ b/src/runloop_api_client/types/devboxes/browser_create_params.py
@@ -0,0 +1,13 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Optional
+from typing_extensions import TypedDict
+
+__all__ = ["BrowserCreateParams"]
+
+
+class BrowserCreateParams(TypedDict, total=False):
+ name: Optional[str]
+ """The name to use for the created Devbox with a Browser."""
diff --git a/src/runloop_api_client/types/devboxes/computer_create_params.py b/src/runloop_api_client/types/devboxes/computer_create_params.py
index 15c00cff0..febd5aef5 100644
--- a/src/runloop_api_client/types/devboxes/computer_create_params.py
+++ b/src/runloop_api_client/types/devboxes/computer_create_params.py
@@ -12,6 +12,9 @@ class ComputerCreateParams(TypedDict, total=False):
display_dimensions: Optional[DisplayDimensions]
"""Customize the dimensions of the computer display."""
+ name: Optional[str]
+ """The name to use for the created computer."""
+
class DisplayDimensions(TypedDict, total=False):
display_height_px: Required[int]
diff --git a/tests/api_resources/devboxes/test_browsers.py b/tests/api_resources/devboxes/test_browsers.py
index 9b1a51a2b..2bdbd823a 100644
--- a/tests/api_resources/devboxes/test_browsers.py
+++ b/tests/api_resources/devboxes/test_browsers.py
@@ -22,6 +22,13 @@ def test_method_create(self, client: Runloop) -> None:
browser = client.devboxes.browsers.create()
assert_matches_type(BrowserView, browser, path=["response"])
+ @parametrize
+ def test_method_create_with_all_params(self, client: Runloop) -> None:
+ browser = client.devboxes.browsers.create(
+ name="name",
+ )
+ assert_matches_type(BrowserView, browser, path=["response"])
+
@parametrize
def test_raw_response_create(self, client: Runloop) -> None:
response = client.devboxes.browsers.with_raw_response.create()
@@ -51,6 +58,13 @@ async def test_method_create(self, async_client: AsyncRunloop) -> None:
browser = await async_client.devboxes.browsers.create()
assert_matches_type(BrowserView, browser, path=["response"])
+ @parametrize
+ async def test_method_create_with_all_params(self, async_client: AsyncRunloop) -> None:
+ browser = await async_client.devboxes.browsers.create(
+ name="name",
+ )
+ assert_matches_type(BrowserView, browser, path=["response"])
+
@parametrize
async def test_raw_response_create(self, async_client: AsyncRunloop) -> None:
response = await async_client.devboxes.browsers.with_raw_response.create()
diff --git a/tests/api_resources/devboxes/test_computers.py b/tests/api_resources/devboxes/test_computers.py
index 09b08358a..a388926b6 100644
--- a/tests/api_resources/devboxes/test_computers.py
+++ b/tests/api_resources/devboxes/test_computers.py
@@ -34,6 +34,7 @@ def test_method_create_with_all_params(self, client: Runloop) -> None:
"display_height_px": 0,
"display_width_px": 0,
},
+ name="name",
)
assert_matches_type(ComputerView, computer, path=["response"])
@@ -220,6 +221,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncRunloop) -
"display_height_px": 0,
"display_width_px": 0,
},
+ name="name",
)
assert_matches_type(ComputerView, computer, path=["response"])