algolia 3.0.0.alpha.17 → 3.0.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile.lock +4 -4
  4. data/lib/algolia/api/abtesting_client.rb +20 -20
  5. data/lib/algolia/api/personalization_client.rb +12 -12
  6. data/lib/algolia/models/abtesting/ab_test.rb +41 -16
  7. data/lib/algolia/models/abtesting/ab_test_configuration.rb +217 -0
  8. data/lib/algolia/models/abtesting/ab_test_response.rb +2 -2
  9. data/lib/algolia/models/abtesting/ab_tests_variant.rb +21 -3
  10. data/lib/algolia/models/abtesting/ab_tests_variant_search_params.rb +21 -3
  11. data/lib/algolia/models/abtesting/add_ab_tests_request.rb +1 -1
  12. data/lib/algolia/models/abtesting/custom_search_params.rb +1 -1
  13. data/lib/algolia/models/abtesting/effect.rb +35 -0
  14. data/lib/algolia/models/abtesting/empty_search.rb +198 -0
  15. data/lib/algolia/models/abtesting/list_ab_tests_response.rb +1 -1
  16. data/lib/algolia/models/abtesting/minimum_detectable_effect.rb +247 -0
  17. data/lib/algolia/models/abtesting/outliers.rb +198 -0
  18. data/lib/algolia/models/abtesting/status.rb +35 -0
  19. data/lib/algolia/models/abtesting/variant.rb +31 -13
  20. data/lib/algolia/models/ingestion/destination_index_name.rb +1 -1
  21. data/lib/algolia/models/ingestion/shopify_input.rb +212 -0
  22. data/lib/algolia/models/ingestion/shopify_market.rb +227 -0
  23. data/lib/algolia/models/ingestion/shopify_metafield.rb +221 -0
  24. data/lib/algolia/models/ingestion/source_input.rb +2 -1
  25. data/lib/algolia/models/ingestion/source_shopify.rb +278 -0
  26. data/lib/algolia/models/ingestion/source_shopify_base.rb +199 -0
  27. data/lib/algolia/models/ingestion/source_update_input.rb +2 -1
  28. data/lib/algolia/models/ingestion/source_update_shopify.rb +258 -0
  29. data/lib/algolia/models/ingestion/task_input.rb +1 -0
  30. data/lib/algolia/models/insights/added_to_cart_object_ids.rb +1 -1
  31. data/lib/algolia/models/insights/added_to_cart_object_ids_after_search.rb +1 -1
  32. data/lib/algolia/models/insights/clicked_filters.rb +1 -1
  33. data/lib/algolia/models/insights/clicked_object_ids.rb +1 -1
  34. data/lib/algolia/models/insights/clicked_object_ids_after_search.rb +1 -1
  35. data/lib/algolia/models/insights/converted_filters.rb +1 -1
  36. data/lib/algolia/models/insights/converted_object_ids.rb +1 -1
  37. data/lib/algolia/models/insights/converted_object_ids_after_search.rb +1 -1
  38. data/lib/algolia/models/insights/purchased_object_ids.rb +1 -1
  39. data/lib/algolia/models/insights/purchased_object_ids_after_search.rb +1 -1
  40. data/lib/algolia/models/insights/viewed_filters.rb +1 -1
  41. data/lib/algolia/models/insights/viewed_object_ids.rb +1 -1
  42. data/lib/algolia/models/personalization/delete_user_profile_response.rb +2 -2
  43. data/lib/algolia/models/personalization/event_scoring.rb +25 -4
  44. data/lib/algolia/models/personalization/event_type.rb +34 -0
  45. data/lib/algolia/models/personalization/facet_scoring.rb +2 -2
  46. data/lib/algolia/models/personalization/get_user_token_response.rb +3 -3
  47. data/lib/algolia/models/personalization/personalization_strategy_params.rb +21 -3
  48. data/lib/algolia/models/query-suggestions/get_config_status200_response.rb +1 -1
  49. data/lib/algolia/models/query-suggestions/query_suggestions_configuration_response.rb +1 -1
  50. data/lib/algolia/models/query-suggestions/query_suggestions_configuration_with_index.rb +1 -1
  51. data/lib/algolia/models/query-suggestions/source_index.rb +1 -1
  52. data/lib/algolia/models/recommend/base_recommend_request.rb +1 -1
  53. data/lib/algolia/models/recommend/base_search_params.rb +3 -3
  54. data/lib/algolia/models/recommend/base_search_params_without_query.rb +3 -3
  55. data/lib/algolia/models/recommend/bought_together_query.rb +1 -1
  56. data/lib/algolia/models/recommend/fallback_params.rb +9 -9
  57. data/lib/algolia/models/recommend/index_settings_as_search_params.rb +6 -6
  58. data/lib/algolia/models/recommend/looking_similar_query.rb +1 -1
  59. data/lib/algolia/models/recommend/re_ranking_apply_filter.rb +1 -1
  60. data/lib/algolia/models/recommend/recommended_for_you_query.rb +1 -1
  61. data/lib/algolia/models/recommend/related_query.rb +1 -1
  62. data/lib/algolia/models/recommend/search_params.rb +9 -9
  63. data/lib/algolia/models/recommend/search_params_object.rb +10 -9
  64. data/lib/algolia/models/recommend/trending_facets_query.rb +1 -1
  65. data/lib/algolia/models/recommend/trending_items_query.rb +1 -1
  66. data/lib/algolia/models/search/base_index_settings.rb +9 -9
  67. data/lib/algolia/models/search/base_search_params.rb +3 -3
  68. data/lib/algolia/models/search/base_search_params_without_query.rb +3 -3
  69. data/lib/algolia/models/search/browse_params_object.rb +9 -9
  70. data/lib/algolia/models/search/consequence_params.rb +9 -9
  71. data/lib/algolia/models/search/delete_by_params.rb +1 -1
  72. data/lib/algolia/models/search/index_settings.rb +15 -15
  73. data/lib/algolia/models/search/index_settings_as_search_params.rb +6 -6
  74. data/lib/algolia/models/search/multiple_batch_request.rb +1 -1
  75. data/lib/algolia/models/search/operation_index_params.rb +1 -1
  76. data/lib/algolia/models/search/re_ranking_apply_filter.rb +1 -1
  77. data/lib/algolia/models/search/search_for_facets.rb +10 -10
  78. data/lib/algolia/models/search/search_for_facets_options.rb +1 -1
  79. data/lib/algolia/models/search/search_for_hits.rb +10 -10
  80. data/lib/algolia/models/search/search_for_hits_options.rb +1 -1
  81. data/lib/algolia/models/search/search_params_object.rb +10 -9
  82. data/lib/algolia/version.rb +1 -1
  83. metadata +15 -2
