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.84.0"
".": "0.85.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 127
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-904fd6fd50970ea07ec05c51b1ae0819ffb64cbf0921fff9daed6792b64f1dc9.yml
openapi_spec_hash: cbd6626bdac7beaa768abb346e03fb74
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-7b03462454d6fa8390eaebc1b411d3e160501bf96abb93b75d38dfc382d4ce51.yml
openapi_spec_hash: ba55400aafb4759cc06ec139fe528dfc
config_hash: 77ee715aa17061166f9a02b264a21b8d
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## 0.85.0 (2026-07-29)

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

### Features

* Add encrypted per-proxy CA bundle for BYO MITM proxies ([c3f4571](https://github.com/kernel/kernel-python-sdk/commit/c3f4571357f66bc38352169f603da1256ea5b152))
* Stabilize project lifecycle error codes ([5102f24](https://github.com/kernel/kernel-python-sdk/commit/5102f24f2583e0bfa8b21539cb822a65451b3df8))

## 0.84.0 (2026-07-27)

Full Changelog: [v0.83.0...v0.84.0](https://github.com/kernel/kernel-python-sdk/compare/v0.83.0...v0.84.0)
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.84.0"
version = "0.85.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
36 changes: 30 additions & 6 deletions src/kernel/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,11 @@ def credentials(self) -> CredentialsResource:

@cached_property
def projects(self) -> ProjectsResource:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
from .resources.projects import ProjectsResource

return ProjectsResource(self)
Expand Down Expand Up @@ -618,7 +622,11 @@ def credentials(self) -> AsyncCredentialsResource:

@cached_property
def projects(self) -> AsyncProjectsResource:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
from .resources.projects import AsyncProjectsResource

return AsyncProjectsResource(self)
Expand Down Expand Up @@ -878,7 +886,11 @@ def credentials(self) -> credentials.CredentialsResourceWithRawResponse:

@cached_property
def projects(self) -> projects.ProjectsResourceWithRawResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
from .resources.projects import ProjectsResourceWithRawResponse

return ProjectsResourceWithRawResponse(self._client.projects)
Expand Down Expand Up @@ -988,7 +1000,11 @@ def credentials(self) -> credentials.AsyncCredentialsResourceWithRawResponse:

@cached_property
def projects(self) -> projects.AsyncProjectsResourceWithRawResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
from .resources.projects import AsyncProjectsResourceWithRawResponse

return AsyncProjectsResourceWithRawResponse(self._client.projects)
Expand Down Expand Up @@ -1098,7 +1114,11 @@ def credentials(self) -> credentials.CredentialsResourceWithStreamingResponse:

@cached_property
def projects(self) -> projects.ProjectsResourceWithStreamingResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
from .resources.projects import ProjectsResourceWithStreamingResponse

return ProjectsResourceWithStreamingResponse(self._client.projects)
Expand Down Expand Up @@ -1208,7 +1228,11 @@ def credentials(self) -> credentials.AsyncCredentialsResourceWithStreamingRespon

@cached_property
def projects(self) -> projects.AsyncProjectsResourceWithStreamingResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
from .resources.projects import AsyncProjectsResourceWithStreamingResponse

return AsyncProjectsResourceWithStreamingResponse(self._client.projects)
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.84.0" # x-release-please-version
__version__ = "0.85.0" # x-release-please-version
12 changes: 10 additions & 2 deletions src/kernel/resources/projects/limits.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@


class LimitsResource(SyncAPIResource):
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""

@cached_property
def with_raw_response(self) -> LimitsResourceWithRawResponse:
Expand Down Expand Up @@ -140,7 +144,11 @@ def update(


class AsyncLimitsResource(AsyncAPIResource):
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""

@cached_property
def with_raw_response(self) -> AsyncLimitsResourceWithRawResponse:
Expand Down
48 changes: 40 additions & 8 deletions src/kernel/resources/projects/projects.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,19 @@


class ProjectsResource(SyncAPIResource):
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""

@cached_property
def limits(self) -> LimitsResource:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
return LimitsResource(self._client)

@cached_property
Expand Down Expand Up @@ -266,11 +274,19 @@ def delete(


class AsyncProjectsResource(AsyncAPIResource):
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""

@cached_property
def limits(self) -> AsyncLimitsResource:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
return AsyncLimitsResource(self._client)

@cached_property
Expand Down Expand Up @@ -520,7 +536,11 @@ def __init__(self, projects: ProjectsResource) -> None:

@cached_property
def limits(self) -> LimitsResourceWithRawResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
return LimitsResourceWithRawResponse(self._projects.limits)


Expand All @@ -546,7 +566,11 @@ def __init__(self, projects: AsyncProjectsResource) -> None:

@cached_property
def limits(self) -> AsyncLimitsResourceWithRawResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
return AsyncLimitsResourceWithRawResponse(self._projects.limits)


Expand All @@ -572,7 +596,11 @@ def __init__(self, projects: ProjectsResource) -> None:

@cached_property
def limits(self) -> LimitsResourceWithStreamingResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
return LimitsResourceWithStreamingResponse(self._projects.limits)


Expand All @@ -598,5 +626,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:

@cached_property
def limits(self) -> AsyncLimitsResourceWithStreamingResponse:
"""Create and manage projects for resource isolation within an organization."""
"""
Create and manage projects for resource isolation within an organization.
When projects are disabled for the organization, project operations return
`404` with code `projects_disabled`.
"""
return AsyncLimitsResourceWithStreamingResponse(self._projects.limits)
3 changes: 3 additions & 0 deletions src/kernel/types/proxy_check_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ class ConfigCustomProxyConfig(BaseModel):
port: int
"""Proxy port."""

has_ca_bundle: Optional[bool] = None
"""Whether the proxy has a custom CA bundle configured."""

has_password: Optional[bool] = None
"""Whether the proxy has a password."""

Expand Down
7 changes: 7 additions & 0 deletions src/kernel/types/proxy_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,13 @@ class ConfigCreateCustomProxyConfig(TypedDict, total=False):
port: Required[int]
"""Proxy port."""

ca_bundle: str
"""PEM-encoded CA certificate bundle the proxy re-signs upstream TLS with.

Provide when the proxy terminates TLS (MITM) so the browser trusts its
certificates. May contain multiple concatenated certificates.
"""

password: str
"""Password for proxy authentication."""

Expand Down
3 changes: 3 additions & 0 deletions src/kernel/types/proxy_create_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ class ConfigCustomProxyConfig(BaseModel):
port: int
"""Proxy port."""

has_ca_bundle: Optional[bool] = None
"""Whether the proxy has a custom CA bundle configured."""

has_password: Optional[bool] = None
"""Whether the proxy has a password."""

Expand Down
3 changes: 3 additions & 0 deletions src/kernel/types/proxy_list_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ class ConfigCustomProxyConfig(BaseModel):
port: int
"""Proxy port."""

has_ca_bundle: Optional[bool] = None
"""Whether the proxy has a custom CA bundle configured."""

has_password: Optional[bool] = None
"""Whether the proxy has a password."""

Expand Down
3 changes: 3 additions & 0 deletions src/kernel/types/proxy_retrieve_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ class ConfigCustomProxyConfig(BaseModel):
port: int
"""Proxy port."""

has_ca_bundle: Optional[bool] = None
"""Whether the proxy has a custom CA bundle configured."""

has_password: Optional[bool] = None
"""Whether the proxy has a password."""

Expand Down
3 changes: 3 additions & 0 deletions src/kernel/types/proxy_update_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ class ConfigCustomProxyConfig(BaseModel):
port: int
"""Proxy port."""

has_ca_bundle: Optional[bool] = None
"""Whether the proxy has a custom CA bundle configured."""

has_password: Optional[bool] = None
"""Whether the proxy has a password."""

Expand Down
Loading