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
@@ -131,14 +131,18 @@ module ContextDev
131
131
  sig { params(tags: T::Array[String]).void }
132
132
  attr_writer :tags
133
133
 
134
- # Optional timeout in milliseconds for the request. If the request takes longer
135
- # than this value, it will be aborted with a 408 status code. Maximum allowed
136
- # value is 300000ms (5 minutes).
137
- sig { returns(T.nilable(Integer)) }
138
- attr_reader :timeout_ms
134
+ # Optional request deadline and behavior on timeout. For GET requests, use
135
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
136
+ # timeoutOpts object.
137
+ sig { returns(T.nilable(ContextDev::WebScreenshotParams::TimeoutOpts)) }
138
+ attr_reader :timeout_opts
139
139
 
140
- sig { params(timeout_ms: Integer).void }
141
- attr_writer :timeout_ms
140
+ sig do
141
+ params(
142
+ timeout_opts: ContextDev::WebScreenshotParams::TimeoutOpts::OrHash
143
+ ).void
144
+ end
145
+ attr_writer :timeout_opts
142
146
 
143
147
  # Optional browser viewport dimensions for the screenshot. Defaults to 1920x1080.
144
148
  sig { returns(T.nilable(ContextDev::WebScreenshotParams::Viewport)) }
@@ -151,8 +155,9 @@ module ContextDev
151
155
 
152
156
  # Optional browser wait time in milliseconds after initial page load before taking
153
157
  # the screenshot. Min: 0. Max: 30000 (30 seconds). Defaults to 3000 ms when
154
- # omitted. When combined with timeoutMS, timeoutMS must be at least waitForMs +
155
- # 10000 ms; a shorter deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
158
+ # omitted. When combined with timeoutOpts, timeoutOpts.milliseconds must be at
159
+ # least waitForMs + 10000 ms; a shorter deadline is rejected with 400
160
+ # TIMEOUT_TOO_SHORT_FOR_WAIT.
156
161
  sig { returns(T.nilable(Integer)) }
157
162
  attr_accessor :wait_for_ms
158
163
 
@@ -180,7 +185,7 @@ module ContextDev
180
185
  page: ContextDev::WebScreenshotParams::Page::OrSymbol,
181
186
  scroll_offset: T.nilable(Integer),
182
187
  tags: T::Array[String],
183
- timeout_ms: Integer,
188
+ timeout_opts: ContextDev::WebScreenshotParams::TimeoutOpts::OrHash,
184
189
  viewport: ContextDev::WebScreenshotParams::Viewport::OrHash,
185
190
  wait_for_ms: T.nilable(Integer),
186
191
  zdr: ContextDev::WebScreenshotParams::Zdr::OrSymbol,
@@ -236,16 +241,17 @@ module ContextDev
236
241
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
237
242
  # characters.
238
243
  tags: nil,
239
- # Optional timeout in milliseconds for the request. If the request takes longer
240
- # than this value, it will be aborted with a 408 status code. Maximum allowed
241
- # value is 300000ms (5 minutes).
242
- timeout_ms: nil,
244
+ # Optional request deadline and behavior on timeout. For GET requests, use
245
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
246
+ # timeoutOpts object.
247
+ timeout_opts: nil,
243
248
  # Optional browser viewport dimensions for the screenshot. Defaults to 1920x1080.
244
249
  viewport: nil,
245
250
  # Optional browser wait time in milliseconds after initial page load before taking
246
251
  # the screenshot. Min: 0. Max: 30000 (30 seconds). Defaults to 3000 ms when
247
- # omitted. When combined with timeoutMS, timeoutMS must be at least waitForMs +
248
- # 10000 ms; a shorter deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
252
+ # omitted. When combined with timeoutOpts, timeoutOpts.milliseconds must be at
253
+ # least waitForMs + 10000 ms; a shorter deadline is rejected with 400
254
+ # TIMEOUT_TOO_SHORT_FOR_WAIT.
249
255
  wait_for_ms: nil,
250
256
  # Set to enabled to bypass shared caches and omit request and response content
251
257
  # from retained usage logs. Requires zero data retention to be enabled for your
@@ -272,7 +278,7 @@ module ContextDev
272
278
  page: ContextDev::WebScreenshotParams::Page::OrSymbol,
273
279
  scroll_offset: T.nilable(Integer),
274
280
  tags: T::Array[String],
275
- timeout_ms: Integer,
281
+ timeout_opts: ContextDev::WebScreenshotParams::TimeoutOpts,
276
282
  viewport: ContextDev::WebScreenshotParams::Viewport,
