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.62.0"
".": "0.63.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 117
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-e6c711f0d29a7d956cc8ca621440da966c1f1575b1205d01328b1099edf1c517.yml
openapi_spec_hash: c06e7e36de1c6f9b29b54a6e3dc08ee5
config_hash: 36159c262d293fbeacf513ab600a1729
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-8f84f4214a8024d8ea62ee639eeaf2fa26900fabe23c8b87accb41d529a0bf4f.yml
openapi_spec_hash: db14f415438b3d338d9376bddc83a5cf
config_hash: 590bf8cb85948cf1e63b7b5ef60686c8
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 0.63.0 (2026-06-05)

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

### Features

* api: label proxy config oneOf options by type ([abbee19](https://github.com/kernel/kernel-go-sdk/commit/abbee1950d51eda4edfed2c0a13162d55881dcf6))
* **api:** allow setting a custom name on a browser session at create time ([22794dc](https://github.com/kernel/kernel-go-sdk/commit/22794dc349e48a6e9552ad80489b268b9e8aeb02))
* **api:** allow setting key-value tags on a browser session at create time ([12d335f](https://github.com/kernel/kernel-go-sdk/commit/12d335fb3e7079f614e7b8e9c174cf20f4579820))


### Documentation

* **api:** use neutral example for browser session name field ([2319e34](https://github.com/kernel/kernel-go-sdk/commit/2319e34f9b63ba11104b3ee7a4add0db9f7494ae))

## 0.62.0 (2026-06-04)

Full Changelog: [v0.61.0...v0.62.0](https://github.com/kernel/kernel-go-sdk/compare/v0.61.0...v0.62.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.62.0'
go get -u 'github.com/kernel/kernel-go-sdk@v0.63.0'
```

<!-- x-release-please-end -->
Expand Down
5 changes: 5 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,16 @@ Methods:

# Browsers

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#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#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#BrowserUsage">BrowserUsage</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/github.com/kernel/kernel-go-sdk">kernel</a>.<a href="https://pkg.go.dev/github.com/kernel/kernel-go-sdk#Tags">Tags</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#BrowserNewResponse">BrowserNewResponse</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#BrowserGetResponse">BrowserGetResponse</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#BrowserUpdateResponse">BrowserUpdateResponse</a>
Expand Down
43 changes: 42 additions & 1 deletion browser.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,8 @@ func (r *Profile) UnmarshalJSON(data []byte) error {
return apijson.UnmarshalRoot(data, r)
}

type Tags map[string]string

type BrowserNewResponse struct {
// Websocket URL for Chrome DevTools Protocol connections to the browser session
CdpWsURL string `json:"cdp_ws_url" api:"required"`
Expand Down Expand Up @@ -265,6 +267,8 @@ type BrowserNewResponse struct {
GPU bool `json:"gpu"`
// Whether the browser session is running in kiosk mode.
KioskMode bool `json:"kiosk_mode"`
// Human-readable name of the browser session, if one was set at creation.
Name string `json:"name"`
// Browser pool this session was acquired from, if any.
Pool BrowserPoolRef `json:"pool"`
// Browser profile metadata.
Expand All @@ -277,6 +281,9 @@ type BrowserNewResponse struct {
// timeout) are silently dropped. Captures what was requested, not what the browser
// actually loaded.
StartURL string `json:"start_url"`
// User-defined key-value tags that were set on this browser session, if any.
// Echoed back when present.
Tags Tags `json:"tags"`
// Active telemetry configuration for the session, if any.
Telemetry BrowserTelemetryConfig `json:"telemetry" api:"nullable"`
// Session usage metrics.
Expand Down Expand Up @@ -309,10 +316,12 @@ type BrowserNewResponse struct {
DeletedAt respjson.Field
GPU respjson.Field
KioskMode respjson.Field
Name respjson.Field
Pool respjson.Field
Profile respjson.Field
ProxyID respjson.Field
StartURL respjson.Field
Tags respjson.Field
Telemetry respjson.Field
Usage respjson.Field
Viewport respjson.Field
Expand Down Expand Up @@ -358,6 +367,8 @@ type BrowserGetResponse struct {
GPU bool `json:"gpu"`
// Whether the browser session is running in kiosk mode.
KioskMode bool `json:"kiosk_mode"`
// Human-readable name of the browser session, if one was set at creation.
Name string `json:"name"`
// Browser pool this session was acquired from, if any.
Pool BrowserPoolRef `json:"pool"`
// Browser profile metadata.
Expand All @@ -370,6 +381,9 @@ type BrowserGetResponse struct {
// timeout) are silently dropped. Captures what was requested, not what the browser
// actually loaded.
StartURL string `json:"start_url"`
// User-defined key-value tags that were set on this browser session, if any.
// Echoed back when present.
Tags Tags `json:"tags"`
// Active telemetry configuration for the session, if any.
Telemetry BrowserTelemetryConfig `json:"telemetry" api:"nullable"`
// Session usage metrics.
Expand Down Expand Up @@ -402,10 +416,12 @@ type BrowserGetResponse struct {
DeletedAt respjson.Field
GPU respjson.Field
KioskMode respjson.Field
Name respjson.Field
Pool respjson.Field
Profile respjson.Field
ProxyID respjson.Field
StartURL respjson.Field
Tags respjson.Field
Telemetry respjson.Field
Usage respjson.Field
Viewport respjson.Field
Expand Down Expand Up @@ -451,6 +467,8 @@ type BrowserUpdateResponse struct {
GPU bool `json:"gpu"`
// Whether the browser session is running in kiosk mode.
KioskMode bool `json:"kiosk_mode"`
// Human-readable name of the browser session, if one was set at creation.
Name string `json:"name"`
// Browser pool this session was acquired from, if any.
Pool BrowserPoolRef `json:"pool"`
// Browser profile metadata.
Expand All @@ -463,6 +481,9 @@ type BrowserUpdateResponse struct {
// timeout) are silently dropped. Captures what was requested, not what the browser
// actually loaded.
StartURL string `json:"start_url"`
// User-defined key-value tags that were set on this browser session, if any.
// Echoed back when present.
Tags Tags `json:"tags"`
// Active telemetry configuration for the session, if any.
Telemetry BrowserTelemetryConfig `json:"telemetry" api:"nullable"`
// Session usage metrics.
Expand Down Expand Up @@ -495,10 +516,12 @@ type BrowserUpdateResponse struct {
DeletedAt respjson.Field
GPU respjson.Field
KioskMode respjson.Field
Name respjson.Field
Pool respjson.Field
Profile respjson.Field
ProxyID respjson.Field
StartURL respjson.Field
Tags respjson.Field
Telemetry respjson.Field
Usage respjson.Field
Viewport respjson.Field
Expand Down Expand Up @@ -544,6 +567,8 @@ type BrowserListResponse struct {
GPU bool `json:"gpu"`
// Whether the browser session is running in kiosk mode.
KioskMode bool `json:"kiosk_mode"`
// Human-readable name of the browser session, if one was set at creation.
Name string `json:"name"`
// Browser pool this session was acquired from, if any.
Pool BrowserPoolRef `json:"pool"`
// Browser profile metadata.
Expand All @@ -556,6 +581,9 @@ type BrowserListResponse struct {
// timeout) are silently dropped. Captures what was requested, not what the browser
// actually loaded.
StartURL string `json:"start_url"`
// User-defined key-value tags that were set on this browser session, if any.
// Echoed back when present.
Tags Tags `json:"tags"`
// Active telemetry configuration for the session, if any.
Telemetry BrowserTelemetryConfig `json:"telemetry" api:"nullable"`
// Session usage metrics.
Expand Down Expand Up @@ -588,10 +616,12 @@ type BrowserListResponse struct {
DeletedAt respjson.Field
GPU respjson.Field
KioskMode respjson.Field
Name respjson.Field
Pool respjson.Field
Profile respjson.Field
ProxyID respjson.Field
StartURL respjson.Field
Tags respjson.Field
Telemetry respjson.Field
Usage respjson.Field
Viewport respjson.Field
Expand Down Expand Up @@ -645,6 +675,10 @@ type BrowserNewParams struct {
// If true, launches the browser in kiosk mode to hide address bar and tabs in live
// view.
KioskMode param.Opt[bool] `json:"kiosk_mode,omitzero"`
// Optional human-readable name for the browser session, used to find it later in
// the dashboard. Must be unique among active sessions within the project. Set at
// creation time only.
Name param.Opt[string] `json:"name,omitzero"`
// Optional proxy to associate to the browser session. Must reference a proxy
// belonging to the caller's org.
ProxyID param.Opt[string] `json:"proxy_id,omitzero"`
Expand Down Expand Up @@ -678,6 +712,9 @@ type BrowserNewParams struct {
// specified, the matching profile will be loaded into the browser session.
// Profiles must be created beforehand.
Profile shared.BrowserProfileParam `json:"profile,omitzero"`
// Optional user-defined key-value tags for the browser session, used to find and
// group sessions later. Set at creation time only. Up to 50 pairs.
Tags Tags `json:"tags,omitzero"`
// Initial browser window size in pixels with optional refresh rate. If omitted,
// image defaults apply (1920x1080@25). For GPU images, the default is
// 1920x1080@60. Arbitrary viewport dimensions and refresh rates are accepted.
Expand Down Expand Up @@ -823,13 +860,17 @@ type BrowserListParams struct {
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
// Number of results to skip. Defaults to 0.
Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
// Search browsers by session ID, profile ID, proxy ID, or pool name.
// Search browsers by name, session ID, profile ID, proxy ID, or pool name.
Query param.Opt[string] `query:"query,omitzero" json:"-"`
// Filter sessions by status. "active" returns only active sessions (default),
// "deleted" returns only soft-deleted sessions, "all" returns both.
//
// Any of "active", "deleted", "all".
Status BrowserListParamsStatus `query:"status,omitzero" json:"-"`
// Filter sessions by tag key-value pairs using deepObject style, e.g.
// ?tags[team]=backend&tags[env]=staging. Multiple pairs are ANDed: a session must
// match every supplied pair exactly.
Tags map[string]string `query:"tags,omitzero" json:"-"`
paramObj
}

Expand Down
8 changes: 8 additions & 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),
Name: kernel.String("checkout-flow-1"),
Profile: shared.BrowserProfileParam{
ID: kernel.String("id"),
Name: kernel.String("name"),
Expand All @@ -49,6 +50,10 @@ func TestBrowserNewWithOptionalParams(t *testing.T) {
ProxyID: kernel.String("proxy_id"),
StartURL: kernel.String("https://example.com"),
Stealth: kernel.Bool(true),
Tags: kernel.Tags{
"team": "backend",
"env": "staging",
},
Telemetry: kernel.BrowserNewParamsTelemetry{
Browser: kernel.BrowserTelemetryCategoriesConfigParam{
Console: kernel.BrowserTelemetryCategoryConfigParam{
Expand Down Expand Up @@ -190,6 +195,9 @@ func TestBrowserListWithOptionalParams(t *testing.T) {
Offset: kernel.Int(0),
Query: kernel.String("query"),
Status: kernel.BrowserListParamsStatusActive,
Tags: map[string]string{
"foo": "string",
},
})
if err != nil {
var apierr *kernel.Error
Expand Down
7 changes: 7 additions & 0 deletions browserpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,8 @@ type BrowserPoolAcquireResponse struct {
GPU bool `json:"gpu"`
// Whether the browser session is running in kiosk mode.
KioskMode bool `json:"kiosk_mode"`
// Human-readable name of the browser session, if one was set at creation.
Name string `json:"name"`
// Browser pool this session was acquired from, if any.
Pool BrowserPoolRef `json:"pool"`
// Browser profile metadata.
Expand All @@ -308,6 +310,9 @@ type BrowserPoolAcquireResponse struct {
// timeout) are silently dropped. Captures what was requested, not what the browser
// actually loaded.
StartURL string `json:"start_url"`
// User-defined key-value tags that were set on this browser session, if any.
// Echoed back when present.
Tags Tags `json:"tags"`
// Active telemetry configuration for the session, if any.
Telemetry BrowserTelemetryConfig `json:"telemetry" api:"nullable"`
// Session usage metrics.
Expand Down Expand Up @@ -340,10 +345,12 @@ type BrowserPoolAcquireResponse struct {
DeletedAt respjson.Field
GPU respjson.Field
KioskMode respjson.Field
Name respjson.Field
Pool respjson.Field
Profile respjson.Field
ProxyID respjson.Field
StartURL respjson.Field
Tags respjson.Field
Telemetry respjson.Field
Usage respjson.Field
Viewport respjson.Field
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.62.0" // x-release-please-version
const PackageVersion = "0.63.0" // x-release-please-version
7 changes: 7 additions & 0 deletions invocation.go
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,8 @@ type InvocationListBrowsersResponseBrowser struct {
GPU bool `json:"gpu"`
// Whether the browser session is running in kiosk mode.
KioskMode bool `json:"kiosk_mode"`
// Human-readable name of the browser session, if one was set at creation.
Name string `json:"name"`
// Browser pool this session was acquired from, if any.
Pool BrowserPoolRef `json:"pool"`
// Browser profile metadata.
Expand All @@ -580,6 +582,9 @@ type InvocationListBrowsersResponseBrowser struct {
// timeout) are silently dropped. Captures what was requested, not what the browser
// actually loaded.
StartURL string `json:"start_url"`
// User-defined key-value tags that were set on this browser session, if any.
// Echoed back when present.
Tags Tags `json:"tags"`
// Active telemetry configuration for the session, if any.
Telemetry BrowserTelemetryConfig `json:"telemetry" api:"nullable"`
// Session usage metrics.
Expand Down Expand Up @@ -612,10 +617,12 @@ type InvocationListBrowsersResponseBrowser struct {
DeletedAt respjson.Field
GPU respjson.Field
KioskMode respjson.Field
Name respjson.Field
Pool respjson.Field
Profile respjson.Field
ProxyID respjson.Field
StartURL respjson.Field
Tags respjson.Field
Telemetry respjson.Field
Usage respjson.Field
Viewport respjson.Field
Expand Down
Loading
Loading