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
@@ -34,21 +34,27 @@ module ContextDev
34
34
  sig { params(tags: T::Array[String]).void }
35
35
  attr_writer :tags
36
36
 
37
- # Optional timeout in milliseconds for the request. If the request takes longer
38
- # than this value, it will be aborted with a 408 status code. Maximum allowed
39
- # value is 300000ms (5 minutes).
40
- sig { returns(T.nilable(Integer)) }
41
- attr_reader :timeout_ms
37
+ # Optional request deadline and behavior on timeout. For GET requests, use
38
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
39
+ # timeoutOpts object.
40
+ sig do
41
+ returns(T.nilable(ContextDev::AIExtractProductParams::TimeoutOpts))
42
+ end
43
+ attr_reader :timeout_opts
42
44
 
43
- sig { params(timeout_ms: Integer).void }
44
- attr_writer :timeout_ms
45
+ sig do
46
+ params(
47
+ timeout_opts: ContextDev::AIExtractProductParams::TimeoutOpts::OrHash
48
+ ).void
49
+ end
50
+ attr_writer :timeout_opts
45
51
 
46
52
  sig do
47
53
  params(
48
54
  url: String,
49
55
  max_age_ms: Integer,
50
56
  tags: T::Array[String],
51
- timeout_ms: Integer,
57
+ timeout_opts: ContextDev::AIExtractProductParams::TimeoutOpts::OrHash,
52
58
  request_options: ContextDev::RequestOptions::OrHash
53
59
  ).returns(T.attached_class)
54
60
  end
@@ -61,10 +67,10 @@ module ContextDev
61
67
  max_age_ms: nil,
62
68
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
63
69
  tags: nil,
64
- # Optional timeout in milliseconds for the request. If the request takes longer
65
- # than this value, it will be aborted with a 408 status code. Maximum allowed
66
- # value is 300000ms (5 minutes).
67
- timeout_ms: nil,
70
+ # Optional request deadline and behavior on timeout. For GET requests, use
71
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
72
+ # timeoutOpts object.
73
+ timeout_opts: nil,
68
74
  request_options: {}
69
75
  )
70
76
  end
@@ -75,13 +81,119 @@ module ContextDev
75
81
  url: String,
76
82
  max_age_ms: Integer,
77
83
  tags: T::Array[String],
78
- timeout_ms: Integer,
84
+ timeout_opts: ContextDev::AIExtractProductParams::TimeoutOpts,
79
85
  request_options: ContextDev::RequestOptions
80
86
  }
81
87
  )
82
88
  end
83
89
  def to_hash
84
90
  end