277
283
  wait_for_ms: T.nilable(Integer),
278
284
  zdr: ContextDev::WebScreenshotParams::Zdr::OrSymbol,
@@ -610,6 +616,115 @@ module ContextDev
610
616
  end
611
617
  end
612
618
 
619
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
620
+ OrHash =
621
+ T.type_alias do
622
+ T.any(
623
+ ContextDev::WebScreenshotParams::TimeoutOpts,
624
+ ContextDev::Internal::AnyHash
625
+ )
626
+ end
627
+
628
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
629
+ sig { returns(Integer) }
630
+ attr_accessor :milliseconds
631
+
632
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
633
+ # credits. "return-partial" returns usable results collected so far; if none are
634
+ # available, the request still fails without charging credits. Partial results are
635
+ # not cached as complete results. "return-partial" requires milliseconds of at
636
+ # least 15000.
637
+ sig do
638
+ returns(
639
+ T.nilable(
640
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::OrSymbol
641
+ )
642
+ )
643
+ end
644
+ attr_reader :behavior
645
+
646
+ sig do
647
+ params(
648
+ behavior:
649
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::OrSymbol
650
+ ).void
651
+ end
652
+ attr_writer :behavior
653
+
654
+ # Optional request deadline and behavior on timeout. For GET requests, use
655
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
656
+ # timeoutOpts object.
657
+ sig do
658
+ params(
659
+ milliseconds: Integer,
660
+ behavior:
661
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::OrSymbol
662
+ ).returns(T.attached_class)
663
+ end
664
+ def self.new(
665
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
666
+ milliseconds:,
667
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
668
+ # credits. "return-partial" returns usable results collected so far; if none are
669
+ # available, the request still fails without charging credits. Partial results are
670
+ # not cached as complete results. "return-partial" requires milliseconds of at
671
+ # least 15000.
672
+ behavior: nil
673
+ )
674
+ end
675
+
676
+ sig do
677
+ override.returns(
678
+ {
679
+ milliseconds: Integer,
680
+ behavior:
681
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::OrSymbol
682
+ }
683
+ )
684
+ end
685
+ def to_hash
686
+ end
687
+
688
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
689
+ # credits. "return-partial" returns usable results collected so far; if none are
690
+ # available, the request still fails without charging credits. Partial results are
691
+ # not cached as complete results. "return-partial" requires milliseconds of at
692
+ # least 15000.
693
+ module Behavior
694
+ extend ContextDev::Internal::Type::Enum
695
+
696
+ TaggedSymbol =
697
+ T.type_alias do
698
+ T.all(
699
+ Symbol,
700
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior
701
+ )
702
+ end
703
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
704
+
705
+ FAIL =
706
+ T.let(
707
+ :fail,
708
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::TaggedSymbol
709
+ )
710
+ RETURN_PARTIAL =
711
+ T.let(
712
+ :"return-partial",
713
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::TaggedSymbol
714
+ )
715
+
716
+ sig do
717
+ override.returns(
718
+ T::Array[
719
+ ContextDev::WebScreenshotParams::TimeoutOpts::Behavior::TaggedSymbol
720
+ ]
721
+ )
722
+ end
723
+ def self.values
724
+ end
725
+ end
726
+ end
727
+
613
728
  class Viewport < ContextDev::Internal::Type::BaseModel
614
729
  OrHash =
615
730
  T.type_alias do
@@ -44,6 +44,28 @@ module ContextDev
44
44
  sig { params(domain: String).void }
45
45
  attr_writer :domain
46
46
 
47
+ # How complete the returned content is. `loaded` means the page finished the waits
48
+ # the request asked for. `still-loading` only occurs with
49
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
50
+ # reached first, so the content reflects the DOM at that moment and late-rendering
51
+ # parts may be missing. Partial results are billed at the base request cost.
52
+ sig do
53
+ returns(
54
+ T.nilable(
55
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::TaggedSymbol
56
+ )
57
+ )
58
+ end
59
+ attr_reader :final_dom_state
60
+
61
+ sig do
62
+ params(
63
+ final_dom_state:
64
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::OrSymbol
65
+ ).void
66
+ end
67
+ attr_writer :final_dom_state
68
+
47
69
  # Height in pixels of the returned screenshot image
48
70
  sig { returns(T.nilable(Integer)) }
49
71
  attr_reader :height
@@ -114,6 +136,8 @@ module ContextDev
114
136
  request_id: String,
115
137
  code: Integer,
116
138
  domain: String,
139
+ final_dom_state:
140
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::OrSymbol,
117
141
  height: Integer,
118
142
  key_metadata:
