context.dev 2.16.0 → 2.17.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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +1 -1
  4. data/lib/context_dev/models/ai_extract_product_params.rb +53 -8
  5. data/lib/context_dev/models/ai_extract_product_response.rb +10 -1
  6. data/lib/context_dev/models/ai_extract_products_params.rb +116 -16
  7. data/lib/context_dev/models/ai_extract_products_response.rb +11 -1
  8. data/lib/context_dev/models/brand_retrieve_params.rb +355 -60
  9. data/lib/context_dev/models/brand_retrieve_response.rb +10 -1
  10. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +57 -11
  11. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +10 -1
  12. data/lib/context_dev/models/industry_retrieve_naics_params.rb +53 -8
  13. data/lib/context_dev/models/industry_retrieve_naics_response.rb +10 -1
  14. data/lib/context_dev/models/industry_retrieve_sic_params.rb +53 -8
  15. data/lib/context_dev/models/industry_retrieve_sic_response.rb +10 -1
  16. data/lib/context_dev/models/monitor_create_params.rb +27 -3
  17. data/lib/context_dev/models/monitor_create_response.rb +30 -5
  18. data/lib/context_dev/models/monitor_list_response.rb +30 -5
  19. data/lib/context_dev/models/monitor_retrieve_response.rb +30 -5
  20. data/lib/context_dev/models/monitor_update_params.rb +27 -3
  21. data/lib/context_dev/models/monitor_update_response.rb +30 -5
  22. data/lib/context_dev/models/person_enrich_params.rb +53 -8
  23. data/lib/context_dev/models/person_enrich_response.rb +10 -1
  24. data/lib/context_dev/models/utility_prefetch_params.rb +48 -8
  25. data/lib/context_dev/models/web_answers_params.rb +124 -0
  26. data/lib/context_dev/models/web_answers_response.rb +68 -0
  27. data/lib/context_dev/models/web_extract_competitors_params.rb +53 -8
  28. data/lib/context_dev/models/web_extract_competitors_response.rb +10 -1
  29. data/lib/context_dev/models/web_extract_fonts_params.rb +58 -11
  30. data/lib/context_dev/models/web_extract_fonts_response.rb +32 -1
  31. data/lib/context_dev/models/web_extract_params.rb +53 -8
  32. data/lib/context_dev/models/web_extract_response.rb +10 -1
  33. data/lib/context_dev/models/web_extract_styleguide_params.rb +58 -11
  34. data/lib/context_dev/models/web_extract_styleguide_response.rb +32 -1
  35. data/lib/context_dev/models/web_screenshot_params.rb +58 -10
  36. data/lib/context_dev/models/web_screenshot_response.rb +32 -1
  37. data/lib/context_dev/models/web_search_params.rb +112 -16
  38. data/lib/context_dev/models/web_search_response.rb +43 -2
  39. data/lib/context_dev/models/web_web_crawl_md_params.rb +53 -8
  40. data/lib/context_dev/models/web_web_crawl_md_response.rb +11 -1
  41. data/lib/context_dev/models/web_web_scrape_bytes_params.rb +344 -0
  42. data/lib/context_dev/models/web_web_scrape_bytes_response.rb +135 -0
  43. data/lib/context_dev/models/web_web_scrape_html_params.rb +57 -10
  44. data/lib/context_dev/models/web_web_scrape_html_response.rb +32 -1
  45. data/lib/context_dev/models/web_web_scrape_images_params.rb +57 -10
  46. data/lib/context_dev/models/web_web_scrape_images_response.rb +42 -1
  47. data/lib/context_dev/models/web_web_scrape_md_params.rb +57 -10
  48. data/lib/context_dev/models/web_web_scrape_md_response.rb +32 -1
  49. data/lib/context_dev/models/web_web_scrape_sitemap_params.rb +53 -8
  50. data/lib/context_dev/models/web_web_scrape_sitemap_response.rb +11 -1
  51. data/lib/context_dev/models.rb +4 -0
  52. data/lib/context_dev/resources/ai.rb +2 -2
  53. data/lib/context_dev/resources/brand.rb +3 -3
  54. data/lib/context_dev/resources/industry.rb +6 -6
  55. data/lib/context_dev/resources/people.rb +2 -2
  56. data/lib/context_dev/resources/utility.rb +2 -2
  57. data/lib/context_dev/resources/web.rb +119 -33
  58. data/lib/context_dev/version.rb +1 -1
  59. data/lib/context_dev.rb +4 -0
  60. data/rbi/context_dev/models/ai_extract_product_params.rbi +125 -13
  61. data/rbi/context_dev/models/ai_extract_product_response.rbi +13 -0
  62. data/rbi/context_dev/models/ai_extract_products_params.rbi +264 -26
  63. data/rbi/context_dev/models/ai_extract_products_response.rbi +15 -0
  64. data/rbi/context_dev/models/brand_retrieve_params.rbi +816 -102
  65. data/rbi/context_dev/models/brand_retrieve_response.rbi +13 -0
  66. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +136 -19
  67. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +13 -0
  68. data/rbi/context_dev/models/industry_retrieve_naics_params.rbi +127 -13
  69. data/rbi/context_dev/models/industry_retrieve_naics_response.rbi +13 -0
  70. data/rbi/context_dev/models/industry_retrieve_sic_params.rbi +127 -13
  71. data/rbi/context_dev/models/industry_retrieve_sic_response.rbi +13 -0
  72. data/rbi/context_dev/models/monitor_create_params.rbi +40 -2
  73. data/rbi/context_dev/models/monitor_create_response.rbi +44 -4
  74. data/rbi/context_dev/models/monitor_list_response.rbi +44 -4
  75. data/rbi/context_dev/models/monitor_retrieve_response.rbi +44 -4
  76. data/rbi/context_dev/models/monitor_update_params.rbi +40 -2
  77. data/rbi/context_dev/models/monitor_update_response.rbi +44 -4
  78. data/rbi/context_dev/models/person_enrich_params.rbi +123 -13
  79. data/rbi/context_dev/models/person_enrich_response.rbi +16 -3
  80. data/rbi/context_dev/models/utility_prefetch_params.rbi +112 -13
  81. data/rbi/context_dev/models/web_answers_params.rbi +234 -0
  82. data/rbi/context_dev/models/web_answers_response.rbi +122 -0
  83. data/rbi/context_dev/models/web_extract_competitors_params.rbi +127 -13
  84. data/rbi/context_dev/models/web_extract_competitors_response.rbi +16 -3
  85. data/rbi/context_dev/models/web_extract_fonts_params.rbi +132 -19
  86. data/rbi/context_dev/models/web_extract_fonts_response.rbi +71 -0
  87. data/rbi/context_dev/models/web_extract_params.rbi +120 -13
  88. data/rbi/context_dev/models/web_extract_response.rbi +16 -3
  89. data/rbi/context_dev/models/web_extract_styleguide_params.rbi +136 -19
  90. data/rbi/context_dev/models/web_extract_styleguide_response.rbi +71 -0
  91. data/rbi/context_dev/models/web_screenshot_params.rbi +132 -17
  92. data/rbi/context_dev/models/web_screenshot_response.rbi +71 -0
  93. data/rbi/context_dev/models/web_search_params.rbi +253 -26
  94. data/rbi/context_dev/models/web_search_response.rbi +92 -6
  95. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +123 -13
  96. data/rbi/context_dev/models/web_web_crawl_md_response.rbi +19 -3
  97. data/rbi/context_dev/models/web_web_scrape_bytes_params.rbi +699 -0
  98. data/rbi/context_dev/models/web_web_scrape_bytes_response.rbi +238 -0
  99. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +132 -17
  100. data/rbi/context_dev/models/web_web_scrape_html_response.rbi +61 -0
  101. data/rbi/context_dev/models/web_web_scrape_images_params.rbi +134 -17
  102. data/rbi/context_dev/models/web_web_scrape_images_response.rbi +89 -3
  103. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +130 -17
  104. data/rbi/context_dev/models/web_web_scrape_md_response.rbi +61 -0
  105. data/rbi/context_dev/models/web_web_scrape_sitemap_params.rbi +127 -13
  106. data/rbi/context_dev/models/web_web_scrape_sitemap_response.rbi +18 -3
  107. data/rbi/context_dev/models.rbi +4 -0
  108. data/rbi/context_dev/resources/ai.rbi +5 -5
  109. data/rbi/context_dev/resources/brand.rbi +9 -8
  110. data/rbi/context_dev/resources/industry.rbi +12 -10
  111. data/rbi/context_dev/resources/people.rbi +5 -5
  112. data/rbi/context_dev/resources/utility.rbi +5 -5
  113. data/rbi/context_dev/resources/web.rbi +170 -72
  114. data/sig/context_dev/models/ai_extract_product_params.rbs +44 -5
  115. data/sig/context_dev/models/ai_extract_product_response.rbs +7 -0
  116. data/sig/context_dev/models/ai_extract_products_params.rbs +88 -10
  117. data/sig/context_dev/models/ai_extract_products_response.rbs +7 -0
  118. data/sig/context_dev/models/brand_retrieve_params.rbs +264 -30
  119. data/sig/context_dev/models/brand_retrieve_response.rbs +7 -0
  120. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +44 -5
  121. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +7 -0
  122. data/sig/context_dev/models/industry_retrieve_naics_params.rbs +44 -5
  123. data/sig/context_dev/models/industry_retrieve_naics_response.rbs +7 -0
  124. data/sig/context_dev/models/industry_retrieve_sic_params.rbs +44 -5
  125. data/sig/context_dev/models/industry_retrieve_sic_response.rbs +7 -0
  126. data/sig/context_dev/models/monitor_create_params.rbs +14 -0
  127. data/sig/context_dev/models/monitor_create_response.rbs +14 -0
  128. data/sig/context_dev/models/monitor_list_response.rbs +14 -0
  129. data/sig/context_dev/models/monitor_retrieve_response.rbs +14 -0
  130. data/sig/context_dev/models/monitor_update_params.rbs +14 -0
  131. data/sig/context_dev/models/monitor_update_response.rbs +14 -0
  132. data/sig/context_dev/models/person_enrich_params.rbs +44 -5
  133. data/sig/context_dev/models/person_enrich_response.rbs +10 -3
  134. data/sig/context_dev/models/utility_prefetch_params.rbs +43 -5
  135. data/sig/context_dev/models/web_answers_params.rbs +106 -0
  136. data/sig/context_dev/models/web_answers_response.rbs +60 -0
  137. data/sig/context_dev/models/web_extract_competitors_params.rbs +44 -5
  138. data/sig/context_dev/models/web_extract_competitors_response.rbs +10 -3
  139. data/sig/context_dev/models/web_extract_fonts_params.rbs +44 -5
  140. data/sig/context_dev/models/web_extract_fonts_response.rbs +20 -0
  141. data/sig/context_dev/models/web_extract_params.rbs +44 -5
  142. data/sig/context_dev/models/web_extract_response.rbs +10 -3
  143. data/sig/context_dev/models/web_extract_styleguide_params.rbs +44 -5
  144. data/sig/context_dev/models/web_extract_styleguide_response.rbs +20 -0
  145. data/sig/context_dev/models/web_screenshot_params.rbs +44 -5
  146. data/sig/context_dev/models/web_screenshot_response.rbs +20 -0
  147. data/sig/context_dev/models/web_search_params.rbs +88 -10
  148. data/sig/context_dev/models/web_search_response.rbs +33 -6
  149. data/sig/context_dev/models/web_web_crawl_md_params.rbs +44 -5
  150. data/sig/context_dev/models/web_web_crawl_md_response.rbs +10 -3
  151. data/sig/context_dev/models/web_web_scrape_bytes_params.rbs +531 -0
  152. data/sig/context_dev/models/web_web_scrape_bytes_response.rbs +108 -0
  153. data/sig/context_dev/models/web_web_scrape_html_params.rbs +44 -5
  154. data/sig/context_dev/models/web_web_scrape_html_response.rbs +16 -0
  155. data/sig/context_dev/models/web_web_scrape_images_params.rbs +44 -5
  156. data/sig/context_dev/models/web_web_scrape_images_response.rbs +30 -3
  157. data/sig/context_dev/models/web_web_scrape_md_params.rbs +44 -5
  158. data/sig/context_dev/models/web_web_scrape_md_response.rbs +16 -0
  159. data/sig/context_dev/models/web_web_scrape_sitemap_params.rbs +44 -5
  160. data/sig/context_dev/models/web_web_scrape_sitemap_response.rbs +10 -3
  161. data/sig/context_dev/models.rbs +4 -0
  162. data/sig/context_dev/resources/ai.rbs +1 -1
  163. data/sig/context_dev/resources/brand.rbs +1 -1
  164. data/sig/context_dev/resources/industry.rbs +2 -2
  165. data/sig/context_dev/resources/people.rbs +1 -1
  166. data/sig/context_dev/resources/utility.rbs +1 -1
  167. data/sig/context_dev/resources/web.rbs +30 -11
  168. metadata +14 -2
