From b0a77ecf220c82d05b3e1a31d7dc7cba5a01e21f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 21:00:56 +0000 Subject: [PATCH 1/3] feat: Add encrypted per-proxy CA bundle for BYO MITM proxies --- .stats.yml | 4 ++-- proxy.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 748759e..20e6603 100644 --- a/.stats.yml +++ b/.stats.yml @@ -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-32a5ef4f5def9dde3ed7acc2b6159b143194e224ceaad2dbbbcb766cac90602e.yml +openapi_spec_hash: 3f514f770bb352d98bd3dbcf865a077f config_hash: 77ee715aa17061166f9a02b264a21b8d diff --git a/proxy.go b/proxy.go index fdb2fbf..4f2f179 100644 --- a/proxy.go +++ b/proxy.go @@ -211,6 +211,8 @@ type ProxyNewResponseConfigUnion struct { // This field is from variant [ProxyNewResponseConfigCustom]. Port int64 `json:"port"` // This field is from variant [ProxyNewResponseConfigCustom]. + HasCaBundle bool `json:"has_ca_bundle"` + // This field is from variant [ProxyNewResponseConfigCustom]. HasPassword bool `json:"has_password"` // This field is from variant [ProxyNewResponseConfigCustom]. Username string `json:"username"` @@ -223,6 +225,7 @@ type ProxyNewResponseConfigUnion struct { Zip respjson.Field Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field raw string @@ -365,6 +368,8 @@ type ProxyNewResponseConfigCustom struct { Host string `json:"host" api:"required"` // Proxy port. Port int64 `json:"port" api:"required"` + // Whether the proxy has a custom CA bundle configured. + HasCaBundle bool `json:"has_ca_bundle"` // Whether the proxy has a password. HasPassword bool `json:"has_password"` // Username for proxy authentication. @@ -373,6 +378,7 @@ type ProxyNewResponseConfigCustom struct { JSON struct { Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field ExtraFields map[string]respjson.Field @@ -483,6 +489,8 @@ type ProxyGetResponseConfigUnion struct { // This field is from variant [ProxyGetResponseConfigCustom]. Port int64 `json:"port"` // This field is from variant [ProxyGetResponseConfigCustom]. + HasCaBundle bool `json:"has_ca_bundle"` + // This field is from variant [ProxyGetResponseConfigCustom]. HasPassword bool `json:"has_password"` // This field is from variant [ProxyGetResponseConfigCustom]. Username string `json:"username"` @@ -495,6 +503,7 @@ type ProxyGetResponseConfigUnion struct { Zip respjson.Field Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field raw string @@ -637,6 +646,8 @@ type ProxyGetResponseConfigCustom struct { Host string `json:"host" api:"required"` // Proxy port. Port int64 `json:"port" api:"required"` + // Whether the proxy has a custom CA bundle configured. + HasCaBundle bool `json:"has_ca_bundle"` // Whether the proxy has a password. HasPassword bool `json:"has_password"` // Username for proxy authentication. @@ -645,6 +656,7 @@ type ProxyGetResponseConfigCustom struct { JSON struct { Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field ExtraFields map[string]respjson.Field @@ -755,6 +767,8 @@ type ProxyUpdateResponseConfigUnion struct { // This field is from variant [ProxyUpdateResponseConfigCustom]. Port int64 `json:"port"` // This field is from variant [ProxyUpdateResponseConfigCustom]. + HasCaBundle bool `json:"has_ca_bundle"` + // This field is from variant [ProxyUpdateResponseConfigCustom]. HasPassword bool `json:"has_password"` // This field is from variant [ProxyUpdateResponseConfigCustom]. Username string `json:"username"` @@ -767,6 +781,7 @@ type ProxyUpdateResponseConfigUnion struct { Zip respjson.Field Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field raw string @@ -909,6 +924,8 @@ type ProxyUpdateResponseConfigCustom struct { Host string `json:"host" api:"required"` // Proxy port. Port int64 `json:"port" api:"required"` + // Whether the proxy has a custom CA bundle configured. + HasCaBundle bool `json:"has_ca_bundle"` // Whether the proxy has a password. HasPassword bool `json:"has_password"` // Username for proxy authentication. @@ -917,6 +934,7 @@ type ProxyUpdateResponseConfigCustom struct { JSON struct { Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field ExtraFields map[string]respjson.Field @@ -1027,6 +1045,8 @@ type ProxyListResponseConfigUnion struct { // This field is from variant [ProxyListResponseConfigCustom]. Port int64 `json:"port"` // This field is from variant [ProxyListResponseConfigCustom]. + HasCaBundle bool `json:"has_ca_bundle"` + // This field is from variant [ProxyListResponseConfigCustom]. HasPassword bool `json:"has_password"` // This field is from variant [ProxyListResponseConfigCustom]. Username string `json:"username"` @@ -1039,6 +1059,7 @@ type ProxyListResponseConfigUnion struct { Zip respjson.Field Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field raw string @@ -1181,6 +1202,8 @@ type ProxyListResponseConfigCustom struct { Host string `json:"host" api:"required"` // Proxy port. Port int64 `json:"port" api:"required"` + // Whether the proxy has a custom CA bundle configured. + HasCaBundle bool `json:"has_ca_bundle"` // Whether the proxy has a password. HasPassword bool `json:"has_password"` // Username for proxy authentication. @@ -1189,6 +1212,7 @@ type ProxyListResponseConfigCustom struct { JSON struct { Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field ExtraFields map[string]respjson.Field @@ -1299,6 +1323,8 @@ type ProxyCheckResponseConfigUnion struct { // This field is from variant [ProxyCheckResponseConfigCustom]. Port int64 `json:"port"` // This field is from variant [ProxyCheckResponseConfigCustom]. + HasCaBundle bool `json:"has_ca_bundle"` + // This field is from variant [ProxyCheckResponseConfigCustom]. HasPassword bool `json:"has_password"` // This field is from variant [ProxyCheckResponseConfigCustom]. Username string `json:"username"` @@ -1311,6 +1337,7 @@ type ProxyCheckResponseConfigUnion struct { Zip respjson.Field Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field raw string @@ -1453,6 +1480,8 @@ type ProxyCheckResponseConfigCustom struct { Host string `json:"host" api:"required"` // Proxy port. Port int64 `json:"port" api:"required"` + // Whether the proxy has a custom CA bundle configured. + HasCaBundle bool `json:"has_ca_bundle"` // Whether the proxy has a password. HasPassword bool `json:"has_password"` // Username for proxy authentication. @@ -1461,6 +1490,7 @@ type ProxyCheckResponseConfigCustom struct { JSON struct { Host respjson.Field Port respjson.Field + HasCaBundle respjson.Field HasPassword respjson.Field Username respjson.Field ExtraFields map[string]respjson.Field @@ -1607,6 +1637,14 @@ func (u ProxyNewParamsConfigUnion) GetPort() *int64 { return nil } +// Returns a pointer to the underlying variant's property, if present. +func (u ProxyNewParamsConfigUnion) GetCaBundle() *string { + if vt := u.OfCustom; vt != nil && vt.CaBundle.Valid() { + return &vt.CaBundle.Value + } + return nil +} + // Returns a pointer to the underlying variant's property, if present. func (u ProxyNewParamsConfigUnion) GetPassword() *string { if vt := u.OfCustom; vt != nil && vt.Password.Valid() { @@ -1750,6 +1788,10 @@ type ProxyNewParamsConfigCustom struct { Host string `json:"host" api:"required"` // Proxy port. Port int64 `json:"port" api:"required"` + // 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. + CaBundle param.Opt[string] `json:"ca_bundle,omitzero"` // Password for proxy authentication. Password param.Opt[string] `json:"password,omitzero"` // Username for proxy authentication. From 778c3890f53b2e1e5b8d31cc31a367fbc387ff49 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 13:46:31 +0000 Subject: [PATCH 2/3] feat: Stabilize project lifecycle error codes --- .stats.yml | 4 ++-- client.go | 4 +++- project.go | 8 ++++++-- projectlimit.go | 4 +++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.stats.yml b/.stats.yml index 20e6603..e1475ca 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 127 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-32a5ef4f5def9dde3ed7acc2b6159b143194e224ceaad2dbbbcb766cac90602e.yml -openapi_spec_hash: 3f514f770bb352d98bd3dbcf865a077f +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-7b03462454d6fa8390eaebc1b411d3e160501bf96abb93b75d38dfc382d4ce51.yml +openapi_spec_hash: ba55400aafb4759cc06ec139fe528dfc config_hash: 77ee715aa17061166f9a02b264a21b8d diff --git a/client.go b/client.go index 4239afa..48b3721 100644 --- a/client.go +++ b/client.go @@ -40,7 +40,9 @@ type Client struct { BrowserPools BrowserPoolService // Create and manage credentials for authentication. Credentials CredentialService - // 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`. Projects ProjectService Organization OrganizationService // Read audit log records for the authenticated organization. diff --git a/project.go b/project.go index 75d6247..fdac65b 100644 --- a/project.go +++ b/project.go @@ -21,7 +21,9 @@ import ( "github.com/kernel/kernel-go-sdk/packages/respjson" ) -// 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`. // // ProjectService contains methods and other services that help with interacting // with the kernel API. @@ -31,7 +33,9 @@ import ( // the [NewProjectService] method instead. type ProjectService struct { Options []option.RequestOption - // 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`. Limits ProjectLimitService } diff --git a/projectlimit.go b/projectlimit.go index ac288fd..964901a 100644 --- a/projectlimit.go +++ b/projectlimit.go @@ -17,7 +17,9 @@ import ( "github.com/kernel/kernel-go-sdk/packages/respjson" ) -// 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`. // // ProjectLimitService contains methods and other services that help with // interacting with the kernel API. From c87624e82889cedafa97613ba8c26fcc3599014c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 13:47:01 +0000 Subject: [PATCH 3/3] release: 0.85.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ README.md | 2 +- internal/version.go | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 47dd76c..ad502a4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.84.0" + ".": "0.85.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 417a4f6..f000179 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.85.0 (2026-07-29) + +Full Changelog: [v0.84.0...v0.85.0](https://github.com/kernel/kernel-go-sdk/compare/v0.84.0...v0.85.0) + +### Features + +* Add encrypted per-proxy CA bundle for BYO MITM proxies ([b0a77ec](https://github.com/kernel/kernel-go-sdk/commit/b0a77ecf220c82d05b3e1a31d7dc7cba5a01e21f)) +* Stabilize project lifecycle error codes ([778c389](https://github.com/kernel/kernel-go-sdk/commit/778c3890f53b2e1e5b8d31cc31a367fbc387ff49)) + ## 0.84.0 (2026-07-27) Full Changelog: [v0.83.0...v0.84.0](https://github.com/kernel/kernel-go-sdk/compare/v0.83.0...v0.84.0) diff --git a/README.md b/README.md index 9373360..355839c 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Or to pin the version: ```sh -go get -u 'github.com/kernel/kernel-go-sdk@v0.84.0' +go get -u 'github.com/kernel/kernel-go-sdk@v0.85.0' ``` diff --git a/internal/version.go b/internal/version.go index 1d3ad33..df9bb02 100644 --- a/internal/version.go +++ b/internal/version.go @@ -2,4 +2,4 @@ package internal -const PackageVersion = "0.84.0" // x-release-please-version +const PackageVersion = "0.85.0" // x-release-please-version