119
143
  ContextDev::Models::WebScreenshotResponse::KeyMetadata::OrHash,
@@ -136,6 +160,12 @@ module ContextDev
136
160
  code: nil,
137
161
  # The normalized domain that was processed
138
162
  domain: nil,
163
+ # How complete the returned content is. `loaded` means the page finished the waits
164
+ # the request asked for. `still-loading` only occurs with
165
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
166
+ # reached first, so the content reflects the DOM at that moment and late-rendering
167
+ # parts may be missing. Partial results are billed at the base request cost.
168
+ final_dom_state: nil,
139
169
  # Height in pixels of the returned screenshot image
140
170
  height: nil,
141
171
  # Credit usage, included whenever a valid API key is provided.
@@ -160,6 +190,8 @@ module ContextDev
160
190
  request_id: String,
161
191
  code: Integer,
162
192
  domain: String,
193
+ final_dom_state:
194
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::TaggedSymbol,
163
195
  height: Integer,
164
196
  key_metadata:
165
197
  ContextDev::Models::WebScreenshotResponse::KeyMetadata,
@@ -269,6 +301,45 @@ module ContextDev
269
301
  end
270
302
  end
271
303
 
304
+ # How complete the returned content is. `loaded` means the page finished the waits
305
+ # the request asked for. `still-loading` only occurs with
306
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
307
+ # reached first, so the content reflects the DOM at that moment and late-rendering
308
+ # parts may be missing. Partial results are billed at the base request cost.
309
+ module FinalDomState
310
+ extend ContextDev::Internal::Type::Enum
311
+
312
+ TaggedSymbol =
313
+ T.type_alias do
314
+ T.all(
315
+ Symbol,
316
+ ContextDev::Models::WebScreenshotResponse::FinalDomState
317
+ )
318
+ end
319
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
320
+
321
+ LOADED =
322
+ T.let(
323
+ :loaded,
324
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::TaggedSymbol
325
+ )
326
+ STILL_LOADING =
327
+ T.let(
328
+ :"still-loading",
329
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::TaggedSymbol
330
+ )
331
+
332
+ sig do
333
+ override.returns(
334
+ T::Array[
335
+ ContextDev::Models::WebScreenshotResponse::FinalDomState::TaggedSymbol
336
+ ]
337
+ )
338
+ end
339
+ def self.values
340
+ end
341
+ end
342
+
272
343
  class KeyMetadata < ContextDev::Internal::Type::BaseModel
273
344
  OrHash =
274
345
  T.type_alias do
@@ -85,14 +85,18 @@ module ContextDev
85
85
  sig { params(tags: T::Array[String]).void }
86
86
  attr_writer :tags
87
87
 
88
- # Optional timeout in milliseconds for the request. If the request takes longer
89
- # than this value, it will be aborted with a 408 status code. Maximum allowed
90
- # value is 300000ms (5 minutes).
91
- sig { returns(T.nilable(Integer)) }
92
- attr_reader :timeout_ms
88
+ # Optional request deadline and behavior on timeout. For GET requests, use
89
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
90
+ # timeoutOpts object.
91
+ sig { returns(T.nilable(ContextDev::WebSearchParams::TimeoutOpts)) }
92
+ attr_reader :timeout_opts
93
93
 
94
- sig { params(timeout_ms: Integer).void }
95
- attr_writer :timeout_ms
94
+ sig do
95
+ params(
96
+ timeout_opts: ContextDev::WebSearchParams::TimeoutOpts::OrHash
97
+ ).void
98
+ end
99
+ attr_writer :timeout_opts
96
100
 
97
101
  sig do
98
102
  params(
@@ -106,7 +110,7 @@ module ContextDev
106
110
  num_results: Integer,
107
111
  query_fanout: T::Boolean,
108
112
  tags: T::Array[String],
109
- timeout_ms: Integer,
113
+ timeout_opts: ContextDev::WebSearchParams::TimeoutOpts::OrHash,
110
114
  request_options: ContextDev::RequestOptions::OrHash
111
115
  ).returns(T.attached_class)
112
116
  end
@@ -133,10 +137,10 @@ module ContextDev
133
137
  query_fanout: nil,
134
138
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
135
139
  tags: nil,
136
- # Optional timeout in milliseconds for the request. If the request takes longer
137
- # than this value, it will be aborted with a 408 status code. Maximum allowed
138
- # value is 300000ms (5 minutes).
139
- timeout_ms: nil,
140
+ # Optional request deadline and behavior on timeout. For GET requests, use
141
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
142
+ # timeoutOpts object.
143
+ timeout_opts: nil,
140
144
  request_options: {}