91
+
92
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
93
+ OrHash =
94
+ T.type_alias do
95
+ T.any(
96
+ ContextDev::AIExtractProductParams::TimeoutOpts,
97
+ ContextDev::Internal::AnyHash
98
+ )
99
+ end
100
+
101
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
102
+ sig { returns(Integer) }
103
+ attr_accessor :milliseconds
104
+
105
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
106
+ # credits. "return-partial" returns usable results collected so far; if none are
107
+ # available, the request still fails without charging credits. Partial results are
108
+ # not cached as complete results.
109
+ sig do
110
+ returns(
111
+ T.nilable(
112
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::OrSymbol
113
+ )
114
+ )
115
+ end
116
+ attr_reader :behavior
117
+
118
+ sig do
119
+ params(
120
+ behavior:
121
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::OrSymbol
122
+ ).void
123
+ end
124
+ attr_writer :behavior
125
+
126
+ # Optional request deadline and behavior on timeout. For GET requests, use
127
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
128
+ # timeoutOpts object.
129
+ sig do
130
+ params(
131
+ milliseconds: Integer,
132
+ behavior:
133
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::OrSymbol
134
+ ).returns(T.attached_class)
135
+ end
136
+ def self.new(
137
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
138
+ milliseconds:,
139
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
140
+ # credits. "return-partial" returns usable results collected so far; if none are
141
+ # available, the request still fails without charging credits. Partial results are
142
+ # not cached as complete results.
143
+ behavior: nil
144
+ )
145
+ end
146
+
147
+ sig do
148
+ override.returns(
149
+ {
150
+ milliseconds: Integer,
151
+ behavior:
152
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::OrSymbol
153
+ }
154
+ )
155
+ end
156
+ def to_hash
157
+ end
158
+
159
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
160
+ # credits. "return-partial" returns usable results collected so far; if none are
161
+ # available, the request still fails without charging credits. Partial results are
162
+ # not cached as complete results.
163
+ module Behavior
164
+ extend ContextDev::Internal::Type::Enum
165
+
166
+ TaggedSymbol =
167
+ T.type_alias do
168
+ T.all(
169
+ Symbol,
170
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior
171
+ )
172
+ end
173
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
174
+
175
+ FAIL =
176
+ T.let(
177
+ :fail,
178
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::TaggedSymbol
179
+ )
180
+ RETURN_PARTIAL =
181
+ T.let(
182
+ :"return-partial",
183
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::TaggedSymbol
184
+ )
185
+
186
+ sig do
187
+ override.returns(
188
+ T::Array[
189
+ ContextDev::AIExtractProductParams::TimeoutOpts::Behavior::TaggedSymbol
190
+ ]
191
+ )
192
+ end
193
+ def self.values
194
+ end
195
+ end
196
+ end
85
197
  end
86
198
  end
87
199
  end
@@ -55,6 +55,14 @@ module ContextDev
55
55
  end
56
56
  attr_writer :key_metadata
57
57
 
58
+ # True when the timeout ended processing and this response contains only usable
59
+ # results completed so far. Unfinished results are omitted.
60
+ sig { returns(T.nilable(T::Boolean)) }
61
+ attr_reader :partial
62
+
63
+ sig { params(partial: T::Boolean).void }
64
+ attr_writer :partial
65
+
58
66
  # The detected ecommerce platform, or null if not a product page
59
67
  sig do