@@ -0,0 +1,238 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class WebWebScrapeBytesResponse < ContextDev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ ContextDev::Models::WebWebScrapeBytesResponse,
10
+ ContextDev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Base64-encoded resource bytes, without a data URI prefix. Decode this field to
15
+ # recover the downloaded file.
16
+ sig { returns(String) }
17
+ attr_accessor :bytes
18
+
19
+ # Number of decoded resource bytes, before base64 encoding.
20
+ sig { returns(Integer) }
21
+ attr_accessor :content_length
22
+
23
+ # The Content-Type returned by the origin, including any charset. Defaults to
24
+ # application/octet-stream when absent.
25
+ sig { returns(String) }
26
+ attr_accessor :content_type
27
+
28
+ sig do
29
+ returns(
30
+ ContextDev::Models::WebWebScrapeBytesResponse::Encoding::TaggedSymbol
31
+ )
32
+ end
33
+ attr_accessor :encoding
34
+
35
+ # The resource URL after redirects.
36
+ sig { returns(String) }
37
+ attr_accessor :final_url
38
+
39
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
40
+ # it when contacting support about a failed request.
41
+ sig { returns(String) }
42
+ attr_accessor :request_id
43
+
44
+ # HTTP status returned by the origin.
45
+ sig { returns(Integer) }
46
+ attr_accessor :status_code
47
+
48
+ sig do
49
+ returns(
50
+ ContextDev::Models::WebWebScrapeBytesResponse::Success::TaggedBoolean
51
+ )
52
+ end
53
+ attr_accessor :success
54
+
55
+ # The requested resource URL.
56
+ sig { returns(String) }
57
+ attr_accessor :url
58
+
59
+ # Credit usage, included whenever a valid API key is provided.
60
+ sig do
61
+ returns(
62
+ T.nilable(ContextDev::Models::WebWebScrapeBytesResponse::KeyMetadata)
63
+ )
64
+ end
65
+ attr_reader :key_metadata
66
+
67
+ sig do
68
+ params(
69
+ key_metadata:
70
+ ContextDev::Models::WebWebScrapeBytesResponse::KeyMetadata::OrHash
71
+ ).void
72
+ end
73
+ attr_writer :key_metadata
74
+
75
+ sig do
76
+ params(
77
+ bytes: String,
78
+ content_length: Integer,
79
+ content_type: String,
80
+ encoding:
81
+ ContextDev::Models::WebWebScrapeBytesResponse::Encoding::OrSymbol,
82
+ final_url: String,
83
+ request_id: String,
84
+ status_code: Integer,
85
+ success:
86
+ ContextDev::Models::WebWebScrapeBytesResponse::Success::OrBoolean,
87
+ url: String,
88
+ key_metadata:
89
+ ContextDev::Models::WebWebScrapeBytesResponse::KeyMetadata::OrHash
90
+ ).returns(T.attached_class)
91
+ end
92
+ def self.new(
93
+ # Base64-encoded resource bytes, without a data URI prefix. Decode this field to
94
+ # recover the downloaded file.
95
+ bytes:,
96
+ # Number of decoded resource bytes, before base64 encoding.
97
+ content_length:,
98
+ # The Content-Type returned by the origin, including any charset. Defaults to
99
+ # application/octet-stream when absent.
100
+ content_type:,
101
+ encoding:,
102
+ # The resource URL after redirects.
103
+ final_url:,
104
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
105
+ # it when contacting support about a failed request.
106
+ request_id:,
107
+ # HTTP status returned by the origin.
108
+ status_code:,
109
+ success:,
110
+ # The requested resource URL.
111
+ url:,
112
+ # Credit usage, included whenever a valid API key is provided.
113
+ key_metadata: nil
114
+ )
115
+ end
116
+
117
+ sig do
118
+ override.returns(
119
+ {
120
+ bytes: String,
121
+ content_length: Integer,
122
+ content_type: String,
123
+ encoding:
124
+ ContextDev::Models::WebWebScrapeBytesResponse::Encoding::TaggedSymbol,
125
+ final_url: String,
126
+ request_id: String,
127
+ status_code: Integer,
128
+ success:
129
+ ContextDev::Models::WebWebScrapeBytesResponse::Success::TaggedBoolean,
130
+ url: String,
131
+ key_metadata:
132
+ ContextDev::Models::WebWebScrapeBytesResponse::KeyMetadata
133
+ }
134
+ )
135
+ end
136
+ def to_hash
137
+ end
138
+
139
+ module Encoding
140
+ extend ContextDev::Internal::Type::Enum
141
+
142
+ TaggedSymbol =
143
+ T.type_alias do
144
+ T.all(
145
+ Symbol,
146
+ ContextDev::Models::WebWebScrapeBytesResponse::Encoding
147
+ )
148
+ end
149
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
150
+
151
+ BASE64 =
152
+ T.let(
153
+ :base64,
154
+ ContextDev::Models::WebWebScrapeBytesResponse::Encoding::TaggedSymbol
155
+ )
156
+
157
+ sig do
158
+ override.returns(
159
+ T::Array[
160
+ ContextDev::Models::WebWebScrapeBytesResponse::Encoding::TaggedSymbol
161
+ ]
162
+ )
163
+ end
164
+ def self.values
165
+ end
166
+ end
167
+
168
+ module Success
169
+ extend ContextDev::Internal::Type::Enum
170
+
171
+ TaggedBoolean =
172
+ T.type_alias do
173
+ T.all(
174
+ T::Boolean,
175
+ ContextDev::Models::WebWebScrapeBytesResponse::Success
176
+ )
177
+ end
178
+ OrBoolean = T.type_alias { T::Boolean }
179
+
180
+ TRUE =
181
+ T.let(
182
+ true,
183
+ ContextDev::Models::WebWebScrapeBytesResponse::Success::TaggedBoolean
184
+ )
185
+
186
+ sig do
187
+ override.returns(
188
+ T::Array[
189
+ ContextDev::Models::WebWebScrapeBytesResponse::Success::TaggedBoolean
190
+ ]
191
+ )
192
+ end
193
+ def self.values
194
+ end
195
+ end
196
+
197
+ class KeyMetadata < ContextDev::Internal::Type::BaseModel
198
+ OrHash =
199
+ T.type_alias do
200
+ T.any(
201
+ ContextDev::Models::WebWebScrapeBytesResponse::KeyMetadata,
202
+ ContextDev::Internal::AnyHash
203
+ )
204
+ end
205
+
206
+ # Credits used by this request.
207
+ sig { returns(Integer) }
208
+ attr_accessor :credits_consumed
209
+
210
+ # Credits remaining for your organization.
211
+ sig { returns(Integer) }
212
+ attr_accessor :credits_remaining
213
+
214
+ # Credit usage, included whenever a valid API key is provided.
215
+ sig do
216
+ params(credits_consumed: Integer, credits_remaining: Integer).returns(
217
+ T.attached_class
218
+ )
219
+ end
220
+ def self.new(
221
+ # Credits used by this request.
222
+ credits_consumed:,
223
+ # Credits remaining for your organization.
224
+ credits_remaining:
225
+ )
226
+ end
227
+
228
+ sig do
229
+ override.returns(
230
+ { credits_consumed: Integer, credits_remaining: Integer }
231
+ )
232
+ end
233
+ def to_hash
234
+ end
235
+ end
236
+ end
237
+ end
238
+ end
@@ -111,14 +111,20 @@ module ContextDev
111
111
  sig { params(tags: T::Array[String]).void }
