# Records

Operations for records

## Get the detail page

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"DetailPage":{"required":["fieldRoles"],"type":"object","properties":{"campaigns":{"type":"array","description":"Active campaigns for the product with the requested ID.","items":{"$ref":"#/components/schemas/Campaign"}},"fieldRoles":{"type":"object","additionalProperties":{"type":"string","description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"geo":{"$ref":"#/components/schemas/Geo"},"recommendations":{"$ref":"#/components/schemas/RecommendationResult"},"record":{"$ref":"#/components/schemas/RecordWithId"},"similarProducts":{"$ref":"#/components/schemas/SimilarProducts"}}},"Campaign":{"required":["advisorTree","category","flavour"],"type":"object","properties":{"activeQuestions":{"type":"array","description":"The currently active questions to be shown to the user. These questions do not need to be the root questions, in case the user has already answered a question.","items":{"$ref":"#/components/schemas/Question"}},"ad":{"type":"boolean","description":"The setting which defines if this campaign is used as an ad."},"advisorTree":{"type":"array","description":"The advisor root questions associated with this campaign.","items":{"$ref":"#/components/schemas/Question"}},"category":{"type":"string","description":"The category of the campaign. May be empty."},"excludeProductsNotInMarkets":{"type":"boolean","description":"The setting which decides whether pushed products should be excluded if they are not mapped to any selected market."},"excludeProductsNotInRange":{"type":"boolean","description":"The setting which decides whether pushed products should be excluded if they are not close enough to the search location."},"feedbackTexts":{"type":"array","description":"The feedback text lines that will be displayed to the user.","items":{"$ref":"#/components/schemas/FeedbackText"}},"flavour":{"type":"string","description":"The kind of the campaign.","enum":["ADVISOR","REDIRECT","FEEDBACK","PRODUCT"]},"hits":{"type":"array","description":"The records associated with the campaign, if it should push products.","items":{"$ref":"#/components/schemas/RecordWithId"}},"id":{"type":"string","description":"The ID of the campaign."},"name":{"type":"string","description":"The name of the campaign."},"target":{"$ref":"#/components/schemas/Target"}}},"Question":{"required":["answers","id","text","visible"],"type":"object","properties":{"answers":{"type":"array","description":"The answers associated to this question.","items":{"$ref":"#/components/schemas/Answer"}},"id":{"type":"string","description":"The ID of the question."},"text":{"type":"string","description":"The text to be shown to the user."},"visible":{"type":"boolean","description":"Set to true when the question is visible."}}},"Answer":{"required":["id","searchParams","selected","text"],"type":"object","properties":{"id":{"type":"string","description":"ID of this answer."},"questions":{"type":"array","description":"The questions to be shown when the answer is selected.","items":{"$ref":"#/components/schemas/Question"}},"searchParams":{"$ref":"#/components/schemas/SearchParams"},"selected":{"type":"boolean","description":"True if the answer has been selected."},"text":{"type":"string","description":"Text, shown when the answer is active."}}},"SearchParams":{"required":["query"],"type":"object","properties":{"activeAbTests":{"type":"object","additionalProperties":{"type":"string","description":"The active ab tests variants."},"description":"The active ab tests variants."},"advisorStatus":{"$ref":"#/components/schemas/AdvisorCampaignStatusHolder"},"articleNumberSearch":{"type":"string","description":"Specifies if the search term should be interpreted as article number. Defaults to DETECT.","enum":["DETECT","ALWAYS","NEVER"]},"customParameters":{"type":"array","description":"May be used to provide custom parameters, such as for custom classes.","items":{"$ref":"#/components/schemas/CustomParameter"}},"exactSearchMode":{"type":"string","description":"Specifies whether the search term should be considered for the exact search, and how. Defaults to the mode that is configured for the channel.","enum":["LEGACY","DISABLED","EXACT_ONLY","EXACT_AND_FUZZY_FALLBACK","EXACT_AND_ALWAYS_FUZZY","EXACT_AND_REMAINDER_FUZZY"]},"excludeProductsNotInRange":{"type":"boolean","description":"Overrides the excludeProductsNotInRange setting for the geo search."},"filters":{"type":"array","description":"The filters to limit the search result.","items":{"$ref":"#/components/schemas/Filter"}},"followSearch":{"type":"string","description":"Optional request linking param from a previous search result or search param object. Can improve request performance."},"hitsPerPage":{"minimum":0,"type":"integer","description":"Number of products on a single page.","format":"int32"},"location":{"$ref":"#/components/schemas/Location"},"marketIds":{"uniqueItems":true,"type":"array","description":"Only show products that have values for these market IDs.","items":{"type":"string"}},"maxCountVariants":{"type":"integer","description":"Defines the maximum number of variants to be returned in the result.","format":"int32"},"maxDistance":{"minimum":1,"type":"number","description":"Overrides the maximum distance setting for the geo search.","format":"double"},"page":{"minimum":1,"type":"integer","description":"The page to be requested within the search result.","format":"int32"},"purchaserId":{"maxLength":2147483647,"minLength":1,"type":"string","description":"The ID of the purchaser. This ID is only needed if the 'Customer-Specific Info' module is activated. Otherwise it will be ignored."},"query":{"type":"string","description":"The search term."},"searchField":{"type":"string","description":"If set, the search term will be looked for only in the given field. Otherwise all searchable fields will be considered (for article number searches, all fields marked as containing article numbers)."},"showMarkets":{"type":"boolean","description":"Overrides the showMarkets setting for the geo search."},"showPermutedSearchParams":{"type":"boolean","description":"Specifies whether to include search parameters in the response for facet and sort item elements."},"sortItems":{"type":"array","description":"Specifies the sort order for the search result.","items":{"$ref":"#/components/schemas/SortItem"}},"splitDocumentsAt":{"type":"integer","description":"Threshold for variant splitting of documents.","format":"int32"}},"description":"Defines the search that should be executed when the element is clicked."},"AdvisorCampaignStatusHolder":{"required":["id"],"type":"object","properties":{"answerPath":{"type":"string","description":"The currently active path within the advisor tree, which should end at an answer: _QuestionID_AnswerID_QuestionID_AnswerID. If empty or null, the root questions will be shown."},"id":{"type":"string","description":"ID of the advisor campaign."}},"description":"Describes the advisor campaign that is currently active."},"CustomParameter":{"required":["cacheIrrelevant","name","values"],"type":"object","properties":{"cacheIrrelevant":{"type":"boolean","description":"When set to true, the custom parameter will not influence caching."},"name":{"type":"string","description":"The parameter name."},"values":{"type":"array","description":"The parameter values.","items":{"type":"string"}}}},"Filter":{"required":["name","substring","values"],"type":"object","properties":{"filterWarning":{"type":"string","description":"Contains warning about invalid filters (e.g. non-existent field or non-existent value).","enum":["NON_EXISTING_FIELD","NON_EXISTING_FIELD_VALUE"]},"name":{"type":"string","description":"The name of the filter."},"substring":{"type":"boolean","description":"If true, filter values will be applied as 'contains' instead of 'equals'."},"values":{"type":"array","description":"Filter values.","items":{"$ref":"#/components/schemas/FilterValue"}}}},"FilterValue":{"required":["exclude","type","value"],"type":"object","properties":{"exclude":{"type":"boolean","description":"When set to true, the filter will match when the record value does not equal the filter value."},"type":{"type":"string","description":"Describes how this filter value should interact with the corresponding filter field.","enum":["or","and"]},"value":{"$ref":"#/components/schemas/FilterValueInput"}}},"FilterValueInput":{"description":"The value to which the record values will be compared.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"Location":{"required":["latitude","longitude"],"type":"object","properties":{"latitude":{"maximum":90,"minimum":-90,"type":"number","description":"The latitude coordinate of the location.","format":"double"},"longitude":{"maximum":180,"minimum":-180,"type":"number","description":"The longitude coordinate of the location.","format":"double"}},"description":"The location of the market."},"SortItem":{"required":["name","order"],"type":"object","properties":{"name":{"type":"string","description":"The name of the field to be sorted by, or 'Relevancy', for score based sorting."},"order":{"type":"string","description":"The sort order direction (ascending, descending).","enum":["asc","desc"]}}},"FeedbackText":{"required":["html","label","teaser"],"type":"object","properties":{"html":{"type":"boolean","description":"Set to true, if the text should be displayed as HTML."},"label":{"type":"string","description":"Describes where the text should be displayed."},"position":{"type":"integer","description":"The position the text should be displayed at if it is a teaser","format":"int32"},"teaser":{"type":"boolean","description":"Set to true, if the text is considered a teaser"},"text":{"type":"string","description":"The text to be shown to the user."}}},"RecordWithId":{"required":["id","masterValues","variantValues"],"type":"object","properties":{"id":{"type":"string","description":"The ID of the record."},"masterValues":{"type":"object","additionalProperties":{"type":"object","description":"Contains all fields in the record, with a string representation of the respective values."},"description":"Contains all fields in the record, with a string representation of the respective values."},"variantValues":{"type":"array","description":"Contains variants. The values are mapped from field names to the field value.","items":{"$ref":"#/components/schemas/VariantValues"}}}},"VariantValues":{"title":"VariantValues","type":"object","additionalProperties":{"type":"object"},"description":"Contains variants. The values are mapped from field names to the field value."},"Target":{"required":["destination"],"type":"object","properties":{"destination":{"type":"string","description":"The URL to which the user should be redirected."},"name":{"type":"string","description":"A name to identify the target URL."}},"description":"The redirect target."},"Geo":{"required":["markets","selectedMarkets","showDistance","showMarkets"],"type":"object","properties":{"markets":{"type":"array","description":"The unselected markets","items":{"$ref":"#/components/schemas/Market"}},"selectedMarkets":{"type":"array","description":"The selected markets","items":{"$ref":"#/components/schemas/Market"}},"showDistance":{"type":"boolean","description":"Should show the distance attached to the markets."},"showMarkets":{"type":"boolean","description":"Should show the list of all existing markets."}},"description":"Contains the selected and unselected markets."},"Market":{"type":"object","properties":{"distance":{"type":"number","description":"The distance between the location of the search and the market location associated with this element.","format":"double"},"hasProducts":{"type":"boolean","description":"True, if the market has at least one product mapped to it in the current search result, otherwise false."},"id":{"type":"string","description":"Id of the market"},"location":{"$ref":"#/components/schemas/Location"},"searchParams":{"$ref":"#/components/schemas/SearchParams"},"selected":{"type":"string","description":"TRUE, if the element is currently selected, otherwise FALSE.","enum":["TRUE","FALSE","IMPLICIT","IRRELEVANT"]}}},"RecommendationResult":{"required":["hits","timedOut"],"type":"object","properties":{"hits":{"type":"array","description":"Records of the recommended products.","items":{"$ref":"#/components/schemas/RecordWithId"}},"timedOut":{"type":"boolean","description":"Set to true when a timeout occurs."}},"description":"Recommendations for the product with the requested ID."},"SimilarProducts":{"required":["attributes","hits"],"type":"object","properties":{"attributes":{"type":"array","description":"The criteria used to find the similar products.","items":{"$ref":"#/components/schemas/SimilarAttributeInfo"}},"hits":{"type":"array","description":"The similar products.","items":{"$ref":"#/components/schemas/RecordWithId"}}},"description":"Products similar to the product with the requested ID."},"SimilarAttributeInfo":{"required":["name","value"],"type":"object","properties":{"name":{"type":"string","description":"The name of the field containing the attribute to be compared for similarity."},"value":{"type":"string","description":"Attribute value."}}},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/detail/{channel}/{id}":{"get":{"tags":["records"],"summary":"Get the detail page","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getDetailPage","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"excludeProductsNotInRange","in":"query","description":"Use this parameter to override the geo setting \"exclude products not in range\" for this request.","required":false,"schema":{"type":"boolean"}},{"name":"filter","in":"query","description":"Filters for field values of returned similar articles, recommendations, and pushed products.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"path","description":"The id for which the detailpage should be returned.","required":true,"schema":{"type":"string"}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"id"}},{"name":"idsOnly","in":"query","description":"If the value true is passed, then only the record IDs will be returned, streamlining the results. Additionally, if the Geo module is enabled, the IDs of all markets the product is mapped to will be also included. If you do not need the other information in the results, this will help you to improve performance.","required":false,"schema":{"type":"boolean","default":false}},{"name":"latitude","in":"query","description":"The latitude coordinate of the current location.","required":false,"schema":{"maximum":90,"minimum":-90,"type":"number","format":"double"}},{"name":"longitude","in":"query","description":"The longitude coordinate of the current location.","required":false,"schema":{"maximum":180,"minimum":-180,"type":"number","format":"double"}},{"name":"marketId","in":"query","description":"Currently selected markets","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"maxCountVariants","in":"query","description":"The maximum number of variants to return for every record","required":false,"schema":{"type":"integer","format":"int32","default":5}},{"name":"maxDistance","in":"query","description":"Use this parameter to override the geo setting \"maximum distance\" for this request.","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxResultsRecommendations","in":"query","description":"Use this parameter to specify the number of recommendations you would like. The default value from the configuration is used if the parameter is not specified.","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"maxResultsSimilarProducts","in":"query","description":"Use this parameter to specify the number of similar articles you would like. The default value from the configuration is used if the parameter is not specified.","required":false,"schema":{"minimum":1,"type":"integer","format":"int32","default":10}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}},{"name":"showMarkets","in":"query","description":"Specifies whether the list of all existing markets and their distance to the search location should be included in the response. By default, the GEO setting \"showMarkets\" is applied.","required":false,"schema":{"type":"boolean"}},{"name":"sid","in":"query","description":"This parameter is used to pass an id for the user session. This is important for recognising the user, if you want to trigger personalised campaigns, as well as for FACT-Finder tracking.","required":false,"schema":{"type":"string"}},{"name":"usePersonalization","in":"query","description":"Allows the activation/deactivation of the personalization of queries. true = the search result will be personalized if the personalization module is activated and all other requirements are met; false = the search result will not be personalized.","required":false,"schema":{"type":"boolean","default":true}},{"name":"userId","in":"query","description":"This parameter is used to pass a user id for personalization across sessions. Required for Loop54 integrations.","required":false,"schema":{"type":"string"}},{"name":"withCampaigns","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"withRecommendations","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"withRecord","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"withSimilarProducts","in":"query","required":false,"schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailPage"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get markets with location

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"MarketRecord":{"title":"MarketRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a market record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/markets/{channel}":{"get":{"tags":["records"],"summary":"Get markets with location","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getMarkets","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"marketId","in":"query","description":"The market ids.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketRecord"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Update markets

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"MarketRecord":{"title":"MarketRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a market record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"MarketUpdateResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"record":{"$ref":"#/components/schemas/MarketRecord"},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/markets/{channel}":{"post":{"tags":["records"],"summary":"Update markets","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"updateMarkets","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The markets which should be updated","items":{"$ref":"#/components/schemas/MarketRecord"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketUpdateResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Delete geo market

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"DeleteMarketRequest":{"type":"object","properties":{"marketIds":{"type":"array","description":"The ids of the markets which should be deleted.","items":{"type":"string"}}}},"DeleteResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"recordId":{"type":"string","description":"The id of the record which should be deleted."},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/markets/{channel}":{"delete":{"tags":["records"],"summary":"Delete geo market","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"deleteMarket","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"marketId","in":"query","description":"The ids of the markets which should be deleted.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMarketRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeleteResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get records

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"FlatRecordsResult":{"required":["fieldRoles","records"],"type":"object","properties":{"fieldRoles":{"type":"object","additionalProperties":{"type":"string","description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"records":{"type":"array","description":"A list of found records. Records for IDs which are not present in database will be missing.","items":{"$ref":"#/components/schemas/FlatRecord"}}},"description":"Contains a list of worldmatch records."},"FlatRecord":{"title":"FlatRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a FactFinder record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}":{"get":{"tags":["records"],"summary":"Get records","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getRecords","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"productNumber","in":"query","description":"The product numbers of the records which should be returned.","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlatRecordsResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Insert records

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"FlatRecord":{"title":"FlatRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a FactFinder record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"DeltaUpdateResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"record":{"$ref":"#/components/schemas/FlatRecord"},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}":{"post":{"tags":["records"],"summary":"Insert records","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"insertRecords","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The records which should be inserted","items":{"$ref":"#/components/schemas/FlatRecord"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeltaUpdateResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Update records

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"FlatRecord":{"title":"FlatRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a FactFinder record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"DeltaUpdateResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"record":{"$ref":"#/components/schemas/FlatRecord"},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}":{"put":{"tags":["records"],"summary":"Update records","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"updateRecords","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The records which should be updated","items":{"$ref":"#/components/schemas/FlatRecord"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeltaUpdateResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Delete records

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"DeleteRequest":{"type":"object","properties":{"ids":{"type":"array","description":"The ids of the records which should be deleted.","items":{"type":"string"}}}},"DeleteResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"recordId":{"type":"string","description":"The id of the record which should be deleted."},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}":{"delete":{"tags":["records"],"summary":"Delete records","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"deleteRecords","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The ids from the records which should be deleted.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"productNumber"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeleteResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Compare products

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"CompareResult":{"required":["attributes","fieldRoles","records"],"type":"object","properties":{"attributes":{"type":"array","description":"The result of the comparison process, with information about differences.","items":{"$ref":"#/components/schemas/CompareAttribute"}},"fieldRoles":{"type":"object","additionalProperties":{"type":"string","description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"records":{"type":"array","description":"The records that were compared.","items":{"$ref":"#/components/schemas/TypedFlatRecord"}}}},"CompareAttribute":{"required":["different","name","sourceField"],"type":"object","properties":{"different":{"type":"boolean","description":"Set to true if the compared products have different values for the attribute."},"name":{"type":"string","description":"The name of the attribute."},"sourceField":{"type":"string","description":"The name of the database field that contains the attribute."}}},"TypedFlatRecord":{"required":["values"],"type":"object","properties":{"id":{"type":"string"},"values":{"type":"object","additionalProperties":{"type":"object","description":"Contains all the fields present in the record and their corresponding values. If variants exists the values of a specific variant (usually the first) are merged into this map."},"description":"Contains all the fields present in the record and their corresponding values. If variants exists the values of a specific variant (usually the first) are merged into this map."}}},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/compare":{"get":{"tags":["records"],"summary":"Compare products","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"compare","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"Use this parameter to pass product ID(s) which should be compared.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idsOnly","in":"query","description":"If the value true is passed, then only the record IDs will be returned, streamlining the results. Additionally, if the Geo module is enabled, the IDs of all markets the product is mapped to will be also included. If you do not need the other information in the results, this will help you to improve performance.","required":false,"schema":{"type":"boolean","default":false}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get customer specific prices

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"CustomerPriceRecord":{"title":"CustomerPriceRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a record of customer prices. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/customerprices":{"get":{"tags":["records"],"summary":"Get customer specific prices","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getCustomerPrices","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The product numbers of the records for which customer prices should be returned.","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"productNumber"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomerPriceRecord"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Update customer prices

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"CustomerPriceRecord":{"title":"CustomerPriceRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a record of customer prices. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"CustomerPriceUpdateResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"record":{"$ref":"#/components/schemas/CustomerPriceRecord"},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/customerprices":{"post":{"tags":["records"],"summary":"Update customer prices","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"updateCustomerPrices","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The records which should be inserted","items":{"$ref":"#/components/schemas/CustomerPriceRecord"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomerPriceUpdateResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Delete customer prices

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"DeleteRequest":{"type":"object","properties":{"ids":{"type":"array","description":"The ids of the records which should be deleted.","items":{"type":"string"}}}},"DeleteResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"recordId":{"type":"string","description":"The id of the record which should be deleted."},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/customerprices":{"delete":{"tags":["records"],"summary":"Delete customer prices","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"deleteCustomerPrices","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The ids from the records which should be deleted.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"productNumber"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeleteResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get full records

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"FullRecordsResult":{"required":["fieldRoles","records"],"type":"object","properties":{"fieldRoles":{"type":"object","additionalProperties":{"type":"string","description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"records":{"type":"array","description":"A list of found records. Records for IDs which are not present in database will be missing.","items":{"$ref":"#/components/schemas/FullRecord"}}},"description":"Contains a list of full records with master and variant values."},"FullRecord":{"required":["masterValues","variantValues"],"type":"object","properties":{"masterValues":{"type":"object","additionalProperties":{"type":"object","description":"Contains all fields in the record, with a string representation of the respective values."},"description":"Contains all fields in the record, with a string representation of the respective values."},"variantValues":{"type":"array","description":"Contains variants. The values are mapped from field names to the field value.","items":{"$ref":"#/components/schemas/VariantValues"}}},"description":"Represents a record with master and variant values."},"VariantValues":{"title":"VariantValues","type":"object","additionalProperties":{"type":"object"},"description":"Contains variants. The values are mapped from field names to the field value."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/full":{"get":{"tags":["records"],"summary":"Get full records","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getFullRecords","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The record ids of the records which should be returned","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"id"}},{"name":"maxCountVariants","in":"query","description":"The maximum number of variants to return for every record","required":false,"schema":{"type":"integer","format":"int32","default":5}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullRecordsResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get geo data

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"GeoRecord":{"title":"GeoRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a geo record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/geo":{"get":{"tags":["records"],"summary":"Get geo data","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getGeo","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The product numbers of the records for which geo data should be returned.","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeoRecord"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Update geo data

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"GeoRecord":{"title":"GeoRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a geo record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"GeoUpdateResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"record":{"$ref":"#/components/schemas/GeoRecord"},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/geo":{"post":{"tags":["records"],"summary":"Update geo data","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"updateGeo","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The records which should be updated","items":{"$ref":"#/components/schemas/GeoRecord"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeoUpdateResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Delete geo data

> \<b>Required Roles\</b>: \<em>ApiImport\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"DeleteRequest":{"type":"object","properties":{"ids":{"type":"array","description":"The ids of the records which should be deleted.","items":{"type":"string"}}}},"DeleteResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"recordId":{"type":"string","description":"The id of the record which should be deleted."},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/geo":{"delete":{"tags":["records"],"summary":"Delete geo data","description":"<b>Required Roles</b>: <em>ApiImport</em>","operationId":"deleteGeo","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The ids from the records which should be deleted.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeleteResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Retrieve record metadata

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"RecordMetaResult":{"type":"object","properties":{"entries":{"type":"array","description":"A list of record meta information.","items":{"$ref":"#/components/schemas/RecordMeta"}}}},"RecordMeta":{"type":"object","properties":{"id":{"type":"string","description":"The record ID. Depending on the chosen ID type, this field contains the master or variant ID."},"state":{"type":"string","description":"The visibility of this record.","enum":["VISIBLE","NOT_FOUND"]}}},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/meta":{"get":{"tags":["records"],"summary":"Retrieve record metadata","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getRecordMetaGet","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"The record ids of the records which should be returned","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"id"}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordMetaResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Retrieve record metadata

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"MetaRequest":{"required":["ids"],"type":"object","properties":{"ids":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The record ids of the records which should be returned.","items":{"type":"string"}}}},"RecordMetaResult":{"type":"object","properties":{"entries":{"type":"array","description":"A list of record meta information.","items":{"$ref":"#/components/schemas/RecordMeta"}}}},"RecordMeta":{"type":"object","properties":{"id":{"type":"string","description":"The record ID. Depending on the chosen ID type, this field contains the master or variant ID."},"state":{"type":"string","description":"The visibility of this record.","enum":["VISIBLE","NOT_FOUND"]}}},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/meta":{"post":{"tags":["records"],"summary":"Retrieve record metadata","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getRecordMetaPost","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":false,"schema":{"type":"string","enum":["productNumber","id"],"default":"id"}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetaRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordMetaResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get recommendations

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"RecommendationResultWithFieldRoles":{"required":["fieldRoles","hits","timedOut"],"type":"object","properties":{"fieldRoles":{"type":"object","additionalProperties":{"type":"string","description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"geo":{"$ref":"#/components/schemas/Geo"},"hits":{"type":"array","description":"Records of the recommended products.","items":{"$ref":"#/components/schemas/RecordWithId"}},"timedOut":{"type":"boolean","description":"Set to true when a timeout occurs."}}},"Geo":{"required":["markets","selectedMarkets","showDistance","showMarkets"],"type":"object","properties":{"markets":{"type":"array","description":"The unselected markets","items":{"$ref":"#/components/schemas/Market"}},"selectedMarkets":{"type":"array","description":"The selected markets","items":{"$ref":"#/components/schemas/Market"}},"showDistance":{"type":"boolean","description":"Should show the distance attached to the markets."},"showMarkets":{"type":"boolean","description":"Should show the list of all existing markets."}},"description":"Contains the selected and unselected markets."},"Market":{"type":"object","properties":{"distance":{"type":"number","description":"The distance between the location of the search and the market location associated with this element.","format":"double"},"hasProducts":{"type":"boolean","description":"True, if the market has at least one product mapped to it in the current search result, otherwise false."},"id":{"type":"string","description":"Id of the market"},"location":{"$ref":"#/components/schemas/Location"},"searchParams":{"$ref":"#/components/schemas/SearchParams"},"selected":{"type":"string","description":"TRUE, if the element is currently selected, otherwise FALSE.","enum":["TRUE","FALSE","IMPLICIT","IRRELEVANT"]}}},"Location":{"required":["latitude","longitude"],"type":"object","properties":{"latitude":{"maximum":90,"minimum":-90,"type":"number","description":"The latitude coordinate of the location.","format":"double"},"longitude":{"maximum":180,"minimum":-180,"type":"number","description":"The longitude coordinate of the location.","format":"double"}},"description":"The location of the market."},"SearchParams":{"required":["query"],"type":"object","properties":{"activeAbTests":{"type":"object","additionalProperties":{"type":"string","description":"The active ab tests variants."},"description":"The active ab tests variants."},"advisorStatus":{"$ref":"#/components/schemas/AdvisorCampaignStatusHolder"},"articleNumberSearch":{"type":"string","description":"Specifies if the search term should be interpreted as article number. Defaults to DETECT.","enum":["DETECT","ALWAYS","NEVER"]},"customParameters":{"type":"array","description":"May be used to provide custom parameters, such as for custom classes.","items":{"$ref":"#/components/schemas/CustomParameter"}},"exactSearchMode":{"type":"string","description":"Specifies whether the search term should be considered for the exact search, and how. Defaults to the mode that is configured for the channel.","enum":["LEGACY","DISABLED","EXACT_ONLY","EXACT_AND_FUZZY_FALLBACK","EXACT_AND_ALWAYS_FUZZY","EXACT_AND_REMAINDER_FUZZY"]},"excludeProductsNotInRange":{"type":"boolean","description":"Overrides the excludeProductsNotInRange setting for the geo search."},"filters":{"type":"array","description":"The filters to limit the search result.","items":{"$ref":"#/components/schemas/Filter"}},"followSearch":{"type":"string","description":"Optional request linking param from a previous search result or search param object. Can improve request performance."},"hitsPerPage":{"minimum":0,"type":"integer","description":"Number of products on a single page.","format":"int32"},"location":{"$ref":"#/components/schemas/Location"},"marketIds":{"uniqueItems":true,"type":"array","description":"Only show products that have values for these market IDs.","items":{"type":"string"}},"maxCountVariants":{"type":"integer","description":"Defines the maximum number of variants to be returned in the result.","format":"int32"},"maxDistance":{"minimum":1,"type":"number","description":"Overrides the maximum distance setting for the geo search.","format":"double"},"page":{"minimum":1,"type":"integer","description":"The page to be requested within the search result.","format":"int32"},"purchaserId":{"maxLength":2147483647,"minLength":1,"type":"string","description":"The ID of the purchaser. This ID is only needed if the 'Customer-Specific Info' module is activated. Otherwise it will be ignored."},"query":{"type":"string","description":"The search term."},"searchField":{"type":"string","description":"If set, the search term will be looked for only in the given field. Otherwise all searchable fields will be considered (for article number searches, all fields marked as containing article numbers)."},"showMarkets":{"type":"boolean","description":"Overrides the showMarkets setting for the geo search."},"showPermutedSearchParams":{"type":"boolean","description":"Specifies whether to include search parameters in the response for facet and sort item elements."},"sortItems":{"type":"array","description":"Specifies the sort order for the search result.","items":{"$ref":"#/components/schemas/SortItem"}},"splitDocumentsAt":{"type":"integer","description":"Threshold for variant splitting of documents.","format":"int32"}},"description":"Defines the search that should be executed when the element is clicked."},"AdvisorCampaignStatusHolder":{"required":["id"],"type":"object","properties":{"answerPath":{"type":"string","description":"The currently active path within the advisor tree, which should end at an answer: _QuestionID_AnswerID_QuestionID_AnswerID. If empty or null, the root questions will be shown."},"id":{"type":"string","description":"ID of the advisor campaign."}},"description":"Describes the advisor campaign that is currently active."},"CustomParameter":{"required":["cacheIrrelevant","name","values"],"type":"object","properties":{"cacheIrrelevant":{"type":"boolean","description":"When set to true, the custom parameter will not influence caching."},"name":{"type":"string","description":"The parameter name."},"values":{"type":"array","description":"The parameter values.","items":{"type":"string"}}}},"Filter":{"required":["name","substring","values"],"type":"object","properties":{"filterWarning":{"type":"string","description":"Contains warning about invalid filters (e.g. non-existent field or non-existent value).","enum":["NON_EXISTING_FIELD","NON_EXISTING_FIELD_VALUE"]},"name":{"type":"string","description":"The name of the filter."},"substring":{"type":"boolean","description":"If true, filter values will be applied as 'contains' instead of 'equals'."},"values":{"type":"array","description":"Filter values.","items":{"$ref":"#/components/schemas/FilterValue"}}}},"FilterValue":{"required":["exclude","type","value"],"type":"object","properties":{"exclude":{"type":"boolean","description":"When set to true, the filter will match when the record value does not equal the filter value."},"type":{"type":"string","description":"Describes how this filter value should interact with the corresponding filter field.","enum":["or","and"]},"value":{"$ref":"#/components/schemas/FilterValueInput"}}},"FilterValueInput":{"description":"The value to which the record values will be compared.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"SortItem":{"required":["name","order"],"type":"object","properties":{"name":{"type":"string","description":"The name of the field to be sorted by, or 'Relevancy', for score based sorting."},"order":{"type":"string","description":"The sort order direction (ascending, descending).","enum":["asc","desc"]}}},"RecordWithId":{"required":["id","masterValues","variantValues"],"type":"object","properties":{"id":{"type":"string","description":"The ID of the record."},"masterValues":{"type":"object","additionalProperties":{"type":"object","description":"Contains all fields in the record, with a string representation of the respective values."},"description":"Contains all fields in the record, with a string representation of the respective values."},"variantValues":{"type":"array","description":"Contains variants. The values are mapped from field names to the field value.","items":{"$ref":"#/components/schemas/VariantValues"}}}},"VariantValues":{"title":"VariantValues","type":"object","additionalProperties":{"type":"object"},"description":"Contains variants. The values are mapped from field names to the field value."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/recommendation":{"get":{"tags":["records"],"summary":"Get recommendations","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getRecommendation","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"excludeProductsNotInRange","in":"query","description":"Use this parameter to override the geo setting \"exclude products not in range\" for this request.","required":false,"schema":{"type":"boolean"}},{"name":"filter","in":"query","description":"Filters for field values of recommended records.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Use this parameter to pass product ID(s) for which you wish to obtain recommendations.","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"idsOnly","in":"query","description":"If the value true is passed, then only the record IDs will be returned, streamlining the results. Additionally, if the Geo module is enabled, the IDs of all markets the product is mapped to will be also included. If you do not need the other information in the results, this will help you to improve performance.","required":false,"schema":{"type":"boolean","default":false}},{"name":"latitude","in":"query","description":"The latitude coordinate of the current location.","required":false,"schema":{"maximum":90,"minimum":-90,"type":"number","format":"double"}},{"name":"longitude","in":"query","description":"The longitude coordinate of the current location.","required":false,"schema":{"maximum":180,"minimum":-180,"type":"number","format":"double"}},{"name":"marketId","in":"query","description":"Currently selected markets","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"maxDistance","in":"query","description":"Use this parameter to override the geo setting \"maximum distance\" for this request.","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxResults","in":"query","description":"Use this parameter to specify the number of recommendations you would like. The default value from the configuration is used if the parameter is not specified.","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}},{"name":"sid","in":"query","description":"This parameter is used to pass an id for the user session. This is important for recognising the user, if you want to give him personalised recommendations, as well as for FACT-Finder tracking.","required":false,"schema":{"type":"string"}},{"name":"usePersonalization","in":"query","description":"Allows the activation/deactivation of the personalization of queries. true = the search result will be personalized if the personalization module is activated and all other requirements are met; false = the search result will not be personalized.","required":false,"schema":{"type":"boolean","default":true}},{"name":"userId","in":"query","description":"This parameter is used to pass a user id for personalization across sessions. Required for Loop54 integrations.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationResultWithFieldRoles"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Get similar products

> \<b>Required Roles\</b>: \<em>ApiPublicQueries\</em>

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["public_queries"]},{"apiKey":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}},"apiKey":{"type":"apiKey","name":"X-FF-API-Key","in":"header"}},"schemas":{"SimilarProductsWithFieldRoles":{"required":["attributes","fieldRoles","hits"],"type":"object","properties":{"attributes":{"type":"array","description":"The criteria used to find the similar products.","items":{"$ref":"#/components/schemas/SimilarAttributeInfo"}},"fieldRoles":{"type":"object","additionalProperties":{"type":"string","description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"description":"A field to role mapping. For example, a field role may be 'brand', meaning that the field contains the manufacturer's name. (key = field role, value = field name)"},"geo":{"$ref":"#/components/schemas/Geo"},"hits":{"type":"array","description":"The similar products.","items":{"$ref":"#/components/schemas/RecordWithId"}}}},"SimilarAttributeInfo":{"required":["name","value"],"type":"object","properties":{"name":{"type":"string","description":"The name of the field containing the attribute to be compared for similarity."},"value":{"type":"string","description":"Attribute value."}}},"Geo":{"required":["markets","selectedMarkets","showDistance","showMarkets"],"type":"object","properties":{"markets":{"type":"array","description":"The unselected markets","items":{"$ref":"#/components/schemas/Market"}},"selectedMarkets":{"type":"array","description":"The selected markets","items":{"$ref":"#/components/schemas/Market"}},"showDistance":{"type":"boolean","description":"Should show the distance attached to the markets."},"showMarkets":{"type":"boolean","description":"Should show the list of all existing markets."}},"description":"Contains the selected and unselected markets."},"Market":{"type":"object","properties":{"distance":{"type":"number","description":"The distance between the location of the search and the market location associated with this element.","format":"double"},"hasProducts":{"type":"boolean","description":"True, if the market has at least one product mapped to it in the current search result, otherwise false."},"id":{"type":"string","description":"Id of the market"},"location":{"$ref":"#/components/schemas/Location"},"searchParams":{"$ref":"#/components/schemas/SearchParams"},"selected":{"type":"string","description":"TRUE, if the element is currently selected, otherwise FALSE.","enum":["TRUE","FALSE","IMPLICIT","IRRELEVANT"]}}},"Location":{"required":["latitude","longitude"],"type":"object","properties":{"latitude":{"maximum":90,"minimum":-90,"type":"number","description":"The latitude coordinate of the location.","format":"double"},"longitude":{"maximum":180,"minimum":-180,"type":"number","description":"The longitude coordinate of the location.","format":"double"}},"description":"The location of the market."},"SearchParams":{"required":["query"],"type":"object","properties":{"activeAbTests":{"type":"object","additionalProperties":{"type":"string","description":"The active ab tests variants."},"description":"The active ab tests variants."},"advisorStatus":{"$ref":"#/components/schemas/AdvisorCampaignStatusHolder"},"articleNumberSearch":{"type":"string","description":"Specifies if the search term should be interpreted as article number. Defaults to DETECT.","enum":["DETECT","ALWAYS","NEVER"]},"customParameters":{"type":"array","description":"May be used to provide custom parameters, such as for custom classes.","items":{"$ref":"#/components/schemas/CustomParameter"}},"exactSearchMode":{"type":"string","description":"Specifies whether the search term should be considered for the exact search, and how. Defaults to the mode that is configured for the channel.","enum":["LEGACY","DISABLED","EXACT_ONLY","EXACT_AND_FUZZY_FALLBACK","EXACT_AND_ALWAYS_FUZZY","EXACT_AND_REMAINDER_FUZZY"]},"excludeProductsNotInRange":{"type":"boolean","description":"Overrides the excludeProductsNotInRange setting for the geo search."},"filters":{"type":"array","description":"The filters to limit the search result.","items":{"$ref":"#/components/schemas/Filter"}},"followSearch":{"type":"string","description":"Optional request linking param from a previous search result or search param object. Can improve request performance."},"hitsPerPage":{"minimum":0,"type":"integer","description":"Number of products on a single page.","format":"int32"},"location":{"$ref":"#/components/schemas/Location"},"marketIds":{"uniqueItems":true,"type":"array","description":"Only show products that have values for these market IDs.","items":{"type":"string"}},"maxCountVariants":{"type":"integer","description":"Defines the maximum number of variants to be returned in the result.","format":"int32"},"maxDistance":{"minimum":1,"type":"number","description":"Overrides the maximum distance setting for the geo search.","format":"double"},"page":{"minimum":1,"type":"integer","description":"The page to be requested within the search result.","format":"int32"},"purchaserId":{"maxLength":2147483647,"minLength":1,"type":"string","description":"The ID of the purchaser. This ID is only needed if the 'Customer-Specific Info' module is activated. Otherwise it will be ignored."},"query":{"type":"string","description":"The search term."},"searchField":{"type":"string","description":"If set, the search term will be looked for only in the given field. Otherwise all searchable fields will be considered (for article number searches, all fields marked as containing article numbers)."},"showMarkets":{"type":"boolean","description":"Overrides the showMarkets setting for the geo search."},"showPermutedSearchParams":{"type":"boolean","description":"Specifies whether to include search parameters in the response for facet and sort item elements."},"sortItems":{"type":"array","description":"Specifies the sort order for the search result.","items":{"$ref":"#/components/schemas/SortItem"}},"splitDocumentsAt":{"type":"integer","description":"Threshold for variant splitting of documents.","format":"int32"}},"description":"Defines the search that should be executed when the element is clicked."},"AdvisorCampaignStatusHolder":{"required":["id"],"type":"object","properties":{"answerPath":{"type":"string","description":"The currently active path within the advisor tree, which should end at an answer: _QuestionID_AnswerID_QuestionID_AnswerID. If empty or null, the root questions will be shown."},"id":{"type":"string","description":"ID of the advisor campaign."}},"description":"Describes the advisor campaign that is currently active."},"CustomParameter":{"required":["cacheIrrelevant","name","values"],"type":"object","properties":{"cacheIrrelevant":{"type":"boolean","description":"When set to true, the custom parameter will not influence caching."},"name":{"type":"string","description":"The parameter name."},"values":{"type":"array","description":"The parameter values.","items":{"type":"string"}}}},"Filter":{"required":["name","substring","values"],"type":"object","properties":{"filterWarning":{"type":"string","description":"Contains warning about invalid filters (e.g. non-existent field or non-existent value).","enum":["NON_EXISTING_FIELD","NON_EXISTING_FIELD_VALUE"]},"name":{"type":"string","description":"The name of the filter."},"substring":{"type":"boolean","description":"If true, filter values will be applied as 'contains' instead of 'equals'."},"values":{"type":"array","description":"Filter values.","items":{"$ref":"#/components/schemas/FilterValue"}}}},"FilterValue":{"required":["exclude","type","value"],"type":"object","properties":{"exclude":{"type":"boolean","description":"When set to true, the filter will match when the record value does not equal the filter value."},"type":{"type":"string","description":"Describes how this filter value should interact with the corresponding filter field.","enum":["or","and"]},"value":{"$ref":"#/components/schemas/FilterValueInput"}}},"FilterValueInput":{"description":"The value to which the record values will be compared.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"SortItem":{"required":["name","order"],"type":"object","properties":{"name":{"type":"string","description":"The name of the field to be sorted by, or 'Relevancy', for score based sorting."},"order":{"type":"string","description":"The sort order direction (ascending, descending).","enum":["asc","desc"]}}},"RecordWithId":{"required":["id","masterValues","variantValues"],"type":"object","properties":{"id":{"type":"string","description":"The ID of the record."},"masterValues":{"type":"object","additionalProperties":{"type":"object","description":"Contains all fields in the record, with a string representation of the respective values."},"description":"Contains all fields in the record, with a string representation of the respective values."},"variantValues":{"type":"array","description":"Contains variants. The values are mapped from field names to the field value.","items":{"$ref":"#/components/schemas/VariantValues"}}}},"VariantValues":{"title":"VariantValues","type":"object","additionalProperties":{"type":"object"},"description":"Contains variants. The values are mapped from field names to the field value."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/similar":{"get":{"tags":["records"],"summary":"Get similar products","description":"<b>Required Roles</b>: <em>ApiPublicQueries</em>","operationId":"getSimilarProducts","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"excludeProductsNotInRange","in":"query","description":"Use this parameter to override the geo setting \"exclude products not in range\" for this request.","required":false,"schema":{"type":"boolean"}},{"name":"filter","in":"query","description":"Filters for field values of recommended records.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Use this parameter to pass the product ID for which you wish to obtain similar products.","required":true,"schema":{"type":"string"}},{"name":"idType","in":"query","description":"Use this parameter to determine the type of ID passed to the method. Use 'productNumber' if the given ID is from the field with 'productNumber' role. Use 'id' if it is from the field with 'masterId' role.","required":true,"schema":{"type":"string","enum":["productNumber","id"]}},{"name":"idsOnly","in":"query","description":"If the value true is passed, then only the record IDs will be returned, streamlining the results. Additionally, if the Geo module is enabled, the IDs of all markets the product is mapped to will be also included. If you do not need the other information in the results, this will help you to improve performance.","required":false,"schema":{"type":"boolean","default":false}},{"name":"latitude","in":"query","description":"The latitude coordinate of the current location.","required":false,"schema":{"maximum":90,"minimum":-90,"type":"number","format":"double"}},{"name":"longitude","in":"query","description":"The longitude coordinate of the current location.","required":false,"schema":{"maximum":180,"minimum":-180,"type":"number","format":"double"}},{"name":"marketId","in":"query","description":"Currently selected markets","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"maxDistance","in":"query","description":"Use this parameter to override the geo setting \"maximum distance\" for this request.","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxResults","in":"query","description":"Use this parameter to specify the number of similar articles you would like. The default value from the configuration is used if the parameter is not specified.","required":false,"schema":{"minimum":1,"type":"integer","format":"int32","default":10}},{"name":"purchaserId","in":"query","description":"Use this parameter to pass the purchaser ID. This ID is only needed, if the 'Customer-Specific Info' module is active. Otherwise it will be ignored.","required":false,"schema":{"type":"string"}},{"name":"userId","in":"query","description":"This parameter is used to pass a user id for personalization across sessions. Required for Loop54 integrations.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarProductsWithFieldRoles"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```

## Upsert records

> \<b>Required Roles\</b>: \<em>ApiImport\</em>\<br />\<br />Update or insert records; Without variants: inserts records when they do not already exist, or replaces them if they do. With Variants: inserts a master document when it does not exists; inserts a variant and replaces the master values if the variant does not exist; replaces a variant and replaces the master values if the variant does already exist.

```json
{"openapi":"3.0.1","info":{"title":"FactFinder REST API","version":"v5"},"tags":[{"name":"records","description":"Operations for records"}],"servers":[{"url":"https://vector-demo.fact-finder.de/fact-finder/","description":"Generated server url"}],"security":[{"basicAuth":[]},{"oAuth2":["import"]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic"},"oAuth2":{"type":"oauth2","flows":{"password":{"tokenUrl":"oauth/token","scopes":{"public_queries":"","import":"","database":"","config":"","analytics":"","jobs":"","monitor":"","manage":"","users":""}}}}},"schemas":{"FlatRecord":{"title":"FlatRecord","type":"object","additionalProperties":{"type":"object"},"description":"Represents a FactFinder record. The original input of the operation (will only be transmitted when the query parameter verbose=true was added to the request)."},"DeltaUpdateResult":{"required":["success"],"type":"object","properties":{"error":{"$ref":"#/components/schemas/ErrorDescription"},"record":{"$ref":"#/components/schemas/FlatRecord"},"success":{"type":"boolean","description":"If true, the operation succeeded. Otherwise an error occurred which will be described in the error field."},"warnings":{"type":"array","description":"A list of all warnings.","items":{"$ref":"#/components/schemas/ErrorDescription"}}}},"ErrorDescription":{"required":["name"],"type":"object","properties":{"description":{"type":"string","description":"A description of the error cause"},"name":{"type":"string","description":"Name of the error"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."},"ApiError":{"required":["error"],"type":"object","properties":{"error":{"type":"string","description":"A short error description"},"errorDescription":{"type":"string","description":"A description of the error cause"},"stacktrace":{"type":"array","description":"The stacktrace from the error (will only be transmitted when the query parameter verbose=true was added to the request)","items":{"type":"string"}}},"description":"Contains information which will be returned when an error occurs."}}},"paths":{"/rest/v5/records/{channel}/upsert":{"put":{"tags":["records"],"summary":"Upsert records","description":"<b>Required Roles</b>: <em>ApiImport</em><br /><br />Update or insert records; Without variants: inserts records when they do not already exist, or replaces them if they do. With Variants: inserts a master document when it does not exists; inserts a variant and replaces the master values if the variant does not exist; replaces a variant and replaces the master values if the variant does already exist.","operationId":"upsertRecords","parameters":[{"name":"channel","in":"path","description":"The channel","required":true,"schema":{"type":"string"}},{"name":"verbose","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":1,"type":"array","description":"The records which should be upserted","items":{"$ref":"#/components/schemas/FlatRecord"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeltaUpdateResult"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}
```