60
68
  returns(
@@ -91,6 +99,7 @@ module ContextDev
91
99
  is_product_page: T::Boolean,
92
100
  key_metadata:
93
101
  ContextDev::Models::AIExtractProductResponse::KeyMetadata::OrHash,
102
+ partial: T::Boolean,
94
103
  platform:
95
104
  T.nilable(
96
105
  ContextDev::Models::AIExtractProductResponse::Platform::OrSymbol
@@ -113,6 +122,9 @@ module ContextDev
113
122
  is_product_page: nil,
114
123
  # Credit usage, included whenever a valid API key is provided.
115
124
  key_metadata: nil,
125
+ # True when the timeout ended processing and this response contains only usable
126
+ # results completed so far. Unfinished results are omitted.
127
+ partial: nil,
116
128
  # The detected ecommerce platform, or null if not a product page
117
129
  platform: nil,
118
130
  # The extracted product data, or null if not a product page
@@ -129,6 +141,7 @@ module ContextDev
129
141
  is_product_page: T::Boolean,
130
142
  key_metadata:
131
143
  ContextDev::Models::AIExtractProductResponse::KeyMetadata,
144
+ partial: T::Boolean,
132
145
  platform:
133
146
  T.nilable(
134
147
  ContextDev::Models::AIExtractProductResponse::Platform::TaggedSymbol
@@ -99,14 +99,25 @@ module ContextDev
99
99
  sig { params(tags: T::Array[String]).void }
100
100
  attr_writer :tags
101
101
 
102
- # Optional timeout in milliseconds for the request. If the request takes longer
103
- # than this value, it will be aborted with a 408 status code. Maximum allowed
104
- # value is 300000ms (5 minutes).
105
- sig { returns(T.nilable(Integer)) }
106
- attr_reader :timeout_ms
102
+ # Optional request deadline and behavior on timeout. For GET requests, use
103
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
104
+ # timeoutOpts object.
105
+ sig do
106
+ returns(
107
+ T.nilable(
108
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts
109
+ )
110
+ )
111
+ end
112
+ attr_reader :timeout_opts
107
113
 
108
- sig { params(timeout_ms: Integer).void }
109
- attr_writer :timeout_ms
114
+ sig do
115
+ params(
116
+ timeout_opts:
117
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::OrHash
118
+ ).void
119
+ end
120
+ attr_writer :timeout_opts
110
121
 
111
122
  sig do
112
123
  params(
@@ -114,7 +125,8 @@ module ContextDev
114
125
  max_age_ms: Integer,
115
126
  max_products: Integer,
116
127
  tags: T::Array[String],
117
- timeout_ms: Integer
128
+ timeout_opts:
129
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::OrHash
118
130
  ).returns(T.attached_class)
119
131
  end
120
132
  def self.new(
@@ -128,10 +140,10 @@ module ContextDev
128
140
  max_products: nil,
129
141
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
130
142
  tags: nil,
131
- # Optional timeout in milliseconds for the request. If the request takes longer
132
- # than this value, it will be aborted with a 408 status code. Maximum allowed
133
- # value is 300000ms (5 minutes).
134
- timeout_ms: nil
143
+ # Optional request deadline and behavior on timeout. For GET requests, use
144
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
145
+ # timeoutOpts object.
146
+ timeout_opts: nil
135
147
  )
136
148
  end
137
149
 
@@ -142,12 +154,119 @@ module ContextDev
142
154
  max_age_ms: Integer,
143
155
  max_products: Integer,
144
156
  tags: T::Array[String],
145
- timeout_ms: Integer
157
+ timeout_opts:
158
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts
146
159
  }
147
160
  )
148
161
  end
149
162
  def to_hash
150
163
  end
164
+
165
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
166
+ OrHash =
167
+ T.type_alias do
168
+ T.any(
169
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts,
170
+ ContextDev::Internal::AnyHash
171
+ )
172
+ end
173
+
174
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
175
+ sig { returns(Integer) }
176
+ attr_accessor :milliseconds
177
+
178
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
179
+ # credits. "return-partial" returns usable results collected so far; if none are
180
+ # available, the request still fails without charging credits. Partial results are
181
+ # not cached as complete results.
182
+ sig do
183
+ returns(
184
+ T.nilable(
185
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::OrSymbol
186
+ )
187
+ )
188
+ end
189
+ attr_reader :behavior
190
+
191
+ sig do
192
+ params(
193
+ behavior:
194
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::OrSymbol
195
+ ).void
196
+ end
197
+ attr_writer :behavior
198
+
199
+ # Optional request deadline and behavior on timeout. For GET requests, use
200
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
201
+ # timeoutOpts object.
202
+ sig do
203
+ params(
204
+ milliseconds: Integer,
205
+ behavior:
206
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::OrSymbol
207
+ ).returns(T.attached_class)
208
+ end
209
+ def self.new(
210
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
211
+ milliseconds:,
212
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
213
+ # credits. "return-partial" returns usable results collected so far; if none are
214
+ # available, the request still fails without charging credits. Partial results are
215
+ # not cached as complete results.
216
+ behavior: nil
217
+ )
218
+ end
219
+
220
+ sig do
221
+ override.returns(
222
+ {
223
+ milliseconds: Integer,
224
+ behavior:
225
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::OrSymbol
226
+ }
227
+ )
228
+ end
229
+ def to_hash
230
+ end
231
+
232
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
233
+ # credits. "return-partial" returns usable results collected so far; if none are
234
+ # available, the request still fails without charging credits. Partial results are
235
+ # not cached as complete results.
236
+ module Behavior
237
+ extend ContextDev::Internal::Type::Enum
238
+
239
+ TaggedSymbol =
240
+ T.type_alias do
241
+ T.all(
242
+ Symbol,
243
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior
244
+ )
245
+ end
246
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
247
+
248
+ FAIL =
249
+ T.let(
250
+ :fail,
251
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::TaggedSymbol
252
+ )
253
+ RETURN_PARTIAL =
254
+ T.let(
255
+ :"return-partial",
256
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::TaggedSymbol
257
+ )
258
+
259
+ sig do
260
+ override.returns(
261
+ T::Array[
262
+ ContextDev::AIExtractProductsParams::Body::ByDomain::TimeoutOpts::Behavior::TaggedSymbol
263
+ ]
264
+ )
265
+ end
266
+ def self.values
267
+ end
268
+ end
269
+ end
151
270
  end
152
271
 
153
272
  class ByDirectURL < ContextDev::Internal::Type::BaseModel
@@ -187,14 +306,25 @@ module ContextDev
187
306
  sig { params(tags: T::Array[String]).void }
188
307
  attr_writer :tags
189
308
 
190
- # Optional timeout in milliseconds for the request. If the request takes longer
191
- # than this value, it will be aborted with a 408 status code. Maximum allowed
192
- # value is 300000ms (5 minutes).
193
- sig { returns(T.nilable(Integer)) }
194
- attr_reader :timeout_ms
309
+ # Optional request deadline and behavior on timeout. For GET requests, use
310
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
311
+ # timeoutOpts object.
312
+ sig do
313
+ returns(
314
+ T.nilable(
315
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts
316
+ )
317
+ )
318
+ end
319
+ attr_reader :timeout_opts
195
320
 
196
- sig { params(timeout_ms: Integer).void }
197
- attr_writer :timeout_ms
321
+ sig do
322
+ params(
323
+ timeout_opts:
324
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::OrHash
325
+ ).void
326
+ end
327
+ attr_writer :timeout_opts
198
328
 
199
329
  sig do
200
330
  params(
@@ -202,7 +332,8 @@ module ContextDev
202
332
  max_age_ms: Integer,
203
333
  max_products: Integer,
204
334
  tags: T::Array[String],
205
- timeout_ms: Integer
335
+ timeout_opts:
336
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::OrHash
206
337
  ).returns(T.attached_class)
207
338
  end
208
339
  def self.new(
@@ -217,10 +348,10 @@ module ContextDev
217
348
  max_products: nil,
218
349
  # Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
219
350
  tags: nil,
220
- # Optional timeout in milliseconds for the request. If the request takes longer
221
- # than this value, it will be aborted with a 408 status code. Maximum allowed
222
- # value is 300000ms (5 minutes).
223
- timeout_ms: nil
351
+ # Optional request deadline and behavior on timeout. For GET requests, use
352
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
353
+ # timeoutOpts object.
354
+ timeout_opts: nil
224
355
  )
225
356
  end
226
357
 
@@ -231,12 +362,119 @@ module ContextDev
231
362
  max_age_ms: Integer,
232
363
  max_products: Integer,
233
364
  tags: T::Array[String],
234
- timeout_ms: Integer
365
+ timeout_opts:
366
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts
235
367
  }
