Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.76.0"
".": "0.78.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 125
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-ba32039d3975da7aa6d28e5184f0a44c9fbfe36ab7dbc71985d14e2ecc0867b9.yml
openapi_spec_hash: a9f32fc90c2add2ae85af828c298e35b
config_hash: 06186eb40e0058a2a87ac251fc07415d
configured_endpoints: 127
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-1413d61d06059008b4c1e204c783d8b2e7dca9af23f6e3b6d2552493ea2d9853.yml
openapi_spec_hash: 80aca500caddd300cb03a6daf568fddb
config_hash: 77ee715aa17061166f9a02b264a21b8d
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 0.78.0 (2026-07-13)

Full Changelog: [v0.76.0...v0.78.0](https://github.com/kernel/kernel-python-sdk/compare/v0.76.0...v0.78.0)

### Features

* Add exact-match name filter to list endpoints ([6011556](https://github.com/kernel/kernel-python-sdk/commit/601155642a4d082d19c3b3293eea6d6105f74407))
* Add name-only rename for profiles and proxies ([1d38266](https://github.com/kernel/kernel-python-sdk/commit/1d3826696cb2005ab6c33a7cd1df19b660d66449))
* Auto-default refresh_on_profile_update when browser pool profile changes ([4771197](https://github.com/kernel/kernel-python-sdk/commit/4771197c55a1562d465f9b75d8a8e2a12f5e6f76))
* Document name uniqueness and query match semantics ([e27f37d](https://github.com/kernel/kernel-python-sdk/commit/e27f37d43b1d76628c42f90e77a18af513c86280))
* Expose telemetry exception message in API/SDK ([6575dd2](https://github.com/kernel/kernel-python-sdk/commit/6575dd21919b092a77de88e4ee8d037f601edadc))
* Make the browser pool OpenAPI contract truthful ([20b3a7e](https://github.com/kernel/kernel-python-sdk/commit/20b3a7efc61b7de4007fdd9d096595bfab9c06c3))
* Persist and echo deployment source identity ([5db2b01](https://github.com/kernel/kernel-python-sdk/commit/5db2b01c8ad53441cb3cc7056b8b4b7c8cbcc45c))
* Support multiple audit log method exclusions ([f9decdd](https://github.com/kernel/kernel-python-sdk/commit/f9decdd9d2f617c4483d3a5ddd568f34ac8052f6))


### Documentation

* **openapi:** describe unified concurrency limit, deprecate max_pooled_sessions (CUS-275) ([8c85318](https://github.com/kernel/kernel-python-sdk/commit/8c85318da7d5b064b867b1e4d029937eafc08d13))

## 0.76.0 (2026-07-09)

Full Changelog: [v0.75.0...v0.76.0](https://github.com/kernel/kernel-python-sdk/compare/v0.75.0...v0.76.0)
Expand Down
3 changes: 3 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ Methods:

- <code title="post /profiles">client.profiles.<a href="./src/kernel/resources/profiles.py">create</a>(\*\*<a href="src/kernel/types/profile_create_params.py">params</a>) -> <a href="./src/kernel/types/profile.py">Profile</a></code>
- <code title="get /profiles/{id_or_name}">client.profiles.<a href="./src/kernel/resources/profiles.py">retrieve</a>(id_or_name) -> <a href="./src/kernel/types/profile.py">Profile</a></code>
- <code title="patch /profiles/{id_or_name}">client.profiles.<a href="./src/kernel/resources/profiles.py">update</a>(id_or_name, \*\*<a href="src/kernel/types/profile_update_params.py">params</a>) -> <a href="./src/kernel/types/profile.py">Profile</a></code>
- <code title="get /profiles">client.profiles.<a href="./src/kernel/resources/profiles.py">list</a>(\*\*<a href="src/kernel/types/profile_list_params.py">params</a>) -> <a href="./src/kernel/types/profile.py">SyncOffsetPagination[Profile]</a></code>
- <code title="delete /profiles/{id_or_name}">client.profiles.<a href="./src/kernel/resources/profiles.py">delete</a>(id_or_name) -> None</code>
- <code title="get /profiles/{id_or_name}/download">client.profiles.<a href="./src/kernel/resources/profiles.py">download</a>(id_or_name) -> BinaryAPIResponse</code>
Expand Down Expand Up @@ -328,6 +329,7 @@ Types:
from kernel.types import (
ProxyCreateResponse,
ProxyRetrieveResponse,
ProxyUpdateResponse,
ProxyListResponse,
ProxyCheckResponse,
)
Expand All @@ -337,6 +339,7 @@ Methods:

- <code title="post /proxies">client.proxies.<a href="./src/kernel/resources/proxies.py">create</a>(\*\*<a href="src/kernel/types/proxy_create_params.py">params</a>) -> <a href="./src/kernel/types/proxy_create_response.py">ProxyCreateResponse</a></code>
- <code title="get /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">retrieve</a>(id) -> <a href="./src/kernel/types/proxy_retrieve_response.py">ProxyRetrieveResponse</a></code>
- <code title="patch /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">update</a>(id, \*\*<a href="src/kernel/types/proxy_update_params.py">params</a>) -> <a href="./src/kernel/types/proxy_update_response.py">ProxyUpdateResponse</a></code>
- <code title="get /proxies">client.proxies.<a href="./src/kernel/resources/proxies.py">list</a>(\*\*<a href="src/kernel/types/proxy_list_params.py">params</a>) -> <a href="./src/kernel/types/proxy_list_response.py">SyncOffsetPagination[ProxyListResponse]</a></code>
- <code title="delete /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">delete</a>(id) -> None</code>
- <code title="post /proxies/{id}/check">client.proxies.<a href="./src/kernel/resources/proxies.py">check</a>(id, \*\*<a href="src/kernel/types/proxy_check_params.py">params</a>) -> <a href="./src/kernel/types/proxy_check_response.py">ProxyCheckResponse</a></code>
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "kernel"
version = "0.76.0"
version = "0.78.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/kernel/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "kernel"
__version__ = "0.76.0" # x-release-please-version
__version__ = "0.78.0" # x-release-please-version
18 changes: 16 additions & 2 deletions src/kernel/resources/api_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def create(
Create a new API key within the authenticated organization.

Args:
name: API key name (1-255 characters)
name: Label for the API key (1-255 characters). API keys are not addressable by name.

days_to_expire: Number of days until expiry, up to 3650. Use null for never.

Expand Down Expand Up @@ -188,6 +188,7 @@ def list(
*,
include_deleted: bool | Omit = omit,
limit: int | Omit = omit,
name: str | Omit = omit,
offset: int | Omit = omit,
query: str | Omit = omit,
sort_by: Literal["created_at", "name", "expires_at"] | Omit = omit,
Expand All @@ -210,6 +211,11 @@ def list(

limit: Maximum number of results to return

name: Exact-match filter on API key name using the database collation. In production,
matching is case- and accent-insensitive. Names are not required to be unique,
so multiple keys may match. When status=all or include_deleted=true is set,
soft-deleted keys with the same name may also match.

offset: Number of results to skip

query: Case-insensitive substring match against API key name, creator, and project. API
Expand Down Expand Up @@ -243,6 +249,7 @@ def list(
{
"include_deleted": include_deleted,
"limit": limit,
"name": name,
"offset": offset,
"query": query,
"sort_by": sort_by,
Expand Down Expand Up @@ -382,7 +389,7 @@ async def create(
Create a new API key within the authenticated organization.

Args:
name: API key name (1-255 characters)
name: Label for the API key (1-255 characters). API keys are not addressable by name.

days_to_expire: Number of days until expiry, up to 3650. Use null for never.

Expand Down Expand Up @@ -499,6 +506,7 @@ def list(
*,
include_deleted: bool | Omit = omit,
limit: int | Omit = omit,
name: str | Omit = omit,
offset: int | Omit = omit,
query: str | Omit = omit,
sort_by: Literal["created_at", "name", "expires_at"] | Omit = omit,
Expand All @@ -521,6 +529,11 @@ def list(

limit: Maximum number of results to return

name: Exact-match filter on API key name using the database collation. In production,
matching is case- and accent-insensitive. Names are not required to be unique,
so multiple keys may match. When status=all or include_deleted=true is set,
soft-deleted keys with the same name may also match.

offset: Number of results to skip

query: Case-insensitive substring match against API key name, creator, and project. API
Expand Down Expand Up @@ -554,6 +567,7 @@ def list(
{
"include_deleted": include_deleted,
"limit": limit,
"name": name,
"offset": offset,
"query": query,
"sort_by": sort_by,
Expand Down
8 changes: 4 additions & 4 deletions src/kernel/resources/audit_logs.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def list(
end: Union[str, datetime],
start: Union[str, datetime],
auth_strategy: str | Omit = omit,
exclude_method: str | Omit = omit,
exclude_method: SequenceNotStr[str] | Omit = omit,
limit: int | Omit = omit,
method: str | Omit = omit,
page_token: str | Omit = omit,
Expand Down Expand Up @@ -144,7 +144,7 @@ def export_chunk(
start: Union[str, datetime],
auth_strategy: str | Omit = omit,
cursor: str | Omit = omit,
exclude_method: str | Omit = omit,
exclude_method: SequenceNotStr[str] | Omit = omit,
format: Literal["jsonl", "jsonl.gz"] | Omit = omit,
limit: int | Omit = omit,
method: str | Omit = omit,
Expand Down Expand Up @@ -251,7 +251,7 @@ def list(
end: Union[str, datetime],
start: Union[str, datetime],
auth_strategy: str | Omit = omit,
exclude_method: str | Omit = omit,
exclude_method: SequenceNotStr[str] | Omit = omit,
limit: int | Omit = omit,
method: str | Omit = omit,
page_token: str | Omit = omit,
Expand Down Expand Up @@ -333,7 +333,7 @@ async def export_chunk(
start: Union[str, datetime],
auth_strategy: str | Omit = omit,
cursor: str | Omit = omit,
exclude_method: str | Omit = omit,
exclude_method: SequenceNotStr[str] | Omit = omit,
format: Literal["jsonl", "jsonl.gz"] | Omit = omit,
limit: int | Omit = omit,
method: str | Omit = omit,
Expand Down
24 changes: 18 additions & 6 deletions src/kernel/resources/auth/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,9 @@ def create(
login_url: Optional login page URL to skip discovery

proxy: Proxy selection. Provide either id or name. The proxy must be in the same
project as the resource referencing it.
project as the resource referencing it. When selecting by name, the name must
match exactly one active proxy in the project. Ambiguous names return a 400; use
id for stable references.

record_session: Whether to record browser sessions for this connection by default. Useful for
debugging. Can be overridden per-login. Defaults to false.
Expand Down Expand Up @@ -268,7 +270,9 @@ def update(
login_url: Login page URL. Set to empty string to clear.

proxy: Proxy selection. Provide either id or name. The proxy must be in the same
project as the resource referencing it.
project as the resource referencing it. When selecting by name, the name must
match exactly one active proxy in the project. Ambiguous names return a 400; use
id for stable references.

record_session: Whether to record browser sessions for this connection by default

Expand Down Expand Up @@ -465,7 +469,9 @@ def login(

Args:
proxy: Proxy selection. Provide either id or name. The proxy must be in the same
project as the resource referencing it.
project as the resource referencing it. When selecting by name, the name must
match exactly one active proxy in the project. Ambiguous names return a 400; use
id for stable references.

record_session: Override the connection's default for recording this login's browser session.
When omitted, the connection's record_session default is used.
Expand Down Expand Up @@ -717,7 +723,9 @@ async def create(
login_url: Optional login page URL to skip discovery

proxy: Proxy selection. Provide either id or name. The proxy must be in the same
project as the resource referencing it.
project as the resource referencing it. When selecting by name, the name must
match exactly one active proxy in the project. Ambiguous names return a 400; use
id for stable references.

record_session: Whether to record browser sessions for this connection by default. Useful for
debugging. Can be overridden per-login. Defaults to false.
Expand Down Expand Up @@ -845,7 +853,9 @@ async def update(
login_url: Login page URL. Set to empty string to clear.

proxy: Proxy selection. Provide either id or name. The proxy must be in the same
project as the resource referencing it.
project as the resource referencing it. When selecting by name, the name must
match exactly one active proxy in the project. Ambiguous names return a 400; use
id for stable references.

record_session: Whether to record browser sessions for this connection by default

Expand Down Expand Up @@ -1042,7 +1052,9 @@ async def login(

Args:
proxy: Proxy selection. Provide either id or name. The proxy must be in the same
project as the resource referencing it.
project as the resource referencing it. When selecting by name, the name must
match exactly one active proxy in the project. Ambiguous names return a 400; use
id for stable references.

record_session: Override the connection's default for recording this login's browser session.
When omitted, the connection's record_session default is used.
Expand Down
Loading
Loading