context.dev 2.18.0 → 2.19.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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/lib/context_dev/client.rb +0 -4
  5. data/lib/context_dev/models/monitor_retrieve_run_params.rb +26 -0
  6. data/lib/context_dev/models/monitor_retrieve_run_response.rb +232 -0
  7. data/lib/context_dev/models/monitor_rotate_webhook_secret_params.rb +20 -0
  8. data/lib/context_dev/models/monitor_rotate_webhook_secret_response.rb +765 -0
  9. data/lib/context_dev/models/{web_web_scrape_sitemap_params.rb → web_map_urls_params.rb} +14 -14
  10. data/lib/context_dev/models/web_map_urls_response.rb +123 -0
  11. data/lib/context_dev/models/web_scrape_params.rb +906 -0
  12. data/lib/context_dev/models/web_scrape_response.rb +659 -0
  13. data/lib/context_dev/models/web_screenshot_params.rb +15 -1
  14. data/lib/context_dev/models/web_screenshot_response.rb +3 -3
  15. data/lib/context_dev/models.rb +8 -22
  16. data/lib/context_dev/resources/brand.rb +0 -36
  17. data/lib/context_dev/resources/monitors.rb +47 -0
  18. data/lib/context_dev/resources/web.rb +106 -486
  19. data/lib/context_dev/version.rb +1 -1
  20. data/lib/context_dev.rb +8 -23
  21. data/rbi/context_dev/client.rbi +0 -3
  22. data/rbi/context_dev/models/monitor_retrieve_run_params.rbi +46 -0
  23. data/rbi/context_dev/models/monitor_retrieve_run_response.rbi +452 -0
  24. data/rbi/context_dev/models/monitor_rotate_webhook_secret_params.rbi +38 -0
  25. data/rbi/context_dev/models/monitor_rotate_webhook_secret_response.rbi +1367 -0
  26. data/rbi/context_dev/models/{web_web_scrape_sitemap_params.rbi → web_map_urls_params.rbi} +23 -45
  27. data/rbi/context_dev/models/web_map_urls_response.rbi +226 -0
  28. data/rbi/context_dev/models/web_scrape_params.rbi +2000 -0
  29. data/rbi/context_dev/models/{web_web_scrape_html_response.rbi → web_scrape_response.rbi} +539 -510
  30. data/rbi/context_dev/models/web_screenshot_params.rbi +23 -0
  31. data/rbi/context_dev/models/web_screenshot_response.rbi +4 -4
  32. data/rbi/context_dev/models.rbi +9 -24
  33. data/rbi/context_dev/resources/brand.rbi +0 -35
  34. data/rbi/context_dev/resources/monitors.rbi +24 -0
  35. data/rbi/context_dev/resources/web.rbi +135 -654
  36. data/sig/context_dev/client.rbs +0 -2
  37. data/sig/context_dev/models/monitor_retrieve_run_params.rbs +28 -0
  38. data/sig/context_dev/models/monitor_retrieve_run_response.rbs +182 -0
  39. data/sig/context_dev/models/monitor_rotate_webhook_secret_params.rbs +23 -0
  40. data/sig/context_dev/models/monitor_rotate_webhook_secret_response.rbs +545 -0
  41. data/sig/context_dev/models/{web_web_scrape_sitemap_params.rbs → web_map_urls_params.rbs} +22 -22
  42. data/sig/context_dev/models/web_map_urls_response.rbs +125 -0
  43. data/sig/context_dev/models/web_scrape_params.rbs +834 -0
  44. data/sig/context_dev/models/web_scrape_response.rbs +552 -0
  45. data/sig/context_dev/models/web_screenshot_params.rbs +7 -0
  46. data/sig/context_dev/models.rbs +8 -22
  47. data/sig/context_dev/resources/brand.rbs +0 -9
  48. data/sig/context_dev/resources/monitors.rbs +11 -0
  49. data/sig/context_dev/resources/web.rbs +30 -128
  50. metadata +26 -71
  51. data/lib/context_dev/models/ai_extract_product_params.rb +0 -125
  52. data/lib/context_dev/models/ai_extract_product_response.rb +0 -402
  53. data/lib/context_dev/models/ai_extract_products_params.rb +0 -233
  54. data/lib/context_dev/models/ai_extract_products_response.rb +0 -370
  55. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +0 -120
  56. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +0 -441
  57. data/lib/context_dev/models/web_extract_fonts_params.rb +0 -114
  58. data/lib/context_dev/models/web_extract_fonts_response.rb +0 -291
  59. data/lib/context_dev/models/web_extract_params.rb +0 -419
  60. data/lib/context_dev/models/web_extract_response.rb +0 -287
  61. data/lib/context_dev/models/web_web_scrape_bytes_params.rb +0 -346
  62. data/lib/context_dev/models/web_web_scrape_bytes_response.rb +0 -135
  63. data/lib/context_dev/models/web_web_scrape_html_params.rb +0 -812
  64. data/lib/context_dev/models/web_web_scrape_html_response.rb +0 -628
  65. data/lib/context_dev/models/web_web_scrape_images_params.rb +0 -373
  66. data/lib/context_dev/models/web_web_scrape_images_response.rb +0 -409
  67. data/lib/context_dev/models/web_web_scrape_md_params.rb +0 -670
  68. data/lib/context_dev/models/web_web_scrape_md_response.rb +0 -567
  69. data/lib/context_dev/models/web_web_scrape_screenshot_params.rb +0 -471
  70. data/lib/context_dev/models/web_web_scrape_screenshot_response.rb +0 -169
  71. data/lib/context_dev/models/web_web_scrape_sitemap_response.rb +0 -144
  72. data/lib/context_dev/resources/ai.rb +0 -71
  73. data/rbi/context_dev/models/ai_extract_product_params.rbi +0 -253
  74. data/rbi/context_dev/models/ai_extract_product_response.rbi +0 -791
  75. data/rbi/context_dev/models/ai_extract_products_params.rbi +0 -490
  76. data/rbi/context_dev/models/ai_extract_products_response.rbi +0 -718
  77. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +0 -256
  78. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +0 -1040
  79. data/rbi/context_dev/models/web_extract_fonts_params.rbi +0 -223
  80. data/rbi/context_dev/models/web_extract_fonts_response.rbi +0 -563
  81. data/rbi/context_dev/models/web_extract_params.rbi +0 -781
  82. data/rbi/context_dev/models/web_extract_response.rbi +0 -512
  83. data/rbi/context_dev/models/web_web_scrape_bytes_params.rbi +0 -702
  84. data/rbi/context_dev/models/web_web_scrape_bytes_response.rbi +0 -238
  85. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +0 -1690
  86. data/rbi/context_dev/models/web_web_scrape_images_params.rbi +0 -728
  87. data/rbi/context_dev/models/web_web_scrape_images_response.rbi +0 -910
  88. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +0 -1052
  89. data/rbi/context_dev/models/web_web_scrape_md_response.rbi +0 -1088
  90. data/rbi/context_dev/models/web_web_scrape_screenshot_params.rbi +0 -1580
  91. data/rbi/context_dev/models/web_web_scrape_screenshot_response.rbi +0 -332
  92. data/rbi/context_dev/models/web_web_scrape_sitemap_response.rbi +0 -258
  93. data/rbi/context_dev/resources/ai.rbi +0 -63
  94. data/sig/context_dev/models/ai_extract_product_params.rbs +0 -106
  95. data/sig/context_dev/models/ai_extract_product_response.rbs +0 -314
  96. data/sig/context_dev/models/ai_extract_products_params.rbs +0 -202
  97. data/sig/context_dev/models/ai_extract_products_response.rbs +0 -293
  98. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +0 -104
  99. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +0 -413
  100. data/sig/context_dev/models/web_extract_fonts_params.rbs +0 -93
  101. data/sig/context_dev/models/web_extract_fonts_response.rbs +0 -230
  102. data/sig/context_dev/models/web_extract_params.rbs +0 -324
  103. data/sig/context_dev/models/web_extract_response.rbs +0 -239
  104. data/sig/context_dev/models/web_web_scrape_bytes_params.rbs +0 -531
  105. data/sig/context_dev/models/web_web_scrape_bytes_response.rbs +0 -108
  106. data/sig/context_dev/models/web_web_scrape_html_params.rbs +0 -878
  107. data/sig/context_dev/models/web_web_scrape_html_response.rbs +0 -525
  108. data/sig/context_dev/models/web_web_scrape_images_params.rbs +0 -281
  109. data/sig/context_dev/models/web_web_scrape_images_response.rbs +0 -371
  110. data/sig/context_dev/models/web_web_scrape_md_params.rbs +0 -758
  111. data/sig/context_dev/models/web_web_scrape_md_response.rbs +0 -465
  112. data/sig/context_dev/models/web_web_scrape_screenshot_params.rbs +0 -619
  113. data/sig/context_dev/models/web_web_scrape_screenshot_response.rbs +0 -127
  114. data/sig/context_dev/models/web_web_scrape_sitemap_response.rbs +0 -117
  115. data/sig/context_dev/resources/ai.rbs +0 -21
