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
@@ -33,9 +33,9 @@ module ContextDev
33
33
  attr_writer :domain
34
34
 
35
35
  # Maximum age in milliseconds for cached brand data before the API performs a hard
36
- # refresh. Defaults to 3 months (7776000000 ms). Values below 1 day (86400000 ms)
37
- # are clamped to 1 day; values above 1 year (31536000000 ms) are clamped to 1
38
- # year.
36
+ # refresh. Defaults to 3 months (7776000000 ms). Set to 0 to always perform a hard
37
+ # refresh. Negative values are clamped to 0; values above 1 year (31536000000 ms)
38
+ # are clamped to 1 year.
39
39
  sig { returns(T.nilable(Integer)) }
40
40
  attr_accessor :max_age_ms
41
41
 
@@ -47,14 +47,18 @@ module ContextDev
47
47
  sig { params(tags: T::Array[String]).void }
48
48
  attr_writer :tags
49
49
 
50
- # Optional timeout in milliseconds for the request. If the request takes longer
51
- # than this value, it will be aborted with a 408 status code. Maximum allowed
52
- # value is 300000ms (5 minutes).
53
- sig { returns(T.nilable(Integer)) }
54
- attr_reader :timeout_ms
50
+ # Optional request deadline and behavior on timeout. For GET requests, use
51
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
52
+ # timeoutOpts object.
53
+ sig { returns(T.nilable(ContextDev::WebExtractFontsParams::TimeoutOpts)) }
54
+ attr_reader :timeout_opts
55
55
 
56
- sig { params(timeout_ms: Integer).void }
57
- attr_writer :timeout_ms
56
+ sig do
57
+ params(
58
+ timeout_opts: ContextDev::WebExtractFontsParams::TimeoutOpts::OrHash
59
+ ).void
60
+ end
61
+ attr_writer :timeout_opts
58
62
 
59
63
  sig do
60
64
  params(
@@ -62,7 +66,7 @@ module ContextDev
62
66
  domain: String,
63
67
  max_age_ms: T.nilable(Integer),
64
68
  tags: T::Array[String],
65
- timeout_ms: Integer,
69
+ timeout_opts: ContextDev::WebExtractFontsParams::TimeoutOpts::OrHash,
66
70
  request_options: ContextDev::RequestOptions::OrHash
67
71
  ).returns(T.attached_class)
68
72
  end
@@ -76,17 +80,17 @@ module ContextDev
76
80
  # 'domain' or 'directUrl', but not both.
77
81
  domain: nil,
78
82
  # Maximum age in milliseconds for cached brand data before the API performs a hard
79
- # refresh. Defaults to 3 months (7776000000 ms). Values below 1 day (86400000 ms)
80
- # are clamped to 1 day; values above 1 year (31536000000 ms) are clamped to 1
81
- # year.
83
+ # refresh. Defaults to 3 months (7776000000 ms). Set to 0 to always perform a hard
84
+ # refresh. Negative values are clamped to 0; values above 1 year (31536000000 ms)
85
+ # are clamped to 1 year.
82
86
  max_age_ms: nil,
83
87
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
84
88
  # characters.
85
89
  tags: nil,
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
- timeout_ms: nil,
90
+ # Optional request deadline and behavior on timeout. For GET requests, use
91
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
92
+ # timeoutOpts object.
93
+ timeout_opts: nil,
90
94
  request_options: {}
91
95
  )
92
96
  end
@@ -98,13 +102,122 @@ module ContextDev
98
102
  domain: String,
99
103
  max_age_ms: T.nilable(Integer),
100
104
  tags: T::Array[String],
101
- timeout_ms: Integer,
105
+ timeout_opts: ContextDev::WebExtractFontsParams::TimeoutOpts,
102
106
  request_options: ContextDev::RequestOptions
103
107
  }
104
108
  )
105
109
  end
106
110
  def to_hash
107
111
  end
