context.dev 2.16.0 → 2.17.1

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 +24 -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 +71 -62
  10. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +57 -11
  11. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +72 -63
  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 +49 -4
  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 +136 -131
  66. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +136 -19
  67. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +140 -135
  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 +96 -8
  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 +53 -54
  120. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +44 -5
  121. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +53 -54
  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
@@ -83,19 +83,26 @@ module ContextDev
83
83
  sig { params(tags: T::Array[String]).void }
84
84
  attr_writer :tags
85
85
 
86
- # Optional timeout in milliseconds for the request. If the request takes longer
87
- # than this value, it will be aborted with a 408 status code. Maximum allowed
88
- # value is 300000ms (5 minutes).
89
- sig { returns(T.nilable(Integer)) }
90
- attr_reader :timeout_ms
86
+ # Optional request deadline and behavior on timeout. For GET requests, use
87
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
88
+ # timeoutOpts object.
89
+ sig do
90
+ returns(T.nilable(ContextDev::WebWebScrapeImagesParams::TimeoutOpts))
91
+ end
92
+ attr_reader :timeout_opts
91
93
 
92
- sig { params(timeout_ms: Integer).void }
93
- attr_writer :timeout_ms
94
+ sig do
95
+ params(
96
+ timeout_opts:
97
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::OrHash
98
+ ).void
99
+ end
100
+ attr_writer :timeout_opts
94
101
 
95
102
  # Optional browser wait time in milliseconds after initial page load before
96
103
  # collecting images. Min: 0. Max: 30000 (30 seconds). When combined with
97
- # timeoutMS, timeoutMS must be at least waitForMs + 10000 ms; a shorter deadline
98
- # is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
104
+ # timeoutOpts, timeoutOpts.milliseconds must be at least waitForMs + 10000 ms; a
105
+ # shorter deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
99
106
  sig { returns(T.nilable(Integer)) }
100
107
  attr_accessor :wait_for_ms
101
108
 
@@ -118,7 +125,8 @@ module ContextDev
118
125
  headers: T::Hash[Symbol, String],
119
126
  max_age_ms: T.nilable(Integer),
120
127
  tags: T::Array[String],
121
- timeout_ms: Integer,
128
+ timeout_opts:
129
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::OrHash,
122
130
  wait_for_ms: T.nilable(Integer),
123
131
  request_options: ContextDev::RequestOptions::OrHash
124
132
  ).returns(T.attached_class)
@@ -148,14 +156,14 @@ module ContextDev
148
156
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
149
157
  # characters.
150
158
  tags: nil,
151
- # Optional timeout in milliseconds for the request. If the request takes longer
152
- # than this value, it will be aborted with a 408 status code. Maximum allowed
153
- # value is 300000ms (5 minutes).
154
- timeout_ms: nil,
159
+ # Optional request deadline and behavior on timeout. For GET requests, use
160
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
161
+ # timeoutOpts object.
162
+ timeout_opts: nil,
155
163
  # Optional browser wait time in milliseconds after initial page load before
156
164
  # collecting images. Min: 0. Max: 30000 (30 seconds). When combined with
157
- # timeoutMS, timeoutMS must be at least waitForMs + 10000 ms; a shorter deadline
158
- # is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
165
+ # timeoutOpts, timeoutOpts.milliseconds must be at least waitForMs + 10000 ms; a
166
+ # shorter deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
159
167
  wait_for_ms: nil,
160
168
  request_options: {}
161
169
  )
@@ -181,7 +189,7 @@ module ContextDev
181
189
  headers: T::Hash[Symbol, String],
182
190
  max_age_ms: T.nilable(Integer),
183
191
  tags: T::Array[String],
184
- timeout_ms: Integer,
192
+ timeout_opts: ContextDev::WebWebScrapeImagesParams::TimeoutOpts,
185
193
  wait_for_ms: T.nilable(Integer),
186
194
  request_options: ContextDev::RequestOptions
187
195
  }
@@ -549,6 +557,115 @@ module ContextDev
549
557
  def to_hash
550
558
  end
551
559
  end