@@ -2,235 +2,192 @@
2
2
 
3
3
  module ContextDev
4
4
  module Models
5
- class WebWebScrapeHTMLResponse < ContextDev::Internal::Type::BaseModel
5
+ class WebScrapeResponse < ContextDev::Internal::Type::BaseModel
6
6
  OrHash =
7
7
  T.type_alias do
8
8
  T.any(
9
- ContextDev::Models::WebWebScrapeHTMLResponse,
9
+ ContextDev::Models::WebScrapeResponse,
10
10
  ContextDev::Internal::AnyHash
11
11
  )
12
12
  end
13
13
 
14
+ # Original HTTP response body. Waiting, actions, and content filters never change
15
+ # it.
16
+ sig { returns(ContextDev::Models::WebScrapeResponse::Bytes) }
17
+ attr_reader :bytes
18
+
19
+ sig do
20
+ params(bytes: ContextDev::Models::WebScrapeResponse::Bytes::OrHash).void
21
+ end
22
+ attr_writer :bytes
23
+
14
24
  # Cache outcome for this response. Composite responses are hits only when every
15
25
  # cache-controlled fetch contributing to the output was a hit; age_ms is the
16
26
  # oldest contributing hit.
17
- sig do
18
- returns(ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata)
19
- end
27
+ sig { returns(ContextDev::Models::WebScrapeResponse::CacheMetadata) }
20
28
  attr_reader :cache_metadata
21
29
 
22
30
  sig do
23
31
  params(
24
32
  cache_metadata:
25
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::OrHash
33
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::OrHash
26
34
  ).void
27
35
  end
28
36
  attr_writer :cache_metadata
29
37
 
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.
38
+ # Rendered HTML after content filters.
39
+ sig { returns(ContextDev::Models::WebScrapeResponse::HTML) }
40
+ attr_reader :html
41
+
35
42
  sig do
36
- returns(
37
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
38
- )
43
+ params(html: ContextDev::Models::WebScrapeResponse::HTML::OrHash).void
39
44
  end
40
- attr_accessor :final_dom_state
41
-
42
- # The scraped content of the page. For normal pages this is the raw HTML. When the
43
- # page is a sitemap or feed served behind an XSL stylesheet (which browsers render
44
- # into HTML), this is the underlying XML instead — see the `type` field.
45
- sig { returns(String) }
46
- attr_accessor :html
45
+ attr_writer :html
47
46
 
48
- # Metadata extracted from the scraped page HTML.
49
- sig { returns(ContextDev::Models::WebWebScrapeHTMLResponse::Metadata) }
50
- attr_reader :metadata
47
+ # Images after content filters. Empty when none are found.
48
+ sig { returns(ContextDev::Models::WebScrapeResponse::Images) }
49
+ attr_reader :images
51
50
 
52
51
  sig do
53
52
  params(
54
- metadata:
55
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OrHash
53
+ images: ContextDev::Models::WebScrapeResponse::Images::OrHash
56
54
  ).void
57
55
  end
58
- attr_writer :metadata
56
+ attr_writer :images
59
57
 
60
- # Unique id of this API call, also sent in the X-Request-Id response header. Quote
61
- # it when contacting support about a failed request.
62
- sig { returns(String) }
63
- attr_accessor :request_id
58
+ # Markdown after content filters.
59
+ sig { returns(ContextDev::Models::WebScrapeResponse::Markdown) }
60
+ attr_reader :markdown
64
61
 
65
- # Indicates success
66
62
  sig do
67
- returns(
68
- ContextDev::Models::WebWebScrapeHTMLResponse::Success::TaggedBoolean
69
- )
63
+ params(
64
+ markdown: ContextDev::Models::WebScrapeResponse::Markdown::OrHash
65
+ ).void
70
66
  end
71
- attr_accessor :success
67
+ attr_writer :markdown
68
+
69
+ # Page details, when available.
70
+ sig { returns(ContextDev::Models::WebScrapeResponse::Metadata) }
71
+ attr_reader :metadata
72
72
 
73
- # Detected content type of the returned `html` field. Sitemaps and feeds are
74
- # surfaced as `xml`; ordinary pages are `html`. Excel workbooks are surfaced as
75
- # `xlsx`/`xls` with the extracted sheets as HTML tables; PowerPoint presentations
76
- # are surfaced as `pptx`/`ppt` with the extracted slides as HTML.
77
73
  sig do
78
- returns(
79
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
80
- )
74
+ params(
75
+ metadata: ContextDev::Models::WebScrapeResponse::Metadata::OrHash
76
+ ).void
81
77
  end
82
- attr_accessor :type
78
+ attr_writer :metadata
83
79
 
84
- # The URL that was scraped
85
- sig { returns(String) }
86
- attr_accessor :url
80
+ # Fields produced by parseParams.rules, after shared content filters.
81
+ sig { returns(ContextDev::Models::WebScrapeResponse::Parsed) }
82
+ attr_reader :parsed
87
83
 
88
- # One verified outcome per requested browser action, in request order.
89
84
  sig do
90
- returns(
91
- T.nilable(
92
- T::Array[
93
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied
94
- ]
95
- )
96
- )
85
+ params(
86
+ parsed: ContextDev::Models::WebScrapeResponse::Parsed::OrHash
87
+ ).void
97
88
  end
98
- attr_reader :actions_applied
89
+ attr_writer :parsed
90
+
91
+ # Unique id of this API call, also sent in the X-Request-Id response header. Quote
92
+ # it when contacting support about a failed request.
93
+ sig { returns(String) }
94
+ attr_accessor :request_id
95
+
96
+ # An image data URL. Use directly as an image src.
97
+ sig { returns(ContextDev::Models::WebScrapeResponse::Screenshot) }
98
+ attr_reader :screenshot
99
99
 