@@ -0,0 +1,258 @@
1
+ # 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.
2
+
3
+ require 'date'
4
+ require 'time'
5
+
6
+ module Algolia
7
+ module Ingestion
8
+ class SourceUpdateShopify
9
+ # Whether to index collection IDs. If your store has `has_collection_search_page` set to true, collection IDs will be indexed even if `collectionIDIndexing` is false.
10
+ attr_accessor :collection_id_indexing
11
+
12
+ # Whether to increase the number of indexed collections per product. If true, Algolia indexes 200 collections per product. If false, 100 collections per product are indexed.
13
+ attr_accessor :increase_product_collection_limit
14
+
15
+ # Whether to set the default price ratio to 1 if no sale price is present. The price ratio is determined by the ratio: `sale_price` / `regular_price`. If no sale price is present, the price ratio would be 0. If `defaultPriceRatioAsOne` is true, the price ratio is indexed as 1 instead.
16
+ attr_accessor :default_price_ratio_as_one
17
+
18
+ # Whether to exclude out-of-stock variants when determining the `max_variant_price` and `min_variant_price` attributes.
19
+ attr_accessor :exclude_oos_variants_for_price_at_trs
20
+
21
+ # Whether to include an inventory with every variant for every product record.
22
+ attr_accessor :include_variants_inventory
23
+
24
+ # Whether to include collection IDs and handles in the product records.
25
+ attr_accessor :has_collection_search_page
26
+
27
+ # Whether to convert tags on products to named tags. To learn more, see [Named tags](https://www.algolia.com/doc/integration/shopify/sending-and-managing-data/named-tags).
28
+ attr_accessor :product_named_tags
29
+
30
+ # Attribute mapping from ruby-style variable name to JSON key.
31
+ def self.attribute_map
32
+ {
33
+ :collection_id_indexing => :collectionIDIndexing,
34
+ :increase_product_collection_limit => :increaseProductCollectionLimit,
35
+ :default_price_ratio_as_one => :defaultPriceRatioAsOne,
36
+ :exclude_oos_variants_for_price_at_trs => :excludeOOSVariantsForPriceAtTRS,
37
+ :include_variants_inventory => :includeVariantsInventory,
38
+ :has_collection_search_page => :hasCollectionSearchPage,
39
+ :product_named_tags => :productNamedTags
40
+ }
41
+ end
42
+
43
+ # Returns all the JSON keys this model knows about
44
+ def self.acceptable_attributes
45
+ attribute_map.values
46
+ end
47
+
48
+ # Attribute type mapping.
49
+ def self.types_mapping
50
+ {
51
+ :collection_id_indexing => :Boolean,
52
+ :increase_product_collection_limit => :Boolean,
53
+ :default_price_ratio_as_one => :Boolean,
54
+ :exclude_oos_variants_for_price_at_trs => :Boolean,
55
+ :include_variants_inventory => :Boolean,
56
+ :has_collection_search_page => :Boolean,
57
+ :product_named_tags => :Boolean
58
+ }
59
+ end
60
+
61
+ # List of attributes with nullable: true
62
+ def self.openapi_nullable
63
+ Set.new([])
64
+ end
65
+
66
+ # Initializes the object
67
+ # @param [Hash] attributes Model attributes in the form of hash
68
+ def initialize(attributes = {})
69
+ unless attributes.is_a?(Hash)
70
+ raise ArgumentError, "The input argument (attributes) must be a hash in `Algolia::SourceUpdateShopify` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ attributes = attributes.each_with_object({}) do |(k, v), h|
75
+ unless self.class.attribute_map.key?(k.to_sym)
76
+ raise ArgumentError,
77
+ "`#{k}` is not a valid attribute in `Algolia::SourceUpdateShopify`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
78
+ end
79
+
80
+ h[k.to_sym] = v
81
+ end
82
+
83
+ if attributes.key?(:collection_id_indexing)
84
+ self.collection_id_indexing = attributes[:collection_id_indexing]
85
+ end
86
+
87
+ if attributes.key?(:increase_product_collection_limit)
88
+ self.increase_product_collection_limit = attributes[:increase_product_collection_limit]
89
+ end
90
+
91
+ if attributes.key?(:default_price_ratio_as_one)
92
+ self.default_price_ratio_as_one = attributes[:default_price_ratio_as_one]
93
+ end
94
+
95
+ if attributes.key?(:exclude_oos_variants_for_price_at_trs)
96
+ self.exclude_oos_variants_for_price_at_trs = attributes[:exclude_oos_variants_for_price_at_trs]
97
+ end
98
+
99
+ if attributes.key?(:include_variants_inventory)
100
+ self.include_variants_inventory = attributes[:include_variants_inventory]
101
+ end
102
+
103
+ if attributes.key?(:has_collection_search_page)
104
+ self.has_collection_search_page = attributes[:has_collection_search_page]
105
+ end
106
+
107
+ if attributes.key?(:product_named_tags)
108
+ self.product_named_tags = attributes[:product_named_tags]
109
+ end
110
+ end
111
+
112
+ # Checks equality by comparing each attribute.
113
+ # @param [Object] Object to be compared
114
+ def ==(other)
115
+ return true if equal?(other)
116
+
117
+ self.class == other.class &&
118
+ collection_id_indexing == other.collection_id_indexing &&
119
+ increase_product_collection_limit == other.increase_product_collection_limit &&
120
+ default_price_ratio_as_one == other.default_price_ratio_as_one &&
121
+ exclude_oos_variants_for_price_at_trs == other.exclude_oos_variants_for_price_at_trs &&
122
+ include_variants_inventory == other.include_variants_inventory &&
123
+ has_collection_search_page == other.has_collection_search_page &&
124
+ product_named_tags == other.product_named_tags
125
+ end
126
+
127
+ # @see the `==` method
128
+ # @param [Object] Object to be compared
129
+ def eql?(other)
130
+ self == other
131
+ end
132
+
133
+ # Calculates hash code according to all attributes.
134
+ # @return [Integer] Hash code
135
+ def hash
136
+ [collection_id_indexing, increase_product_collection_limit, default_price_ratio_as_one, exclude_oos_variants_for_price_at_trs, include_variants_inventory,
137
+ has_collection_search_page, product_named_tags].hash
138
+ end
139
+
140
+ # Builds the object from hash
141
+ # @param [Hash] attributes Model attributes in the form of hash
142
+ # @return [Object] Returns the model itself
143
+ def self.build_from_hash(attributes)
144
+ return nil unless attributes.is_a?(Hash)
145
+
146
+ attributes = attributes.transform_keys(&:to_sym)
147
+ transformed_hash = {}
148
+ types_mapping.each_pair do |key, type|
149
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
150
+ transformed_hash[key.to_sym] = nil
151
+ elsif type =~ /\AArray<(.*)>/i
152
+ # check to ensure the input is an array given that the attribute
153
+ # is documented as an array but the input is not
154
+ if attributes[attribute_map[key]].is_a?(Array)
155
+ transformed_hash[key.to_sym] = attributes[attribute_map[key]].map { |v| _deserialize(::Regexp.last_match(1), v) }
156
+ end
157
+ elsif !attributes[attribute_map[key]].nil?
158
+ transformed_hash[key.to_sym] = _deserialize(type, attributes[attribute_map[key]])
159
+ end
160
+ end
161
+ new(transformed_hash)
162
+ end
163
+
164
+ # Deserializes the data based on type
165
+ # @param string type Data type
166
+ # @param string value Value to be deserialized
167
+ # @return [Object] Deserialized data
168
+ def self._deserialize(type, value)
169
+ case type.to_sym
170
+ when :Time
171
+ Time.parse(value)
172
+ when :Date
173
+ Date.parse(value)
174
+ when :String
175
+ value.to_s
176
+ when :Integer
177
+ value.to_i
178
+ when :Float
179
+ value.to_f
180
+ when :Boolean
181
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
182
+ true
183
+ else
184
+ false
185
+ end
186
+ when :Object
187
+ # generic object (usually a Hash), return directly
188
+ value
189
+ when /\AArray<(?<inner_type>.+)>\z/
190
+ inner_type = Regexp.last_match[:inner_type]
191
+ value.map { |v| _deserialize(inner_type, v) }
192
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
193
+ k_type = Regexp.last_match[:k_type]
194
+ v_type = Regexp.last_match[:v_type]
195
+ {}.tap do |hash|
196
+ value.each do |k, v|
197
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
198
+ end
199
+ end
200
+ else # model
201
+ # models (e.g. Pet) or oneOf
202
+ klass = Algolia::Ingestion.const_get(type)
203
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
204
+ end
205
+ end
206
+
207
+ # Returns the string representation of the object
208
+ # @return [String] String presentation of the object
209
+ def to_s
210
+ to_hash.to_s
211
+ end
212
+
213
+ # to_body is an alias to to_hash (backward compatibility)
214
+ # @return [Hash] Returns the object in the form of hash
215
+ def to_body
216
+ to_hash
217
+ end
218
+
219
+ def to_json(*_args)
220
+ to_hash.to_json
221
+ end
222
+
223
+ # Returns the object in the form of hash
224
+ # @return [Hash] Returns the object in the form of hash
225
+ def to_hash
226
+ hash = {}
227
+ self.class.attribute_map.each_pair do |attr, param|
228
+ value = send(attr)
229
+ if value.nil?
230
+ is_nullable = self.class.openapi_nullable.include?(attr)
231
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
232
+ end
233
+
234
+ hash[param] = _to_hash(value)
235
+ end
236
+ hash
237
+ end
238
+
239
+ # Outputs non-array value in the form of hash
240
+ # For object, use to_hash. Otherwise, just return the value
241
+ # @param [Object] value Any valid value
242
+ # @return [Hash] Returns the value in the form of hash
243
+ def _to_hash(value)
244
+ if value.is_a?(Array)
245
+ value.compact.map { |v| _to_hash(v) }
246
+ elsif value.is_a?(Hash)
247
+ {}.tap do |hash|
248
+ value.each { |k, v| hash[k] = _to_hash(v) }
249
+ end
250
+ elsif value.respond_to? :to_hash
251
+ value.to_hash
252
+ else
253
+ value
254
+ end
255
+ end
256
+ end
257
+ end
258
+ end
@@ -13,6 +13,7 @@ module Algolia
13
13
  [
14
14
  :OnDemandDateUtilsInput,
15
15
  :ScheduleDateUtilsInput,
16
+ :ShopifyInput,
16
17
  :StreamingUtilsInput
17
18
  ]