112
+
113
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
114
+ OrHash =
115
+ T.type_alias do
116
+ T.any(
117
+ ContextDev::WebExtractFontsParams::TimeoutOpts,
118
+ ContextDev::Internal::AnyHash
119
+ )
120
+ end
121
+
122
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
123
+ sig { returns(Integer) }
124
+ attr_accessor :milliseconds
125
+
126
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
127
+ # credits. "return-partial" returns usable results collected so far; if none are
128
+ # available, the request still fails without charging credits. Partial results are
129
+ # not cached as complete results. "return-partial" requires milliseconds of at
130
+ # least 15000.
131
+ sig do
132
+ returns(
133
+ T.nilable(
134
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::OrSymbol
135
+ )
136
+ )
137
+ end
138
+ attr_reader :behavior
139
+
140
+ sig do
141
+ params(
142
+ behavior:
143
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::OrSymbol
144
+ ).void
145
+ end
146
+ attr_writer :behavior
147
+
148
+ # Optional request deadline and behavior on timeout. For GET requests, use
149
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
150
+ # timeoutOpts object.
151
+ sig do
152
+ params(
153
+ milliseconds: Integer,
154
+ behavior:
155
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::OrSymbol
156
+ ).returns(T.attached_class)
157
+ end
158
+ def self.new(
159
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
160
+ milliseconds:,
161
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
162
+ # credits. "return-partial" returns usable results collected so far; if none are
163
+ # available, the request still fails without charging credits. Partial results are
164
+ # not cached as complete results. "return-partial" requires milliseconds of at
165
+ # least 15000.
166
+ behavior: nil
167
+ )
168
+ end
169
+
170
+ sig do
171
+ override.returns(
172
+ {
173
+ milliseconds: Integer,
174
+ behavior:
175
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::OrSymbol
176
+ }
177
+ )
178
+ end
179
+ def to_hash
180
+ end
181
+
182
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
183
+ # credits. "return-partial" returns usable results collected so far; if none are
184
+ # available, the request still fails without charging credits. Partial results are
185
+ # not cached as complete results. "return-partial" requires milliseconds of at
186
+ # least 15000.
187
+ module Behavior
188
+ extend ContextDev::Internal::Type::Enum
189
+
190
+ TaggedSymbol =
191
+ T.type_alias do
192
+ T.all(
193
+ Symbol,
194
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior
195
+ )
196
+ end
197
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
198
+
199
+ FAIL =
200
+ T.let(
201
+ :fail,
202
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::TaggedSymbol
203
+ )
204
+ RETURN_PARTIAL =
205
+ T.let(
206
+ :"return-partial",
207
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::TaggedSymbol
208
+ )
209
+
210
+ sig do
211
+ override.returns(
212
+ T::Array[
213
+ ContextDev::WebExtractFontsParams::TimeoutOpts::Behavior::TaggedSymbol
214
+ ]
215
+ )
216
+ end
217
+ def self.values
218
+ end
219
+ end
220
+ end
108
221
  end
109
222
  end
110
223
  end
@@ -50,6 +50,28 @@ module ContextDev
50
50
  sig { returns(String) }
51
51
  attr_accessor :status
52
52
 
53
+ # How complete the returned content is. `loaded` means the page finished the waits
54
+ # the request asked for. `still-loading` only occurs with
55
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
56
+ # reached first, so the content reflects the DOM at that moment and late-rendering
57
+ # parts may be missing. Partial results are billed at the base request cost.
58
+ sig do
59
+ returns(
60
+ T.nilable(
61
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::TaggedSymbol
62
+ )
63
+ )
64
+ end
65
+ attr_reader :final_dom_state
66
+
67
+ sig do
68
+ params(
69
+ final_dom_state:
70
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::OrSymbol
71
+ ).void
72
+ end
73
+ attr_writer :final_dom_state
74
+
53
75
  # Font assets keyed by family name as it appears in the fonts array (non-generic
54
76
  # names only). Clients match entries in fonts to pick a file URL from files.
55
77
  # Omitted when no families resolve to Google or custom @font-face URLs.
@@ -102,6 +124,8 @@ module ContextDev
102
124
  T::Array[ContextDev::Models::WebExtractFontsResponse::Font::OrHash],
103
125
  request_id: String,
104
126
  status: String,
127
+ final_dom_state:
128
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::OrSymbol,
105
129
  font_links:
