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.132.0"
".": "0.133.0"
}
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## [0.133.0](https://github.com/kernel/kernel-python-sdk/compare/v0.132.0...v0.133.0) (2026-10-28)


### Features

* Forward Idempotency-Key on playwright and REPL execution ([8f51b16](https://github.com/kernel/kernel-python-sdk/commit/8f51b1697a10524a5e40191bd17e0f2c451a4f91))
* Select 1Password fill pages by target and return stored-token grants ([ae52da0](https://github.com/kernel/kernel-python-sdk/commit/ae52da0436bae8888304311fb921c8ca463f82b6))
* Support multiple Kernel wallet payment methods and payment requests ([99d8515](https://github.com/kernel/kernel-python-sdk/commit/99d851577f0ed2f7ba78849172f8fdddb0a9ce31))

## [0.132.0](https://github.com/kernel/kernel-python-sdk/compare/v0.131.0...v0.132.0) (2026-10-26)


Expand Down
8 changes: 8 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,8 @@ Types:

```python
from kernel.types.vaults import (
AddPaymentMethodVaultItemOperationRequest,
AddPaymentMethodVaultItemOperationResult,
AgentcardCheckoutAuthorization,
AgentcardCheckoutPreparation,
AgentcardPreparedProcessor,
Expand Down Expand Up @@ -602,6 +604,7 @@ from kernel.types.vaults import (
KernelCredentialVaultItemSpec,
KernelCredentialVaultItemSpecInput,
KernelCredentialVaultItemState,
KernelPaymentRequestVaultItemSpec,
KernelWalletState,
KernelWalletVaultItemSpec,
LinkShippingAddress,
Expand All @@ -621,8 +624,13 @@ from kernel.types.vaults import (
OnePasswordRecoverVaultItemOperationRequest,
OnePasswordRequestAccessVaultItemOperationRequest,
PasskeyVaultItemOperationResult,
PaymentRequestVaultItem,
PaymentRequestVaultItemSpec,
PaymentRequestVaultItemState,
PrepareCheckoutVaultItemOperationRequest,
RegisterPasskeyVaultItemOperationRequest,
RemovePaymentMethodVaultItemOperationRequest,
RemovePaymentMethodVaultItemOperationResult,
RestartVerificationVaultItemOperationRequest,
VaultCardAliases,
VaultCardFillField,
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.132.0"
version = "0.133.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
4 changes: 4 additions & 0 deletions src/kernel/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ def __init__(
install_direct_vm_auth_stripping(self._client)
install_stale_direct_vm_auth_eviction(self._client)

self._idempotency_header = "Idempotency-Key"

@cached_property
def deployments(self) -> DeploymentsResource:
"""Create and manage app deployments and stream deployment events."""
Expand Down Expand Up @@ -630,6 +632,8 @@ def __init__(
install_async_direct_vm_auth_stripping(self._client)
install_async_stale_direct_vm_auth_eviction(self._client)

self._idempotency_header = "Idempotency-Key"

@cached_property
def deployments(self) -> AsyncDeploymentsResource:
"""Create and manage app deployments and stream deployment events."""
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.132.0" # x-release-please-version
__version__ = "0.133.0" # x-release-please-version
72 changes: 64 additions & 8 deletions src/kernel/resources/api_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> CreatedAPIKey:
"""Create a new API key.

Expand Down Expand Up @@ -96,6 +97,8 @@ def create(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
return self._post(
"/org/api_keys",
Expand All @@ -110,7 +113,11 @@ def create(
api_key_create_params.APIKeyCreateParams,
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=CreatedAPIKey,
)
Expand Down Expand Up @@ -171,6 +178,7 @@ def update(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> APIKey:
"""
Update an API key's name.
Expand All @@ -185,14 +193,20 @@ def update(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
return self._patch(
path_template("/org/api_keys/{id}", id=id),
body=maybe_transform({"name": name}, api_key_update_params.APIKeyUpdateParams),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=APIKey,
)
Expand Down Expand Up @@ -286,6 +300,7 @@ def delete(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> None:
"""Delete an API key.

Expand All @@ -300,14 +315,20 @@ def delete(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
return self._delete(
path_template("/org/api_keys/{id}", id=id),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=NoneType,
)
Expand All @@ -324,6 +345,7 @@ def rotate(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> CreatedAPIKey:
"""Rotate an API key.

Expand All @@ -345,6 +367,8 @@ def rotate(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
Expand All @@ -358,7 +382,11 @@ def rotate(
api_key_rotate_params.APIKeyRotateParams,
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=CreatedAPIKey,
)
Expand Down Expand Up @@ -400,6 +428,7 @@ async def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> CreatedAPIKey:
"""Create a new API key.

Expand Down Expand Up @@ -427,6 +456,8 @@ async def create(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
return await self._post(
"/org/api_keys",
Expand All @@ -441,7 +472,11 @@ async def create(
api_key_create_params.APIKeyCreateParams,
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=CreatedAPIKey,
)
Expand Down Expand Up @@ -502,6 +537,7 @@ async def update(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> APIKey:
"""
Update an API key's name.
Expand All @@ -516,14 +552,20 @@ async def update(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
return await self._patch(
path_template("/org/api_keys/{id}", id=id),
body=await async_maybe_transform({"name": name}, api_key_update_params.APIKeyUpdateParams),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=APIKey,
)
Expand Down Expand Up @@ -617,6 +659,7 @@ async def delete(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> None:
"""Delete an API key.

Expand All @@ -631,14 +674,20 @@ async def delete(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
extra_headers = {"Accept": "*/*", **(extra_headers or {})}
return await self._delete(
path_template("/org/api_keys/{id}", id=id),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=NoneType,
)
Expand All @@ -655,6 +704,7 @@ async def rotate(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = not_given,
idempotency_key: str | None = None,
) -> CreatedAPIKey:
"""Rotate an API key.

Expand All @@ -676,6 +726,8 @@ async def rotate(
extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds

idempotency_key: Specify a custom idempotency key for this request
"""
if not id:
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
Expand All @@ -689,7 +741,11 @@ async def rotate(
api_key_rotate_params.APIKeyRotateParams,
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
idempotency_key=idempotency_key,
),
cast_to=CreatedAPIKey,
)
Expand Down
Loading
Loading