From db5ae4038243116ff073d2011d6905c6ec7926df Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sat, 1 Aug 2026 23:38:36 +0000
Subject: [PATCH 1/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 3b484e3..2aeac55 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 37
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-758c3a2fbd5b7be61c8e6e0ad2e6a5ec30695747bb675960d888c497647d13d7.yml
-openapi_spec_hash: 00002d90bde02f67e174368ae470c597
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-85694668707cde32f7d8472660bc5760a2f369751d8cf19690778ffad767b0fa.yml
+openapi_spec_hash: 5b688312bf5e9a5468a83618ec635ada
config_hash: 2bea1743c84d63bd61f8501a6ea63065
From 5629cee4a4d5c2b33091ad93b20996d85bf0cae8 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Sun, 2 Aug 2026 08:32:19 +0000
Subject: [PATCH 2/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 2aeac55..490472d 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 37
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-85694668707cde32f7d8472660bc5760a2f369751d8cf19690778ffad767b0fa.yml
-openapi_spec_hash: 5b688312bf5e9a5468a83618ec635ada
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-386f0ec51516e1f060c82287c99be4ecdee9eb4753e1375b6c5b27488e63d4c7.yml
+openapi_spec_hash: b514ae48cf1c7bcb2ed3a4d7853cbfb5
config_hash: 2bea1743c84d63bd61f8501a6ea63065
From 3f33f63c4d7e19df44bab3e1a4bcbf466286613b Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 3 Aug 2026 03:23:33 +0000
Subject: [PATCH 3/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 490472d..790f64f 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 37
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-386f0ec51516e1f060c82287c99be4ecdee9eb4753e1375b6c5b27488e63d4c7.yml
-openapi_spec_hash: b514ae48cf1c7bcb2ed3a4d7853cbfb5
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-0c273d87106b3f8920d529d9964d7be6a23613c7553f48d67732e24571fbbf7b.yml
+openapi_spec_hash: f1fb4082f153c9195fee451ebf5d46ba
config_hash: 2bea1743c84d63bd61f8501a6ea63065
From 15dd54a01998022e90832e47e486c2caf4987d41 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 5 Aug 2026 08:40:52 +0000
Subject: [PATCH 4/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 790f64f..29f15de 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 37
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-0c273d87106b3f8920d529d9964d7be6a23613c7553f48d67732e24571fbbf7b.yml
-openapi_spec_hash: f1fb4082f153c9195fee451ebf5d46ba
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-f2101addc171cf732a879e4bcad5bc6cfe8cec4349c62617c12c09331a883a22.yml
+openapi_spec_hash: a143e7e4842279a61807b433ef17e261
config_hash: 2bea1743c84d63bd61f8501a6ea63065
From 14a34f305bc348ca173a8e25bf9810cedb1256ec Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 5 Aug 2026 09:40:31 +0000
Subject: [PATCH 5/7] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 29f15de..8e45986 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 37
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-f2101addc171cf732a879e4bcad5bc6cfe8cec4349c62617c12c09331a883a22.yml
-openapi_spec_hash: a143e7e4842279a61807b433ef17e261
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-eac90d0a78d6166dc64c49ad4cd44883ab0bd357063ff09e60ed78085e2bde3c.yml
+openapi_spec_hash: ab91f77e7c9d992400cbc7fc8a9e76c1
config_hash: 2bea1743c84d63bd61f8501a6ea63065
From bbf6510a615c1bb20ef80fe594b62e9faa1c3cd6 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 5 Aug 2026 10:12:31 +0000
Subject: [PATCH 6/7] feat(api): manual updates
---
.stats.yml | 6 +--
api.md | 2 +
brand.go | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++
brand_test.go | 26 +++++++++++++
4 files changed, 131 insertions(+), 3 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 8e45986..74e73bc 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 37
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-eac90d0a78d6166dc64c49ad4cd44883ab0bd357063ff09e60ed78085e2bde3c.yml
+configured_endpoints: 38
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-155e4761d62255841349c0f8a01b0a9c463ea1d1f2d6c4fd8d1a75c8bef6f226.yml
openapi_spec_hash: ab91f77e7c9d992400cbc7fc8a9e76c1
-config_hash: 2bea1743c84d63bd61f8501a6ea63065
+config_hash: bff282047fafdad771fb7ec685f56944
diff --git a/api.md b/api.md
index 8cc5939..69d7939 100644
--- a/api.md
+++ b/api.md
@@ -56,11 +56,13 @@ Response Types:
- contextdev.BrandGetResponse
- contextdev.BrandGetSimplifiedResponse
+- contextdev.BrandSearchResponse
Methods:
- client.Brand.Get(ctx context.Context, body contextdev.BrandGetParams) (\*contextdev.BrandGetResponse, error)
- client.Brand.GetSimplified(ctx context.Context, query contextdev.BrandGetSimplifiedParams) (\*contextdev.BrandGetSimplifiedResponse, error)
+- client.Brand.Search(ctx context.Context, query contextdev.BrandSearchParams) (\*contextdev.BrandSearchResponse, error)
# Industry
diff --git a/brand.go b/brand.go
index 431d9e6..f979a30 100644
--- a/brand.go
+++ b/brand.go
@@ -58,6 +58,20 @@ func (r *BrandService) GetSimplified(ctx context.Context, query BrandGetSimplifi
return res, err
}
+// Search brands by name or domain and get back up to 10 lightweight matches
+// (domain, name, logo), most popular first: by Tranco rank, then market cap for
+// brands outside the Tranco list, with text relevance breaking ties. Matching is
+// prefix-based with no typo tolerance, so it is suited to autocomplete. Only
+// brands already in the Context.dev index are returned — use /brand/retrieve to
+// fetch (and index) a specific domain. Free on Pro and Scale plans; costs 1 credit
+// per request on the Free and Starter plans.
+func (r *BrandService) Search(ctx context.Context, query BrandSearchParams, opts ...option.RequestOption) (res *BrandSearchResponse, err error) {
+ opts = slices.Concat(r.options, opts)
+ path := "brand/search"
+ err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
+ return res, err
+}
+
type BrandGetResponse struct {
// Detailed brand information
Brand BrandGetResponseBrand `json:"brand"`
@@ -861,6 +875,73 @@ func (r *BrandGetSimplifiedResponseKeyMetadata) UnmarshalJSON(data []byte) error
return apijson.UnmarshalRoot(data, r)
}
+type BrandSearchResponse struct {
+ // Up to 10 matching brands, most popular first. Empty when nothing matches.
+ Results []BrandSearchResponseResult `json:"results" api:"required"`
+ // Metadata about the API key used for the request. Included in every response
+ // whenever a valid API key is provided, even when the response status is not 200.
+ KeyMetadata BrandSearchResponseKeyMetadata `json:"key_metadata"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Results respjson.Field
+ KeyMetadata respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r BrandSearchResponse) RawJSON() string { return r.JSON.raw }
+func (r *BrandSearchResponse) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+type BrandSearchResponseResult struct {
+ // The brand's domain.
+ Domain string `json:"domain" api:"required"`
+ // Logo link URL that serves the brand's logo, generated per request for the
+ // calling organization.
+ Logo string `json:"logo" api:"required"`
+ // The brand's name. Empty string when unknown.
+ Name string `json:"name" api:"required"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ Domain respjson.Field
+ Logo respjson.Field
+ Name respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r BrandSearchResponseResult) RawJSON() string { return r.JSON.raw }
+func (r *BrandSearchResponseResult) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+// Metadata about the API key used for the request. Included in every response
+// whenever a valid API key is provided, even when the response status is not 200.
+type BrandSearchResponseKeyMetadata struct {
+ // The number of credits consumed by this request.
+ CreditsConsumed int64 `json:"credits_consumed" api:"required"`
+ // The number of credits remaining for your organization after this request.
+ CreditsRemaining int64 `json:"credits_remaining" api:"required"`
+ // JSON contains metadata for fields, check presence with [respjson.Field.Valid].
+ JSON struct {
+ CreditsConsumed respjson.Field
+ CreditsRemaining respjson.Field
+ ExtraFields map[string]respjson.Field
+ raw string
+ } `json:"-"`
+}
+
+// Returns the unmodified JSON received from the API
+func (r BrandSearchResponseKeyMetadata) RawJSON() string { return r.JSON.raw }
+func (r *BrandSearchResponseKeyMetadata) UnmarshalJSON(data []byte) error {
+ return apijson.UnmarshalRoot(data, r)
+}
+
type BrandGetParams struct {
//
@@ -1337,3 +1418,22 @@ const (
BrandGetSimplifiedParamsThemeLight BrandGetSimplifiedParamsTheme = "light"
BrandGetSimplifiedParamsThemeDark BrandGetSimplifiedParamsTheme = "dark"
)
+
+type BrandSearchParams struct {
+ // Search term, matched against brand names and domains by prefix (e.g. 'nike',
+ // 'nike.com', 'nik').
+ Query string `query:"query" api:"required" json:"-"`
+ // Optional comma-separated caller-defined tags for tracking this request. Tags are
+ // recorded on the request's usage log and can be used to filter usage on the
+ // dashboard usage page. Up to 20 tags, each 1-50 characters.
+ Tags []string `query:"tags,omitzero" json:"-"`
+ paramObj
+}
+
+// URLQuery serializes [BrandSearchParams]'s query parameters as `url.Values`.
+func (r BrandSearchParams) URLQuery() (v url.Values, err error) {
+ return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+ ArrayFormat: apiquery.ArrayQueryFormatComma,
+ NestedFormat: apiquery.NestedQueryFormatBrackets,
+ })
+}
diff --git a/brand_test.go b/brand_test.go
index 591643e..2c59452 100644
--- a/brand_test.go
+++ b/brand_test.go
@@ -73,3 +73,29 @@ func TestBrandGetSimplifiedWithOptionalParams(t *testing.T) {
t.Fatalf("err should be nil: %s", err.Error())
}
}
+
+func TestBrandSearchWithOptionalParams(t *testing.T) {
+ t.Skip("Mock server tests are disabled")
+ baseURL := "http://localhost:4010"
+ if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
+ baseURL = envURL
+ }
+ if !testutil.CheckTestServer(t, baseURL) {
+ return
+ }
+ client := contextdev.NewClient(
+ option.WithBaseURL(baseURL),
+ option.WithAPIKey("My API Key"),
+ )
+ _, err := client.Brand.Search(context.TODO(), contextdev.BrandSearchParams{
+ Query: "x",
+ Tags: []string{"production", "team-alpha"},
+ })
+ if err != nil {
+ var apierr *contextdev.Error
+ if errors.As(err, &apierr) {
+ t.Log(string(apierr.DumpRequest(true)))
+ }
+ t.Fatalf("err should be nil: %s", err.Error())
+ }
+}
From 7760ff29e58f74665b0a076a1018cb960533600a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 5 Aug 2026 10:12:52 +0000
Subject: [PATCH 7/7] release: 2.8.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
README.md | 2 +-
internal/version.go | 2 +-
4 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index d1328ca..64f9ff4 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.7.0"
+ ".": "2.8.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f635b52..643ebcb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 2.8.0 (2026-08-05)
+
+Full Changelog: [v2.7.0...v2.8.0](https://github.com/context-dot-dev/context-go-sdk/compare/v2.7.0...v2.8.0)
+
+### Features
+
+* **api:** manual updates ([bbf6510](https://github.com/context-dot-dev/context-go-sdk/commit/bbf6510a615c1bb20ef80fe594b62e9faa1c3cd6))
+
## 2.7.0 (2026-08-01)
Full Changelog: [v2.6.0...v2.7.0](https://github.com/context-dot-dev/context-go-sdk/compare/v2.6.0...v2.7.0)
diff --git a/README.md b/README.md
index 46b184b..9532e29 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ Or to pin the version:
```sh
-go get -u 'github.com/context-dot-dev/context-go-sdk@v2.7.0'
+go get -u 'github.com/context-dot-dev/context-go-sdk@v2.8.0'
```
diff --git a/internal/version.go b/internal/version.go
index 166fc82..ac38466 100644
--- a/internal/version.go
+++ b/internal/version.go
@@ -2,4 +2,4 @@
package internal
-const PackageVersion = "2.7.0" // x-release-please-version
+const PackageVersion = "2.8.0" // x-release-please-version