18
19
  end
@@ -14,7 +14,7 @@ module Algolia
14
14
 
15
15
  attr_accessor :event_subtype
16
16
 
17
- # Index name to which the event's items belong.
17
+ # Index name (case-sensitive) to which the event's items belong.
18
18
  attr_accessor :index
19
19
 
20
20
  # Object IDs of the records that are part of the event.
@@ -14,7 +14,7 @@ module Algolia
14
14
 
15
15
  attr_accessor :event_subtype
16
16
 
17
- # Index name to which the event's items belong.
17
+ # Index name (case-sensitive) to which the event's items belong.
18
18
  attr_accessor :index
19
19
 
20
20
  # Unique identifier for a search query. The query ID is required for events related to search or browse requests. If you add `clickAnalytics: true` as a search request parameter, the query ID is included in the API response.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Applied facet filters. Facet filters are `facet:value` pairs. Facet values must be URL-encoded, such as, `discount:10%25`.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Object IDs of the records that are part of the event.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Object IDs of the records that are part of the event.
@@ -11,7 +11,7 @@ module Algolia
11
11
 
12
12
  attr_accessor :event_type
13
13
 
14
- # Index name to which the event's items belong.
14
+ # Index name (case-sensitive) to which the event's items belong.
15
15
  attr_accessor :index