112
112
  attr_writer :tags
113
113
 
114
- # Optional timeout in milliseconds for the request. If the request takes longer
115
- # than this value, it will be aborted with a 408 status code. Maximum allowed
116
- # value is 300000ms (5 minutes).
117
- sig { returns(T.nilable(Integer)) }
118
- attr_reader :timeout_ms
114
+ # Optional request deadline and behavior on timeout. For GET requests, use
115
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
116
+ # timeoutOpts object.
117
+ sig do
118
+ returns(T.nilable(ContextDev::WebWebScrapeHTMLParams::TimeoutOpts))
119
+ end
120
+ attr_reader :timeout_opts
119
121
 
120
- sig { params(timeout_ms: Integer).void }
121
- attr_writer :timeout_ms
122
+ sig do
123
+ params(
124
+ timeout_opts: ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::OrHash
125
+ ).void
126
+ end
127
+ attr_writer :timeout_opts
122
128
 
123
129
  # When true, return only the page's main content in the HTML response, excluding
124
130
  # headers, footers, sidebars, and navigation when detectable.
@@ -129,8 +135,8 @@ module ContextDev
129
135
  attr_writer :use_main_content_only
130
136
 
131
137
  # Optional browser wait time in milliseconds after initial page load. Min: 0. Max:
132
- # 30000 (30 seconds). When combined with timeoutMS, timeoutMS must be at least
133
- # waitForMs + 10000 ms; a shorter deadline is rejected with 400
138
+ # 30000 (30 seconds). When combined with timeoutOpts, timeoutOpts.milliseconds
139
+ # must be at least waitForMs + 10000 ms; a shorter deadline is rejected with 400
134
140
  # TIMEOUT_TOO_SHORT_FOR_WAIT.
