Skip to content

Commit 09f8520

Browse files
feat: [kernel-1008] browser pools add custom policy
1 parent f0815a8 commit 09f8520

File tree

6 files changed

+62
-6
lines changed

6 files changed

+62
-6
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 104
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-bb2ac8e0d3a1c08e8afcbcbad7cb733d0f84bd22a8d233c1ec3100a01ee078ae.yml
3-
openapi_spec_hash: a83f7d1c422c85d6dc6158af7afe1d09
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-aeb5ea5c2632fe7fd905d509bc6cbb06999d17c458ec44ffd713935ba5b848f9.yml
3+
openapi_spec_hash: fef45a8569f1d3de04c86e95b1112665
44
config_hash: 16e4457a0bb26e98a335a1c2a572290a

src/kernel/resources/browser_pools.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Iterable
5+
from typing import Dict, Iterable
66

77
import httpx
88

@@ -60,6 +60,7 @@ def create(
6060
self,
6161
*,
6262
size: int,
63+
chrome_policy: Dict[str, object] | Omit = omit,
6364
extensions: Iterable[BrowserExtension] | Omit = omit,
6465
fill_rate_per_minute: int | Omit = omit,
6566
headless: bool | Omit = omit,
@@ -85,6 +86,11 @@ def create(
8586
your organization's pooled sessions limit (the sum of all pool sizes cannot
8687
exceed your limit).
8788
89+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
90+
Keys are Chrome enterprise policy names; values must match their expected types.
91+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
92+
https://chromeenterprise.google/policies/
93+
8894
extensions: List of browser extensions to load into the session. Provide each by id or name.
8995
9096
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
@@ -135,6 +141,7 @@ def create(
135141
body=maybe_transform(
136142
{
137143
"size": size,
144+
"chrome_policy": chrome_policy,
138145
"extensions": extensions,
139146
"fill_rate_per_minute": fill_rate_per_minute,
140147
"headless": headless,
@@ -192,6 +199,7 @@ def update(
192199
id_or_name: str,
193200
*,
194201
size: int,
202+
chrome_policy: Dict[str, object] | Omit = omit,
195203
discard_all_idle: bool | Omit = omit,
196204
extensions: Iterable[BrowserExtension] | Omit = omit,
197205
fill_rate_per_minute: int | Omit = omit,
@@ -218,6 +226,11 @@ def update(
218226
your organization's pooled sessions limit (the sum of all pool sizes cannot
219227
exceed your limit).
220228
229+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
230+
Keys are Chrome enterprise policy names; values must match their expected types.
231+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
232+
https://chromeenterprise.google/policies/
233+
221234
discard_all_idle: Whether to discard all idle browsers and rebuild the pool immediately. Defaults
222235
to false.
223236
@@ -273,6 +286,7 @@ def update(
273286
body=maybe_transform(
274287
{
275288
"size": size,
289+
"chrome_policy": chrome_policy,
276290
"discard_all_idle": discard_all_idle,
277291
"extensions": extensions,
278292
"fill_rate_per_minute": fill_rate_per_minute,
@@ -508,6 +522,7 @@ async def create(
508522
self,
509523
*,
510524
size: int,
525+
chrome_policy: Dict[str, object] | Omit = omit,
511526
extensions: Iterable[BrowserExtension] | Omit = omit,
512527
fill_rate_per_minute: int | Omit = omit,
513528
headless: bool | Omit = omit,
@@ -533,6 +548,11 @@ async def create(
533548
your organization's pooled sessions limit (the sum of all pool sizes cannot
534549
exceed your limit).
535550
551+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
552+
Keys are Chrome enterprise policy names; values must match their expected types.
553+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
554+
https://chromeenterprise.google/policies/
555+
536556
extensions: List of browser extensions to load into the session. Provide each by id or name.
537557
538558
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
@@ -583,6 +603,7 @@ async def create(
583603
body=await async_maybe_transform(
584604
{
585605
"size": size,
606+
"chrome_policy": chrome_policy,
586607
"extensions": extensions,
587608
"fill_rate_per_minute": fill_rate_per_minute,
588609
"headless": headless,
@@ -640,6 +661,7 @@ async def update(
640661
id_or_name: str,
641662
*,
642663
size: int,
664+
chrome_policy: Dict[str, object] | Omit = omit,
643665
discard_all_idle: bool | Omit = omit,
644666
extensions: Iterable[BrowserExtension] | Omit = omit,
645667
fill_rate_per_minute: int | Omit = omit,
@@ -666,6 +688,11 @@ async def update(
666688
your organization's pooled sessions limit (the sum of all pool sizes cannot
667689
exceed your limit).
668690
691+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
692+
Keys are Chrome enterprise policy names; values must match their expected types.
693+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
694+
https://chromeenterprise.google/policies/
695+
669696
discard_all_idle: Whether to discard all idle browsers and rebuild the pool immediately. Defaults
670697
to false.
671698
@@ -721,6 +748,7 @@ async def update(
721748
body=await async_maybe_transform(
722749
{
723750
"size": size,
751+
"chrome_policy": chrome_policy,
724752
"discard_all_idle": discard_all_idle,
725753
"extensions": extensions,
726754
"fill_rate_per_minute": fill_rate_per_minute,

src/kernel/types/browser_pool.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
from typing import List, Optional
3+
from typing import Dict, List, Optional
44
from datetime import datetime
55

66
from .._models import BaseModel
@@ -21,6 +21,14 @@ class BrowserPoolConfig(BaseModel):
2121
sum of all pool sizes cannot exceed your limit).
2222
"""
2323

24+
chrome_policy: Optional[Dict[str, object]] = None
25+
"""Custom Chrome enterprise policy overrides applied to all browsers in this pool.
26+
27+
Keys are Chrome enterprise policy names; values must match their expected types.
28+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
29+
https://chromeenterprise.google/policies/
30+
"""
31+
2432
extensions: Optional[List[BrowserExtension]] = None
2533
"""List of browser extensions to load into the session.
2634

src/kernel/types/browser_pool_create_params.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Iterable
5+
from typing import Dict, Iterable
66
from typing_extensions import Required, TypedDict
77

88
from .shared_params.browser_profile import BrowserProfile
@@ -20,6 +20,14 @@ class BrowserPoolCreateParams(TypedDict, total=False):
2020
sum of all pool sizes cannot exceed your limit).
2121
"""
2222

23+
chrome_policy: Dict[str, object]
24+
"""Custom Chrome enterprise policy overrides applied to all browsers in this pool.
25+
26+
Keys are Chrome enterprise policy names; values must match their expected types.
27+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
28+
https://chromeenterprise.google/policies/
29+
"""
30+
2331
extensions: Iterable[BrowserExtension]
2432
"""List of browser extensions to load into the session.
2533

src/kernel/types/browser_pool_update_params.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Iterable
5+
from typing import Dict, Iterable
66
from typing_extensions import Required, TypedDict
77

88
from .shared_params.browser_profile import BrowserProfile
@@ -20,6 +20,14 @@ class BrowserPoolUpdateParams(TypedDict, total=False):
2020
sum of all pool sizes cannot exceed your limit).
2121
"""
2222

23+
chrome_policy: Dict[str, object]
24+
"""Custom Chrome enterprise policy overrides applied to all browsers in this pool.
25+
26+
Keys are Chrome enterprise policy names; values must match their expected types.
27+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
28+
https://chromeenterprise.google/policies/
29+
"""
30+
2331
discard_all_idle: bool
2432
"""Whether to discard all idle browsers and rebuild the pool immediately.
2533

tests/api_resources/test_browser_pools.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def test_method_create(self, client: Kernel) -> None:
3434
def test_method_create_with_all_params(self, client: Kernel) -> None:
3535
browser_pool = client.browser_pools.create(
3636
size=10,
37+
chrome_policy={"foo": "bar"},
3738
extensions=[
3839
{
3940
"id": "id",
@@ -143,6 +144,7 @@ def test_method_update_with_all_params(self, client: Kernel) -> None:
143144
browser_pool = client.browser_pools.update(
144145
id_or_name="id_or_name",
145146
size=10,
147+
chrome_policy={"foo": "bar"},
146148
discard_all_idle=False,
147149
extensions=[
148150
{
@@ -454,6 +456,7 @@ async def test_method_create(self, async_client: AsyncKernel) -> None:
454456
async def test_method_create_with_all_params(self, async_client: AsyncKernel) -> None:
455457
browser_pool = await async_client.browser_pools.create(
456458
size=10,
459+
chrome_policy={"foo": "bar"},
457460
extensions=[
458461
{
459462
"id": "id",
@@ -563,6 +566,7 @@ async def test_method_update_with_all_params(self, async_client: AsyncKernel) ->
563566
browser_pool = await async_client.browser_pools.update(
564567
id_or_name="id_or_name",
565568
size=10,
569+
chrome_policy={"foo": "bar"},
566570
discard_all_idle=False,
567571
extensions=[
568572
{

0 commit comments

Comments
 (0)