From 2175dc62d60689007daa7b2bf1c70feb13cadbeb Mon Sep 17 00:00:00 2001
From: Clara Muller <5667350+ClaraMuller@users.noreply.github.com>
Date: Tue, 15 Jul 2025 18:41:36 +0200
Subject: [PATCH 1/4] refactor(specs): create
`composition-full/schemas/components` directory
---
.../common/schemas/BatchCompositionAction.yml | 2 +-
.../schemas/ListCompositionsResponse.yml | 2 +-
.../schemas/RulesBatchCompositionAction.yml | 2 +-
.../common/schemas/SearchParams.yml | 956 +-----------------
.../schemas/{ => components}/Composition.yml | 9 +-
.../{ => components}/CompositionBehavior.yml | 4 +-
.../{ => components}/CompositionRule.yml | 6 +-
.../common/schemas/components/Injection.yml | 953 +++++++++++++++++
.../paths/advanced/getTask.yml | 2 +-
.../paths/objects/objects.yml | 4 +-
specs/composition-full/paths/rules/rule.yml | 4 +-
.../paths/rules/saveRules.yml | 2 +-
.../paths/rules/searchRules.yml | 6 +-
.../composition-full/paths/search/search.yml | 2 +-
.../paths/search/searchForFacetValues.yml | 2 +-
.../parameters.yml => paths/urlParams.yml} | 6 +-
16 files changed, 981 insertions(+), 981 deletions(-)
rename specs/composition-full/common/schemas/{ => components}/Composition.yml (76%)
rename specs/composition-full/common/schemas/{ => components}/CompositionBehavior.yml (93%)
rename specs/composition-full/common/schemas/{ => components}/CompositionRule.yml (93%)
create mode 100644 specs/composition-full/common/schemas/components/Injection.yml
rename specs/composition-full/{common/parameters.yml => paths/urlParams.yml} (50%)
diff --git a/specs/composition-full/common/schemas/BatchCompositionAction.yml b/specs/composition-full/common/schemas/BatchCompositionAction.yml
index f784e1dc2e0..fb9e7ce55f5 100644
--- a/specs/composition-full/common/schemas/BatchCompositionAction.yml
+++ b/specs/composition-full/common/schemas/BatchCompositionAction.yml
@@ -10,5 +10,5 @@ deleteCompositionAction:
batchCompositionAction:
oneOf:
- - $ref: './Composition.yml#/composition'
+ - $ref: './components/Composition.yml#/composition'
- $ref: '#/deleteCompositionAction'
diff --git a/specs/composition-full/common/schemas/ListCompositionsResponse.yml b/specs/composition-full/common/schemas/ListCompositionsResponse.yml
index 963c095ab63..fe37e05dc43 100644
--- a/specs/composition-full/common/schemas/ListCompositionsResponse.yml
+++ b/specs/composition-full/common/schemas/ListCompositionsResponse.yml
@@ -6,7 +6,7 @@ listCompositionsResponse:
type: array
description: All compositions in your Algolia application.
items:
- $ref: './Composition.yml#/composition'
+ $ref: './components/Composition.yml#/composition'
nbPages:
type: integer
description: Number of pages.
diff --git a/specs/composition-full/common/schemas/RulesBatchCompositionAction.yml b/specs/composition-full/common/schemas/RulesBatchCompositionAction.yml
index 61e46d32008..d7666524e41 100644
--- a/specs/composition-full/common/schemas/RulesBatchCompositionAction.yml
+++ b/specs/composition-full/common/schemas/RulesBatchCompositionAction.yml
@@ -10,5 +10,5 @@ deleteCompositionRuleAction:
rulesBatchCompositionAction:
oneOf:
- - $ref: './CompositionRule.yml#/compositionRule'
+ - $ref: './components/CompositionRule.yml#/compositionRule'
- $ref: '#/deleteCompositionRuleAction'
diff --git a/specs/composition-full/common/schemas/SearchParams.yml b/specs/composition-full/common/schemas/SearchParams.yml
index 130fa1119b1..4e1e8cce086 100644
--- a/specs/composition-full/common/schemas/SearchParams.yml
+++ b/specs/composition-full/common/schemas/SearchParams.yml
@@ -131,958 +131,4 @@ params:
This setting only has an effect if you activated Dynamic Re-Ranking for this index in the Algolia dashboard.
default: true
x-categories:
- - Filtering
-
-mainInjectionQueryParameters:
- title: Composition Main Injection Query parameters as object
- type: object
- additionalProperties: false
- properties:
- attributesToRetrieve:
- type: array
- items:
- type: string
- example:
- - author
- - title
- - content
- description: |
- Attributes to include in the API response.
-
- To reduce the size of your response, you can retrieve only some of the attributes.
- Attribute names are case-sensitive.
-
- - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings.
- - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `["*", "-ATTRIBUTE"]`.
- - The `objectID` attribute is always included.
- default: ['*']
- x-categories:
- - Attributes
- restrictSearchableAttributes:
- type: array
- items:
- type: string
- example: [title, author]
- description: |
- Restricts a search to a subset of your searchable attributes.
- Attribute names are case-sensitive.
- default: []
- x-categories:
- - Filtering
- filters:
- $ref: '../../../common/schemas/SearchParams.yml#/filters'
- facetFilters:
- $ref: '../../../common/schemas/SearchParams.yml#/facetFilters'
- optionalFilters:
- $ref: '../../../common/schemas/SearchParams.yml#/optionalFilters'
- numericFilters:
- $ref: '../../../common/schemas/SearchParams.yml#/numericFilters'
- sumOrFiltersScores:
- type: boolean
- description: |
- Whether to sum all filter scores.
-
- If true, all filter scores are summed.
- Otherwise, the maximum filter score is kept.
- For more information, see [filter scores](https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/in-depth/filter-scoring/#accumulating-scores-with-sumorfiltersscores).
- default: false
- x-categories:
- - Filtering
- facets:
- type: array
- items:
- type: string
- description: |
- Facets for which to retrieve facet values that match the search criteria and the number of matching facet values.
-
- To retrieve all facets, use the wildcard character `*`.
- For more information, see [facets](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#contextual-facet-values-and-counts).
- default: []
- example: ['*']
- x-categories:
- - Faceting
- maxValuesPerFacet:
- type: integer
- description: Maximum number of facet values to return for each facet.
- default: 100
- maximum: 1000
- x-categories:
- - Faceting
- facetingAfterDistinct:
- type: boolean
- description: |
- Whether faceting should be applied after deduplication with `distinct`.
-
- This leads to accurate facet counts when using faceting in combination with `distinct`.
- It's usually better to use `afterDistinct` modifiers in the `attributesForFaceting` setting,
- as `facetingAfterDistinct` only computes correct facet counts if all records have the same facet values for the `attributeForDistinct`.
- default: false
- x-categories:
- - Faceting
- sortFacetValuesBy:
- type: string
- description: |
- Order in which to retrieve facet values.
-
- - `count`.
- Facet values are retrieved by decreasing count.
- The count is the number of matching records containing this facet value.
-
- - `alpha`.
- Retrieve facet values alphabetically.
-
- This setting doesn't influence how facet values are displayed in your UI (see `renderingContent`).
- For more information, see [facet value display](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/js/).
- default: count
- x-categories:
- - Faceting
- attributesToHighlight:
- type: array
- items:
- type: string
- example: [author, title, content]
- description: |
- Attributes to highlight.
-
- By default, all searchable attributes are highlighted.
- Use `*` to highlight all attributes or use an empty array `[]` to turn off highlighting.
- Attribute names are case-sensitive.
-
- With highlighting, strings that match the search query are surrounded by HTML tags defined by `highlightPreTag` and `highlightPostTag`.
- You can use this to visually highlight matching parts of a search query in your UI.
-
- For more information, see [Highlighting and snippeting](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/js/).
- x-categories:
- - Highlighting and Snippeting
- attributesToSnippet:
- type: array
- items:
- type: string
- example:
- - content:80
- - description
- description: |
- Attributes for which to enable snippets.
- Attribute names are case-sensitive.
-
- Snippets provide additional context to matched words.
- If you enable snippets, they include 10 words, including the matched word.
- The matched word will also be wrapped by HTML tags for highlighting.
- You can adjust the number of words with the following notation: `ATTRIBUTE:NUMBER`,
- where `NUMBER` is the number of words to be extracted.
- default: []
- x-categories:
- - Highlighting and Snippeting
- highlightPreTag:
- type: string
- description: HTML tag to insert before the highlighted parts in all highlighted results and snippets.
- default:
- x-categories:
- - Highlighting and Snippeting
- highlightPostTag:
- type: string
- description: HTML tag to insert after the highlighted parts in all highlighted results and snippets.
- default:
- x-categories:
- - Highlighting and Snippeting
- snippetEllipsisText:
- type: string
- description: String used as an ellipsis indicator when a snippet is truncated.
- default: …
- x-categories:
- - Highlighting and Snippeting
- restrictHighlightAndSnippetArrays:
- type: boolean
- description: |
- Whether to restrict highlighting and snippeting to items that at least partially matched the search query.
- By default, all items are highlighted and snippeted.
- default: false
- x-categories:
- - Highlighting and Snippeting
- hitsPerPage:
- $ref: '../../../common/schemas/IndexSettings.yml#/hitsPerPage'
- length:
- type: integer
- description: Number of hits to retrieve (used in combination with `offset`).
- minimum: 0
- maximum: 1000
- x-categories:
- - Pagination
- minWordSizefor1Typo:
- type: integer
- description: Minimum number of characters a word in the search query must contain to accept matches with [one typo](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
- default: 4
- x-categories:
- - Typos
- minWordSizefor2Typos:
- type: integer
- description: Minimum number of characters a word in the search query must contain to accept matches with [two typos](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
- default: 8
- x-categories:
- - Typos
- typoTolerance:
- $ref: '../../../common/schemas/IndexSettings.yml#/typoTolerance'
- allowTyposOnNumericTokens:
- type: boolean
- description: |
- Whether to allow typos on numbers in the search query.
-
- Turn off this setting to reduce the number of irrelevant matches
- when searching in large sets of similar numbers.
- default: true
- x-categories:
- - Typos
- disableTypoToleranceOnAttributes:
- type: array
- items:
- type: string
- example:
- - sku
- description: |
- Attributes for which you want to turn off [typo tolerance](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/).
- Attribute names are case-sensitive.
-
- Returning only exact matches can help when:
-
- - [Searching in hyphenated attributes](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-search-in-hyphenated-attributes/).
- - Reducing the number of matches when you have too many.
- This can happen with attributes that are long blocks of text, such as product descriptions.
-
- Consider alternatives such as `disableTypoToleranceOnWords` or adding synonyms if your attributes have intentional unusual spellings that might look like typos.
- default: []
- x-categories:
- - Typos
- ignorePlurals:
- $ref: '../../../common/schemas/IndexSettings.yml#/ignorePlurals'
- removeStopWords:
- $ref: '../../../common/schemas/IndexSettings.yml#/removeStopWords'
- queryLanguages:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/supportedLanguage'
- example:
- - es
- description: |
- 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, you must place the CJK language **first**.
-
- **You should 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/).
- default: []
- x-categories:
- - Languages
- naturalLanguages:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/supportedLanguage'
- description: |
- 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`.
- default: []
- x-categories:
- - Languages
- decompoundQuery:
- type: boolean
- description: |
- Whether to split compound words in the query into their building blocks.
-
- For more information, see [Word segmentation](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations/#splitting-compound-words).
- Word segmentation is supported for these languages: German, Dutch, Finnish, Swedish, and Norwegian.
- Decompounding doesn't work for words with [non-spacing mark Unicode characters](https://www.charactercodes.net/category/non-spacing_mark).
- For example, `Gartenstühle` won't be decompounded if the `ü` consists of `u` (U+0075) and `◌̈` (U+0308).
- default: true
- x-categories:
- - Languages
- enableRules:
- type: boolean
- description: Whether to enable rules.
- default: true
- x-categories:
- - Rules
- ruleContexts:
- type: array
- items:
- type: string
- description: |
- Assigns a rule context to the search query.
-
- [Rule contexts](https://www.algolia.com/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform/#whats-a-context) are strings that you can use to trigger matching rules.
- default: []
- example: [mobile]
- x-categories:
- - Rules
- enablePersonalization:
- type: boolean
- description: Whether to enable Personalization.
- default: false
- x-categories:
- - Personalization
- personalizationImpact:
- type: integer
- description: |
- Impact that Personalization should have on this search.
-
- The higher this value is, the more Personalization determines the ranking compared to other factors.
- For more information, see [Understanding Personalization impact](https://www.algolia.com/doc/guides/personalization/personalizing-results/in-depth/configuring-personalization/#understanding-personalization-impact).
- default: 100
- minimum: 0
- maximum: 100
- x-categories:
- - Personalization
- queryType:
- $ref: '../../../common/schemas/IndexSettings.yml#/queryType'
- removeWordsIfNoResults:
- $ref: '../../../common/schemas/IndexSettings.yml#/removeWordsIfNoResults'
- advancedSyntax:
- type: boolean
- description: |
- Whether to support phrase matching and excluding words from search queries.
-
- Use the `advancedSyntaxFeatures` parameter to control which feature is supported.
- default: false
- x-categories:
- - Query strategy
- optionalWords:
- type: array
- items:
- type: string
- example:
- - blue
- - iphone case
- description: |
- Words that should be considered optional when found in the query.
-
- By default, records must match all words in the search query to be included in the search results.
- Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words.
- For example, if the search query is "action video" and "video" is an optional word,
- the search engine runs two queries. One for "action video" and one for "action".
- Records that match all words are ranked higher.
-
- For a search query with 4 or more words **and** all its words are optional,
- the number of matched words required for a record to be included in the search results increases for every 1,000 records:
-
- - If `optionalWords` has less than 10 words, the required number of matched words increases by 1:
- results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words.
- - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down).
- For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words.
-
- For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words).
- default: []
- x-categories:
- - Query strategy
- disableExactOnAttributes:
- type: array
- items:
- type: string
- example:
- - description
- description: |
- Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes).
- Attribute names are case-sensitive.
-
- This can be useful for attributes with long values, where the likelihood of an exact match is high,
- such as product descriptions.
- Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes.
- This reduces the impact of individual attributes with a lot of content on ranking.
- default: []
- x-categories:
- - Query strategy
- exactOnSingleWordQuery:
- $ref: '../../../common/schemas/IndexSettings.yml#/exactOnSingleWordQuery'
- alternativesAsExact:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/alternativesAsExact'
- description: |
- Determine which plurals and synonyms should be considered an exact matches.
-
- By default, Algolia treats singular and plural forms of a word, and single-word synonyms, as [exact](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#exact) matches when searching.
- For example:
-
- - "swimsuit" and "swimsuits" are treated the same
- - "swimsuit" and "swimwear" are treated the same (if they are [synonyms](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/adding-synonyms/#regular-synonyms)).
-
- - `ignorePlurals`.
- Plurals and similar declensions added by the `ignorePlurals` setting are considered exact matches.
-
- - `singleWordSynonym`.
- Single-word synonyms, such as "NY" = "NYC", are considered exact matches.
-
- - `multiWordsSynonym`.
- Multi-word synonyms, such as "NY" = "New York", are considered exact matches.
- default: [ignorePlurals, singleWordSynonym]
- x-categories:
- - Query strategy
- advancedSyntaxFeatures:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/advancedSyntaxFeatures'
- description: |
- Advanced search syntax features you want to support.
-
- - `exactPhrase`.
- Phrases in quotes must match exactly.
- For example, `sparkly blue "iPhone case"` only returns records with the exact string "iPhone case".
-
- - `excludeWords`.
- Query words prefixed with a `-` must not occur in a record.
- For example, `search -engine` matches records that contain "search" but not "engine".
-
- This setting only has an effect if `advancedSyntax` is true.
- default: [exactPhrase, excludeWords]
- x-categories:
- - Query strategy
- distinct:
- $ref: '../../../common/schemas/IndexSettings.yml#/distinct'
- getRankingInfo:
- type: boolean
- description: Whether the search response should include detailed ranking information.
- clickAnalytics:
- type: boolean
- description: |
- 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/guides/sending-events/getting-started/).
- default: false
- x-categories:
- - Analytics
- analytics:
- type: boolean
- description: Whether this search will be included in Analytics.
- default: true
- x-categories:
- - Analytics
- analyticsTags:
- type: array
- items:
- type: string
- description: Tags to apply to the query for [segmenting analytics data](https://www.algolia.com/doc/guides/search-analytics/guides/segments/).
- default: []
- x-categories:
- - Analytics
- synonyms:
- type: boolean
- description: Whether to take into account an index's synonyms for this search.
- default: true
- x-categories:
- - Advanced
- replaceSynonymsInHighlight:
- type: boolean
- description: |
- Whether to replace a highlighted word with the matched synonym.
-
- By default, the original words are highlighted even if a synonym matches.
- For example, with `home` as a synonym for `house` and a search for `home`,
- records matching either "home" or "house" are included in the search results,
- and either "home" or "house" are highlighted.
-
- With `replaceSynonymsInHighlight` set to `true`, a search for `home` still matches the same records,
- but all occurrences of "house" are replaced by "home" in the highlighted response.
- default: false
- x-categories:
- - Highlighting and Snippeting
- minProximity:
- type: integer
- minimum: 1
- maximum: 7
- description: |
- Minimum proximity score for two matching words.
-
- This adjusts the [Proximity ranking criterion](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#proximity)
- by equally scoring matches that are farther apart.
-
- For example, if `minProximity` is 2, neighboring matches and matches with one word between them would have the same score.
- default: 1
- x-categories:
- - Advanced
- responseFields:
- type: array
- items:
- type: string
- description: |
- Properties to include in the API response of `search` and `browse` requests.
-
- By default, all response properties are included.
- To reduce the response size, you can select, which attributes should be included.
-
- You can't exclude these properties:
- `message`, `warning`, `cursor`, `serverUsed`, `indexUsed`,
- `abTestVariantID`, `parsedQuery`, or any property triggered by the `getRankingInfo` parameter.
-
- Don't exclude properties that you might need in your search UI.
- default: ['*']
- x-categories:
- - Advanced
- maxFacetHits:
- $ref: '../../../common/schemas/IndexSettings.yml#/maxFacetHits'
- percentileComputation:
- type: boolean
- description: Whether to include this search when calculating processing-time percentiles.
- default: true
- x-categories:
- - Advanced
- attributeCriteriaComputedByMinProximity:
- type: boolean
- description: |
- Whether the best matching attribute should be determined by minimum proximity.
-
- This setting only affects ranking if the Attribute ranking criterion comes before Proximity in the `ranking` setting.
- If true, the best matching attribute is selected based on the minimum proximity of multiple matches.
- Otherwise, the best matching attribute is determined by the order in the `searchableAttributes` setting.
- default: false
- x-categories:
- - Advanced
- enableABTest:
- type: boolean
- description: Whether to enable A/B testing for this search.
- default: true
- x-categories:
- - Advanced
- enableReRanking:
- type: boolean
- description: |
- 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.
- default: true
- x-categories:
- - Filtering
-
-injectedItemsQueryParameters:
- title: Composition injectedItems Query parameters as object
- type: object
- additionalProperties: false
- properties:
- attributesToRetrieve:
- type: array
- items:
- type: string
- example:
- - author
- - title
- - content
- description: |
- Attributes to include in the API response.
-
- To reduce the size of your response, you can retrieve only some of the attributes.
- Attribute names are case-sensitive.
-
- - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings.
- - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `["*", "-ATTRIBUTE"]`.
- - The `objectID` attribute is always included.
- default: ['*']
- x-categories:
- - Attributes
- restrictSearchableAttributes:
- type: array
- items:
- type: string
- example: [title, author]
- description: |
- Restricts a search to a subset of your searchable attributes.
- Attribute names are case-sensitive.
- default: []
- x-categories:
- - Filtering
- filters:
- $ref: '../../../common/schemas/SearchParams.yml#/filters'
- facetFilters:
- $ref: '../../../common/schemas/SearchParams.yml#/facetFilters'
- optionalFilters:
- $ref: '../../../common/schemas/SearchParams.yml#/optionalFilters'
- numericFilters:
- $ref: '../../../common/schemas/SearchParams.yml#/numericFilters'
- attributesToHighlight:
- type: array
- items:
- type: string
- example: [author, title, content]
- description: |
- Attributes to highlight.
-
- By default, all searchable attributes are highlighted.
- Use `*` to highlight all attributes or use an empty array `[]` to turn off highlighting.
- Attribute names are case-sensitive.
-
- With highlighting, strings that match the search query are surrounded by HTML tags defined by `highlightPreTag` and `highlightPostTag`.
- You can use this to visually highlight matching parts of a search query in your UI.
-
- For more information, see [Highlighting and snippeting](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/js/).
- x-categories:
- - Highlighting and Snippeting
- attributesToSnippet:
- type: array
- items:
- type: string
- example:
- - content:80
- - description
- description: |
- Attributes for which to enable snippets.
- Attribute names are case-sensitive.
-
- Snippets provide additional context to matched words.
- If you enable snippets, they include 10 words, including the matched word.
- The matched word will also be wrapped by HTML tags for highlighting.
- You can adjust the number of words with the following notation: `ATTRIBUTE:NUMBER`,
- where `NUMBER` is the number of words to be extracted.
- default: []
- x-categories:
- - Highlighting and Snippeting
- highlightPreTag:
- type: string
- description: HTML tag to insert before the highlighted parts in all highlighted results and snippets.
- default:
- x-categories:
- - Highlighting and Snippeting
- highlightPostTag:
- type: string
- description: HTML tag to insert after the highlighted parts in all highlighted results and snippets.
- default:
- x-categories:
- - Highlighting and Snippeting
- snippetEllipsisText:
- type: string
- description: String used as an ellipsis indicator when a snippet is truncated.
- default: …
- x-categories:
- - Highlighting and Snippeting
- restrictHighlightAndSnippetArrays:
- type: boolean
- description: |
- Whether to restrict highlighting and snippeting to items that at least partially matched the search query.
- By default, all items are highlighted and snippeted.
- default: false
- x-categories:
- - Highlighting and Snippeting
- minWordSizefor1Typo:
- type: integer
- description: Minimum number of characters a word in the search query must contain to accept matches with [one typo](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
- default: 4
- x-categories:
- - Typos
- minWordSizefor2Typos:
- type: integer
- description: Minimum number of characters a word in the search query must contain to accept matches with [two typos](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
- default: 8
- x-categories:
- - Typos
- typoTolerance:
- $ref: '../../../common/schemas/IndexSettings.yml#/typoTolerance'
- allowTyposOnNumericTokens:
- type: boolean
- description: |
- Whether to allow typos on numbers in the search query.
-
- Turn off this setting to reduce the number of irrelevant matches
- when searching in large sets of similar numbers.
- default: true
- x-categories:
- - Typos
- disableTypoToleranceOnAttributes:
- type: array
- items:
- type: string
- example:
- - sku
- description: |
- Attributes for which you want to turn off [typo tolerance](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/).
- Attribute names are case-sensitive.
-
- Returning only exact matches can help when:
-
- - [Searching in hyphenated attributes](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-search-in-hyphenated-attributes/).
- - Reducing the number of matches when you have too many.
- This can happen with attributes that are long blocks of text, such as product descriptions.
-
- Consider alternatives such as `disableTypoToleranceOnWords` or adding synonyms if your attributes have intentional unusual spellings that might look like typos.
- default: []
- x-categories:
- - Typos
- ignorePlurals:
- $ref: '../../../common/schemas/IndexSettings.yml#/ignorePlurals'
- removeStopWords:
- $ref: '../../../common/schemas/IndexSettings.yml#/removeStopWords'
- queryLanguages:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/supportedLanguage'
- example:
- - es
- description: |
- 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, you must place the CJK language **first**.
-
- **You should 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/).
- default: []
- x-categories:
- - Languages
- naturalLanguages:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/supportedLanguage'
- description: |
- 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`.
- default: []
- x-categories:
- - Languages
- decompoundQuery:
- type: boolean
- description: |
- Whether to split compound words in the query into their building blocks.
-
- For more information, see [Word segmentation](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations/#splitting-compound-words).
- Word segmentation is supported for these languages: German, Dutch, Finnish, Swedish, and Norwegian.
- Decompounding doesn't work for words with [non-spacing mark Unicode characters](https://www.charactercodes.net/category/non-spacing_mark).
- For example, `Gartenstühle` won't be decompounded if the `ü` consists of `u` (U+0075) and `◌̈` (U+0308).
- default: true
- x-categories:
- - Languages
- enableRules:
- type: boolean
- description: Whether to enable rules.
- default: true
- x-categories:
- - Rules
- ruleContexts:
- type: array
- items:
- type: string
- description: |
- Assigns a rule context to the search query.
-
- [Rule contexts](https://www.algolia.com/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform/#whats-a-context) are strings that you can use to trigger matching rules.
- default: []
- example: [mobile]
- x-categories:
- - Rules
- enablePersonalization:
- type: boolean
- description: Whether to enable Personalization.
- default: false
- x-categories:
- - Personalization
- personalizationImpact:
- type: integer
- description: |
- Impact that Personalization should have on this search.
-
- The higher this value is, the more Personalization determines the ranking compared to other factors.
- For more information, see [Understanding Personalization impact](https://www.algolia.com/doc/guides/personalization/personalizing-results/in-depth/configuring-personalization/#understanding-personalization-impact).
- default: 100
- minimum: 0
- maximum: 100
- x-categories:
- - Personalization
- queryType:
- $ref: '../../../common/schemas/IndexSettings.yml#/queryType'
- removeWordsIfNoResults:
- $ref: '../../../common/schemas/IndexSettings.yml#/removeWordsIfNoResults'
- advancedSyntax:
- type: boolean
- description: |
- Whether to support phrase matching and excluding words from search queries.
-
- Use the `advancedSyntaxFeatures` parameter to control which feature is supported.
- default: false
- x-categories:
- - Query strategy
- optionalWords:
- $ref: '../../../common/schemas/IndexSettings.yml#/optionalWords'
- disableExactOnAttributes:
- type: array
- items:
- type: string
- example:
- - description
- description: |
- Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes).
- Attribute names are case-sensitive.
-
- This can be useful for attributes with long values, where the likelihood of an exact match is high,
- such as product descriptions.
- Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes.
- This reduces the impact of individual attributes with a lot of content on ranking.
- default: []
- x-categories:
- - Query strategy
- exactOnSingleWordQuery:
- $ref: '../../../common/schemas/IndexSettings.yml#/exactOnSingleWordQuery'
- alternativesAsExact:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/alternativesAsExact'
- description: |
- Determine which plurals and synonyms should be considered an exact matches.
-
- By default, Algolia treats singular and plural forms of a word, and single-word synonyms, as [exact](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#exact) matches when searching.
- For example:
-
- - "swimsuit" and "swimsuits" are treated the same
- - "swimsuit" and "swimwear" are treated the same (if they are [synonyms](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/adding-synonyms/#regular-synonyms)).
-
- - `ignorePlurals`.
- Plurals and similar declensions added by the `ignorePlurals` setting are considered exact matches.
-
- - `singleWordSynonym`.
- Single-word synonyms, such as "NY" = "NYC", are considered exact matches.
-
- - `multiWordsSynonym`.
- Multi-word synonyms, such as "NY" = "New York", are considered exact matches.
- default: [ignorePlurals, singleWordSynonym]
- x-categories:
- - Query strategy
- advancedSyntaxFeatures:
- type: array
- items:
- $ref: '../../../common/schemas/IndexSettings.yml#/advancedSyntaxFeatures'
- description: |
- Advanced search syntax features you want to support.
-
- - `exactPhrase`.
- Phrases in quotes must match exactly.
- For example, `sparkly blue "iPhone case"` only returns records with the exact string "iPhone case".
-
- - `excludeWords`.
- Query words prefixed with a `-` must not occur in a record.
- For example, `search -engine` matches records that contain "search" but not "engine".
-
- This setting only has an effect if `advancedSyntax` is true.
- default: [exactPhrase, excludeWords]
- x-categories:
- - Query strategy
- distinct:
- $ref: '../../../common/schemas/IndexSettings.yml#/distinct'
- getRankingInfo:
- type: boolean
- description: Whether the search response should include detailed ranking information.
- clickAnalytics:
- type: boolean
- description: |
- 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/guides/sending-events/getting-started/).
- default: false
- x-categories:
- - Analytics
- analytics:
- type: boolean
- description: Whether this search will be included in Analytics.
- default: true
- x-categories:
- - Analytics
- analyticsTags:
- type: array
- items:
- type: string
- description: Tags to apply to the query for [segmenting analytics data](https://www.algolia.com/doc/guides/search-analytics/guides/segments/).
- default: []
- x-categories:
- - Analytics
- synonyms:
- type: boolean
- description: Whether to take into account an index's synonyms for this search.
- default: true
- x-categories:
- - Advanced
- replaceSynonymsInHighlight:
- type: boolean
- description: |
- Whether to replace a highlighted word with the matched synonym.
-
- By default, the original words are highlighted even if a synonym matches.
- For example, with `home` as a synonym for `house` and a search for `home`,
- records matching either "home" or "house" are included in the search results,
- and either "home" or "house" are highlighted.
-
- With `replaceSynonymsInHighlight` set to `true`, a search for `home` still matches the same records,
- but all occurrences of "house" are replaced by "home" in the highlighted response.
- default: false
- x-categories:
- - Highlighting and Snippeting
- minProximity:
- type: integer
- minimum: 1
- maximum: 7
- description: |
- Minimum proximity score for two matching words.
-
- This adjusts the [Proximity ranking criterion](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#proximity)
- by equally scoring matches that are farther apart.
-
- For example, if `minProximity` is 2, neighboring matches and matches with one word between them would have the same score.
- default: 1
- x-categories:
- - Advanced
- responseFields:
- type: array
- items:
- type: string
- description: |
- Properties to include in the API response of `search` and `browse` requests.
-
- By default, all response properties are included.
- To reduce the response size, you can select, which attributes should be included.
-
- You can't exclude these properties:
- `message`, `warning`, `cursor`, `serverUsed`, `indexUsed`,
- `abTestVariantID`, `parsedQuery`, or any property triggered by the `getRankingInfo` parameter.
-
- Don't exclude properties that you might need in your search UI.
- default: ['*']
- x-categories:
- - Advanced
- maxFacetHits:
- $ref: '../../../common/schemas/IndexSettings.yml#/maxFacetHits'
- percentileComputation:
- type: boolean
- description: Whether to include this search when calculating processing-time percentiles.
- default: true
- x-categories:
- - Advanced
- attributeCriteriaComputedByMinProximity:
- type: boolean
- description: |
- Whether the best matching attribute should be determined by minimum proximity.
-
- This setting only affects ranking if the Attribute ranking criterion comes before Proximity in the `ranking` setting.
- If true, the best matching attribute is selected based on the minimum proximity of multiple matches.
- Otherwise, the best matching attribute is determined by the order in the `searchableAttributes` setting.
- default: false
- x-categories:
- - Advanced
- enableABTest:
- type: boolean
- description: Whether to enable A/B testing for this search.
- default: true
- x-categories:
- - Advanced
- enableReRanking:
- type: boolean
- description: |
- 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.
- default: true
- x-categories:
- - Filtering
+ - Filtering
\ No newline at end of file
diff --git a/specs/composition-full/common/schemas/Composition.yml b/specs/composition-full/common/schemas/components/Composition.yml
similarity index 76%
rename from specs/composition-full/common/schemas/Composition.yml
rename to specs/composition-full/common/schemas/components/Composition.yml
index dde568893e3..d246be22452 100644
--- a/specs/composition-full/common/schemas/Composition.yml
+++ b/specs/composition-full/common/schemas/components/Composition.yml
@@ -3,7 +3,7 @@ composition:
additionalProperties: false
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '#/objectID'
name:
type: string
description: Composition name.
@@ -17,4 +17,9 @@ composition:
required:
- objectID
- behavior
- - name
\ No newline at end of file
+ - name
+
+objectID:
+ type: string
+ example: 'my_composition_object_id'
+ description: Composition unique identifier.
\ No newline at end of file
diff --git a/specs/composition-full/common/schemas/CompositionBehavior.yml b/specs/composition-full/common/schemas/components/CompositionBehavior.yml
similarity index 93%
rename from specs/composition-full/common/schemas/CompositionBehavior.yml
rename to specs/composition-full/common/schemas/components/CompositionBehavior.yml
index 0ed7d2bd923..a894dd3567d 100644
--- a/specs/composition-full/common/schemas/CompositionBehavior.yml
+++ b/specs/composition-full/common/schemas/components/CompositionBehavior.yml
@@ -27,7 +27,7 @@ compositionBehavior:
description: Composition Main Index name.
example: Products
params:
- $ref: './SearchParams.yml#/mainInjectionQueryParameters'
+ $ref: './Injection.yml#/mainInjectionQueryParameters'
required:
- index
required:
@@ -68,7 +68,7 @@ injectedItem:
description: Composition Main Index name.
example: Products
params:
- $ref: './SearchParams.yml#/injectedItemsQueryParameters'
+ $ref: './Injection.yml#/injectedItemsQueryParameters'
required:
- index
required:
diff --git a/specs/composition-full/common/schemas/CompositionRule.yml b/specs/composition-full/common/schemas/components/CompositionRule.yml
similarity index 93%
rename from specs/composition-full/common/schemas/CompositionRule.yml
rename to specs/composition-full/common/schemas/components/CompositionRule.yml
index 398009626b7..797495ec3fd 100644
--- a/specs/composition-full/common/schemas/CompositionRule.yml
+++ b/specs/composition-full/common/schemas/components/CompositionRule.yml
@@ -3,7 +3,7 @@ compositionRule:
additionalProperties: false
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../../../../common/parameters.yml#/objectID'
conditions:
type: array
minItems: 0
@@ -33,7 +33,7 @@ compositionRule:
type: array
description: Time periods when the rule is active.
items:
- $ref: '../../../common/schemas/Rule.yml#/timeRange'
+ $ref: '../../../../common/schemas/Rule.yml#/timeRange'
required:
- objectID
- conditions
@@ -55,7 +55,7 @@ condition:
anchoring:
$ref: '#/anchoring'
context:
- $ref: '../../../common/schemas/Rule.yml#/context'
+ $ref: '../../../../common/schemas/Rule.yml#/context'
filters:
type: string
description: |
diff --git a/specs/composition-full/common/schemas/components/Injection.yml b/specs/composition-full/common/schemas/components/Injection.yml
new file mode 100644
index 00000000000..15819b0b382
--- /dev/null
+++ b/specs/composition-full/common/schemas/components/Injection.yml
@@ -0,0 +1,953 @@
+mainInjectionQueryParameters:
+ title: Composition Main Injection Query parameters as object
+ type: object
+ additionalProperties: false
+ properties:
+ attributesToRetrieve:
+ type: array
+ items:
+ type: string
+ example:
+ - author
+ - title
+ - content
+ description: |
+ Attributes to include in the API response.
+
+ To reduce the size of your response, you can retrieve only some of the attributes.
+ Attribute names are case-sensitive.
+
+ - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings.
+ - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `["*", "-ATTRIBUTE"]`.
+ - The `objectID` attribute is always included.
+ default: ['*']
+ x-categories:
+ - Attributes
+ restrictSearchableAttributes:
+ type: array
+ items:
+ type: string
+ example: [title, author]
+ description: |
+ Restricts a search to a subset of your searchable attributes.
+ Attribute names are case-sensitive.
+ default: []
+ x-categories:
+ - Filtering
+ filters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/filters'
+ facetFilters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/facetFilters'
+ optionalFilters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/optionalFilters'
+ numericFilters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/numericFilters'
+ sumOrFiltersScores:
+ type: boolean
+ description: |
+ Whether to sum all filter scores.
+
+ If true, all filter scores are summed.
+ Otherwise, the maximum filter score is kept.
+ For more information, see [filter scores](https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/in-depth/filter-scoring/#accumulating-scores-with-sumorfiltersscores).
+ default: false
+ x-categories:
+ - Filtering
+ facets:
+ type: array
+ items:
+ type: string
+ description: |
+ Facets for which to retrieve facet values that match the search criteria and the number of matching facet values.
+
+ To retrieve all facets, use the wildcard character `*`.
+ For more information, see [facets](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#contextual-facet-values-and-counts).
+ default: []
+ example: ['*']
+ x-categories:
+ - Faceting
+ maxValuesPerFacet:
+ type: integer
+ description: Maximum number of facet values to return for each facet.
+ default: 100
+ maximum: 1000
+ x-categories:
+ - Faceting
+ facetingAfterDistinct:
+ type: boolean
+ description: |
+ Whether faceting should be applied after deduplication with `distinct`.
+
+ This leads to accurate facet counts when using faceting in combination with `distinct`.
+ It's usually better to use `afterDistinct` modifiers in the `attributesForFaceting` setting,
+ as `facetingAfterDistinct` only computes correct facet counts if all records have the same facet values for the `attributeForDistinct`.
+ default: false
+ x-categories:
+ - Faceting
+ sortFacetValuesBy:
+ type: string
+ description: |
+ Order in which to retrieve facet values.
+
+ - `count`.
+ Facet values are retrieved by decreasing count.
+ The count is the number of matching records containing this facet value.
+
+ - `alpha`.
+ Retrieve facet values alphabetically.
+
+ This setting doesn't influence how facet values are displayed in your UI (see `renderingContent`).
+ For more information, see [facet value display](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/facet-display/js/).
+ default: count
+ x-categories:
+ - Faceting
+ attributesToHighlight:
+ type: array
+ items:
+ type: string
+ example: [author, title, content]
+ description: |
+ Attributes to highlight.
+
+ By default, all searchable attributes are highlighted.
+ Use `*` to highlight all attributes or use an empty array `[]` to turn off highlighting.
+ Attribute names are case-sensitive.
+
+ With highlighting, strings that match the search query are surrounded by HTML tags defined by `highlightPreTag` and `highlightPostTag`.
+ You can use this to visually highlight matching parts of a search query in your UI.
+
+ For more information, see [Highlighting and snippeting](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/js/).
+ x-categories:
+ - Highlighting and Snippeting
+ attributesToSnippet:
+ type: array
+ items:
+ type: string
+ example:
+ - content:80
+ - description
+ description: |
+ Attributes for which to enable snippets.
+ Attribute names are case-sensitive.
+
+ Snippets provide additional context to matched words.
+ If you enable snippets, they include 10 words, including the matched word.
+ The matched word will also be wrapped by HTML tags for highlighting.
+ You can adjust the number of words with the following notation: `ATTRIBUTE:NUMBER`,
+ where `NUMBER` is the number of words to be extracted.
+ default: []
+ x-categories:
+ - Highlighting and Snippeting
+ highlightPreTag:
+ type: string
+ description: HTML tag to insert before the highlighted parts in all highlighted results and snippets.
+ default:
+ x-categories:
+ - Highlighting and Snippeting
+ highlightPostTag:
+ type: string
+ description: HTML tag to insert after the highlighted parts in all highlighted results and snippets.
+ default:
+ x-categories:
+ - Highlighting and Snippeting
+ snippetEllipsisText:
+ type: string
+ description: String used as an ellipsis indicator when a snippet is truncated.
+ default: …
+ x-categories:
+ - Highlighting and Snippeting
+ restrictHighlightAndSnippetArrays:
+ type: boolean
+ description: |
+ Whether to restrict highlighting and snippeting to items that at least partially matched the search query.
+ By default, all items are highlighted and snippeted.
+ default: false
+ x-categories:
+ - Highlighting and Snippeting
+ hitsPerPage:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/hitsPerPage'
+ length:
+ type: integer
+ description: Number of hits to retrieve (used in combination with `offset`).
+ minimum: 0
+ maximum: 1000
+ x-categories:
+ - Pagination
+ minWordSizefor1Typo:
+ type: integer
+ description: Minimum number of characters a word in the search query must contain to accept matches with [one typo](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
+ default: 4
+ x-categories:
+ - Typos
+ minWordSizefor2Typos:
+ type: integer
+ description: Minimum number of characters a word in the search query must contain to accept matches with [two typos](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
+ default: 8
+ x-categories:
+ - Typos
+ typoTolerance:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/typoTolerance'
+ allowTyposOnNumericTokens:
+ type: boolean
+ description: |
+ Whether to allow typos on numbers in the search query.
+
+ Turn off this setting to reduce the number of irrelevant matches
+ when searching in large sets of similar numbers.
+ default: true
+ x-categories:
+ - Typos
+ disableTypoToleranceOnAttributes:
+ type: array
+ items:
+ type: string
+ example:
+ - sku
+ description: |
+ Attributes for which you want to turn off [typo tolerance](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/).
+ Attribute names are case-sensitive.
+
+ Returning only exact matches can help when:
+
+ - [Searching in hyphenated attributes](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-search-in-hyphenated-attributes/).
+ - Reducing the number of matches when you have too many.
+ This can happen with attributes that are long blocks of text, such as product descriptions.
+
+ Consider alternatives such as `disableTypoToleranceOnWords` or adding synonyms if your attributes have intentional unusual spellings that might look like typos.
+ default: []
+ x-categories:
+ - Typos
+ ignorePlurals:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/ignorePlurals'
+ removeStopWords:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/removeStopWords'
+ queryLanguages:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/supportedLanguage'
+ example:
+ - es
+ description: |
+ 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, you must place the CJK language **first**.
+
+ **You should 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/).
+ default: []
+ x-categories:
+ - Languages
+ naturalLanguages:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/supportedLanguage'
+ description: |
+ 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`.
+ default: []
+ x-categories:
+ - Languages
+ decompoundQuery:
+ type: boolean
+ description: |
+ Whether to split compound words in the query into their building blocks.
+
+ For more information, see [Word segmentation](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations/#splitting-compound-words).
+ Word segmentation is supported for these languages: German, Dutch, Finnish, Swedish, and Norwegian.
+ Decompounding doesn't work for words with [non-spacing mark Unicode characters](https://www.charactercodes.net/category/non-spacing_mark).
+ For example, `Gartenstühle` won't be decompounded if the `ü` consists of `u` (U+0075) and `◌̈` (U+0308).
+ default: true
+ x-categories:
+ - Languages
+ enableRules:
+ type: boolean
+ description: Whether to enable rules.
+ default: true
+ x-categories:
+ - Rules
+ ruleContexts:
+ type: array
+ items:
+ type: string
+ description: |
+ Assigns a rule context to the search query.
+
+ [Rule contexts](https://www.algolia.com/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform/#whats-a-context) are strings that you can use to trigger matching rules.
+ default: []
+ example: [mobile]
+ x-categories:
+ - Rules
+ enablePersonalization:
+ type: boolean
+ description: Whether to enable Personalization.
+ default: false
+ x-categories:
+ - Personalization
+ personalizationImpact:
+ type: integer
+ description: |
+ Impact that Personalization should have on this search.
+
+ The higher this value is, the more Personalization determines the ranking compared to other factors.
+ For more information, see [Understanding Personalization impact](https://www.algolia.com/doc/guides/personalization/personalizing-results/in-depth/configuring-personalization/#understanding-personalization-impact).
+ default: 100
+ minimum: 0
+ maximum: 100
+ x-categories:
+ - Personalization
+ queryType:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/queryType'
+ removeWordsIfNoResults:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/removeWordsIfNoResults'
+ advancedSyntax:
+ type: boolean
+ description: |
+ Whether to support phrase matching and excluding words from search queries.
+
+ Use the `advancedSyntaxFeatures` parameter to control which feature is supported.
+ default: false
+ x-categories:
+ - Query strategy
+ optionalWords:
+ type: array
+ items:
+ type: string
+ example:
+ - blue
+ - iphone case
+ description: |
+ Words that should be considered optional when found in the query.
+
+ By default, records must match all words in the search query to be included in the search results.
+ Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words.
+ For example, if the search query is "action video" and "video" is an optional word,
+ the search engine runs two queries. One for "action video" and one for "action".
+ Records that match all words are ranked higher.
+
+ For a search query with 4 or more words **and** all its words are optional,
+ the number of matched words required for a record to be included in the search results increases for every 1,000 records:
+
+ - If `optionalWords` has less than 10 words, the required number of matched words increases by 1:
+ results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words.
+ - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down).
+ For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words.
+
+ For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words).
+ default: []
+ x-categories:
+ - Query strategy
+ disableExactOnAttributes:
+ type: array
+ items:
+ type: string
+ example:
+ - description
+ description: |
+ Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes).
+ Attribute names are case-sensitive.
+
+ This can be useful for attributes with long values, where the likelihood of an exact match is high,
+ such as product descriptions.
+ Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes.
+ This reduces the impact of individual attributes with a lot of content on ranking.
+ default: []
+ x-categories:
+ - Query strategy
+ exactOnSingleWordQuery:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/exactOnSingleWordQuery'
+ alternativesAsExact:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/alternativesAsExact'
+ description: |
+ Determine which plurals and synonyms should be considered an exact matches.
+
+ By default, Algolia treats singular and plural forms of a word, and single-word synonyms, as [exact](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#exact) matches when searching.
+ For example:
+
+ - "swimsuit" and "swimsuits" are treated the same
+ - "swimsuit" and "swimwear" are treated the same (if they are [synonyms](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/adding-synonyms/#regular-synonyms)).
+
+ - `ignorePlurals`.
+ Plurals and similar declensions added by the `ignorePlurals` setting are considered exact matches.
+
+ - `singleWordSynonym`.
+ Single-word synonyms, such as "NY" = "NYC", are considered exact matches.
+
+ - `multiWordsSynonym`.
+ Multi-word synonyms, such as "NY" = "New York", are considered exact matches.
+ default: [ignorePlurals, singleWordSynonym]
+ x-categories:
+ - Query strategy
+ advancedSyntaxFeatures:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/advancedSyntaxFeatures'
+ description: |
+ Advanced search syntax features you want to support.
+
+ - `exactPhrase`.
+ Phrases in quotes must match exactly.
+ For example, `sparkly blue "iPhone case"` only returns records with the exact string "iPhone case".
+
+ - `excludeWords`.
+ Query words prefixed with a `-` must not occur in a record.
+ For example, `search -engine` matches records that contain "search" but not "engine".
+
+ This setting only has an effect if `advancedSyntax` is true.
+ default: [exactPhrase, excludeWords]
+ x-categories:
+ - Query strategy
+ distinct:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/distinct'
+ getRankingInfo:
+ type: boolean
+ description: Whether the search response should include detailed ranking information.
+ clickAnalytics:
+ type: boolean
+ description: |
+ 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/guides/sending-events/getting-started/).
+ default: false
+ x-categories:
+ - Analytics
+ analytics:
+ type: boolean
+ description: Whether this search will be included in Analytics.
+ default: true
+ x-categories:
+ - Analytics
+ analyticsTags:
+ type: array
+ items:
+ type: string
+ description: Tags to apply to the query for [segmenting analytics data](https://www.algolia.com/doc/guides/search-analytics/guides/segments/).
+ default: []
+ x-categories:
+ - Analytics
+ synonyms:
+ type: boolean
+ description: Whether to take into account an index's synonyms for this search.
+ default: true
+ x-categories:
+ - Advanced
+ replaceSynonymsInHighlight:
+ type: boolean
+ description: |
+ Whether to replace a highlighted word with the matched synonym.
+
+ By default, the original words are highlighted even if a synonym matches.
+ For example, with `home` as a synonym for `house` and a search for `home`,
+ records matching either "home" or "house" are included in the search results,
+ and either "home" or "house" are highlighted.
+
+ With `replaceSynonymsInHighlight` set to `true`, a search for `home` still matches the same records,
+ but all occurrences of "house" are replaced by "home" in the highlighted response.
+ default: false
+ x-categories:
+ - Highlighting and Snippeting
+ minProximity:
+ type: integer
+ minimum: 1
+ maximum: 7
+ description: |
+ Minimum proximity score for two matching words.
+
+ This adjusts the [Proximity ranking criterion](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#proximity)
+ by equally scoring matches that are farther apart.
+
+ For example, if `minProximity` is 2, neighboring matches and matches with one word between them would have the same score.
+ default: 1
+ x-categories:
+ - Advanced
+ responseFields:
+ type: array
+ items:
+ type: string
+ description: |
+ Properties to include in the API response of `search` and `browse` requests.
+
+ By default, all response properties are included.
+ To reduce the response size, you can select, which attributes should be included.
+
+ You can't exclude these properties:
+ `message`, `warning`, `cursor`, `serverUsed`, `indexUsed`,
+ `abTestVariantID`, `parsedQuery`, or any property triggered by the `getRankingInfo` parameter.
+
+ Don't exclude properties that you might need in your search UI.
+ default: ['*']
+ x-categories:
+ - Advanced
+ maxFacetHits:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/maxFacetHits'
+ percentileComputation:
+ type: boolean
+ description: Whether to include this search when calculating processing-time percentiles.
+ default: true
+ x-categories:
+ - Advanced
+ attributeCriteriaComputedByMinProximity:
+ type: boolean
+ description: |
+ Whether the best matching attribute should be determined by minimum proximity.
+
+ This setting only affects ranking if the Attribute ranking criterion comes before Proximity in the `ranking` setting.
+ If true, the best matching attribute is selected based on the minimum proximity of multiple matches.
+ Otherwise, the best matching attribute is determined by the order in the `searchableAttributes` setting.
+ default: false
+ x-categories:
+ - Advanced
+ enableABTest:
+ type: boolean
+ description: Whether to enable A/B testing for this search.
+ default: true
+ x-categories:
+ - Advanced
+ enableReRanking:
+ type: boolean
+ description: |
+ 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.
+ default: true
+ x-categories:
+ - Filtering
+
+injectedItemsQueryParameters:
+ title: Composition injectedItems Query parameters as object
+ type: object
+ additionalProperties: false
+ properties:
+ attributesToRetrieve:
+ type: array
+ items:
+ type: string
+ example:
+ - author
+ - title
+ - content
+ description: |
+ Attributes to include in the API response.
+
+ To reduce the size of your response, you can retrieve only some of the attributes.
+ Attribute names are case-sensitive.
+
+ - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings.
+ - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `["*", "-ATTRIBUTE"]`.
+ - The `objectID` attribute is always included.
+ default: ['*']
+ x-categories:
+ - Attributes
+ restrictSearchableAttributes:
+ type: array
+ items:
+ type: string
+ example: [title, author]
+ description: |
+ Restricts a search to a subset of your searchable attributes.
+ Attribute names are case-sensitive.
+ default: []
+ x-categories:
+ - Filtering
+ filters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/filters'
+ facetFilters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/facetFilters'
+ optionalFilters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/optionalFilters'
+ numericFilters:
+ $ref: '../../../../common/schemas/SearchParams.yml#/numericFilters'
+ attributesToHighlight:
+ type: array
+ items:
+ type: string
+ example: [author, title, content]
+ description: |
+ Attributes to highlight.
+
+ By default, all searchable attributes are highlighted.
+ Use `*` to highlight all attributes or use an empty array `[]` to turn off highlighting.
+ Attribute names are case-sensitive.
+
+ With highlighting, strings that match the search query are surrounded by HTML tags defined by `highlightPreTag` and `highlightPostTag`.
+ You can use this to visually highlight matching parts of a search query in your UI.
+
+ For more information, see [Highlighting and snippeting](https://www.algolia.com/doc/guides/building-search-ui/ui-and-ux-patterns/highlighting-snippeting/js/).
+ x-categories:
+ - Highlighting and Snippeting
+ attributesToSnippet:
+ type: array
+ items:
+ type: string
+ example:
+ - content:80
+ - description
+ description: |
+ Attributes for which to enable snippets.
+ Attribute names are case-sensitive.
+
+ Snippets provide additional context to matched words.
+ If you enable snippets, they include 10 words, including the matched word.
+ The matched word will also be wrapped by HTML tags for highlighting.
+ You can adjust the number of words with the following notation: `ATTRIBUTE:NUMBER`,
+ where `NUMBER` is the number of words to be extracted.
+ default: []
+ x-categories:
+ - Highlighting and Snippeting
+ highlightPreTag:
+ type: string
+ description: HTML tag to insert before the highlighted parts in all highlighted results and snippets.
+ default:
+ x-categories:
+ - Highlighting and Snippeting
+ highlightPostTag:
+ type: string
+ description: HTML tag to insert after the highlighted parts in all highlighted results and snippets.
+ default:
+ x-categories:
+ - Highlighting and Snippeting
+ snippetEllipsisText:
+ type: string
+ description: String used as an ellipsis indicator when a snippet is truncated.
+ default: …
+ x-categories:
+ - Highlighting and Snippeting
+ restrictHighlightAndSnippetArrays:
+ type: boolean
+ description: |
+ Whether to restrict highlighting and snippeting to items that at least partially matched the search query.
+ By default, all items are highlighted and snippeted.
+ default: false
+ x-categories:
+ - Highlighting and Snippeting
+ minWordSizefor1Typo:
+ type: integer
+ description: Minimum number of characters a word in the search query must contain to accept matches with [one typo](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
+ default: 4
+ x-categories:
+ - Typos
+ minWordSizefor2Typos:
+ type: integer
+ description: Minimum number of characters a word in the search query must contain to accept matches with [two typos](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/in-depth/configuring-typo-tolerance/#configuring-word-length-for-typos).
+ default: 8
+ x-categories:
+ - Typos
+ typoTolerance:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/typoTolerance'
+ allowTyposOnNumericTokens:
+ type: boolean
+ description: |
+ Whether to allow typos on numbers in the search query.
+
+ Turn off this setting to reduce the number of irrelevant matches
+ when searching in large sets of similar numbers.
+ default: true
+ x-categories:
+ - Typos
+ disableTypoToleranceOnAttributes:
+ type: array
+ items:
+ type: string
+ example:
+ - sku
+ description: |
+ Attributes for which you want to turn off [typo tolerance](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/).
+ Attribute names are case-sensitive.
+
+ Returning only exact matches can help when:
+
+ - [Searching in hyphenated attributes](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/how-to/how-to-search-in-hyphenated-attributes/).
+ - Reducing the number of matches when you have too many.
+ This can happen with attributes that are long blocks of text, such as product descriptions.
+
+ Consider alternatives such as `disableTypoToleranceOnWords` or adding synonyms if your attributes have intentional unusual spellings that might look like typos.
+ default: []
+ x-categories:
+ - Typos
+ ignorePlurals:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/ignorePlurals'
+ removeStopWords:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/removeStopWords'
+ queryLanguages:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/supportedLanguage'
+ example:
+ - es
+ description: |
+ 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, you must place the CJK language **first**.
+
+ **You should 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/).
+ default: []
+ x-categories:
+ - Languages
+ naturalLanguages:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/supportedLanguage'
+ description: |
+ 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`.
+ default: []
+ x-categories:
+ - Languages
+ decompoundQuery:
+ type: boolean
+ description: |
+ Whether to split compound words in the query into their building blocks.
+
+ For more information, see [Word segmentation](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/language-specific-configurations/#splitting-compound-words).
+ Word segmentation is supported for these languages: German, Dutch, Finnish, Swedish, and Norwegian.
+ Decompounding doesn't work for words with [non-spacing mark Unicode characters](https://www.charactercodes.net/category/non-spacing_mark).
+ For example, `Gartenstühle` won't be decompounded if the `ü` consists of `u` (U+0075) and `◌̈` (U+0308).
+ default: true
+ x-categories:
+ - Languages
+ enableRules:
+ type: boolean
+ description: Whether to enable rules.
+ default: true
+ x-categories:
+ - Rules
+ ruleContexts:
+ type: array
+ items:
+ type: string
+ description: |
+ Assigns a rule context to the search query.
+
+ [Rule contexts](https://www.algolia.com/doc/guides/managing-results/rules/rules-overview/how-to/customize-search-results-by-platform/#whats-a-context) are strings that you can use to trigger matching rules.
+ default: []
+ example: [mobile]
+ x-categories:
+ - Rules
+ enablePersonalization:
+ type: boolean
+ description: Whether to enable Personalization.
+ default: false
+ x-categories:
+ - Personalization
+ personalizationImpact:
+ type: integer
+ description: |
+ Impact that Personalization should have on this search.
+
+ The higher this value is, the more Personalization determines the ranking compared to other factors.
+ For more information, see [Understanding Personalization impact](https://www.algolia.com/doc/guides/personalization/personalizing-results/in-depth/configuring-personalization/#understanding-personalization-impact).
+ default: 100
+ minimum: 0
+ maximum: 100
+ x-categories:
+ - Personalization
+ queryType:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/queryType'
+ removeWordsIfNoResults:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/removeWordsIfNoResults'
+ advancedSyntax:
+ type: boolean
+ description: |
+ Whether to support phrase matching and excluding words from search queries.
+
+ Use the `advancedSyntaxFeatures` parameter to control which feature is supported.
+ default: false
+ x-categories:
+ - Query strategy
+ optionalWords:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/optionalWords'
+ disableExactOnAttributes:
+ type: array
+ items:
+ type: string
+ example:
+ - description
+ description: |
+ Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes).
+ Attribute names are case-sensitive.
+
+ This can be useful for attributes with long values, where the likelihood of an exact match is high,
+ such as product descriptions.
+ Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes.
+ This reduces the impact of individual attributes with a lot of content on ranking.
+ default: []
+ x-categories:
+ - Query strategy
+ exactOnSingleWordQuery:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/exactOnSingleWordQuery'
+ alternativesAsExact:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/alternativesAsExact'
+ description: |
+ Determine which plurals and synonyms should be considered an exact matches.
+
+ By default, Algolia treats singular and plural forms of a word, and single-word synonyms, as [exact](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#exact) matches when searching.
+ For example:
+
+ - "swimsuit" and "swimsuits" are treated the same
+ - "swimsuit" and "swimwear" are treated the same (if they are [synonyms](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/adding-synonyms/#regular-synonyms)).
+
+ - `ignorePlurals`.
+ Plurals and similar declensions added by the `ignorePlurals` setting are considered exact matches.
+
+ - `singleWordSynonym`.
+ Single-word synonyms, such as "NY" = "NYC", are considered exact matches.
+
+ - `multiWordsSynonym`.
+ Multi-word synonyms, such as "NY" = "New York", are considered exact matches.
+ default: [ignorePlurals, singleWordSynonym]
+ x-categories:
+ - Query strategy
+ advancedSyntaxFeatures:
+ type: array
+ items:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/advancedSyntaxFeatures'
+ description: |
+ Advanced search syntax features you want to support.
+
+ - `exactPhrase`.
+ Phrases in quotes must match exactly.
+ For example, `sparkly blue "iPhone case"` only returns records with the exact string "iPhone case".
+
+ - `excludeWords`.
+ Query words prefixed with a `-` must not occur in a record.
+ For example, `search -engine` matches records that contain "search" but not "engine".
+
+ This setting only has an effect if `advancedSyntax` is true.
+ default: [exactPhrase, excludeWords]
+ x-categories:
+ - Query strategy
+ distinct:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/distinct'
+ getRankingInfo:
+ type: boolean
+ description: Whether the search response should include detailed ranking information.
+ clickAnalytics:
+ type: boolean
+ description: |
+ 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/guides/sending-events/getting-started/).
+ default: false
+ x-categories:
+ - Analytics
+ analytics:
+ type: boolean
+ description: Whether this search will be included in Analytics.
+ default: true
+ x-categories:
+ - Analytics
+ analyticsTags:
+ type: array
+ items:
+ type: string
+ description: Tags to apply to the query for [segmenting analytics data](https://www.algolia.com/doc/guides/search-analytics/guides/segments/).
+ default: []
+ x-categories:
+ - Analytics
+ synonyms:
+ type: boolean
+ description: Whether to take into account an index's synonyms for this search.
+ default: true
+ x-categories:
+ - Advanced
+ replaceSynonymsInHighlight:
+ type: boolean
+ description: |
+ Whether to replace a highlighted word with the matched synonym.
+
+ By default, the original words are highlighted even if a synonym matches.
+ For example, with `home` as a synonym for `house` and a search for `home`,
+ records matching either "home" or "house" are included in the search results,
+ and either "home" or "house" are highlighted.
+
+ With `replaceSynonymsInHighlight` set to `true`, a search for `home` still matches the same records,
+ but all occurrences of "house" are replaced by "home" in the highlighted response.
+ default: false
+ x-categories:
+ - Highlighting and Snippeting
+ minProximity:
+ type: integer
+ minimum: 1
+ maximum: 7
+ description: |
+ Minimum proximity score for two matching words.
+
+ This adjusts the [Proximity ranking criterion](https://www.algolia.com/doc/guides/managing-results/relevance-overview/in-depth/ranking-criteria/#proximity)
+ by equally scoring matches that are farther apart.
+
+ For example, if `minProximity` is 2, neighboring matches and matches with one word between them would have the same score.
+ default: 1
+ x-categories:
+ - Advanced
+ responseFields:
+ type: array
+ items:
+ type: string
+ description: |
+ Properties to include in the API response of `search` and `browse` requests.
+
+ By default, all response properties are included.
+ To reduce the response size, you can select, which attributes should be included.
+
+ You can't exclude these properties:
+ `message`, `warning`, `cursor`, `serverUsed`, `indexUsed`,
+ `abTestVariantID`, `parsedQuery`, or any property triggered by the `getRankingInfo` parameter.
+
+ Don't exclude properties that you might need in your search UI.
+ default: ['*']
+ x-categories:
+ - Advanced
+ maxFacetHits:
+ $ref: '../../../../common/schemas/IndexSettings.yml#/maxFacetHits'
+ percentileComputation:
+ type: boolean
+ description: Whether to include this search when calculating processing-time percentiles.
+ default: true
+ x-categories:
+ - Advanced
+ attributeCriteriaComputedByMinProximity:
+ type: boolean
+ description: |
+ Whether the best matching attribute should be determined by minimum proximity.
+
+ This setting only affects ranking if the Attribute ranking criterion comes before Proximity in the `ranking` setting.
+ If true, the best matching attribute is selected based on the minimum proximity of multiple matches.
+ Otherwise, the best matching attribute is determined by the order in the `searchableAttributes` setting.
+ default: false
+ x-categories:
+ - Advanced
+ enableABTest:
+ type: boolean
+ description: Whether to enable A/B testing for this search.
+ default: true
+ x-categories:
+ - Advanced
+ enableReRanking:
+ type: boolean
+ description: |
+ 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.
+ default: true
+ x-categories:
+ - Filtering
diff --git a/specs/composition-full/paths/advanced/getTask.yml b/specs/composition-full/paths/advanced/getTask.yml
index 5069d37f7ee..8098fbff468 100644
--- a/specs/composition-full/paths/advanced/getTask.yml
+++ b/specs/composition-full/paths/advanced/getTask.yml
@@ -12,7 +12,7 @@ get:
Checks the status of a given task.
summary: Check task status
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
- name: taskID
in: path
description: Unique task identifier.
diff --git a/specs/composition-full/paths/objects/objects.yml b/specs/composition-full/paths/objects/objects.yml
index c67cb3169d2..c0082dd175a 100644
--- a/specs/composition-full/paths/objects/objects.yml
+++ b/specs/composition-full/paths/objects/objects.yml
@@ -9,14 +9,14 @@ get:
description: |
Retrieve a single composition in the current Algolia application.
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
responses:
'200':
description: OK
content:
application/json:
schema:
- $ref: '../../common/schemas/Composition.yml#/composition'
+ $ref: '../../common/schemas/components/Composition.yml#/composition'
'400':
$ref: '../../../common/responses/BadRequest.yml'
'402':
diff --git a/specs/composition-full/paths/rules/rule.yml b/specs/composition-full/paths/rules/rule.yml
index 69f4d5f4b1f..325fa210186 100644
--- a/specs/composition-full/paths/rules/rule.yml
+++ b/specs/composition-full/paths/rules/rule.yml
@@ -10,7 +10,7 @@ get:
To find the object ID of rules, use the [`search` operation](#tag/Rules/operation/searchRules).
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
- $ref: './parameters.yml#/ObjectIDRule'
responses:
'200':
@@ -18,7 +18,7 @@ get:
content:
application/json:
schema:
- $ref: '../../common/schemas/CompositionRule.yml#/compositionRule'
+ $ref: '../../common/schemas/components/CompositionRule.yml#/compositionRule'
'400':
$ref: '../../../common/responses/BadRequest.yml'
'402':
diff --git a/specs/composition-full/paths/rules/saveRules.yml b/specs/composition-full/paths/rules/saveRules.yml
index c232f698bec..3b9d0c0bc0e 100644
--- a/specs/composition-full/paths/rules/saveRules.yml
+++ b/specs/composition-full/paths/rules/saveRules.yml
@@ -9,7 +9,7 @@ post:
Create or update or delete multiple composition rules.
x-codegen-request-body-name: rules
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
requestBody:
required: true
content:
diff --git a/specs/composition-full/paths/rules/searchRules.yml b/specs/composition-full/paths/rules/searchRules.yml
index eef139f27a6..1e4d8cb85a8 100644
--- a/specs/composition-full/paths/rules/searchRules.yml
+++ b/specs/composition-full/paths/rules/searchRules.yml
@@ -7,7 +7,7 @@ post:
summary: Search for composition rules
description: Searches for composition rules in your index.
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
requestBody:
content:
application/json:
@@ -20,7 +20,7 @@ post:
query:
$ref: './parameters.yml#/query'
anchoring:
- $ref: '../../common/schemas/CompositionRule.yml#/anchoring'
+ $ref: '../../common/schemas/components/CompositionRule.yml#/anchoring'
context:
type: string
description: Only return composition rules that match the context (exact match).
@@ -57,7 +57,7 @@ post:
type: array
description: Composition rules that matched the search criteria.
items:
- $ref: '../../common/schemas/CompositionRule.yml#/compositionRule'
+ $ref: '../../common/schemas/components/CompositionRule.yml#/compositionRule'
nbHits:
type: integer
description: Number of composition rules that matched the search criteria.
diff --git a/specs/composition-full/paths/search/search.yml b/specs/composition-full/paths/search/search.yml
index 317715ef48a..883d06448c4 100644
--- a/specs/composition-full/paths/search/search.yml
+++ b/specs/composition-full/paths/search/search.yml
@@ -9,7 +9,7 @@ post:
summary: Run a Composition
description: Runs a query on a single composition and returns matching results.
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
requestBody:
required: true
content:
diff --git a/specs/composition-full/paths/search/searchForFacetValues.yml b/specs/composition-full/paths/search/searchForFacetValues.yml
index 191d2ffc8b7..ea16cc43944 100644
--- a/specs/composition-full/paths/search/searchForFacetValues.yml
+++ b/specs/composition-full/paths/search/searchForFacetValues.yml
@@ -14,7 +14,7 @@ post:
You can adjust this with the `sortFacetValueBy` parameter.
- Searching for facet values doesn't work if you have **more than 65 searchable facets and searchable attributes combined**.
parameters:
- - $ref: '../../common/parameters.yml#/compositionID'
+ - $ref: '../urlParams.yml#/compositionID'
- name: facetName
description: |
Facet attribute in which to search for values.
diff --git a/specs/composition-full/common/parameters.yml b/specs/composition-full/paths/urlParams.yml
similarity index 50%
rename from specs/composition-full/common/parameters.yml
rename to specs/composition-full/paths/urlParams.yml
index c8a0ba2b889..a7a94f547da 100644
--- a/specs/composition-full/common/parameters.yml
+++ b/specs/composition-full/paths/urlParams.yml
@@ -4,8 +4,4 @@ compositionID:
description: Unique Composition ObjectID.
required: true
schema:
- $ref: '#/compositionObjectID'
-
-compositionObjectID:
- type: string
- description: Unique Composition ObjectID.
+ $ref: '../common/schemas/components/Composition.yml#/objectID'
From c6edd9c8d1630456f2cc3010431321fbfe0369e5 Mon Sep 17 00:00:00 2001
From: Clara Muller <5667350+ClaraMuller@users.noreply.github.com>
Date: Wed, 16 Jul 2025 10:47:06 +0200
Subject: [PATCH 2/4] refactor(specs): create
`composition-full/schemas/requestBodies` directory
---
.../common/schemas/components/CompositionRule.yml | 5 +++++
.../common/schemas/{ => requestBodies}/Batch.yml | 0
.../schemas/{ => requestBodies}/BatchCompositionAction.yml | 4 ++--
.../{ => requestBodies}/RulesBatchCompositionAction.yml | 4 ++--
specs/composition-full/paths/objects/multipleBatch.yml | 4 ++--
specs/composition-full/paths/rules/saveRules.yml | 4 ++--
6 files changed, 13 insertions(+), 8 deletions(-)
rename specs/composition-full/common/schemas/{ => requestBodies}/Batch.yml (100%)
rename specs/composition-full/common/schemas/{ => requestBodies}/BatchCompositionAction.yml (69%)
rename specs/composition-full/common/schemas/{ => requestBodies}/RulesBatchCompositionAction.yml (68%)
diff --git a/specs/composition-full/common/schemas/components/CompositionRule.yml b/specs/composition-full/common/schemas/components/CompositionRule.yml
index 797495ec3fd..dd5d115ab47 100644
--- a/specs/composition-full/common/schemas/components/CompositionRule.yml
+++ b/specs/composition-full/common/schemas/components/CompositionRule.yml
@@ -77,3 +77,8 @@ anchoring:
Empty queries are only allowed as patterns with `anchoring: is`.
enum: [is, startsWith, endsWith, contains]
+
+objectID:
+ type: string
+ example: 'my_composition_rule_object_id'
+ description: Composition rule unique identifier.
\ No newline at end of file
diff --git a/specs/composition-full/common/schemas/Batch.yml b/specs/composition-full/common/schemas/requestBodies/Batch.yml
similarity index 100%
rename from specs/composition-full/common/schemas/Batch.yml
rename to specs/composition-full/common/schemas/requestBodies/Batch.yml
diff --git a/specs/composition-full/common/schemas/BatchCompositionAction.yml b/specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml
similarity index 69%
rename from specs/composition-full/common/schemas/BatchCompositionAction.yml
rename to specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml
index fb9e7ce55f5..ac413adc9c2 100644
--- a/specs/composition-full/common/schemas/BatchCompositionAction.yml
+++ b/specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml
@@ -4,11 +4,11 @@ deleteCompositionAction:
additionalProperties: false
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../components/Composition.yml#/objectID'
required:
- objectID
batchCompositionAction:
oneOf:
- - $ref: './components/Composition.yml#/composition'
+ - $ref: '../components/Composition.yml#/composition'
- $ref: '#/deleteCompositionAction'
diff --git a/specs/composition-full/common/schemas/RulesBatchCompositionAction.yml b/specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml
similarity index 68%
rename from specs/composition-full/common/schemas/RulesBatchCompositionAction.yml
rename to specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml
index d7666524e41..5274c3ae775 100644
--- a/specs/composition-full/common/schemas/RulesBatchCompositionAction.yml
+++ b/specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml
@@ -4,11 +4,11 @@ deleteCompositionRuleAction:
additionalProperties: false
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../components/CompositionRule.yml#/objectID'
required:
- objectID
rulesBatchCompositionAction:
oneOf:
- - $ref: './components/CompositionRule.yml#/compositionRule'
+ - $ref: '../components/CompositionRule.yml#/compositionRule'
- $ref: '#/deleteCompositionRuleAction'
diff --git a/specs/composition-full/paths/objects/multipleBatch.yml b/specs/composition-full/paths/objects/multipleBatch.yml
index 525f9109892..2f61ce01c39 100644
--- a/specs/composition-full/paths/objects/multipleBatch.yml
+++ b/specs/composition-full/paths/objects/multipleBatch.yml
@@ -25,9 +25,9 @@ post:
additionalProperties: false
properties:
action:
- $ref: '../../common/schemas/Batch.yml#/action'
+ $ref: '../../common/schemas/requestBodies/Batch.yml#/action'
body:
- $ref: '../../common/schemas/BatchCompositionAction.yml#/batchCompositionAction'
+ $ref: '../../common/schemas/requestBodies/BatchCompositionAction.yml#/batchCompositionAction'
required:
- action
- body
diff --git a/specs/composition-full/paths/rules/saveRules.yml b/specs/composition-full/paths/rules/saveRules.yml
index 3b9d0c0bc0e..9cc72329065 100644
--- a/specs/composition-full/paths/rules/saveRules.yml
+++ b/specs/composition-full/paths/rules/saveRules.yml
@@ -28,9 +28,9 @@ post:
additionalProperties: false
properties:
action:
- $ref: '../../common/schemas/Batch.yml#/action'
+ $ref: '../../common/schemas/requestBodies/Batch.yml#/action'
body:
- $ref: '../../common/schemas/RulesBatchCompositionAction.yml#/rulesBatchCompositionAction'
+ $ref: '../../common/schemas/requestBodies/RulesBatchCompositionAction.yml#/rulesBatchCompositionAction'
required:
- action
- body
From 84283b6878122e1e696b44f7bdb255511106a896 Mon Sep 17 00:00:00 2001
From: Clara Muller <5667350+ClaraMuller@users.noreply.github.com>
Date: Wed, 16 Jul 2025 10:56:52 +0200
Subject: [PATCH 3/4] refactor(specs): create
`composition-full/schemas/responses` directory
---
.../{ => responses}/GetTaskResponse.yml | 2 +-
.../common/schemas/{ => responses}/Hit.yml | 10 +++++-----
.../ListCompositionsResponse.yml | 2 +-
.../SearchForFacetValuesResponse.yml | 4 ++--
.../schemas/{ => responses}/SearchResponse.yml | 18 +++++++++---------
.../helpers/waitForCompositionTask.yml | 2 +-
.../paths/advanced/getTask.yml | 2 +-
.../manage_compositions/listCompositions.yml | 2 +-
specs/composition-full/paths/search/search.yml | 2 +-
.../paths/search/searchForFacetValues.yml | 2 +-
10 files changed, 23 insertions(+), 23 deletions(-)
rename specs/composition-full/common/schemas/{ => responses}/GetTaskResponse.yml (62%)
rename specs/composition-full/common/schemas/{ => responses}/Hit.yml (72%)
rename specs/composition-full/common/schemas/{ => responses}/ListCompositionsResponse.yml (91%)
rename specs/composition-full/common/schemas/{ => responses}/SearchForFacetValuesResponse.yml (90%)
rename specs/composition-full/common/schemas/{ => responses}/SearchResponse.yml (82%)
diff --git a/specs/composition-full/common/schemas/GetTaskResponse.yml b/specs/composition-full/common/schemas/responses/GetTaskResponse.yml
similarity index 62%
rename from specs/composition-full/common/schemas/GetTaskResponse.yml
rename to specs/composition-full/common/schemas/responses/GetTaskResponse.yml
index 7b4213b832a..fe1f94d4be9 100644
--- a/specs/composition-full/common/schemas/GetTaskResponse.yml
+++ b/specs/composition-full/common/schemas/responses/GetTaskResponse.yml
@@ -3,6 +3,6 @@ type: object
additionalProperties: false
properties:
status:
- $ref: '../../../common/responses/common.yml#/taskStatus'
+ $ref: '../../../../common/responses/common.yml#/taskStatus'
required:
- status
diff --git a/specs/composition-full/common/schemas/Hit.yml b/specs/composition-full/common/schemas/responses/Hit.yml
similarity index 72%
rename from specs/composition-full/common/schemas/Hit.yml
rename to specs/composition-full/common/schemas/responses/Hit.yml
index 0460c23ac0f..bbce1eff6b8 100644
--- a/specs/composition-full/common/schemas/Hit.yml
+++ b/specs/composition-full/common/schemas/responses/Hit.yml
@@ -10,19 +10,19 @@ hit:
- objectID
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../../../../common/parameters.yml#/objectID'
_highlightResult:
- $ref: '../../../common/schemas/HighlightResult.yml#/highlightResultMap'
+ $ref: '../../../../common/schemas/HighlightResult.yml#/highlightResultMap'
_snippetResult:
- $ref: '../../../common/schemas/SnippetResult.yml#/snippetResultMap'
+ $ref: '../../../../common/schemas/SnippetResult.yml#/snippetResultMap'
_rankingInfo:
$ref: '#/rankingInfo'
_distinctSeqID:
- $ref: '../../../common/schemas/Hit.yml#/distinctSeqID'
+ $ref: '../../../../common/schemas/Hit.yml#/distinctSeqID'
rankingInfo:
allOf:
- - $ref: '../../../common/schemas/Hit.yml#/rankingInfo'
+ - $ref: '../../../../common/schemas/Hit.yml#/rankingInfo'
- $ref: '#/compositionRankingInfo'
compositionRankingInfo:
diff --git a/specs/composition-full/common/schemas/ListCompositionsResponse.yml b/specs/composition-full/common/schemas/responses/ListCompositionsResponse.yml
similarity index 91%
rename from specs/composition-full/common/schemas/ListCompositionsResponse.yml
rename to specs/composition-full/common/schemas/responses/ListCompositionsResponse.yml
index fe37e05dc43..f318f3c1661 100644
--- a/specs/composition-full/common/schemas/ListCompositionsResponse.yml
+++ b/specs/composition-full/common/schemas/responses/ListCompositionsResponse.yml
@@ -6,7 +6,7 @@ listCompositionsResponse:
type: array
description: All compositions in your Algolia application.
items:
- $ref: './components/Composition.yml#/composition'
+ $ref: '../components/Composition.yml#/composition'
nbPages:
type: integer
description: Number of pages.
diff --git a/specs/composition-full/common/schemas/SearchForFacetValuesResponse.yml b/specs/composition-full/common/schemas/responses/SearchForFacetValuesResponse.yml
similarity index 90%
rename from specs/composition-full/common/schemas/SearchForFacetValuesResponse.yml
rename to specs/composition-full/common/schemas/responses/SearchForFacetValuesResponse.yml
index e44521915e5..8c3b73ffa0b 100644
--- a/specs/composition-full/common/schemas/SearchForFacetValuesResponse.yml
+++ b/specs/composition-full/common/schemas/responses/SearchForFacetValuesResponse.yml
@@ -37,7 +37,7 @@ searchForFacetValuesResults:
example: 'Mobile phone'
type: string
highlighted:
- $ref: '../../../common/schemas/HighlightResult.yml#/highlightedValue'
+ $ref: '../../../../common/schemas/HighlightResult.yml#/highlightedValue'
count:
description: Number of records with this facet value. [The count may be approximated](https://support.algolia.com/hc/en-us/articles/4406975248145-Why-are-my-facet-and-hit-counts-not-accurate-).
type: integer
@@ -47,4 +47,4 @@ searchForFacetValuesResults:
Whether the facet count is exhaustive (true) or approximate (false).
For more information, see [Why are my facet and hit counts not accurate](https://support.algolia.com/hc/en-us/articles/4406975248145-Why-are-my-facet-and-hit-counts-not-accurate-).
processingTimeMS:
- $ref: '../../../common/schemas/SearchResponse.yml#/processingTimeMS'
+ $ref: '../../../../common/schemas/SearchResponse.yml#/processingTimeMS'
diff --git a/specs/composition-full/common/schemas/SearchResponse.yml b/specs/composition-full/common/schemas/responses/SearchResponse.yml
similarity index 82%
rename from specs/composition-full/common/schemas/SearchResponse.yml
rename to specs/composition-full/common/schemas/responses/SearchResponse.yml
index bce2f3a9186..53205b9894b 100644
--- a/specs/composition-full/common/schemas/SearchResponse.yml
+++ b/specs/composition-full/common/schemas/responses/SearchResponse.yml
@@ -18,7 +18,7 @@ searchResults:
searchResultsItem:
allOf:
- - $ref: '../../../common/schemas/SearchResponse.yml#/baseSearchResponse'
+ - $ref: '../../../../common/schemas/SearchResponse.yml#/baseSearchResponse'
- $ref: '#/SearchPagination'
- $ref: '#/searchHits'
- $ref: '#/resultsCompositionsResponse'
@@ -28,13 +28,13 @@ SearchPagination:
additionalProperties: false
properties:
page:
- $ref: '../../../common/schemas/SearchParams.yml#/page'
+ $ref: '../../../../common/schemas/SearchParams.yml#/page'
nbHits:
- $ref: '../../../common/schemas/SearchResponse.yml#/nbHits'
+ $ref: '../../../../common/schemas/SearchResponse.yml#/nbHits'
nbPages:
- $ref: '../../../common/schemas/SearchResponse.yml#/nbPages'
+ $ref: '../../../../common/schemas/SearchResponse.yml#/nbPages'
hitsPerPage:
- $ref: '../../../common/schemas/IndexSettings.yml#/hitsPerPage'
+ $ref: '../../../../common/schemas/IndexSettings.yml#/hitsPerPage'
required:
- page
- nbHits
@@ -54,7 +54,7 @@ searchHits:
items:
$ref: 'Hit.yml#/hit'
query:
- $ref: '../../../common/schemas/SearchParams.yml#/query'
+ $ref: '../../../../common/schemas/SearchParams.yml#/query'
params:
type: string
description: URL-encoded string of all search parameters.
@@ -98,7 +98,7 @@ resultsInjectedItemInfoResponse:
type: object
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../../../../common/parameters.yml#/objectID'
required:
- objectID
required:
@@ -130,7 +130,7 @@ compositionRunSearchResponse:
additionalProperties: true
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../../../../common/parameters.yml#/objectID'
appliedRules:
type: array
items:
@@ -138,7 +138,7 @@ compositionRunSearchResponse:
type: object
properties:
objectID:
- $ref: '../../../common/parameters.yml#/objectID'
+ $ref: '../../../../common/parameters.yml#/objectID'
required:
- objectID
required:
diff --git a/specs/composition-full/helpers/waitForCompositionTask.yml b/specs/composition-full/helpers/waitForCompositionTask.yml
index b84d09ce51a..85d1da58942 100644
--- a/specs/composition-full/helpers/waitForCompositionTask.yml
+++ b/specs/composition-full/helpers/waitForCompositionTask.yml
@@ -29,6 +29,6 @@ method:
content:
application/json:
schema:
- $ref: '../common/schemas/GetTaskResponse.yml'
+ $ref: '../common/schemas/responses/GetTaskResponse.yml'
'400':
$ref: '../../common/responses/CompositionNotFound.yml'
diff --git a/specs/composition-full/paths/advanced/getTask.yml b/specs/composition-full/paths/advanced/getTask.yml
index 8098fbff468..c80f122c922 100644
--- a/specs/composition-full/paths/advanced/getTask.yml
+++ b/specs/composition-full/paths/advanced/getTask.yml
@@ -27,7 +27,7 @@ get:
content:
application/json:
schema:
- $ref: '../../common/schemas/GetTaskResponse.yml'
+ $ref: '../../common/schemas/responses/GetTaskResponse.yml'
'400':
$ref: '../../../common/responses/BadRequest.yml'
'402':
diff --git a/specs/composition-full/paths/manage_compositions/listCompositions.yml b/specs/composition-full/paths/manage_compositions/listCompositions.yml
index e7d897d65aa..94fde6f8872 100644
--- a/specs/composition-full/paths/manage_compositions/listCompositions.yml
+++ b/specs/composition-full/paths/manage_compositions/listCompositions.yml
@@ -17,7 +17,7 @@ get:
content:
application/json:
schema:
- $ref: '../../common/schemas/ListCompositionsResponse.yml#/listCompositionsResponse'
+ $ref: '../../common/schemas/responses/ListCompositionsResponse.yml#/listCompositionsResponse'
'400':
$ref: '../../../common/responses/BadRequest.yml'
'402':
diff --git a/specs/composition-full/paths/search/search.yml b/specs/composition-full/paths/search/search.yml
index 883d06448c4..b9d9fd3a3e1 100644
--- a/specs/composition-full/paths/search/search.yml
+++ b/specs/composition-full/paths/search/search.yml
@@ -27,7 +27,7 @@ post:
content:
application/json:
schema:
- $ref: '../../common/schemas/SearchResponse.yml#/searchResponse'
+ $ref: '../../common/schemas/responses/SearchResponse.yml#/searchResponse'
'400':
$ref: '../../../common/responses/BadRequest.yml'
'402':
diff --git a/specs/composition-full/paths/search/searchForFacetValues.yml b/specs/composition-full/paths/search/searchForFacetValues.yml
index ea16cc43944..8f2164a4218 100644
--- a/specs/composition-full/paths/search/searchForFacetValues.yml
+++ b/specs/composition-full/paths/search/searchForFacetValues.yml
@@ -48,7 +48,7 @@ post:
content:
application/json:
schema:
- $ref: '../../common/schemas/SearchForFacetValuesResponse.yml#/searchForFacetValuesResponse'
+ $ref: '../../common/schemas/responses/SearchForFacetValuesResponse.yml#/searchForFacetValuesResponse'
'400':
$ref: '../../../common/responses/BadRequest.yml'
'402':
From 14f3cbc64f400f971914fa09aecb9ce8020932c6 Mon Sep 17 00:00:00 2001
From: Clara Muller <5667350+ClaraMuller@users.noreply.github.com>
Date: Wed, 16 Jul 2025 15:07:48 +0200
Subject: [PATCH 4/4] fix: apply comments
---
specs/composition-full/common/schemas/Identifiers.yml | 9 +++++++++
.../common/schemas/components/Composition.yml | 9 ++-------
.../common/schemas/components/CompositionRule.yml | 9 ++-------
.../schemas/requestBodies/BatchCompositionAction.yml | 2 +-
.../requestBodies/RulesBatchCompositionAction.yml | 2 +-
specs/composition-full/paths/urlParams.yml | 2 +-
6 files changed, 16 insertions(+), 17 deletions(-)
create mode 100644 specs/composition-full/common/schemas/Identifiers.yml
diff --git a/specs/composition-full/common/schemas/Identifiers.yml b/specs/composition-full/common/schemas/Identifiers.yml
new file mode 100644
index 00000000000..d0fa89eb592
--- /dev/null
+++ b/specs/composition-full/common/schemas/Identifiers.yml
@@ -0,0 +1,9 @@
+compositionObjectID:
+ type: string
+ example: 'my_composition_object_id'
+ description: Composition unique identifier.
+
+compositionRuleObjectID:
+ type: string
+ example: 'my_composition_rule_object_id'
+ description: Composition rule unique identifier.
\ No newline at end of file
diff --git a/specs/composition-full/common/schemas/components/Composition.yml b/specs/composition-full/common/schemas/components/Composition.yml
index d246be22452..8b0814c5934 100644
--- a/specs/composition-full/common/schemas/components/Composition.yml
+++ b/specs/composition-full/common/schemas/components/Composition.yml
@@ -3,7 +3,7 @@ composition:
additionalProperties: false
properties:
objectID:
- $ref: '#/objectID'
+ $ref: '../Identifiers.yml#/compositionObjectID'
name:
type: string
description: Composition name.
@@ -17,9 +17,4 @@ composition:
required:
- objectID
- behavior
- - name
-
-objectID:
- type: string
- example: 'my_composition_object_id'
- description: Composition unique identifier.
\ No newline at end of file
+ - name
\ No newline at end of file
diff --git a/specs/composition-full/common/schemas/components/CompositionRule.yml b/specs/composition-full/common/schemas/components/CompositionRule.yml
index dd5d115ab47..2bf9f3939b8 100644
--- a/specs/composition-full/common/schemas/components/CompositionRule.yml
+++ b/specs/composition-full/common/schemas/components/CompositionRule.yml
@@ -3,7 +3,7 @@ compositionRule:
additionalProperties: false
properties:
objectID:
- $ref: '../../../../common/parameters.yml#/objectID'
+ $ref: '../Identifiers.yml#/compositionRuleObjectID'
conditions:
type: array
minItems: 0
@@ -76,9 +76,4 @@ anchoring:
- `contains`. The pattern must match anywhere in the query.
Empty queries are only allowed as patterns with `anchoring: is`.
- enum: [is, startsWith, endsWith, contains]
-
-objectID:
- type: string
- example: 'my_composition_rule_object_id'
- description: Composition rule unique identifier.
\ No newline at end of file
+ enum: [is, startsWith, endsWith, contains]
\ No newline at end of file
diff --git a/specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml b/specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml
index ac413adc9c2..ae8062fb122 100644
--- a/specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml
+++ b/specs/composition-full/common/schemas/requestBodies/BatchCompositionAction.yml
@@ -4,7 +4,7 @@ deleteCompositionAction:
additionalProperties: false
properties:
objectID:
- $ref: '../components/Composition.yml#/objectID'
+ $ref: '../Identifiers.yml#/compositionObjectID'
required:
- objectID
diff --git a/specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml b/specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml
index 5274c3ae775..8f1537f6d32 100644
--- a/specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml
+++ b/specs/composition-full/common/schemas/requestBodies/RulesBatchCompositionAction.yml
@@ -4,7 +4,7 @@ deleteCompositionRuleAction:
additionalProperties: false
properties:
objectID:
- $ref: '../components/CompositionRule.yml#/objectID'
+ $ref: '../Identifiers.yml#/compositionRuleObjectID'
required:
- objectID
diff --git a/specs/composition-full/paths/urlParams.yml b/specs/composition-full/paths/urlParams.yml
index a7a94f547da..a0914ba915b 100644
--- a/specs/composition-full/paths/urlParams.yml
+++ b/specs/composition-full/paths/urlParams.yml
@@ -4,4 +4,4 @@ compositionID:
description: Unique Composition ObjectID.
required: true
schema:
- $ref: '../common/schemas/components/Composition.yml#/objectID'
+ $ref: '../common/schemas/Identifiers.yml#/compositionObjectID'