context.dev 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +9 -9
  4. data/lib/context_dev/client.rb +20 -0
  5. data/lib/context_dev/internal/type/base_model.rb +4 -4
  6. data/lib/context_dev/models/{brand_ai_query_params.rb → ai_ai_query_params.rb} +21 -22
  7. data/lib/context_dev/models/{brand_ai_query_response.rb → ai_ai_query_response.rb} +11 -11
  8. data/lib/context_dev/models/{brand_ai_product_params.rb → ai_extract_product_params.rb} +3 -3
  9. data/lib/context_dev/models/{brand_ai_product_response.rb → ai_extract_product_response.rb} +18 -18
  10. data/lib/context_dev/models/{brand_ai_products_params.rb → ai_extract_products_params.rb} +11 -10
  11. data/lib/context_dev/models/{brand_ai_products_response.rb → ai_extract_products_response.rb} +13 -13
  12. data/lib/context_dev/models/brand_identify_from_transaction_params.rb +3 -0
  13. data/lib/context_dev/models/brand_retrieve_by_email_params.rb +3 -0
  14. data/lib/context_dev/models/brand_retrieve_by_isin_params.rb +3 -0
  15. data/lib/context_dev/models/brand_retrieve_by_name_params.rb +3 -0
  16. data/lib/context_dev/models/brand_retrieve_by_ticker_params.rb +3 -0
  17. data/lib/context_dev/models/brand_retrieve_params.rb +3 -0
  18. data/lib/context_dev/models/{brand_retrieve_naics_params.rb → industry_retrieve_naics_params.rb} +3 -3
  19. data/lib/context_dev/models/{brand_retrieve_naics_response.rb → industry_retrieve_naics_response.rb} +9 -9
  20. data/lib/context_dev/models/{brand_fonts_params.rb → style_extract_fonts_params.rb} +3 -3
  21. data/lib/context_dev/models/{brand_fonts_response.rb → style_extract_fonts_response.rb} +6 -5
  22. data/lib/context_dev/models/{brand_styleguide_params.rb → style_extract_styleguide_params.rb} +6 -6
  23. data/lib/context_dev/models/{brand_styleguide_response.rb → style_extract_styleguide_response.rb} +83 -74
  24. data/lib/context_dev/models/{brand_prefetch_by_email_params.rb → utility_prefetch_by_email_params.rb} +3 -3
  25. data/lib/context_dev/models/{brand_prefetch_by_email_response.rb → utility_prefetch_by_email_response.rb} +2 -2
  26. data/lib/context_dev/models/{brand_prefetch_params.rb → utility_prefetch_params.rb} +3 -3
  27. data/lib/context_dev/models/{brand_prefetch_response.rb → utility_prefetch_response.rb} +2 -2
  28. data/lib/context_dev/models/{brand_screenshot_params.rb → web_screenshot_params.rb} +12 -12
  29. data/lib/context_dev/models/{brand_screenshot_response.rb → web_screenshot_response.rb} +6 -6
  30. data/lib/context_dev/models/{brand_web_scrape_html_params.rb → web_web_scrape_html_params.rb} +2 -2
  31. data/lib/context_dev/models/{brand_web_scrape_html_response.rb → web_web_scrape_html_response.rb} +6 -6
  32. data/lib/context_dev/models/{brand_web_scrape_images_params.rb → web_web_scrape_images_params.rb} +2 -2
  33. data/lib/context_dev/models/{brand_web_scrape_images_response.rb → web_web_scrape_images_response.rb} +17 -17
  34. data/lib/context_dev/models/{brand_web_scrape_md_params.rb → web_web_scrape_md_params.rb} +3 -3
  35. data/lib/context_dev/models/{brand_web_scrape_md_response.rb → web_web_scrape_md_response.rb} +6 -6
  36. data/lib/context_dev/models/{brand_web_scrape_sitemap_params.rb → web_web_scrape_sitemap_params.rb} +3 -3
  37. data/lib/context_dev/models/{brand_web_scrape_sitemap_response.rb → web_web_scrape_sitemap_response.rb} +10 -10
  38. data/lib/context_dev/models.rb +17 -17
  39. data/lib/context_dev/resources/ai.rb +99 -0
  40. data/lib/context_dev/resources/brand.rb +0 -397
  41. data/lib/context_dev/resources/industry.rb +50 -0
  42. data/lib/context_dev/resources/style.rb +78 -0
  43. data/lib/context_dev/resources/utility.rb +76 -0
  44. data/lib/context_dev/resources/web.rb +164 -0
  45. data/lib/context_dev/version.rb +1 -1
  46. data/lib/context_dev.rb +31 -26
  47. data/rbi/context_dev/client.rbi +15 -0
  48. data/rbi/context_dev/models/{brand_ai_query_params.rbi → ai_ai_query_params.rbi} +46 -46
  49. data/rbi/context_dev/models/{brand_ai_query_response.rbi → ai_ai_query_response.rbi} +12 -12
  50. data/rbi/context_dev/models/{brand_ai_product_params.rbi → ai_extract_product_params.rbi} +5 -2
  51. data/rbi/context_dev/models/{brand_ai_product_response.rbi → ai_extract_product_response.rbi} +40 -35
  52. data/rbi/context_dev/models/{brand_ai_products_params.rbi → ai_extract_products_params.rbi} +13 -13
  53. data/rbi/context_dev/models/{brand_ai_products_response.rbi → ai_extract_products_response.rbi} +26 -26
  54. data/rbi/context_dev/models/brand_identify_from_transaction_params.rbi +15 -0
  55. data/rbi/context_dev/models/brand_retrieve_by_email_params.rbi +15 -0
  56. data/rbi/context_dev/models/brand_retrieve_by_isin_params.rbi +15 -0
  57. data/rbi/context_dev/models/brand_retrieve_by_name_params.rbi +15 -0
  58. data/rbi/context_dev/models/brand_retrieve_by_ticker_params.rbi +15 -0
  59. data/rbi/context_dev/models/brand_retrieve_params.rbi +15 -0
  60. data/rbi/context_dev/models/{brand_retrieve_naics_params.rbi → industry_retrieve_naics_params.rbi} +2 -2
  61. data/rbi/context_dev/models/{brand_retrieve_naics_response.rbi → industry_retrieve_naics_response.rbi} +15 -15
  62. data/rbi/context_dev/models/{brand_fonts_params.rbi → style_extract_fonts_params.rbi} +5 -2
  63. data/rbi/context_dev/models/{brand_fonts_response.rbi → style_extract_fonts_response.rbi} +12 -6
  64. data/rbi/context_dev/models/{brand_styleguide_params.rbi → style_extract_styleguide_params.rbi} +15 -10
  65. data/rbi/context_dev/models/{brand_styleguide_response.rbi → style_extract_styleguide_response.rbi} +98 -95
  66. data/rbi/context_dev/models/{brand_prefetch_by_email_params.rbi → utility_prefetch_by_email_params.rbi} +2 -2
  67. data/rbi/context_dev/models/{brand_prefetch_by_email_response.rbi → utility_prefetch_by_email_response.rbi} +2 -2
  68. data/rbi/context_dev/models/{brand_prefetch_params.rbi → utility_prefetch_params.rbi} +5 -2
  69. data/rbi/context_dev/models/{brand_prefetch_response.rbi → utility_prefetch_response.rbi} +2 -2
  70. data/rbi/context_dev/models/{brand_screenshot_params.rbi → web_screenshot_params.rbi} +32 -42
  71. data/rbi/context_dev/models/{brand_screenshot_response.rbi → web_screenshot_response.rbi} +10 -10
  72. data/rbi/context_dev/models/{brand_web_scrape_html_params.rbi → web_web_scrape_html_params.rbi} +2 -2
  73. data/rbi/context_dev/models/{brand_web_scrape_html_response.rbi → web_web_scrape_html_response.rbi} +8 -8
  74. data/rbi/context_dev/models/{brand_web_scrape_images_params.rbi → web_web_scrape_images_params.rbi} +2 -2
  75. data/rbi/context_dev/models/{brand_web_scrape_images_response.rbi → web_web_scrape_images_response.rbi} +30 -32
  76. data/rbi/context_dev/models/{brand_web_scrape_md_params.rbi → web_web_scrape_md_params.rbi} +2 -5
  77. data/rbi/context_dev/models/{brand_web_scrape_md_response.rbi → web_web_scrape_md_response.rbi} +8 -8
  78. data/rbi/context_dev/models/{brand_web_scrape_sitemap_params.rbi → web_web_scrape_sitemap_params.rbi} +2 -2
  79. data/rbi/context_dev/models/{brand_web_scrape_sitemap_response.rbi → web_web_scrape_sitemap_response.rbi} +13 -13
  80. data/rbi/context_dev/models.rbi +19 -17
  81. data/rbi/context_dev/resources/ai.rbi +76 -0
  82. data/rbi/context_dev/resources/brand.rbi +0 -303
  83. data/rbi/context_dev/resources/industry.rbi +40 -0
  84. data/rbi/context_dev/resources/style.rbi +67 -0
  85. data/rbi/context_dev/resources/utility.rbi +60 -0
  86. data/rbi/context_dev/resources/web.rbi +121 -0
  87. data/sig/context_dev/client.rbs +10 -0
  88. data/sig/context_dev/models/{brand_ai_query_params.rbs → ai_ai_query_params.rbs} +31 -31
  89. data/sig/context_dev/models/{brand_ai_query_response.rbs → ai_ai_query_response.rbs} +15 -15
  90. data/sig/context_dev/models/{brand_ai_product_params.rbs → ai_extract_product_params.rbs} +2 -2
  91. data/sig/context_dev/models/{brand_ai_product_response.rbs → ai_extract_product_response.rbs} +21 -21
  92. data/sig/context_dev/models/{brand_ai_products_params.rbs → ai_extract_products_params.rbs} +9 -9
  93. data/sig/context_dev/models/{brand_ai_products_response.rbs → ai_extract_products_response.rbs} +18 -18
  94. data/sig/context_dev/models/brand_identify_from_transaction_params.rbs +6 -0
  95. data/sig/context_dev/models/brand_retrieve_by_email_params.rbs +6 -0
  96. data/sig/context_dev/models/brand_retrieve_by_isin_params.rbs +6 -0
  97. data/sig/context_dev/models/brand_retrieve_by_name_params.rbs +6 -0
  98. data/sig/context_dev/models/brand_retrieve_by_ticker_params.rbs +6 -0
  99. data/sig/context_dev/models/brand_retrieve_params.rbs +6 -0
  100. data/sig/context_dev/models/{brand_retrieve_naics_params.rbs → industry_retrieve_naics_params.rbs} +2 -2
  101. data/sig/context_dev/models/{brand_retrieve_naics_response.rbs → industry_retrieve_naics_response.rbs} +13 -13
  102. data/sig/context_dev/models/{brand_fonts_params.rbs → style_extract_fonts_params.rbs} +2 -2
  103. data/sig/context_dev/models/{brand_fonts_response.rbs → style_extract_fonts_response.rbs} +6 -6
  104. data/sig/context_dev/models/{brand_styleguide_params.rbs → style_extract_styleguide_params.rbs} +9 -9
  105. data/sig/context_dev/models/{brand_styleguide_response.rbs → style_extract_styleguide_response.rbs} +111 -111
  106. data/sig/context_dev/models/{brand_prefetch_by_email_params.rbs → utility_prefetch_by_email_params.rbs} +2 -2
  107. data/sig/context_dev/models/{brand_prefetch_by_email_response.rbs → utility_prefetch_by_email_response.rbs} +2 -2
  108. data/sig/context_dev/models/{brand_prefetch_params.rbs → utility_prefetch_params.rbs} +2 -2
  109. data/sig/context_dev/models/{brand_prefetch_response.rbs → utility_prefetch_response.rbs} +2 -2
  110. data/sig/context_dev/models/web_screenshot_params.rbs +100 -0
  111. data/sig/context_dev/models/{brand_screenshot_response.rbs → web_screenshot_response.rbs} +9 -9
  112. data/sig/context_dev/models/{brand_web_scrape_images_params.rbs → web_web_scrape_html_params.rbs} +2 -2
  113. data/sig/context_dev/models/web_web_scrape_html_response.rbs +40 -0
  114. data/sig/context_dev/models/{brand_web_scrape_html_params.rbs → web_web_scrape_images_params.rbs} +2 -2
  115. data/sig/context_dev/models/web_web_scrape_images_response.rbs +98 -0
  116. data/sig/context_dev/models/{brand_web_scrape_md_params.rbs → web_web_scrape_md_params.rbs} +2 -2
  117. data/sig/context_dev/models/web_web_scrape_md_response.rbs +40 -0
  118. data/sig/context_dev/models/{brand_web_scrape_sitemap_params.rbs → web_web_scrape_sitemap_params.rbs} +2 -2
  119. data/sig/context_dev/models/{brand_web_scrape_sitemap_response.rbs → web_web_scrape_sitemap_response.rbs} +11 -11
  120. data/sig/context_dev/models.rbs +17 -17
  121. data/sig/context_dev/resources/ai.rbs +26 -0
  122. data/sig/context_dev/resources/brand.rbs +0 -84
  123. data/sig/context_dev/resources/industry.rbs +15 -0
  124. data/sig/context_dev/resources/style.rbs +21 -0
  125. data/sig/context_dev/resources/utility.rbs +19 -0
  126. data/sig/context_dev/resources/web.rbs +38 -0
  127. metadata +94 -79
  128. data/sig/context_dev/models/brand_screenshot_params.rbs +0 -100
  129. data/sig/context_dev/models/brand_web_scrape_html_response.rbs +0 -40
  130. data/sig/context_dev/models/brand_web_scrape_images_response.rbs +0 -98
  131. data/sig/context_dev/models/brand_web_scrape_md_response.rbs +0 -40
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Resources
5
+ class Industry
6
+ # Endpoint to classify any brand into a 2022 NAICS code.
7
+ sig do
8
+ params(
9
+ input: String,
10
+ max_results: Integer,
11
+ min_results: Integer,
12
+ timeout_ms: Integer,
13
+ request_options: ContextDev::RequestOptions::OrHash
14
+ ).returns(ContextDev::Models::IndustryRetrieveNaicsResponse)
15
+ end
16
+ def retrieve_naics(
17
+ # Brand domain or title to retrieve NAICS code for. If a valid domain is provided
18
+ # in `input`, it will be used for classification, otherwise, we will search for
19
+ # the brand using the provided title.
20
+ input:,
21
+ # Maximum number of NAICS codes to return. Must be between 1 and 10. Defaults
22
+ # to 5.
23
+ max_results: nil,
24
+ # Minimum number of NAICS codes to return. Must be at least 1. Defaults to 1.
25
+ min_results: nil,
26
+ # Optional timeout in milliseconds for the request. If the request takes longer
27
+ # than this value, it will be aborted with a 408 status code. Maximum allowed
28
+ # value is 300000ms (5 minutes).
29
+ timeout_ms: nil,
30
+ request_options: {}
31
+ )
32
+ end
33
+
34
+ # @api private
35
+ sig { params(client: ContextDev::Client).returns(T.attached_class) }
36
+ def self.new(client:)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,67 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Resources
5
+ class Style
6
+ # Extract font information from a brand's website including font families, usage
7
+ # statistics, fallbacks, and element/word counts.
8
+ sig do
9
+ params(
10
+ domain: String,
11
+ timeout_ms: Integer,
12
+ request_options: ContextDev::RequestOptions::OrHash
13
+ ).returns(ContextDev::Models::StyleExtractFontsResponse)
14
+ end
15
+ def extract_fonts(
16
+ # Domain name to extract fonts from (e.g., 'example.com', 'google.com'). The
17
+ # domain will be automatically normalized and validated.
18
+ domain:,
19
+ # Optional timeout in milliseconds for the request. If the request takes longer
20
+ # than this value, it will be aborted with a 408 status code. Maximum allowed
21
+ # value is 300000ms (5 minutes).
22
+ timeout_ms: nil,
23
+ request_options: {}
24
+ )
25
+ end
26
+
27
+ # Automatically extract comprehensive design system information from a brand's
28
+ # website including colors, typography, spacing, shadows, and UI components.
29
+ # Either 'domain' or 'directUrl' must be provided as a query parameter, but not
30
+ # both.
31
+ sig do
32
+ params(
33
+ direct_url: String,
34
+ domain: String,
35
+ prioritize:
36
+ ContextDev::StyleExtractStyleguideParams::Prioritize::OrSymbol,
37
+ timeout_ms: Integer,
38
+ request_options: ContextDev::RequestOptions::OrHash
39
+ ).returns(ContextDev::Models::StyleExtractStyleguideResponse)
40
+ end
41
+ def extract_styleguide(
42
+ # A specific URL to fetch the styleguide from directly, bypassing domain
43
+ # resolution (e.g., 'https://example.com/design-system').
44
+ direct_url: nil,
45
+ # Domain name to extract styleguide from (e.g., 'example.com', 'google.com'). The
46
+ # domain will be automatically normalized and validated.
47
+ domain: nil,
48
+ # Optional parameter to prioritize screenshot capture for styleguide extraction.
49
+ # If 'speed', optimizes for faster capture with basic quality. If 'quality',
50
+ # optimizes for higher quality with longer wait times. Defaults to 'quality' if
51
+ # not provided.
52
+ prioritize: nil,
53
+ # Optional timeout in milliseconds for the request. If the request takes longer
54
+ # than this value, it will be aborted with a 408 status code. Maximum allowed
55
+ # value is 300000ms (5 minutes).
56
+ timeout_ms: nil,
57
+ request_options: {}
58
+ )
59
+ end
60
+
61
+ # @api private
62
+ sig { params(client: ContextDev::Client).returns(T.attached_class) }
63
+ def self.new(client:)
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,60 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Resources
5
+ class Utility
6
+ # Signal that you may fetch brand data for a particular domain soon to improve
7
+ # latency. This endpoint does not charge credits and is available for paid
8
+ # customers to optimize future requests. [You must be on a paid plan to use this
9
+ # endpoint]
10
+ sig do
11
+ params(
12
+ domain: String,
13
+ timeout_ms: Integer,
14
+ request_options: ContextDev::RequestOptions::OrHash
15
+ ).returns(ContextDev::Models::UtilityPrefetchResponse)
16
+ end
17
+ def prefetch(
18
+ # Domain name to prefetch brand data for
19
+ domain:,
20
+ # Optional timeout in milliseconds for the request. If the request takes longer
21
+ # than this value, it will be aborted with a 408 status code. Maximum allowed
22
+ # value is 300000ms (5 minutes).
23
+ timeout_ms: nil,
24
+ request_options: {}
25
+ )
26
+ end
27
+
28
+ # Signal that you may fetch brand data for a particular domain soon to improve
29
+ # latency. This endpoint accepts an email address, extracts the domain from it,
30
+ # validates that it's not a disposable or free email provider, and queues the
31
+ # domain for prefetching. This endpoint does not charge credits and is available
32
+ # for paid customers to optimize future requests. [You must be on a paid plan to
33
+ # use this endpoint]
34
+ sig do
35
+ params(
36
+ email: String,
37
+ timeout_ms: Integer,
38
+ request_options: ContextDev::RequestOptions::OrHash
39
+ ).returns(ContextDev::Models::UtilityPrefetchByEmailResponse)
40
+ end
41
+ def prefetch_by_email(
42
+ # Email address to prefetch brand data for. The domain will be extracted from the
43
+ # email. Free email providers (gmail.com, yahoo.com, etc.) and disposable email
44
+ # addresses are not allowed.
45
+ email:,
46
+ # Optional timeout in milliseconds for the request. If the request takes longer
47
+ # than this value, it will be aborted with a 408 status code. Maximum allowed
48
+ # value is 300000ms (5 minutes).
49
+ timeout_ms: nil,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ # @api private
55
+ sig { params(client: ContextDev::Client).returns(T.attached_class) }
56
+ def self.new(client:)
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,121 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Resources
5
+ class Web
6
+ # Capture a screenshot of a website. Supports both viewport (standard browser
7
+ # view) and full-page screenshots. Can also screenshot specific page types (login,
8
+ # pricing, etc.) by using heuristics to find the appropriate URL. Returns a URL to
9
+ # the uploaded screenshot image hosted on our CDN.
10
+ sig do
11
+ params(
12
+ domain: String,
13
+ full_screenshot:
14
+ ContextDev::WebScreenshotParams::FullScreenshot::OrSymbol,
15
+ page: ContextDev::WebScreenshotParams::Page::OrSymbol,
16
+ prioritize: ContextDev::WebScreenshotParams::Prioritize::OrSymbol,
17
+ request_options: ContextDev::RequestOptions::OrHash
18
+ ).returns(ContextDev::Models::WebScreenshotResponse)
19
+ end
20
+ def screenshot(
21
+ # Domain name to take screenshot of (e.g., 'example.com', 'google.com'). The
22
+ # domain will be automatically normalized and validated.
23
+ domain:,
24
+ # Optional parameter to determine screenshot type. If 'true', takes a full page
25
+ # screenshot capturing all content. If 'false' or not provided, takes a viewport
26
+ # screenshot (standard browser view).
27
+ full_screenshot: nil,
28
+ # Optional parameter to specify which page type to screenshot. If provided, the
29
+ # system will scrape the domain's links and use heuristics to find the most
30
+ # appropriate URL for the specified page type (30 supported languages). If not
31
+ # provided, screenshots the main domain landing page.
32
+ page: nil,
33
+ # Optional parameter to prioritize screenshot capture. If 'speed', optimizes for
34
+ # faster capture with basic quality. If 'quality', optimizes for higher quality
35
+ # with longer wait times. Defaults to 'quality' if not provided.
36
+ prioritize: nil,
37
+ request_options: {}
38
+ )
39
+ end
40
+
41
+ # Scrapes the given URL and returns the raw HTML content of the page. Uses
42
+ # automatic proxy escalation to handle blocked sites.
43
+ sig do
44
+ params(
45
+ url: String,
46
+ request_options: ContextDev::RequestOptions::OrHash
47
+ ).returns(ContextDev::Models::WebWebScrapeHTMLResponse)
48
+ end
49
+ def web_scrape_html(
50
+ # Full URL to scrape (must include http:// or https:// protocol)
51
+ url:,
52
+ request_options: {}
53
+ )
54
+ end
55
+
56
+ # Scrapes all images from the given URL. Extracts images from img, svg,
57
+ # picture/source, link, and video elements including inline SVGs, base64 data
58
+ # URIs, and standard URLs.
59
+ sig do
60
+ params(
61
+ url: String,
62
+ request_options: ContextDev::RequestOptions::OrHash
63
+ ).returns(ContextDev::Models::WebWebScrapeImagesResponse)
64
+ end
65
+ def web_scrape_images(
66
+ # Full URL to scrape images from (must include http:// or https:// protocol)
67
+ url:,
68
+ request_options: {}
69
+ )
70
+ end
71
+
72
+ # Scrapes the given URL, converts the HTML content to GitHub Flavored Markdown
73
+ # (GFM), and returns the result. Uses automatic proxy escalation to handle blocked
74
+ # sites.
75
+ sig do
76
+ params(
77
+ url: String,
78
+ include_images: T::Boolean,
79
+ include_links: T::Boolean,
80
+ shorten_base64_images: T::Boolean,
81
+ request_options: ContextDev::RequestOptions::OrHash
82
+ ).returns(ContextDev::Models::WebWebScrapeMdResponse)
83
+ end
84
+ def web_scrape_md(
85
+ # Full URL to scrape and convert to markdown (must include http:// or https://
86
+ # protocol)
87
+ url:,
88
+ # Include image references in Markdown output
89
+ include_images: nil,
90
+ # Preserve hyperlinks in Markdown output
91
+ include_links: nil,
92
+ # Shorten base64-encoded image data in the Markdown output
93
+ shorten_base64_images: nil,
94
+ request_options: {}
95
+ )
96
+ end
97
+
98
+ # Crawls the sitemap of the given domain and returns all discovered page URLs.
99
+ # Supports sitemap index files (recursive), parallel fetching with concurrency
100
+ # control, deduplication, and filters out non-page resources (images, PDFs, etc.).
101
+ sig do
102
+ params(
103
+ domain: String,
104
+ request_options: ContextDev::RequestOptions::OrHash
105
+ ).returns(ContextDev::Models::WebWebScrapeSitemapResponse)
106
+ end
107
+ def web_scrape_sitemap(
108
+ # Domain name to crawl sitemaps for (e.g., 'example.com'). The domain will be
109
+ # automatically normalized and validated.
110
+ domain:,
111
+ request_options: {}
112
+ )
113
+ end
114
+
115
+ # @api private
116
+ sig { params(client: ContextDev::Client).returns(T.attached_class) }
117
+ def self.new(client:)
118
+ end
119
+ end
120
+ end
121
+ end
@@ -10,8 +10,18 @@ module ContextDev
10
10
 
11
11
  attr_reader api_key: String
12
12
 
13
+ attr_reader web: ContextDev::Resources::Web
14
+
15
+ attr_reader ai: ContextDev::Resources::AI
16
+
17
+ attr_reader style: ContextDev::Resources::Style
18
+
13
19
  attr_reader brand: ContextDev::Resources::Brand
14
20
 
21
+ attr_reader industry: ContextDev::Resources::Industry
22
+
23
+ attr_reader utility: ContextDev::Resources::Utility
24
+
15
25
  private def auth_headers: -> ::Hash[String, String]
16
26
 
17
27
  def initialize: (
@@ -1,44 +1,44 @@
1
1
  module ContextDev
2
2
  module Models
3
- type brand_ai_query_params =
3
+ type aiai_query_params =
4
4
  {
5
- data_to_extract: ::Array[ContextDev::BrandAIQueryParams::DataToExtract],
5
+ data_to_extract: ::Array[ContextDev::AIAIQueryParams::DataToExtract],
6
6
  domain: String,
7
- specific_pages: ContextDev::BrandAIQueryParams::SpecificPages,
7
+ specific_pages: ContextDev::AIAIQueryParams::SpecificPages,
8
8
  timeout_ms: Integer
9
9
  }
10
10
  & ContextDev::Internal::Type::request_parameters
11
11
 
12
- class BrandAIQueryParams < ContextDev::Internal::Type::BaseModel
12
+ class AIAIQueryParams < ContextDev::Internal::Type::BaseModel
13
13
  extend ContextDev::Internal::Type::RequestParameters::Converter
14
14
  include ContextDev::Internal::Type::RequestParameters
15
15
 
16
- attr_accessor data_to_extract: ::Array[ContextDev::BrandAIQueryParams::DataToExtract]
16
+ attr_accessor data_to_extract: ::Array[ContextDev::AIAIQueryParams::DataToExtract]
17
17
 
18
18
  attr_accessor domain: String
19
19
 
20
- attr_reader specific_pages: ContextDev::BrandAIQueryParams::SpecificPages?
20
+ attr_reader specific_pages: ContextDev::AIAIQueryParams::SpecificPages?
21
21
 
22
22
  def specific_pages=: (
23
- ContextDev::BrandAIQueryParams::SpecificPages
24
- ) -> ContextDev::BrandAIQueryParams::SpecificPages
23
+ ContextDev::AIAIQueryParams::SpecificPages
24
+ ) -> ContextDev::AIAIQueryParams::SpecificPages
25
25
 
26
26
  attr_reader timeout_ms: Integer?
27
27
 
28
28
  def timeout_ms=: (Integer) -> Integer
29
29
 
30
30
  def initialize: (
31
- data_to_extract: ::Array[ContextDev::BrandAIQueryParams::DataToExtract],
31
+ data_to_extract: ::Array[ContextDev::AIAIQueryParams::DataToExtract],
32
32
  domain: String,
33
- ?specific_pages: ContextDev::BrandAIQueryParams::SpecificPages,
33
+ ?specific_pages: ContextDev::AIAIQueryParams::SpecificPages,
34
34
  ?timeout_ms: Integer,
35
35
  ?request_options: ContextDev::request_opts
36
36
  ) -> void
37
37
 
38
38
  def to_hash: -> {
39
- data_to_extract: ::Array[ContextDev::BrandAIQueryParams::DataToExtract],
39
+ data_to_extract: ::Array[ContextDev::AIAIQueryParams::DataToExtract],
40
40
  domain: String,
41
- specific_pages: ContextDev::BrandAIQueryParams::SpecificPages,
41
+ specific_pages: ContextDev::AIAIQueryParams::SpecificPages,
42
42
  timeout_ms: Integer,
43
43
  request_options: ContextDev::RequestOptions
44
44
  }
@@ -48,9 +48,9 @@ module ContextDev
48
48
  datapoint_description: String,
49
49
  datapoint_example: String,
50
50
  datapoint_name: String,
51
- datapoint_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_type,
52
- datapoint_list_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type,
53
- datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]
51
+ datapoint_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_type,
52
+ datapoint_list_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type,
53
+ datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]
54
54
  }