560
+
561
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
562
+ OrHash =
563
+ T.type_alias do
564
+ T.any(
565
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts,
566
+ ContextDev::Internal::AnyHash
567
+ )
568
+ end
569
+
570
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
571
+ sig { returns(Integer) }
572
+ attr_accessor :milliseconds
573
+
574
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
575
+ # credits. "return-partial" returns usable results collected so far; if none are
576
+ # available, the request still fails without charging credits. Partial results are
577
+ # not cached as complete results. "return-partial" requires milliseconds of at
578
+ # least 15000.
579
+ sig do
580
+ returns(
581
+ T.nilable(
582
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::OrSymbol
583
+ )
584
+ )
585
+ end
586
+ attr_reader :behavior
587
+
588
+ sig do
589
+ params(
590
+ behavior:
591
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::OrSymbol
592
+ ).void
593
+ end
594
+ attr_writer :behavior
595
+
596
+ # Optional request deadline and behavior on timeout. For GET requests, use
597
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
598
+ # timeoutOpts object.
599
+ sig do
600
+ params(
601
+ milliseconds: Integer,
602
+ behavior:
603
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::OrSymbol
604
+ ).returns(T.attached_class)
605
+ end
606
+ def self.new(
607
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
608
+ milliseconds:,
609
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
610
+ # credits. "return-partial" returns usable results collected so far; if none are
611
+ # available, the request still fails without charging credits. Partial results are
612
+ # not cached as complete results. "return-partial" requires milliseconds of at
613
+ # least 15000.
614
+ behavior: nil
615
+ )
616
+ end
617
+
618
+ sig do
619
+ override.returns(
620
+ {
621
+ milliseconds: Integer,
622
+ behavior:
623
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::OrSymbol
624
+ }
625
+ )
626
+ end
627
+ def to_hash
628
+ end
629
+
630
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
631
+ # credits. "return-partial" returns usable results collected so far; if none are
632
+ # available, the request still fails without charging credits. Partial results are
633
+ # not cached as complete results. "return-partial" requires milliseconds of at
634
+ # least 15000.
635
+ module Behavior
636
+ extend ContextDev::Internal::Type::Enum
637
+
638
+ TaggedSymbol =
639
+ T.type_alias do
640
+ T.all(
641
+ Symbol,
642
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior
643
+ )
644
+ end
645
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
646
+
647
+ FAIL =
648
+ T.let(
649
+ :fail,
650
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::TaggedSymbol
651
+ )
652
+ RETURN_PARTIAL =
653
+ T.let(
654
+ :"return-partial",
655
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::TaggedSymbol
656
+ )
657
+
658
+ sig do
659
+ override.returns(
660
+ T::Array[
661
+ ContextDev::WebWebScrapeImagesParams::TimeoutOpts::Behavior::TaggedSymbol
662
+ ]
663
+ )
664
+ end
665
+ def self.values
666
+ end
667
+ end
668
+ end
552
669
  end
553
670
  end
554
671
  end
@@ -72,6 +72,28 @@ module ContextDev
72
72
  end
73
73
  attr_writer :actions_applied
74
74
 
75
+ # How complete the returned content is. `loaded` means the page finished the waits
76
+ # the request asked for. `still-loading` only occurs with
77
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
78
+ # reached first, so the content reflects the DOM at that moment and late-rendering
79
+ # parts may be missing. Partial results are billed at the base request cost.
80
+ sig do
81
+ returns(
82
+ T.nilable(
83
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::TaggedSymbol
84
+ )
85
+ )
86
+ end
87
+ attr_reader :final_dom_state
88
+
89
+ sig do
90
+ params(
91
+ final_dom_state:
92
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::OrSymbol
93
+ ).void
94
+ end
95
+ attr_writer :final_dom_state
96
+
75
97
  # Credit usage, included whenever a valid API key is provided.
76
98
  sig do
77
99
  returns(
@@ -88,6 +110,15 @@ module ContextDev
88
110
  end
89
111
  attr_writer :key_metadata
90
112
 
113
+ # True when the deadline interrupted rendering or image enrichment. Partial
114
+ # results are billed at the base request cost, without enrichment or actions
115
+ # surcharges.
116
+ sig { returns(T.nilable(T::Boolean)) }
117
+ attr_reader :partial
118
+
119
+ sig { params(partial: T::Boolean).void }
120
+ attr_writer :partial
121
+
91
122
  sig do
92
123
  params(
93
124
  cache_metadata:
@@ -104,8 +135,11 @@ module ContextDev
104
135
  T::Array[
105
136
  ContextDev::Models::WebWebScrapeImagesResponse::ActionsApplied::OrHash
106
137
  ],
138
+ final_dom_state:
139
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::OrSymbol,
107
140
  key_metadata:
108
- ContextDev::Models::WebWebScrapeImagesResponse::KeyMetadata::OrHash
141
+ ContextDev::Models::WebWebScrapeImagesResponse::KeyMetadata::OrHash,
142
+ partial: T::Boolean
109
143
  ).returns(T.attached_class)
110
144
  end
111
145
  def self.new(
@@ -124,8 +158,18 @@ module ContextDev
124
158
  url:,
125
159
  # One verified outcome per requested browser action, in request order.
126
160
  actions_applied: nil,
161
+ # How complete the returned content is. `loaded` means the page finished the waits
162
+ # the request asked for. `still-loading` only occurs with
163
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
164
+ # reached first, so the content reflects the DOM at that moment and late-rendering
165
+ # parts may be missing. Partial results are billed at the base request cost.
166
+ final_dom_state: nil,
127
167
  # Credit usage, included whenever a valid API key is provided.
128
- key_metadata: nil
168
+ key_metadata: nil,
169
+ # True when the deadline interrupted rendering or image enrichment. Partial
170
+ # results are billed at the base request cost, without enrichment or actions
171
+ # surcharges.
172
+ partial: nil
129
173
  )
130
174
  end
131
175
 
@@ -144,8 +188,11 @@ module ContextDev
144
188
  T::Array[
145
189
  ContextDev::Models::WebWebScrapeImagesResponse::ActionsApplied
146
190
  ],
191
+ final_dom_state:
192
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::TaggedSymbol,
147
193
  key_metadata:
148
- ContextDev::Models::WebWebScrapeImagesResponse::KeyMetadata
194
+ ContextDev::Models::WebWebScrapeImagesResponse::KeyMetadata,
195
+ partial: T::Boolean
149
196
  }
