context.dev 0.0.2

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 (194) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +244 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/context_dev/client.rb +74 -0
  7. data/lib/context_dev/errors.rb +228 -0
  8. data/lib/context_dev/file_part.rb +58 -0
  9. data/lib/context_dev/internal/transport/base_client.rb +573 -0
  10. data/lib/context_dev/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/context_dev/internal/type/array_of.rb +168 -0
  12. data/lib/context_dev/internal/type/base_model.rb +531 -0
  13. data/lib/context_dev/internal/type/base_page.rb +55 -0
  14. data/lib/context_dev/internal/type/boolean.rb +77 -0
  15. data/lib/context_dev/internal/type/converter.rb +327 -0
  16. data/lib/context_dev/internal/type/enum.rb +131 -0
  17. data/lib/context_dev/internal/type/file_input.rb +111 -0
  18. data/lib/context_dev/internal/type/hash_of.rb +188 -0
  19. data/lib/context_dev/internal/type/request_parameters.rb +42 -0
  20. data/lib/context_dev/internal/type/union.rb +237 -0
  21. data/lib/context_dev/internal/type/unknown.rb +81 -0
  22. data/lib/context_dev/internal/util.rb +951 -0
  23. data/lib/context_dev/internal.rb +20 -0
  24. data/lib/context_dev/models/brand_ai_product_params.rb +34 -0
  25. data/lib/context_dev/models/brand_ai_product_response.rb +193 -0
  26. data/lib/context_dev/models/brand_ai_products_params.rb +94 -0
  27. data/lib/context_dev/models/brand_ai_products_response.rb +160 -0
  28. data/lib/context_dev/models/brand_ai_query_params.rb +236 -0
  29. data/lib/context_dev/models/brand_ai_query_response.rb +98 -0
  30. data/lib/context_dev/models/brand_fonts_params.rb +36 -0
  31. data/lib/context_dev/models/brand_fonts_response.rb +100 -0
  32. data/lib/context_dev/models/brand_identify_from_transaction_params.rb +407 -0
  33. data/lib/context_dev/models/brand_identify_from_transaction_response.rb +854 -0
  34. data/lib/context_dev/models/brand_prefetch_by_email_params.rb +37 -0
  35. data/lib/context_dev/models/brand_prefetch_by_email_response.rb +33 -0
  36. data/lib/context_dev/models/brand_prefetch_params.rb +35 -0
  37. data/lib/context_dev/models/brand_prefetch_response.rb +33 -0
  38. data/lib/context_dev/models/brand_retrieve_by_email_params.rb +116 -0
  39. data/lib/context_dev/models/brand_retrieve_by_email_response.rb +851 -0
  40. data/lib/context_dev/models/brand_retrieve_by_isin_params.rb +116 -0
  41. data/lib/context_dev/models/brand_retrieve_by_isin_response.rb +850 -0
  42. data/lib/context_dev/models/brand_retrieve_by_name_params.rb +115 -0
  43. data/lib/context_dev/models/brand_retrieve_by_name_response.rb +850 -0
  44. data/lib/context_dev/models/brand_retrieve_by_ticker_params.rb +204 -0
  45. data/lib/context_dev/models/brand_retrieve_by_ticker_response.rb +852 -0
  46. data/lib/context_dev/models/brand_retrieve_naics_params.rb +54 -0
  47. data/lib/context_dev/models/brand_retrieve_naics_response.rb +83 -0
  48. data/lib/context_dev/models/brand_retrieve_params.rb +117 -0
  49. data/lib/context_dev/models/brand_retrieve_response.rb +850 -0
  50. data/lib/context_dev/models/brand_retrieve_simplified_params.rb +35 -0
  51. data/lib/context_dev/models/brand_retrieve_simplified_response.rb +307 -0
  52. data/lib/context_dev/models/brand_screenshot_params.rb +103 -0
  53. data/lib/context_dev/models/brand_screenshot_response.rb +64 -0
  54. data/lib/context_dev/models/brand_styleguide_params.rb +70 -0
  55. data/lib/context_dev/models/brand_styleguide_response.rb +790 -0
  56. data/lib/context_dev/models/brand_web_scrape_html_params.rb +22 -0
  57. data/lib/context_dev/models/brand_web_scrape_html_response.rb +45 -0
  58. data/lib/context_dev/models/brand_web_scrape_images_params.rb +22 -0
  59. data/lib/context_dev/models/brand_web_scrape_images_response.rb +111 -0
  60. data/lib/context_dev/models/brand_web_scrape_md_params.rb +50 -0
  61. data/lib/context_dev/models/brand_web_scrape_md_response.rb +45 -0
  62. data/lib/context_dev/models/brand_web_scrape_sitemap_params.rb +26 -0
  63. data/lib/context_dev/models/brand_web_scrape_sitemap_response.rb +91 -0
  64. data/lib/context_dev/models.rb +81 -0
  65. data/lib/context_dev/request_options.rb +77 -0
  66. data/lib/context_dev/resources/brand.rb +654 -0
  67. data/lib/context_dev/version.rb +5 -0
  68. data/lib/context_dev.rb +96 -0
  69. data/manifest.yaml +17 -0
  70. data/rbi/context_dev/client.rbi +49 -0
  71. data/rbi/context_dev/errors.rbi +205 -0
  72. data/rbi/context_dev/file_part.rbi +37 -0
  73. data/rbi/context_dev/internal/transport/base_client.rbi +300 -0
  74. data/rbi/context_dev/internal/transport/pooled_net_requester.rbi +84 -0
  75. data/rbi/context_dev/internal/type/array_of.rbi +104 -0
  76. data/rbi/context_dev/internal/type/base_model.rbi +308 -0
  77. data/rbi/context_dev/internal/type/base_page.rbi +42 -0
  78. data/rbi/context_dev/internal/type/boolean.rbi +58 -0
  79. data/rbi/context_dev/internal/type/converter.rbi +216 -0
  80. data/rbi/context_dev/internal/type/enum.rbi +82 -0
  81. data/rbi/context_dev/internal/type/file_input.rbi +59 -0
  82. data/rbi/context_dev/internal/type/hash_of.rbi +104 -0
  83. data/rbi/context_dev/internal/type/request_parameters.rbi +29 -0
  84. data/rbi/context_dev/internal/type/union.rbi +128 -0
  85. data/rbi/context_dev/internal/type/unknown.rbi +58 -0
  86. data/rbi/context_dev/internal/util.rbi +507 -0
  87. data/rbi/context_dev/internal.rbi +18 -0
  88. data/rbi/context_dev/models/brand_ai_product_params.rbi +56 -0
  89. data/rbi/context_dev/models/brand_ai_product_response.rbi +380 -0
  90. data/rbi/context_dev/models/brand_ai_products_params.rbi +188 -0
  91. data/rbi/context_dev/models/brand_ai_products_response.rbi +310 -0
  92. data/rbi/context_dev/models/brand_ai_query_params.rbi +504 -0
  93. data/rbi/context_dev/models/brand_ai_query_response.rbi +205 -0
  94. data/rbi/context_dev/models/brand_fonts_params.rbi +60 -0
  95. data/rbi/context_dev/models/brand_fonts_response.rbi +147 -0
  96. data/rbi/context_dev/models/brand_identify_from_transaction_params.rbi +1682 -0
  97. data/rbi/context_dev/models/brand_identify_from_transaction_response.rbi +2595 -0
  98. data/rbi/context_dev/models/brand_prefetch_by_email_params.rbi +65 -0
  99. data/rbi/context_dev/models/brand_prefetch_by_email_response.rbi +57 -0
  100. data/rbi/context_dev/models/brand_prefetch_params.rbi +58 -0
  101. data/rbi/context_dev/models/brand_prefetch_response.rbi +57 -0
  102. data/rbi/context_dev/models/brand_retrieve_by_email_params.rbi +386 -0
  103. data/rbi/context_dev/models/brand_retrieve_by_email_response.rbi +2591 -0
  104. data/rbi/context_dev/models/brand_retrieve_by_isin_params.rbi +386 -0
  105. data/rbi/context_dev/models/brand_retrieve_by_isin_response.rbi +2590 -0
  106. data/rbi/context_dev/models/brand_retrieve_by_name_params.rbi +384 -0
  107. data/rbi/context_dev/models/brand_retrieve_by_name_response.rbi +2590 -0
  108. data/rbi/context_dev/models/brand_retrieve_by_ticker_params.rbi +796 -0
  109. data/rbi/context_dev/models/brand_retrieve_by_ticker_response.rbi +2592 -0
  110. data/rbi/context_dev/models/brand_retrieve_naics_params.rbi +89 -0
  111. data/rbi/context_dev/models/brand_retrieve_naics_response.rbi +190 -0
  112. data/rbi/context_dev/models/brand_retrieve_params.rbi +382 -0
  113. data/rbi/context_dev/models/brand_retrieve_response.rbi +2574 -0
  114. data/rbi/context_dev/models/brand_retrieve_simplified_params.rbi +61 -0
  115. data/rbi/context_dev/models/brand_retrieve_simplified_response.rbi +763 -0
  116. data/rbi/context_dev/models/brand_screenshot_params.rbi +225 -0
  117. data/rbi/context_dev/models/brand_screenshot_response.rbi +135 -0
  118. data/rbi/context_dev/models/brand_styleguide_params.rbi +139 -0
  119. data/rbi/context_dev/models/brand_styleguide_response.rbi +1707 -0
  120. data/rbi/context_dev/models/brand_web_scrape_html_params.rbi +43 -0
  121. data/rbi/context_dev/models/brand_web_scrape_html_response.rbi +92 -0
  122. data/rbi/context_dev/models/brand_web_scrape_images_params.rbi +43 -0
  123. data/rbi/context_dev/models/brand_web_scrape_images_response.rbi +261 -0
  124. data/rbi/context_dev/models/brand_web_scrape_md_params.rbi +81 -0
  125. data/rbi/context_dev/models/brand_web_scrape_md_response.rbi +92 -0
  126. data/rbi/context_dev/models/brand_web_scrape_sitemap_params.rbi +45 -0
  127. data/rbi/context_dev/models/brand_web_scrape_sitemap_response.rbi +167 -0
  128. data/rbi/context_dev/models.rbi +45 -0
  129. data/rbi/context_dev/request_options.rbi +59 -0
  130. data/rbi/context_dev/resources/brand.rbi +545 -0
  131. data/rbi/context_dev/version.rbi +5 -0
  132. data/sig/context_dev/client.rbs +26 -0
  133. data/sig/context_dev/errors.rbs +117 -0
  134. data/sig/context_dev/file_part.rbs +21 -0
  135. data/sig/context_dev/internal/transport/base_client.rbs +133 -0
  136. data/sig/context_dev/internal/transport/pooled_net_requester.rbs +48 -0
  137. data/sig/context_dev/internal/type/array_of.rbs +48 -0
  138. data/sig/context_dev/internal/type/base_model.rbs +102 -0
  139. data/sig/context_dev/internal/type/base_page.rbs +24 -0
  140. data/sig/context_dev/internal/type/boolean.rbs +26 -0
  141. data/sig/context_dev/internal/type/converter.rbs +79 -0
  142. data/sig/context_dev/internal/type/enum.rbs +32 -0
  143. data/sig/context_dev/internal/type/file_input.rbs +25 -0
  144. data/sig/context_dev/internal/type/hash_of.rbs +48 -0
  145. data/sig/context_dev/internal/type/request_parameters.rbs +19 -0
  146. data/sig/context_dev/internal/type/union.rbs +52 -0
  147. data/sig/context_dev/internal/type/unknown.rbs +26 -0
  148. data/sig/context_dev/internal/util.rbs +195 -0
  149. data/sig/context_dev/internal.rbs +9 -0
  150. data/sig/context_dev/models/brand_ai_product_params.rbs +30 -0
  151. data/sig/context_dev/models/brand_ai_product_response.rbs +149 -0
  152. data/sig/context_dev/models/brand_ai_products_params.rbs +88 -0
  153. data/sig/context_dev/models/brand_ai_products_response.rbs +128 -0
  154. data/sig/context_dev/models/brand_ai_query_params.rbs +218 -0
  155. data/sig/context_dev/models/brand_ai_query_response.rbs +93 -0
  156. data/sig/context_dev/models/brand_fonts_params.rbs +30 -0
  157. data/sig/context_dev/models/brand_fonts_response.rbs +82 -0
  158. data/sig/context_dev/models/brand_identify_from_transaction_params.rbs +686 -0
  159. data/sig/context_dev/models/brand_identify_from_transaction_response.rbs +1076 -0
  160. data/sig/context_dev/models/brand_prefetch_by_email_params.rbs +30 -0
  161. data/sig/context_dev/models/brand_prefetch_by_email_response.rbs +28 -0
  162. data/sig/context_dev/models/brand_prefetch_params.rbs +30 -0
  163. data/sig/context_dev/models/brand_prefetch_response.rbs +28 -0
  164. data/sig/context_dev/models/brand_retrieve_by_email_params.rbs +162 -0
  165. data/sig/context_dev/models/brand_retrieve_by_email_response.rbs +1076 -0
  166. data/sig/context_dev/models/brand_retrieve_by_isin_params.rbs +162 -0
  167. data/sig/context_dev/models/brand_retrieve_by_isin_response.rbs +1076 -0
  168. data/sig/context_dev/models/brand_retrieve_by_name_params.rbs +162 -0
  169. data/sig/context_dev/models/brand_retrieve_by_name_response.rbs +1076 -0
  170. data/sig/context_dev/models/brand_retrieve_by_ticker_params.rbs +324 -0
  171. data/sig/context_dev/models/brand_retrieve_by_ticker_response.rbs +1076 -0
  172. data/sig/context_dev/models/brand_retrieve_naics_params.rbs +47 -0
  173. data/sig/context_dev/models/brand_retrieve_naics_response.rbs +84 -0
  174. data/sig/context_dev/models/brand_retrieve_params.rbs +162 -0
  175. data/sig/context_dev/models/brand_retrieve_response.rbs +1076 -0
  176. data/sig/context_dev/models/brand_retrieve_simplified_params.rbs +30 -0
  177. data/sig/context_dev/models/brand_retrieve_simplified_response.rbs +312 -0
  178. data/sig/context_dev/models/brand_screenshot_params.rbs +100 -0
  179. data/sig/context_dev/models/brand_screenshot_response.rbs +63 -0
  180. data/sig/context_dev/models/brand_styleguide_params.rbs +62 -0
  181. data/sig/context_dev/models/brand_styleguide_response.rbs +945 -0
  182. data/sig/context_dev/models/brand_web_scrape_html_params.rbs +23 -0
  183. data/sig/context_dev/models/brand_web_scrape_html_response.rbs +40 -0
  184. data/sig/context_dev/models/brand_web_scrape_images_params.rbs +23 -0
  185. data/sig/context_dev/models/brand_web_scrape_images_response.rbs +98 -0
  186. data/sig/context_dev/models/brand_web_scrape_md_params.rbs +47 -0
  187. data/sig/context_dev/models/brand_web_scrape_md_response.rbs +40 -0
  188. data/sig/context_dev/models/brand_web_scrape_sitemap_params.rbs +23 -0
  189. data/sig/context_dev/models/brand_web_scrape_sitemap_response.rbs +77 -0
  190. data/sig/context_dev/models.rbs +41 -0
  191. data/sig/context_dev/request_options.rbs +36 -0
  192. data/sig/context_dev/resources/brand.rbs +151 -0
  193. data/sig/context_dev/version.rbs +3 -0
  194. metadata +265 -0