55
55
 
56
56
  class DataToExtract < ContextDev::Internal::Type::BaseModel
@@ -60,36 +60,36 @@ module ContextDev
60
60
 
61
61
  attr_accessor datapoint_name: String
62
62
 
63
- attr_accessor datapoint_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_type
63
+ attr_accessor datapoint_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_type
64
64
 
65
- attr_reader datapoint_list_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type?
65
+ attr_reader datapoint_list_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type?
66
66
 
67
67
  def datapoint_list_type=: (
68
- ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type
69
- ) -> ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type
68
+ ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type
69
+ ) -> ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type
70
70
 
71
- attr_reader datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]?
71
+ attr_reader datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]?
72
72
 
73
73
  def datapoint_object_schema=: (
74
- ::Hash[Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]
75
- ) -> ::Hash[Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]
74
+ ::Hash[Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]
75
+ ) -> ::Hash[Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]
76
76
 
77
77
  def initialize: (
78
78
  datapoint_description: String,
79
79
  datapoint_example: String,
80
80
  datapoint_name: String,
81
- datapoint_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_type,
82
- ?datapoint_list_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type,
83
- ?datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]
81
+ datapoint_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_type,
82
+ ?datapoint_list_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type,
83
+ ?datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]
84
84
  ) -> void
85
85
 