150
197
  )
151
198
  end
@@ -780,6 +827,45 @@ module ContextDev
780
827
  end
781
828
  end
782
829
 
830
+ # How complete the returned content is. `loaded` means the page finished the waits
831
+ # the request asked for. `still-loading` only occurs with
832
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
833
+ # reached first, so the content reflects the DOM at that moment and late-rendering
834
+ # parts may be missing. Partial results are billed at the base request cost.
835
+ module FinalDomState
836
+ extend ContextDev::Internal::Type::Enum
837
+
838
+ TaggedSymbol =
839
+ T.type_alias do
840
+ T.all(
841
+ Symbol,
842
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState
843
+ )
844
+ end
845
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
846
+
847
+ LOADED =
848
+ T.let(
849
+ :loaded,
850
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::TaggedSymbol
851
+ )
852
+ STILL_LOADING =
853
+ T.let(
854
+ :"still-loading",
855
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::TaggedSymbol
856
+ )
857
+
858
+ sig do
859
+ override.returns(
860
+ T::Array[
861
+ ContextDev::Models::WebWebScrapeImagesResponse::FinalDomState::TaggedSymbol
862
+ ]
863
+ )
864
+ end
865
+ def self.values
866
+ end
867
+ end
868
+
783
869
  class KeyMetadata < ContextDev::Internal::Type::BaseModel
784
870
  OrHash =
785
871
  T.type_alias do
@@ -137,14 +137,18 @@ module ContextDev
137
137
  sig { params(tags: T::Array[String]).void }
138
138
  attr_writer :tags
139
139
 
140
- # Optional timeout in milliseconds for the request. If the request takes longer
141
- # than this value, it will be aborted with a 408 status code. Maximum allowed
142
- # value is 300000ms (5 minutes).
143
- sig { returns(T.nilable(Integer)) }
144
- attr_reader :timeout_ms
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
+ sig { returns(T.nilable(ContextDev::WebWebScrapeMdParams::TimeoutOpts)) }
144
+ attr_reader :timeout_opts
145
145
 
146
- sig { params(timeout_ms: Integer).void }
147
- attr_writer :timeout_ms
146
+ sig do
147
+ params(
148
+ timeout_opts: ContextDev::WebWebScrapeMdParams::TimeoutOpts::OrHash
149
+ ).void
150
+ end
151
+ attr_writer :timeout_opts
148
152
 
149
153
  # Extract only the main content of the page, excluding headers, footers, sidebars,
150
154
  # and navigation
@@ -156,8 +160,8 @@ module ContextDev
156
160
 
157
161
  # Optional browser wait time in milliseconds after initial page load before
158
162
  # converting the page to Markdown. Min: 0. Max: 30000 (30 seconds). When combined
159
- # with timeoutMS, timeoutMS must be at least waitForMs + 10000 ms; a shorter
160
- # deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
163
+ # with timeoutOpts, timeoutOpts.milliseconds must be at least waitForMs + 10000
164
+ # ms; a shorter deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
161
165
  sig { returns(T.nilable(Integer)) }
162
166
  attr_accessor :wait_for_ms
163
167
 
@@ -199,7 +203,7 @@ module ContextDev
199
203
  settle_animations: T::Boolean,
200
204
  shorten_base64_images: T::Boolean,
201
205
  tags: T::Array[String],