141
145
  )
142
146
  end
@@ -153,7 +157,7 @@ module ContextDev
153
157
  num_results: Integer,
154
158
  query_fanout: T::Boolean,
155
159
  tags: T::Array[String],
156
- timeout_ms: Integer,
160
+ timeout_opts: ContextDev::WebSearchParams::TimeoutOpts,
157
161
  request_options: ContextDev::RequestOptions
158
162
  }
159
163
  )
@@ -522,14 +526,23 @@ module ContextDev
522
526
  sig { params(shorten_base64_images: T::Boolean).void }
523
527
  attr_writer :shorten_base64_images
524
528
 
525
- # Optional timeout in milliseconds for the request. If the request takes longer
526
- # than this value, it will be aborted with a 408 status code. Maximum allowed
527
- # value is 300000ms (5 minutes).
528
- sig { returns(T.nilable(Integer)) }
529
- attr_reader :timeout_ms
529
+ # Optional request deadline and behavior on timeout. For GET requests, use
530
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
531
+ # timeoutOpts object.
532
+ sig do
533
+ returns(
534
+ T.nilable(ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts)
535
+ )
536
+ end
537
+ attr_reader :timeout_opts
530
538
 
531
- sig { params(timeout_ms: Integer).void }
532
- attr_writer :timeout_ms
539
+ sig do
540
+ params(
541
+ timeout_opts:
542
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::OrHash
543
+ ).void
544
+ end
545
+ attr_writer :timeout_opts
533
546
 
534
547
  # Strip nav, header, footer, and sidebar — keep only the primary article content.
535
548
  sig { returns(T.nilable(T::Boolean)) }
@@ -556,7 +569,8 @@ module ContextDev
556
569
  max_age_ms: Integer,
557
570
  pdf: ContextDev::WebSearchParams::MarkdownOptions::Pdf::OrHash,
558
571
  shorten_base64_images: T::Boolean,
559
- timeout_ms: Integer,
572
+ timeout_opts:
573
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::OrHash,
560
574
  use_main_content_only: T::Boolean,
561
575
  wait_for_ms: Integer
562
576
  ).returns(T.attached_class)
@@ -577,10 +591,10 @@ module ContextDev
577
591
  pdf: nil,
578
592
  # Truncate inline base64 image payloads to keep responses small.
579
593
  shorten_base64_images: nil,
580
- # Optional timeout in milliseconds for the request. If the request takes longer
581
- # than this value, it will be aborted with a 408 status code. Maximum allowed
582
- # value is 300000ms (5 minutes).
583
- timeout_ms: nil,
594
+ # Optional request deadline and behavior on timeout. For GET requests, use
595
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
596
+ # timeoutOpts object.
597
+ timeout_opts: nil,
584
598
  # Strip nav, header, footer, and sidebar — keep only the primary article content.
585
599
  use_main_content_only: nil,
586
600
  # Extra wait after page load before rendering, in ms (0–30000). Useful for
@@ -599,7 +613,8 @@ module ContextDev
599
613
  max_age_ms: Integer,
600
614
  pdf: ContextDev::WebSearchParams::MarkdownOptions::Pdf,
601
615
  shorten_base64_images: T::Boolean,
602
- timeout_ms: Integer,
616
+ timeout_opts:
617
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts,
603
618
  use_main_content_only: T::Boolean,
604
619
  wait_for_ms: Integer
605
620
  }
@@ -666,6 +681,218 @@ module ContextDev
666
681
  def to_hash
667
682
  end
668
683
  end