135
141
  sig { returns(T.nilable(Integer)) }
136
142
  attr_accessor :wait_for_ms
@@ -171,7 +177,7 @@ module ContextDev
171
177
  pdf: ContextDev::WebWebScrapeHTMLParams::Pdf::OrHash,
172
178
  settle_animations: T::Boolean,
173
179
  tags: T::Array[String],
174
- timeout_ms: Integer,
180
+ timeout_opts: ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::OrHash,
175
181
  use_main_content_only: T::Boolean,
176
182
  wait_for_ms: T.nilable(Integer),
177
183
  zdr: ContextDev::WebWebScrapeHTMLParams::Zdr::OrSymbol,
@@ -216,16 +222,16 @@ module ContextDev
216
222
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
217
223
  # characters.
218
224
  tags: nil,
219
- # Optional timeout in milliseconds for the request. If the request takes longer
220
- # than this value, it will be aborted with a 408 status code. Maximum allowed
221
- # value is 300000ms (5 minutes).
222
- timeout_ms: nil,
225
+ # Optional request deadline and behavior on timeout. For GET requests, use
226
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
227
+ # timeoutOpts object.
228
+ timeout_opts: nil,
223
229
  # When true, return only the page's main content in the HTML response, excluding
224
230
  # headers, footers, sidebars, and navigation when detectable.
