diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 4c56f2a..57726a4 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.64.0"
+ ".": "0.65.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index d9e9753..dcde96d 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 117
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-9d489e3e43edfa64a754d4281241718e01c85d9a82ef3687df12bbd3c4ff5b42.yml
-openapi_spec_hash: a953cafb7f40ec8495dbd7df8bab8bad
-config_hash: bb7acce8576a50dd449b0c8f58ef0f1d
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-08c2d6a44f4cdcbfb6803a3043fdc1a3e33911dec4652cb3a870f01bc584421f.yml
+openapi_spec_hash: c816491451347eb93b793cddf6a78648
+config_hash: 9e45c27425021d49b5391f5cc980b046
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e0a1bc..a63adb2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Changelog
+## 0.65.0 (2026-06-08)
+
+Full Changelog: [v0.64.0...v0.65.0](https://github.com/kernel/kernel-go-sdk/compare/v0.64.0...v0.65.0)
+
+### Features
+
+* **api:** allow setting a name and tags on a pool-acquired browser session ([ef64773](https://github.com/kernel/kernel-go-sdk/commit/ef647732782e8bc382a06d02377f46edd8ebc2b2))
+* **api:** support id-or-name lookup on browser session get/patch/delete ([193727b](https://github.com/kernel/kernel-go-sdk/commit/193727b6134db7c2f97d5170ef06c2b0692b45c8))
+
## 0.64.0 (2026-06-05)
Full Changelog: [v0.63.0...v0.64.0](https://github.com/kernel/kernel-go-sdk/compare/v0.63.0...v0.64.0)
diff --git a/README.md b/README.md
index b5c1ff0..1530141 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.64.0'
+go get -u 'github.com/kernel/kernel-go-sdk@v0.65.0'
```
diff --git a/api.md b/api.md
index 727c43c..9eb99c1 100644
--- a/api.md
+++ b/api.md
@@ -87,11 +87,11 @@ Response Types:
Methods:
- client.Browsers.New(ctx context.Context, body kernel.BrowserNewParams) (\*kernel.BrowserNewResponse, error)
-- client.Browsers.Get(ctx context.Context, id string, query kernel.BrowserGetParams) (\*kernel.BrowserGetResponse, error)
-- client.Browsers.Update(ctx context.Context, id string, body kernel.BrowserUpdateParams) (\*kernel.BrowserUpdateResponse, error)
+- client.Browsers.Get(ctx context.Context, idOrName string, query kernel.BrowserGetParams) (\*kernel.BrowserGetResponse, error)
+- client.Browsers.Update(ctx context.Context, idOrName string, body kernel.BrowserUpdateParams) (\*kernel.BrowserUpdateResponse, error)
- client.Browsers.List(ctx context.Context, query kernel.BrowserListParams) (\*pagination.OffsetPagination[kernel.BrowserListResponse], error)
- client.Browsers.Curl(ctx context.Context, id string, body kernel.BrowserCurlParams) (\*kernel.BrowserCurlResponse, error)
-- client.Browsers.DeleteByID(ctx context.Context, id string) error
+- client.Browsers.DeleteByID(ctx context.Context, idOrName string) error
- client.Browsers.LoadExtensions(ctx context.Context, id string, body kernel.BrowserLoadExtensionsParams) error
## Telemetry
diff --git a/browser.go b/browser.go
index ebd211a..cfb8067 100644
--- a/browser.go
+++ b/browser.go
@@ -76,25 +76,25 @@ func (r *BrowserService) New(ctx context.Context, body BrowserNewParams, opts ..
}
// Get information about a browser session.
-func (r *BrowserService) Get(ctx context.Context, id string, query BrowserGetParams, opts ...option.RequestOption) (res *BrowserGetResponse, err error) {
+func (r *BrowserService) Get(ctx context.Context, idOrName string, query BrowserGetParams, opts ...option.RequestOption) (res *BrowserGetResponse, err error) {
opts = slices.Concat(r.Options, opts)
- if id == "" {
- err = errors.New("missing required id parameter")
+ if idOrName == "" {
+ err = errors.New("missing required id_or_name parameter")
return nil, err
}
- path := fmt.Sprintf("browsers/%s", id)
+ path := fmt.Sprintf("browsers/%s", idOrName)
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
return res, err
}
// Update a browser session.
-func (r *BrowserService) Update(ctx context.Context, id string, body BrowserUpdateParams, opts ...option.RequestOption) (res *BrowserUpdateResponse, err error) {
+func (r *BrowserService) Update(ctx context.Context, idOrName string, body BrowserUpdateParams, opts ...option.RequestOption) (res *BrowserUpdateResponse, err error) {
opts = slices.Concat(r.Options, opts)
- if id == "" {
- err = errors.New("missing required id parameter")
+ if idOrName == "" {
+ err = errors.New("missing required id_or_name parameter")
return nil, err
}
- path := fmt.Sprintf("browsers/%s", id)
+ path := fmt.Sprintf("browsers/%s", idOrName)
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPatch, path, body, &res, opts...)
return res, err
}
@@ -138,15 +138,15 @@ func (r *BrowserService) Curl(ctx context.Context, id string, body BrowserCurlPa
return res, err
}
-// Delete a browser session by ID
-func (r *BrowserService) DeleteByID(ctx context.Context, id string, opts ...option.RequestOption) (err error) {
+// Delete a browser session by ID or name
+func (r *BrowserService) DeleteByID(ctx context.Context, idOrName string, opts ...option.RequestOption) (err error) {
opts = slices.Concat(r.Options, opts)
opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
- if id == "" {
- err = errors.New("missing required id parameter")
+ if idOrName == "" {
+ err = errors.New("missing required id_or_name parameter")
return err
}
- path := fmt.Sprintf("browsers/%s", id)
+ path := fmt.Sprintf("browsers/%s", idOrName)
err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, nil, opts...)
return err
}
diff --git a/browserpool.go b/browserpool.go
index 2d510c7..dc4360f 100644
--- a/browserpool.go
+++ b/browserpool.go
@@ -532,6 +532,15 @@ type BrowserPoolAcquireParams struct {
// calculated time it would take to fill the pool at the currently configured fill
// rate.
AcquireTimeoutSeconds param.Opt[int64] `json:"acquire_timeout_seconds,omitzero"`
+ // Optional human-readable name for the acquired browser session, used to find it
+ // later in the dashboard. Must be unique among active sessions within the pool's
+ // project. Applies to this lease only and is cleared when the browser is released
+ // back to the pool.
+ Name param.Opt[string] `json:"name,omitzero"`
+ // Optional user-defined key-value tags for the acquired browser session, used to
+ // find and group sessions later. Applies to this lease only and are cleared when
+ // the browser is released back to the pool. Up to 50 pairs.
+ Tags Tags `json:"tags,omitzero"`
paramObj
}
diff --git a/browserpool_test.go b/browserpool_test.go
index 39d8597..6748207 100644
--- a/browserpool_test.go
+++ b/browserpool_test.go
@@ -215,6 +215,11 @@ func TestBrowserPoolAcquireWithOptionalParams(t *testing.T) {
"id_or_name",
kernel.BrowserPoolAcquireParams{
AcquireTimeoutSeconds: kernel.Int(0),
+ Name: kernel.String("checkout-flow-1"),
+ Tags: kernel.Tags{
+ "team": "backend",
+ "env": "staging",
+ },
},
)
if err != nil {
diff --git a/internal/version.go b/internal/version.go
index bc33403..5d1e9f9 100644
--- a/internal/version.go
+++ b/internal/version.go
@@ -2,4 +2,4 @@
package internal
-const PackageVersion = "0.64.0" // x-release-please-version
+const PackageVersion = "0.65.0" // x-release-please-version