context.dev 2.16.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +1 -1
  4. data/lib/context_dev/models/ai_extract_product_params.rb +53 -8
  5. data/lib/context_dev/models/ai_extract_product_response.rb +10 -1
  6. data/lib/context_dev/models/ai_extract_products_params.rb +116 -16
  7. data/lib/context_dev/models/ai_extract_products_response.rb +11 -1
  8. data/lib/context_dev/models/brand_retrieve_params.rb +355 -60
  9. data/lib/context_dev/models/brand_retrieve_response.rb +10 -1
  10. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +57 -11
  11. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +10 -1
  12. data/lib/context_dev/models/industry_retrieve_naics_params.rb +53 -8
  13. data/lib/context_dev/models/industry_retrieve_naics_response.rb +10 -1
  14. data/lib/context_dev/models/industry_retrieve_sic_params.rb +53 -8
  15. data/lib/context_dev/models/industry_retrieve_sic_response.rb +10 -1
  16. data/lib/context_dev/models/monitor_create_params.rb +27 -3
  17. data/lib/context_dev/models/monitor_create_response.rb +30 -5
  18. data/lib/context_dev/models/monitor_list_response.rb +30 -5
  19. data/lib/context_dev/models/monitor_retrieve_response.rb +30 -5
  20. data/lib/context_dev/models/monitor_update_params.rb +27 -3
  21. data/lib/context_dev/models/monitor_update_response.rb +30 -5
  22. data/lib/context_dev/models/person_enrich_params.rb +53 -8
  23. data/lib/context_dev/models/person_enrich_response.rb +10 -1
  24. data/lib/context_dev/models/utility_prefetch_params.rb +48 -8
  25. data/lib/context_dev/models/web_answers_params.rb +124 -0
  26. data/lib/context_dev/models/web_answers_response.rb +68 -0
  27. data/lib/context_dev/models/web_extract_competitors_params.rb +53 -8
  28. data/lib/context_dev/models/web_extract_competitors_response.rb +10 -1
  29. data/lib/context_dev/models/web_extract_fonts_params.rb +58 -11
  30. data/lib/context_dev/models/web_extract_fonts_response.rb +32 -1
  31. data/lib/context_dev/models/web_extract_params.rb +53 -8
  32. data/lib/context_dev/models/web_extract_response.rb +10 -1
  33. data/lib/context_dev/models/web_extract_styleguide_params.rb +58 -11
  34. data/lib/context_dev/models/web_extract_styleguide_response.rb +32 -1
  35. data/lib/context_dev/models/web_screenshot_params.rb +58 -10
  36. data/lib/context_dev/models/web_screenshot_response.rb +32 -1
  37. data/lib/context_dev/models/web_search_params.rb +112 -16
  38. data/lib/context_dev/models/web_search_response.rb +43 -2
  39. data/lib/context_dev/models/web_web_crawl_md_params.rb +53 -8
  40. data/lib/context_dev/models/web_web_crawl_md_response.rb +11 -1
  41. data/lib/context_dev/models/web_web_scrape_bytes_params.rb +344 -0
  42. data/lib/context_dev/models/web_web_scrape_bytes_response.rb +135 -0
  43. data/lib/context_dev/models/web_web_scrape_html_params.rb +57 -10
  44. data/lib/context_dev/models/web_web_scrape_html_response.rb +32 -1
  45. data/lib/context_dev/models/web_web_scrape_images_params.rb +57 -10
  46. data/lib/context_dev/models/web_web_scrape_images_response.rb +42 -1
  47. data/lib/context_dev/models/web_web_scrape_md_params.rb +57 -10
  48. data/lib/context_dev/models/web_web_scrape_md_response.rb +32 -1
  49. data/lib/context_dev/models/web_web_scrape_sitemap_params.rb +53 -8
  50. data/lib/context_dev/models/web_web_scrape_sitemap_response.rb +11 -1
  51. data/lib/context_dev/models.rb +4 -0
  52. data/lib/context_dev/resources/ai.rb +2 -2
  53. data/lib/context_dev/resources/brand.rb +3 -3
  54. data/lib/context_dev/resources/industry.rb +6 -6
  55. data/lib/context_dev/resources/people.rb +2 -2
  56. data/lib/context_dev/resources/utility.rb +2 -2
  57. data/lib/context_dev/resources/web.rb +119 -33
  58. data/lib/context_dev/version.rb +1 -1
  59. data/lib/context_dev.rb +4 -0
  60. data/rbi/context_dev/models/ai_extract_product_params.rbi +125 -13
  61. data/rbi/context_dev/models/ai_extract_product_response.rbi +13 -0
  62. data/rbi/context_dev/models/ai_extract_products_params.rbi +264 -26
  63. data/rbi/context_dev/models/ai_extract_products_response.rbi +15 -0
  64. data/rbi/context_dev/models/brand_retrieve_params.rbi +816 -102
  65. data/rbi/context_dev/models/brand_retrieve_response.rbi +13 -0
  66. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +136 -19
  67. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +13 -0
  68. data/rbi/context_dev/models/industry_retrieve_naics_params.rbi +127 -13
  69. data/rbi/context_dev/models/industry_retrieve_naics_response.rbi +13 -0
  70. data/rbi/context_dev/models/industry_retrieve_sic_params.rbi +127 -13
  71. data/rbi/context_dev/models/industry_retrieve_sic_response.rbi +13 -0
  72. data/rbi/context_dev/models/monitor_create_params.rbi +40 -2
  73. data/rbi/context_dev/models/monitor_create_response.rbi +44 -4
  74. data/rbi/context_dev/models/monitor_list_response.rbi +44 -4
  75. data/rbi/context_dev/models/monitor_retrieve_response.rbi +44 -4
  76. data/rbi/context_dev/models/monitor_update_params.rbi +40 -2
  77. data/rbi/context_dev/models/monitor_update_response.rbi +44 -4
  78. data/rbi/context_dev/models/person_enrich_params.rbi +123 -13
  79. data/rbi/context_dev/models/person_enrich_response.rbi +16 -3
  80. data/rbi/context_dev/models/utility_prefetch_params.rbi +112 -13
  81. data/rbi/context_dev/models/web_answers_params.rbi +234 -0
  82. data/rbi/context_dev/models/web_answers_response.rbi +122 -0
  83. data/rbi/context_dev/models/web_extract_competitors_params.rbi +127 -13
  84. data/rbi/context_dev/models/web_extract_competitors_response.rbi +16 -3
  85. data/rbi/context_dev/models/web_extract_fonts_params.rbi +132 -19
  86. data/rbi/context_dev/models/web_extract_fonts_response.rbi +71 -0
  87. data/rbi/context_dev/models/web_extract_params.rbi +120 -13
  88. data/rbi/context_dev/models/web_extract_response.rbi +16 -3
  89. data/rbi/context_dev/models/web_extract_styleguide_params.rbi +136 -19
  90. data/rbi/context_dev/models/web_extract_styleguide_response.rbi +71 -0
  91. data/rbi/context_dev/models/web_screenshot_params.rbi +132 -17
  92. data/rbi/context_dev/models/web_screenshot_response.rbi +71 -0
  93. data/rbi/context_dev/models/web_search_params.rbi +253 -26
  94. data/rbi/context_dev/models/web_search_response.rbi +92 -6
  95. data/rbi/context_dev/models/web_web_crawl_md_params.rbi +123 -13
  96. data/rbi/context_dev/models/web_web_crawl_md_response.rbi +19 -3
  97. data/rbi/context_dev/models/web_web_scrape_bytes_params.rbi +699 -0
  98. data/rbi/context_dev/models/web_web_scrape_bytes_response.rbi +238 -0
  99. data/rbi/context_dev/models/web_web_scrape_html_params.rbi +132 -17
  100. data/rbi/context_dev/models/web_web_scrape_html_response.rbi +61 -0
  101. data/rbi/context_dev/models/web_web_scrape_images_params.rbi +134 -17
  102. data/rbi/context_dev/models/web_web_scrape_images_response.rbi +89 -3
  103. data/rbi/context_dev/models/web_web_scrape_md_params.rbi +130 -17
  104. data/rbi/context_dev/models/web_web_scrape_md_response.rbi +61 -0
  105. data/rbi/context_dev/models/web_web_scrape_sitemap_params.rbi +127 -13
  106. data/rbi/context_dev/models/web_web_scrape_sitemap_response.rbi +18 -3
  107. data/rbi/context_dev/models.rbi +4 -0
  108. data/rbi/context_dev/resources/ai.rbi +5 -5
  109. data/rbi/context_dev/resources/brand.rbi +9 -8
  110. data/rbi/context_dev/resources/industry.rbi +12 -10
  111. data/rbi/context_dev/resources/people.rbi +5 -5
  112. data/rbi/context_dev/resources/utility.rbi +5 -5
  113. data/rbi/context_dev/resources/web.rbi +170 -72
  114. data/sig/context_dev/models/ai_extract_product_params.rbs +44 -5
  115. data/sig/context_dev/models/ai_extract_product_response.rbs +7 -0
  116. data/sig/context_dev/models/ai_extract_products_params.rbs +88 -10
  117. data/sig/context_dev/models/ai_extract_products_response.rbs +7 -0
  118. data/sig/context_dev/models/brand_retrieve_params.rbs +264 -30
  119. data/sig/context_dev/models/brand_retrieve_response.rbs +7 -0
  120. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +44 -5
  121. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +7 -0
  122. data/sig/context_dev/models/industry_retrieve_naics_params.rbs +44 -5
  123. data/sig/context_dev/models/industry_retrieve_naics_response.rbs +7 -0
  124. data/sig/context_dev/models/industry_retrieve_sic_params.rbs +44 -5
  125. data/sig/context_dev/models/industry_retrieve_sic_response.rbs +7 -0
  126. data/sig/context_dev/models/monitor_create_params.rbs +14 -0
  127. data/sig/context_dev/models/monitor_create_response.rbs +14 -0
  128. data/sig/context_dev/models/monitor_list_response.rbs +14 -0
  129. data/sig/context_dev/models/monitor_retrieve_response.rbs +14 -0
  130. data/sig/context_dev/models/monitor_update_params.rbs +14 -0
  131. data/sig/context_dev/models/monitor_update_response.rbs +14 -0
  132. data/sig/context_dev/models/person_enrich_params.rbs +44 -5
  133. data/sig/context_dev/models/person_enrich_response.rbs +10 -3
  134. data/sig/context_dev/models/utility_prefetch_params.rbs +43 -5
  135. data/sig/context_dev/models/web_answers_params.rbs +106 -0
  136. data/sig/context_dev/models/web_answers_response.rbs +60 -0
  137. data/sig/context_dev/models/web_extract_competitors_params.rbs +44 -5
  138. data/sig/context_dev/models/web_extract_competitors_response.rbs +10 -3
  139. data/sig/context_dev/models/web_extract_fonts_params.rbs +44 -5
  140. data/sig/context_dev/models/web_extract_fonts_response.rbs +20 -0
  141. data/sig/context_dev/models/web_extract_params.rbs +44 -5
  142. data/sig/context_dev/models/web_extract_response.rbs +10 -3
  143. data/sig/context_dev/models/web_extract_styleguide_params.rbs +44 -5
  144. data/sig/context_dev/models/web_extract_styleguide_response.rbs +20 -0
  145. data/sig/context_dev/models/web_screenshot_params.rbs +44 -5
  146. data/sig/context_dev/models/web_screenshot_response.rbs +20 -0
  147. data/sig/context_dev/models/web_search_params.rbs +88 -10
  148. data/sig/context_dev/models/web_search_response.rbs +33 -6
  149. data/sig/context_dev/models/web_web_crawl_md_params.rbs +44 -5
  150. data/sig/context_dev/models/web_web_crawl_md_response.rbs +10 -3
  151. data/sig/context_dev/models/web_web_scrape_bytes_params.rbs +531 -0
  152. data/sig/context_dev/models/web_web_scrape_bytes_response.rbs +108 -0
  153. data/sig/context_dev/models/web_web_scrape_html_params.rbs +44 -5
  154. data/sig/context_dev/models/web_web_scrape_html_response.rbs +16 -0
  155. data/sig/context_dev/models/web_web_scrape_images_params.rbs +44 -5
  156. data/sig/context_dev/models/web_web_scrape_images_response.rbs +30 -3
  157. data/sig/context_dev/models/web_web_scrape_md_params.rbs +44 -5
  158. data/sig/context_dev/models/web_web_scrape_md_response.rbs +16 -0
  159. data/sig/context_dev/models/web_web_scrape_sitemap_params.rbs +44 -5
  160. data/sig/context_dev/models/web_web_scrape_sitemap_response.rbs +10 -3
  161. data/sig/context_dev/models.rbs +4 -0
  162. data/sig/context_dev/resources/ai.rbs +1 -1
  163. data/sig/context_dev/resources/brand.rbs +1 -1
  164. data/sig/context_dev/resources/industry.rbs +2 -2
  165. data/sig/context_dev/resources/people.rbs +1 -1
  166. data/sig/context_dev/resources/utility.rbs +1 -1
  167. data/sig/context_dev/resources/web.rbs +30 -11
  168. metadata +14 -2