225
231
  use_main_content_only: nil,
226
232
  # Optional browser wait time in milliseconds after initial page load. Min: 0. Max:
227
- # 30000 (30 seconds). When combined with timeoutMS, timeoutMS must be at least
228
- # waitForMs + 10000 ms; a shorter deadline is rejected with 400
233
+ # 30000 (30 seconds). When combined with timeoutOpts, timeoutOpts.milliseconds
234
+ # must be at least waitForMs + 10000 ms; a shorter deadline is rejected with 400
229
235
  # TIMEOUT_TOO_SHORT_FOR_WAIT.
230
236
  wait_for_ms: nil,
231
237
  # Set to enabled to bypass shared caches and omit request and response content
@@ -260,7 +266,7 @@ module ContextDev
260
266
  pdf: ContextDev::WebWebScrapeHTMLParams::Pdf,
261
267
  settle_animations: T::Boolean,
262
268
  tags: T::Array[String],
263
- timeout_ms: Integer,
269
+ timeout_opts: ContextDev::WebWebScrapeHTMLParams::TimeoutOpts,
264
270
  use_main_content_only: T::Boolean,
265
271
  wait_for_ms: T.nilable(Integer),
266
272
  zdr: ContextDev::WebWebScrapeHTMLParams::Zdr::OrSymbol,