684
+
685
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
686
+ OrHash =
687
+ T.type_alias do
688
+ T.any(
689
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts,
690
+ ContextDev::Internal::AnyHash
691
+ )
692
+ end
693
+
694
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
695
+ sig { returns(Integer) }
696
+ attr_accessor :milliseconds
697
+
698
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
699
+ # credits. "return-partial" returns usable results collected so far; if none are
700
+ # available, the request still fails without charging credits. Partial results are
701
+ # not cached as complete results. "return-partial" requires milliseconds of at
702
+ # least 15000.
703
+ sig do
704
+ returns(
705
+ T.nilable(
706
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
707
+ )
708
+ )
709
+ end
710
+ attr_reader :behavior
711
+
712
+ sig do
713
+ params(
714
+ behavior:
715
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
716
+ ).void
717
+ end
718
+ attr_writer :behavior
719
+
720
+ # Optional request deadline and behavior on timeout. For GET requests, use
721
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
722
+ # timeoutOpts object.
723
+ sig do
724
+ params(
725
+ milliseconds: Integer,
726
+ behavior:
727
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
728
+ ).returns(T.attached_class)
729
+ end
730
+ def self.new(
731
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
732
+ milliseconds:,
733
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
734
+ # credits. "return-partial" returns usable results collected so far; if none are
735
+ # available, the request still fails without charging credits. Partial results are
736
+ # not cached as complete results. "return-partial" requires milliseconds of at
737
+ # least 15000.
738
+ behavior: nil
739
+ )
740
+ end
741
+
742
+ sig do
743
+ override.returns(
744
+ {
745
+ milliseconds: Integer,
746
+ behavior:
747
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::OrSymbol
748
+ }
749
+ )
750
+ end
751
+ def to_hash
752
+ end
753
+
754
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
755
+ # credits. "return-partial" returns usable results collected so far; if none are
756
+ # available, the request still fails without charging credits. Partial results are
757
+ # not cached as complete results. "return-partial" requires milliseconds of at
758
+ # least 15000.
759
+ module Behavior
760
+ extend ContextDev::Internal::Type::Enum
761
+
762
+ TaggedSymbol =
763
+ T.type_alias do
764
+ T.all(
765
+ Symbol,
766
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior
767
+ )
768
+ end
769
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
770
+
771
+ FAIL =
772
+ T.let(
773
+ :fail,
774
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::TaggedSymbol
775
+ )
776
+ RETURN_PARTIAL =
777
+ T.let(
778
+ :"return-partial",
779
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::TaggedSymbol
780
+ )
781
+
782
+ sig do
783
+ override.returns(
784
+ T::Array[
785
+ ContextDev::WebSearchParams::MarkdownOptions::TimeoutOpts::Behavior::TaggedSymbol
786
+ ]
787
+ )
788
+ end
789
+ def self.values
790
+ end
791
+ end
792
+ end
793
+ end
794
+
795
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
796
+ OrHash =
797
+ T.type_alias do
798
+ T.any(
799
+ ContextDev::WebSearchParams::TimeoutOpts,
800
+ ContextDev::Internal::AnyHash
801
+ )
802
+ end
803
+
804
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
805
+ sig { returns(Integer) }
806
+ attr_accessor :milliseconds
807
+
808
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
809
+ # credits. "return-partial" returns usable results collected so far; if none are
810
+ # available, the request still fails without charging credits. Partial results are
811
+ # not cached as complete results.
812
+ sig do
813
+ returns(
814
+ T.nilable(
815
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
816
+ )
817
+ )
818
+ end
819
+ attr_reader :behavior
820
+
821
+ sig do
822
+ params(
823
+ behavior:
824
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
825
+ ).void
826
+ end
827
+ attr_writer :behavior
828
+
829
+ # Optional request deadline and behavior on timeout. For GET requests, use
830
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
831
+ # timeoutOpts object.
832
+ sig do
833
+ params(
834
+ milliseconds: Integer,
835
+ behavior:
836
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
837
+ ).returns(T.attached_class)
838
+ end
839
+ def self.new(
840
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
841
+ milliseconds:,
842
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
843
+ # credits. "return-partial" returns usable results collected so far; if none are
844
+ # available, the request still fails without charging credits. Partial results are
845
+ # not cached as complete results.
846
+ behavior: nil
847
+ )
848
+ end
849
+
850
+ sig do
851
+ override.returns(
852
+ {
853
+ milliseconds: Integer,
854
+ behavior:
855
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::OrSymbol
856
+ }
857
+ )
858
+ end
859
+ def to_hash
860
+ end
861
+
862
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
863
+ # credits. "return-partial" returns usable results collected so far; if none are
864
+ # available, the request still fails without charging credits. Partial results are
865
+ # not cached as complete results.
866
+ module Behavior
867
+ extend ContextDev::Internal::Type::Enum
868
+
869
+ TaggedSymbol =
870
+ T.type_alias do
871
+ T.all(Symbol, ContextDev::WebSearchParams::TimeoutOpts::Behavior)
872
+ end
873
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
874
+
875
+ FAIL =
876
+ T.let(
877
+ :fail,
878
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::TaggedSymbol
879
+ )
880
+ RETURN_PARTIAL =
881
+ T.let(
882
+ :"return-partial",
883
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::TaggedSymbol
884
+ )
885
+
886
+ sig do
887
+ override.returns(
888
+ T::Array[
889
+ ContextDev::WebSearchParams::TimeoutOpts::Behavior::TaggedSymbol
890
+ ]
891
+ )
892
+ end
893
+ def self.values
894
+ end
895
+ end
669
896
  end
670
897
  end
671
898
  end