86
86
  def to_hash: -> {
87
87
  datapoint_description: String,
88
88
  datapoint_example: String,
89
89
  datapoint_name: String,
90
- datapoint_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_type,
91
- datapoint_list_type: ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type,
92
- datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]
90
+ datapoint_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_type,
91
+ datapoint_list_type: ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type,
92
+ datapoint_object_schema: ::Hash[Symbol, ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]
93
93
  }
94
94
 
95
95
  type datapoint_type = :text | :number | :date | :boolean | :list | :url
@@ -104,7 +104,7 @@ module ContextDev
104
104
  LIST: :list
105
105
  URL: :url
106
106
 
107
- def self?.values: -> ::Array[ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_type]
107
+ def self?.values: -> ::Array[ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_type]
108
108
  end
109
109
 
110
110
  type datapoint_list_type =
@@ -122,7 +122,7 @@ module ContextDev
122
122
  URL: :url
123
123
  OBJECT: :object
124
124
 
125
- def self?.values: -> ::Array[ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_list_type]
125
+ def self?.values: -> ::Array[ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_list_type]
126
126
  end
127
127
 
128
128
  type datapoint_object_schema = :string | :number | :date | :boolean
@@ -135,7 +135,7 @@ module ContextDev
135
135
  DATE: :date
136
136
  BOOLEAN: :boolean