@@ -1068,6 +1074,115 @@ module ContextDev
1068
1074
  end
1069
1075
  end
1070
1076
 
1077
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
1078
+ OrHash =
1079
+ T.type_alias do
1080
+ T.any(
1081
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts,
1082
+ ContextDev::Internal::AnyHash
1083
+ )
1084
+ end
1085
+
1086
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
1087
+ sig { returns(Integer) }
1088
+ attr_accessor :milliseconds
1089
+
1090
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
1091
+ # credits. "return-partial" returns usable results collected so far; if none are
1092
+ # available, the request still fails without charging credits. Partial results are
1093
+ # not cached as complete results. "return-partial" requires milliseconds of at
1094
+ # least 15000.
1095
+ sig do
1096
+ returns(
1097
+ T.nilable(
1098
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::OrSymbol
1099
+ )
1100
+ )
1101
+ end
1102
+ attr_reader :behavior
1103
+
1104
+ sig do
1105
+ params(
1106
+ behavior:
1107
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::OrSymbol
1108
+ ).void
1109
+ end
1110
+ attr_writer :behavior
1111
+
1112
+ # Optional request deadline and behavior on timeout. For GET requests, use
1113
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
1114
+ # timeoutOpts object.
1115
+ sig do
1116
+ params(
1117
+ milliseconds: Integer,
1118
+ behavior:
1119
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::OrSymbol
1120
+ ).returns(T.attached_class)
1121
+ end
1122
+ def self.new(
1123
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
1124
+ milliseconds:,
1125
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
1126
+ # credits. "return-partial" returns usable results collected so far; if none are
1127
+ # available, the request still fails without charging credits. Partial results are
1128
+ # not cached as complete results. "return-partial" requires milliseconds of at
1129
+ # least 15000.
1130
+ behavior: nil
1131
+ )
1132
+ end
1133
+
1134
+ sig do
1135
+ override.returns(
1136
+ {
1137
+ milliseconds: Integer,
1138
+ behavior:
1139
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::OrSymbol
1140
+ }
1141
+ )
1142
+ end
1143
+ def to_hash
1144
+ end
1145
+
1146
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
1147
+ # credits. "return-partial" returns usable results collected so far; if none are
1148
+ # available, the request still fails without charging credits. Partial results are
1149
+ # not cached as complete results. "return-partial" requires milliseconds of at
1150
+ # least 15000.
1151
+ module Behavior
1152
+ extend ContextDev::Internal::Type::Enum
1153
+
1154
+ TaggedSymbol =
1155
+ T.type_alias do
1156
+ T.all(
1157
+ Symbol,
1158
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior
1159
+ )
1160
+ end
1161
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1162
+
1163
+ FAIL =
1164
+ T.let(
1165
+ :fail,
1166
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::TaggedSymbol
1167
+ )
1168
+ RETURN_PARTIAL =
1169
+ T.let(
1170
+ :"return-partial",
1171
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::TaggedSymbol
1172
+ )
1173
+
1174
+ sig do
1175
+ override.returns(
1176
+ T::Array[
1177
+ ContextDev::WebWebScrapeHTMLParams::TimeoutOpts::Behavior::TaggedSymbol
1178
+ ]
1179
+ )
1180
+ end
1181
+ def self.values
1182
+ end
1183
+ end
1184
+ end
1185
+
1071
1186
  # Set to enabled to bypass shared caches and omit request and response content