@@ -0,0 +1,380 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class BrandAIProductResponse < ContextDev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ ContextDev::Models::BrandAIProductResponse,
10
+ ContextDev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Whether the given URL is a product detail page
15
+ sig { returns(T.nilable(T::Boolean)) }
16
+ attr_reader :is_product_page
17
+
18
+ sig { params(is_product_page: T::Boolean).void }
19
+ attr_writer :is_product_page
20
+
21
+ # The detected ecommerce platform, or null if not a product page
22
+ sig do
23
+ returns(
24
+ T.nilable(
25
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
26
+ )
27
+ )
28
+ end
29
+ attr_accessor :platform
30
+
31
+ # The extracted product data, or null if not a product page
32
+ sig do
33
+ returns(T.nilable(ContextDev::Models::BrandAIProductResponse::Product))
34
+ end
35
+ attr_reader :product
36
+
37
+ sig do
38
+ params(
39
+ product:
40
+ T.nilable(
41
+ ContextDev::Models::BrandAIProductResponse::Product::OrHash
42
+ )
43
+ ).void
44
+ end
45
+ attr_writer :product
46
+
47
+ sig do
48
+ params(
49
+ is_product_page: T::Boolean,
50
+ platform:
51
+ T.nilable(
52
+ ContextDev::Models::BrandAIProductResponse::Platform::OrSymbol
53
+ ),
54
+ product:
55
+ T.nilable(
56
+ ContextDev::Models::BrandAIProductResponse::Product::OrHash
57
+ )
58
+ ).returns(T.attached_class)
59
+ end
60
+ def self.new(
61
+ # Whether the given URL is a product detail page
62
+ is_product_page: nil,
63
+ # The detected ecommerce platform, or null if not a product page
64
+ platform: nil,
65
+ # The extracted product data, or null if not a product page
66
+ product: nil
67
+ )
68
+ end
69
+
70
+ sig do
71
+ override.returns(
72
+ {
73
+ is_product_page: T::Boolean,
74
+ platform:
75
+ T.nilable(
76
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
77
+ ),
78
+ product:
79
+ T.nilable(ContextDev::Models::BrandAIProductResponse::Product)
80
+ }
81
+ )
82
+ end
83
+ def to_hash
84
+ end
85
+
86
+ # The detected ecommerce platform, or null if not a product page
87
+ module Platform
88
+ extend ContextDev::Internal::Type::Enum
89
+
90
+ TaggedSymbol =
91
+ T.type_alias do
92
+ T.all(Symbol, ContextDev::Models::BrandAIProductResponse::Platform)
93
+ end
94
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
95
+
96
+ AMAZON =
97
+ T.let(
98
+ :amazon,
99
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
100
+ )
101
+ TIKTOK_SHOP =
102
+ T.let(
103
+ :tiktok_shop,
104
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
105
+ )
106
+ ETSY =
107
+ T.let(
108
+ :etsy,
109
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
110
+ )
111
+ GENERIC =
112
+ T.let(
113
+ :generic,
114
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
115
+ )
116
+
117
+ sig do
118
+ override.returns(
119
+ T::Array[
120
+ ContextDev::Models::BrandAIProductResponse::Platform::TaggedSymbol
121
+ ]
122
+ )
123
+ end
124
+ def self.values
125
+ end
126
+ end
127
+
128
+ class Product < ContextDev::Internal::Type::BaseModel
129
+ OrHash =
130
+ T.type_alias do
131
+ T.any(
132
+ ContextDev::Models::BrandAIProductResponse::Product,
133
+ ContextDev::Internal::AnyHash
134
+ )
135
+ end
136
+
137
+ # Description of the product
138
+ sig { returns(String) }
139
+ attr_accessor :description
140
+
141
+ # List of product features
142
+ sig { returns(T::Array[String]) }
143
+ attr_accessor :features
144
+
145
+ # URLs to product images on the page (up to 7)
146
+ sig { returns(T::Array[String]) }
147
+ attr_accessor :images
148
+
149
+ # Name of the product
150
+ sig { returns(String) }
151
+ attr_accessor :name
152
+
153
+ # Tags associated with the product
154
+ sig { returns(T::Array[String]) }
155
+ attr_accessor :tags
156
+
157
+ # Target audience for the product (array of strings)
158
+ sig { returns(T::Array[String]) }
159
+ attr_accessor :target_audience
160
+
161
+ # Billing frequency for the product
162
+ sig do
163
+ returns(
164
+ T.nilable(
165
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
166
+ )
167
+ )
168
+ end
169
+ attr_accessor :billing_frequency
170
+
171
+ # Category of the product
172
+ sig { returns(T.nilable(String)) }
173
+ attr_accessor :category
174
+
175
+ # Currency code for the price (e.g., USD, EUR)
176
+ sig { returns(T.nilable(String)) }
177
+ attr_accessor :currency
178
+
179
+ # URL to the product image
180
+ sig { returns(T.nilable(String)) }
181
+ attr_accessor :image_url
182
+
183
+ # Price of the product
184
+ sig { returns(T.nilable(Float)) }
185
+ attr_accessor :price
186
+
187
+ # Pricing model for the product
188
+ sig do
189
+ returns(
190
+ T.nilable(
191
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
192
+ )
193
+ )
194
+ end
195
+ attr_accessor :pricing_model
196
+
197
+ # URL to the product page
198
+ sig { returns(T.nilable(String)) }
199
+ attr_accessor :url
200
+
201
+ # The extracted product data, or null if not a product page
202
+ sig do
203
+ params(
204
+ description: String,
205
+ features: T::Array[String],
206
+ images: T::Array[String],
207
+ name: String,
208
+ tags: T::Array[String],
209
+ target_audience: T::Array[String],
210
+ billing_frequency:
211
+ T.nilable(
212
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::OrSymbol
213
+ ),
214
+ category: T.nilable(String),
215
+ currency: T.nilable(String),
216
+ image_url: T.nilable(String),
217
+ price: T.nilable(Float),
218
+ pricing_model:
219
+ T.nilable(
220
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::OrSymbol
221
+ ),
222
+ url: T.nilable(String)
223
+ ).returns(T.attached_class)
224
+ end
225
+ def self.new(
226
+ # Description of the product
227
+ description:,
228
+ # List of product features
229
+ features:,
230
+ # URLs to product images on the page (up to 7)
231
+ images:,
232
+ # Name of the product
233
+ name:,
234
+ # Tags associated with the product
235
+ tags:,
236
+ # Target audience for the product (array of strings)
237
+ target_audience:,
238
+ # Billing frequency for the product
239
+ billing_frequency: nil,
240
+ # Category of the product
241
+ category: nil,
242
+ # Currency code for the price (e.g., USD, EUR)
243
+ currency: nil,
244
+ # URL to the product image
245
+ image_url: nil,
246
+ # Price of the product
247
+ price: nil,
248
+ # Pricing model for the product
249
+ pricing_model: nil,
250
+ # URL to the product page
251
+ url: nil
252
+ )
253
+ end
254
+
255
+ sig do
256
+ override.returns(
257
+ {
258
+ description: String,
259
+ features: T::Array[String],
260
+ images: T::Array[String],
261
+ name: String,
262
+ tags: T::Array[String],
263
+ target_audience: T::Array[String],
264
+ billing_frequency:
265
+ T.nilable(
266
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
267
+ ),
268
+ category: T.nilable(String),
269
+ currency: T.nilable(String),
270
+ image_url: T.nilable(String),
271
+ price: T.nilable(Float),
272
+ pricing_model:
273
+ T.nilable(
274
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
275
+ ),
276
+ url: T.nilable(String)
277
+ }
278
+ )
279
+ end
280
+ def to_hash
281
+ end
282
+
283
+ # Billing frequency for the product
284
+ module BillingFrequency
285
+ extend ContextDev::Internal::Type::Enum
286
+
287
+ TaggedSymbol =
288
+ T.type_alias do
289
+ T.all(
290
+ Symbol,
291
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency
292
+ )
293
+ end
294
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
295
+
296
+ MONTHLY =
297
+ T.let(
298
+ :monthly,
299
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
300
+ )
301
+ YEARLY =
302
+ T.let(
303
+ :yearly,
304
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
305
+ )
306
+ ONE_TIME =
307
+ T.let(
308
+ :one_time,
309
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
310
+ )
311
+ USAGE_BASED =
312
+ T.let(
313
+ :usage_based,
314
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
315
+ )
316
+
317
+ sig do
318
+ override.returns(
319
+ T::Array[
320
+ ContextDev::Models::BrandAIProductResponse::Product::BillingFrequency::TaggedSymbol
321
+ ]
322
+ )
323
+ end
324
+ def self.values
325
+ end
326
+ end
327
+
328
+ # Pricing model for the product
329
+ module PricingModel
330
+ extend ContextDev::Internal::Type::Enum
331
+
332
+ TaggedSymbol =
333
+ T.type_alias do
334
+ T.all(
335
+ Symbol,
336
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel
337
+ )
338
+ end
339
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
340
+
341
+ PER_SEAT =
342
+ T.let(
343
+ :per_seat,
344
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
345
+ )
346
+ FLAT =
347
+ T.let(
348
+ :flat,
349
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
350
+ )
351
+ TIERED =
352
+ T.let(
353
+ :tiered,
354
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
355
+ )
356
+ FREEMIUM =
357
+ T.let(
358
+ :freemium,
359
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
360
+ )
361
+ CUSTOM =
362
+ T.let(
363
+ :custom,
364
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
365
+ )
366
+
367
+ sig do
368
+ override.returns(
369
+ T::Array[
370
+ ContextDev::Models::BrandAIProductResponse::Product::PricingModel::TaggedSymbol
371
+ ]
372
+ )
373
+ end
374
+ def self.values
375
+ end
376
+ end
377
+ end
378
+ end
379
+ end
380
+ end
@@ -0,0 +1,188 @@
1
+ # typed: strong
2
+
3
+ module ContextDev
4
+ module Models
5
+ class BrandAIProductsParams < ContextDev::Internal::Type::BaseModel
6
+ extend ContextDev::Internal::Type::RequestParameters::Converter
7
+ include ContextDev::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ ContextDev::BrandAIProductsParams,
13
+ ContextDev::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig do
18
+ returns(
19
+ T.any(
20
+ ContextDev::BrandAIProductsParams::Body::ByDomain,
21
+ ContextDev::BrandAIProductsParams::Body::ByDirectURL
22
+ )
23
+ )
24
+ end
25
+ attr_accessor :body
26
+
27
+ sig do
28
+ params(
29
+ body:
30
+ T.any(
31
+ ContextDev::BrandAIProductsParams::Body::ByDomain::OrHash,
32
+ ContextDev::BrandAIProductsParams::Body::ByDirectURL::OrHash
33
+ ),
34
+ request_options: ContextDev::RequestOptions::OrHash
35
+ ).returns(T.attached_class)
36
+ end
37
+ def self.new(body:, request_options: {})
38
+ end
39
+
40
+ sig do
41
+ override.returns(
42
+ {
43
+ body:
44
+ T.any(
45
+ ContextDev::BrandAIProductsParams::Body::ByDomain,
46
+ ContextDev::BrandAIProductsParams::Body::ByDirectURL
47
+ ),
48
+ request_options: ContextDev::RequestOptions
49
+ }
50
+ )
51
+ end
52
+ def to_hash
53
+ end
54
+
55
+ module Body
56
+ extend ContextDev::Internal::Type::Union
57
+
58
+ Variants =
59
+ T.type_alias do
60
+ T.any(
61
+ ContextDev::BrandAIProductsParams::Body::ByDomain,
62
+ ContextDev::BrandAIProductsParams::Body::ByDirectURL
63
+ )
64
+ end
65
+
66
+ class ByDomain < ContextDev::Internal::Type::BaseModel
67
+ OrHash =
68
+ T.type_alias do
69
+ T.any(
70
+ ContextDev::BrandAIProductsParams::Body::ByDomain,
71
+ ContextDev::Internal::AnyHash
72
+ )
73
+ end
74
+
75
+ # The domain name to analyze.
76
+ sig { returns(String) }
77
+ attr_accessor :domain
78
+
79
+ # Maximum number of products to extract.
80
+ sig { returns(T.nilable(Integer)) }
81
+ attr_reader :max_products
82
+
83
+ sig { params(max_products: Integer).void }
84
+ attr_writer :max_products
85
+
86
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
87
+ # 300000ms (5 minutes).
88
+ sig { returns(T.nilable(Integer)) }
89
+ attr_reader :timeout_ms
90
+
91
+ sig { params(timeout_ms: Integer).void }
92
+ attr_writer :timeout_ms
93
+
94
+ sig do
95
+ params(
96
+ domain: String,
97
+ max_products: Integer,
98
+ timeout_ms: Integer
99
+ ).returns(T.attached_class)
100
+ end
101
+ def self.new(
102
+ # The domain name to analyze.
103
+ domain:,
104
+ # Maximum number of products to extract.
105
+ max_products: nil,
106
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
107
+ # 300000ms (5 minutes).
108
+ timeout_ms: nil
109
+ )
110
+ end
111
+
112
+ sig do
113
+ override.returns(
114
+ { domain: String, max_products: Integer, timeout_ms: Integer }
115
+ )
116
+ end
117
+ def to_hash
118
+ end
119
+ end
120
+
121
+ class ByDirectURL < ContextDev::Internal::Type::BaseModel
122
+ OrHash =
123
+ T.type_alias do
124
+ T.any(
125
+ ContextDev::BrandAIProductsParams::Body::ByDirectURL,
126
+ ContextDev::Internal::AnyHash
127
+ )
128
+ end
129
+
130
+ # A specific URL to use directly as the starting point for extraction without
131
+ # domain resolution.
132
+ sig { returns(String) }
133
+ attr_accessor :direct_url
134
+
135
+ # Maximum number of products to extract.
136
+ sig { returns(T.nilable(Integer)) }
137
+ attr_reader :max_products
138
+
139
+ sig { params(max_products: Integer).void }
140
+ attr_writer :max_products
141
+
142
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
143
+ # 300000ms (5 minutes).
144
+ sig { returns(T.nilable(Integer)) }
145
+ attr_reader :timeout_ms
146
+
147
+ sig { params(timeout_ms: Integer).void }
148
+ attr_writer :timeout_ms
149
+
150
+ sig do
151
+ params(
152
+ direct_url: String,
153
+ max_products: Integer,
154
+ timeout_ms: Integer
155
+ ).returns(T.attached_class)
156
+ end
157
+ def self.new(
158
+ # A specific URL to use directly as the starting point for extraction without
159
+ # domain resolution.
160
+ direct_url:,
161
+ # Maximum number of products to extract.
162
+ max_products: nil,
163
+ # Optional timeout in milliseconds for the request. Maximum allowed value is
164
+ # 300000ms (5 minutes).
165
+ timeout_ms: nil
166
+ )
167
+ end
168
+
169
+ sig do
170
+ override.returns(
171
+ { direct_url: String, max_products: Integer, timeout_ms: Integer }
172
+ )
173
+ end
174
+ def to_hash
175
+ end
176
+ end
177
+
178
+ sig do
179
+ override.returns(
180
+ T::Array[ContextDev::BrandAIProductsParams::Body::Variants]
181
+ )
182
+ end
183
+ def self.variants
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end