202
- timeout_ms: Integer,
206
+ timeout_opts: ContextDev::WebWebScrapeMdParams::TimeoutOpts::OrHash,
203
207
  use_main_content_only: T::Boolean,
204
208
  wait_for_ms: T.nilable(Integer),
205
209
  zdr: ContextDev::WebWebScrapeMdParams::Zdr::OrSymbol,
@@ -255,17 +259,17 @@ module ContextDev
255
259
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
256
260
  # characters.
257
261
  tags: nil,
258
- # Optional timeout in milliseconds for the request. If the request takes longer
259
- # than this value, it will be aborted with a 408 status code. Maximum allowed
260
- # value is 300000ms (5 minutes).
261
- timeout_ms: nil,
262
+ # Optional request deadline and behavior on timeout. For GET requests, use
263
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
264
+ # timeoutOpts object.
265
+ timeout_opts: nil,
262
266
  # Extract only the main content of the page, excluding headers, footers, sidebars,
263
267
  # and navigation
264
268
  use_main_content_only: nil,
265
269
  # Optional browser wait time in milliseconds after initial page load before
266
270
  # converting the page to Markdown. Min: 0. Max: 30000 (30 seconds). When combined
267
- # with timeoutMS, timeoutMS must be at least waitForMs + 10000 ms; a shorter
268
- # deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
271
+ # with timeoutOpts, timeoutOpts.milliseconds must be at least waitForMs + 10000
272
+ # ms; a shorter deadline is rejected with 400 TIMEOUT_TOO_SHORT_FOR_WAIT.
269
273
  wait_for_ms: nil,
270
274
  # Set to enabled to bypass shared caches and omit request and response content
271
275
  # from retained usage logs. Requires zero data retention to be enabled for your
@@ -303,7 +307,7 @@ module ContextDev
303
307
  settle_animations: T::Boolean,
304
308
  shorten_base64_images: T::Boolean,
305
309
  tags: T::Array[String],
306
- timeout_ms: Integer,
310
+ timeout_opts: ContextDev::WebWebScrapeMdParams::TimeoutOpts,
307
311
  use_main_content_only: T::Boolean,
308
312
  wait_for_ms: T.nilable(Integer),
309
313
  zdr: ContextDev::WebWebScrapeMdParams::Zdr::OrSymbol,
@@ -907,6 +911,115 @@ module ContextDev
907
911
  end
908
912
  end
909
913
 
914
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
915
+ OrHash =
916
+ T.type_alias do
917
+ T.any(
918
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts,
919
+ ContextDev::Internal::AnyHash
920
+ )
921
+ end
922
+
923
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
924
+ sig { returns(Integer) }
925
+ attr_accessor :milliseconds
926
+
927
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
928
+ # credits. "return-partial" returns usable results collected so far; if none are
929
+ # available, the request still fails without charging credits. Partial results are
930
+ # not cached as complete results. "return-partial" requires milliseconds of at
931
+ # least 15000.
932
+ sig do
933
+ returns(
934
+ T.nilable(
935
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::OrSymbol
936
+ )
937
+ )
938
+ end
939
+ attr_reader :behavior
940
+
941
+ sig do
942
+ params(
943
+ behavior:
944
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::OrSymbol
945
+ ).void
946
+ end
947
+ attr_writer :behavior
948
+
949
+ # Optional request deadline and behavior on timeout. For GET requests, use
950
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
951
+ # timeoutOpts object.
952
+ sig do
953
+ params(
954
+ milliseconds: Integer,
955
+ behavior:
956
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::OrSymbol
957
+ ).returns(T.attached_class)
958
+ end
959
+ def self.new(
960
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
961
+ milliseconds:,
962
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
963
+ # credits. "return-partial" returns usable results collected so far; if none are
964
+ # available, the request still fails without charging credits. Partial results are
965
+ # not cached as complete results. "return-partial" requires milliseconds of at
966
+ # least 15000.
967
+ behavior: nil
968
+ )
969
+ end
970
+
971
+ sig do
972
+ override.returns(
973
+ {
974
+ milliseconds: Integer,
975
+ behavior:
976
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::OrSymbol
977
+ }
978
+ )
979
+ end
980
+ def to_hash
981
+ end
982
+
983
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
984
+ # credits. "return-partial" returns usable results collected so far; if none are
985
+ # available, the request still fails without charging credits. Partial results are
986
+ # not cached as complete results. "return-partial" requires milliseconds of at
987
+ # least 15000.
988
+ module Behavior
989
+ extend ContextDev::Internal::Type::Enum
990
+
991
+ TaggedSymbol =
992
+ T.type_alias do
993
+ T.all(
994
+ Symbol,
995
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior
996
+ )
997
+ end
998
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
999
+
1000
+ FAIL =
1001
+ T.let(
1002
+ :fail,
1003
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::TaggedSymbol
1004
+ )
1005
+ RETURN_PARTIAL =
1006
+ T.let(
1007
+ :"return-partial",
1008
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::TaggedSymbol
1009
+ )
1010
+
1011
+ sig do
1012
+ override.returns(
1013
+ T::Array[
1014
+ ContextDev::WebWebScrapeMdParams::TimeoutOpts::Behavior::TaggedSymbol
1015
+ ]
1016
+ )
1017
+ end
1018
+ def self.values
1019
+ end
1020
+ end
1021
+ end
1022
+
910
1023
  # Set to enabled to bypass shared caches and omit request and response content
