From c1e8e07bad5b65f126126e6eb8f416cbae009f89 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 07:27:20 +0000 Subject: [PATCH 1/6] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 33f284f..324dd3f 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%2Fkernel-4ce09d1a7546ab36f578cb27d819187eeb90c580b11834c7ff7a375aa22f9a20.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-4ce09d1a7546ab36f578cb27d819187eeb90c580b11834c7ff7a375aa22f9a20.yml openapi_spec_hash: 1043ab2d699f6c828680c3352cd4cece config_hash: 08d55086449943a8fec212b870061a3f From ed6a2d2e05b20a6d80c122e7baec032e21de79eb Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 14:55:39 +0000 Subject: [PATCH 2/6] feat: Add 'switch' MFA option type for generic method-switcher links --- .stats.yml | 4 ++-- src/kernel/types/auth/connection_follow_response.py | 11 +++++++---- src/kernel/types/auth/managed_auth.py | 11 +++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.stats.yml b/.stats.yml index 324dd3f..d0f4a0f 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-4ce09d1a7546ab36f578cb27d819187eeb90c580b11834c7ff7a375aa22f9a20.yml -openapi_spec_hash: 1043ab2d699f6c828680c3352cd4cece +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-81659c4d18e7992d17a0930d6c13c8592a0ff5bb974ea9e2e4b3f46d43b117d2.yml +openapi_spec_hash: f3d12a3a0a5e9ce711fb1c571ee36f9c config_hash: 08d55086449943a8fec212b870061a3f diff --git a/src/kernel/types/auth/connection_follow_response.py b/src/kernel/types/auth/connection_follow_response.py index a9bda35..7cabc1c 100644 --- a/src/kernel/types/auth/connection_follow_response.py +++ b/src/kernel/types/auth/connection_follow_response.py @@ -40,7 +40,7 @@ class ManagedAuthStateEventDiscoveredField(BaseModel): "Enter the phone ending in (**_) _**-\\**\\**92") """ - linked_mfa_type: Optional[Literal["sms", "call", "email", "totp", "push", "password"]] = None + linked_mfa_type: Optional[Literal["sms", "call", "email", "totp", "push", "password", "switch"]] = None """ If this field is associated with an MFA option, the type of that option (e.g., password field linked to "Enter password" option) @@ -59,9 +59,12 @@ class ManagedAuthStateEventMfaOption(BaseModel): label: str """The visible option text""" - type: Literal["sms", "call", "email", "totp", "push", "password"] - """ - The MFA delivery method type (includes password for auth method selection pages) + type: Literal["sms", "call", "email", "totp", "push", "password", "switch"] + """The MFA delivery method type. + + Includes 'password' for auth method selection pages and 'switch' for generic + method-switcher links like "Use another method" that do not name a specific + method. """ description: Optional[str] = None diff --git a/src/kernel/types/auth/managed_auth.py b/src/kernel/types/auth/managed_auth.py index 59b2d57..622c3bd 100644 --- a/src/kernel/types/auth/managed_auth.py +++ b/src/kernel/types/auth/managed_auth.py @@ -52,7 +52,7 @@ class DiscoveredField(BaseModel): "Enter the phone ending in (**_) _**-\\**\\**92") """ - linked_mfa_type: Optional[Literal["sms", "call", "email", "totp", "push", "password"]] = None + linked_mfa_type: Optional[Literal["sms", "call", "email", "totp", "push", "password", "switch"]] = None """ If this field is associated with an MFA option, the type of that option (e.g., password field linked to "Enter password" option) @@ -71,9 +71,12 @@ class MfaOption(BaseModel): label: str """The visible option text""" - type: Literal["sms", "call", "email", "totp", "push", "password"] - """ - The MFA delivery method type (includes password for auth method selection pages) + type: Literal["sms", "call", "email", "totp", "push", "password", "switch"] + """The MFA delivery method type. + + Includes 'password' for auth method selection pages and 'switch' for generic + method-switcher links like "Use another method" that do not name a specific + method. """ description: Optional[str] = None From 7dfccb809a35911bd459ac037ae57b2b91c1ff82 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 03:39:52 +0000 Subject: [PATCH 3/6] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index d0f4a0f..d2492a7 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-81659c4d18e7992d17a0930d6c13c8592a0ff5bb974ea9e2e4b3f46d43b117d2.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-718b49461ceaa1d6cac7854c29dfef9036a83f6632e756c9d1ecf31fd77c57f6.yml openapi_spec_hash: f3d12a3a0a5e9ce711fb1c571ee36f9c config_hash: 08d55086449943a8fec212b870061a3f From 120de634b59406e86e5c7f100fa665f45e81c076 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 03:43:46 +0000 Subject: [PATCH 4/6] chore(internal): reformat pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 13b5e4c..5d43220 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -168,7 +168,7 @@ show_error_codes = true # # We also exclude our `tests` as mypy doesn't always infer # types correctly and Pyright will still catch any type errors. -exclude = ['src/kernel/_files.py', '_dev/.*.py', 'tests/.*'] +exclude = ["src/kernel/_files.py", "_dev/.*.py", "tests/.*"] strict_equality = true implicit_reexport = true From 51c4f7906d21382f10c7bb57cfe05f136edc0e42 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:48:46 +0000 Subject: [PATCH 5/6] feat(api): server-side search on GET /projects --- .stats.yml | 4 ++-- src/kernel/resources/projects/projects.py | 8 ++++++++ src/kernel/types/project_list_params.py | 3 +++ tests/api_resources/test_projects.py | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index d2492a7..229ced7 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-718b49461ceaa1d6cac7854c29dfef9036a83f6632e756c9d1ecf31fd77c57f6.yml -openapi_spec_hash: f3d12a3a0a5e9ce711fb1c571ee36f9c +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-86e061884d273a27064593a0de3a4ba366a12a1001181741addb4f781be18ec9.yml +openapi_spec_hash: e0a4ddf4a3302599376756127099488c config_hash: 08d55086449943a8fec212b870061a3f diff --git a/src/kernel/resources/projects/projects.py b/src/kernel/resources/projects/projects.py index 9a7f13b..f73e70d 100644 --- a/src/kernel/resources/projects/projects.py +++ b/src/kernel/resources/projects/projects.py @@ -179,6 +179,7 @@ def list( *, limit: int | Omit = omit, offset: int | Omit = omit, + query: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -194,6 +195,8 @@ def list( offset: Number of results to skip + query: Case-insensitive substring match against project name + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -214,6 +217,7 @@ def list( { "limit": limit, "offset": offset, + "query": query, }, project_list_params.ProjectListParams, ), @@ -404,6 +408,7 @@ def list( *, limit: int | Omit = omit, offset: int | Omit = omit, + query: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -419,6 +424,8 @@ def list( offset: Number of results to skip + query: Case-insensitive substring match against project name + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -439,6 +446,7 @@ def list( { "limit": limit, "offset": offset, + "query": query, }, project_list_params.ProjectListParams, ), diff --git a/src/kernel/types/project_list_params.py b/src/kernel/types/project_list_params.py index ea10f07..9e740e6 100644 --- a/src/kernel/types/project_list_params.py +++ b/src/kernel/types/project_list_params.py @@ -13,3 +13,6 @@ class ProjectListParams(TypedDict, total=False): offset: int """Number of results to skip""" + + query: str + """Case-insensitive substring match against project name""" diff --git a/tests/api_resources/test_projects.py b/tests/api_resources/test_projects.py index 488c191..bb30145 100644 --- a/tests/api_resources/test_projects.py +++ b/tests/api_resources/test_projects.py @@ -158,6 +158,7 @@ def test_method_list_with_all_params(self, client: Kernel) -> None: project = client.projects.list( limit=100, offset=0, + query="query", ) assert_matches_type(SyncOffsetPagination[Project], project, path=["response"]) @@ -371,6 +372,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncKernel) -> N project = await async_client.projects.list( limit=100, offset=0, + query="query", ) assert_matches_type(AsyncOffsetPagination[Project], project, path=["response"]) From 3ce6cdf16c6845965cc30012962ed61ae7f21e06 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:49:09 +0000 Subject: [PATCH 6/6] release: 0.53.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ pyproject.toml | 2 +- src/kernel/_version.py | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index fed4b17..c3e01e1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.52.0" + ".": "0.53.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index c0f9e33..ed58418 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.53.0 (2026-05-02) + +Full Changelog: [v0.52.0...v0.53.0](https://github.com/kernel/kernel-python-sdk/compare/v0.52.0...v0.53.0) + +### Features + +* Add 'switch' MFA option type for generic method-switcher links ([ed6a2d2](https://github.com/kernel/kernel-python-sdk/commit/ed6a2d2e05b20a6d80c122e7baec032e21de79eb)) +* **api:** server-side search on GET /projects ([51c4f79](https://github.com/kernel/kernel-python-sdk/commit/51c4f7906d21382f10c7bb57cfe05f136edc0e42)) + + +### Chores + +* **internal:** reformat pyproject.toml ([120de63](https://github.com/kernel/kernel-python-sdk/commit/120de634b59406e86e5c7f100fa665f45e81c076)) + ## 0.52.0 (2026-04-29) Full Changelog: [v0.51.0...v0.52.0](https://github.com/kernel/kernel-python-sdk/compare/v0.51.0...v0.52.0) diff --git a/pyproject.toml b/pyproject.toml index 5d43220..10375b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kernel" -version = "0.52.0" +version = "0.53.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 1ce5f4b..173fc2c 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.52.0" # x-release-please-version +__version__ = "0.53.0" # x-release-please-version