16
16
 
17
17
  # Applied facet filters. Facet filters are `facet:value` pairs. Facet values must be URL-encoded, such as, `discount:10%25`.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Object IDs of the records that are part of the event.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Object IDs of the records that are part of the event.
@@ -14,7 +14,7 @@ module Algolia
14
14
 
15
15
  attr_accessor :event_subtype
16
16
 
17
- # Index name to which the event's items belong.
17
+ # Index name (case-sensitive) to which the event's items belong.
18
18
  attr_accessor :index
19
19
 
20
20
  # Object IDs of the records that are part of the event.
@@ -14,7 +14,7 @@ module Algolia
14
14
 
15
15
  attr_accessor :event_subtype
16
16
 
17
- # Index name to which the event's items belong.
17
+ # Index name (case-sensitive) to which the event's items belong.
18
18
  attr_accessor :index
19
19
 
20
20
  # Object IDs of the records that are part of the event.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Applied facet filters. Facet filters are `facet:value` pairs. Facet values must be URL-encoded, such as, `discount:10%25`.
@@ -12,7 +12,7 @@ module Algolia
12
12
 
13
13
  attr_accessor :event_type
14
14
 
15
- # Index name to which the event's items belong.
15
+ # Index name (case-sensitive) to which the event's items belong.
16
16
  attr_accessor :index