236
368
  )
237
369
  end
238
370
  def to_hash
239
371
  end
372
+
373
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
374
+ OrHash =
375
+ T.type_alias do
376
+ T.any(
377
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts,
378
+ ContextDev::Internal::AnyHash
379
+ )
380
+ end
381
+
382
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
383
+ sig { returns(Integer) }
384
+ attr_accessor :milliseconds
385
+
386
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
387
+ # credits. "return-partial" returns usable results collected so far; if none are
388
+ # available, the request still fails without charging credits. Partial results are
389
+ # not cached as complete results.
390
+ sig do
391
+ returns(
392
+ T.nilable(
393
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::OrSymbol
394
+ )
395
+ )
396
+ end
397
+ attr_reader :behavior
398
+
399
+ sig do
400
+ params(
401
+ behavior:
402
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::OrSymbol
403
+ ).void
404
+ end
405
+ attr_writer :behavior
406
+
407
+ # Optional request deadline and behavior on timeout. For GET requests, use
408
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
409
+ # timeoutOpts object.
410
+ sig do
411
+ params(
412
+ milliseconds: Integer,
413
+ behavior:
414
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::OrSymbol
415
+ ).returns(T.attached_class)
416
+ end
417
+ def self.new(
418
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
419
+ milliseconds:,
420
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
421
+ # credits. "return-partial" returns usable results collected so far; if none are
422
+ # available, the request still fails without charging credits. Partial results are
423
+ # not cached as complete results.
424
+ behavior: nil
425
+ )
426
+ end
427
+
428
+ sig do
429
+ override.returns(
430
+ {
431
+ milliseconds: Integer,
432
+ behavior:
433
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::OrSymbol
434
+ }
435
+ )
436
+ end
437
+ def to_hash
438
+ end
439
+
440
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
441
+ # credits. "return-partial" returns usable results collected so far; if none are
442
+ # available, the request still fails without charging credits. Partial results are
443
+ # not cached as complete results.
444
+ module Behavior
445
+ extend ContextDev::Internal::Type::Enum
446
+
447
+ TaggedSymbol =
448
+ T.type_alias do
449
+ T.all(
450
+ Symbol,
451
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior
452
+ )
453
+ end
454
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
455
+
456
+ FAIL =
457
+ T.let(
458
+ :fail,
459
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::TaggedSymbol
460
+ )
461
+ RETURN_PARTIAL =
462
+ T.let(
463
+ :"return-partial",
464
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::TaggedSymbol
465
+ )
466
+
467
+ sig do
468
+ override.returns(
469
+ T::Array[
470
+ ContextDev::AIExtractProductsParams::Body::ByDirectURL::TimeoutOpts::Behavior::TaggedSymbol
471
+ ]
472
+ )
473
+ end
474
+ def self.values
475
+ end
476
+ end
477
+ end
240
478
  end
