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.1.0"
".": "0.2.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: 20
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev%2Fcontext.dev-c5d5abb4b31f6e352e3e02b47120e3f444377c1c564f141ebe0988b86ba5932e.yml
openapi_spec_hash: 8ef4803fbe33ae6472a4b8f660be7921
config_hash: a144af00e5e74176674d0ea954cc02c5
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev%2Fcontext.dev-c2e94e0c758b1aaba120c2a4231842fff0a120acc471fe24c7a81221e13a0482.yml
openapi_spec_hash: aabc231b46b1ca3375882f96c378c665
config_hash: ab5135cc119f83ae2821f9445ed99d16
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## 0.2.0 (2026-03-18)

Full Changelog: [v0.1.0...v0.2.0](https://github.com/brand-dot-dev/context-ruby-sdk/compare/v0.1.0...v0.2.0)

### Features

* **api:** api update ([ff1db16](https://github.com/brand-dot-dev/context-ruby-sdk/commit/ff1db1692a06315279532c93a05722223cb2c7ee))
* **api:** manual updates ([d120a5d](https://github.com/brand-dot-dev/context-ruby-sdk/commit/d120a5dde6665acced2c75394beb6910389e344e))
* **api:** manual updates ([fe32a5e](https://github.com/brand-dot-dev/context-ruby-sdk/commit/fe32a5e431bf152d8b0966f9927efcd8ebc3b5c1))

## 0.1.0 (2026-03-18)

Full Changelog: [v0.0.2...v0.1.0](https://github.com/brand-dot-dev/context-ruby-sdk/compare/v0.0.2...v0.1.0)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
context.dev (0.1.0)
context.dev (0.2.0)
cgi
connection_pool

Expand Down
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
<!-- x-release-please-start-version -->

```ruby
gem "context.dev", "~> 0.1.0"
gem "context.dev", "~> 0.2.0"
```

<!-- x-release-please-end -->
Expand Down Expand Up @@ -206,25 +206,25 @@ context_dev.brand.retrieve(**params)
Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:

```ruby
# :albanian
puts(ContextDev::BrandRetrieveParams::ForceLanguage::ALBANIAN)
# :true
puts(ContextDev::WebScreenshotParams::FullScreenshot::TRUE)

# Revealed type: `T.all(ContextDev::BrandRetrieveParams::ForceLanguage, Symbol)`
T.reveal_type(ContextDev::BrandRetrieveParams::ForceLanguage::ALBANIAN)
# Revealed type: `T.all(ContextDev::WebScreenshotParams::FullScreenshot, Symbol)`
T.reveal_type(ContextDev::WebScreenshotParams::FullScreenshot::TRUE)
```

Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:

```ruby
# Using the enum constants preserves the tagged type information:
context_dev.brand.retrieve(
force_language: ContextDev::BrandRetrieveParams::ForceLanguage::ALBANIAN,
context_dev.web.screenshot(
full_screenshot: ContextDev::WebScreenshotParams::FullScreenshot::TRUE,
# …
)

# Literal values are also permissible:
context_dev.brand.retrieve(
force_language: :albanian,
context_dev.web.screenshot(
full_screenshot: :true,
# …
)
```
Expand Down
57 changes: 31 additions & 26 deletions lib/context_dev.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,14 @@
require_relative "context_dev/internal/transport/base_client"
require_relative "context_dev/internal/transport/pooled_net_requester"
require_relative "context_dev/client"
require_relative "context_dev/models/brand_ai_product_params"
require_relative "context_dev/models/brand_ai_product_response"
require_relative "context_dev/models/brand_ai_products_params"
require_relative "context_dev/models/brand_ai_products_response"
require_relative "context_dev/models/brand_ai_query_params"
require_relative "context_dev/models/brand_ai_query_response"
require_relative "context_dev/models/brand_fonts_params"
require_relative "context_dev/models/brand_fonts_response"
require_relative "context_dev/models/ai_ai_query_params"
require_relative "context_dev/models/ai_ai_query_response"
require_relative "context_dev/models/ai_extract_product_params"
require_relative "context_dev/models/ai_extract_product_response"
require_relative "context_dev/models/ai_extract_products_params"
require_relative "context_dev/models/ai_extract_products_response"
require_relative "context_dev/models/brand_identify_from_transaction_params"
require_relative "context_dev/models/brand_identify_from_transaction_response"
require_relative "context_dev/models/brand_prefetch_by_email_params"
require_relative "context_dev/models/brand_prefetch_by_email_response"
require_relative "context_dev/models/brand_prefetch_params"
require_relative "context_dev/models/brand_prefetch_response"
require_relative "context_dev/models/brand_retrieve_by_email_params"
require_relative "context_dev/models/brand_retrieve_by_email_response"
require_relative "context_dev/models/brand_retrieve_by_isin_params"
Expand All @@ -74,23 +68,34 @@
require_relative "context_dev/models/brand_retrieve_by_name_response"
require_relative "context_dev/models/brand_retrieve_by_ticker_params"
require_relative "context_dev/models/brand_retrieve_by_ticker_response"
require_relative "context_dev/models/brand_retrieve_naics_params"
require_relative "context_dev/models/brand_retrieve_naics_response"
require_relative "context_dev/models/brand_retrieve_params"
require_relative "context_dev/models/brand_retrieve_response"
require_relative "context_dev/models/brand_retrieve_simplified_params"
require_relative "context_dev/models/brand_retrieve_simplified_response"
require_relative "context_dev/models/brand_screenshot_params"
require_relative "context_dev/models/brand_screenshot_response"
require_relative "context_dev/models/brand_styleguide_params"
require_relative "context_dev/models/brand_styleguide_response"
require_relative "context_dev/models/brand_web_scrape_html_params"
require_relative "context_dev/models/brand_web_scrape_html_response"
require_relative "context_dev/models/brand_web_scrape_images_params"
require_relative "context_dev/models/brand_web_scrape_images_response"
require_relative "context_dev/models/brand_web_scrape_md_params"
require_relative "context_dev/models/brand_web_scrape_md_response"
require_relative "context_dev/models/brand_web_scrape_sitemap_params"
require_relative "context_dev/models/brand_web_scrape_sitemap_response"
require_relative "context_dev/models/industry_retrieve_naics_params"
require_relative "context_dev/models/industry_retrieve_naics_response"
require_relative "context_dev/models/style_extract_fonts_params"
require_relative "context_dev/models/style_extract_fonts_response"
require_relative "context_dev/models/style_extract_styleguide_params"
require_relative "context_dev/models/style_extract_styleguide_response"
require_relative "context_dev/models/utility_prefetch_by_email_params"
require_relative "context_dev/models/utility_prefetch_by_email_response"
require_relative "context_dev/models/utility_prefetch_params"
require_relative "context_dev/models/utility_prefetch_response"
require_relative "context_dev/models/web_screenshot_params"
require_relative "context_dev/models/web_screenshot_response"
require_relative "context_dev/models/web_web_scrape_html_params"
require_relative "context_dev/models/web_web_scrape_html_response"
require_relative "context_dev/models/web_web_scrape_images_params"
require_relative "context_dev/models/web_web_scrape_images_response"
require_relative "context_dev/models/web_web_scrape_md_params"
require_relative "context_dev/models/web_web_scrape_md_response"
require_relative "context_dev/models/web_web_scrape_sitemap_params"
require_relative "context_dev/models/web_web_scrape_sitemap_response"
require_relative "context_dev/models"
require_relative "context_dev/resources/ai"
require_relative "context_dev/resources/brand"
require_relative "context_dev/resources/industry"
require_relative "context_dev/resources/style"
require_relative "context_dev/resources/utility"
require_relative "context_dev/resources/web"
20 changes: 20 additions & 0 deletions lib/context_dev/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,24 @@ class Client < ContextDev::Internal::Transport::BaseClient
# @return [String]
attr_reader :api_key

# @return [ContextDev::Resources::Web]
attr_reader :web

# @return [ContextDev::Resources::AI]
attr_reader :ai

# @return [ContextDev::Resources::Style]
attr_reader :style

# @return [ContextDev::Resources::Brand]
attr_reader :brand

# @return [ContextDev::Resources::Industry]
attr_reader :industry

# @return [ContextDev::Resources::Utility]
attr_reader :utility

# @api private
#
# @return [Hash{String=>String}]
Expand Down Expand Up @@ -68,7 +83,12 @@ def initialize(
max_retry_delay: max_retry_delay
)

@web = ContextDev::Resources::Web.new(client: self)
@ai = ContextDev::Resources::AI.new(client: self)
@style = ContextDev::Resources::Style.new(client: self)
@brand = ContextDev::Resources::Brand.new(client: self)
@industry = ContextDev::Resources::Industry.new(client: self)
@utility = ContextDev::Resources::Utility.new(client: self)
end
end
end
8 changes: 4 additions & 4 deletions lib/context_dev/internal/type/base_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -438,11 +438,11 @@ def deep_to_h = self.class.recursively_to_h(@data, convert: false)
# @return [Hash{Symbol=>Object}]
#
# @example
# # `brand_retrieve_response` is a `ContextDev::Models::BrandRetrieveResponse`
# brand_retrieve_response => {
# brand: brand,
# # `web_screenshot_response` is a `ContextDev::Models::WebScreenshotResponse`
# web_screenshot_response => {
# code: code,
# status: status
# domain: domain,
# screenshot: screenshot
# }
def deconstruct_keys(keys)
(keys || self.class.known_fields.keys)
Expand Down
34 changes: 17 additions & 17 deletions lib/context_dev/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,14 @@ module ContextDev
mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
end

BrandAIProductParams = ContextDev::Models::BrandAIProductParams
AIAIQueryParams = ContextDev::Models::AIAIQueryParams

BrandAIProductsParams = ContextDev::Models::BrandAIProductsParams
AIExtractProductParams = ContextDev::Models::AIExtractProductParams

BrandAIQueryParams = ContextDev::Models::BrandAIQueryParams

BrandFontsParams = ContextDev::Models::BrandFontsParams
AIExtractProductsParams = ContextDev::Models::AIExtractProductsParams

BrandIdentifyFromTransactionParams = ContextDev::Models::BrandIdentifyFromTransactionParams

BrandPrefetchByEmailParams = ContextDev::Models::BrandPrefetchByEmailParams

BrandPrefetchParams = ContextDev::Models::BrandPrefetchParams

BrandRetrieveByEmailParams = ContextDev::Models::BrandRetrieveByEmailParams

BrandRetrieveByIsinParams = ContextDev::Models::BrandRetrieveByIsinParams
Expand All @@ -61,21 +55,27 @@ module ContextDev

BrandRetrieveByTickerParams = ContextDev::Models::BrandRetrieveByTickerParams

BrandRetrieveNaicsParams = ContextDev::Models::BrandRetrieveNaicsParams

BrandRetrieveParams = ContextDev::Models::BrandRetrieveParams

BrandRetrieveSimplifiedParams = ContextDev::Models::BrandRetrieveSimplifiedParams

BrandScreenshotParams = ContextDev::Models::BrandScreenshotParams
IndustryRetrieveNaicsParams = ContextDev::Models::IndustryRetrieveNaicsParams

StyleExtractFontsParams = ContextDev::Models::StyleExtractFontsParams

StyleExtractStyleguideParams = ContextDev::Models::StyleExtractStyleguideParams

UtilityPrefetchByEmailParams = ContextDev::Models::UtilityPrefetchByEmailParams

UtilityPrefetchParams = ContextDev::Models::UtilityPrefetchParams

BrandStyleguideParams = ContextDev::Models::BrandStyleguideParams
WebScreenshotParams = ContextDev::Models::WebScreenshotParams

BrandWebScrapeHTMLParams = ContextDev::Models::BrandWebScrapeHTMLParams
WebWebScrapeHTMLParams = ContextDev::Models::WebWebScrapeHTMLParams

BrandWebScrapeImagesParams = ContextDev::Models::BrandWebScrapeImagesParams
WebWebScrapeImagesParams = ContextDev::Models::WebWebScrapeImagesParams

BrandWebScrapeMdParams = ContextDev::Models::BrandWebScrapeMdParams
WebWebScrapeMdParams = ContextDev::Models::WebWebScrapeMdParams

BrandWebScrapeSitemapParams = ContextDev::Models::BrandWebScrapeSitemapParams
WebWebScrapeSitemapParams = ContextDev::Models::WebWebScrapeSitemapParams
end
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

module ContextDev
module Models
# @see ContextDev::Resources::Brand#ai_query
class BrandAIQueryParams < ContextDev::Internal::Type::BaseModel
# @see ContextDev::Resources::AI#ai_query
class AIAIQueryParams < ContextDev::Internal::Type::BaseModel
extend ContextDev::Internal::Type::RequestParameters::Converter
include ContextDev::Internal::Type::RequestParameters

# @!attribute data_to_extract
# Array of data points to extract from the website
#
# @return [Array<ContextDev::Models::BrandAIQueryParams::DataToExtract>]
# @return [Array<ContextDev::Models::AIAIQueryParams::DataToExtract>]
required :data_to_extract,
-> { ContextDev::Internal::Type::ArrayOf[ContextDev::BrandAIQueryParams::DataToExtract] }
-> { ContextDev::Internal::Type::ArrayOf[ContextDev::AIAIQueryParams::DataToExtract] }

# @!attribute domain
# The domain name to analyze
Expand All @@ -23,8 +23,8 @@ class BrandAIQueryParams < ContextDev::Internal::Type::BaseModel
# @!attribute specific_pages
# Optional object specifying which pages to analyze
#
# @return [ContextDev::Models::BrandAIQueryParams::SpecificPages, nil]
optional :specific_pages, -> { ContextDev::BrandAIQueryParams::SpecificPages }
# @return [ContextDev::Models::AIAIQueryParams::SpecificPages, nil]
optional :specific_pages, -> { ContextDev::AIAIQueryParams::SpecificPages }

# @!attribute timeout_ms
# Optional timeout in milliseconds for the request. If the request takes longer
Expand All @@ -36,13 +36,13 @@ class BrandAIQueryParams < ContextDev::Internal::Type::BaseModel

# @!method initialize(data_to_extract:, domain:, specific_pages: nil, timeout_ms: nil, request_options: {})
# Some parameter documentations has been truncated, see
# {ContextDev::Models::BrandAIQueryParams} for more details.
# {ContextDev::Models::AIAIQueryParams} for more details.
#
# @param data_to_extract [Array<ContextDev::Models::BrandAIQueryParams::DataToExtract>] Array of data points to extract from the website
# @param data_to_extract [Array<ContextDev::Models::AIAIQueryParams::DataToExtract>] Array of data points to extract from the website
#
# @param domain [String] The domain name to analyze
#
# @param specific_pages [ContextDev::Models::BrandAIQueryParams::SpecificPages] Optional object specifying which pages to analyze
# @param specific_pages [ContextDev::Models::AIAIQueryParams::SpecificPages] Optional object specifying which pages to analyze
#
# @param timeout_ms [Integer] Optional timeout in milliseconds for the request. If the request takes longer th
#
Expand Down Expand Up @@ -70,44 +70,43 @@ class DataToExtract < ContextDev::Internal::Type::BaseModel
# @!attribute datapoint_type
# Type of the data point
#
# @return [Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::DatapointType]
required :datapoint_type, enum: -> { ContextDev::BrandAIQueryParams::DataToExtract::DatapointType }
# @return [Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::DatapointType]
required :datapoint_type, enum: -> { ContextDev::AIAIQueryParams::DataToExtract::DatapointType }

# @!attribute datapoint_list_type
# Type of items in the list when datapoint_type is 'list'. Defaults to 'string'.
# Use 'object' to extract an array of objects matching a schema.
#
# @return [Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::DatapointListType, nil]
optional :datapoint_list_type,
enum: -> { ContextDev::BrandAIQueryParams::DataToExtract::DatapointListType }
# @return [Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::DatapointListType, nil]
optional :datapoint_list_type, enum: -> { ContextDev::AIAIQueryParams::DataToExtract::DatapointListType }

# @!attribute datapoint_object_schema
# Schema definition for objects when datapoint_list_type is 'object'. Provide a
# map of field names to their scalar types.
#
# @return [Hash{Symbol=>Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::DatapointObjectSchema}, nil]
# @return [Hash{Symbol=>Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::DatapointObjectSchema}, nil]
optional :datapoint_object_schema,
-> { ContextDev::Internal::Type::HashOf[enum: ContextDev::BrandAIQueryParams::DataToExtract::DatapointObjectSchema] }
-> { ContextDev::Internal::Type::HashOf[enum: ContextDev::AIAIQueryParams::DataToExtract::DatapointObjectSchema] }

# @!method initialize(datapoint_description:, datapoint_example:, datapoint_name:, datapoint_type:, datapoint_list_type: nil, datapoint_object_schema: nil)
# Some parameter documentations has been truncated, see
# {ContextDev::Models::BrandAIQueryParams::DataToExtract} for more details.
# {ContextDev::Models::AIAIQueryParams::DataToExtract} for more details.
#
# @param datapoint_description [String] Description of what to extract
#
# @param datapoint_example [String] Example of the expected value
#
# @param datapoint_name [String] Name of the data point to extract
#
# @param datapoint_type [Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::DatapointType] Type of the data point
# @param datapoint_type [Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::DatapointType] Type of the data point
#
# @param datapoint_list_type [Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::DatapointListType] Type of items in the list when datapoint_type is 'list'. Defaults to 'string'. U
# @param datapoint_list_type [Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::DatapointListType] Type of items in the list when datapoint_type is 'list'. Defaults to 'string'. U
#
# @param datapoint_object_schema [Hash{Symbol=>Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::DatapointObjectSchema}] Schema definition for objects when datapoint_list_type is 'object'. Provide a ma
# @param datapoint_object_schema [Hash{Symbol=>Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::DatapointObjectSchema}] Schema definition for objects when datapoint_list_type is 'object'. Provide a ma

# Type of the data point
#
# @see ContextDev::Models::BrandAIQueryParams::DataToExtract#datapoint_type
# @see ContextDev::Models::AIAIQueryParams::DataToExtract#datapoint_type
module DatapointType
extend ContextDev::Internal::Type::Enum

Expand All @@ -125,7 +124,7 @@ module DatapointType
# Type of items in the list when datapoint_type is 'list'. Defaults to 'string'.
# Use 'object' to extract an array of objects matching a schema.
#
# @see ContextDev::Models::BrandAIQueryParams::DataToExtract#datapoint_list_type
# @see ContextDev::Models::AIAIQueryParams::DataToExtract#datapoint_list_type
module DatapointListType
extend ContextDev::Internal::Type::Enum

Expand Down
Loading
Loading