911
1024
  # from retained usage logs. Requires zero data retention to be enabled for your
912
1025
  # organization (contact support@context.dev), otherwise the request fails with
@@ -31,6 +31,18 @@ module ContextDev
31
31
  sig { returns(Integer) }
32
32
  attr_accessor :content_length
33
33
 
34
+ # How complete the returned content is. `loaded` means the page finished the waits
35
+ # the request asked for. `still-loading` only occurs with
36
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
37
+ # reached first, so the content reflects the DOM at that moment and late-rendering
38
+ # parts may be missing. Partial results are billed at the base request cost.
39
+ sig do
40
+ returns(
41
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState::TaggedSymbol
42
+ )
43
+ end
44
+ attr_accessor :final_dom_state
45
+
34
46
  # Page content converted to GitHub Flavored Markdown
35
47
  sig { returns(String) }
36
48
  attr_accessor :markdown
@@ -121,6 +133,8 @@ module ContextDev
121
133
  cache_metadata:
122
134
  ContextDev::Models::WebWebScrapeMdResponse::CacheMetadata::OrHash,
123
135
  content_length: Integer,
136
+ final_dom_state:
137
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState::OrSymbol,
124
138
  markdown: String,
125
139
  metadata:
126
140
  ContextDev::Models::WebWebScrapeMdResponse::Metadata::OrHash,
@@ -147,6 +161,12 @@ module ContextDev
147
161
  # and compare small values against your workload's minimum useful-content
148
162
  # threshold.
149
163
  content_length:,
164
+ # How complete the returned content is. `loaded` means the page finished the waits
165
+ # the request asked for. `still-loading` only occurs with
166
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
167
+ # reached first, so the content reflects the DOM at that moment and late-rendering
168
+ # parts may be missing. Partial results are billed at the base request cost.
169
+ final_dom_state:,
150
170
  # Page content converted to GitHub Flavored Markdown
151
171
  markdown:,
152
172
  # Metadata extracted from the scraped page HTML.
@@ -178,6 +198,8 @@ module ContextDev
178
198
  cache_metadata:
179
199
  ContextDev::Models::WebWebScrapeMdResponse::CacheMetadata,
180
200
  content_length: Integer,
201
+ final_dom_state:
202
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState::TaggedSymbol,
181
203
  markdown: String,
182
204
  metadata: ContextDev::Models::WebWebScrapeMdResponse::Metadata,
183
205
  request_id: String,
@@ -293,6 +315,45 @@ module ContextDev
293
315
  end
294
316
  end
295
317
 
318
+ # How complete the returned content is. `loaded` means the page finished the waits
319
+ # the request asked for. `still-loading` only occurs with
320
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
321
+ # reached first, so the content reflects the DOM at that moment and late-rendering
322
+ # parts may be missing. Partial results are billed at the base request cost.
323
+ module FinalDomState
324
+ extend ContextDev::Internal::Type::Enum
325
+
326
+ TaggedSymbol =
327
+ T.type_alias do
328
+ T.all(
329
+ Symbol,
330
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState
331
+ )
332
+ end
333
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
334
+
335
+ LOADED =
336
+ T.let(
337
+ :loaded,
338
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState::TaggedSymbol
339
+ )
340
+ STILL_LOADING =
341
+ T.let(
342
+ :"still-loading",
343
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState::TaggedSymbol
344
+ )
345
+
346
+ sig do
347
+ override.returns(
348
+ T::Array[
349
+ ContextDev::Models::WebWebScrapeMdResponse::FinalDomState::TaggedSymbol
350
+ ]
351
+ )
352
+ end
353
+ def self.values
354
+ end
355
+ end
356
+
296
357
  class Metadata < ContextDev::Internal::Type::BaseModel
297
358
  OrHash =
298
359
  T.type_alias do