Skip to content

Commit a0cd19c

Browse files
feat: EOL persistent browsers: openapi limits
1 parent 6471847 commit a0cd19c

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, Optional, cast
76
from typing_extensions import Literal
87

@@ -28,7 +27,6 @@
2827
browser_curl_params,
2928
browser_list_params,
3029
browser_create_params,
31-
browser_delete_params,
3230
browser_update_params,
3331
browser_retrieve_params,
3432
browser_load_extensions_params,
@@ -90,7 +88,6 @@
9088
from ...types.browser_list_response import BrowserListResponse
9189
from ...types.browser_create_response import BrowserCreateResponse
9290
from ...types.browser_update_response import BrowserUpdateResponse
93-
from ...types.browser_persistence_param import BrowserPersistenceParam
9491
from ...types.browser_retrieve_response import BrowserRetrieveResponse
9592
from ...types.shared_params.browser_profile import BrowserProfile
9693
from ...types.shared_params.browser_viewport import BrowserViewport
@@ -165,7 +162,6 @@ def create(
165162
headless: bool | Omit = omit,
166163
invocation_id: str | Omit = omit,
167164
kiosk_mode: bool | Omit = omit,
168-
persistence: BrowserPersistenceParam | Omit = omit,
169165
profile: BrowserProfile | Omit = omit,
170166
proxy_id: str | Omit = omit,
171167
start_url: str | Omit = omit,
@@ -186,8 +182,7 @@ def create(
186182
Args:
187183
chrome_policy: Custom Chrome enterprise policy overrides applied to this browser session. Keys
188184
are Chrome enterprise policy names; values must match their expected types.
189-
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored
190-
when reusing an existing persistent session. See
185+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
191186
https://chromeenterprise.google/policies/
192187
193188
extensions: List of browser extensions to load into the session. Provide each by id or name.
@@ -203,8 +198,6 @@ def create(
203198
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
204199
view.
205200
206-
persistence: DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles instead.
207-
208201
profile: Profile selection for the browser session. Provide either id or name. If
209202
specified, the matching profile will be loaded into the browser session.
210203
Profiles must be created beforehand.
@@ -260,7 +253,6 @@ def create(
260253
"headless": headless,
261254
"invocation_id": invocation_id,
262255
"kiosk_mode": kiosk_mode,
263-
"persistence": persistence,
264256
"profile": profile,
265257
"proxy_id": proxy_id,
266258
"start_url": start_url,
@@ -446,47 +438,6 @@ def list(
446438
model=BrowserListResponse,
447439
)
448440

449-
@typing_extensions.deprecated("deprecated")
450-
def delete(
451-
self,
452-
*,
453-
persistent_id: str,
454-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
455-
# The extra values given here take precedence over values defined on the client or passed to this method.
456-
extra_headers: Headers | None = None,
457-
extra_query: Query | None = None,
458-
extra_body: Body | None = None,
459-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
460-
) -> None:
461-
"""DEPRECATED: Use DELETE /browsers/{id} instead.
462-
463-
Delete a persistent browser
464-
session by its persistent_id.
465-
466-
Args:
467-
persistent_id: Persistent browser identifier
468-
469-
extra_headers: Send extra headers
470-
471-
extra_query: Add additional query parameters to the request
472-
473-
extra_body: Add additional JSON properties to the request
474-
475-
timeout: Override the client-level default timeout for this request, in seconds
476-
"""
477-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
478-
return self._delete(
479-
"/browsers",
480-
options=make_request_options(
481-
extra_headers=extra_headers,
482-
extra_query=extra_query,
483-
extra_body=extra_body,
484-
timeout=timeout,
485-
query=maybe_transform({"persistent_id": persistent_id}, browser_delete_params.BrowserDeleteParams),
486-
),
487-
cast_to=NoneType,
488-
)
489-
490441
def curl(
491442
self,
492443
id: str,
@@ -697,7 +648,6 @@ async def create(
697648
headless: bool | Omit = omit,
698649
invocation_id: str | Omit = omit,
699650
kiosk_mode: bool | Omit = omit,
700-
persistence: BrowserPersistenceParam | Omit = omit,
701651
profile: BrowserProfile | Omit = omit,
702652
proxy_id: str | Omit = omit,
703653
start_url: str | Omit = omit,
@@ -718,8 +668,7 @@ async def create(
718668
Args:
719669
chrome_policy: Custom Chrome enterprise policy overrides applied to this browser session. Keys
720670
are Chrome enterprise policy names; values must match their expected types.
721-
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored
722-
when reusing an existing persistent session. See
671+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
723672
https://chromeenterprise.google/policies/
724673
725674
extensions: List of browser extensions to load into the session. Provide each by id or name.
@@ -735,8 +684,6 @@ async def create(
735684
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
736685
view.
737686
738-
persistence: DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles instead.
739-
740687
profile: Profile selection for the browser session. Provide either id or name. If
741688
specified, the matching profile will be loaded into the browser session.
742689
Profiles must be created beforehand.
@@ -792,7 +739,6 @@ async def create(
792739
"headless": headless,
793740
"invocation_id": invocation_id,
794741
"kiosk_mode": kiosk_mode,
795-
"persistence": persistence,
796742
"profile": profile,
797743
"proxy_id": proxy_id,
798744
"start_url": start_url,
@@ -978,49 +924,6 @@ def list(
978924
model=BrowserListResponse,
979925
)
980926

981-
@typing_extensions.deprecated("deprecated")
982-
async def delete(
983-
self,
984-
*,
985-
persistent_id: str,
986-
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
987-
# The extra values given here take precedence over values defined on the client or passed to this method.
988-
extra_headers: Headers | None = None,
989-
extra_query: Query | None = None,
990-
extra_body: Body | None = None,
991-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
992-
) -> None:
993-
"""DEPRECATED: Use DELETE /browsers/{id} instead.
994-
995-
Delete a persistent browser
996-
session by its persistent_id.
997-
998-
Args:
999-
persistent_id: Persistent browser identifier
1000-
1001-
extra_headers: Send extra headers
1002-
1003-
extra_query: Add additional query parameters to the request
1004-
1005-
extra_body: Add additional JSON properties to the request
1006-
1007-
timeout: Override the client-level default timeout for this request, in seconds
1008-
"""
1009-
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
1010-
return await self._delete(
1011-
"/browsers",
1012-
options=make_request_options(
1013-
extra_headers=extra_headers,
1014-
extra_query=extra_query,
1015-
extra_body=extra_body,
1016-
timeout=timeout,
1017-
query=await async_maybe_transform(
1018-
{"persistent_id": persistent_id}, browser_delete_params.BrowserDeleteParams
1019-
),
1020-
),
1021-
cast_to=NoneType,
1022-
)
1023-
1024927
async def curl(
1025928
self,
1026929
id: str,
@@ -1182,11 +1085,6 @@ def __init__(self, browsers: BrowsersResource) -> None:
11821085
self.list = to_raw_response_wrapper(
11831086
browsers.list,
11841087
)
1185-
self.delete = ( # pyright: ignore[reportDeprecated]
1186-
to_raw_response_wrapper(
1187-
browsers.delete, # pyright: ignore[reportDeprecated],
1188-
)
1189-
)
11901088
self.curl = to_raw_response_wrapper(
11911089
browsers.curl,
11921090
)
@@ -1248,11 +1146,6 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
12481146
self.list = async_to_raw_response_wrapper(
12491147
browsers.list,
12501148
)
1251-
self.delete = ( # pyright: ignore[reportDeprecated]
1252-
async_to_raw_response_wrapper(
1253-
browsers.delete, # pyright: ignore[reportDeprecated],
1254-
)
1255-
)
12561149
self.curl = async_to_raw_response_wrapper(
12571150
browsers.curl,
12581151
)
@@ -1314,11 +1207,6 @@ def __init__(self, browsers: BrowsersResource) -> None:
13141207
self.list = to_streamed_response_wrapper(
13151208
browsers.list,
13161209
)
1317-
self.delete = ( # pyright: ignore[reportDeprecated]
1318-
to_streamed_response_wrapper(
1319-
browsers.delete, # pyright: ignore[reportDeprecated],
1320-
)
1321-
)
13221210
self.curl = to_streamed_response_wrapper(
13231211
browsers.curl,
13241212
)
@@ -1380,11 +1268,6 @@ def __init__(self, browsers: AsyncBrowsersResource) -> None:
13801268
self.list = async_to_streamed_response_wrapper(
13811269
browsers.list,
13821270
)
1383-
self.delete = ( # pyright: ignore[reportDeprecated]
1384-
async_to_streamed_response_wrapper(
1385-
browsers.delete, # pyright: ignore[reportDeprecated],
1386-
)
1387-
)
13881271
self.curl = async_to_streamed_response_wrapper(
13891272
browsers.curl,
13901273
)

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)