17
17
 
18
18
  # Object IDs of the records that are part of the event.
@@ -6,10 +6,10 @@ require 'time'
6
6
  module Algolia
7
7
  module Personalization
8
8
  class DeleteUserProfileResponse
9
- # userToken representing the user for which to fetch the Personalization profile.
9
+ # Unique pseudonymous or anonymous user identifier. This helps with analytics and click and conversion events. For more information, see [user token](https://www.algolia.com/doc/guides/sending-events/concepts/usertoken/).
10
10
  attr_accessor :user_token
11
11
 
12
- # A date until which the data can safely be considered as deleted for the given user. Any data received after the `deletedUntil` date will start building a new user profile.
12
+ # Date and time when the user profile can be safely considered to be deleted. Any events received after the `deletedUntil` date start a new user profile.
13
13
  attr_accessor :deleted_until
14
14
 
15
15
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -6,15 +6,36 @@ require 'time'
6
6
  module Algolia
7
7
  module Personalization
8
8
  class EventScoring
9
- # The score for the event.
9
+ # Event score.
10
10
  attr_accessor :score
11
11
 
12
- # The name of the event.
12
+ # Event name.
13
13
  attr_accessor :event_name
14
14
 
15
- # The type of the event.
16
15
  attr_accessor :event_type
17
16
 
17
+ class EnumAttributeValidator
18
+ attr_reader :datatype
19
+ attr_reader :allowable_values
20
+
21
+ def initialize(datatype, allowable_values)
22
+ @allowable_values = allowable_values.map do |value|
23
+ case datatype.to_s
24
+ when /Integer/i
25
+ value.to_i
26
+ when /Float/i
27
+ value.to_f
28
+ else
29
+ value
30
+ end
31
+ end
32
+ end
33
+
34
+ def valid?(value)
35
+ !value || allowable_values.include?(value)
36
+ end
37
+ end
38
+
18
39
  # Attribute mapping from ruby-style variable name to JSON key.
