Skip to content

feat(api): api update #540

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 11, 2025
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
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
configured_endpoints: 73
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-a6925284ea7678ed801dbaf6b5c60676b97ab7a16191c1b2ff8ef6a468e89f3b.yml
configured_endpoints: 77
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-a3d91c690527ff6a9040ade46943ba56916987f1f7d1fb45a9974546770ffe97.yml
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ Error codes are as follows:

### Retries

Certain errors are automatically retried 2 times by default, with a short exponential backoff.
Certain errors are automatically retried 0 times by default, with a short exponential backoff.
Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
429 Rate Limit, and >=500 Internal errors are all retried by default.

Expand Down
18 changes: 18 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ Methods:

- <code title="post /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create</a>(\*\*<a href="src/runloop_api_client/types/devbox_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
- <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
- <code title="post /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
- <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">SyncDevboxesCursorIDPage[DevboxView]</a></code>
- <code title="post /v1/devboxes/{id}/create_ssh_key">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_ssh_key</a>(id) -> <a href="./src/runloop_api_client/types/devbox_create_ssh_key_response.py">DevboxCreateSSHKeyResponse</a></code>
- <code title="post /v1/devboxes/{id}/create_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_tunnel</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_create_tunnel_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_tunnel_view.py">DevboxTunnelView</a></code>
Expand All @@ -101,6 +102,20 @@ Methods:
- <code title="post /v1/devboxes/{id}/upload_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">upload_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_upload_file_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_upload_file_response.py">object</a></code>
- <code title="post /v1/devboxes/{id}/write_file_contents">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">write_file_contents</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_write_file_contents_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_execution_detail_view.py">DevboxExecutionDetailView</a></code>

## DiskSnapshots

Types:

```python
from runloop_api_client.types.devboxes import DiskSnapshotDeleteResponse
```

Methods:

- <code title="post /v1/devboxes/disk_snapshots/{id}">client.devboxes.disk_snapshots.<a href="./src/runloop_api_client/resources/devboxes/disk_snapshots.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">DevboxSnapshotView</a></code>
- <code title="get /v1/devboxes/disk_snapshots">client.devboxes.disk_snapshots.<a href="./src/runloop_api_client/resources/devboxes/disk_snapshots.py">list</a>(\*\*<a href="src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_snapshot_view.py">SyncDiskSnapshotsCursorIDPage[DevboxSnapshotView]</a></code>
- <code title="post /v1/devboxes/disk_snapshots/{id}/delete">client.devboxes.disk_snapshots.<a href="./src/runloop_api_client/resources/devboxes/disk_snapshots.py">delete</a>(id) -> <a href="./src/runloop_api_client/types/devboxes/disk_snapshot_delete_response.py">object</a></code>

## Browsers

Types:
Expand All @@ -112,6 +127,7 @@ from runloop_api_client.types.devboxes import BrowserView
Methods:

- <code title="post /v1/devboxes/browsers">client.devboxes.browsers.<a href="./src/runloop_api_client/resources/devboxes/browsers.py">create</a>(\*\*<a href="src/runloop_api_client/types/devboxes/browser_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/browser_view.py">BrowserView</a></code>
- <code title="get /v1/devboxes/browsers/{id}">client.devboxes.browsers.<a href="./src/runloop_api_client/resources/devboxes/browsers.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devboxes/browser_view.py">BrowserView</a></code>

## Computers

Expand All @@ -129,6 +145,7 @@ from runloop_api_client.types.devboxes import (
Methods:

- <code title="post /v1/devboxes/computers">client.devboxes.computers.<a href="./src/runloop_api_client/resources/devboxes/computers.py">create</a>(\*\*<a href="src/runloop_api_client/types/devboxes/computer_create_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/computer_view.py">ComputerView</a></code>
- <code title="get /v1/devboxes/computers/{id}">client.devboxes.computers.<a href="./src/runloop_api_client/resources/devboxes/computers.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devboxes/computer_view.py">ComputerView</a></code>
- <code title="post /v1/devboxes/computers/{id}/keyboard_interaction">client.devboxes.computers.<a href="./src/runloop_api_client/resources/devboxes/computers.py">keyboard_interaction</a>(id, \*\*<a href="src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py">ComputerKeyboardInteractionResponse</a></code>
- <code title="post /v1/devboxes/computers/{id}/mouse_interaction">client.devboxes.computers.<a href="./src/runloop_api_client/resources/devboxes/computers.py">mouse_interaction</a>(id, \*\*<a href="src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py">ComputerMouseInteractionResponse</a></code>
- <code title="post /v1/devboxes/computers/{id}/screen_interaction">client.devboxes.computers.<a href="./src/runloop_api_client/resources/devboxes/computers.py">screen_interaction</a>(id, \*\*<a href="src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py">ComputerScreenInteractionResponse</a></code>
Expand Down Expand Up @@ -163,6 +180,7 @@ from runloop_api_client.types.devboxes import (
DiagnosticSeverity,
DiagnosticsResponse,
DiagnosticTag,
DocumentSymbol,
DocumentSymbolResponse,
DocumentUri,
FileContentsResponse,
Expand Down
6 changes: 3 additions & 3 deletions src/runloop_api_client/_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

# default timeout is 1 minute
DEFAULT_TIMEOUT = httpx.Timeout(timeout=60, connect=5.0)
DEFAULT_MAX_RETRIES = 2
DEFAULT_MAX_RETRIES = 0
DEFAULT_CONNECTION_LIMITS = httpx.Limits(max_connections=100, max_keepalive_connections=20)

INITIAL_RETRY_DELAY = 0.5
MAX_RETRY_DELAY = 8.0
INITIAL_RETRY_DELAY = 1.0
MAX_RETRY_DELAY = 10.0
14 changes: 14 additions & 0 deletions src/runloop_api_client/resources/devboxes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,22 @@
ExecutionsResourceWithStreamingResponse,
AsyncExecutionsResourceWithStreamingResponse,
)
from .disk_snapshots import (
DiskSnapshotsResource,
AsyncDiskSnapshotsResource,
DiskSnapshotsResourceWithRawResponse,
AsyncDiskSnapshotsResourceWithRawResponse,
DiskSnapshotsResourceWithStreamingResponse,
AsyncDiskSnapshotsResourceWithStreamingResponse,
)

__all__ = [
"DiskSnapshotsResource",
"AsyncDiskSnapshotsResource",
"DiskSnapshotsResourceWithRawResponse",
"AsyncDiskSnapshotsResourceWithRawResponse",
"DiskSnapshotsResourceWithStreamingResponse",
"AsyncDiskSnapshotsResourceWithStreamingResponse",
"BrowsersResource",
"AsyncBrowsersResource",
"BrowsersResourceWithRawResponse",
Expand Down
78 changes: 78 additions & 0 deletions src/runloop_api_client/resources/devboxes/browsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,39 @@ def create(
cast_to=BrowserView,
)

def retrieve(
self,
id: str,
*,
# 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,
) -> BrowserView:
"""
Get Browser Details.

Args:
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(
f"/v1/devboxes/browsers/{id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=BrowserView,
)


class AsyncBrowsersResource(AsyncAPIResource):
@cached_property
Expand Down Expand Up @@ -155,6 +188,39 @@ async def create(
cast_to=BrowserView,
)

async def retrieve(
self,
id: str,
*,
# 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,
) -> BrowserView:
"""
Get Browser Details.

Args:
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(
f"/v1/devboxes/browsers/{id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=BrowserView,
)


class BrowsersResourceWithRawResponse:
def __init__(self, browsers: BrowsersResource) -> None:
Expand All @@ -163,6 +229,9 @@ def __init__(self, browsers: BrowsersResource) -> None:
self.create = to_raw_response_wrapper(
browsers.create,
)
self.retrieve = to_raw_response_wrapper(
browsers.retrieve,
)


class AsyncBrowsersResourceWithRawResponse:
Expand All @@ -172,6 +241,9 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
self.create = async_to_raw_response_wrapper(
browsers.create,
)
self.retrieve = async_to_raw_response_wrapper(
browsers.retrieve,
)


class BrowsersResourceWithStreamingResponse:
Expand All @@ -181,6 +253,9 @@ def __init__(self, browsers: BrowsersResource) -> None:
self.create = to_streamed_response_wrapper(
browsers.create,
)
self.retrieve = to_streamed_response_wrapper(
browsers.retrieve,
)


class AsyncBrowsersResourceWithStreamingResponse:
Expand All @@ -190,3 +265,6 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
self.create = async_to_streamed_response_wrapper(
browsers.create,
)
self.retrieve = async_to_streamed_response_wrapper(
browsers.retrieve,
)
78 changes: 78 additions & 0 deletions src/runloop_api_client/resources/devboxes/computers.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,39 @@ def create(
cast_to=ComputerView,
)

def retrieve(
self,
id: str,
*,
# 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,
) -> ComputerView:
"""
Get Computer Details.

Args:
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(
f"/v1/devboxes/computers/{id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=ComputerView,
)

def keyboard_interaction(
self,
id: str,
Expand Down Expand Up @@ -343,6 +376,39 @@ async def create(
cast_to=ComputerView,
)

async def retrieve(
self,
id: str,
*,
# 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,
) -> ComputerView:
"""
Get Computer Details.

Args:
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(
f"/v1/devboxes/computers/{id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=ComputerView,
)

async def keyboard_interaction(
self,
id: str,
Expand Down Expand Up @@ -508,6 +574,9 @@ def __init__(self, computers: ComputersResource) -> None:
self.create = to_raw_response_wrapper(
computers.create,
)
self.retrieve = to_raw_response_wrapper(
computers.retrieve,
)
self.keyboard_interaction = to_raw_response_wrapper(
computers.keyboard_interaction,
)
Expand All @@ -526,6 +595,9 @@ def __init__(self, computers: AsyncComputersResource) -> None:
self.create = async_to_raw_response_wrapper(
computers.create,
)
self.retrieve = async_to_raw_response_wrapper(
computers.retrieve,
)
self.keyboard_interaction = async_to_raw_response_wrapper(
computers.keyboard_interaction,
)
Expand All @@ -544,6 +616,9 @@ def __init__(self, computers: ComputersResource) -> None:
self.create = to_streamed_response_wrapper(
computers.create,
)
self.retrieve = to_streamed_response_wrapper(
computers.retrieve,
)
self.keyboard_interaction = to_streamed_response_wrapper(
computers.keyboard_interaction,
)
Expand All @@ -562,6 +637,9 @@ def __init__(self, computers: AsyncComputersResource) -> None:
self.create = async_to_streamed_response_wrapper(
computers.create,
)
self.retrieve = async_to_streamed_response_wrapper(
computers.retrieve,
)
self.keyboard_interaction = async_to_streamed_response_wrapper(
computers.keyboard_interaction,
)
Expand Down
Loading