100
100
  sig do
101
101
  params(
102
- actions_applied:
103
- T::Array[
104
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::OrHash
105
- ]
102
+ screenshot: ContextDev::Models::WebScrapeResponse::Screenshot::OrHash
106
103
  ).void
107
104
  end
108
- attr_writer :actions_applied
105
+ attr_writer :screenshot
109
106
 
110
- # True when an action was applied but the returned content could not be refreshed
111
- # afterward.
112
- sig { returns(T.nilable(T::Boolean)) }
113
- attr_reader :actions_html_stale
114
-
115
- sig { params(actions_html_stale: T::Boolean).void }
116
- attr_writer :actions_html_stale
107
+ # Final URL after redirects and browser actions.
108
+ sig { returns(String) }
109
+ attr_accessor :url
117
110
 
118
- # Present only when extractRules is supplied. Keys match the requested fields.
119
- # Values are normalized text, raw attribute strings, outer HTML, nested objects,
120
- # or lists. Missing items are null; lists with no matches are empty. Rules run on
121
- # the returned HTML after filtering.
111
+ # Present when return-partial captures a page that is still loading or returns
112
+ # images before image processing finishes. Partial responses are not cached.
122
113
  sig do
123
114
  returns(
124
115
  T.nilable(
125
- T::Hash[
126
- Symbol,
127
- T.nilable(
128
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::Variants
129
- )
130
- ]
116
+ ContextDev::Models::WebScrapeResponse::IsPartial::TaggedBoolean
131
117
  )
132
118
  )
133
119
  end
134
- attr_reader :extracted
120
+ attr_reader :is_partial
135
121
 
136
122
  sig do
137
123
  params(
138
- extracted:
139
- T::Hash[
140
- Symbol,
141
- T.nilable(
142
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::Variants
143
- )
144
- ]
124
+ is_partial:
125
+ ContextDev::Models::WebScrapeResponse::IsPartial::OrBoolean
145
126
  ).void
146
127
  end
147
- attr_writer :extracted
128
+ attr_writer :is_partial
148
129
 
149
130
  # Credit usage, included whenever a valid API key is provided.
150
131
  sig do
151
- returns(
152
- T.nilable(ContextDev::Models::WebWebScrapeHTMLResponse::KeyMetadata)
153
- )
132
+ returns(T.nilable(ContextDev::Models::WebScrapeResponse::KeyMetadata))
154
133
  end
155
134
  attr_reader :key_metadata
156
135
 
157
136
  sig do
158
137
  params(
159
138
  key_metadata:
160
- ContextDev::Models::WebWebScrapeHTMLResponse::KeyMetadata::OrHash
139
+ ContextDev::Models::WebScrapeResponse::KeyMetadata::OrHash
161
140
  ).void
162
141
  end
163
142
  attr_writer :key_metadata
164
143
 
165
144
  sig do
166
145
  params(
146
+ bytes: ContextDev::Models::WebScrapeResponse::Bytes::OrHash,
167
147
  cache_metadata:
168
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::OrHash,
169
- final_dom_state:
170
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::OrSymbol,
171
- html: String,
172
- metadata:
173
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OrHash,
148
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::OrHash,
149
+ html: ContextDev::Models::WebScrapeResponse::HTML::OrHash,
150
+ images: ContextDev::Models::WebScrapeResponse::Images::OrHash,
151
+ markdown: ContextDev::Models::WebScrapeResponse::Markdown::OrHash,
152
+ metadata: ContextDev::Models::WebScrapeResponse::Metadata::OrHash,
153
+ parsed: ContextDev::Models::WebScrapeResponse::Parsed::OrHash,
174
154
  request_id: String,
175
- success:
176
- ContextDev::Models::WebWebScrapeHTMLResponse::Success::OrBoolean,
177
- type: ContextDev::Models::WebWebScrapeHTMLResponse::Type::OrSymbol,
155
+ screenshot: ContextDev::Models::WebScrapeResponse::Screenshot::OrHash,
178
156
  url: String,
179
- actions_applied:
180
- T::Array[
181
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::OrHash
182
- ],
183
- actions_html_stale: T::Boolean,
184
- extracted:
185
- T::Hash[
186
- Symbol,
187
- T.nilable(
188
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::Variants
189
- )
190
- ],
157
+ is_partial:
158
+ ContextDev::Models::WebScrapeResponse::IsPartial::OrBoolean,
191
159
  key_metadata:
192
- ContextDev::Models::WebWebScrapeHTMLResponse::KeyMetadata::OrHash
160
+ ContextDev::Models::WebScrapeResponse::KeyMetadata::OrHash
193
161
  ).returns(T.attached_class)
194
162
  end
195
163
  def self.new(
164
+ # Original HTTP response body. Waiting, actions, and content filters never change
165
+ # it.
166
+ bytes:,
196
167
  # Cache outcome for this response. Composite responses are hits only when every
197
168
  # cache-controlled fetch contributing to the output was a hit; age_ms is the
198
169
  # oldest contributing hit.
199
170
  cache_metadata:,
200
- # How complete the returned content is. `loaded` means the page finished the waits
201
- # the request asked for. `still-loading` only occurs with
202
- # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
203
- # reached first, so the content reflects the DOM at that moment and late-rendering
204
- # parts may be missing. Partial results are billed at the base request cost.
205
- final_dom_state:,
206
- # The scraped content of the page. For normal pages this is the raw HTML. When the
207
- # page is a sitemap or feed served behind an XSL stylesheet (which browsers render
208
- # into HTML), this is the underlying XML instead — see the `type` field.
171
+ # Rendered HTML after content filters.
209
172
  html:,
210
- # Metadata extracted from the scraped page HTML.
173
+ # Images after content filters. Empty when none are found.
174
+ images:,
175
+ # Markdown after content filters.
176
+ markdown:,
177
+ # Page details, when available.
211
178
  metadata:,
179
+ # Fields produced by parseParams.rules, after shared content filters.
180
+ parsed:,
212
181
  # Unique id of this API call, also sent in the X-Request-Id response header. Quote
213
182
  # it when contacting support about a failed request.
214
183
  request_id:,
215
- # Indicates success
216
- success:,
217
- # Detected content type of the returned `html` field. Sitemaps and feeds are
218
- # surfaced as `xml`; ordinary pages are `html`. Excel workbooks are surfaced as
219
- # `xlsx`/`xls` with the extracted sheets as HTML tables; PowerPoint presentations
220
- # are surfaced as `pptx`/`ppt` with the extracted slides as HTML.
221
- type:,
222
- # The URL that was scraped
184
+ # An image data URL. Use directly as an image src.
185
+ screenshot:,
186
+ # Final URL after redirects and browser actions.
223
187
  url:,
224
- # One verified outcome per requested browser action, in request order.
225
- actions_applied: nil,
226
- # True when an action was applied but the returned content could not be refreshed
227
- # afterward.
228
- actions_html_stale: nil,
229
- # Present only when extractRules is supplied. Keys match the requested fields.
230
- # Values are normalized text, raw attribute strings, outer HTML, nested objects,
231
- # or lists. Missing items are null; lists with no matches are empty. Rules run on
232
- # the returned HTML after filtering.
233
- extracted: nil,
188
+ # Present when return-partial captures a page that is still loading or returns
189
+ # images before image processing finishes. Partial responses are not cached.
190
+ is_partial: nil,
234
191
  # Credit usage, included whenever a valid API key is provided.
235
192
  key_metadata: nil
236
193
  )
