algolia 3.11.0 → 3.12.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 (603) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/Gemfile.lock +1 -1
  4. data/lib/algolia/api/abtesting_client.rb +3 -1
  5. data/lib/algolia/api/analytics_client.rb +45 -43
  6. data/lib/algolia/api/composition_client.rb +174 -0
  7. data/lib/algolia/api/ingestion_client.rb +7 -1
  8. data/lib/algolia/api/insights_client.rb +3 -1
  9. data/lib/algolia/api/monitoring_client.rb +2 -0
  10. data/lib/algolia/api/personalization_client.rb +3 -1
  11. data/lib/algolia/api/query_suggestions_client.rb +3 -1
  12. data/lib/algolia/api/recommend_client.rb +20 -18
  13. data/lib/algolia/api/search_client.rb +104 -90
  14. data/lib/algolia/models/abtesting/ab_test.rb +2 -0
  15. data/lib/algolia/models/abtesting/ab_test_configuration.rb +2 -0
  16. data/lib/algolia/models/abtesting/ab_test_response.rb +2 -0
  17. data/lib/algolia/models/abtesting/ab_tests_variant.rb +2 -0
  18. data/lib/algolia/models/abtesting/ab_tests_variant_search_params.rb +2 -0
  19. data/lib/algolia/models/abtesting/add_ab_tests_request.rb +2 -0
  20. data/lib/algolia/models/abtesting/add_ab_tests_variant.rb +2 -0
  21. data/lib/algolia/models/abtesting/currency.rb +2 -0
  22. data/lib/algolia/models/abtesting/effect_metric.rb +2 -0
  23. data/lib/algolia/models/abtesting/empty_search.rb +2 -0
  24. data/lib/algolia/models/abtesting/empty_search_filter.rb +2 -0
  25. data/lib/algolia/models/abtesting/error_base.rb +2 -0
  26. data/lib/algolia/models/abtesting/estimate_ab_test_request.rb +2 -0
  27. data/lib/algolia/models/abtesting/estimate_ab_test_response.rb +2 -0
  28. data/lib/algolia/models/abtesting/estimate_configuration.rb +2 -0
  29. data/lib/algolia/models/abtesting/filter_effects.rb +2 -0
  30. data/lib/algolia/models/abtesting/list_ab_tests_response.rb +2 -0
  31. data/lib/algolia/models/abtesting/minimum_detectable_effect.rb +2 -0
  32. data/lib/algolia/models/abtesting/outliers.rb +2 -0
  33. data/lib/algolia/models/abtesting/outliers_filter.rb +2 -0
  34. data/lib/algolia/models/abtesting/schedule_ab_test_response.rb +2 -0
  35. data/lib/algolia/models/abtesting/schedule_ab_tests_request.rb +2 -0
  36. data/lib/algolia/models/abtesting/status.rb +2 -0
  37. data/lib/algolia/models/abtesting/variant.rb +2 -0
  38. data/lib/algolia/models/analytics/click_position.rb +2 -0
  39. data/lib/algolia/models/analytics/currency_code.rb +2 -0
  40. data/lib/algolia/models/analytics/daily_add_to_cart_rates.rb +3 -1
  41. data/lib/algolia/models/analytics/daily_average_clicks.rb +2 -0
  42. data/lib/algolia/models/analytics/daily_click_through_rates.rb +3 -1
  43. data/lib/algolia/models/analytics/daily_conversion_rates.rb +3 -1
  44. data/lib/algolia/models/analytics/daily_no_click_rates.rb +3 -1
  45. data/lib/algolia/models/analytics/daily_no_results_rates.rb +3 -1
  46. data/lib/algolia/models/analytics/daily_purchase_rates.rb +3 -1
  47. data/lib/algolia/models/analytics/daily_revenue.rb +3 -1
  48. data/lib/algolia/models/analytics/daily_searches.rb +2 -0
  49. data/lib/algolia/models/analytics/daily_searches_no_clicks.rb +2 -0
  50. data/lib/algolia/models/analytics/daily_searches_no_results.rb +2 -0
  51. data/lib/algolia/models/analytics/daily_users.rb +2 -0
  52. data/lib/algolia/models/analytics/direction.rb +2 -0
  53. data/lib/algolia/models/analytics/error_base.rb +2 -0
  54. data/lib/algolia/models/analytics/get_add_to_cart_rate_response.rb +3 -1
  55. data/lib/algolia/models/analytics/get_average_click_position_response.rb +2 -0
  56. data/lib/algolia/models/analytics/get_click_positions_response.rb +2 -0
  57. data/lib/algolia/models/analytics/get_click_through_rate_response.rb +3 -1
  58. data/lib/algolia/models/analytics/get_conversion_rate_response.rb +3 -1
  59. data/lib/algolia/models/analytics/get_no_click_rate_response.rb +3 -1
  60. data/lib/algolia/models/analytics/get_no_results_rate_response.rb +3 -1
  61. data/lib/algolia/models/analytics/get_purchase_rate_response.rb +3 -1
  62. data/lib/algolia/models/analytics/get_revenue.rb +3 -1
  63. data/lib/algolia/models/analytics/get_searches_count_response.rb +2 -0
  64. data/lib/algolia/models/analytics/get_searches_no_clicks_response.rb +2 -0
  65. data/lib/algolia/models/analytics/get_searches_no_results_response.rb +2 -0
  66. data/lib/algolia/models/analytics/get_status_response.rb +2 -0
  67. data/lib/algolia/models/analytics/get_top_countries_response.rb +2 -0
  68. data/lib/algolia/models/analytics/get_top_filter_attribute.rb +2 -0
  69. data/lib/algolia/models/analytics/get_top_filter_attributes_response.rb +2 -0
  70. data/lib/algolia/models/analytics/get_top_filter_for_attribute.rb +2 -0
  71. data/lib/algolia/models/analytics/get_top_filter_for_attribute_response.rb +2 -0
  72. data/lib/algolia/models/analytics/get_top_filters_no_results_response.rb +3 -1
  73. data/lib/algolia/models/analytics/get_top_filters_no_results_value.rb +2 -0
  74. data/lib/algolia/models/analytics/get_top_filters_no_results_values.rb +2 -0
  75. data/lib/algolia/models/analytics/get_top_hits_response.rb +2 -0
  76. data/lib/algolia/models/analytics/get_top_searches_response.rb +2 -0
  77. data/lib/algolia/models/analytics/get_users_count_response.rb +2 -0
  78. data/lib/algolia/models/analytics/operator.rb +2 -0
  79. data/lib/algolia/models/analytics/order_by.rb +2 -0
  80. data/lib/algolia/models/analytics/top_country.rb +2 -0
  81. data/lib/algolia/models/analytics/top_hit.rb +3 -1
  82. data/lib/algolia/models/analytics/top_hit_with_analytics.rb +5 -3
  83. data/lib/algolia/models/analytics/top_hit_with_revenue_analytics.rb +8 -6
  84. data/lib/algolia/models/analytics/top_hits_response.rb +2 -0
  85. data/lib/algolia/models/analytics/top_hits_response_with_analytics.rb +2 -0
  86. data/lib/algolia/models/analytics/top_hits_response_with_revenue_analytics.rb +2 -0
  87. data/lib/algolia/models/analytics/top_search.rb +2 -0
  88. data/lib/algolia/models/analytics/top_search_with_analytics.rb +4 -2
  89. data/lib/algolia/models/analytics/top_search_with_revenue_analytics.rb +7 -5
  90. data/lib/algolia/models/analytics/top_searches_response.rb +2 -0
  91. data/lib/algolia/models/analytics/top_searches_response_with_analytics.rb +2 -0
  92. data/lib/algolia/models/analytics/top_searches_response_with_revenue_analytics.rb +2 -0
  93. data/lib/algolia/models/composition/around_precision.rb +110 -0
  94. data/lib/algolia/models/composition/around_radius.rb +110 -0
  95. data/lib/algolia/models/{ingestion/docker_registry.rb → composition/around_radius_all.rb} +8 -7
  96. data/lib/algolia/models/composition/banner.rb +215 -0
  97. data/lib/algolia/models/composition/banner_image.rb +220 -0
  98. data/lib/algolia/models/composition/banner_image_url.rb +209 -0
  99. data/lib/algolia/models/composition/banner_link.rb +209 -0
  100. data/lib/algolia/models/composition/composition_id_ranking_info.rb +221 -0
  101. data/lib/algolia/models/composition/composition_run_applied_rules.rb +211 -0
  102. data/lib/algolia/models/composition/composition_run_search_response.rb +222 -0
  103. data/lib/algolia/models/composition/compositions_search_response.rb +212 -0
  104. data/lib/algolia/models/composition/error_base.rb +209 -0
  105. data/lib/algolia/models/composition/exhaustive.rb +250 -0
  106. data/lib/algolia/models/composition/facet_filters.rb +110 -0
  107. data/lib/algolia/models/composition/facet_hits.rb +235 -0
  108. data/lib/algolia/models/composition/facet_ordering.rb +221 -0
  109. data/lib/algolia/models/composition/facet_stats.rb +239 -0
  110. data/lib/algolia/models/composition/facets.rb +209 -0
  111. data/lib/algolia/models/composition/highlight_result.rb +110 -0
  112. data/lib/algolia/models/composition/highlight_result_option.rb +255 -0
  113. data/lib/algolia/models/composition/hit.rb +251 -0
  114. data/lib/algolia/models/composition/hit_ranking_info.rb +371 -0
  115. data/lib/algolia/models/composition/inside_bounding_box.rb +109 -0
  116. data/lib/algolia/models/{ingestion/docker_image_type.rb → composition/match_level.rb} +10 -7
  117. data/lib/algolia/models/composition/matched_geo_location.rb +229 -0
  118. data/lib/algolia/models/composition/numeric_filters.rb +110 -0
  119. data/lib/algolia/models/composition/optional_filters.rb +110 -0
  120. data/lib/algolia/models/composition/params.rb +488 -0
  121. data/lib/algolia/models/composition/personalization.rb +229 -0
  122. data/lib/algolia/models/composition/range.rb +217 -0
  123. data/lib/algolia/models/composition/redirect.rb +208 -0
  124. data/lib/algolia/models/composition/redirect_rule_index_data.rb +211 -0
  125. data/lib/algolia/models/composition/redirect_rule_index_metadata.rb +258 -0
  126. data/lib/algolia/models/composition/redirect_url.rb +209 -0
  127. data/lib/algolia/models/composition/rendering_content.rb +227 -0
  128. data/lib/algolia/models/composition/request_body.rb +208 -0
  129. data/lib/algolia/models/composition/results_composition_info_response.rb +212 -0
  130. data/lib/algolia/models/composition/results_injected_item_applied_rules_info_response.rb +211 -0
  131. data/lib/algolia/models/composition/results_injected_item_info_response.rb +221 -0
  132. data/lib/algolia/models/composition/search_for_facet_values_params.rb +228 -0
  133. data/lib/algolia/models/composition/search_for_facet_values_request.rb +208 -0
  134. data/lib/algolia/models/composition/search_for_facet_values_response.rb +211 -0
  135. data/lib/algolia/models/composition/search_for_facet_values_results.rb +253 -0
  136. data/lib/algolia/models/composition/search_response.rb +230 -0
  137. data/lib/algolia/models/composition/search_results_item.rb +608 -0
  138. data/lib/algolia/models/composition/snippet_result.rb +110 -0
  139. data/lib/algolia/models/composition/snippet_result_option.rb +230 -0
  140. data/lib/algolia/models/composition/sort_remaining_by.rb +35 -0
  141. data/lib/algolia/models/composition/supported_language.rb +169 -0
  142. data/lib/algolia/models/composition/value.rb +229 -0
  143. data/lib/algolia/models/composition/widgets.rb +209 -0
  144. data/lib/algolia/models/ingestion/action.rb +2 -0
  145. data/lib/algolia/models/ingestion/action_type.rb +2 -0
  146. data/lib/algolia/models/ingestion/auth_algolia.rb +2 -0
  147. data/lib/algolia/models/ingestion/auth_algolia_insights.rb +2 -0
  148. data/lib/algolia/models/ingestion/auth_algolia_insights_partial.rb +2 -0
  149. data/lib/algolia/models/ingestion/auth_algolia_partial.rb +2 -0
  150. data/lib/algolia/models/ingestion/auth_api_key.rb +2 -0
  151. data/lib/algolia/models/ingestion/auth_api_key_partial.rb +2 -0
  152. data/lib/algolia/models/ingestion/auth_basic.rb +2 -0
  153. data/lib/algolia/models/ingestion/auth_basic_partial.rb +2 -0
  154. data/lib/algolia/models/ingestion/auth_google_service_account.rb +2 -0
  155. data/lib/algolia/models/ingestion/auth_google_service_account_partial.rb +2 -0
  156. data/lib/algolia/models/ingestion/auth_input.rb +2 -0
  157. data/lib/algolia/models/ingestion/auth_input_partial.rb +2 -0
  158. data/lib/algolia/models/ingestion/auth_o_auth.rb +2 -0
  159. data/lib/algolia/models/ingestion/auth_o_auth_partial.rb +2 -0
  160. data/lib/algolia/models/ingestion/authentication.rb +2 -0
  161. data/lib/algolia/models/ingestion/authentication_create.rb +2 -0
  162. data/lib/algolia/models/ingestion/authentication_create_response.rb +2 -0
  163. data/lib/algolia/models/ingestion/authentication_search.rb +2 -0
  164. data/lib/algolia/models/ingestion/authentication_sort_keys.rb +2 -0
  165. data/lib/algolia/models/ingestion/authentication_type.rb +2 -0
  166. data/lib/algolia/models/ingestion/authentication_update.rb +2 -0
  167. data/lib/algolia/models/ingestion/authentication_update_response.rb +2 -0
  168. data/lib/algolia/models/ingestion/big_commerce_channel.rb +2 -0
  169. data/lib/algolia/models/ingestion/big_commerce_metafield.rb +2 -0
  170. data/lib/algolia/models/ingestion/big_query_data_type.rb +2 -0
  171. data/lib/algolia/models/ingestion/commercetools_custom_fields.rb +2 -0
  172. data/lib/algolia/models/ingestion/delete_response.rb +2 -0
  173. data/lib/algolia/models/ingestion/destination.rb +2 -0
  174. data/lib/algolia/models/ingestion/destination_create.rb +2 -0
  175. data/lib/algolia/models/ingestion/destination_create_response.rb +2 -0
  176. data/lib/algolia/models/ingestion/destination_index_name.rb +2 -0
  177. data/lib/algolia/models/ingestion/destination_input.rb +2 -0
  178. data/lib/algolia/models/ingestion/destination_search.rb +2 -0
  179. data/lib/algolia/models/ingestion/destination_sort_keys.rb +2 -0
  180. data/lib/algolia/models/ingestion/destination_type.rb +2 -0
  181. data/lib/algolia/models/ingestion/destination_update.rb +2 -0
  182. data/lib/algolia/models/ingestion/destination_update_response.rb +2 -0
  183. data/lib/algolia/models/ingestion/docker_streams.rb +2 -0
  184. data/lib/algolia/models/ingestion/docker_streams_input.rb +2 -0
  185. data/lib/algolia/models/ingestion/docker_streams_sync_mode.rb +2 -0
  186. data/lib/algolia/models/ingestion/email_notifications.rb +2 -0
  187. data/lib/algolia/models/ingestion/entity_type.rb +2 -0
  188. data/lib/algolia/models/ingestion/error_base.rb +2 -0
  189. data/lib/algolia/models/ingestion/event.rb +2 -0
  190. data/lib/algolia/models/ingestion/event_sort_keys.rb +2 -0
  191. data/lib/algolia/models/ingestion/event_status.rb +2 -0
  192. data/lib/algolia/models/ingestion/event_type.rb +2 -0
  193. data/lib/algolia/models/ingestion/list_authentications_response.rb +2 -0
  194. data/lib/algolia/models/ingestion/list_destinations_response.rb +2 -0
  195. data/lib/algolia/models/ingestion/list_events_response.rb +2 -0
  196. data/lib/algolia/models/ingestion/list_sources_response.rb +2 -0
  197. data/lib/algolia/models/ingestion/list_tasks_response.rb +2 -0
  198. data/lib/algolia/models/ingestion/list_tasks_response_v1.rb +2 -0
  199. data/lib/algolia/models/ingestion/list_transformations_response.rb +2 -0
  200. data/lib/algolia/models/ingestion/mapping_field_directive.rb +2 -0
  201. data/lib/algolia/models/ingestion/mapping_format_schema.rb +2 -0
  202. data/lib/algolia/models/ingestion/mapping_input.rb +2 -0
  203. data/lib/algolia/models/ingestion/mapping_kit_action.rb +2 -0
  204. data/lib/algolia/models/ingestion/mapping_type_csv.rb +2 -0
  205. data/lib/algolia/models/ingestion/method_type.rb +2 -0
  206. data/lib/algolia/models/ingestion/notifications.rb +2 -0
  207. data/lib/algolia/models/ingestion/on_demand_trigger.rb +2 -0
  208. data/lib/algolia/models/ingestion/on_demand_trigger_input.rb +2 -0
  209. data/lib/algolia/models/ingestion/on_demand_trigger_type.rb +2 -0
  210. data/lib/algolia/models/ingestion/order_keys.rb +2 -0
  211. data/lib/algolia/models/ingestion/pagination.rb +2 -0
  212. data/lib/algolia/models/ingestion/platform.rb +2 -0
  213. data/lib/algolia/models/ingestion/platform_none.rb +2 -0
  214. data/lib/algolia/models/ingestion/platform_with_none.rb +2 -0
  215. data/lib/algolia/models/ingestion/policies.rb +2 -0
  216. data/lib/algolia/models/ingestion/push_task_payload.rb +2 -0
  217. data/lib/algolia/models/ingestion/push_task_records.rb +10 -8
  218. data/lib/algolia/models/ingestion/record_type.rb +2 -0
  219. data/lib/algolia/models/ingestion/run.rb +2 -0
  220. data/lib/algolia/models/ingestion/run_list_response.rb +2 -0
  221. data/lib/algolia/models/ingestion/run_outcome.rb +3 -2
  222. data/lib/algolia/models/ingestion/run_progress.rb +6 -0
  223. data/lib/algolia/models/ingestion/run_reason_code.rb +2 -0
  224. data/lib/algolia/models/ingestion/run_response.rb +2 -0
  225. data/lib/algolia/models/ingestion/run_sort_keys.rb +2 -0
  226. data/lib/algolia/models/ingestion/run_source_payload.rb +2 -0
  227. data/lib/algolia/models/ingestion/run_source_response.rb +2 -0
  228. data/lib/algolia/models/ingestion/run_status.rb +2 -0
  229. data/lib/algolia/models/ingestion/run_type.rb +2 -0
  230. data/lib/algolia/models/ingestion/schedule_trigger.rb +2 -0
  231. data/lib/algolia/models/ingestion/schedule_trigger_input.rb +2 -0
  232. data/lib/algolia/models/ingestion/schedule_trigger_type.rb +2 -0
  233. data/lib/algolia/models/ingestion/shopify_input.rb +2 -0
  234. data/lib/algolia/models/ingestion/shopify_market.rb +2 -0
  235. data/lib/algolia/models/ingestion/shopify_metafield.rb +2 -0
  236. data/lib/algolia/models/ingestion/source.rb +2 -0
  237. data/lib/algolia/models/ingestion/source_big_commerce.rb +2 -0
  238. data/lib/algolia/models/ingestion/source_big_query.rb +2 -0
  239. data/lib/algolia/models/ingestion/source_commercetools.rb +2 -0
  240. data/lib/algolia/models/ingestion/source_create.rb +2 -0
  241. data/lib/algolia/models/ingestion/source_create_response.rb +2 -0
  242. data/lib/algolia/models/ingestion/source_csv.rb +2 -0
  243. data/lib/algolia/models/ingestion/source_docker.rb +4 -36
  244. data/lib/algolia/models/ingestion/source_ga4_big_query_export.rb +2 -0
  245. data/lib/algolia/models/ingestion/source_input.rb +2 -0
  246. data/lib/algolia/models/ingestion/source_json.rb +2 -0
  247. data/lib/algolia/models/ingestion/source_search.rb +2 -0
  248. data/lib/algolia/models/ingestion/source_shopify.rb +2 -0
  249. data/lib/algolia/models/ingestion/source_sort_keys.rb +2 -0
  250. data/lib/algolia/models/ingestion/source_type.rb +2 -0
  251. data/lib/algolia/models/ingestion/source_update.rb +2 -0
  252. data/lib/algolia/models/ingestion/source_update_commercetools.rb +2 -0
  253. data/lib/algolia/models/ingestion/source_update_docker.rb +3 -30
  254. data/lib/algolia/models/ingestion/source_update_input.rb +2 -0
  255. data/lib/algolia/models/ingestion/source_update_response.rb +2 -0
  256. data/lib/algolia/models/ingestion/source_update_shopify.rb +2 -0
  257. data/lib/algolia/models/ingestion/streaming_input.rb +2 -0
  258. data/lib/algolia/models/ingestion/streaming_trigger.rb +2 -0
  259. data/lib/algolia/models/ingestion/streaming_trigger_type.rb +2 -0
  260. data/lib/algolia/models/ingestion/subscription_trigger.rb +2 -0
  261. data/lib/algolia/models/ingestion/subscription_trigger_type.rb +2 -0
  262. data/lib/algolia/models/ingestion/task.rb +2 -0
  263. data/lib/algolia/models/ingestion/task_create.rb +2 -0
  264. data/lib/algolia/models/ingestion/task_create_response.rb +2 -0
  265. data/lib/algolia/models/ingestion/task_create_trigger.rb +2 -0
  266. data/lib/algolia/models/ingestion/task_create_v1.rb +2 -0
  267. data/lib/algolia/models/ingestion/task_input.rb +2 -0
  268. data/lib/algolia/models/ingestion/task_search.rb +2 -0
  269. data/lib/algolia/models/ingestion/task_sort_keys.rb +2 -0
  270. data/lib/algolia/models/ingestion/task_update.rb +2 -0
  271. data/lib/algolia/models/ingestion/task_update_response.rb +2 -0
  272. data/lib/algolia/models/ingestion/task_update_v1.rb +2 -0
  273. data/lib/algolia/models/ingestion/task_v1.rb +2 -0
  274. data/lib/algolia/models/ingestion/transformation.rb +2 -0
  275. data/lib/algolia/models/ingestion/transformation_create.rb +2 -0
  276. data/lib/algolia/models/ingestion/transformation_create_response.rb +2 -0
  277. data/lib/algolia/models/ingestion/transformation_error.rb +2 -0
  278. data/lib/algolia/models/ingestion/transformation_search.rb +2 -0
  279. data/lib/algolia/models/ingestion/transformation_sort_keys.rb +2 -0
  280. data/lib/algolia/models/ingestion/transformation_try.rb +2 -0
  281. data/lib/algolia/models/ingestion/transformation_try_response.rb +2 -0
  282. data/lib/algolia/models/ingestion/transformation_update_response.rb +2 -0
  283. data/lib/algolia/models/ingestion/trigger.rb +2 -0
  284. data/lib/algolia/models/ingestion/trigger_type.rb +2 -0
  285. data/lib/algolia/models/ingestion/trigger_update_input.rb +2 -0
  286. data/lib/algolia/models/ingestion/watch_response.rb +2 -0
  287. data/lib/algolia/models/ingestion/window.rb +2 -0
  288. data/lib/algolia/models/insights/add_to_cart_event.rb +2 -0
  289. data/lib/algolia/models/insights/added_to_cart_object_ids.rb +2 -0
  290. data/lib/algolia/models/insights/added_to_cart_object_ids_after_search.rb +2 -0
  291. data/lib/algolia/models/insights/click_event.rb +2 -0
  292. data/lib/algolia/models/insights/clicked_filters.rb +2 -0
  293. data/lib/algolia/models/insights/clicked_object_ids.rb +2 -0
  294. data/lib/algolia/models/insights/clicked_object_ids_after_search.rb +2 -0
  295. data/lib/algolia/models/insights/conversion_event.rb +2 -0
  296. data/lib/algolia/models/insights/converted_filters.rb +2 -0
  297. data/lib/algolia/models/insights/converted_object_ids.rb +2 -0
  298. data/lib/algolia/models/insights/converted_object_ids_after_search.rb +2 -0
  299. data/lib/algolia/models/insights/discount.rb +2 -0
  300. data/lib/algolia/models/insights/error_base.rb +2 -0
  301. data/lib/algolia/models/insights/events_items.rb +2 -0
  302. data/lib/algolia/models/insights/events_response.rb +2 -0
  303. data/lib/algolia/models/insights/insights_events.rb +2 -0
  304. data/lib/algolia/models/insights/object_data.rb +2 -0
  305. data/lib/algolia/models/insights/object_data_after_search.rb +2 -0
  306. data/lib/algolia/models/insights/price.rb +2 -0
  307. data/lib/algolia/models/insights/purchase_event.rb +2 -0
  308. data/lib/algolia/models/insights/purchased_object_ids.rb +2 -0
  309. data/lib/algolia/models/insights/purchased_object_ids_after_search.rb +2 -0
  310. data/lib/algolia/models/insights/value.rb +2 -0
  311. data/lib/algolia/models/insights/view_event.rb +2 -0
  312. data/lib/algolia/models/insights/viewed_filters.rb +2 -0
  313. data/lib/algolia/models/insights/viewed_object_ids.rb +2 -0
  314. data/lib/algolia/models/monitoring/error_base.rb +2 -0
  315. data/lib/algolia/models/monitoring/incident.rb +2 -0
  316. data/lib/algolia/models/monitoring/incident_entry.rb +2 -0
  317. data/lib/algolia/models/monitoring/incidents_response.rb +2 -0
  318. data/lib/algolia/models/monitoring/indexing_metric.rb +2 -0
  319. data/lib/algolia/models/monitoring/indexing_time_response.rb +2 -0
  320. data/lib/algolia/models/monitoring/infrastructure_response.rb +2 -0
  321. data/lib/algolia/models/monitoring/inventory_response.rb +2 -0
  322. data/lib/algolia/models/monitoring/latency_metric.rb +2 -0
  323. data/lib/algolia/models/monitoring/latency_response.rb +2 -0
  324. data/lib/algolia/models/monitoring/metric.rb +2 -0
  325. data/lib/algolia/models/monitoring/metrics.rb +2 -0
  326. data/lib/algolia/models/monitoring/period.rb +2 -0
  327. data/lib/algolia/models/monitoring/probes_metric.rb +2 -0
  328. data/lib/algolia/models/monitoring/region.rb +2 -0
  329. data/lib/algolia/models/monitoring/server.rb +2 -0
  330. data/lib/algolia/models/monitoring/server_status.rb +2 -0
  331. data/lib/algolia/models/monitoring/status.rb +2 -0
  332. data/lib/algolia/models/monitoring/status_response.rb +2 -0
  333. data/lib/algolia/models/monitoring/time_entry.rb +2 -0
  334. data/lib/algolia/models/monitoring/type.rb +2 -0
  335. data/lib/algolia/models/personalization/delete_user_profile_response.rb +2 -0
  336. data/lib/algolia/models/personalization/error_base.rb +2 -0
  337. data/lib/algolia/models/personalization/event_type.rb +2 -0
  338. data/lib/algolia/models/personalization/events_scoring.rb +2 -0
  339. data/lib/algolia/models/personalization/facets_scoring.rb +2 -0
  340. data/lib/algolia/models/personalization/get_user_token_response.rb +2 -0
  341. data/lib/algolia/models/personalization/personalization_strategy_params.rb +2 -0
  342. data/lib/algolia/models/personalization/set_personalization_strategy_response.rb +2 -0
  343. data/lib/algolia/models/query-suggestions/base_response.rb +2 -0
  344. data/lib/algolia/models/query-suggestions/config_status.rb +2 -0
  345. data/lib/algolia/models/query-suggestions/configuration.rb +2 -0
  346. data/lib/algolia/models/query-suggestions/configuration_response.rb +2 -0
  347. data/lib/algolia/models/query-suggestions/configuration_with_index.rb +2 -0
  348. data/lib/algolia/models/query-suggestions/error_base.rb +2 -0
  349. data/lib/algolia/models/query-suggestions/facet.rb +2 -0
  350. data/lib/algolia/models/query-suggestions/languages.rb +2 -0
  351. data/lib/algolia/models/query-suggestions/log_file.rb +2 -0
  352. data/lib/algolia/models/query-suggestions/log_level.rb +2 -0
  353. data/lib/algolia/models/query-suggestions/source_index.rb +2 -0
  354. data/lib/algolia/models/recommend/advanced_syntax_features.rb +2 -0
  355. data/lib/algolia/models/recommend/alternatives_as_exact.rb +2 -0
  356. data/lib/algolia/models/recommend/around_precision.rb +2 -0
  357. data/lib/algolia/models/recommend/around_radius.rb +2 -0
  358. data/lib/algolia/models/recommend/around_radius_all.rb +2 -0
  359. data/lib/algolia/models/recommend/auto_facet_filter.rb +2 -0
  360. data/lib/algolia/models/recommend/banner.rb +3 -1
  361. data/lib/algolia/models/recommend/banner_image.rb +3 -1
  362. data/lib/algolia/models/recommend/banner_image_url.rb +3 -1
  363. data/lib/algolia/models/recommend/banner_link.rb +3 -1
  364. data/lib/algolia/models/recommend/boolean_string.rb +2 -0
  365. data/lib/algolia/models/recommend/bought_together_query.rb +10 -8
  366. data/lib/algolia/models/recommend/condition.rb +2 -0
  367. data/lib/algolia/models/recommend/consequence.rb +2 -0
  368. data/lib/algolia/models/recommend/deleted_at_response.rb +2 -0
  369. data/lib/algolia/models/recommend/distinct.rb +2 -0
  370. data/lib/algolia/models/recommend/error_base.rb +2 -0
  371. data/lib/algolia/models/recommend/exact_on_single_word_query.rb +2 -0
  372. data/lib/algolia/models/recommend/exhaustive.rb +2 -0
  373. data/lib/algolia/models/recommend/facet_filters.rb +2 -0
  374. data/lib/algolia/models/recommend/facet_ordering.rb +2 -0
  375. data/lib/algolia/models/recommend/facet_stats.rb +2 -0
  376. data/lib/algolia/models/recommend/fallback_params.rb +26 -0
  377. data/lib/algolia/models/recommend/fbt_model.rb +2 -0
  378. data/lib/algolia/models/recommend/get_recommend_task_response.rb +2 -0
  379. data/lib/algolia/models/recommend/get_recommendations_params.rb +2 -0
  380. data/lib/algolia/models/recommend/get_recommendations_response.rb +2 -0
  381. data/lib/algolia/models/recommend/hide_consequence_object.rb +9 -7
  382. data/lib/algolia/models/recommend/highlight_result.rb +2 -0
  383. data/lib/algolia/models/recommend/highlight_result_option.rb +2 -0
  384. data/lib/algolia/models/recommend/ignore_plurals.rb +2 -0
  385. data/lib/algolia/models/recommend/index_settings_facets.rb +2 -0
  386. data/lib/algolia/models/recommend/inside_bounding_box.rb +2 -0
  387. data/lib/algolia/models/recommend/looking_similar_model.rb +2 -0
  388. data/lib/algolia/models/recommend/looking_similar_query.rb +10 -8
  389. data/lib/algolia/models/recommend/match_level.rb +2 -0
  390. data/lib/algolia/models/recommend/matched_geo_location.rb +2 -0
  391. data/lib/algolia/models/recommend/numeric_filters.rb +2 -0
  392. data/lib/algolia/models/recommend/optional_filters.rb +3 -1
  393. data/lib/algolia/models/recommend/optional_words.rb +2 -0
  394. data/lib/algolia/models/recommend/params_consequence.rb +2 -0
  395. data/lib/algolia/models/recommend/personalization.rb +2 -0
  396. data/lib/algolia/models/recommend/promote_consequence_object.rb +9 -7
  397. data/lib/algolia/models/recommend/query_type.rb +2 -0
  398. data/lib/algolia/models/recommend/range.rb +2 -0
  399. data/lib/algolia/models/recommend/ranking_info.rb +2 -0
  400. data/lib/algolia/models/recommend/re_ranking_apply_filter.rb +2 -0
  401. data/lib/algolia/models/recommend/recommend_hit.rb +10 -8
  402. data/lib/algolia/models/recommend/recommend_models.rb +2 -0
  403. data/lib/algolia/models/recommend/recommend_rule.rb +9 -7
  404. data/lib/algolia/models/recommend/recommend_search_params.rb +26 -0
  405. data/lib/algolia/models/recommend/recommend_updated_at_response.rb +2 -0
  406. data/lib/algolia/models/recommend/recommendations_hit.rb +2 -0
  407. data/lib/algolia/models/recommend/recommendations_request.rb +2 -0
  408. data/lib/algolia/models/recommend/recommendations_results.rb +2 -0
  409. data/lib/algolia/models/recommend/redirect.rb +2 -0
  410. data/lib/algolia/models/recommend/redirect_rule_index_data.rb +2 -0
  411. data/lib/algolia/models/recommend/redirect_rule_index_metadata.rb +2 -0
  412. data/lib/algolia/models/recommend/redirect_url.rb +2 -0
  413. data/lib/algolia/models/recommend/related_model.rb +2 -0
  414. data/lib/algolia/models/recommend/related_query.rb +10 -8
  415. data/lib/algolia/models/recommend/remove_stop_words.rb +2 -0
  416. data/lib/algolia/models/recommend/remove_words_if_no_results.rb +2 -0
  417. data/lib/algolia/models/recommend/rendering_content.rb +2 -0
  418. data/lib/algolia/models/recommend/rule_metadata.rb +2 -0
  419. data/lib/algolia/models/recommend/search_recommend_rules_params.rb +2 -0
  420. data/lib/algolia/models/recommend/search_recommend_rules_response.rb +2 -0
  421. data/lib/algolia/models/recommend/snippet_result.rb +2 -0
  422. data/lib/algolia/models/recommend/snippet_result_option.rb +2 -0
  423. data/lib/algolia/models/recommend/sort_remaining_by.rb +2 -0
  424. data/lib/algolia/models/recommend/supported_language.rb +2 -0
  425. data/lib/algolia/models/recommend/tag_filters.rb +2 -0
  426. data/lib/algolia/models/recommend/task_status.rb +2 -0
  427. data/lib/algolia/models/recommend/time_range.rb +2 -0
  428. data/lib/algolia/models/recommend/trending_facet_hit.rb +2 -0
  429. data/lib/algolia/models/recommend/trending_facets_model.rb +2 -0
  430. data/lib/algolia/models/recommend/trending_facets_query.rb +2 -0
  431. data/lib/algolia/models/recommend/trending_items_model.rb +2 -0
  432. data/lib/algolia/models/recommend/trending_items_query.rb +2 -0
  433. data/lib/algolia/models/recommend/typo_tolerance.rb +2 -0
  434. data/lib/algolia/models/recommend/typo_tolerance_enum.rb +2 -0
  435. data/lib/algolia/models/recommend/value.rb +2 -0
  436. data/lib/algolia/models/recommend/widgets.rb +4 -2
  437. data/lib/algolia/models/search/acl.rb +2 -0
  438. data/lib/algolia/models/search/action.rb +2 -0
  439. data/lib/algolia/models/search/add_api_key_response.rb +2 -0
  440. data/lib/algolia/models/search/advanced_syntax_features.rb +2 -0
  441. data/lib/algolia/models/search/alternatives_as_exact.rb +2 -0
  442. data/lib/algolia/models/search/anchoring.rb +2 -0
  443. data/lib/algolia/models/search/api_key.rb +2 -0
  444. data/lib/algolia/models/search/api_key_operation.rb +2 -0
  445. data/lib/algolia/models/search/around_precision.rb +2 -0
  446. data/lib/algolia/models/search/around_radius.rb +2 -0
  447. data/lib/algolia/models/search/around_radius_all.rb +2 -0
  448. data/lib/algolia/models/search/assign_user_id_params.rb +2 -0
  449. data/lib/algolia/models/search/attribute_to_update.rb +2 -0
  450. data/lib/algolia/models/search/automatic_facet_filter.rb +2 -0
  451. data/lib/algolia/models/search/automatic_facet_filters.rb +2 -0
  452. data/lib/algolia/models/search/banner.rb +3 -1
  453. data/lib/algolia/models/search/banner_image.rb +3 -1
  454. data/lib/algolia/models/search/banner_image_url.rb +3 -1
  455. data/lib/algolia/models/search/banner_link.rb +3 -1
  456. data/lib/algolia/models/search/batch_assign_user_ids_params.rb +2 -0
  457. data/lib/algolia/models/search/batch_dictionary_entries_params.rb +2 -0
  458. data/lib/algolia/models/search/batch_dictionary_entries_request.rb +2 -0
  459. data/lib/algolia/models/search/batch_params.rb +2 -0
  460. data/lib/algolia/models/search/batch_request.rb +2 -0
  461. data/lib/algolia/models/search/batch_response.rb +2 -0
  462. data/lib/algolia/models/search/batch_write_params.rb +2 -0
  463. data/lib/algolia/models/search/boolean_string.rb +2 -0
  464. data/lib/algolia/models/search/browse_params.rb +2 -0
  465. data/lib/algolia/models/search/browse_params_object.rb +2 -24
  466. data/lib/algolia/models/search/browse_response.rb +2 -0
  467. data/lib/algolia/models/search/built_in_operation.rb +2 -0
  468. data/lib/algolia/models/search/built_in_operation_type.rb +2 -0
  469. data/lib/algolia/models/search/built_in_operation_value.rb +2 -0
  470. data/lib/algolia/models/search/condition.rb +2 -0
  471. data/lib/algolia/models/search/consequence.rb +2 -0
  472. data/lib/algolia/models/search/consequence_hide.rb +10 -8
  473. data/lib/algolia/models/search/consequence_params.rb +2 -24
  474. data/lib/algolia/models/search/consequence_query.rb +2 -0
  475. data/lib/algolia/models/search/consequence_query_object.rb +2 -0
  476. data/lib/algolia/models/search/created_at_response.rb +2 -0
  477. data/lib/algolia/models/search/delete_api_key_response.rb +2 -0
  478. data/lib/algolia/models/search/delete_by_params.rb +2 -0
  479. data/lib/algolia/models/search/delete_source_response.rb +2 -0
  480. data/lib/algolia/models/search/deleted_at_response.rb +2 -0
  481. data/lib/algolia/models/search/dictionary_action.rb +2 -0
  482. data/lib/algolia/models/search/dictionary_entry.rb +10 -8
  483. data/lib/algolia/models/search/dictionary_entry_state.rb +2 -0
  484. data/lib/algolia/models/search/dictionary_entry_type.rb +2 -0
  485. data/lib/algolia/models/search/dictionary_language.rb +2 -0
  486. data/lib/algolia/models/search/dictionary_settings_params.rb +2 -0
  487. data/lib/algolia/models/search/dictionary_type.rb +2 -0
  488. data/lib/algolia/models/search/distinct.rb +2 -0
  489. data/lib/algolia/models/search/edit.rb +2 -0
  490. data/lib/algolia/models/search/edit_type.rb +2 -0
  491. data/lib/algolia/models/search/error_base.rb +2 -0
  492. data/lib/algolia/models/search/exact_on_single_word_query.rb +2 -0
  493. data/lib/algolia/models/search/exhaustive.rb +2 -0
  494. data/lib/algolia/models/search/facet_filters.rb +2 -0
  495. data/lib/algolia/models/search/facet_hits.rb +2 -0
  496. data/lib/algolia/models/search/facet_ordering.rb +2 -0
  497. data/lib/algolia/models/search/facet_stats.rb +2 -0
  498. data/lib/algolia/models/search/facets.rb +2 -0
  499. data/lib/algolia/models/search/fetched_index.rb +2 -0
  500. data/lib/algolia/models/search/get_api_key_response.rb +2 -0
  501. data/lib/algolia/models/search/get_dictionary_settings_response.rb +2 -0
  502. data/lib/algolia/models/search/get_logs_response.rb +2 -0
  503. data/lib/algolia/models/search/get_objects_params.rb +2 -0
  504. data/lib/algolia/models/search/get_objects_request.rb +10 -8
  505. data/lib/algolia/models/search/get_objects_response.rb +2 -0
  506. data/lib/algolia/models/search/get_task_response.rb +2 -0
  507. data/lib/algolia/models/search/get_top_user_ids_response.rb +2 -0
  508. data/lib/algolia/models/search/has_pending_mappings_response.rb +2 -0
  509. data/lib/algolia/models/search/highlight_result.rb +2 -0
  510. data/lib/algolia/models/search/highlight_result_option.rb +2 -0
  511. data/lib/algolia/models/search/hit.rb +10 -8
  512. data/lib/algolia/models/search/ignore_plurals.rb +2 -0
  513. data/lib/algolia/models/search/index_settings.rb +26 -24
  514. data/lib/algolia/models/search/inside_bounding_box.rb +2 -0
  515. data/lib/algolia/models/search/languages.rb +2 -0
  516. data/lib/algolia/models/search/list_api_keys_response.rb +2 -0
  517. data/lib/algolia/models/search/list_clusters_response.rb +2 -0
  518. data/lib/algolia/models/search/list_indices_response.rb +2 -0
  519. data/lib/algolia/models/search/list_user_ids_response.rb +2 -0
  520. data/lib/algolia/models/search/log.rb +2 -0
  521. data/lib/algolia/models/search/log_query.rb +2 -0
  522. data/lib/algolia/models/search/log_type.rb +2 -0
  523. data/lib/algolia/models/search/match_level.rb +2 -0
  524. data/lib/algolia/models/search/matched_geo_location.rb +2 -0
  525. data/lib/algolia/models/search/mode.rb +2 -0
  526. data/lib/algolia/models/search/multiple_batch_request.rb +2 -0
  527. data/lib/algolia/models/search/multiple_batch_response.rb +2 -0
  528. data/lib/algolia/models/search/numeric_filters.rb +2 -0
  529. data/lib/algolia/models/search/operation_index_params.rb +2 -0
  530. data/lib/algolia/models/search/operation_type.rb +2 -0
  531. data/lib/algolia/models/search/optional_filters.rb +3 -1
  532. data/lib/algolia/models/search/optional_words.rb +2 -0
  533. data/lib/algolia/models/search/personalization.rb +2 -0
  534. data/lib/algolia/models/search/promote.rb +2 -0
  535. data/lib/algolia/models/search/promote_object_id.rb +10 -8
  536. data/lib/algolia/models/search/promote_object_ids.rb +2 -0
  537. data/lib/algolia/models/search/query_type.rb +2 -0
  538. data/lib/algolia/models/search/range.rb +2 -0
  539. data/lib/algolia/models/search/ranking_info.rb +2 -0
  540. data/lib/algolia/models/search/re_ranking_apply_filter.rb +2 -0
  541. data/lib/algolia/models/search/redirect.rb +2 -0
  542. data/lib/algolia/models/search/redirect_rule_index_data.rb +2 -0
  543. data/lib/algolia/models/search/redirect_rule_index_metadata.rb +2 -0
  544. data/lib/algolia/models/search/redirect_url.rb +2 -0
  545. data/lib/algolia/models/search/remove_stop_words.rb +2 -0
  546. data/lib/algolia/models/search/remove_user_id_response.rb +2 -0
  547. data/lib/algolia/models/search/remove_words_if_no_results.rb +2 -0
  548. data/lib/algolia/models/search/rendering_content.rb +2 -0
  549. data/lib/algolia/models/search/replace_all_objects_response.rb +2 -0
  550. data/lib/algolia/models/search/replace_source_response.rb +2 -0
  551. data/lib/algolia/models/search/rule.rb +10 -8
  552. data/lib/algolia/models/search/save_object_response.rb +9 -7
  553. data/lib/algolia/models/search/save_synonym_response.rb +2 -0
  554. data/lib/algolia/models/search/scope_type.rb +2 -0
  555. data/lib/algolia/models/search/search_dictionary_entries_params.rb +2 -0
  556. data/lib/algolia/models/search/search_dictionary_entries_response.rb +2 -0
  557. data/lib/algolia/models/search/search_for_facet_values_request.rb +2 -0
  558. data/lib/algolia/models/search/search_for_facet_values_response.rb +2 -0
  559. data/lib/algolia/models/search/search_for_facets.rb +2 -24
  560. data/lib/algolia/models/search/search_for_hits.rb +2 -24
  561. data/lib/algolia/models/search/search_method_params.rb +2 -0
  562. data/lib/algolia/models/search/search_params.rb +2 -0
  563. data/lib/algolia/models/search/search_params_object.rb +2 -24
  564. data/lib/algolia/models/search/search_params_string.rb +2 -0
  565. data/lib/algolia/models/search/search_query.rb +2 -0
  566. data/lib/algolia/models/search/search_response.rb +2 -0
  567. data/lib/algolia/models/search/search_responses.rb +2 -0
  568. data/lib/algolia/models/search/search_result.rb +2 -0
  569. data/lib/algolia/models/search/search_rules_params.rb +2 -0
  570. data/lib/algolia/models/search/search_rules_response.rb +2 -0
  571. data/lib/algolia/models/search/search_strategy.rb +2 -0
  572. data/lib/algolia/models/search/search_synonyms_params.rb +2 -0
  573. data/lib/algolia/models/search/search_synonyms_response.rb +2 -0
  574. data/lib/algolia/models/search/search_type_default.rb +2 -0
  575. data/lib/algolia/models/search/search_type_facet.rb +2 -0
  576. data/lib/algolia/models/search/search_user_ids_params.rb +2 -0
  577. data/lib/algolia/models/search/search_user_ids_response.rb +2 -0
  578. data/lib/algolia/models/search/secured_api_key_restrictions.rb +2 -0
  579. data/lib/algolia/models/search/semantic_search.rb +2 -0
  580. data/lib/algolia/models/search/settings_response.rb +26 -24
  581. data/lib/algolia/models/search/snippet_result.rb +2 -0
  582. data/lib/algolia/models/search/snippet_result_option.rb +2 -0
  583. data/lib/algolia/models/search/sort_remaining_by.rb +2 -0
  584. data/lib/algolia/models/search/source.rb +2 -0
  585. data/lib/algolia/models/search/standard_entries.rb +2 -0
  586. data/lib/algolia/models/search/supported_language.rb +2 -0
  587. data/lib/algolia/models/search/synonym_hit.rb +10 -8
  588. data/lib/algolia/models/search/synonym_type.rb +2 -0
  589. data/lib/algolia/models/search/tag_filters.rb +2 -0
  590. data/lib/algolia/models/search/task_status.rb +2 -0
  591. data/lib/algolia/models/search/time_range.rb +2 -0
  592. data/lib/algolia/models/search/typo_tolerance.rb +2 -0
  593. data/lib/algolia/models/search/typo_tolerance_enum.rb +2 -0
  594. data/lib/algolia/models/search/update_api_key_response.rb +2 -0
  595. data/lib/algolia/models/search/updated_at_response.rb +2 -0
  596. data/lib/algolia/models/search/updated_at_with_object_id_response.rb +9 -7
  597. data/lib/algolia/models/search/user_highlight_result.rb +2 -0
  598. data/lib/algolia/models/search/user_hit.rb +10 -8
  599. data/lib/algolia/models/search/user_id.rb +2 -0
  600. data/lib/algolia/models/search/value.rb +2 -0
  601. data/lib/algolia/models/search/widgets.rb +4 -2
  602. data/lib/algolia/version.rb +3 -1
  603. metadata +54 -4
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
4
+
5
+ require "date"
6
+ require "time"
7
+
8
+ module Algolia
9
+ module Composition
10
+ # Filter the search by facet values, so that only records with the same facet values are retrieved. **Prefer using the `filters` parameter, which supports all filter types and combinations with boolean operators.** - `[filter1, filter2]` is interpreted as `filter1 AND filter2`. - `[[filter1, filter2], filter3]` is interpreted as `filter1 OR filter2 AND filter3`. - `facet:-value` is interpreted as `NOT facet:value`. While it's best to avoid attributes that start with a `-`, you can still filter them by escaping with a backslash: `facet:\\-value`.
11
+ module FacetFilters
12
+ class << self
13
+ # List of class defined in oneOf (OpenAPI v3)
14
+ def openapi_one_of
15
+ [
16
+ :"Array<FacetFilters>",
17
+ :"String"
18
+ ]
19
+ end
20
+
21
+ # Builds the object
22
+ # @param [Mixed] Data to be matched against the list of oneOf items
23
+ # @return [Object] Returns the model or the data itself
24
+ def build(data)
25
+ # Go through the list of oneOf items and attempt to identify the appropriate one.
26
+ # Note:
27
+ # - We do not attempt to check whether exactly one item matches.
28
+ # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
29
+ # due to the way the deserialization is made in the base_object template (it just casts without verifying).
30
+ # - TODO: scalar values are de facto behaving as if they were nullable.
31
+ # - TODO: logging when debugging is set.
32
+ openapi_one_of.each do |klass|
33
+ begin
34
+ # "nullable: true"
35
+ next if klass == :AnyType
36
+ typed_data = find_and_cast_into_type(klass, data)
37
+ return typed_data if typed_data
38
+ # rescue all errors so we keep iterating even if the current item lookup raises
39
+ rescue
40
+ end
41
+ end
42
+
43
+ openapi_one_of.include?(:AnyType) ? data : nil
44
+ end
45
+
46
+ private
47
+
48
+ SchemaMismatchError = Class.new(StandardError)
49
+
50
+ def find_and_cast_into_type(klass, data)
51
+ return if data.nil?
52
+
53
+ case klass.to_s
54
+ when "Boolean"
55
+ return data if data.instance_of?(TrueClass) || data.instance_of?(FalseClass)
56
+ when "Float"
57
+ return data if data.instance_of?(Float)
58
+ when "Integer"
59
+ return data if data.instance_of?(Integer)
60
+ when "Time"
61
+ return Time.parse(data)
62
+ when "Date"
63
+ return Date.parse(data)
64
+ when "String"
65
+ return data if data.instance_of?(String)
66
+ # "type: object"
67
+ when "Object"
68
+ return data if data.instance_of?(Hash)
69
+ # "type: array"
70
+ when /\AArray<(?<sub_type>.+)>\z/
71
+ if data.instance_of?(Array)
72
+ sub_type = Regexp.last_match[:sub_type]
73
+ return data.map { |item| find_and_cast_into_type(sub_type, item) }
74
+ end
75
+ # "type: object" with "additionalProperties: { ... }"
76
+ when /\AHash<String, (?<sub_type>.+)>\z/
77
+ if data.instance_of?(Hash) && data.keys.all? { |k| k.instance_of?(Symbol) || k.instance_of?(String) }
78
+ sub_type = Regexp.last_match[:sub_type]
79
+ return data.each_with_object({}) { |(k, v), hsh| hsh[k] = find_and_cast_into_type(sub_type, v) }
80
+ end
81
+ # model
82
+ else
83
+ const = Algolia::Composition.const_get(klass)
84
+ if const
85
+ if const.respond_to?(:openapi_one_of)
86
+ # nested oneOf model
87
+ model = const.build(data)
88
+ elsif const.respond_to?(:discriminator_attributes)
89
+ if const.discriminator_attributes.all? { |attr| data.key?(attr) }
90
+ model = const.build_from_hash(data)
91
+ end
92
+ else
93
+ # maybe it's an enum, or doens't have discriminators
94
+ model = const.build_from_hash(data)
95
+ end
96
+
97
+ return model if model
98
+ end
99
+ end
100
+
101
+ # if no match by now, raise
102
+ raise
103
+ rescue
104
+ raise SchemaMismatchError, "#{data} doesn't match the #{klass} type"
105
+ end
106
+ end
107
+ end
108
+
109
+ end
110
+ end
@@ -0,0 +1,235 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
4
+
5
+ require "date"
6
+ require "time"
7
+
8
+ module Algolia
9
+ module Composition
10
+ class FacetHits
11
+ # Facet value.
12
+ attr_accessor :value
13
+
14
+ # Highlighted attribute value, including HTML tags.
15
+ attr_accessor :highlighted
16
+
17
+ # Number of records with this facet value. [The count may be approximated](https://support.algolia.com/hc/en-us/articles/4406975248145-Why-are-my-facet-and-hit-counts-not-accurate-).
18
+ attr_accessor :count
19
+
20
+ # Attribute mapping from ruby-style variable name to JSON key.
21
+ def self.attribute_map
22
+ {
23
+ :value => :value,
24
+ :highlighted => :highlighted,
25
+ :count => :count
26
+ }
27
+ end
28
+
29
+ # Attribute type mapping.
30
+ def self.types_mapping
31
+ {
32
+ :value => :"String",
33
+ :highlighted => :"String",
34
+ :count => :"Integer"
35
+ }
36
+ end
37
+
38
+ # List of attributes with nullable: true
39
+ def self.openapi_nullable
40
+ Set.new(
41
+ []
42
+ )
43
+ end
44
+
45
+ # Initializes the object
46
+ # @param [Hash] attributes Model attributes in the form of hash
47
+ def initialize(attributes = {})
48
+ if (!attributes.is_a?(Hash))
49
+ raise(
50
+ ArgumentError,
51
+ "The input argument (attributes) must be a hash in `Algolia::FacetHits` initialize method"
52
+ )
53
+ end
54
+
55
+ # check to see if the attribute exists and convert string to symbol for hash key
56
+ attributes = attributes.each_with_object({}) { |(k, v), h|
57
+ if (!self.class.attribute_map.key?(k.to_sym))
58
+ raise(
59
+ ArgumentError,
60
+ "`#{k}` is not a valid attribute in `Algolia::FacetHits`. Please check the name to make sure it's valid. List of attributes: " +
61
+ self.class.attribute_map.keys.inspect
62
+ )
63
+ end
64
+
65
+ h[k.to_sym] = v
66
+ }
67
+
68
+ if attributes.key?(:value)
69
+ self.value = attributes[:value]
70
+ else
71
+ self.value = nil
72
+ end
73
+
74
+ if attributes.key?(:highlighted)
75
+ self.highlighted = attributes[:highlighted]
76
+ else
77
+ self.highlighted = nil
78
+ end
79
+
80
+ if attributes.key?(:count)
81
+ self.count = attributes[:count]
82
+ else
83
+ self.count = nil
84
+ end
85
+ end
86
+
87
+ # Checks equality by comparing each attribute.
88
+ # @param [Object] Object to be compared
89
+ def ==(other)
90
+ return true if self.equal?(other)
91
+ self.class == other.class &&
92
+ value == other.value &&
93
+ highlighted == other.highlighted &&
94
+ count == other.count
95
+ end
96
+
97
+ # @see the `==` method
98
+ # @param [Object] Object to be compared
99
+ def eql?(other)
100
+ self == other
101
+ end
102
+
103
+ # Calculates hash code according to all attributes.
104
+ # @return [Integer] Hash code
105
+ def hash
106
+ [value, highlighted, count].hash
107
+ end
108
+
109
+ # Builds the object from hash
110
+ # @param [Hash] attributes Model attributes in the form of hash
111
+ # @return [Object] Returns the model itself
112
+ def self.build_from_hash(attributes)
113
+ return nil unless attributes.is_a?(Hash)
114
+ attributes = attributes.transform_keys(&:to_sym)
115
+ transformed_hash = {}
116
+ types_mapping.each_pair do |key, type|
117
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
118
+ transformed_hash[key.to_sym] = nil
119
+ elsif type =~ /\AArray<(.*)>/i
120
+ # check to ensure the input is an array given that the attribute
121
+ # is documented as an array but the input is not
122
+ if attributes[attribute_map[key]].is_a?(Array)
123
+ transformed_hash[key.to_sym] = attributes[attribute_map[key]].map { |v|
124
+ _deserialize(::Regexp.last_match(1), v)
125
+ }
126
+ end
127
+ elsif !attributes[attribute_map[key]].nil?
128
+ transformed_hash[key.to_sym] = _deserialize(type, attributes[attribute_map[key]])
129
+ end
130
+ end
131
+
132
+ new(transformed_hash)
133
+ end
134
+
135
+ # Deserializes the data based on type
136
+ # @param string type Data type
137
+ # @param string value Value to be deserialized
138
+ # @return [Object] Deserialized data
139
+ def self._deserialize(type, value)
140
+ case type.to_sym
141
+ when :Time
142
+ Time.parse(value)
143
+ when :Date
144
+ Date.parse(value)
145
+ when :String
146
+ value.to_s
147
+ when :Integer
148
+ value.to_i
149
+ when :Float
150
+ value.to_f
151
+ when :Boolean
152
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
153
+ true
154
+ else
155
+ false
156
+ end
157
+
158
+ when :Object
159
+ # generic object (usually a Hash), return directly
160
+ value
161
+ when /\AArray<(?<inner_type>.+)>\z/
162
+ inner_type = Regexp.last_match[:inner_type]
163
+ value.map { |v| _deserialize(inner_type, v) }
164
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
165
+ k_type = Regexp.last_match[:k_type]
166
+ v_type = Regexp.last_match[:v_type]
167
+ {}.tap do |hash|
168
+ value.each do |k, v|
169
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
170
+ end
171
+ end
172
+ # model
173
+ else
174
+ # models (e.g. Pet) or oneOf
175
+ klass = Algolia::Composition.const_get(type)
176
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass
177
+ .build_from_hash(value)
178
+ end
179
+ end
180
+
181
+ # Returns the string representation of the object
182
+ # @return [String] String presentation of the object
183
+ def to_s
184
+ to_hash.to_s
185
+ end
186
+
187
+ # to_body is an alias to to_hash (backward compatibility)
188
+ # @return [Hash] Returns the object in the form of hash
189
+ def to_body
190
+ to_hash
191
+ end
192
+
193
+ def to_json(*_args)
194
+ to_hash.to_json
195
+ end
196
+
197
+ # Returns the object in the form of hash
198
+ # @return [Hash] Returns the object in the form of hash
199
+ def to_hash
200
+ hash = {}
201
+ self.class.attribute_map.each_pair do |attr, param|
202
+ value = send(attr)
203
+ if value.nil?
204
+ is_nullable = self.class.openapi_nullable.include?(attr)
205
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
206
+ end
207
+
208
+ hash[param] = _to_hash(value)
209
+ end
210
+
211
+ hash
212
+ end
213
+
214
+ # Outputs non-array value in the form of hash
215
+ # For object, use to_hash. Otherwise, just return the value
216
+ # @param [Object] value Any valid value
217
+ # @return [Hash] Returns the value in the form of hash
218
+ def _to_hash(value)
219
+ if value.is_a?(Array)
220
+ value.compact.map { |v| _to_hash(v) }
221
+ elsif value.is_a?(Hash)
222
+ {}.tap do |hash|
223
+ value.each { |k, v| hash[k] = _to_hash(v) }
224
+ end
225
+ elsif value.respond_to?(:to_hash)
226
+ value.to_hash
227
+ else
228
+ value
229
+ end
230
+ end
231
+
232
+ end
233
+
234
+ end
235
+ end
@@ -0,0 +1,221 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
4
+
5
+ require "date"
6
+ require "time"
7
+
8
+ module Algolia
9
+ module Composition
10
+ # Order of facet names and facet values in your UI.
11
+ class FacetOrdering
12
+ attr_accessor :facets
13
+
14
+ # Order of facet values. One object for each facet.
15
+ attr_accessor :values
16
+
17
+ # Attribute mapping from ruby-style variable name to JSON key.
18
+ def self.attribute_map
19
+ {
20
+ :facets => :facets,
21
+ :values => :values
22
+ }
23
+ end
24
+
25
+ # Attribute type mapping.
26
+ def self.types_mapping
27
+ {
28
+ :facets => :"Facets",
29
+ :values => :"Hash<String, Value>"
30
+ }
31
+ end
32
+
33
+ # List of attributes with nullable: true
34
+ def self.openapi_nullable
35
+ Set.new(
36
+ []
37
+ )
38
+ end
39
+
40
+ # Initializes the object
41
+ # @param [Hash] attributes Model attributes in the form of hash
42
+ def initialize(attributes = {})
43
+ if (!attributes.is_a?(Hash))
44
+ raise(
45
+ ArgumentError,
46
+ "The input argument (attributes) must be a hash in `Algolia::FacetOrdering` initialize method"
47
+ )
48
+ end
49
+
50
+ # check to see if the attribute exists and convert string to symbol for hash key
51
+ attributes = attributes.each_with_object({}) { |(k, v), h|
52
+ if (!self.class.attribute_map.key?(k.to_sym))
53
+ raise(
54
+ ArgumentError,
55
+ "`#{k}` is not a valid attribute in `Algolia::FacetOrdering`. Please check the name to make sure it's valid. List of attributes: " +
56
+ self.class.attribute_map.keys.inspect
57
+ )
58
+ end
59
+
60
+ h[k.to_sym] = v
61
+ }
62
+
63
+ if attributes.key?(:facets)
64
+ self.facets = attributes[:facets]
65
+ end
66
+
67
+ if attributes.key?(:values)
68
+ if (value = attributes[:values]).is_a?(Hash)
69
+ self.values = value
70
+ end
71
+ end
72
+ end
73
+
74
+ # Checks equality by comparing each attribute.
75
+ # @param [Object] Object to be compared
76
+ def ==(other)
77
+ return true if self.equal?(other)
78
+ self.class == other.class &&
79
+ facets == other.facets &&
80
+ values == other.values
81
+ end
82
+
83
+ # @see the `==` method
84
+ # @param [Object] Object to be compared
85
+ def eql?(other)
86
+ self == other
87
+ end
88
+
89
+ # Calculates hash code according to all attributes.
90
+ # @return [Integer] Hash code
91
+ def hash
92
+ [facets, values].hash
93
+ end
94
+
95
+ # Builds the object from hash
96
+ # @param [Hash] attributes Model attributes in the form of hash
97
+ # @return [Object] Returns the model itself
98
+ def self.build_from_hash(attributes)
99
+ return nil unless attributes.is_a?(Hash)
100
+ attributes = attributes.transform_keys(&:to_sym)
101
+ transformed_hash = {}
102
+ types_mapping.each_pair do |key, type|
103
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
104
+ transformed_hash[key.to_sym] = nil
105
+ elsif type =~ /\AArray<(.*)>/i
106
+ # check to ensure the input is an array given that the attribute
107
+ # is documented as an array but the input is not
108
+ if attributes[attribute_map[key]].is_a?(Array)
109
+ transformed_hash[key.to_sym] = attributes[attribute_map[key]].map { |v|
110
+ _deserialize(::Regexp.last_match(1), v)
111
+ }
112
+ end
113
+ elsif !attributes[attribute_map[key]].nil?
114
+ transformed_hash[key.to_sym] = _deserialize(type, attributes[attribute_map[key]])
115
+ end
116
+ end
117
+
118
+ new(transformed_hash)
119
+ end
120
+
121
+ # Deserializes the data based on type
122
+ # @param string type Data type
123
+ # @param string value Value to be deserialized
124
+ # @return [Object] Deserialized data
125
+ def self._deserialize(type, value)
126
+ case type.to_sym
127
+ when :Time
128
+ Time.parse(value)
129
+ when :Date
130
+ Date.parse(value)
131
+ when :String
132
+ value.to_s
133
+ when :Integer
134
+ value.to_i
135
+ when :Float
136
+ value.to_f
137
+ when :Boolean
138
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
139
+ true
140
+ else
141
+ false
142
+ end
143
+
144
+ when :Object
145
+ # generic object (usually a Hash), return directly
146
+ value
147
+ when /\AArray<(?<inner_type>.+)>\z/
148
+ inner_type = Regexp.last_match[:inner_type]
149
+ value.map { |v| _deserialize(inner_type, v) }
150
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
151
+ k_type = Regexp.last_match[:k_type]
152
+ v_type = Regexp.last_match[:v_type]
153
+ {}.tap do |hash|
154
+ value.each do |k, v|
155
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
156
+ end
157
+ end
158
+ # model
159
+ else
160
+ # models (e.g. Pet) or oneOf
161
+ klass = Algolia::Composition.const_get(type)
162
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass
163
+ .build_from_hash(value)
164
+ end
165
+ end
166
+
167
+ # Returns the string representation of the object
168
+ # @return [String] String presentation of the object
169
+ def to_s
170
+ to_hash.to_s
171
+ end
172
+
173
+ # to_body is an alias to to_hash (backward compatibility)
174
+ # @return [Hash] Returns the object in the form of hash
175
+ def to_body
176
+ to_hash
177
+ end
178
+
179
+ def to_json(*_args)
180
+ to_hash.to_json
181
+ end
182
+
183
+ # Returns the object in the form of hash
184
+ # @return [Hash] Returns the object in the form of hash
185
+ def to_hash
186
+ hash = {}
187
+ self.class.attribute_map.each_pair do |attr, param|
188
+ value = send(attr)
189
+ if value.nil?
190
+ is_nullable = self.class.openapi_nullable.include?(attr)
191
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
192
+ end
193
+
194
+ hash[param] = _to_hash(value)
195
+ end
196
+
197
+ hash
198
+ end
199
+
200
+ # Outputs non-array value in the form of hash
201
+ # For object, use to_hash. Otherwise, just return the value
202
+ # @param [Object] value Any valid value
203
+ # @return [Hash] Returns the value in the form of hash
204
+ def _to_hash(value)
205
+ if value.is_a?(Array)
206
+ value.compact.map { |v| _to_hash(v) }
207
+ elsif value.is_a?(Hash)
208
+ {}.tap do |hash|
209
+ value.each { |k, v| hash[k] = _to_hash(v) }
210
+ end
211
+ elsif value.respond_to?(:to_hash)
212
+ value.to_hash
213
+ else
214
+ value
215
+ end
216
+ end
217
+
218
+ end
219
+
220
+ end
221
+ end