106
130
  T::Hash[
107
131
  Symbol,
@@ -127,6 +151,12 @@ module ContextDev
127
151
  request_id:,
128
152
  # Status of the response, e.g., 'ok'
129
153
  status:,
154
+ # How complete the returned content is. `loaded` means the page finished the waits
155
+ # the request asked for. `still-loading` only occurs with
156
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
157
+ # reached first, so the content reflects the DOM at that moment and late-rendering
158
+ # parts may be missing. Partial results are billed at the base request cost.
159
+ final_dom_state: nil,
130
160
  # Font assets keyed by family name as it appears in the fonts array (non-generic
131
161
  # names only). Clients match entries in fonts to pick a file URL from files.
132
162
  # Omitted when no families resolve to Google or custom @font-face URLs.
@@ -146,6 +176,8 @@ module ContextDev
146
176
  fonts: T::Array[ContextDev::Models::WebExtractFontsResponse::Font],
147
177
  request_id: String,
148
178
  status: String,
179
+ final_dom_state:
180
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::TaggedSymbol,
149
181
  font_links:
150
182
  T::Hash[
151
183
  Symbol,
@@ -337,6 +369,45 @@ module ContextDev
337
369
  end
338
370
  end
339
371
 
372
+ # How complete the returned content is. `loaded` means the page finished the waits
373
+ # the request asked for. `still-loading` only occurs with
374
+ # timeoutOpts.behavior=return-partial: the timeoutOpts.milliseconds deadline was
375
+ # reached first, so the content reflects the DOM at that moment and late-rendering
376
+ # parts may be missing. Partial results are billed at the base request cost.
377
+ module FinalDomState
378
+ extend ContextDev::Internal::Type::Enum
379
+
380
+ TaggedSymbol =
381
+ T.type_alias do
382
+ T.all(
383
+ Symbol,
384
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState
385
+ )
386
+ end
387
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
388
+
389
+ LOADED =
390
+ T.let(
391
+ :loaded,
392
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::TaggedSymbol
393
+ )
394
+ STILL_LOADING =
395
+ T.let(
396
+ :"still-loading",
397
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::TaggedSymbol
398
+ )
399
+
400
+ sig do
401
+ override.returns(
402
+ T::Array[
403
+ ContextDev::Models::WebExtractFontsResponse::FinalDomState::TaggedSymbol
404
+ ]
405
+ )
406
+ end
407
+ def self.values
408
+ end
409
+ end
410
+
340
411
  class FontLink < ContextDev::Internal::Type::BaseModel
341
412
  OrHash =
342
413
  T.type_alias do
@@ -145,14 +145,18 @@ module ContextDev
145
145
  sig { params(tags: T::Array[String]).void }
146
146
  attr_writer :tags
147
147
 
148
- # Optional timeout in milliseconds for the request. If the request takes longer
149
- # than this value, it will be aborted with a 408 status code. Maximum allowed
150
- # value is 300000ms (5 minutes).
151
- sig { returns(T.nilable(Integer)) }
152
- attr_reader :timeout_ms
148
+ # Optional request deadline and behavior on timeout. For GET requests, use
149
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
150
+ # timeoutOpts object.
151
+ sig { returns(T.nilable(ContextDev::WebExtractParams::TimeoutOpts)) }
152
+ attr_reader :timeout_opts
153
153
 
154
- sig { params(timeout_ms: Integer).void }
155
- attr_writer :timeout_ms
154
+ sig do
155
+ params(
156
+ timeout_opts: ContextDev::WebExtractParams::TimeoutOpts::OrHash
157
+ ).void
158
+ end
159
+ attr_writer :timeout_opts
156
160
 
157
161
  # Optional browser wait time in milliseconds after initial page load for each
158
162
  # crawled page.
@@ -185,7 +189,7 @@ module ContextDev
185
189
  settle_animations: T::Boolean,
186
190
  stop_after_ms: Integer,
187
191
  tags: T::Array[String],
188
- timeout_ms: Integer,
192
+ timeout_opts: ContextDev::WebExtractParams::TimeoutOpts::OrHash,
189
193
  wait_for_ms: Integer,
190
194
  request_options: ContextDev::RequestOptions::OrHash
191
195
  ).returns(T.attached_class)
@@ -238,10 +242,10 @@ module ContextDev
238
242
  stop_after_ms: nil,
239
243
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
240
244
  tags: nil,
241
- # Optional timeout in milliseconds for the request. If the request takes longer
242
- # than this value, it will be aborted with a 408 status code. Maximum allowed
243
- # value is 300000ms (5 minutes).
244
- timeout_ms: nil,
245
+ # Optional request deadline and behavior on timeout. For GET requests, use
246
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
247
+ # timeoutOpts object.
248
+ timeout_opts: nil,
245
249
  # Optional browser wait time in milliseconds after initial page load for each
246
250
  # crawled page.
247
251
  wait_for_ms: nil,
@@ -273,7 +277,7 @@ module ContextDev
273
277
  settle_animations: T::Boolean,
274
278
  stop_after_ms: Integer,
275
279
  tags: T::Array[String],
276
- timeout_ms: Integer,
280
+ timeout_opts: ContextDev::WebExtractParams::TimeoutOpts,
277
281
  wait_for_ms: Integer,
278
282
  request_options: ContextDev::RequestOptions
279
283
  }
@@ -624,6 +628,109 @@ module ContextDev
624
628
  def to_hash
625
629
  end
626
630
  end