@@ -239,43 +196,120 @@ module ContextDev
239
196
  sig do
240
197
  override.returns(
241
198
  {
199
+ bytes: ContextDev::Models::WebScrapeResponse::Bytes,
242
200
  cache_metadata:
243
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata,
244
- final_dom_state:
245
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol,
246
- html: String,
247
- metadata: ContextDev::Models::WebWebScrapeHTMLResponse::Metadata,
201
+ ContextDev::Models::WebScrapeResponse::CacheMetadata,
202
+ html: ContextDev::Models::WebScrapeResponse::HTML,
203
+ images: ContextDev::Models::WebScrapeResponse::Images,
204
+ markdown: ContextDev::Models::WebScrapeResponse::Markdown,
205
+ metadata: ContextDev::Models::WebScrapeResponse::Metadata,
206
+ parsed: ContextDev::Models::WebScrapeResponse::Parsed,
248
207
  request_id: String,
249
- success:
250
- ContextDev::Models::WebWebScrapeHTMLResponse::Success::TaggedBoolean,
251
- type:
252
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol,
208
+ screenshot: ContextDev::Models::WebScrapeResponse::Screenshot,
253
209
  url: String,
254
- actions_applied:
255
- T::Array[
256
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied
257
- ],
258
- actions_html_stale: T::Boolean,
259
- extracted:
260
- T::Hash[
261
- Symbol,
262
- T.nilable(
263
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::Variants
264
- )
265
- ],
266
- key_metadata:
267
- ContextDev::Models::WebWebScrapeHTMLResponse::KeyMetadata
210
+ is_partial:
211
+ ContextDev::Models::WebScrapeResponse::IsPartial::TaggedBoolean,
212
+ key_metadata: ContextDev::Models::WebScrapeResponse::KeyMetadata
268
213
  }
269
214
  )
270
215
  end
271
216
  def to_hash
272
217
  end
273
218
 
219
+ class Bytes < ContextDev::Internal::Type::BaseModel
220
+ OrHash =
221
+ T.type_alias do
222
+ T.any(
223
+ ContextDev::Models::WebScrapeResponse::Bytes,
224
+ ContextDev::Internal::AnyHash
225
+ )
226
+ end
227
+
228
+ sig do
229
+ returns(T.nilable(ContextDev::Models::WebScrapeResponse::Bytes::Data))
230
+ end
231
+ attr_reader :data
232
+
233
+ sig do
234
+ params(
235
+ data:
236
+ T.nilable(
237
+ ContextDev::Models::WebScrapeResponse::Bytes::Data::OrHash
238
+ )
239
+ ).void
240
+ end
241
+ attr_writer :data
242
+
243
+ sig { returns(T::Boolean) }
244
+ attr_accessor :requested
245
+
246
+ # Original HTTP response body. Waiting, actions, and content filters never change
247
+ # it.
248
+ sig do
249
+ params(
250
+ data:
251
+ T.nilable(
252
+ ContextDev::Models::WebScrapeResponse::Bytes::Data::OrHash
253
+ ),
254
+ requested: T::Boolean
255
+ ).returns(T.attached_class)
256
+ end
257
+ def self.new(data:, requested:)
258
+ end
259
+
260
+ sig do
261
+ override.returns(
262
+ {
263
+ data:
264
+ T.nilable(ContextDev::Models::WebScrapeResponse::Bytes::Data),
265
+ requested: T::Boolean
266
+ }
267
+ )
268
+ end
269
+ def to_hash
270
+ end
271
+
272
+ class Data < ContextDev::Internal::Type::BaseModel
273
+ OrHash =
274
+ T.type_alias do
275
+ T.any(
276
+ ContextDev::Models::WebScrapeResponse::Bytes::Data,
277
+ ContextDev::Internal::AnyHash
278
+ )
279
+ end
280
+
281
+ # Original response body as base64, after HTTP decompression. Maximum decoded
282
+ # size: 20 MiB.
283
+ sig { returns(String) }
284
+ attr_accessor :base64
285
+
286
+ sig { returns(String) }
287
+ attr_accessor :content_type
288
+
289
+ sig do
290
+ params(base64: String, content_type: String).returns(
291
+ T.attached_class
292
+ )
293
+ end
294
+ def self.new(
295
+ # Original response body as base64, after HTTP decompression. Maximum decoded
296
+ # size: 20 MiB.
297
+ base64:,
298
+ content_type:
299
+ )
300
+ end
301
+
302
+ sig { override.returns({ base64: String, content_type: String }) }
303
+ def to_hash
304
+ end
305
+ end
306
+ end
307
+
274
308
  class CacheMetadata < ContextDev::Internal::Type::BaseModel
275
309
  OrHash =
276
310
  T.type_alias do
277
311
  T.any(
278
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata,
312
+ ContextDev::Models::WebScrapeResponse::CacheMetadata,
279
313
  ContextDev::Internal::AnyHash
280
314
  )
281
315
  end
@@ -288,7 +322,7 @@ module ContextDev
288
322
  # zero-data-retention cache bypass.
289
323
  sig do
290
324
  returns(
291
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::TaggedSymbol
325
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::TaggedSymbol
292
326
  )
293
327
  end
294
328
  attr_accessor :status
@@ -300,7 +334,7 @@ module ContextDev
300
334
  params(
301
335
  age_ms: Integer,
302
336
  status:
303
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::OrSymbol
337
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::OrSymbol
304
338
  ).returns(T.attached_class)
305
339
  end
306
340
  def self.new(
@@ -317,7 +351,7 @@ module ContextDev
317
351
  {
318
352
  age_ms: Integer,
319
353
  status:
320
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::TaggedSymbol
354
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::TaggedSymbol
321
355
  }
322
356
  )
323
357
  end
@@ -333,7 +367,7 @@ module ContextDev
333
367
  T.type_alias do
334
368
  T.all(
335
369
  Symbol,
336
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status
370
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status
337
371
  )
338
372
  end
339
373
  OrSymbol = T.type_alias { T.any(Symbol, String) }
@@ -341,23 +375,23 @@ module ContextDev
341
375
  HIT =
342
376
  T.let(
343
377
  :hit,
344
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::TaggedSymbol
378
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::TaggedSymbol
345
379
  )
346
380
  MISS =
347
381
  T.let(
348
382
  :miss,
349
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::TaggedSymbol
383
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::TaggedSymbol
350
384
  )
351
385
  ZDR =
352
386
  T.let(
353
387
  :zdr,
354
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::TaggedSymbol
388
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::TaggedSymbol
355
389
  )
356
390
 
357
391
  sig do
358
392
  override.returns(
359
393
  T::Array[
360
- ContextDev::Models::WebWebScrapeHTMLResponse::CacheMetadata::Status::TaggedSymbol
394
+ ContextDev::Models::WebScrapeResponse::CacheMetadata::Status::TaggedSymbol
361
395
  ]
362
396
  )
363
397
  end
@@ -366,62 +400,287 @@ module ContextDev
366
400
  end
367
401
  end
368
402
 