@@ -0,0 +1,122 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class WebAnswersResponse < ContextDev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ ContextDev::Models::WebAnswersResponse,
10
+ ContextDev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The answer, in the shape requested by json_format.
15
+ sig { returns(T::Hash[Symbol, T.anything]) }
16
+ attr_accessor :json_content
17
+
18
+ # URLs that supplied search results or readable page content, in first-seen order.
19
+ # Unreadable pages are excluded.
20
+ sig { returns(T::Array[String]) }
21
+ attr_accessor :sources
22
+
23
+ # Credit usage, included whenever a valid API key is provided.
24
+ sig do
25
+ returns(T.nilable(ContextDev::Models::WebAnswersResponse::KeyMetadata))
26
+ end
27
+ attr_reader :key_metadata
28
+
29
+ sig do
30
+ params(
31
+ key_metadata:
32
+ ContextDev::Models::WebAnswersResponse::KeyMetadata::OrHash
33
+ ).void
34
+ end
35
+ attr_writer :key_metadata
36
+
37
+ # True when the request deadline ended research and the answer uses the evidence
38
+ # collected so far.
39
+ sig { returns(T.nilable(T::Boolean)) }
40
+ attr_reader :partial
41
+
42
+ sig { params(partial: T::Boolean).void }
43
+ attr_writer :partial
44
+
45
+ sig do
46
+ params(
47
+ json_content: T::Hash[Symbol, T.anything],
48
+ sources: T::Array[String],
49
+ key_metadata:
50
+ ContextDev::Models::WebAnswersResponse::KeyMetadata::OrHash,
51
+ partial: T::Boolean
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ # The answer, in the shape requested by json_format.
56
+ json_content:,
57
+ # URLs that supplied search results or readable page content, in first-seen order.
58
+ # Unreadable pages are excluded.
59
+ sources:,
60
+ # Credit usage, included whenever a valid API key is provided.
61
+ key_metadata: nil,
62
+ # True when the request deadline ended research and the answer uses the evidence
63
+ # collected so far.
64
+ partial: nil
65
+ )
66
+ end
67
+
68
+ sig do
69
+ override.returns(
70
+ {
71
+ json_content: T::Hash[Symbol, T.anything],
72
+ sources: T::Array[String],
73
+ key_metadata: ContextDev::Models::WebAnswersResponse::KeyMetadata,
74
+ partial: T::Boolean
75
+ }
76
+ )
77
+ end
78
+ def to_hash
79
+ end
80
+
81
+ class KeyMetadata < ContextDev::Internal::Type::BaseModel
82
+ OrHash =
83
+ T.type_alias do
84
+ T.any(
85
+ ContextDev::Models::WebAnswersResponse::KeyMetadata,
86
+ ContextDev::Internal::AnyHash
87
+ )
88
+ end
89
+
90
+ # Credits used by this request.
91
+ sig { returns(Integer) }
92
+ attr_accessor :credits_consumed
93
+
94
+ # Credits remaining for your organization.
95
+ sig { returns(Integer) }
96
+ attr_accessor :credits_remaining
97
+
98
+ # Credit usage, included whenever a valid API key is provided.
99
+ sig do
100
+ params(credits_consumed: Integer, credits_remaining: Integer).returns(
101
+ T.attached_class
102
+ )
103
+ end
104
+ def self.new(
105
+ # Credits used by this request.
106
+ credits_consumed:,
107
+ # Credits remaining for your organization.
108
+ credits_remaining:
109
+ )
110
+ end
111
+
112
+ sig do
113
+ override.returns(
114
+ { credits_consumed: Integer, credits_remaining: Integer }
115
+ )
116
+ end
117
+ def to_hash
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -34,21 +34,29 @@ 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::WebExtractCompetitorsParams::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:
48
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::OrHash
49
+ ).void
50
+ end
51
+ attr_writer :timeout_opts
45
52
 
