Skip to content

Commit d0d85a2

Browse files
feat(api): manual updates
replays!
1 parent 45f4ac0 commit d0d85a2

17 files changed

+1079
-264
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 18
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-d173129101e26f450c200e84430d993479c034700cf826917425d513b88912e6.yml
3-
openapi_spec_hash: 150b86da7588979d7619b1a894e4720c
4-
config_hash: eaeed470b1070b34df69c49d68e67355
1+
configured_endpoints: 21
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-a5b1d2c806c42c1534eefc8d34516f7f6e4ab68cb6a836534ee549bdbe4653f3.yml
3+
openapi_spec_hash: 0be350cc8ddbd1fc7e058ce6c3a44ee8
4+
config_hash: 307153ecd5b85f77ce8e0d87f6e5dfab

api.md

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,23 @@ from kernel.types import (
8787

8888
Methods:
8989

90-
- <code title="post /browsers">client.browsers.<a href="./src/kernel/resources/browsers.py">create</a>(\*\*<a href="src/kernel/types/browser_create_params.py">params</a>) -> <a href="./src/kernel/types/browser_create_response.py">BrowserCreateResponse</a></code>
91-
- <code title="get /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers.py">retrieve</a>(id) -> <a href="./src/kernel/types/browser_retrieve_response.py">BrowserRetrieveResponse</a></code>
92-
- <code title="get /browsers">client.browsers.<a href="./src/kernel/resources/browsers.py">list</a>() -> <a href="./src/kernel/types/browser_list_response.py">BrowserListResponse</a></code>
93-
- <code title="delete /browsers">client.browsers.<a href="./src/kernel/resources/browsers.py">delete</a>(\*\*<a href="src/kernel/types/browser_delete_params.py">params</a>) -> None</code>
94-
- <code title="delete /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers.py">delete_by_id</a>(id) -> None</code>
95-
- <code title="get /browsers/{id}/replay">client.browsers.<a href="./src/kernel/resources/browsers.py">retrieve_replay</a>(id) -> BinaryAPIResponse</code>
90+
- <code title="post /browsers">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">create</a>(\*\*<a href="src/kernel/types/browser_create_params.py">params</a>) -> <a href="./src/kernel/types/browser_create_response.py">BrowserCreateResponse</a></code>
91+
- <code title="get /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">retrieve</a>(id) -> <a href="./src/kernel/types/browser_retrieve_response.py">BrowserRetrieveResponse</a></code>
92+
- <code title="get /browsers">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">list</a>() -> <a href="./src/kernel/types/browser_list_response.py">BrowserListResponse</a></code>
93+
- <code title="delete /browsers">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">delete</a>(\*\*<a href="src/kernel/types/browser_delete_params.py">params</a>) -> None</code>
94+
- <code title="delete /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">delete_by_id</a>(id) -> None</code>
95+
96+
## Replays
97+
98+
Types:
99+
100+
```python
101+
from kernel.types.browsers import ReplayListResponse, ReplayStartResponse
102+
```
103+
104+
Methods:
105+
106+
- <code title="get /browsers/{id}/replays">client.browsers.replays.<a href="./src/kernel/resources/browsers/replays.py">list</a>(id) -> <a href="./src/kernel/types/browsers/replay_list_response.py">ReplayListResponse</a></code>
107+
- <code title="get /browsers/{id}/replays/{replay_id}">client.browsers.replays.<a href="./src/kernel/resources/browsers/replays.py">download</a>(replay_id, \*, id) -> BinaryAPIResponse</code>
108+
- <code title="post /browsers/{id}/replays">client.browsers.replays.<a href="./src/kernel/resources/browsers/replays.py">start</a>(id, \*\*<a href="src/kernel/types/browsers/replay_start_params.py">params</a>) -> <a href="./src/kernel/types/browsers/replay_start_response.py">ReplayStartResponse</a></code>
109+
- <code title="post /browsers/{id}/replays/{replay_id}/stop">client.browsers.replays.<a href="./src/kernel/resources/browsers/replays.py">stop</a>(replay_id, \*, id) -> None</code>

src/kernel/_client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
)
2222
from ._utils import is_given, get_async_library
2323
from ._version import __version__
24-
from .resources import browsers, deployments, invocations
24+
from .resources import deployments, invocations
2525
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
2626
from ._exceptions import KernelError, APIStatusError
2727
from ._base_client import (
@@ -30,6 +30,7 @@
3030
AsyncAPIClient,
3131
)
3232
from .resources.apps import apps
33+
from .resources.browsers import browsers
3334