19
40
  def self.attribute_map
20
41
  {
@@ -34,7 +55,7 @@ module Algolia
34
55
  {
35
56
  :score => :Integer,
36
57
  :event_name => :String,
37
- :event_type => :String
58
+ :event_type => :EventType
38
59
  }
39
60
  end
40
61
 
@@ -0,0 +1,34 @@
1
+ # 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.
2
+
3
+ require 'date'
4
+ require 'time'
5
+
6
+ module Algolia
7
+ module Personalization
8
+ class EventType
9
+ CLICK = "click".freeze
10
+ CONVERSION = "conversion".freeze
11
+ VIEW = "view".freeze
12
+
13
+ def self.all_vars
14
+ @all_vars ||= [CLICK, CONVERSION, VIEW].freeze
15
+ end
16
+
17
+ # Builds the enum from string
18
+ # @param [String] The enum value in the form of the string
19
+ # @return [String] The enum value
20
+ def self.build_from_hash(value)
21
+ new.build_from_hash(value)
22
+ end
23
+
24
+ # Builds the enum from string
25
+ # @param [String] The enum value in the form of the string
26
+ # @return [String] The enum value
27
+ def build_from_hash(value)
28
+ return value if EventType.all_vars.include?(value)
29
+
30
+ raise "Invalid ENUM value #{value} for class #EventType"
31
+ end
32
+ end
33
+ end
34
+ end
@@ -6,10 +6,10 @@ require 'time'
6
6
  module Algolia
7
7
  module Personalization
8
8
  class FacetScoring
9
- # The score for the event.
9
+ # Event score.
10
10
  attr_accessor :score
11
11
 
12
- # The name of the facet.
12
+ # Facet attribute name.
13
13
  attr_accessor :facet_name
14
14
 
15
15
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -6,13 +6,13 @@ require 'time'
6
6
  module Algolia
7
7
  module Personalization
8
8
  class GetUserTokenResponse
9
- # userToken representing the user for which to fetch the Personalization profile.
9
+ # Unique pseudonymous or anonymous user identifier. This helps with analytics and click and conversion events. For more information, see [user token](https://www.algolia.com/doc/guides/sending-events/concepts/usertoken/).
10
10
  attr_accessor :user_token
11
11
 
12
- # Date of last event update. (ISO-8601 format).
12
+ # Date and time of the last event from this user, in RFC 3339 format.
13
13
  attr_accessor :last_event_at
14
14
 
15
- # The userToken scores.
15
+ # Scores for different facet values. Scores represent the user affinity for a user profile towards specific facet values, given the personalization strategy and past events.
16
16
  attr_accessor :scores
17
17
 
18
18
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -6,13 +6,13 @@ require 'time'
6
6
  module Algolia
7
7
  module Personalization
8
8
  class PersonalizationStrategyParams
9
- # Scores associated with the events.
9
+ # Scores associated with each event. The higher the scores, the higher the impact of those events on the personalization of search results.
10
10
  attr_accessor :event_scoring
11
11
 
12
- # Scores associated with the facets.
12
+ # Scores associated with each facet. The higher the scores, the higher the impact of those events on the personalization of search results.
13
13
  attr_accessor :facet_scoring
14
14
 
15
- # The impact that personalization has on search results: a number between 0 (personalization disabled) and 100 (personalization fully enabled).
15
+ # Impact of personalization on the search results. If set to 0, personalization has no impact on the search results.
16
16
  attr_accessor :personalization_impact
17
17
 
18
18
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -83,6 +83,24 @@ module Algolia
83
83
  end
84
84
  end
85
85
 
86
+ # Custom attribute writer method with validation
87
+ # @param [Object] personalization_impact Value to be assigned
88
+ def personalization_impact=(personalization_impact)
89
+ if personalization_impact.nil?
90
+ raise ArgumentError, 'personalization_impact cannot be nil'
91
+ end
92
+
93
+ if personalization_impact > 100
94
+ raise ArgumentError, 'invalid value for "personalization_impact", must be smaller than or equal to 100.'
95
+ end
96
+
97
+ if personalization_impact < 0
98
+ raise ArgumentError, 'invalid value for "personalization_impact", must be greater than or equal to 0.'
99
+ end
100
+
101
+ @personalization_impact = personalization_impact
102
+ end
103
+
86
104
  # Checks equality by comparing each attribute.
87
105
  # @param [Object] Object to be compared
88
106
  def ==(other)
@@ -6,7 +6,7 @@ require 'time'
6
6
  module Algolia
7
7
  module QuerySuggestions
8
8
  class GetConfigStatus200Response
9
- # Name of the Query Suggestions index.
9
+ # Name of the Query Suggestions index (case-sensitive).
10
10
  attr_accessor :index_name
11
11
 
12
12
  # Whether the creation or update of the Query Suggestions index is in progress.
@@ -10,7 +10,7 @@ module Algolia
10
10
  # Algolia application ID to which this Query Suggestions configuration belongs.
11
11
  attr_accessor :app_id
12
12
 
13
- # Name of the Query Suggestions index.
13
+ # Name of the Query Suggestions index (case-sensitive).
14
14
  attr_accessor :index_name
15
15
 
16
16
  # Algolia indices from which to get the popular searches for query suggestions.
@@ -20,7 +20,7 @@ module Algolia
20
20
  # Whether to include suggestions with special characters.
21
21
  attr_accessor :allow_special_characters
22
22
 
23
- # Name of the Query Suggestions index.
23
+ # Name of the Query Suggestions index (case-sensitive).
24
24
  attr_accessor :index_name
25
25
 
26
26
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -7,7 +7,7 @@ module Algolia
7
7
  module QuerySuggestions
8
8
  # Configuration of an Algolia index for Query Suggestions.
9
9
  class SourceIndex
10
- # Name of the Algolia index to use as source for query suggestions.
10
+ # Name of the Algolia index (case-sensitive) to use as source for query suggestions.
11
11
  attr_accessor :index_name
12
12
 
13
13
  # If true, Query Suggestions uses all replica indices to find popular searches. If false, only the primary index is used.
@@ -6,7 +6,7 @@ require 'time'
6
6
  module Algolia
7
7
  module Recommend
8
8
  class BaseRecommendRequest
9
- # Index name.
9
+ # Index name (case-sensitive).
10
10
  attr_accessor :index_name
11
11
 
12
12
  # Minimum score a recommendation must have to be included in the response.
@@ -26,7 +26,7 @@ module Algolia
26
26
  # Whether to sum all filter scores. If true, all filter scores are summed. Otherwise, the maximum filter score is kept. For more information, see [filter scores](https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/in-depth/filter-scoring/#accumulating-scores-with-sumorfiltersscores).
27
27
  attr_accessor :sum_or_filters_scores
28
28
 
29
- # Restricts a search to a subset of your searchable attributes.
29
+ # Restricts a search to a subset of your searchable attributes. Attribute names are case-sensitive.
30
30
  attr_accessor :restrict_searchable_attributes
31
31
 
32
32
  # Facets for which to retrieve facet values that match the search criteria and the number of matching facet values. To retrieve all facets, use the wildcard character `*`. For more information, see [facets](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#contextual-facet-values-and-counts).
@@ -60,7 +60,7 @@ module Algolia
60
60
  # Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas).
61
61
  attr_accessor :inside_bounding_box
62
62
 
63
- # Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored, if you also specify `insideBoundingBox`.
63
+ # Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`.
64
64
  attr_accessor :inside_polygon
65
65
 
66
66
  # ISO language codes that adjust settings that are useful for processing natural language queries (as opposed to keyword searches): - Sets `removeStopWords` and `ignorePlurals` to the list of provided languages. - Sets `removeWordsIfNoResults` to `allOptional`. - Adds a `natural_language` attribute to `ruleContexts` and `analyticsTags`.
@@ -163,7 +163,7 @@ module Algolia
163
163
  :minimum_around_radius => :Integer,
164
164
  :inside_bounding_box => :'Array<Array<Float>>',
165
165
  :inside_polygon => :'Array<Array<Float>>',
166
- :natural_languages => :'Array<String>',
166
+ :natural_languages => :'Array<SupportedLanguage>',
167
167
  :rule_contexts => :'Array<String>',
168
168
  :personalization_impact => :Integer,
169
169
  :user_token => :String,