46
53
  sig do
47
54
  params(
48
55
  domain: String,
49
56
  num_competitors: Integer,
50
57
  tags: T::Array[String],
51
- timeout_ms: Integer,
58
+ timeout_opts:
59
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::OrHash,
52
60
  request_options: ContextDev::RequestOptions::OrHash
53
61
  ).returns(T.attached_class)
54
62
  end
@@ -61,10 +69,10 @@ module ContextDev
61
69
  # Comma-separated tags for tracking request usage. Up to 20 tags, each 1-50
62
70
  # characters.
63
71
  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,
72
+ # Optional request deadline and behavior on timeout. For GET requests, use
73
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
74
+ # timeoutOpts object.
75
+ timeout_opts: nil,
68
76
  request_options: {}
69
77
  )
70
78
  end
@@ -75,13 +83,119 @@ module ContextDev
75
83
  domain: String,
76
84
  num_competitors: Integer,
77
85
  tags: T::Array[String],
78
- timeout_ms: Integer,
86
+ timeout_opts: ContextDev::WebExtractCompetitorsParams::TimeoutOpts,
79
87
  request_options: ContextDev::RequestOptions
80
88
  }
81
89
  )
82
90
  end
83
91
  def to_hash
84
92
  end
93
+
94
+ class TimeoutOpts < ContextDev::Internal::Type::BaseModel
95
+ OrHash =
96
+ T.type_alias do
97
+ T.any(
98
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts,
99
+ ContextDev::Internal::AnyHash
100
+ )
101
+ end
102
+
103
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
104
+ sig { returns(Integer) }
105
+ attr_accessor :milliseconds
106
+
107
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
108
+ # credits. "return-partial" returns usable results collected so far; if none are
109
+ # available, the request still fails without charging credits. Partial results are
110
+ # not cached as complete results.
111
+ sig do
112
+ returns(
113
+ T.nilable(
114
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
115
+ )
116
+ )
117
+ end
118
+ attr_reader :behavior
119
+
120
+ sig do
121
+ params(
122
+ behavior:
123
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
124
+ ).void
125
+ end
126
+ attr_writer :behavior
127
+
128
+ # Optional request deadline and behavior on timeout. For GET requests, use
129
+ # timeoutOpts[milliseconds]=30000&timeoutOpts[behavior]=fail or a JSON-encoded
130
+ # timeoutOpts object.
131
+ sig do
132
+ params(
133
+ milliseconds: Integer,
134
+ behavior:
135
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
136
+ ).returns(T.attached_class)
137
+ end
138
+ def self.new(
139
+ # Request deadline in milliseconds. Maximum: 300000 (5 minutes).
140
+ milliseconds:,
141
+ # What to do at the deadline. "fail" returns 408 REQUEST_TIMEOUT without charging
142
+ # credits. "return-partial" returns usable results collected so far; if none are
143
+ # available, the request still fails without charging credits. Partial results are
144
+ # not cached as complete results.
145
+ behavior: nil
146
+ )
147
+ end
148
+
149
+ sig do
150
+ override.returns(
151
+ {
152
+ milliseconds: Integer,
153
+ behavior:
154
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::OrSymbol
155
+ }
156
+ )
157
+ end
158
+ def to_hash
159
+ end
160
+
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.
165
+ module Behavior
166
+ extend ContextDev::Internal::Type::Enum
167
+
168
+ TaggedSymbol =
169
+ T.type_alias do
170
+ T.all(
171
+ Symbol,
172
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior
173
+ )
174
+ end
175
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
176
+
177
+ FAIL =
178
+ T.let(
179
+ :fail,
180
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::TaggedSymbol
181
+ )
182
+ RETURN_PARTIAL =
183
+ T.let(
184
+ :"return-partial",
185
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::TaggedSymbol
186
+ )
187
+
188
+ sig do
189
+ override.returns(
190
+ T::Array[
191
+ ContextDev::WebExtractCompetitorsParams::TimeoutOpts::Behavior::TaggedSymbol
192
+ ]
193
+ )
194
+ end
195
+ def self.values
196
+ end
197
+ end
198
+ end
85
199
  end