631
+
632
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
633
+ OrHash =
634
+ T.type_alias do
635
+ T.any(
636
+ ContextDev::WebExtractParams::TimeoutOpts,
637
+ ContextDev::Internal::AnyHash
638
+ )
639
+ end
640
+
641
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
642
+ sig { returns(Integer) }
643
+ attr_accessor :milliseconds
644
+
645
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
646
+ # credits. "return-partial" returns usable results collected so far; if none are
647
+ # available, the request still fails without charging credits. Partial results are
648
+ # not cached as complete results.
649
+ sig do
650
+ returns(
651
+ T.nilable(
652
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::OrSymbol
653
+ )
654
+ )
655
+ end
656
+ attr_reader :behavior
657
+
658
+ sig do
659
+ params(
660
+ behavior:
661
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::OrSymbol
662
+ ).void
663
+ end
664
+ attr_writer :behavior
665
+
666
+ # Optional request deadline and behavior on timeout. For GET requests, use
667
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
668
+ # timeoutOpts object.
669
+ sig do
670
+ params(
671
+ milliseconds: Integer,
672
+ behavior:
673
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::OrSymbol
674
+ ).returns(T.attached_class)
675
+ end
676
+ def self.new(
677
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
678
+ milliseconds:,
679
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
680
+ # credits. "return-partial" returns usable results collected so far; if none are
681
+ # available, the request still fails without charging credits. Partial results are
682
+ # not cached as complete results.
683
+ behavior: nil
684
+ )
685
+ end
686
+
687
+ sig do
688
+ override.returns(
689
+ {
690
+ milliseconds: Integer,
691
+ behavior:
692
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::OrSymbol
693
+ }
694
+ )
695
+ end
696
+ def to_hash
697
+ end
698
+
699
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
700
+ # credits. "return-partial" returns usable results collected so far; if none are
701
+ # available, the request still fails without charging credits. Partial results are
702
+ # not cached as complete results.
703
+ module Behavior
704
+ extend ContextDev::Internal::Type::Enum
705
+
706
+ TaggedSymbol =
707
+ T.type_alias do
708
+ T.all(Symbol, ContextDev::WebExtractParams::TimeoutOpts::Behavior)
709
+ end
710
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
711
+
712
+ FAIL =
713
+ T.let(
714
+ :fail,
715
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::TaggedSymbol
716
+ )
717
+ RETURN_PARTIAL =
718
+ T.let(
719
+ :"return-partial",
720
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::TaggedSymbol
721
+ )
722
+
723
+ sig do
724
+ override.returns(
725
+ T::Array[
726
+ ContextDev::WebExtractParams::TimeoutOpts::Behavior::TaggedSymbol
727
+ ]
728
+ )
729
+ end
730
+ def self.values
731
+ end
732
+ end
733
+ end
627
734
  end
628
735
  end
629
736
  end
@@ -70,6 +70,14 @@ module ContextDev
70
70
  end
71
71
  attr_writer :key_metadata
72
72
 
73
+ # True when the timeout ended processing and this response contains only usable
74
+ # results completed so far. Unfinished results are omitted.
75
+ sig { returns(T.nilable(T::Boolean)) }
76
+ attr_reader :partial
77
+
78
+ sig { params(partial: T::Boolean).void }
79
+ attr_writer :partial
80
+
73
81
  sig do
74
82
  params(
75
83
  cache_metadata:
@@ -81,7 +89,8 @@ module ContextDev
81
89
  url: String,
82
90
  urls_analyzed: T::Array[String],
83
91
  key_metadata:
84
- ContextDev::Models::WebExtractResponse::KeyMetadata::OrHash
92
+ ContextDev::Models::WebExtractResponse::KeyMetadata::OrHash,
93
+ partial: T::Boolean
85
94
  ).returns(T.attached_class)
86
95
  end
87
96
  def self.new(
@@ -102,7 +111,10 @@ module ContextDev
102
111
  # List of URLs whose Markdown was used for extraction
103
112
  urls_analyzed:,
104
113
  # Credit usage, included whenever a valid API key is provided.
105
- key_metadata: nil
114
+ key_metadata: nil,
115
+ # True when the timeout ended processing and this response contains only usable
116
+ # results completed so far. Unfinished results are omitted.
117
+ partial: nil
106
118
  )
107
119
  end
108
120
 
@@ -117,7 +129,8 @@ module ContextDev
117
129
  status: String,
118
130
  url: String,
119
131
  urls_analyzed: T::Array[String],
120
- key_metadata: ContextDev::Models::WebExtractResponse::KeyMetadata
132
+ key_metadata: ContextDev::Models::WebExtractResponse::KeyMetadata,
133
+ partial: T::Boolean
121
134
  }
122
135
  )
123
136
  end