137
137
 
138
- def self?.values: -> ::Array[ContextDev::Models::BrandAIQueryParams::DataToExtract::datapoint_object_schema]
138
+ def self?.values: -> ::Array[ContextDev::Models::AIAIQueryParams::DataToExtract::datapoint_object_schema]
139
139
  end
140
140
  end
141
141
 
@@ -1,19 +1,19 @@
1
1
  module ContextDev
2
2
  module Models
3
- type brand_ai_query_response =
3
+ type aiai_query_response =
4
4
  {
5
- data_extracted: ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted],
5
+ data_extracted: ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted],
6
6
  domain: String,
7
7
  status: String,
8
8
  urls_analyzed: ::Array[String]
9
9
  }
10
10
 
11
- class BrandAIQueryResponse < ContextDev::Internal::Type::BaseModel
12
- attr_reader data_extracted: ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted]?
11
+ class AIAIQueryResponse < ContextDev::Internal::Type::BaseModel
12
+ attr_reader data_extracted: ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted]?
13
13
 
14
14
  def data_extracted=: (
15
- ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted]
16
- ) -> ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted]
15
+ ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted]
16
+ ) -> ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted]
17
17
 
18
18
  attr_reader domain: String?
19
19
 
@@ -28,14 +28,14 @@ module ContextDev
28
28
  def urls_analyzed=: (::Array[String]) -> ::Array[String]
