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.90.0"
".": "0.91.0"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
configured_endpoints: 134
configured_endpoints: 139
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## [0.91.0](https://github.com/kernel/kernel-go-sdk/compare/v0.90.0...v0.91.0) (2026-08-14)


### Features

* Add customer-facing OTLP destination CRUD API ([25f9b28](https://github.com/kernel/kernel-go-sdk/commit/25f9b283b2ec49a85a973bc267a6bde4c3872a76))
* Expose configurable browser memory ([cb90eb7](https://github.com/kernel/kernel-go-sdk/commit/cb90eb77d34aaeb9302fb701a6a613d1f3ff51af))
* Require a name on credential providers and backfill unnamed rows ([1f70e73](https://github.com/kernel/kernel-go-sdk/commit/1f70e735bad95b73c3eb89535479eac45f1c6dc3))

## [0.90.0](https://github.com/kernel/kernel-go-sdk/compare/v0.89.0...v0.90.0) (2026-08-12)


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.90.0'
go get -u 'github.com/kernel/kernel-go-sdk@v0.91.0'
```

<!-- x-release-please-end -->
Expand Down
18 changes: 18 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,15 @@ Methods:

Params 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#BrowserMemoryRequest">BrowserMemoryRequest</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#BrowserNetworkConfigParam">BrowserNetworkConfigParam</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#BrowserProxyConfigParam">BrowserProxyConfigParam</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#BrowserProxyMode">BrowserProxyMode</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#Tags">Tags</a>

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#BrowserMemory">BrowserMemory</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#BrowserNetworkConfig">BrowserNetworkConfig</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#BrowserPoolRef">BrowserPoolRef</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#BrowserProxy">BrowserProxy</a>
Expand Down Expand Up @@ -320,6 +322,22 @@ Methods:
- <code title="post /auth/connections/{id}/submit">client.Auth.Connections.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#AuthConnectionService.Submit">Submit</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#AuthConnectionSubmitParams">AuthConnectionSubmitParams</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#SubmitFieldsResponse">SubmitFieldsResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /auth/connections/{id}/timeline">client.Auth.Connections.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#AuthConnectionService.Timeline">Timeline</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>, 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#AuthConnectionTimelineParams">AuthConnectionTimelineParams</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#ManagedAuthTimelineEvent">ManagedAuthTimelineEvent</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>

# Telemetry

## Destinations

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#OtlpDestination">OtlpDestination</a>

Methods:

- <code title="post /telemetry/destinations">client.Telemetry.Destinations.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#TelemetryDestinationService.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#TelemetryDestinationNewParams">TelemetryDestinationNewParams</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#OtlpDestination">OtlpDestination</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /telemetry/destinations/{id_or_name}">client.Telemetry.Destinations.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#TelemetryDestinationService.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#OtlpDestination">OtlpDestination</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="patch /telemetry/destinations/{id_or_name}">client.Telemetry.Destinations.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#TelemetryDestinationService.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#TelemetryDestinationUpdateParams">TelemetryDestinationUpdateParams</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#OtlpDestination">OtlpDestination</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="get /telemetry/destinations">client.Telemetry.Destinations.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#TelemetryDestinationService.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#TelemetryDestinationListParams">TelemetryDestinationListParams</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#OtlpDestination">OtlpDestination</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
- <code title="delete /telemetry/destinations/{id_or_name}">client.Telemetry.Destinations.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#TelemetryDestinationService.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>

# Proxies

Response Types:
Expand Down
46 changes: 45 additions & 1 deletion browser.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ import (
// the [NewBrowserService] method instead.
type BrowserService struct {
Options []option.RequestOption
// Stream live telemetry events from a browser session.
// Stream live telemetry events from a browser session, and manage the destinations
// sessions export them to.
Telemetry BrowserTelemetryService
// Record and manage browser session video replays.
Replays BrowserReplayService
Expand Down Expand Up @@ -166,6 +167,25 @@ func (r *BrowserService) LoadExtensions(ctx context.Context, id string, body Bro
return err
}

// Memory allocated to the browser session.
type BrowserMemory string

const (
BrowserMemory1GiB BrowserMemory = "1GiB"
BrowserMemory2GiB BrowserMemory = "2GiB"
BrowserMemory6GiB BrowserMemory = "6GiB"
BrowserMemory8GiB BrowserMemory = "8GiB"
BrowserMemory16GiB BrowserMemory = "16GiB"
)

// Memory requested for a headful, non-GPU browser session.
type BrowserMemoryRequest string

const (
BrowserMemoryRequest8GiB BrowserMemoryRequest = "8GiB"
BrowserMemoryRequest16GiB BrowserMemoryRequest = "16GiB"
)

// Network configuration for a browser session or browser pool.
type BrowserNetworkConfig struct {
// Destinations the browser reaches directly through the session's own network
Expand Down Expand Up @@ -453,6 +473,10 @@ type BrowserNewResponse struct {
CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
// Whether the browser session is running in headless mode.
Headless bool `json:"headless" api:"required"`
// Memory allocated to the browser session.
//
// Any of "1GiB", "2GiB", "6GiB", "8GiB", "16GiB".
Memory BrowserMemory `json:"memory" api:"required"`
// Geographic region of the browser session. Fixed once the session is created.
//
// Any of "us-east", "eu-west".
Expand Down Expand Up @@ -531,6 +555,7 @@ type BrowserNewResponse struct {
CdpWsURL respjson.Field
CreatedAt respjson.Field
Headless respjson.Field
Memory respjson.Field
Region respjson.Field
SessionID respjson.Field
Stealth respjson.Field
Expand Down Expand Up @@ -580,6 +605,10 @@ type BrowserGetResponse struct {
CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
// Whether the browser session is running in headless mode.
Headless bool `json:"headless" api:"required"`
// Memory allocated to the browser session.
//
// Any of "1GiB", "2GiB", "6GiB", "8GiB", "16GiB".
Memory BrowserMemory `json:"memory" api:"required"`
// Geographic region of the browser session. Fixed once the session is created.
//
// Any of "us-east", "eu-west".
Expand Down Expand Up @@ -658,6 +687,7 @@ type BrowserGetResponse struct {
CdpWsURL respjson.Field
CreatedAt respjson.Field
Headless respjson.Field
Memory respjson.Field
Region respjson.Field
SessionID respjson.Field
Stealth respjson.Field
Expand Down Expand Up @@ -707,6 +737,10 @@ type BrowserUpdateResponse struct {
CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
// Whether the browser session is running in headless mode.
Headless bool `json:"headless" api:"required"`
// Memory allocated to the browser session.
//
// Any of "1GiB", "2GiB", "6GiB", "8GiB", "16GiB".
Memory BrowserMemory `json:"memory" api:"required"`
// Geographic region of the browser session. Fixed once the session is created.
//
// Any of "us-east", "eu-west".
Expand Down Expand Up @@ -785,6 +819,7 @@ type BrowserUpdateResponse struct {
CdpWsURL respjson.Field
CreatedAt respjson.Field
Headless respjson.Field
Memory respjson.Field
Region respjson.Field
SessionID respjson.Field
Stealth respjson.Field
Expand Down Expand Up @@ -834,6 +869,10 @@ type BrowserListResponse struct {
CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
// Whether the browser session is running in headless mode.
Headless bool `json:"headless" api:"required"`
// Memory allocated to the browser session.
//
// Any of "1GiB", "2GiB", "6GiB", "8GiB", "16GiB".
Memory BrowserMemory `json:"memory" api:"required"`
// Geographic region of the browser session. Fixed once the session is created.
//
// Any of "us-east", "eu-west".
Expand Down Expand Up @@ -912,6 +951,7 @@ type BrowserListResponse struct {
CdpWsURL respjson.Field
CreatedAt respjson.Field
Headless respjson.Field
Memory respjson.Field
Region respjson.Field
SessionID respjson.Field
Stealth respjson.Field
Expand Down Expand Up @@ -1029,6 +1069,10 @@ type BrowserNewParams struct {
ChromePolicy map[string]any `json:"chrome_policy,omitzero"`
// List of browser extensions to load into the session. Provide each by id or name.
Extensions []shared.BrowserExtensionParam `json:"extensions,omitzero"`
// Memory for a headful, non-GPU browser session. Defaults to 8GiB.
//
// Any of "8GiB", "16GiB".
Memory BrowserMemoryRequest `json:"memory,omitzero"`
// Network configuration for the browser session. Cannot be changed after creation.
Network BrowserNetworkConfigParam `json:"network,omitzero"`
// Profile selection for the browser session. Provide either id or name. If
Expand Down
1 change: 1 addition & 0 deletions browser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ func TestBrowserNewWithOptionalParams(t *testing.T) {
Headless: kernel.Bool(false),
InvocationID: kernel.String("rr33xuugxj9h0bkf1rdt2bet"),
KioskMode: kernel.Bool(true),
Memory: kernel.BrowserMemoryRequest8GiB,
Name: kernel.String("checkout-flow-1"),
Network: kernel.BrowserNetworkConfigParam{
PrivateHosts: []string{"*.example.ts.net", "100.64.0.0/10"},
Expand Down
5 changes: 5 additions & 0 deletions browserpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,10 @@ type BrowserPoolAcquireResponse struct {
CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
// Whether the browser session is running in headless mode.
Headless bool `json:"headless" api:"required"`
// Memory allocated to the browser session.
//
// Any of "1GiB", "2GiB", "6GiB", "8GiB", "16GiB".
Memory BrowserMemory `json:"memory" api:"required"`
// Geographic region of the browser session. Fixed once the session is created.
//
// Any of "us-east", "eu-west".
Expand Down Expand Up @@ -425,6 +429,7 @@ type BrowserPoolAcquireResponse struct {
CdpWsURL respjson.Field
CreatedAt respjson.Field
Headless respjson.Field
Memory respjson.Field
Region respjson.Field
SessionID respjson.Field
Stealth respjson.Field
Expand Down
3 changes: 2 additions & 1 deletion browsertelemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ import (
"github.com/kernel/kernel-go-sdk/shared/constant"
)

// Stream live telemetry events from a browser session.
// Stream live telemetry events from a browser session, and manage the destinations
// sessions export them to.
//
// BrowserTelemetryService contains methods and other services that help with
// interacting with the kernel API.
Expand Down
6 changes: 4 additions & 2 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ type Client struct {
// Create and manage browser sessions.
Browsers BrowserService
// Create, list, retrieve, and delete browser profiles.
Profiles ProfileService
Auth AuthService
Profiles ProfileService
Auth AuthService
Telemetry TelemetryService
// Create and manage proxy configurations for routing browser traffic.
Proxies ProxyService
// Create, list, retrieve, and delete browser extensions.
Expand Down Expand Up @@ -94,6 +95,7 @@ func NewClient(opts ...option.RequestOption) (r Client) {
r.Browsers = NewBrowserService(opts...)
r.Profiles = NewProfileService(opts...)
r.Auth = NewAuthService(opts...)
r.Telemetry = NewTelemetryService(opts...)
r.Proxies = NewProxyService(opts...)
r.Extensions = NewExtensionService(opts...)
r.BrowserPools = NewBrowserPoolService(opts...)
Expand Down
6 changes: 4 additions & 2 deletions credentialprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ func (r *CredentialProviderService) Test(ctx context.Context, id string, opts ..
type CreateCredentialProviderRequestParam struct {
// Service account token for the provider (e.g., 1Password service account token)
Token string `json:"token" api:"required"`
// Human-readable name for this provider instance (unique per org)
// Human-readable name for this provider instance (unique per org). Surrounding
// whitespace is trimmed and the trimmed value must be non-empty.
Name string `json:"name" api:"required"`
// Type of credential provider
//
Expand Down Expand Up @@ -299,7 +300,8 @@ type UpdateCredentialProviderRequestParam struct {
CacheTtlSeconds param.Opt[int64] `json:"cache_ttl_seconds,omitzero"`
// Whether the provider is enabled for credential lookups
Enabled param.Opt[bool] `json:"enabled,omitzero"`
// Human-readable name for this provider instance
// Human-readable name for this provider instance. Surrounding whitespace is
// trimmed and the trimmed value must be non-empty.
Name param.Opt[string] `json:"name,omitzero"`
// Priority order for credential lookups (lower numbers are checked first)
Priority param.Opt[int64] `json:"priority,omitzero"`
Expand Down
2 changes: 1 addition & 1 deletion internal/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

package internal

const PackageVersion = "0.90.0" // x-release-please-version
const PackageVersion = "0.91.0" // x-release-please-version
5 changes: 5 additions & 0 deletions invocation.go
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,10 @@ type InvocationListBrowsersResponseBrowser struct {
CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"`
// Whether the browser session is running in headless mode.
Headless bool `json:"headless" api:"required"`
// Memory allocated to the browser session.
//
// Any of "1GiB", "2GiB", "6GiB", "8GiB", "16GiB".
Memory BrowserMemory `json:"memory" api:"required"`
// Geographic region of the browser session. Fixed once the session is created.
//
// Any of "us-east", "eu-west".
Expand Down Expand Up @@ -622,6 +626,7 @@ type InvocationListBrowsersResponseBrowser struct {
CdpWsURL respjson.Field
CreatedAt respjson.Field
Headless respjson.Field
Memory respjson.Field
Region respjson.Field
SessionID respjson.Field
Stealth respjson.Field
Expand Down
30 changes: 30 additions & 0 deletions telemetry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

package kernel

import (
"github.com/kernel/kernel-go-sdk/option"
)

// TelemetryService contains methods and other services that help with interacting
// with the kernel API.
//
// Note, unlike clients, this service does not read variables from the environment
// automatically. You should not instantiate this service directly, and instead use
// the [NewTelemetryService] method instead.
type TelemetryService struct {
Options []option.RequestOption
// Stream live telemetry events from a browser session, and manage the destinations
// sessions export them to.
Destinations TelemetryDestinationService
}

// NewTelemetryService generates a new service that applies the given options to
// each request. These options are applied after the parent client's options (if
// there is one), and before any request-specific options.
func NewTelemetryService(opts ...option.RequestOption) (r TelemetryService) {
r = TelemetryService{}
r.Options = opts
r.Destinations = NewTelemetryDestinationService(opts...)
return
}
Loading
Loading