1072
1187
  # from retained usage logs. Requires zero data retention to be enabled for your
1073
1188
  # organization (contact support@context.dev), otherwise the request fails with
@@ -27,6 +27,18 @@ module ContextDev
27
27
  end
28
28
  attr_writer :cache_metadata
29
29
 
30
+ # How complete the returned content is. `loaded` means the page finished the waits
31
+ # the request asked for. `still-loading` only occurs with
32
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
33
+ # reached first, so the content reflects the DOM at that moment and late-rendering
34
+ # parts may be missing. Partial results are billed at the base request cost.
35
+ sig do
36
+ returns(
37
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
38
+ )
39
+ end
40
+ attr_accessor :final_dom_state
41
+
30
42
  # The scraped content of the page. For normal pages this is the raw HTML. When the
31
43
  # page is a sitemap or feed served behind an XSL stylesheet (which browsers render
32
44
  # into HTML), this is the underlying XML instead — see the `type` field.
@@ -123,6 +135,8 @@ module ContextDev
123
135
  params(
124
136
  cache_metadata:
125
137
  ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::OrHash,
138
+ final_dom_state:
139
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::OrSymbol,
126
140
  html: String,
127
141
  metadata:
128
142
  ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OrHash,
@@ -145,6 +159,12 @@ module ContextDev
145
159
  # cache-controlled fetch contributing to the output was a hit; age_ms is the
146
160
  # oldest contributing hit.
147
161
  cache_metadata:,
162
+ # How complete the returned content is. `loaded` means the page finished the waits
163
+ # the request asked for. `still-loading` only occurs with
164
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
165
+ # reached first, so the content reflects the DOM at that moment and late-rendering
166
+ # parts may be missing. Partial results are billed at the base request cost.
167
+ final_dom_state:,
148
168
  # The scraped content of the page. For normal pages this is the raw HTML. When the
149
169
  # page is a sitemap or feed served behind an XSL stylesheet (which browsers render
150
170
  # into HTML), this is the underlying XML instead — see the `type` field.
@@ -178,6 +198,8 @@ module ContextDev
178
198
  {
179
199
  cache_metadata:
180
200
  ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata,
201
+ final_dom_state:
202
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol,
181
203
  html: String,
182
204
  metadata: ContextDev::Models::WebWebScrapeHTMLResponse::Metadata,
183
205
  request_id: String,
@@ -294,6 +316,45 @@ module ContextDev
294
316
  end
295
317
  end
296
318
 
319
+ # How complete the returned content is. `loaded` means the page finished the waits
320
+ # the request asked for. `still-loading` only occurs with
321
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
322
+ # reached first, so the content reflects the DOM at that moment and late-rendering
323
+ # parts may be missing. Partial results are billed at the base request cost.
324
+ module FinalDomState
325
+ extend ContextDev::Internal::Type::Enum
326
+
327
+ TaggedSymbol =
328
+ T.type_alias do
329
+ T.all(
330
+ Symbol,
331
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState
332
+ )
333
+ end
334
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
335
+
336
+ LOADED =
337
+ T.let(
338
+ :loaded,
339
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
340
+ )
341
+ STILL_LOADING =
342
+ T.let(
343
+ :"still-loading",
344
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
345
+ )
346
+
347
+ sig do
348
+ override.returns(
349
+ T::Array[
350
+ ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
351
+ ]
352
+ )
353
+ end
354
+ def self.values
355
+ end
356
+ end
357
+
297
358
  class Metadata < ContextDev::Internal::Type::BaseModel
298
359
  OrHash =
299
360
  T.type_alias do