29
29
 
30
30
  def initialize: (
31
- ?data_extracted: ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted],
31
+ ?data_extracted: ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted],
32
32
  ?domain: String,
33
33
  ?status: String,
34
34
  ?urls_analyzed: ::Array[String]
35
35
  ) -> void
36
36
 
37
37
  def to_hash: -> {
38
- data_extracted: ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted],
38
+ data_extracted: ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted],
39
39
  domain: String,
40
40
  status: String,
41
41
  urls_analyzed: ::Array[String]
@@ -44,7 +44,7 @@ module ContextDev
44
44
  type data_extracted =
45
45
  {
46
46
  datapoint_name: String,
47
- datapoint_value: ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value
47
+ datapoint_value: ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value
48
48
  }
49
49
 
50
50
  class DataExtracted < ContextDev::Internal::Type::BaseModel
@@ -52,20 +52,20 @@ module ContextDev
52
52
 
53
53
  def datapoint_name=: (String) -> String
54
54
 
55
- attr_reader datapoint_value: ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value?
55
+ attr_reader datapoint_value: ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value?
56
56
 
57
57
  def datapoint_value=: (
58
- ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value
59
- ) -> ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value
58
+ ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value
59
+ ) -> ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value
60
60
 
61
61
  def initialize: (
62
62
  ?datapoint_name: String,
63
- ?datapoint_value: ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value
63
+ ?datapoint_value: ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value
64
64
  ) -> void