369
- # How complete the returned content is. `loaded` means the page finished the waits
370
- # the request asked for. `still-loading` only occurs with
371
- # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
372
- # reached first, so the content reflects the DOM at that moment and late-rendering
373
- # parts may be missing. Partial results are billed at the base request cost.
374
- module FinalDomState
375
- extend ContextDev::Internal::Type::Enum
376
-
377
- TaggedSymbol =
403
+ class HTML < ContextDev::Internal::Type::BaseModel
404
+ OrHash =
378
405
  T.type_alias do
379
- T.all(
380
- Symbol,
381
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState
406
+ T.any(
407
+ ContextDev::Models::WebScrapeResponse::HTML,
408
+ ContextDev::Internal::AnyHash
382
409
  )
383
410
  end
384
- OrSymbol = T.type_alias { T.any(Symbol, String) }
385
411
 
386
- LOADED =
387
- T.let(
388
- :loaded,
389
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
412
+ sig { returns(T.nilable(String)) }
413
+ attr_accessor :data
414
+
415
+ sig { returns(T::Boolean) }
416
+ attr_accessor :requested
417
+
418
+ # Rendered HTML after content filters.
419
+ sig do
420
+ params(data: T.nilable(String), requested: T::Boolean).returns(
421
+ T.attached_class
390
422
  )
391
- STILL_LOADING =
392
- T.let(
393
- :"still-loading",
394
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
423
+ end
424
+ def self.new(data:, requested:)
425
+ end
426
+
427
+ sig do
428
+ override.returns({ data: T.nilable(String), requested: T::Boolean })
429
+ end
430
+ def to_hash
431
+ end
432
+ end
433
+
434
+ class Images < ContextDev::Internal::Type::BaseModel
435
+ OrHash =
436
+ T.type_alias do
437
+ T.any(
438
+ ContextDev::Models::WebScrapeResponse::Images,
439
+ ContextDev::Internal::AnyHash
440
+ )
441
+ end
442
+
443
+ sig do
444
+ returns(
445
+ T.nilable(
446
+ T::Array[ContextDev::Models::WebScrapeResponse::Images::Data]
447
+ )
395
448
  )
449
+ end
450
+ attr_accessor :data
451
+
452
+ sig { returns(T::Boolean) }
453
+ attr_accessor :requested
454
+
455
+ # Images after content filters. Empty when none are found.
456
+ sig do
457
+ params(
458
+ data:
459
+ T.nilable(
460
+ T::Array[
461
+ ContextDev::Models::WebScrapeResponse::Images::Data::OrHash
462
+ ]
463
+ ),
464
+ requested: T::Boolean
465
+ ).returns(T.attached_class)
466
+ end
467
+ def self.new(data:, requested:)
468
+ end
396
469
 
397
470
  sig do
398
471
  override.returns(
399
- T::Array[
400
- ContextDev::Models::WebWebScrapeHTMLResponse::FinalDomState::TaggedSymbol
401
- ]
472
+ {
473
+ data:
474
+ T.nilable(
475
+ T::Array[ContextDev::Models::WebScrapeResponse::Images::Data]
476
+ ),
477
+ requested: T::Boolean
478
+ }
402
479
  )
403
480
  end
404
- def self.values
481
+ def to_hash
482
+ end
483
+
484
+ class Data < ContextDev::Internal::Type::BaseModel
485
+ OrHash =
486
+ T.type_alias do
487
+ T.any(
488
+ ContextDev::Models::WebScrapeResponse::Images::Data,
489
+ ContextDev::Internal::AnyHash
490
+ )
491
+ end
492
+
493
+ # Alt text, if present.
494
+ sig { returns(T.nilable(String)) }
495
+ attr_accessor :alt
496
+
497
+ # Image URL, or a data URI for inline images.
498
+ sig { returns(String) }
499
+ attr_accessor :url
500
+
501
+ sig do
502
+ returns(
503
+ T.nilable(
504
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
505
+ )
506
+ )
507
+ end
508
+ attr_reader :classification
509
+
510
+ sig do
511
+ params(
512
+ classification:
513
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::OrSymbol
514
+ ).void
515
+ end
516
+ attr_writer :classification
517
+
518
+ # Hosted copy when file enrichment is requested and zdr is disabled. Valid for 24
519
+ # hours from the original capture.
520
+ sig { returns(T.nilable(String)) }
521
+ attr_reader :file_url
522
+
523
+ sig { params(file_url: String).void }
524
+ attr_writer :file_url
525
+
526
+ sig { returns(T.nilable(Integer)) }
527
+ attr_reader :height
528
+
529
+ sig { params(height: Integer).void }
530
+ attr_writer :height
531
+
532
+ sig { returns(T.nilable(Integer)) }
533
+ attr_reader :width
534
+
535
+ sig { params(width: Integer).void }
536
+ attr_writer :width
537
+
538
+ sig do
539
+ params(
540
+ alt: T.nilable(String),
541
+ url: String,
542
+ classification:
543
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::OrSymbol,
544
+ file_url: String,
545
+ height: Integer,
546
+ width: Integer
547
+ ).returns(T.attached_class)
548
+ end
549
+ def self.new(
550
+ # Alt text, if present.
551
+ alt:,
552
+ # Image URL, or a data URI for inline images.
553
+ url:,
554
+ classification: nil,
555
+ # Hosted copy when file enrichment is requested and zdr is disabled. Valid for 24
556
+ # hours from the original capture.
557
+ file_url: nil,
558
+ height: nil,
559
+ width: nil
560
+ )
561
+ end
562
+
563
+ sig do
564
+ override.returns(
565
+ {
566
+ alt: T.nilable(String),
567
+ url: String,
568
+ classification:
569
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol,
570
+ file_url: String,
571
+ height: Integer,
572
+ width: Integer
573
+ }
574
+ )
575
+ end
576
+ def to_hash
577
+ end
578
+
579
+ module Classification
580
+ extend ContextDev::Internal::Type::Enum
581
+
582
+ TaggedSymbol =
583
+ T.type_alias do
584
+ T.all(
585
+ Symbol,
586
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification
587
+ )
588
+ end
589
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
590
+
591
+ PHOTOGRAPHY =
592
+ T.let(
593
+ :photography,
594
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
595
+ )
596
+ ILLUSTRATION =
597
+ T.let(
598
+ :illustration,
599
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
600
+ )
601
+ LOGO =
602
+ T.let(
603
+ :logo,
604
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
605
+ )
606
+ WORDMARK =
607
+ T.let(
608
+ :wordmark,
609
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
610
+ )
611
+ ICON =
612
+ T.let(
613
+ :icon,
614
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
615
+ )
616
+ PATTERN =
617
+ T.let(
618
+ :pattern,
619
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
620
+ )
621
+ GRAPHIC =
622
+ T.let(
623
+ :graphic,
624
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
625
+ )
626
+ OTHER =
627
+ T.let(
628
+ :other,
629
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
630
+ )
631
+
632
+ sig do
633
+ override.returns(
634
+ T::Array[
635
+ ContextDev::Models::WebScrapeResponse::Images::Data::Classification::TaggedSymbol
636
+ ]
637
+ )
638
+ end
639
+ def self.values
640
+ end
641
+ end
405
642
  end
406
643
  end
407
644
 
408
- class Metadata < ContextDev::Internal::Type::BaseModel
645
+ class Markdown < ContextDev::Internal::Type::BaseModel
409
646
  OrHash =
410
647
  T.type_alias do
411
648
  T.any(
412
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata,
649
+ ContextDev::Models::WebScrapeResponse::Markdown,
413
650
  ContextDev::Internal::AnyHash
414
651
  )
415
652
  end
416
653
 
417
- # Final URL scraped after redirects or scraper fallback, when known. Falls back to
418
- # sourceUrl when unavailable.
419
- sig { returns(String) }
420
- attr_accessor :final_url
654
+ sig { returns(T.nilable(String)) }
655
+ attr_accessor :data
656
+
657
+ sig { returns(T::Boolean) }
658
+ attr_accessor :requested
421
659
 
422
- # Original URL requested by the caller.
423
- sig { returns(String) }
424
- attr_accessor :source_url
660
+ # Markdown after content filters.
661
+ sig do
662
+ params(data: T.nilable(String), requested: T::Boolean).returns(
663
+ T.attached_class
664
+ )
665
+ end
666
+ def self.new(data:, requested:)
667
+ end
668
+
669
+ sig do
670
+ override.returns({ data: T.nilable(String), requested: T::Boolean })
671
+ end
672
+ def to_hash
673
+ end
674
+ end
675
+
676
+ class Metadata < ContextDev::Internal::Type::BaseModel
677
+ OrHash =
678
+ T.type_alias do
679
+ T.any(
680
+ ContextDev::Models::WebScrapeResponse::Metadata,
681
+ ContextDev::Internal::AnyHash
682
+ )
683
+ end
425
684
 
426
685
  # Additional non-social meta tags not promoted to top-level metadata fields.
427
686
  sig do
@@ -429,7 +688,7 @@ module ContextDev
429
688
  T.nilable(
430
689
  T::Hash[
431
690
  Symbol,
432
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::AdditionalMeta::Variants
691
+ ContextDev::Models::WebScrapeResponse::Metadata::AdditionalMeta::Variants
433
692
  ]
434
693
  )
435
694
  )
@@ -441,7 +700,7 @@ module ContextDev
441
700
  additional_meta:
442
701
  T::Hash[
443
702
  Symbol,
444
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::AdditionalMeta::Variants
703
+ ContextDev::Models::WebScrapeResponse::Metadata::AdditionalMeta::Variants
445
704
  ]
446
705
  ).void
447
706
  end
@@ -452,7 +711,7 @@ module ContextDev
452
711
  returns(
453
712
  T.nilable(
454
713
  T::Array[
455
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Alternate
714
+ ContextDev::Models::WebScrapeResponse::Metadata::Alternate
456
715
  ]
457
716
  )
458
717
  )
@@ -463,7 +722,7 @@ module ContextDev
463
722
  params(
464
723
  alternates:
465
724
  T::Array[
466
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Alternate::OrHash
725
+ ContextDev::Models::WebScrapeResponse::Metadata::Alternate::OrHash
467
726
  ]
468
727
  ).void
469
728
  end
@@ -502,9 +761,7 @@ module ContextDev
502
761
  sig do
503
762
  returns(
504
763
  T.nilable(
505
- T::Array[
506
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Heading
507
- ]
764
+ T::Array[ContextDev::Models::WebScrapeResponse::Metadata::Heading]
508
765
  )
509
766
  )
510
767
  end
@@ -514,7 +771,7 @@ module ContextDev
514
771
  params(
515
772
  headings:
516
773
  T::Array[
517
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Heading::OrHash
774
+ ContextDev::Models::WebScrapeResponse::Metadata::Heading::OrHash
518
775
  ]
519
776
  ).void
520
777
  end
@@ -561,7 +818,7 @@ module ContextDev
561
818
  T.nilable(
562
819
  T::Hash[
563
820
  Symbol,
564
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OpenGraph::Variants
821
+ ContextDev::Models::WebScrapeResponse::Metadata::OpenGraph::Variants
565
822
  ]
566
823
  )
567
824
  )
