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 +4 -4
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +1 -1
- data/lib/algolia/api/analytics_client.rb +2 -2
- data/lib/algolia/api/composition_client.rb +2 -2
- data/lib/algolia/models/analytics/daily_no_click_rates.rb +2 -2
- data/lib/algolia/models/analytics/get_no_click_rate_response.rb +2 -2
- data/lib/algolia/models/composition/composition.rb +1 -1
- data/lib/algolia/models/composition/external_ordering.rb +2 -1
- data/lib/algolia/models/composition/feed_params.rb +504 -0
- data/lib/algolia/models/composition/feed_request.rb +206 -0
- data/lib/algolia/models/composition/params.rb +1 -1
- data/lib/algolia/models/composition/request_body.rb +16 -4
- data/lib/algolia/models/search/api_key.rb +1 -1
- data/lib/algolia/models/search/get_api_key_response.rb +1 -1
- data/lib/algolia/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8d89992331694b650c757bd4300a1c50a90456fc1c18a0a55ca9825673ceff8b
|
|
4
|
+
data.tar.gz: 417b1fa6e11081c252b36df230b726c6a54a8265c74e93e346d72fcdd91626d8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
@@ -573,7 +573,7 @@ module Algolia
|
|
|
573
573
|
)
|
|
574
574
|
end
|
|
575
575
|
|
|
576
|
-
# Retrieves the fraction of searches
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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.
|
data/lib/algolia/version.rb
CHANGED
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.
|
|
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
|