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.76.0"
".": "0.77.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 125
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-ba32039d3975da7aa6d28e5184f0a44c9fbfe36ab7dbc71985d14e2ecc0867b9.yml
openapi_spec_hash: a9f32fc90c2add2ae85af828c298e35b
config_hash: 06186eb40e0058a2a87ac251fc07415d
configured_endpoints: 127
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-f0003e336fc8dc54d9cac4728c847fb80c32d50a9165738c5b70aa83a09bb0f5.yml
openapi_spec_hash: a2099eec27728b1cfd9032dc71b9bb57
config_hash: 77ee715aa17061166f9a02b264a21b8d
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Changelog

## 0.77.0 (2026-07-13)

Full Changelog: [v0.76.0...v0.77.0](https://github.com/kernel/kernel-go-sdk/compare/v0.76.0...v0.77.0)

### Features

* Add exact-match name filter to list endpoints ([6ffae2f](https://github.com/kernel/kernel-go-sdk/commit/6ffae2ffa5a381af12ff4776ac3d590ed1a724ef))
* Add name-only rename for profiles and proxies ([c2b2b5e](https://github.com/kernel/kernel-go-sdk/commit/c2b2b5e5cf318b2d6c9e964b65274f8de4a57a35))
* Auto-default refresh_on_profile_update when browser pool profile changes ([b74cae1](https://github.com/kernel/kernel-go-sdk/commit/b74cae1d226293704baefb943c213c77b83b409b))
* Document name uniqueness and query match semantics ([fd4fcff](https://github.com/kernel/kernel-go-sdk/commit/fd4fcffa2ad8d35878a189a1a66e9e8aac2df872))
* Make the browser pool OpenAPI contract truthful ([b1baff2](https://github.com/kernel/kernel-go-sdk/commit/b1baff2db6ad583e8998e4ef6d3d711c73817492))
* Persist and echo deployment source identity ([a09849a](https://github.com/kernel/kernel-go-sdk/commit/a09849ac32a842675babeefdf32d136e18a9d812))
* Support multiple audit log method exclusions ([de83d75](https://github.com/kernel/kernel-go-sdk/commit/de83d75e14f7f819f6c6982a7c9833d7a3f45721))


### Documentation

* **openapi:** describe unified concurrency limit, deprecate max_pooled_sessions (CUS-275) ([edcc0e5](https://github.com/kernel/kernel-go-sdk/commit/edcc0e5e25cbce705d36a316b146a6eda30dc4fb))

## 0.76.0 (2026-07-09)

Full Changelog: [v0.75.0...v0.76.0](https://github.com/kernel/kernel-go-sdk/compare/v0.75.0...v0.76.0)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Or to pin the version:
<!-- x-release-please-start-version -->

```sh
go get -u 'github.com/kernel/kernel-go-sdk@v0.76.0'
go get -u 'github.com/kernel/kernel-go-sdk@v0.77.0'
```

<!-- x-release-please-end -->
Expand Down
3 changes: 3 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ Methods:

- <code title="post /profiles">client.Profiles.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileNewParams">ProfileNewParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#Profile">Profile</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /profiles/{id_or_name}">client.Profiles.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, idOrName <a href="https://pkg.go.dev/builtin#string">string</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#Profile">Profile</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="patch /profiles/{id_or_name}">client.Profiles.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileService.Update">Update</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, idOrName <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileUpdateParams">ProfileUpdateParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#Profile">Profile</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /profiles">client.Profiles.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, query <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileListParams">ProfileListParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk/packages/pagination">pagination</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk/packages/pagination#OffsetPagination">OffsetPagination</a>[<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#Profile">Profile</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="delete /profiles/{id_or_name}">client.Profiles.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, idOrName <a href="https://pkg.go.dev/builtin#string">string</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
- <code title="get /profiles/{id_or_name}/download">client.Profiles.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProfileService.Download">Download</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, idOrName <a href="https://pkg.go.dev/builtin#string">string</a>) (\*http.Response, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
Expand Down Expand Up @@ -304,13 +305,15 @@ Response Types:

- <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyNewResponse">ProxyNewResponse</a>
- <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyGetResponse">ProxyGetResponse</a>
- <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyUpdateResponse">ProxyUpdateResponse</a>
- <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyListResponse">ProxyListResponse</a>
- <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyCheckResponse">ProxyCheckResponse</a>

Methods:

- <code title="post /proxies">client.Proxies.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyNewParams">ProxyNewParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyNewResponse">ProxyNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /proxies/{id}">client.Proxies.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, id <a href="https://pkg.go.dev/builtin#string">string</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyGetResponse">ProxyGetResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="patch /proxies/{id}">client.Proxies.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyService.Update">Update</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, id <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyUpdateParams">ProxyUpdateParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyUpdateResponse">ProxyUpdateResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /proxies">client.Proxies.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, query <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyListParams">ProxyListParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk/packages/pagination">pagination</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk/packages/pagination#OffsetPagination">OffsetPagination</a>[<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyListResponse">ProxyListResponse</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="delete /proxies/{id}">client.Proxies.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, id <a href="https://pkg.go.dev/builtin#string">string</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
- <code title="post /proxies/{id}/check">client.Proxies.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyService.Check">Check</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, id <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyCheckParams">ProxyCheckParams</a>) (\*<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#ProxyCheckResponse">ProxyCheckResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
Expand Down
10 changes: 8 additions & 2 deletions apikey.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ type APIKey struct {
ExpiresAt time.Time `json:"expires_at" api:"required" format:"date-time"`
// Masked version of the API key
MaskedKey string `json:"masked_key" api:"required"`
// API key name
// Label for the API key. API keys are not addressable by name; use the ID or key
// identifier for stable references.
Name string `json:"name" api:"required"`
// Project identifier for project-scoped API keys. Null means org-wide.
ProjectID string `json:"project_id" api:"required"`
Expand Down Expand Up @@ -210,7 +211,7 @@ func (r *CreatedAPIKey) UnmarshalJSON(data []byte) error {
}

type APIKeyNewParams struct {
// API key name (1-255 characters)
// Label for the API key (1-255 characters). API keys are not addressable by name.
Name string `json:"name" api:"required"`
// Number of days until expiry, up to 3650. Use null for never.
DaysToExpire param.Opt[int64] `json:"days_to_expire,omitzero"`
Expand Down Expand Up @@ -262,6 +263,11 @@ type APIKeyListParams struct {
IncludeDeleted param.Opt[bool] `query:"include_deleted,omitzero" json:"-"`
// Maximum number of results to return
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
// Exact-match filter on API key name using the database collation. In production,
// matching is case- and accent-insensitive. Names are not required to be unique,
// so multiple keys may match. When status=all or include_deleted=true is set,
// soft-deleted keys with the same name may also match.
Name param.Opt[string] `query:"name,omitzero" json:"-"`
// Number of results to skip
Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
// Case-insensitive substring match against API key name, creator, and project. API
Expand Down
1 change: 1 addition & 0 deletions apikey_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ func TestAPIKeyListWithOptionalParams(t *testing.T) {
_, err := client.APIKeys.List(context.TODO(), kernel.APIKeyListParams{
IncludeDeleted: kernel.Bool(true),
Limit: kernel.Int(100),
Name: kernel.String("name"),
Offset: kernel.Int(0),
Query: kernel.String("query"),
SortBy: kernel.APIKeyListParamsSortByCreatedAt,
Expand Down
8 changes: 4 additions & 4 deletions auditlog.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,6 @@ type AuditLogListParams struct {
Start time.Time `query:"start" api:"required" format:"date-time" json:"-"`
// Filter by authentication strategy.
AuthStrategy param.Opt[string] `query:"auth_strategy,omitzero" json:"-"`
// Filter out results by HTTP method.
ExcludeMethod param.Opt[string] `query:"exclude_method,omitzero" json:"-"`
// Maximum number of results to return.
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
// Filter by HTTP method.
Expand All @@ -144,6 +142,8 @@ type AuditLogListParams struct {
Search param.Opt[string] `query:"search,omitzero" json:"-"`
// Filter by service name.
Service param.Opt[string] `query:"service,omitzero" json:"-"`
// Filter out results by HTTP method.
ExcludeMethod []string `query:"exclude_method,omitzero" json:"-"`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Undocumented audit ExcludeMethod breaking change

Medium Severity

AuditLogListParams and AuditLogExportChunkParams change ExcludeMethod from param.Opt[string] to []string, which breaks existing Go code that still passes kernel.String(...). The 0.77.0 changelog lists this only as a feature, with no breaking-change notice or migration hint.

Additional Locations (2)
Fix in Cursor Fix in Web

Triggered by learned rule: Flag breaking API changes misclassified as patch fixes

Reviewed by Cursor Bugbot for commit fbfb965. Configure here.

// Additional user IDs to OR into free-text search.
SearchUserID []string `query:"search_user_id,omitzero" json:"-"`
paramObj
Expand All @@ -166,8 +166,6 @@ type AuditLogExportChunkParams struct {
AuthStrategy param.Opt[string] `query:"auth_strategy,omitzero" json:"-"`
// Opaque cursor from X-Next-Cursor for the next chunk of older records.
Cursor param.Opt[string] `query:"cursor,omitzero" json:"-"`
// Filter out results by HTTP method.
ExcludeMethod param.Opt[string] `query:"exclude_method,omitzero" json:"-"`
// Maximum number of records to return in this chunk.
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
// Filter by HTTP method.
Expand All @@ -176,6 +174,8 @@ type AuditLogExportChunkParams struct {
Search param.Opt[string] `query:"search,omitzero" json:"-"`
// Filter by service name.
Service param.Opt[string] `query:"service,omitzero" json:"-"`
// Filter out results by HTTP method.
ExcludeMethod []string `query:"exclude_method,omitzero" json:"-"`
// Encoding for the returned chunk.
//
// Any of "jsonl", "jsonl.gz".
Expand Down
4 changes: 2 additions & 2 deletions auditlog_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestAuditLogListWithOptionalParams(t *testing.T) {
End: time.Now(),
Start: time.Now(),
AuthStrategy: kernel.String("auth_strategy"),
ExcludeMethod: kernel.String("exclude_method"),
ExcludeMethod: []string{"string"},
Limit: kernel.Int(1),
Method: kernel.String("method"),
PageToken: kernel.String("page_token"),
Expand Down Expand Up @@ -68,7 +68,7 @@ func TestAuditLogExportChunkWithOptionalParams(t *testing.T) {
Start: time.Now(),
AuthStrategy: kernel.String("auth_strategy"),
Cursor: kernel.String("cursor"),
ExcludeMethod: kernel.String("exclude_method"),
ExcludeMethod: []string{"string"},
Format: kernel.AuditLogExportChunkParamsFormatJSONL,
Limit: kernel.Int(1),
Method: kernel.String("method"),
Expand Down
24 changes: 18 additions & 6 deletions authconnection.go
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,9 @@ type ManagedAuthCreateRequestParam struct {
// - { provider, auto: true } for external provider domain lookup
Credential ManagedAuthCreateRequestCredentialParam `json:"credential,omitzero"`
// Proxy selection. Provide either id or name. The proxy must be in the same
// project as the resource referencing it.
// project as the resource referencing it. When selecting by name, the name must
// match exactly one active proxy in the project. Ambiguous names return a 400; use
// id for stable references.
Proxy ManagedAuthCreateRequestProxyParam `json:"proxy,omitzero"`
paramObj
}
Expand Down Expand Up @@ -806,7 +808,9 @@ func (r *ManagedAuthCreateRequestCredentialParam) UnmarshalJSON(data []byte) err
}

// Proxy selection. Provide either id or name. The proxy must be in the same
// project as the resource referencing it.
// project as the resource referencing it. When selecting by name, the name must
// match exactly one active proxy in the project. Ambiguous names return a 400; use
// id for stable references.
type ManagedAuthCreateRequestProxyParam struct {
// Proxy ID
ID param.Opt[string] `json:"id,omitzero"`
Expand Down Expand Up @@ -969,7 +973,9 @@ type ManagedAuthUpdateRequestParam struct {
// - { provider, auto: true } for external provider domain lookup
Credential ManagedAuthUpdateRequestCredentialParam `json:"credential,omitzero"`
// Proxy selection. Provide either id or name. The proxy must be in the same
// project as the resource referencing it.
// project as the resource referencing it. When selecting by name, the name must
// match exactly one active proxy in the project. Ambiguous names return a 400; use
// id for stable references.
Proxy ManagedAuthUpdateRequestProxyParam `json:"proxy,omitzero"`
paramObj
}
Expand Down Expand Up @@ -1008,7 +1014,9 @@ func (r *ManagedAuthUpdateRequestCredentialParam) UnmarshalJSON(data []byte) err
}

// Proxy selection. Provide either id or name. The proxy must be in the same
// project as the resource referencing it.
// project as the resource referencing it. When selecting by name, the name must
// match exactly one active proxy in the project. Ambiguous names return a 400; use
// id for stable references.
type ManagedAuthUpdateRequestProxyParam struct {
// Proxy ID
ID param.Opt[string] `json:"id,omitzero"`
Expand Down Expand Up @@ -1446,7 +1454,9 @@ type AuthConnectionLoginParams struct {
// When omitted, the connection's record_session default is used.
RecordSession param.Opt[bool] `json:"record_session,omitzero"`
// Proxy selection. Provide either id or name. The proxy must be in the same
// project as the resource referencing it.
// project as the resource referencing it. When selecting by name, the name must
// match exactly one active proxy in the project. Ambiguous names return a 400; use
// id for stable references.
Proxy AuthConnectionLoginParamsProxy `json:"proxy,omitzero"`
paramObj
}
Expand All @@ -1460,7 +1470,9 @@ func (r *AuthConnectionLoginParams) UnmarshalJSON(data []byte) error {
}

// Proxy selection. Provide either id or name. The proxy must be in the same
// project as the resource referencing it.
// project as the resource referencing it. When selecting by name, the name must
// match exactly one active proxy in the project. Ambiguous names return a 400; use
// id for stable references.
type AuthConnectionLoginParamsProxy struct {
// Proxy ID
ID param.Opt[string] `json:"id,omitzero"`
Expand Down
Loading
Loading