@@ -573,7 +830,7 @@ module ContextDev
573
830
  open_graph:
574
831
  T::Hash[
575
832
  Symbol,
576
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OpenGraph::Variants
833
+ ContextDev::Models::WebScrapeResponse::Metadata::OpenGraph::Variants
577
834
  ]
578
835
  ).void
579
836
  end
@@ -613,7 +870,7 @@ module ContextDev
613
870
  T.nilable(
614
871
  T::Hash[
615
872
  Symbol,
616
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Twitter::Variants
873
+ ContextDev::Models::WebScrapeResponse::Metadata::Twitter::Variants
617
874
  ]
618
875
  )
619
876
  )
@@ -625,25 +882,23 @@ module ContextDev
625
882
  twitter:
626
883
  T::Hash[
627
884
  Symbol,
628
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Twitter::Variants
885
+ ContextDev::Models::WebScrapeResponse::Metadata::Twitter::Variants
629
886
  ]
630
887
  ).void
631
888
  end
632
889
  attr_writer :twitter
633
890
 
634
- # Metadata extracted from the scraped page HTML.
891
+ # Page details, when available.
635
892
  sig do
636
893
  params(
637
- final_url: String,
638
- source_url: String,
639
894
  additional_meta:
640
895
  T::Hash[
641
896
  Symbol,
642
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::AdditionalMeta::Variants
897
+ ContextDev::Models::WebScrapeResponse::Metadata::AdditionalMeta::Variants
643
898
  ],
644
899
  alternates:
645
900
  T::Array[
646
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Alternate::OrHash
901
+ ContextDev::Models::WebScrapeResponse::Metadata::Alternate::OrHash
647
902
  ],
648
903
  author: String,
649
904
  canonical_url: String,
@@ -651,7 +906,7 @@ module ContextDev
651
906
  favicon: String,
652
907
  headings:
653
908
  T::Array[
654
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Heading::OrHash
909
+ ContextDev::Models::WebScrapeResponse::Metadata::Heading::OrHash
655
910
  ],
656
911
  image: String,
657
912
  json_ld: T::Array[T::Hash[Symbol, T.anything]],
@@ -661,7 +916,7 @@ module ContextDev
661
916
  open_graph:
662
917
  T::Hash[
663
918
  Symbol,
664
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OpenGraph::Variants
919
+ ContextDev::Models::WebScrapeResponse::Metadata::OpenGraph::Variants
665
920
  ],
666
921
  published_time: String,
667
922
  robots: String,
@@ -670,16 +925,11 @@ module ContextDev
670
925
  twitter:
671
926
  T::Hash[
672
927
  Symbol,
673
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Twitter::Variants
928
+ ContextDev::Models::WebScrapeResponse::Metadata::Twitter::Variants
674
929
  ]
675
930
  ).returns(T.attached_class)
676
931
  end
