From b1807a2d690f206e7482f5862acde36e692d07aa Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 00:02:33 +0000 Subject: [PATCH 1/2] feat: browsers: accept chrome_policy on POST /browsers (KERNEL-1216) --- .stats.yml | 4 ++-- src/kernel/resources/browsers/browsers.py | 16 ++++++++++++++++ src/kernel/types/browser_create_params.py | 11 ++++++++++- src/kernel/types/browser_create_response.py | 9 ++++++++- src/kernel/types/browser_list_response.py | 9 ++++++++- .../types/browser_pool_acquire_response.py | 9 ++++++++- src/kernel/types/browser_retrieve_response.py | 9 ++++++++- src/kernel/types/browser_update_response.py | 9 ++++++++- .../types/invocation_list_browsers_response.py | 9 ++++++++- tests/api_resources/test_browsers.py | 2 ++ 10 files changed, 78 insertions(+), 9 deletions(-) diff --git a/.stats.yml b/.stats.yml index e0a033e..542eaa0 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 112 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-982efd191c23737c9e1cdbcbf9237fa2231b9f74e0a25db2870293bdf9951c21.yml -openapi_spec_hash: eeb27952a4cc939316c24fc0ce2c9e3a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-e564e74a7aae1744d4aa070a63c387f456c4719a48747dc6229b58a986255b65.yml +openapi_spec_hash: 62beb1f20708652aaee31bbffb6cfbe9 config_hash: 08d55086449943a8fec212b870061a3f diff --git a/src/kernel/resources/browsers/browsers.py b/src/kernel/resources/browsers/browsers.py index 82ee8b8..a6dbd35 100644 --- a/src/kernel/resources/browsers/browsers.py +++ b/src/kernel/resources/browsers/browsers.py @@ -152,6 +152,7 @@ def with_streaming_response(self) -> BrowsersResourceWithStreamingResponse: def create( self, *, + chrome_policy: Dict[str, object] | Omit = omit, extensions: Iterable[BrowserExtension] | Omit = omit, gpu: bool | Omit = omit, headless: bool | Omit = omit, @@ -175,6 +176,12 @@ def create( Create a new browser session from within an action. Args: + chrome_policy: Custom Chrome enterprise policy overrides applied to this browser session. Keys + are Chrome enterprise policy names; values must match their expected types. + Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored + when reusing an existing persistent session. See + https://chromeenterprise.google/policies/ + extensions: List of browser extensions to load into the session. Provide each by id or name. gpu: If true, enables GPU acceleration for the browser session. Requires Start-Up or @@ -235,6 +242,7 @@ def create( "/browsers", body=maybe_transform( { + "chrome_policy": chrome_policy, "extensions": extensions, "gpu": gpu, "headless": headless, @@ -716,6 +724,7 @@ def with_streaming_response(self) -> AsyncBrowsersResourceWithStreamingResponse: async def create( self, *, + chrome_policy: Dict[str, object] | Omit = omit, extensions: Iterable[BrowserExtension] | Omit = omit, gpu: bool | Omit = omit, headless: bool | Omit = omit, @@ -739,6 +748,12 @@ async def create( Create a new browser session from within an action. Args: + chrome_policy: Custom Chrome enterprise policy overrides applied to this browser session. Keys + are Chrome enterprise policy names; values must match their expected types. + Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored + when reusing an existing persistent session. See + https://chromeenterprise.google/policies/ + extensions: List of browser extensions to load into the session. Provide each by id or name. gpu: If true, enables GPU acceleration for the browser session. Requires Start-Up or @@ -799,6 +814,7 @@ async def create( "/browsers", body=await async_maybe_transform( { + "chrome_policy": chrome_policy, "extensions": extensions, "gpu": gpu, "headless": headless, diff --git a/src/kernel/types/browser_create_params.py b/src/kernel/types/browser_create_params.py index 399ded4..c05fd94 100644 --- a/src/kernel/types/browser_create_params.py +++ b/src/kernel/types/browser_create_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Iterable +from typing import Dict, Iterable from typing_extensions import TypedDict from .browser_persistence_param import BrowserPersistenceParam @@ -14,6 +14,15 @@ class BrowserCreateParams(TypedDict, total=False): + chrome_policy: Dict[str, object] + """Custom Chrome enterprise policy overrides applied to this browser session. + + Keys are Chrome enterprise policy names; values must match their expected types. + Blocked: kernel-managed policies (extensions, proxy, CDP/automation). Ignored + when reusing an existing persistent session. See + https://chromeenterprise.google/policies/ + """ + extensions: Iterable[BrowserExtension] """List of browser extensions to load into the session. diff --git a/src/kernel/types/browser_create_response.py b/src/kernel/types/browser_create_response.py index 1c30ee6..2e2e5db 100644 --- a/src/kernel/types/browser_create_response.py +++ b/src/kernel/types/browser_create_response.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import Dict, Optional from datetime import datetime from .profile import Profile @@ -44,6 +44,13 @@ class BrowserCreateResponse(BaseModel): Only available for non-headless browsers. """ + chrome_policy: Optional[Dict[str, object]] = None + """ + Custom Chrome enterprise policy overrides that were applied to this browser + session, if any. Echoed back for verification. Keys are Chrome enterprise policy + names. + """ + deleted_at: Optional[datetime] = None """When the browser session was soft-deleted. Only present for deleted sessions.""" diff --git a/src/kernel/types/browser_list_response.py b/src/kernel/types/browser_list_response.py index 2a17267..27e409f 100644 --- a/src/kernel/types/browser_list_response.py +++ b/src/kernel/types/browser_list_response.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import Dict, Optional from datetime import datetime from .profile import Profile @@ -44,6 +44,13 @@ class BrowserListResponse(BaseModel): Only available for non-headless browsers. """ + chrome_policy: Optional[Dict[str, object]] = None + """ + Custom Chrome enterprise policy overrides that were applied to this browser + session, if any. Echoed back for verification. Keys are Chrome enterprise policy + names. + """ + deleted_at: Optional[datetime] = None """When the browser session was soft-deleted. Only present for deleted sessions.""" diff --git a/src/kernel/types/browser_pool_acquire_response.py b/src/kernel/types/browser_pool_acquire_response.py index 91ea02e..9cf914e 100644 --- a/src/kernel/types/browser_pool_acquire_response.py +++ b/src/kernel/types/browser_pool_acquire_response.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import Dict, Optional from datetime import datetime from .profile import Profile @@ -44,6 +44,13 @@ class BrowserPoolAcquireResponse(BaseModel): Only available for non-headless browsers. """ + chrome_policy: Optional[Dict[str, object]] = None + """ + Custom Chrome enterprise policy overrides that were applied to this browser + session, if any. Echoed back for verification. Keys are Chrome enterprise policy + names. + """ + deleted_at: Optional[datetime] = None """When the browser session was soft-deleted. Only present for deleted sessions.""" diff --git a/src/kernel/types/browser_retrieve_response.py b/src/kernel/types/browser_retrieve_response.py index 63f4da9..95cfa9a 100644 --- a/src/kernel/types/browser_retrieve_response.py +++ b/src/kernel/types/browser_retrieve_response.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import Dict, Optional from datetime import datetime from .profile import Profile @@ -44,6 +44,13 @@ class BrowserRetrieveResponse(BaseModel): Only available for non-headless browsers. """ + chrome_policy: Optional[Dict[str, object]] = None + """ + Custom Chrome enterprise policy overrides that were applied to this browser + session, if any. Echoed back for verification. Keys are Chrome enterprise policy + names. + """ + deleted_at: Optional[datetime] = None """When the browser session was soft-deleted. Only present for deleted sessions.""" diff --git a/src/kernel/types/browser_update_response.py b/src/kernel/types/browser_update_response.py index 2e30f49..209d58c 100644 --- a/src/kernel/types/browser_update_response.py +++ b/src/kernel/types/browser_update_response.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import Dict, Optional from datetime import datetime from .profile import Profile @@ -44,6 +44,13 @@ class BrowserUpdateResponse(BaseModel): Only available for non-headless browsers. """ + chrome_policy: Optional[Dict[str, object]] = None + """ + Custom Chrome enterprise policy overrides that were applied to this browser + session, if any. Echoed back for verification. Keys are Chrome enterprise policy + names. + """ + deleted_at: Optional[datetime] = None """When the browser session was soft-deleted. Only present for deleted sessions.""" diff --git a/src/kernel/types/invocation_list_browsers_response.py b/src/kernel/types/invocation_list_browsers_response.py index c7b9e39..7ff4910 100644 --- a/src/kernel/types/invocation_list_browsers_response.py +++ b/src/kernel/types/invocation_list_browsers_response.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional +from typing import Dict, List, Optional from datetime import datetime from .profile import Profile @@ -44,6 +44,13 @@ class Browser(BaseModel): Only available for non-headless browsers. """ + chrome_policy: Optional[Dict[str, object]] = None + """ + Custom Chrome enterprise policy overrides that were applied to this browser + session, if any. Echoed back for verification. Keys are Chrome enterprise policy + names. + """ + deleted_at: Optional[datetime] = None """When the browser session was soft-deleted. Only present for deleted sessions.""" diff --git a/tests/api_resources/test_browsers.py b/tests/api_resources/test_browsers.py index 94c5265..3d1ac19 100644 --- a/tests/api_resources/test_browsers.py +++ b/tests/api_resources/test_browsers.py @@ -36,6 +36,7 @@ def test_method_create(self, client: Kernel) -> None: @parametrize def test_method_create_with_all_params(self, client: Kernel) -> None: browser = client.browsers.create( + chrome_policy={"foo": "bar"}, extensions=[ { "id": "id", @@ -462,6 +463,7 @@ async def test_method_create(self, async_client: AsyncKernel) -> None: @parametrize async def test_method_create_with_all_params(self, async_client: AsyncKernel) -> None: browser = await async_client.browsers.create( + chrome_policy={"foo": "bar"}, extensions=[ { "id": "id", From 7365ae734191c97eb88b1fcc2c6b402b4b8444c1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 00:03:01 +0000 Subject: [PATCH 2/2] release: 0.57.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- src/kernel/_version.py | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 87d3d84..2afb750 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.56.0" + ".": "0.57.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a3eba1..6c85494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.57.0 (2026-05-19) + +Full Changelog: [v0.56.0...v0.57.0](https://github.com/kernel/kernel-python-sdk/compare/v0.56.0...v0.57.0) + +### Features + +* browsers: accept chrome_policy on POST /browsers (KERNEL-1216) ([b1807a2](https://github.com/kernel/kernel-python-sdk/commit/b1807a2d690f206e7482f5862acde36e692d07aa)) + ## 0.56.0 (2026-05-18) Full Changelog: [v0.55.0...v0.56.0](https://github.com/kernel/kernel-python-sdk/compare/v0.55.0...v0.56.0) diff --git a/pyproject.toml b/pyproject.toml index c98902d..6956b28 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kernel" -version = "0.56.0" +version = "0.57.0" description = "The official Python library for the kernel API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/kernel/_version.py b/src/kernel/_version.py index a4d2a57..fb252c5 100644 --- a/src/kernel/_version.py +++ b/src/kernel/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "kernel" -__version__ = "0.56.0" # x-release-please-version +__version__ = "0.57.0" # x-release-please-version