From c5f21ecf3e1081c774ba58ad32b10e8cd5b0a94a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 21:26:08 +0000 Subject: [PATCH 1/2] feat: api: dual-route /projects under /org/projects, deprecate /projects --- .stats.yml | 6 +++--- api.md | 14 +++++++------- src/kernel/resources/projects/limits.py | 8 ++++---- src/kernel/resources/projects/projects.py | 20 ++++++++++---------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.stats.yml b/.stats.yml index 6f5d31f..dbf097f 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-5d96fec7a84722f300bd99db7352d6284141826f3412f6d370ac0926edf03d42.yml -openapi_spec_hash: d4e1a29ac06f9543e0ef69372eb3ff35 -config_hash: ae3dea7997fb5d36fa41979f9585ed78 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-a0ad160eb0fb11e201e240de8487c12992a474076aeed1c1167ee54ade43edfb.yml +openapi_spec_hash: 84a7075fddbe17b1446a759e8cc39047 +config_hash: 26beac3050665664d5d74d2bbfe9e808 diff --git a/api.md b/api.md index b652f86..4785c2d 100644 --- a/api.md +++ b/api.md @@ -395,11 +395,11 @@ from kernel.types import CreateProjectRequest, Project, UpdateProjectRequest Methods: -- client.projects.create(\*\*params) -> Project -- client.projects.retrieve(id) -> Project -- client.projects.update(id, \*\*params) -> Project -- client.projects.list(\*\*params) -> SyncOffsetPagination[Project] -- client.projects.delete(id) -> None +- client.projects.create(\*\*params) -> Project +- client.projects.retrieve(id) -> Project +- client.projects.update(id, \*\*params) -> Project +- client.projects.list(\*\*params) -> SyncOffsetPagination[Project] +- client.projects.delete(id) -> None ## Limits @@ -411,8 +411,8 @@ from kernel.types.projects import ProjectLimits, UpdateProjectLimitsRequest Methods: -- client.projects.limits.retrieve(id) -> ProjectLimits -- client.projects.limits.update(id, \*\*params) -> ProjectLimits +- client.projects.limits.retrieve(id) -> ProjectLimits +- client.projects.limits.update(id, \*\*params) -> ProjectLimits # CredentialProviders diff --git a/src/kernel/resources/projects/limits.py b/src/kernel/resources/projects/limits.py index 04ac314..ade9302 100644 --- a/src/kernel/resources/projects/limits.py +++ b/src/kernel/resources/projects/limits.py @@ -73,7 +73,7 @@ def retrieve( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return self._get( - path_template("/projects/{id}/limits", id=id), + path_template("/org/projects/{id}/limits", id=id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -121,7 +121,7 @@ def update( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return self._patch( - path_template("/projects/{id}/limits", id=id), + path_template("/org/projects/{id}/limits", id=id), body=maybe_transform( { "max_concurrent_invocations": max_concurrent_invocations, @@ -187,7 +187,7 @@ async def retrieve( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return await self._get( - path_template("/projects/{id}/limits", id=id), + path_template("/org/projects/{id}/limits", id=id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -235,7 +235,7 @@ async def update( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return await self._patch( - path_template("/projects/{id}/limits", id=id), + path_template("/org/projects/{id}/limits", id=id), body=await async_maybe_transform( { "max_concurrent_invocations": max_concurrent_invocations, diff --git a/src/kernel/resources/projects/projects.py b/src/kernel/resources/projects/projects.py index 87fae1b..ea97768 100644 --- a/src/kernel/resources/projects/projects.py +++ b/src/kernel/resources/projects/projects.py @@ -85,7 +85,7 @@ def create( timeout: Override the client-level default timeout for this request, in seconds """ return self._post( - "/projects", + "/org/projects", body=maybe_transform({"name": name}, project_create_params.ProjectCreateParams), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout @@ -119,7 +119,7 @@ def retrieve( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return self._get( - path_template("/projects/{id}", id=id), + path_template("/org/projects/{id}", id=id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -158,7 +158,7 @@ def update( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return self._patch( - path_template("/projects/{id}", id=id), + path_template("/org/projects/{id}", id=id), body=maybe_transform( { "name": name, @@ -204,7 +204,7 @@ def list( timeout: Override the client-level default timeout for this request, in seconds """ return self._get_api_list( - "/projects", + "/org/projects", page=SyncOffsetPagination[Project], options=make_request_options( extra_headers=extra_headers, @@ -251,7 +251,7 @@ def delete( 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("/projects/{id}", id=id), + path_template("/org/projects/{id}", id=id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -312,7 +312,7 @@ async def create( timeout: Override the client-level default timeout for this request, in seconds """ return await self._post( - "/projects", + "/org/projects", body=await async_maybe_transform({"name": name}, project_create_params.ProjectCreateParams), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout @@ -346,7 +346,7 @@ async def retrieve( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return await self._get( - path_template("/projects/{id}", id=id), + path_template("/org/projects/{id}", id=id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -385,7 +385,7 @@ async def update( if not id: raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") return await self._patch( - path_template("/projects/{id}", id=id), + path_template("/org/projects/{id}", id=id), body=await async_maybe_transform( { "name": name, @@ -431,7 +431,7 @@ def list( timeout: Override the client-level default timeout for this request, in seconds """ return self._get_api_list( - "/projects", + "/org/projects", page=AsyncOffsetPagination[Project], options=make_request_options( extra_headers=extra_headers, @@ -478,7 +478,7 @@ async def delete( 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("/projects/{id}", id=id), + path_template("/org/projects/{id}", id=id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), From df280d6d6bd82b7ed4ac4e46b9d751fa531962ef Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 21:26:34 +0000 Subject: [PATCH 2/2] release: 0.58.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 2afb750..2fbefb9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.57.0" + ".": "0.58.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 9649399..f09863e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.58.0 (2026-05-24) + +Full Changelog: [v0.57.0...v0.58.0](https://github.com/kernel/kernel-python-sdk/compare/v0.57.0...v0.58.0) + +### Features + +* api: dual-route /projects under /org/projects, deprecate /projects ([c5f21ec](https://github.com/kernel/kernel-python-sdk/commit/c5f21ecf3e1081c774ba58ad32b10e8cd5b0a94a)) + ## 0.57.0 (2026-05-22) Full Changelog: [v0.56.0...v0.57.0](https://github.com/kernel/kernel-python-sdk/compare/v0.56.0...v0.57.0) diff --git a/pyproject.toml b/pyproject.toml index 6956b28..3ff0ba8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kernel" -version = "0.57.0" +version = "0.58.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 fb252c5..9422de8 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.57.0" # x-release-please-version +__version__ = "0.58.0" # x-release-please-version