algolia 3.47.0 → 3.49.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ecdb659fe529673e571a60a4bbe13dc73c9c6fbe53c950a5c44802f4add29d9
4
- data.tar.gz: af9ded4069bb54fa19eb779c543f50bb9d8a42a93bcec851503d9c3bafa93909
3
+ metadata.gz: 8d89992331694b650c757bd4300a1c50a90456fc1c18a0a55ca9825673ceff8b
4
+ data.tar.gz: 417b1fa6e11081c252b36df230b726c6a54a8265c74e93e346d72fcdd91626d8
5
5
  SHA512:
6
- metadata.gz: 7cbe0d52f1d866d286860249008f8ecfadad93149f241f3e199ea25d2636330e9ce84682e0f181d7036b7f55d28af1cdd5f6c937ce2bbd9ac8afdddc98ae5655
7
- data.tar.gz: c2aa1c1e557a956ec9e9e1a5bec99d47999bd0c1738c317caf58edd653431cbbca0ae7c4443938c43c131b9c9e2fe16d4d0e78b5306231125ec31b276d1ddab3
6
+ metadata.gz: 64c7feb78aa763216cbe7ba3a7fbc69a6bafb69cbf43605ab5cc1a20df73c3323399e0785088e28019328e2ac05ff15117ba6134e1960c97972b00105eec45f5
7
+ data.tar.gz: ab26fc8819a6a604bd830175411b6df40dc82ef3c331c85e42a0ad669236890b333bbe0d85dc013d1664f29012c916550c83834d3250262b8f813cddb5250b56
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [3.49.0](https://github.com/algolia/algoliasearch-client-ruby/compare/3.48.0...3.49.0)
2
+
3
+ - [e6933da012](https://github.com/algolia/api-clients-automation/commit/e6933da012) fix(specs): clarify maxHitsPerQuery is a per-page limit ([#7210](https://github.com/algolia/api-clients-automation/pull/7210)) by [@kai687](https://github.com/kai687/)
4
+ - [0a3cbbb29b](https://github.com/algolia/api-clients-automation/commit/0a3cbbb29b) feat(specs): add per-feed params to Composition run request ([#7199](https://github.com/algolia/api-clients-automation/pull/7199)) by [@ben-kalmus](https://github.com/ben-kalmus/)
5
+ - [8456d9eb14](https://github.com/algolia/api-clients-automation/commit/8456d9eb14) feat(specs): support `algoliaDefined` ordering in external sources ([#7212](https://github.com/algolia/api-clients-automation/pull/7212)) by [@aiordache](https://github.com/aiordache/)
6
+ - [575c3ab5c6](https://github.com/algolia/api-clients-automation/commit/575c3ab5c6) fix(ci): move macOS jobs off the retired macos-14 runner label ([#7224](https://github.com/algolia/api-clients-automation/pull/7224)) by [@Fluf22](https://github.com/Fluf22/)
7
+ - [3e85edd42f](https://github.com/algolia/api-clients-automation/commit/3e85edd42f) docs(specs): describe the analytics no click rate per query ([#7225](https://github.com/algolia/api-clients-automation/pull/7225)) by [@leonardogavaudan](https://github.com/leonardogavaudan/)
8
+
9
+ ## [3.48.0](https://github.com/algolia/algoliasearch-client-ruby/compare/3.47.0...3.48.0)
10
+
11
+ - [e6933da012](https://github.com/algolia/api-clients-automation/commit/e6933da012) fix(specs): clarify maxHitsPerQuery is a per-page limit ([#7210](https://github.com/algolia/api-clients-automation/pull/7210)) by [@kai687](https://github.com/kai687/)
12
+ - [0a3cbbb29b](https://github.com/algolia/api-clients-automation/commit/0a3cbbb29b) feat(specs): add per-feed params to Composition run request ([#7199](https://github.com/algolia/api-clients-automation/pull/7199)) by [@ben-kalmus](https://github.com/ben-kalmus/)
13
+ - [8456d9eb14](https://github.com/algolia/api-clients-automation/commit/8456d9eb14) feat(specs): support `algoliaDefined` ordering in external sources ([#7212](https://github.com/algolia/api-clients-automation/pull/7212)) by [@aiordache](https://github.com/aiordache/)
14
+
1
15
  ## [3.47.0](https://github.com/algolia/algoliasearch-client-ruby/compare/3.46.1...3.47.0)
2
16
 
3
17
  - [e6d5471f15](https://github.com/algolia/api-clients-automation/commit/e6d5471f15) fix(scripts): avoid swift CTS deadlock when running in docker ([#7146](https://github.com/algolia/api-clients-automation/pull/7146)) by [@Fluf22](https://github.com/Fluf22/)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- algolia (3.47.0)
4
+ algolia (3.49.0)
5
5
  base64 (>= 0.2.0, < 1)
6
6
  faraday (>= 1.0.1, < 3.0)
7
7
  faraday-net_http_persistent (>= 0.15, < 3)
@@ -573,7 +573,7 @@ module Algolia
573
573
  )
574
574
  end
575
575
 
576
- # Retrieves the fraction of searches that didn't lead to any click within a time range, including a daily breakdown. It also returns the number of tracked searches and tracked searches without clicks. By default, the analyzed period includes the last eight days including the current day.
576
+ # Retrieves the fraction of searches whose query didn't lead to any click within a time range, including a daily breakdown. Only tracked searches with at least one result are counted. A search counts as a search without clicks only when no search for the same query got a click in the time range, so the rate for a whole time range is usually lower than its daily rates. It also returns the number of these searches and of searches without clicks. By default, the analyzed period includes the last eight days including the current day.
577
577
  #
578
578
  # Required API Key ACLs:
579
579
  # - analytics
@@ -616,7 +616,7 @@ module Algolia
616
616
  @api_client.call_api(:GET, path, new_options)
617
617
  end
618
618
 
619
- # Retrieves the fraction of searches that didn't lead to any click within a time range, including a daily breakdown. It also returns the number of tracked searches and tracked searches without clicks. By default, the analyzed period includes the last eight days including the current day.
619
+ # Retrieves the fraction of searches whose query didn't lead to any click within a time range, including a daily breakdown. Only tracked searches with at least one result are counted. A search counts as a search without clicks only when no search for the same query got a click in the time range, so the rate for a whole time range is usually lower than its daily rates. It also returns the number of these searches and of searches without clicks. By default, the analyzed period includes the last eight days including the current day.
620
620
  #
621
621
  # Required API Key ACLs:
622
622
  # - analytics
@@ -1024,7 +1024,7 @@ module Algolia
1024
1024
  )
1025
1025
  end
1026
1026
 
1027
- # Updates the \"sortingStrategy\" field of an existing composition. This endpoint lets you create a new sorting strategy mapping or replace the configured one. The provided sorting indices must be associated indices or replicas of the main targeted index. This endpoint can't validate whether the sort index is related to the composition's main index. Validation fails at runtime if the index you updated isn't related. The update is applied to the specified composition within the current Algolia application and returns a taskID that can be used to track the operation’s completion.
1027
+ # Updates the \"sortingStrategy\" field of an existing composition. This endpoint lets you create a new sorting strategy mapping or replace the configured one. This endpoint only validates that the sorting indices exist. At runtime, the API ignores a sorting index that is unrelated to the targeted indices. The response reports it in the `errors` field. The update is applied to the specified composition within the current Algolia application and returns a taskID that can be used to track the operation’s completion.
1028
1028
  #
1029
1029
  # Required API Key ACLs:
1030
1030
  # - editSettings
@@ -1074,7 +1074,7 @@ module Algolia
1074
1074
  @api_client.call_api(:POST, path, new_options)
1075
1075
  end
1076
1076
 
1077
- # Updates the \"sortingStrategy\" field of an existing composition. This endpoint lets you create a new sorting strategy mapping or replace the configured one. The provided sorting indices must be associated indices or replicas of the main targeted index. This endpoint can't validate whether the sort index is related to the composition's main index. Validation fails at runtime if the index you updated isn't related. The update is applied to the specified composition within the current Algolia application and returns a taskID that can be used to track the operation’s completion.
1077
+ # Updates the \"sortingStrategy\" field of an existing composition. This endpoint lets you create a new sorting strategy mapping or replace the configured one. This endpoint only validates that the sorting indices exist. At runtime, the API ignores a sorting index that is unrelated to the targeted indices. The response reports it in the `errors` field. The update is applied to the specified composition within the current Algolia application and returns a taskID that can be used to track the operation’s completion.
1078
1078
  #
1079
1079
  # Required API Key ACLs:
1080
1080
  # - editSettings
@@ -8,13 +8,13 @@ require "time"
8
8
  module Algolia
9
9
  module Analytics
10
10
  class DailyNoClickRates
11
- # No click rate: calculated as the number of tracked searches without clicks divided by the number of tracked searches.
11
+ # No click rate: calculated as the number of tracked searches with results whose query didn't get any click in the time range, divided by the number of tracked searches with results.
12
12
  attr_accessor :rate
13
13
 
14
14
  # Number of tracked searches. Tracked searches are search requests where the `clickAnalytics` parameter is true.
15
15
  attr_accessor :count
16
16
 
17
- # Number of times this search was returned as a result without any click.
17
+ # Number of tracked searches with results whose query didn't get any click in the time range.
18
18
  attr_accessor :no_click_count
19
19
 
20
20
  # Date in the format YYYY-MM-DD.
@@ -8,13 +8,13 @@ require "time"
8
8
  module Algolia
9
9
  module Analytics
10
10
  class GetNoClickRateResponse
11
- # No click rate: calculated as the number of tracked searches without clicks divided by the number of tracked searches.
11
+ # No click rate: calculated as the number of tracked searches with results whose query didn't get any click in the time range, divided by the number of tracked searches with results.
12
12
  attr_accessor :rate
13
13
 
14
14
  # Number of tracked searches. Tracked searches are search requests where the `clickAnalytics` parameter is true.
15
15
  attr_accessor :count
16
16
 
17
- # Number of times this search was returned as a result without any click.
17
+ # Number of tracked searches with results whose query didn't get any click in the time range.
18
18
  attr_accessor :no_click_count
19
19
 
20
20
  # Daily no click rates.
@@ -19,7 +19,7 @@ module Algolia
19
19
 
20
20
  attr_accessor :behavior
21
21
 
22
- # A mapping of sorting labels to the indices (or replicas) that implement those sorting rules. The sorting indices MUST be related to the associated main targeted index in the composition. Each key is the label your frontend sends at runtime (for example, \"Price (asc)\"), and each value is the name of the index that should be queried when that label is selected. When a request includes a \"sortBy\" parameter, the platform looks up the corresponding index in this mapping and uses it to execute the query. The main targeted index is replaced with the sorting strategy index it is mapped to. Up to 20 sorting strategies can be defined.
22
+ # A mapping of sorting labels to the indices (or replicas) that implement those sorting rules. When the composition is run, the API ignores a sorting index that is unrelated to the targeted indices. The response reports it in the `errors` field. Each key is the label your frontend sends at runtime (for example, \"Price (asc)\"), and each value is the name of the index that should be queried when that label is selected. When a request includes a \"sortBy\" parameter, the platform looks up the corresponding index in this mapping and uses it to execute the query. The main targeted index is replaced with the sorting strategy index it is mapped to. Up to 20 sorting strategies can be defined.
23
23
  attr_accessor :sorting_strategy
24
24
 
25
25
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -8,11 +8,12 @@ require "time"
8
8
  module Algolia
9
9
  module Composition
10
10
  class ExternalOrdering
11
+ ALGOLIA_DEFINED = "algoliaDefined".freeze
11
12
  DEFAULT = "default".freeze
12
13
  USER_DEFINED = "userDefined".freeze
13
14
 
14
15
  def self.all_vars
15
- @all_vars ||= [DEFAULT, USER_DEFINED].freeze
16
+ @all_vars ||= [ALGOLIA_DEFINED, DEFAULT, USER_DEFINED].freeze
16
17
  end
17
18
 
18
19
  # Builds the enum from string
@@ -0,0 +1,504 @@
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
+ # Parameters for a single feed. These match the root `params` minus `injectedItems`, `getRankingInfo`, and `enableABTest`.
11
+ class FeedParams
12
+ # Whether this search will be included in Analytics.
13
+ attr_accessor :analytics
14
+
15
+ # Tags to apply to the query for [segmenting analytics data](https://www.algolia.com/doc/guides/search-analytics/guides/segments).
16
+ attr_accessor :analytics_tags
17
+
18
+ # Coordinates for the center of a circle, expressed as a comma-separated string of latitude and longitude. Only records included within a circle around this central location are included in the results. The radius of the circle is determined by the `aroundRadius` and `minimumAroundRadius` settings. This parameter is ignored if you also specify `insidePolygon` or `insideBoundingBox`.
19
+ attr_accessor :around_lat_lng
20
+
21
+ # Whether to obtain the coordinates from the request's IP address.
22
+ attr_accessor :around_lat_lng_via_ip
23
+
24
+ attr_accessor :around_radius
25
+
26
+ attr_accessor :around_precision
27
+
28
+ # Whether to include a `queryID` attribute in the response. The query ID is a unique identifier for a search query and is required for tracking [click and conversion events](https://www.algolia.com/doc/guides/sending-events/getting-started).
29
+ attr_accessor :click_analytics
30
+
31
+ # Whether to enable Personalization.
32
+ attr_accessor :enable_personalization
33
+
34
+ # Whether this search will use [Dynamic Re-Ranking](https://www.algolia.com/doc/guides/algolia-ai/re-ranking). This setting only has an effect if you activated Dynamic Re-Ranking for this index in the Algolia dashboard.
35
+ attr_accessor :enable_re_ranking
36
+
37
+ # Whether to enable composition rules.
38
+ attr_accessor :enable_rules
39
+
40
+ attr_accessor :facet_filters
41
+
42
+ # 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 `*`. To retrieve disjunctive facets lists, annotate any facets with the `disjunctive` modifier. For more information, see [facets](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#contextual-facet-values-and-counts) and [disjunctive faceting for Smart Groups](https://www.algolia.com/doc/guides/managing-results/compositions/search-based-groups#facets-including-disjunctive-faceting).
43
+ attr_accessor :facets
44
+
45
+ # Filter expression to only include items that match the filter criteria in the response. You can use these filter expressions: - **Numeric filters.** `<facet> <op> <number>`, where `<op>` is one of `<`, `<=`, `=`, `!=`, `>`, `>=`. - **Ranges.** `<facet>:<lower> TO <upper>`, where `<lower>` and `<upper>` are the lower and upper limits of the range (inclusive). - **Facet filters.** `<facet>:<value>`, where `<facet>` is a facet attribute (case-sensitive) and `<value>` a facet value. - **Tag filters.** `_tags:<value>` or just `<value>` (case-sensitive). - **Boolean filters.** `<facet>: true | false`. You can combine filters with `AND`, `OR`, and `NOT` operators with the following restrictions: - You can only combine filters of the same type with `OR`. **Not supported:** `facet:value OR num > 3`. - You can't use `NOT` with combinations of filters. **Not supported:** `NOT(facet:value OR facet:value)` - You can't combine conjunctions (`AND`) with `OR`. **Not supported:** `facet:value OR (facet:value AND facet:value)` Use quotes if the facet attribute name or facet value contains spaces, keywords (`OR`, `AND`, `NOT`), or quotes. If a facet attribute is an array, the filter matches if it matches at least one element of the array. For more information, see [Filters](https://www.algolia.com/doc/guides/managing-results/refine-results/filtering).
46
+ attr_accessor :filters
47
+
48
+ # Number of hits per page.
49
+ attr_accessor :hits_per_page
50
+
51
+ attr_accessor :inside_bounding_box
52
+
53
+ # 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`.
54
+ attr_accessor :inside_polygon
55
+
56
+ # Minimum radius (in meters) for a search around a location when `aroundRadius` isn't set.
57
+ attr_accessor :minimum_around_radius
58
+
59
+ # 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`.
60
+ attr_accessor :natural_languages
61
+
62
+ attr_accessor :numeric_filters
63
+
64
+ attr_accessor :optional_filters
65
+
66
+ # Page of search results to retrieve.
67
+ attr_accessor :page
68
+
69
+ # Search query.
70
+ attr_accessor :query
71
+
72
+ # Languages for language-specific query processing steps such as plurals, stop-word removal, and word-detection dictionaries. This setting sets a default list of languages used by the `removeStopWords` and `ignorePlurals` settings. This setting also sets a dictionary for word detection in the logogram-based [CJK](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/normalization/#normalization-for-logogram-based-languages-cjk) languages. To support this, place the CJK language **first**. **Always specify a query language.** If you don't specify an indexing language, the search engine uses all [supported languages](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/supported-languages), or the languages you specified with the `ignorePlurals` or `removeStopWords` parameters. This can lead to unexpected search results. For more information, see [Language-specific configuration](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations).
73
+ attr_accessor :query_languages
74
+
75
+ # Relevancy threshold below which less relevant results aren't included in the results. You can only set `relevancyStrictness` on [virtual replica indices](https://www.algolia.com/doc/guides/managing-results/refine-results/sorting/in-depth/replicas/#standard-and-virtual-replicas). Use this setting to strike a balance between the relevance and number of returned results.
76
+ attr_accessor :relevancy_strictness
77
+
78
+ # Assigns a rule context to the run query. [Rule contexts](https://www.algolia.com/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform/#assign-context) are strings that you can use to trigger matching rules.
79
+ attr_accessor :rule_contexts
80
+
81
+ # Indicates which sorting strategy to apply for the request. The value must match one of the labels defined in the \"sortingStrategy\" mapping. For example, \"Price (asc)\", see Upsert Composition. At runtime, this label is used to look up the corresponding index or replica configured in \"sortingStrategy\", and the query is executed using that index instead of main's. In addition to \"sortingStrategy\", this parameter is also used to apply a matching Composition Rule that contains a condition defined to trigger on \"sortBy\", see Composition Rules. If no value is provided or an invalid value, no sorting strategy is applied. For `multifeed` compositions, every feed inherits the root \"sortBy\" unless the feed sets its own \"sortBy\" in `feeds.<id>.params`. An empty string disables sorting for that feed. The response reports an invalid value in the `errors` field. This includes a value whose index is unrelated to the feed's indices. Composition Rules still match on the root \"sortBy\".
82
+ attr_accessor :sort_by
83
+
84
+ # 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).
85
+ attr_accessor :user_token
86
+
87
+ # Attribute mapping from ruby-style variable name to JSON key.
88
+ def self.attribute_map
89
+ {
90
+ :analytics => :analytics,
91
+ :analytics_tags => :analyticsTags,
92
+ :around_lat_lng => :aroundLatLng,
93
+ :around_lat_lng_via_ip => :aroundLatLngViaIP,
94
+ :around_radius => :aroundRadius,
95
+ :around_precision => :aroundPrecision,
96
+ :click_analytics => :clickAnalytics,
97
+ :enable_personalization => :enablePersonalization,
98
+ :enable_re_ranking => :enableReRanking,
99
+ :enable_rules => :enableRules,
100
+ :facet_filters => :facetFilters,
101
+ :facets => :facets,
102
+ :filters => :filters,
103
+ :hits_per_page => :hitsPerPage,
104
+ :inside_bounding_box => :insideBoundingBox,
105
+ :inside_polygon => :insidePolygon,
106
+ :minimum_around_radius => :minimumAroundRadius,
107
+ :natural_languages => :naturalLanguages,
108
+ :numeric_filters => :numericFilters,
109
+ :optional_filters => :optionalFilters,
110
+ :page => :page,
111
+ :query => :query,
112
+ :query_languages => :queryLanguages,
113
+ :relevancy_strictness => :relevancyStrictness,
114
+ :rule_contexts => :ruleContexts,
115
+ :sort_by => :sortBy,
116
+ :user_token => :userToken
117
+ }
118
+ end
119
+
120
+ # Attribute type mapping.
121
+ def self.types_mapping
122
+ {
123
+ :analytics => :"Boolean",
124
+ :analytics_tags => :"Array<String>",
125
+ :around_lat_lng => :"String",
126
+ :around_lat_lng_via_ip => :"Boolean",
127
+ :around_radius => :"AroundRadius",
128
+ :around_precision => :"AroundPrecision",
129
+ :click_analytics => :"Boolean",
130
+ :enable_personalization => :"Boolean",
131
+ :enable_re_ranking => :"Boolean",
132
+ :enable_rules => :"Boolean",
133
+ :facet_filters => :"FacetFilters",
134
+ :facets => :"Array<String>",
135
+ :filters => :"String",
136
+ :hits_per_page => :"Integer",
137
+ :inside_bounding_box => :"InsideBoundingBox",
138
+ :inside_polygon => :"Array<Array<Float>>",
139
+ :minimum_around_radius => :"Integer",
140
+ :natural_languages => :"Array<SupportedLanguage>",
141
+ :numeric_filters => :"NumericFilters",
142
+ :optional_filters => :"OptionalFilters",
143
+ :page => :"Integer",
144
+ :query => :"String",
145
+ :query_languages => :"Array<SupportedLanguage>",
146
+ :relevancy_strictness => :"Integer",
147
+ :rule_contexts => :"Array<String>",
148
+ :sort_by => :"String",
149
+ :user_token => :"String"
150
+ }
151
+ end
152
+
153
+ # List of attributes with nullable: true
154
+ def self.openapi_nullable
155
+ Set.new(
156
+ [
157
+ :inside_bounding_box
158
+ ]
159
+ )
160
+ end
161
+
162
+ # Initializes the object
163
+ # @param [Hash] attributes Model attributes in the form of hash
164
+ def initialize(attributes = {})
165
+ if (!attributes.is_a?(Hash))
166
+ raise(
167
+ ArgumentError,
168
+ "The input argument (attributes) must be a hash in `Algolia::FeedParams` initialize method"
169
+ )
170
+ end
171
+
172
+ # check to see if the attribute exists and convert string to symbol for hash key
173
+ attributes = attributes.each_with_object({}) { |(k, v), h|
174
+ if (!self.class.attribute_map.key?(k.to_sym))
175
+ raise(
176
+ ArgumentError,
177
+ "`#{k}` is not a valid attribute in `Algolia::FeedParams`. Please check the name to make sure it's valid. List of attributes: " +
178
+ self.class.attribute_map.keys.inspect
179
+ )
180
+ end
181
+
182
+ h[k.to_sym] = v
183
+ }
184
+
185
+ if attributes.key?(:analytics)
186
+ self.analytics = attributes[:analytics]
187
+ end
188
+
189
+ if attributes.key?(:analytics_tags)
190
+ if (value = attributes[:analytics_tags]).is_a?(Array)
191
+ self.analytics_tags = value
192
+ end
193
+ end
194
+
195
+ if attributes.key?(:around_lat_lng)
196
+ self.around_lat_lng = attributes[:around_lat_lng]
197
+ end
198
+
199
+ if attributes.key?(:around_lat_lng_via_ip)
200
+ self.around_lat_lng_via_ip = attributes[:around_lat_lng_via_ip]
201
+ end
202
+
203
+ if attributes.key?(:around_radius)
204
+ self.around_radius = attributes[:around_radius]
205
+ end
206
+
207
+ if attributes.key?(:around_precision)
208
+ self.around_precision = attributes[:around_precision]
209
+ end
210
+
211
+ if attributes.key?(:click_analytics)
212
+ self.click_analytics = attributes[:click_analytics]
213
+ end
214
+
215
+ if attributes.key?(:enable_personalization)
216
+ self.enable_personalization = attributes[:enable_personalization]
217
+ end
218
+
219
+ if attributes.key?(:enable_re_ranking)
220
+ self.enable_re_ranking = attributes[:enable_re_ranking]
221
+ end
222
+
223
+ if attributes.key?(:enable_rules)
224
+ self.enable_rules = attributes[:enable_rules]
225
+ end
226
+
227
+ if attributes.key?(:facet_filters)
228
+ self.facet_filters = attributes[:facet_filters]
229
+ end
230
+
231
+ if attributes.key?(:facets)
232
+ if (value = attributes[:facets]).is_a?(Array)
233
+ self.facets = value
234
+ end
235
+ end
236
+
237
+ if attributes.key?(:filters)
238
+ self.filters = attributes[:filters]
239
+ end
240
+
241
+ if attributes.key?(:hits_per_page)
242
+ self.hits_per_page = attributes[:hits_per_page]
243
+ end
244
+
245
+ if attributes.key?(:inside_bounding_box)
246
+ self.inside_bounding_box = attributes[:inside_bounding_box]
247
+ end
248
+
249
+ if attributes.key?(:inside_polygon)
250
+ if (value = attributes[:inside_polygon]).is_a?(Array)
251
+ self.inside_polygon = value
252
+ end
253
+ end
254
+
255
+ if attributes.key?(:minimum_around_radius)
256
+ self.minimum_around_radius = attributes[:minimum_around_radius]
257
+ end
258
+
259
+ if attributes.key?(:natural_languages)
260
+ if (value = attributes[:natural_languages]).is_a?(Array)
261
+ self.natural_languages = value
262
+ end
263
+ end
264
+
265
+ if attributes.key?(:numeric_filters)
266
+ self.numeric_filters = attributes[:numeric_filters]
267
+ end
268
+
269
+ if attributes.key?(:optional_filters)
270
+ self.optional_filters = attributes[:optional_filters]
271
+ end
272
+
273
+ if attributes.key?(:page)
274
+ self.page = attributes[:page]
275
+ end
276
+
277
+ if attributes.key?(:query)
278
+ self.query = attributes[:query]
279
+ end
280
+
281
+ if attributes.key?(:query_languages)
282
+ if (value = attributes[:query_languages]).is_a?(Array)
283
+ self.query_languages = value
284
+ end
285
+ end
286
+
287
+ if attributes.key?(:relevancy_strictness)
288
+ self.relevancy_strictness = attributes[:relevancy_strictness]
289
+ end
290
+
291
+ if attributes.key?(:rule_contexts)
292
+ if (value = attributes[:rule_contexts]).is_a?(Array)
293
+ self.rule_contexts = value
294
+ end
295
+ end
296
+
297
+ if attributes.key?(:sort_by)
298
+ self.sort_by = attributes[:sort_by]
299
+ end
300
+
301
+ if attributes.key?(:user_token)
302
+ self.user_token = attributes[:user_token]
303
+ end
304
+ end
305
+
306
+ # Checks equality by comparing each attribute.
307
+ # @param [Object] Object to be compared
308
+ def ==(other)
309
+ return true if self.equal?(other)
310
+ self.class == other.class &&
311
+ analytics == other.analytics &&
312
+ analytics_tags == other.analytics_tags &&
313
+ around_lat_lng == other.around_lat_lng &&
314
+ around_lat_lng_via_ip == other.around_lat_lng_via_ip &&
315
+ around_radius == other.around_radius &&
316
+ around_precision == other.around_precision &&
317
+ click_analytics == other.click_analytics &&
318
+ enable_personalization == other.enable_personalization &&
319
+ enable_re_ranking == other.enable_re_ranking &&
320
+ enable_rules == other.enable_rules &&
321
+ facet_filters == other.facet_filters &&
322
+ facets == other.facets &&
323
+ filters == other.filters &&
324
+ hits_per_page == other.hits_per_page &&
325
+ inside_bounding_box == other.inside_bounding_box &&
326
+ inside_polygon == other.inside_polygon &&
327
+ minimum_around_radius == other.minimum_around_radius &&
328
+ natural_languages == other.natural_languages &&
329
+ numeric_filters == other.numeric_filters &&
330
+ optional_filters == other.optional_filters &&
331
+ page == other.page &&
332
+ query == other.query &&
333
+ query_languages == other.query_languages &&
334
+ relevancy_strictness == other.relevancy_strictness &&
335
+ rule_contexts == other.rule_contexts &&
336
+ sort_by == other.sort_by &&
337
+ user_token == other.user_token
338
+ end
339
+
340
+ # @see the `==` method
341
+ # @param [Object] Object to be compared
342
+ def eql?(other)
343
+ self == other
344
+ end
345
+
346
+ # Calculates hash code according to all attributes.
347
+ # @return [Integer] Hash code
348
+ def hash
349
+ [
350
+ analytics,
351
+ analytics_tags,
352
+ around_lat_lng,
353
+ around_lat_lng_via_ip,
354
+ around_radius,
355
+ around_precision,
356
+ click_analytics,
357
+ enable_personalization,
358
+ enable_re_ranking,
359
+ enable_rules,
360
+ facet_filters,
361
+ facets,
362
+ filters,
363
+ hits_per_page,
364
+ inside_bounding_box,
365
+ inside_polygon,
366
+ minimum_around_radius,
367
+ natural_languages,
368
+ numeric_filters,
369
+ optional_filters,
370
+ page,
371
+ query,
372
+ query_languages,
373
+ relevancy_strictness,
374
+ rule_contexts,
375
+ sort_by,
376
+ user_token
377
+ ].hash
378
+ end
379
+
380
+ # Builds the object from hash
381
+ # @param [Hash] attributes Model attributes in the form of hash
382
+ # @return [Object] Returns the model itself
383
+ def self.build_from_hash(attributes)
384
+ return nil unless attributes.is_a?(Hash)
385
+ attributes = attributes.transform_keys(&:to_sym)
386
+ transformed_hash = {}
387
+ types_mapping.each_pair do |key, type|
388
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
389
+ transformed_hash[key.to_sym] = nil
390
+ elsif type =~ /\AArray<(.*)>/i
391
+ # check to ensure the input is an array given that the attribute
392
+ # is documented as an array but the input is not
393
+ if attributes[attribute_map[key]].is_a?(Array)
394
+ transformed_hash[key.to_sym] = attributes[attribute_map[key]].map { |v|
395
+ _deserialize(::Regexp.last_match(1), v)
396
+ }
397
+ end
398
+ elsif !attributes[attribute_map[key]].nil?
399
+ transformed_hash[key.to_sym] = _deserialize(type, attributes[attribute_map[key]])
400
+ end
401
+ end
402
+
403
+ new(transformed_hash)
404
+ end
405
+
406
+ # Deserializes the data based on type
407
+ # @param string type Data type
408
+ # @param string value Value to be deserialized
409
+ # @return [Object] Deserialized data
410
+ def self._deserialize(type, value)
411
+ case type.to_sym
412
+ when :Time
413
+ Time.parse(value)
414
+ when :Date
415
+ Date.parse(value)
416
+ when :String
417
+ value.to_s
418
+ when :Integer
419
+ value.to_i
420
+ when :Float
421
+ value.to_f
422
+ when :Boolean
423
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
424
+ true
425
+ else
426
+ false
427
+ end
428
+
429
+ when :Object
430
+ # generic object (usually a Hash), return directly
431
+ value
432
+ when /\AArray<(?<inner_type>.+)>\z/
433
+ inner_type = Regexp.last_match[:inner_type]
434
+ value.map { |v| _deserialize(inner_type, v) }
435
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
436
+ k_type = Regexp.last_match[:k_type]
437
+ v_type = Regexp.last_match[:v_type]
438
+ {}.tap do |hash|
439
+ value.each do |k, v|
440
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
441
+ end
442
+ end
443
+ # model
444
+ else
445
+ # models (e.g. Pet) or oneOf
446
+ klass = Algolia::Composition.const_get(type)
447
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass
448
+ .build_from_hash(value)
449
+ end
450
+ end
451
+
452
+ # Returns the string representation of the object
453
+ # @return [String] String presentation of the object
454
+ def to_s
455
+ to_hash.to_s
456
+ end
457
+
458
+ # to_body is an alias to to_hash (backward compatibility)
459
+ # @return [Hash] Returns the object in the form of hash
460
+ def to_body
461
+ to_hash
462
+ end
463
+
464
+ def to_json(*_args)
465
+ to_hash.to_json
466
+ end
467
+
468
+ # Returns the object in the form of hash
469
+ # @return [Hash] Returns the object in the form of hash
470
+ def to_hash
471
+ hash = {}
472
+ self.class.attribute_map.each_pair do |attr, param|
473
+ value = send(attr)
474
+ if value.nil?
475
+ is_nullable = self.class.openapi_nullable.include?(attr)
476
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
477
+ end
478
+
479
+ hash[param] = _to_hash(value)
480
+ end
481
+
482
+ hash
483
+ end
484
+
485
+ # Outputs non-array value in the form of hash
486
+ # For object, use to_hash. Otherwise, just return the value
487
+ # @param [Object] value Any valid value
488
+ # @return [Hash] Returns the value in the form of hash
489
+ def _to_hash(value)
490
+ if value.is_a?(Array)
491
+ value.map { |v| _to_hash(v) }
492
+ elsif value.is_a?(Hash)
493
+ {}.tap do |hash|
494
+ value.each { |k, v| hash[k] = _to_hash(v) }
495
+ end
496
+ elsif value.respond_to?(:to_hash)
497
+ value.to_hash
498
+ else
499
+ value
500
+ end
501
+ end
502
+ end
503
+ end
504
+ end
@@ -0,0 +1,206 @@
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 FeedRequest
11
+ attr_accessor :params
12
+
13
+ # Attribute mapping from ruby-style variable name to JSON key.
14
+ def self.attribute_map
15
+ {
16
+ :params => :params
17
+ }
18
+ end
19
+
20
+ # Attribute type mapping.
21
+ def self.types_mapping
22
+ {
23
+ :params => :"FeedParams"
24
+ }
25
+ end
26
+
27
+ # List of attributes with nullable: true
28
+ def self.openapi_nullable
29
+ Set.new(
30
+ []
31
+ )
32
+ end
33
+
34
+ # Initializes the object
35
+ # @param [Hash] attributes Model attributes in the form of hash
36
+ def initialize(attributes = {})
37
+ if (!attributes.is_a?(Hash))
38
+ raise(
39
+ ArgumentError,
40
+ "The input argument (attributes) must be a hash in `Algolia::FeedRequest` initialize method"
41
+ )
42
+ end
43
+
44
+ # check to see if the attribute exists and convert string to symbol for hash key
45
+ attributes = attributes.each_with_object({}) { |(k, v), h|
46
+ if (!self.class.attribute_map.key?(k.to_sym))
47
+ raise(
48
+ ArgumentError,
49
+ "`#{k}` is not a valid attribute in `Algolia::FeedRequest`. Please check the name to make sure it's valid. List of attributes: " +
50
+ self.class.attribute_map.keys.inspect
51
+ )
52
+ end
53
+
54
+ h[k.to_sym] = v
55
+ }
56
+
57
+ if attributes.key?(:params)
58
+ self.params = attributes[:params]
59
+ end
60
+ end
61
+
62
+ # Checks equality by comparing each attribute.
63
+ # @param [Object] Object to be compared
64
+ def ==(other)
65
+ return true if self.equal?(other)
66
+ self.class == other.class &&
67
+ params == other.params
68
+ end
69
+
70
+ # @see the `==` method
71
+ # @param [Object] Object to be compared
72
+ def eql?(other)
73
+ self == other
74
+ end
75
+
76
+ # Calculates hash code according to all attributes.
77
+ # @return [Integer] Hash code
78
+ def hash
79
+ [params].hash
80
+ end
81
+
82
+ # Builds the object from hash
83
+ # @param [Hash] attributes Model attributes in the form of hash
84
+ # @return [Object] Returns the model itself
85
+ def self.build_from_hash(attributes)
86
+ return nil unless attributes.is_a?(Hash)
87
+ attributes = attributes.transform_keys(&:to_sym)
88
+ transformed_hash = {}
89
+ types_mapping.each_pair do |key, type|
90
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
91
+ transformed_hash[key.to_sym] = nil
92
+ elsif type =~ /\AArray<(.*)>/i
93
+ # check to ensure the input is an array given that the attribute
94
+ # is documented as an array but the input is not
95
+ if attributes[attribute_map[key]].is_a?(Array)
96
+ transformed_hash[key.to_sym] = attributes[attribute_map[key]].map { |v|
97
+ _deserialize(::Regexp.last_match(1), v)
98
+ }
99
+ end
100
+ elsif !attributes[attribute_map[key]].nil?
101
+ transformed_hash[key.to_sym] = _deserialize(type, attributes[attribute_map[key]])
102
+ end
103
+ end
104
+
105
+ new(transformed_hash)
106
+ end
107
+
108
+ # Deserializes the data based on type
109
+ # @param string type Data type
110
+ # @param string value Value to be deserialized
111
+ # @return [Object] Deserialized data
112
+ def self._deserialize(type, value)
113
+ case type.to_sym
114
+ when :Time
115
+ Time.parse(value)
116
+ when :Date
117
+ Date.parse(value)
118
+ when :String
119
+ value.to_s
120
+ when :Integer
121
+ value.to_i
122
+ when :Float
123
+ value.to_f
124
+ when :Boolean
125
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
126
+ true
127
+ else
128
+ false
129
+ end
130
+
131
+ when :Object
132
+ # generic object (usually a Hash), return directly
133
+ value
134
+ when /\AArray<(?<inner_type>.+)>\z/
135
+ inner_type = Regexp.last_match[:inner_type]
136
+ value.map { |v| _deserialize(inner_type, v) }
137
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
138
+ k_type = Regexp.last_match[:k_type]
139
+ v_type = Regexp.last_match[:v_type]
140
+ {}.tap do |hash|
141
+ value.each do |k, v|
142
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
143
+ end
144
+ end
145
+ # model
146
+ else
147
+ # models (e.g. Pet) or oneOf
148
+ klass = Algolia::Composition.const_get(type)
149
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass
150
+ .build_from_hash(value)
151
+ end
152
+ end
153
+
154
+ # Returns the string representation of the object
155
+ # @return [String] String presentation of the object
156
+ def to_s
157
+ to_hash.to_s
158
+ end
159
+
160
+ # to_body is an alias to to_hash (backward compatibility)
161
+ # @return [Hash] Returns the object in the form of hash
162
+ def to_body
163
+ to_hash
164
+ end
165
+
166
+ def to_json(*_args)
167
+ to_hash.to_json
168
+ end
169
+
170
+ # Returns the object in the form of hash
171
+ # @return [Hash] Returns the object in the form of hash
172
+ def to_hash
173
+ hash = {}
174
+ self.class.attribute_map.each_pair do |attr, param|
175
+ value = send(attr)
176
+ if value.nil?
177
+ is_nullable = self.class.openapi_nullable.include?(attr)
178
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
179
+ end
180
+
181
+ hash[param] = _to_hash(value)
182
+ end
183
+
184
+ hash
185
+ end
186
+
187
+ # Outputs non-array value in the form of hash
188
+ # For object, use to_hash. Otherwise, just return the value
189
+ # @param [Object] value Any valid value
190
+ # @return [Hash] Returns the value in the form of hash
191
+ def _to_hash(value)
192
+ if value.is_a?(Array)
193
+ value.map { |v| _to_hash(v) }
194
+ elsif value.is_a?(Hash)
195
+ {}.tap do |hash|
196
+ value.each { |k, v| hash[k] = _to_hash(v) }
197
+ end
198
+ elsif value.respond_to?(:to_hash)
199
+ value.to_hash
200
+ else
201
+ value
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
@@ -86,7 +86,7 @@ module Algolia
86
86
  # Assigns a rule context to the run query. [Rule contexts](https://www.algolia.com/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform/#assign-context) are strings that you can use to trigger matching rules.
87
87
  attr_accessor :rule_contexts
88
88
 
89
- # Indicates which sorting strategy to apply for the request. The value must match one of the labels defined in the \"sortingStrategy\" mapping. For example, \"Price (asc)\", see Upsert Composition. At runtime, this label is used to look up the corresponding index or replica configured in \"sortingStrategy\", and the query is executed using that index instead of main's. In addition to \"sortingStrategy\", this parameter is also used to apply a matching Composition Rule that contains a condition defined to trigger on \"sortBy\", see Composition Rules. If no value is provided or an invalid value, no sorting strategy is applied.
89
+ # Indicates which sorting strategy to apply for the request. The value must match one of the labels defined in the \"sortingStrategy\" mapping. For example, \"Price (asc)\", see Upsert Composition. At runtime, this label is used to look up the corresponding index or replica configured in \"sortingStrategy\", and the query is executed using that index instead of main's. In addition to \"sortingStrategy\", this parameter is also used to apply a matching Composition Rule that contains a condition defined to trigger on \"sortBy\", see Composition Rules. If no value is provided or an invalid value, no sorting strategy is applied. For `multifeed` compositions, every feed inherits the root \"sortBy\" unless the feed sets its own \"sortBy\" in `feeds.<id>.params`. An empty string disables sorting for that feed. The response reports an invalid value in the `errors` field. This includes a value whose index is unrelated to the feed's indices. Composition Rules still match on the root \"sortBy\".
90
90
  attr_accessor :sort_by
91
91
 
92
92
  # 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).
@@ -15,12 +15,16 @@ module Algolia
15
15
 
16
16
  attr_accessor :external_provider
17
17
 
18
+ # Per-feed parameters for `multifeed` compositions. Each key is a feed ID. Feed `params` take precedence over the root `params`. A feed inherits every root key it doesn't set. A feed value replaces the root value instead of combining with it. This applies to every key, including `filters`, `facetFilters`, `optionalFilters`, and `analyticsTags`. For example, `filters` must repeat the common values. An empty value such as `filters: \"\"` discards the root value. The API validates feed `params` like the root `params`. An unsupported parameter returns a 400 error. A feed ID may not exist in the composition (for example, because a rule removed it). The response reports it in the `errors` field but request still succeeds. Rules match once per request, against the root `params` only.
19
+ attr_accessor :feeds
20
+
18
21
  # Attribute mapping from ruby-style variable name to JSON key.
19
22
  def self.attribute_map
20
23
  {
21
24
  :params => :params,
22
25
  :feeds_order => :feedsOrder,
23
- :external_provider => :externalProvider
26
+ :external_provider => :externalProvider,
27
+ :feeds => :feeds
24
28
  }
25
29
  end
26
30
 
@@ -29,7 +33,8 @@ module Algolia
29
33
  {
30
34
  :params => :"Params",
31
35
  :feeds_order => :"Array<String>",
32
- :external_provider => :"ExternalProvider"
36
+ :external_provider => :"ExternalProvider",
37
+ :feeds => :"Hash<String, FeedRequest>"
33
38
  }
34
39
  end
35
40
 
@@ -76,6 +81,12 @@ module Algolia
76
81
  if attributes.key?(:external_provider)
77
82
  self.external_provider = attributes[:external_provider]
78
83
  end
84
+
85
+ if attributes.key?(:feeds)
86
+ if (value = attributes[:feeds]).is_a?(Hash)
87
+ self.feeds = value
88
+ end
89
+ end
79
90
  end
80
91
 
81
92
  # Checks equality by comparing each attribute.
@@ -85,7 +96,8 @@ module Algolia
85
96
  self.class == other.class &&
86
97
  params == other.params &&
87
98
  feeds_order == other.feeds_order &&
88
- external_provider == other.external_provider
99
+ external_provider == other.external_provider &&
100
+ feeds == other.feeds
89
101
  end
90
102
 
91
103
  # @see the `==` method
@@ -97,7 +109,7 @@ module Algolia
97
109
  # Calculates hash code according to all attributes.
98
110
  # @return [Integer] Hash code
99
111
  def hash
100
- [params, feeds_order, external_provider].hash
112
+ [params, feeds_order, external_provider, feeds].hash
101
113
  end
102
114
 
103
115
  # Builds the object from hash
@@ -18,7 +18,7 @@ module Algolia
18
18
  # Index names or patterns that this API key can access. By default, an API key can access all indices in the same application. You can use leading and trailing wildcard characters (`*`): - `dev_*` matches all indices starting with \"dev_\". - `*_dev` matches all indices ending with \"_dev\". - `*_products_*` matches all indices containing \"_products_\".
19
19
  attr_accessor :indexes
20
20
 
21
- # Maximum number of results this API key can retrieve in one query. By default, there's no limit.
21
+ # Maximum number of hits this API key can retrieve per page. If you set this to 0, the maximum allowed value (1,000) applies. If you also set `hitsPerPage` on the index, the engine uses the lower of the two values.
22
22
  attr_accessor :max_hits_per_query
23
23
 
24
24
  # Maximum number of API requests allowed per IP address or [user token](https://www.algolia.com/doc/guides/sending-events/concepts/usertoken) per hour. If this limit is reached, the API returns an error with status code `429`. By default, there's no limit.
@@ -23,7 +23,7 @@ module Algolia
23
23
  # Index names or patterns that this API key can access. By default, an API key can access all indices in the same application. You can use leading and trailing wildcard characters (`*`): - `dev_*` matches all indices starting with \"dev_\". - `*_dev` matches all indices ending with \"_dev\". - `*_products_*` matches all indices containing \"_products_\".
24
24
  attr_accessor :indexes
25
25
 
26
- # Maximum number of results this API key can retrieve in one query. By default, there's no limit.
26
+ # Maximum number of hits this API key can retrieve per page. If you set this to 0, the maximum allowed value (1,000) applies. If you also set `hitsPerPage` on the index, the engine uses the lower of the two values.
27
27
  attr_accessor :max_hits_per_query
28
28
 
29
29
  # Maximum number of API requests allowed per IP address or [user token](https://www.algolia.com/doc/guides/sending-events/concepts/usertoken) per hour. If this limit is reached, the API returns an error with status code `429`. By default, there's no limit.
@@ -3,5 +3,5 @@
3
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
4
 
5
5
  module Algolia
6
- VERSION = "3.47.0"
6
+ VERSION = "3.49.0"
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algolia
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.47.0
4
+ version: 3.49.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://alg.li/support
@@ -499,6 +499,8 @@ files:
499
499
  - lib/algolia/models/composition/facet_ordering.rb
500
500
  - lib/algolia/models/composition/facet_stats.rb
501
501
  - lib/algolia/models/composition/feed_injection.rb
502
+ - lib/algolia/models/composition/feed_params.rb
503
+ - lib/algolia/models/composition/feed_request.rb
502
504
  - lib/algolia/models/composition/get_task_response.rb
503
505
  - lib/algolia/models/composition/highlight_result.rb
504
506
  - lib/algolia/models/composition/highlight_result_option.rb