Skip to content

Commit 253be85

Browse files
feat: EOL persistent browsers: openapi limits
1 parent c9a6c75 commit 253be85

20 files changed

Lines changed: 9 additions & 302 deletions

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 113
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-2118a79fa452fad5922776130ea4877059e9568b603ef146171b7bb6a0f8458a.yml
3-
openapi_spec_hash: 686e8c5855ed88b2944b9d9ec21d22ce
4-
config_hash: 37661d89120558d34b6cc184292632f2
1+
configured_endpoints: 112
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-346b1affebf16e7f943bcf4db307a5589fcae636c9147dd0afbe5c02cf12ad30.yml
3+
openapi_spec_hash: 348df436759d220264f12450919211c3
4+
config_hash: ae3dea7997fb5d36fa41979f9585ed78

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,9 @@ from kernel import Kernel
203203
client = Kernel()
204204

205205
browser = client.browsers.create(
206-
persistence={"id": "my-awesome-browser-for-user-1234"},
206+
profile={},
207207
)
208-
print(browser.persistence)
208+
print(browser.profile)
209209
```
210210

211211
## File uploads

api.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ Types:
8080

8181
```python
8282
from kernel.types import (
83-
BrowserPersistence,
8483
BrowserPoolRef,
8584
BrowserUsage,
8685
Profile,
@@ -98,7 +97,6 @@ Methods:
9897
- <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_params.py">params</a>) -> <a href="./src/kernel/types/browser_retrieve_response.py">BrowserRetrieveResponse</a></code>
9998
- <code title="patch /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">update</a>(id, \*\*<a href="src/kernel/types/browser_update_params.py">params</a>) -> <a href="./src/kernel/types/browser_update_response.py">BrowserUpdateResponse</a></code>
10099
- <code title="get /browsers">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">list</a>(\*\*<a href="src/kernel/types/browser_list_params.py">params</a>) -> <a href="./src/kernel/types/browser_list_response.py">SyncOffsetPagination[BrowserListResponse]</a></code>
101-
- <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>
102100
- <code title="post /browsers/{id}/curl">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">curl</a>(id, \*\*<a href="src/kernel/types/browser_curl_params.py">params</a>) -> <a href="./src/kernel/types/browser_curl_response.py">BrowserCurlResponse</a></code>
103101
- <code title="delete /browsers/{id}">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">delete_by_id</a>(id) -> None</code>
104102
- <code title="post /browsers/{id}/extensions">client.browsers.<a href="./src/kernel/resources/browsers/browsers.py">load_extensions</a>(id, \*\*<a href="src/kernel/types/browser_load_extensions_params.py">params</a>) -> None</code>

src/kernel/resources/browsers/browsers.py

Lines changed: 2 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from __future__ import annotations
44

5-
import typing_extensions
65
from typing import Dict, Mapping, Iterable, Iterator, Optional, AsyncIterator, cast
76
from contextlib import contextmanager, asynccontextmanager
87
from typing_extensions import Literal
@@ -29,7 +28,6 @@
2928
browser_curl_params,
3029
browser_list_params,
3130
browser_create_params,
32-
browser_delete_params,
3331
browser_update_params,
3432
browser_retrieve_params,
3533
browser_load_extensions_params,
@@ -97,7 +95,6 @@
9795
)
9896
from ...types.browser_create_response import BrowserCreateResponse
9997
from ...types.browser_update_response import BrowserUpdateResponse
100-
from ...types.browser_persistence_param import BrowserPersistenceParam
10198
from ...types.browser_retrieve_response import BrowserRetrieveResponse
10299
from ...types.shared_params.browser_profile import BrowserProfile
103100
from ...types.shared_params.browser_viewport import BrowserViewport
@@ -172,7 +169,6 @@ def create(
172169
headless: bool | Omit = omit,
173170
invocation_id: str | Omit = omit,
174171
kiosk_mode: bool | Omit = omit,
175-
persistence: BrowserPersistenceParam | Omit = omit,
176172
profile: BrowserProfile | Omit = omit,
177173
proxy_id: str | Omit = omit,
178174
start_url: str | Omit = omit,
@@ -193,8 +189,7 @@ def create(
193189
Args:
194190
chrome_policy: Custom Chrome enterprise policy overrides applied to this browser session. Keys
195191
are Chrome enterprise policy names; values must match their expected types.
196-
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored
197-
when reusing an existing persistent session. See
192+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
198193
https://chromeenterprise.google/policies/
199194
200195
extensions: List of browser extensions to load into the session. Provide each by id or name.
@@ -210,8 +205,6 @@ def create(
210205
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
211206
view.
212207
213-
persistence: DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles instead.
214-
215208
profile: Profile selection for the browser session. Provide either id or name. If
216209
specified, the matching profile will be loaded into the browser session.
217210
Profiles must be created beforehand.
@@ -267,7 +260,6 @@ def create(
267260
"headless": headless,
268261
"invocation_id": invocation_id,
269262
"kiosk_mode": kiosk_mode,
270-
"persistence": persistence,
271263
"profile": profile,
272264
"proxy_id": proxy_id,
273265
"start_url": start_url,
@@ -453,47 +445,6 @@ def list(
453445
model=BrowserListResponse,
454446
)
455447

456-
@typing_extensions.deprecated("deprecated")
457-
def delete(
458-
self,
459-
*,
460-
persistent_id: str,
461-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
462-
# The extra values given here take precedence over values defined on the client or passed to this method.
463-
extra_headers: Headers | None = None,
464-
extra_query: Query | None = None,
465-
extra_body: Body | None = None,
466-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
467-
) -> None:
468-
"""DEPRECATED: Use DELETE /browsers/{id} instead.
469-
470-
Delete a persistent browser
471-
session by its persistent_id.
472-
473-
Args:
474-
persistent_id: Persistent browser identifier
475-
476-
extra_headers: Send extra headers
477-
478-
extra_query: Add additional query parameters to the request
479-
480-
extra_body: Add additional JSON properties to the request
481-
482-
timeout: Override the client-level default timeout for this request, in seconds
483-
"""
484-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
485-
return self._delete(
486-
"/browsers",
487-
options=make_request_options(
488-
extra_headers=extra_headers,
489-
extra_query=extra_query,
490-
extra_body=extra_body,
491-
timeout=timeout,
492-
query=maybe_transform({"persistent_id": persistent_id}, browser_delete_params.BrowserDeleteParams),
493-
),
494-
cast_to=NoneType,
495-
)
496-
497448
def curl(
498449
self,
499450
id: str,
@@ -762,7 +713,6 @@ async def create(
762713
headless: bool | Omit = omit,
763714
invocation_id: str | Omit = omit,
764715
kiosk_mode: bool | Omit = omit,
765-
persistence: BrowserPersistenceParam | Omit = omit,
766716
profile: BrowserProfile | Omit = omit,
767717
proxy_id: str | Omit = omit,
768718
start_url: str | Omit = omit,
@@ -783,8 +733,7 @@ async def create(
783733
Args:
784734
chrome_policy: Custom Chrome enterprise policy overrides applied to this browser session. Keys
785735
are Chrome enterprise policy names; values must match their expected types.
786-
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored
787-
when reusing an existing persistent session. See
736+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
788737
https://chromeenterprise.google/policies/
789738
790739
extensions: List of browser extensions to load into the session. Provide each by id or name.
@@ -800,8 +749,6 @@ async def create(
800749
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
801750
view.
802751
803-
persistence: DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles instead.
804-
805752
profile: Profile selection for the browser session. Provide either id or name. If
806753
specified, the matching profile will be loaded into the browser session.
807754
Profiles must be created beforehand.
@@ -857,7 +804,6 @@ async def create(
857804
"headless": headless,
858805
"invocation_id": invocation_id,
859806
"kiosk_mode": kiosk_mode,
860-
"persistence": persistence,
861807
"profile": profile,
862808
"proxy_id": proxy_id,
863809
"start_url": start_url,
@@ -1043,49 +989,6 @@ def list(
1043989
model=BrowserListResponse,
1044990
)
1045991

1046-
@typing_extensions.deprecated("deprecated")
1047-
async def delete(
1048-
self,
1049-
*,
1050-
persistent_id: str,
1051-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1052-
# The extra values given here take precedence over values defined on the client or passed to this method.
1053-
extra_headers: Headers | None = None,
1054-
extra_query: Query | None = None,
1055-
extra_body: Body | None = None,
1056-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
1057-
) -> None:
1058-
"""DEPRECATED: Use DELETE /browsers/{id} instead.
1059-
1060-
Delete a persistent browser
1061-
session by its persistent_id.
1062-
1063-
Args:
1064-
persistent_id: Persistent browser identifier
1065-
1066-
extra_headers: Send extra headers
1067-
1068-
extra_query: Add additional query parameters to the request
1069-
1070-
extra_body: Add additional JSON properties to the request
1071-
1072-
timeout: Override the client-level default timeout for this request, in seconds
1073-
"""
1074-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
1075-
return await self._delete(
1076-
"/browsers",
1077-
options=make_request_options(
1078-
extra_headers=extra_headers,
1079-
extra_query=extra_query,
1080-
extra_body=extra_body,
1081-
timeout=timeout,
1082-
query=await async_maybe_transform(
1083-
{"persistent_id": persistent_id}, browser_delete_params.BrowserDeleteParams
1084-
),
1085-
),
1086-
cast_to=NoneType,
1087-
)
1088-
1089992
async def curl(
1090993
self,
1091994
id: str,
@@ -1305,11 +1208,6 @@ def __init__(self, browsers: BrowsersResource) -> None:
13051208
self.list = to_raw_response_wrapper(
13061209
browsers.list,
13071210
)
1308-
self.delete = ( # pyright: ignore[reportDeprecated]
1309-
to_raw_response_wrapper(
1310-
browsers.delete, # pyright: ignore[reportDeprecated],
1311-
)
1312-
)
13131211
self.curl = to_raw_response_wrapper(
13141212
browsers.curl,
13151213
)
@@ -1371,11 +1269,6 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
13711269
self.list = async_to_raw_response_wrapper(
13721270
browsers.list,
13731271
)
1374-
self.delete = ( # pyright: ignore[reportDeprecated]
1375-
async_to_raw_response_wrapper(
1376-
browsers.delete, # pyright: ignore[reportDeprecated],
1377-
)
1378-
)
13791272
self.curl = async_to_raw_response_wrapper(
13801273
browsers.curl,
13811274
)
@@ -1437,11 +1330,6 @@ def __init__(self, browsers: BrowsersResource) -> None:
14371330
self.list = to_streamed_response_wrapper(
14381331
browsers.list,
14391332
)
1440-
self.delete = ( # pyright: ignore[reportDeprecated]
1441-
to_streamed_response_wrapper(
1442-
browsers.delete, # pyright: ignore[reportDeprecated],
1443-
)
1444-
)
14451333
self.curl = to_streamed_response_wrapper(
14461334
browsers.curl,
14471335
)
@@ -1503,11 +1391,6 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
15031391
self.list = async_to_streamed_response_wrapper(
15041392
browsers.list,
15051393
)
1506-
self.delete = ( # pyright: ignore[reportDeprecated]
1507-
async_to_streamed_response_wrapper(
1508-
browsers.delete, # pyright: ignore[reportDeprecated],
1509-
)
1510-
)
15111394
self.curl = async_to_streamed_response_wrapper(
15121395
browsers.curl,
15131396
)

src/kernel/resources/projects/limits.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ def update(
8686
*,
8787
max_concurrent_invocations: Optional[int] | Omit = omit,
8888
max_concurrent_sessions: Optional[int] | Omit = omit,
89-
max_persistent_sessions: Optional[int] | Omit = omit,
9089
max_pooled_sessions: Optional[int] | Omit = omit,
9190
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
9291
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -108,9 +107,6 @@ def update(
108107
max_concurrent_sessions: Maximum concurrent browser sessions for this project. Set to 0 to remove the
109108
cap; omit to leave unchanged.
110109
111-
max_persistent_sessions: Maximum persistent browser sessions for this project. Set to 0 to remove the
112-
cap; omit to leave unchanged.
113-
114110
max_pooled_sessions: Maximum pooled sessions capacity for this project. Set to 0 to remove the cap;
115111
omit to leave unchanged.
116112
@@ -130,7 +126,6 @@ def update(
130126
{
131127
"max_concurrent_invocations": max_concurrent_invocations,
132128
"max_concurrent_sessions": max_concurrent_sessions,
133-
"max_persistent_sessions": max_persistent_sessions,
134129
"max_pooled_sessions": max_pooled_sessions,
135130
},
136131
limit_update_params.LimitUpdateParams,
@@ -205,7 +200,6 @@ async def update(
205200
*,
206201
max_concurrent_invocations: Optional[int] | Omit = omit,
207202
max_concurrent_sessions: Optional[int] | Omit = omit,
208-
max_persistent_sessions: Optional[int] | Omit = omit,
209203
max_pooled_sessions: Optional[int] | Omit = omit,
210204
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
211205
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -227,9 +221,6 @@ async def update(
227221
max_concurrent_sessions: Maximum concurrent browser sessions for this project. Set to 0 to remove the
228222
cap; omit to leave unchanged.
229223
230-
max_persistent_sessions: Maximum persistent browser sessions for this project. Set to 0 to remove the
231-
cap; omit to leave unchanged.
232-
233224
max_pooled_sessions: Maximum pooled sessions capacity for this project. Set to 0 to remove the cap;
234225
omit to leave unchanged.
235226
@@ -249,7 +240,6 @@ async def update(
249240
{
250241
"max_concurrent_invocations": max_concurrent_invocations,
251242
"max_concurrent_sessions": max_concurrent_sessions,
252-
"max_persistent_sessions": max_persistent_sessions,
253243
"max_pooled_sessions": max_pooled_sessions,
254244
},
255245
limit_update_params.LimitUpdateParams,

src/kernel/types/__init__.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
from .proxy_check_params import ProxyCheckParams as ProxyCheckParams
2727
from .browser_curl_params import BrowserCurlParams as BrowserCurlParams
2828
from .browser_list_params import BrowserListParams as BrowserListParams
29-
from .browser_persistence import BrowserPersistence as BrowserPersistence
3029
from .credential_provider import CredentialProvider as CredentialProvider
3130
from .profile_list_params import ProfileListParams as ProfileListParams
3231
from .project_list_params import ProjectListParams as ProjectListParams
@@ -35,7 +34,6 @@
3534
from .proxy_check_response import ProxyCheckResponse as ProxyCheckResponse
3635
from .browser_create_params import BrowserCreateParams as BrowserCreateParams
3736
from .browser_curl_response import BrowserCurlResponse as BrowserCurlResponse
38-
from .browser_delete_params import BrowserDeleteParams as BrowserDeleteParams
3937
from .browser_list_response import BrowserListResponse as BrowserListResponse
4038
from .browser_update_params import BrowserUpdateParams as BrowserUpdateParams
4139
from .profile_create_params import ProfileCreateParams as ProfileCreateParams
@@ -63,7 +61,6 @@
6361
from .invocation_follow_params import InvocationFollowParams as InvocationFollowParams
6462
from .invocation_list_response import InvocationListResponse as InvocationListResponse
6563
from .invocation_update_params import InvocationUpdateParams as InvocationUpdateParams
66-
from .browser_persistence_param import BrowserPersistenceParam as BrowserPersistenceParam
6764
from .browser_retrieve_response import BrowserRetrieveResponse as BrowserRetrieveResponse
6865
from .extension_upload_response import ExtensionUploadResponse as ExtensionUploadResponse
6966
from .browser_pool_create_params import BrowserPoolCreateParams as BrowserPoolCreateParams

src/kernel/types/browser_create_params.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from typing import Dict, Iterable, Optional
66
from typing_extensions import TypedDict
77

8-
from .browser_persistence_param import BrowserPersistenceParam
98
from .shared_params.browser_profile import BrowserProfile
109
from .shared_params.browser_viewport import BrowserViewport
1110
from .shared_params.browser_extension import BrowserExtension
@@ -19,8 +18,7 @@ class BrowserCreateParams(TypedDict, total=False):
1918
"""Custom Chrome enterprise policy overrides applied to this browser session.
2019
2120
Keys are Chrome enterprise policy names; values must match their expected types.
22-
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored
23-
when reusing an existing persistent session. See
21+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
2422
https://chromeenterprise.google/policies/
2523
"""
2624

@@ -51,9 +49,6 @@ class BrowserCreateParams(TypedDict, total=False):
5149
view.
5250
"""
5351

54-
persistence: BrowserPersistenceParam
55-
"""DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles instead."""
56-
5752
profile: BrowserProfile
5853
"""Profile selection for the browser session.
5954

src/kernel/types/browser_create_response.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from .._models import BaseModel
88
from .browser_usage import BrowserUsage
99
from .browser_pool_ref import BrowserPoolRef
10-
from .browser_persistence import BrowserPersistence
1110
from .shared.browser_viewport import BrowserViewport
1211
from .browsers.browser_telemetry_config import BrowserTelemetryConfig
1312

@@ -64,9 +63,6 @@ class BrowserCreateResponse(BaseModel):
6463
kiosk_mode: Optional[bool] = None
6564
"""Whether the browser session is running in kiosk mode."""
6665

67-
persistence: Optional[BrowserPersistence] = None
68-
"""DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles instead."""
69-
7066
pool: Optional[BrowserPoolRef] = None
7167
"""Browser pool this session was acquired from, if any."""
7268

0 commit comments

Comments
 (0)