65
65
 
66
66
  def to_hash: -> {
67
67
  datapoint_name: String,
68
- datapoint_value: ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value
68
+ datapoint_value: ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value
69
69
  }
70
70
 
71
71
  type datapoint_value =
@@ -79,7 +79,7 @@ module ContextDev
79
79
  module DatapointValue
80
80
  extend ContextDev::Internal::Type::Union
81
81
 
82
- def self?.variants: -> ::Array[ContextDev::Models::BrandAIQueryResponse::DataExtracted::datapoint_value]
82
+ def self?.variants: -> ::Array[ContextDev::Models::AIAIQueryResponse::DataExtracted::datapoint_value]
83
83
 
84
84
  StringArray: ContextDev::Internal::Type::Converter
85
85
 
@@ -1,10 +1,10 @@
1
1
  module ContextDev
2
2
  module Models
3
- type brand_ai_product_params =
3
+ type ai_extract_product_params =
4
4
  { url: String, timeout_ms: Integer }
5
5
  & ContextDev::Internal::Type::request_parameters
6
6
 
7
- class BrandAIProductParams < ContextDev::Internal::Type::BaseModel
7
+ class AIExtractProductParams < ContextDev::Internal::Type::BaseModel
8
8
  extend ContextDev::Internal::Type::RequestParameters::Converter
9
9
  include ContextDev::Internal::Type::RequestParameters
10
10