86
200
  end
87
201
  end
@@ -68,6 +68,14 @@ module ContextDev
68
68
  end
69
69
  attr_writer :key_metadata
70
70
 
71
+ # True when the timeout ended processing and this response contains only usable
72
+ # results completed so far. Unfinished results are omitted.
73
+ sig { returns(T.nilable(T::Boolean)) }
74
+ attr_reader :partial
75
+
76
+ sig { params(partial: T::Boolean).void }
77
+ attr_writer :partial
78
+
71
79
  sig do
72
80
  params(
73
81
  competitors:
@@ -81,7 +89,8 @@ module ContextDev
81
89
  target:
82
90
  ContextDev::Models::WebExtractCompetitorsResponse::Target::OrHash,
83
91
  key_metadata:
84
- ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata::OrHash
92
+ ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata::OrHash,
93
+ partial: T::Boolean
85
94
  ).returns(T.attached_class)
86
95
  end
87
96
  def self.new(
@@ -97,7 +106,10 @@ module ContextDev
97
106
  # Target company profile inferred from the landing page.
98
107
  target:,
99
108
  # Credit usage, included whenever a valid API key is provided.
100
- key_metadata: nil
109
+ key_metadata: nil,
110
+ # True when the timeout ended processing and this response contains only usable
111
+ # results completed so far. Unfinished results are omitted.
112
+ partial: nil
101
113
  )
102
114
  end
103
115
 
@@ -114,7 +126,8 @@ module ContextDev
114
126
  ContextDev::Models::WebExtractCompetitorsResponse::Status::TaggedSymbol,
115
127
  target: ContextDev::Models::WebExtractCompetitorsResponse::Target,
116
128
  key_metadata:
117
- ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata
129
+ ContextDev::Models::WebExtractCompetitorsResponse::KeyMetadata,
130
+ partial: T::Boolean
118
131
  }
119
132
  )
120
133
  end
@@ -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