241
479
 
242
480
  sig do
@@ -48,6 +48,15 @@ module ContextDev
48
48
  end
49
49
  attr_writer :key_metadata
50
50
 
51
+ # True when timeoutOpts.behavior=return-partial returned the usable results
52
+ # collected before the deadline. Partial collections are not cached as complete
53
+ # results.
54
+ sig { returns(T.nilable(T::Boolean)) }
55
+ attr_reader :partial
56
+
57
+ sig { params(partial: T::Boolean).void }
58
+ attr_writer :partial
59
+
51
60
  # Array of products extracted from the website
52
61
  sig do
53
62
  returns(
@@ -75,6 +84,7 @@ module ContextDev
75
84
  request_id: String,
76
85
  key_metadata:
77
86
  ContextDev::Models::AIExtractProductsResponse::KeyMetadata::OrHash,
87
+ partial: T::Boolean,
78
88
  products:
79
89
  T::Array[
80
90
  ContextDev::Models::AIExtractProductsResponse::Product::OrHash
@@ -91,6 +101,10 @@ module ContextDev
91
101
  request_id:,
92
102
  # Credit usage, included whenever a valid API key is provided.
93
103
  key_metadata: nil,
104
+ # True when timeoutOpts.behavior=return-partial returned the usable results
105
+ # collected before the deadline. Partial collections are not cached as complete
106
+ # results.
107
+ partial: nil,
94
108
  # Array of products extracted from the website
95
109
  products: nil
96
110
  )
@@ -104,6 +118,7 @@ module ContextDev
104
118
  request_id: String,
105
119
  key_metadata:
106
120
  ContextDev::Models::AIExtractProductsResponse::KeyMetadata,
121
+ partial: T::Boolean,
107
122
  products:
108
123
  T::Array[ContextDev::Models::AIExtractProductsResponse::Product]
109
124
  }