677
932
  def self.new(
678
- # Final URL scraped after redirects or scraper fallback, when known. Falls back to
679
- # sourceUrl when unavailable.
680
- final_url:,
681
- # Original URL requested by the caller.
682
- source_url:,
683
933
  # Additional non-social meta tags not promoted to top-level metadata fields.
684
934
  additional_meta: nil,
685
935
  # Resolved alternate links from link rel=alternate tags.
@@ -723,16 +973,14 @@ module ContextDev
723
973
  sig do
724
974
  override.returns(
725
975
  {
726
- final_url: String,
727
- source_url: String,
728
976
  additional_meta:
729
977
  T::Hash[
730
978
  Symbol,
731
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::AdditionalMeta::Variants
979
+ ContextDev::Models::WebScrapeResponse::Metadata::AdditionalMeta::Variants
732
980
  ],
733
981
  alternates:
734
982
  T::Array[
735
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Alternate
983
+ ContextDev::Models::WebScrapeResponse::Metadata::Alternate
736
984
  ],
737
985
  author: String,
738
986
  canonical_url: String,
@@ -740,7 +988,7 @@ module ContextDev
740
988
  favicon: String,
741
989
  headings:
742
990
  T::Array[
743
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Heading
991
+ ContextDev::Models::WebScrapeResponse::Metadata::Heading
744
992
  ],
745
993
  image: String,
746
994
  json_ld: T::Array[T::Hash[Symbol, T.anything]],
@@ -750,7 +998,7 @@ module ContextDev
750
998
  open_graph:
751
999
  T::Hash[
752
1000
  Symbol,
753
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OpenGraph::Variants
1001
+ ContextDev::Models::WebScrapeResponse::Metadata::OpenGraph::Variants
754
1002
  ],
755
1003
  published_time: String,
756
1004
  robots: String,
@@ -759,7 +1007,7 @@ module ContextDev
759
1007
  twitter:
760
1008
  T::Hash[
761
1009
  Symbol,
762
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Twitter::Variants
1010
+ ContextDev::Models::WebScrapeResponse::Metadata::Twitter::Variants
763
1011
  ]
764
1012
  }
765
1013
  )
@@ -775,7 +1023,7 @@ module ContextDev
775
1023
  sig do
776
1024
  override.returns(
777
1025
  T::Array[
778
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::AdditionalMeta::Variants
1026
+ ContextDev::Models::WebScrapeResponse::Metadata::AdditionalMeta::Variants
779
1027
  ]
780
1028
  )
781
1029
  end
@@ -793,7 +1041,7 @@ module ContextDev
793
1041
  OrHash =
794
1042
  T.type_alias do
795
1043
  T.any(
796
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Alternate,
1044
+ ContextDev::Models::WebScrapeResponse::Metadata::Alternate,
797
1045
  ContextDev::Internal::AnyHash
798
1046
  )
799
1047
  end
@@ -856,7 +1104,7 @@ module ContextDev
856
1104
  OrHash =
857
1105
  T.type_alias do
858
1106
  T.any(
859
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Heading,
1107
+ ContextDev::Models::WebScrapeResponse::Metadata::Heading,
860
1108
  ContextDev::Internal::AnyHash
861
1109
  )
862
1110
  end
@@ -891,7 +1139,7 @@ module ContextDev
891
1139
  sig do
892
1140
  override.returns(
893
1141
  T::Array[
894
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::OpenGraph::Variants
1142
+ ContextDev::Models::WebScrapeResponse::Metadata::OpenGraph::Variants
895
1143
  ]
896
1144
  )
897
1145
  end
@@ -913,7 +1161,7 @@ module ContextDev
913
1161
  sig do
914
1162
  override.returns(
915
1163
  T::Array[
916
- ContextDev::Models::WebWebScrapeHTMLResponse::Metadata::Twitter::Variants
1164
+ ContextDev::Models::WebScrapeResponse::Metadata::Twitter::Variants
917
1165
  ]
918
1166
  )
919
1167
  end
@@ -928,326 +1176,107 @@ module ContextDev
928
1176
  end
929
1177
  end
930
1178
 
931
- # Indicates success
932
- module Success
933
- extend ContextDev::Internal::Type::Enum
934
-
935
- TaggedBoolean =
1179
+ class Parsed < ContextDev::Internal::Type::BaseModel
1180
+ OrHash =
936
1181
  T.type_alias do
937
- T.all(
938
- T::Boolean,
939
- ContextDev::Models::WebWebScrapeHTMLResponse::Success
1182
+ T.any(
1183
+ ContextDev::Models::WebScrapeResponse::Parsed,
1184
+ ContextDev::Internal::AnyHash
940
1185
  )
941
1186
  end
942
- OrBoolean = T.type_alias { T::Boolean }
943
1187
 
944
- TRUE =
945
- T.let(
946
- true,
947
- ContextDev::Models::WebWebScrapeHTMLResponse::Success::TaggedBoolean
948
- )
1188
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
1189
+ attr_accessor :data
949
1190
 
1191
+ sig { returns(T::Boolean) }
1192
+ attr_accessor :requested
1193
+
1194
+ # Fields produced by parseParams.rules, after shared content filters.
950
1195
  sig do
951
- override.returns(
952
- T::Array[
953
- ContextDev::Models::WebWebScrapeHTMLResponse::Success::TaggedBoolean
954
- ]
955
- )
1196
+ params(
1197
+ data: T.nilable(T::Hash[Symbol, T.anything]),
1198
+ requested: T::Boolean
1199
+ ).returns(T.attached_class)
956
1200
  end
957
- def self.values
1201
+ def self.new(data:, requested:)
958
1202
  end
959
- end
960
-
961
- # Detected content type of the returned `html` field. Sitemaps and feeds are
962
- # surfaced as `xml`; ordinary pages are `html`. Excel workbooks are surfaced as
963
- # `xlsx`/`xls` with the extracted sheets as HTML tables; PowerPoint presentations
964
- # are surfaced as `pptx`/`ppt` with the extracted slides as HTML.
965
- module Type
966
- extend ContextDev::Internal::Type::Enum
967
-
968
- TaggedSymbol =
969
- T.type_alias do
970
- T.all(Symbol, ContextDev::Models::WebWebScrapeHTMLResponse::Type)
971
- end
972
- OrSymbol = T.type_alias { T.any(Symbol, String) }
973
-
974
- HTML =
975
- T.let(
976
- :html,
977
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
978
- )
979
- XML =
980
- T.let(
981
- :xml,
982
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
983
- )
984
- JSON =
985
- T.let(
986
- :json,
987
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
988
- )
989
- TEXT =
990
- T.let(
991
- :text,
992
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
993
- )
994
- CSV =
995
- T.let(
996
- :csv,
997
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
998
- )
999
- MARKDOWN =
1000
- T.let(
1001
- :markdown,
1002
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1003
- )
1004
- SVG =
1005
- T.let(
1006
- :svg,
1007
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1008
- )
1009
- PDF =
1010
- T.let(
1011
- :pdf,
1012
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1013
- )
1014
- DOCX =
1015
- T.let(
1016
- :docx,
1017
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1018
- )
1019
- DOC =
1020
- T.let(
1021
- :doc,
1022
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1023
- )
1024
- XLSX =
1025
- T.let(
1026
- :xlsx,
1027
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1028
- )
1029
- XLS =
1030
- T.let(
1031
- :xls,
1032
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1033
- )
1034
- PPTX =
1035
- T.let(
1036
- :pptx,
1037
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1038
- )
1039
- PPT =
1040
- T.let(
1041
- :ppt,
1042
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1043
- )
1044
1203
 
1045
1204
  sig do
1046
1205
  override.returns(
1047
- T::Array[
1048
- ContextDev::Models::WebWebScrapeHTMLResponse::Type::TaggedSymbol
1049
- ]
1206
+ {
1207
+ data: T.nilable(T::Hash[Symbol, T.anything]),
1208
+ requested: T::Boolean
1209
+ }
1050
1210
  )
1051
1211
  end
1052
- def self.values
1212
+ def to_hash
1053
1213
  end
1054
1214
  end
1055
1215
 
1056
- class ActionsApplied < ContextDev::Internal::Type::BaseModel
1216
+ class Screenshot < ContextDev::Internal::Type::BaseModel
1057
1217
  OrHash =
1058
1218
  T.type_alias do
1059
1219
  T.any(
1060
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied,
1220
+ ContextDev::Models::WebScrapeResponse::Screenshot,
1061
1221
  ContextDev::Internal::AnyHash
1062
1222
  )
1063
1223
  end
1064
1224
 
1065
- sig { returns(String) }
1066
- attr_accessor :instruction
1067
-
1068
- # Applied means the requested page state was visibly verified. Failed means it was
1069
- # not verified. Skipped means it was not attempted.
1070
- sig do
1071
- returns(
1072
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::TaggedSymbol
1073
- )
1074
- end
1075
- attr_accessor :status
1076
-
1077
- # Visible page evidence used to verify an applied action.
1078
1225
  sig { returns(T.nilable(String)) }
1079
- attr_reader :completion_evidence
1080
-
1081
- sig { params(completion_evidence: String).void }
1082
- attr_writer :completion_evidence
1226
+ attr_accessor :data
1083
1227
 
1084
- sig { returns(T.nilable(Float)) }
1085
- attr_reader :duration_ms
1086
-
1087
- sig { params(duration_ms: Float).void }
1088
- attr_writer :duration_ms
1089
-
1090
- sig { returns(T.nilable(String)) }
1091
- attr_reader :error
1092
-
1093
- sig { params(error: String).void }
1094
- attr_writer :error
1095
-
1096
- sig { returns(T.nilable(String)) }
1097
- attr_reader :method_
1098
-
1099
- sig { params(method_: String).void }
1100
- attr_writer :method_
1101
-
1102
- sig { returns(T.nilable(String)) }
1103
- attr_reader :target_description
1104
-
1105
- sig { params(target_description: String).void }
1106
- attr_writer :target_description
1228
+ sig { returns(T::Boolean) }
1229
+ attr_accessor :requested
1107
1230
 
1231
+ # An image data URL. Use directly as an image src.
1108
1232
  sig do
1109
- params(
1110
- instruction: String,
1111
- status:
1112
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::OrSymbol,
1113
- completion_evidence: String,
1114
- duration_ms: Float,
1115
- error: String,
1116
- method_: String,
1117
- target_description: String
1118
- ).returns(T.attached_class)
1233
+ params(data: T.nilable(String), requested: T::Boolean).returns(
1234
+ T.attached_class
1235
+ )
1119
1236
  end
1120
- def self.new(
1121
- instruction:,
1122
- # Applied means the requested page state was visibly verified. Failed means it was
1123
- # not verified. Skipped means it was not attempted.
1124
- status:,
1125
- # Visible page evidence used to verify an applied action.
1126
- completion_evidence: nil,
1127
- duration_ms: nil,
1128
- error: nil,
1129
- method_: nil,
1130
- target_description: nil
1131
- )
1237
+ def self.new(data:, requested:)
1132
1238
  end
1133
1239
 
1134
1240
  sig do
1135
- override.returns(
1136
- {
1137
- instruction: String,
1138
- status:
1139
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::TaggedSymbol,
1140
- completion_evidence: String,
1141
- duration_ms: Float,
1142
- error: String,
1143
- method_: String,
1144
- target_description: String
1145
- }
1146
- )
1241
+ override.returns({ data: T.nilable(String), requested: T::Boolean })
1147
1242
  end
1148
1243
  def to_hash
1149
1244
  end
1150
-
1151
- # Applied means the requested page state was visibly verified. Failed means it was
1152
- # not verified. Skipped means it was not attempted.
1153
- module Status
1154
- extend ContextDev::Internal::Type::Enum
1155
-
1156
- TaggedSymbol =
1157
- T.type_alias do
1158
- T.all(
1159
- Symbol,
1160
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status
1161
- )
1162
- end
1163
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1164
-
1165
- APPLIED =
1166
- T.let(
1167
- :applied,
1168
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::TaggedSymbol
1169
- )
1170
- FAILED =
1171
- T.let(
1172
- :failed,
1173
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::TaggedSymbol
1174
- )
1175
- SKIPPED =
1176
- T.let(
1177
- :skipped,
1178
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::TaggedSymbol
1179
- )
1180
-
1181
- sig do
1182
- override.returns(
1183
- T::Array[
1184
- ContextDev::Models::WebWebScrapeHTMLResponse::ActionsApplied::Status::TaggedSymbol
1185
- ]
1186
- )
1187
- end
1188
- def self.values
1189
- end
1190
- end
1191
1245
  end
1192
1246
 
1193
- module Extracted
1194
- extend ContextDev::Internal::Type::Union
1247
+ # Present when return-partial captures a page that is still loading or returns
1248
+ # images before image processing finishes. Partial responses are not cached.
1249
+ module IsPartial
1250
+ extend ContextDev::Internal::Type::Enum
1195
1251
 
1196
- Variants =
1252
+ TaggedBoolean =
1197
1253
  T.type_alias do
1198
- T.any(
1199
- String,
1200
- T.anything,
1201
- T::Array[
1202
- T.nilable(
1203
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::UnionMember2::Variants
1204
- )
1205
- ]
1206
- )
1254
+ T.all(T::Boolean, ContextDev::Models::WebScrapeResponse::IsPartial)
1207
1255
  end
1256
+ OrBoolean = T.type_alias { T::Boolean }
1208
1257
 
1209
- module UnionMember2
1210
- extend ContextDev::Internal::Type::Union
1211
-
1212
- Variants = T.type_alias { T.any(String, T.anything) }
1213
-
1214
- sig do
1215
- override.returns(
1216
- T::Array[
1217
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::UnionMember2::Variants
1218
- ]
1219
- )
1220
- end
1221
- def self.variants
1222
- end
1223
- end
1258
+ TRUE =
1259
+ T.let(
1260
+ true,
1261
+ ContextDev::Models::WebScrapeResponse::IsPartial::TaggedBoolean
1262
+ )
1224
1263
 
1225
1264
  sig do
1226
1265
  override.returns(
1227
1266
  T::Array[
1228
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::Variants
1267
+ ContextDev::Models::WebScrapeResponse::IsPartial::TaggedBoolean
1229
1268
  ]
1230
1269
  )
1231
1270
  end
1232
- def self.variants
1271
+ def self.values
1233
1272
  end
1234
-
1235
- UnionMember2Array =
1236
- T.let(
1237
- ContextDev::Internal::Type::ArrayOf[
1238
- union:
1239
- ContextDev::Models::WebWebScrapeHTMLResponse::Extracted::UnionMember2,
1240
- nil?: true
1241
- ],
1242
- ContextDev::Internal::Type::Converter
1243
- )
1244
1273
  end
1245
1274
 
1246
1275
  class KeyMetadata < ContextDev::Internal::Type::BaseModel
1247
1276
  OrHash =
1248
1277
  T.type_alias do
1249
1278
  T.any(
1250
- ContextDev::Models::WebWebScrapeHTMLResponse::KeyMetadata,
1279
+ ContextDev::Models::WebScrapeResponse::KeyMetadata,
1251
1280
  ContextDev::Internal::AnyHash
1252
1281
  )
1253
1282
  end