3435
__all__ = [
3536
"ENVIRONMENTS",
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from .replays import (
4+
ReplaysResource,
5+
AsyncReplaysResource,
6+
ReplaysResourceWithRawResponse,
7+
AsyncReplaysResourceWithRawResponse,
8+
ReplaysResourceWithStreamingResponse,
9+
AsyncReplaysResourceWithStreamingResponse,
10+
)
11+
from .browsers import (
12+
BrowsersResource,
13+
AsyncBrowsersResource,
14+
BrowsersResourceWithRawResponse,
15+
AsyncBrowsersResourceWithRawResponse,
16+
BrowsersResourceWithStreamingResponse,
17+
AsyncBrowsersResourceWithStreamingResponse,
18+
)
19+
20+
__all__ = [
21+
"ReplaysResource",
22+
"AsyncReplaysResource",
23+
"ReplaysResourceWithRawResponse",
24+
"AsyncReplaysResourceWithRawResponse",
25+
"ReplaysResourceWithStreamingResponse",
26+
"AsyncReplaysResourceWithStreamingResponse",
27+
"BrowsersResource",
28+
"AsyncBrowsersResource",
29+
"BrowsersResourceWithRawResponse",
30+
"AsyncBrowsersResourceWithRawResponse",
31+
"BrowsersResourceWithStreamingResponse",
32+
"AsyncBrowsersResourceWithStreamingResponse",
33+
]

src/kernel/resources/browsers.py renamed to src/kernel/resources/browsers/browsers.py

Lines changed: 43 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,39 @@
44

55
import httpx
66

7-
from ..types import browser_create_params, browser_delete_params
8-
from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
9-
from .._utils import maybe_transform, async_maybe_transform
10-
from .._compat import cached_property
11-
from .._resource import SyncAPIResource, AsyncAPIResource
12-
from .._response import (
13-
BinaryAPIResponse,
14-
AsyncBinaryAPIResponse,
15-
StreamedBinaryAPIResponse,
16-
AsyncStreamedBinaryAPIResponse,
7+
from ...types import browser_create_params, browser_delete_params
8+
from .replays import (
9+
ReplaysResource,
10+
AsyncReplaysResource,
11+
ReplaysResourceWithRawResponse,
12+
AsyncReplaysResourceWithRawResponse,
13+
ReplaysResourceWithStreamingResponse,
14+
AsyncReplaysResourceWithStreamingResponse,
15+
)
16+
from ..._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
17+
from ..._utils import maybe_transform, async_maybe_transform
18+
from ..._compat import cached_property
19+
from ..._resource import SyncAPIResource, AsyncAPIResource
20+
from ..._response import (
1721
to_raw_response_wrapper,
1822
to_streamed_response_wrapper,
1923
async_to_raw_response_wrapper,
20-
to_custom_raw_response_wrapper,
2124
async_to_streamed_response_wrapper,
22-
to_custom_streamed_response_wrapper,
23-
async_to_custom_raw_response_wrapper,
24-
async_to_custom_streamed_response_wrapper,
2525
)
26-
from .._base_client import make_request_options
27-
from ..types.browser_list_response import BrowserListResponse
28-
from ..types.browser_create_response import BrowserCreateResponse
29-
from ..types.browser_persistence_param import BrowserPersistenceParam
30-
from ..types.browser_retrieve_response import BrowserRetrieveResponse
26+
from ..._base_client import make_request_options
27+
from ...types.browser_list_response import BrowserListResponse
28+
from ...types.browser_create_response import BrowserCreateResponse
29+
from ...types.browser_persistence_param import BrowserPersistenceParam
30+
from ...types.browser_retrieve_response import BrowserRetrieveResponse
3131

3232
__all__ = ["BrowsersResource", "AsyncBrowsersResource"]
3333

3434

3535
class BrowsersResource(SyncAPIResource):
36+
@cached_property
37+
def replays(self) -> ReplaysResource:
38+
return ReplaysResource(self._client)
39+
3640
@cached_property
3741
def with_raw_response(self) -> BrowsersResourceWithRawResponse:
3842
"""
@@ -58,7 +62,6 @@ def create(
5862
headless: bool | NotGiven = NOT_GIVEN,
5963
invocation_id: str | NotGiven = NOT_GIVEN,
6064
persistence: BrowserPersistenceParam | NotGiven = NOT_GIVEN,
61-
replay: bool | NotGiven = NOT_GIVEN,
6265
stealth: bool | NotGiven = NOT_GIVEN,
6366
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
6467
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -78,8 +81,6 @@ def create(
7881
7982
persistence: Optional persistence configuration for the browser session.
8083
81-
replay: If true, enables replay recording of the browser session. Defaults to false.
82-
8384
stealth: If true, launches the browser in stealth mode to reduce detection by anti-bot
8485
mechanisms.
8586
@@ -98,7 +99,6 @@ def create(
9899
"headless": headless,
99100
"invocation_id": invocation_id,
100101
"persistence": persistence,
101-
"replay": replay,
102102
"stealth": stealth,
103103
},
104104
browser_create_params.BrowserCreateParams,
@@ -233,42 +233,12 @@ def delete_by_id(
233233
cast_to=NoneType,
234234
)
235235

236-
def retrieve_replay(
237-
self,
238-
id: str,
239-
*,
240-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
241-
# The extra values given here take precedence over values defined on the client or passed to this method.
242-
extra_headers: Headers | None = None,
243-
extra_query: Query | None = None,
244-
extra_body: Body | None = None,
245-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
246-
) -> BinaryAPIResponse:
247-
"""
248-
Get browser session replay.
249-
250-
Args:
251-
extra_headers: Send extra headers
252-
253-
extra_query: Add additional query parameters to the request
254-
255-
extra_body: Add additional JSON properties to the request
256-
257-
timeout: Override the client-level default timeout for this request, in seconds
258-
"""
259-
if not id:
260-
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
261-
extra_headers = {"Accept": "video/mp4", **(extra_headers or {})}
262-
return self._get(
263-
f"/browsers/{id}/replay",
264-
options=make_request_options(
265-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
266-
),
267-
cast_to=BinaryAPIResponse,
268-
)
269-
270236

271237
class AsyncBrowsersResource(AsyncAPIResource):
238+
@cached_property
239+
def replays(self) -> AsyncReplaysResource:
240+
return AsyncReplaysResource(self._client)
241+
272242
@cached_property
273243
def with_raw_response(self) -> AsyncBrowsersResourceWithRawResponse:
274244
"""
@@ -294,7 +264,6 @@ async def create(
294264
headless: bool | NotGiven = NOT_GIVEN,
295265
invocation_id: str | NotGiven = NOT_GIVEN,
296266
persistence: BrowserPersistenceParam | NotGiven = NOT_GIVEN,
297-
replay: bool | NotGiven = NOT_GIVEN,
298267
stealth: bool | NotGiven = NOT_GIVEN,
299268
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
300269
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -314,8 +283,6 @@ async def create(
314283
315284
persistence: Optional persistence configuration for the browser session.
316285
317-
replay: If true, enables replay recording of the browser session. Defaults to false.
318-
319286
stealth: If true, launches the browser in stealth mode to reduce detection by anti-bot
320287
mechanisms.
321288
@@ -334,7 +301,6 @@ async def create(
334301
"headless": headless,
335302
"invocation_id": invocation_id,
336303
"persistence": persistence,
337-
"replay": replay,
338304
"stealth": stealth,
339305
},
340306
browser_create_params.BrowserCreateParams,
@@ -471,40 +437,6 @@ async def delete_by_id(
471437
cast_to=NoneType,
472438
)
473439

474-
async def retrieve_replay(
475-
self,
476-
id: str,
477-
*,
478-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
479-
# The extra values given here take precedence over values defined on the client or passed to this method.
480-
extra_headers: Headers | None = None,
481-
extra_query: Query | None = None,
482-
extra_body: Body | None = None,
483-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
484-
) -> AsyncBinaryAPIResponse:
485-
"""
486-
Get browser session replay.
487-
488-
Args:
489-
extra_headers: Send extra headers
490-
491-
extra_query: Add additional query parameters to the request
492-
493-
extra_body: Add additional JSON properties to the request
494-
495-
timeout: Override the client-level default timeout for this request, in seconds
496-
"""
497-
if not id:
498-
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
499-
extra_headers = {"Accept": "video/mp4", **(extra_headers or {})}
500-
return await self._get(
501-
f"/browsers/{id}/replay",
502-
options=make_request_options(
503-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
504-
),
505-
cast_to=AsyncBinaryAPIResponse,
506-
)
507-
508440

509441
class BrowsersResourceWithRawResponse:
510442
def __init__(self, browsers: BrowsersResource) -> None:
@@ -525,10 +457,10 @@ def __init__(self, browsers: BrowsersResource) -> None:
525457
self.delete_by_id = to_raw_response_wrapper(
526458
browsers.delete_by_id,
527459
)
528-
self.retrieve_replay = to_custom_raw_response_wrapper(
529-
browsers.retrieve_replay,
530-
BinaryAPIResponse,
531-
)
460+
461+
@cached_property
462+
def replays(self) -> ReplaysResourceWithRawResponse:
463+
return ReplaysResourceWithRawResponse(self._browsers.replays)
532464

533465

534466
class AsyncBrowsersResourceWithRawResponse:
@@ -550,10 +482,10 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
550482
self.delete_by_id = async_to_raw_response_wrapper(
551483
browsers.delete_by_id,
552484
)
553-
self.retrieve_replay = async_to_custom_raw_response_wrapper(
554-
browsers.retrieve_replay,
555-
AsyncBinaryAPIResponse,
556-
)
485+
486+
@cached_property
487+
def replays(self) -> AsyncReplaysResourceWithRawResponse:
488+
return AsyncReplaysResourceWithRawResponse(self._browsers.replays)
557489

558490

559491
class BrowsersResourceWithStreamingResponse:
@@ -575,10 +507,10 @@ def __init__(self, browsers: BrowsersResource) -> None:
575507
self.delete_by_id = to_streamed_response_wrapper(
576508
browsers.delete_by_id,
577509
)
578-
self.retrieve_replay = to_custom_streamed_response_wrapper(
579-
browsers.retrieve_replay,
580-
StreamedBinaryAPIResponse,
581-
)
510+
511+
@cached_property
512+
def replays(self) -> ReplaysResourceWithStreamingResponse:
513+
return ReplaysResourceWithStreamingResponse(self._browsers.replays)
582514

583515

584516
class AsyncBrowsersResourceWithStreamingResponse:
@@ -600,7 +532,7 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
600532
self.delete_by_id = async_to_streamed_response_wrapper(
601533
browsers.delete_by_id,
602534
)
603-
self.retrieve_replay = async_to_custom_streamed_response_wrapper(
604-
browsers.retrieve_replay,
605-
AsyncStreamedBinaryAPIResponse,
606-
)
535+
536+
@cached_property
537+
def replays(self) -> AsyncReplaysResourceWithStreamingResponse:
538+
return AsyncReplaysResourceWithStreamingResponse(self._browsers.replays)

0 commit comments

Comments
 (0)