Records

Operations for records

Get the detail page

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

idstringRequired

The id for which the detailpage should be returned.

Query parameters
excludeProductsNotInRangebooleanOptional

Use this parameter to override the geo setting "exclude products not in range" for this request.

filterstring[]Optional

Filters for field values of returned similar articles, recommendations, and pushed products.

idTypestring · enumOptional

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.

Default: idPossible values:
idsOnlybooleanOptional

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.

Default: false
latitudenumber · double · min: -90 · max: 90Optional

The latitude coordinate of the current location.

longitudenumber · double · min: -180 · max: 180Optional

The longitude coordinate of the current location.

marketIdstring[]Optional

Currently selected markets

maxCountVariantsinteger · int32Optional

The maximum number of variants to return for every record

Default: 5
maxDistancenumber · doubleOptional

Use this parameter to override the geo setting "maximum distance" for this request.

maxResultsRecommendationsinteger · int32Optional

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.

Default: 0
maxResultsSimilarProductsinteger · int32 · min: 1Optional

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.

Default: 10
purchaserIdstringOptional

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.

showMarketsbooleanOptional

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.

sidstringOptional

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.

usePersonalizationbooleanOptional

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.

Default: true
userIdstringOptional

This parameter is used to pass a user id for personalization across sessions. Required for Loop54 integrations.

withCampaignsbooleanOptionalDefault: true
withRecommendationsbooleanOptionalDefault: true
withRecordbooleanOptionalDefault: true
withSimilarProductsbooleanOptionalDefault: true
Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/detail/{channel}/{id} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "campaigns": [
    {
      "activeQuestions": [
        {
          "answers": [
            "[Circular Reference]"
          ],
          "id": "text",
          "text": "text",
          "visible": true
        }
      ],
      "ad": true,
      "advisorTree": [
        {
          "answers": [
            "[Circular Reference]"
          ],
          "id": "text",
          "text": "text",
          "visible": true
        }
      ],
      "category": "text",
      "excludeProductsNotInMarkets": true,
      "excludeProductsNotInRange": true,
      "feedbackTexts": [
        {
          "html": true,
          "label": "product detail - below product",
          "position": 1,
          "teaser": true,
          "text": "text"
        }
      ],
      "flavour": "ADVISOR",
      "hits": [
        {
          "id": "text",
          "masterValues": {
            "ANY_ADDITIONAL_PROPERTY": {}
          },
          "variantValues": [
            {
              "ANY_ADDITIONAL_PROPERTY": {}
            }
          ]
        }
      ],
      "id": "text",
      "name": "text",
      "target": {
        "destination": "https://www.shop.de/about-us/contact.html",
        "name": "text"
      }
    }
  ],
  "fieldRoles": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "geo": {
    "markets": [
      {
        "distance": 1,
        "hasProducts": true,
        "id": "text",
        "location": {
          "latitude": 1,
          "longitude": 1
        },
        "searchParams": {
          "activeAbTests": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "advisorStatus": {
            "answerPath": "_0_0_0_1",
            "id": "text"
          },
          "articleNumberSearch": "DETECT",
          "customParameters": [
            {
              "cacheIrrelevant": true,
              "name": "text",
              "values": [
                "text"
              ]
            }
          ],
          "exactSearchMode": "LEGACY",
          "excludeProductsNotInRange": true,
          "filters": [
            {
              "filterWarning": "NON_EXISTING_FIELD",
              "name": "text",
              "substring": true,
              "values": [
                {
                  "exclude": true,
                  "type": "or",
                  "value": "text"
                }
              ]
            }
          ],
          "followSearch": "text",
          "hitsPerPage": 1,
          "location": {
            "latitude": 1,
            "longitude": 1
          },
          "marketIds": [
            "text"
          ],
          "maxCountVariants": 1,
          "maxDistance": 1,
          "page": 1,
          "purchaserId": "text",
          "query": "text",
          "searchField": "text",
          "showMarkets": true,
          "showPermutedSearchParams": true,
          "sortItems": [
            {
              "name": "text",
              "order": "asc"
            }
          ],
          "splitDocumentsAt": 1
        },
        "selected": "TRUE"
      }
    ],
    "selectedMarkets": [
      {
        "distance": 1,
        "hasProducts": true,
        "id": "text",
        "location": {
          "latitude": 1,
          "longitude": 1
        },
        "searchParams": {
          "activeAbTests": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "advisorStatus": {
            "answerPath": "_0_0_0_1",
            "id": "text"
          },
          "articleNumberSearch": "DETECT",
          "customParameters": [
            {
              "cacheIrrelevant": true,
              "name": "text",
              "values": [
                "text"
              ]
            }
          ],
          "exactSearchMode": "LEGACY",
          "excludeProductsNotInRange": true,
          "filters": [
            {
              "filterWarning": "NON_EXISTING_FIELD",
              "name": "text",
              "substring": true,
              "values": [
                {
                  "exclude": true,
                  "type": "or",
                  "value": "text"
                }
              ]
            }
          ],
          "followSearch": "text",
          "hitsPerPage": 1,
          "location": {
            "latitude": 1,
            "longitude": 1
          },
          "marketIds": [
            "text"
          ],
          "maxCountVariants": 1,
          "maxDistance": 1,
          "page": 1,
          "purchaserId": "text",
          "query": "text",
          "searchField": "text",
          "showMarkets": true,
          "showPermutedSearchParams": true,
          "sortItems": [
            {
              "name": "text",
              "order": "asc"
            }
          ],
          "splitDocumentsAt": 1
        },
        "selected": "TRUE"
      }
    ],
    "showDistance": true,
    "showMarkets": true
  },
  "recommendations": {
    "hits": [
      {
        "id": "text",
        "masterValues": {
          "ANY_ADDITIONAL_PROPERTY": {}
        },
        "variantValues": [
          {
            "ANY_ADDITIONAL_PROPERTY": {}
          }
        ]
      }
    ],
    "timedOut": true
  },
  "record": {
    "id": "text",
    "masterValues": {
      "ANY_ADDITIONAL_PROPERTY": {}
    },
    "variantValues": [
      {
        "ANY_ADDITIONAL_PROPERTY": {}
      }
    ]
  },
  "similarProducts": {
    "attributes": [
      {
        "name": "text",
        "value": "text"
      }
    ],
    "hits": [
      {
        "id": "text",
        "masterValues": {
          "ANY_ADDITIONAL_PROPERTY": {}
        },
        "variantValues": [
          {
            "ANY_ADDITIONAL_PROPERTY": {}
          }
        ]
      }
    ]
  }
}

Get markets with location

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
marketIdstring[]Optional

The market ids.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/markets/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
[
  {
    "marketId": "berlin",
    "location": {
      "latitude": 52.520008,
      "longitude": 13.404954
    }
  }
]

Update markets

post

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
verbosebooleanOptionalDefault: false
Bodyobject · MarketRecord[]

The markets which should be updated

Other propertiesobjectOptional
Responses
200

OK

application/json
post
POST /fact-finder//rest/v5/markets/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 79

[
  {
    "marketId": "berlin",
    "location": {
      "latitude": 52.520008,
      "longitude": 13.404954
    }
  }
]
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "record": {
      "marketId": "berlin",
      "location": {
        "latitude": 52.520008,
        "longitude": 13.404954
      }
    },
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Delete geo market

delete

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
marketIdstring[]Optional

The ids of the markets which should be deleted.

verbosebooleanOptionalDefault: false
Body
marketIdsstring[]Optional

The ids of the markets which should be deleted.

Responses
200

OK

application/json
delete
DELETE /fact-finder//rest/v5/markets/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 22

{
  "marketIds": [
    "text"
  ]
}
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "recordId": "text",
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Get records

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
productNumberstring[]Required

The product numbers of the records which should be returned.

purchaserIdstringOptional

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.

verbosebooleanOptionalDefault: false
Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "fieldRoles": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "records": [
    {
      "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
      "ArticleNumber": "123-4567",
      "Title": "Osprey - Women's Tempest 30 - Touring backpack",
      "IsMaster": true,
      "Manufacturer": "Osprey",
      "InsertDate": "2017-03-02T01:00:00+01:00",
      "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
      "Price": 100.95,
      "Colors": [
        "red",
        "grey"
      ],
      "RatingCount": 0,
      "Category": [
        [
          "Outdoor equipment",
          "Backpacks",
          "Mountaineering backpacks"
        ],
        [
          "Outdoor equipment",
          "Backpacks",
          "Daypacks"
        ]
      ],
      "VAT": "20",
      "MultiFilter": {
        "Volume": [
          30.5
        ],
        "Recommended use": [
          "Trail running",
          "Trekking",
          "Hillwalking"
        ],
        "Features": [
          "Ice-pick holder",
          "Front access",
          "Mesh back",
          "Hydration compatible"
        ],
        "Weight": [
          860
        ]
      },
      "GtinList": [
        "0-943396-04-1",
        "0-85131-041-1"
      ],
      "BooleanList": [
        true,
        false,
        true,
        true
      ]
    }
  ]
}

Insert records

post

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
verbosebooleanOptionalDefault: false
Bodyobject · FlatRecord[]

The records which should be inserted

Other propertiesobjectOptional
Responses
200

OK

application/json
post
POST /fact-finder//rest/v5/records/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 779

[
  {
    "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
    "ArticleNumber": "123-4567",
    "Title": "Osprey - Women's Tempest 30 - Touring backpack",
    "IsMaster": true,
    "Manufacturer": "Osprey",
    "InsertDate": "2017-03-02T01:00:00+01:00",
    "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
    "Price": 100.95,
    "Colors": [
      "red",
      "grey"
    ],
    "RatingCount": 0,
    "Category": [
      [
        "Outdoor equipment",
        "Backpacks",
        "Mountaineering backpacks"
      ],
      [
        "Outdoor equipment",
        "Backpacks",
        "Daypacks"
      ]
    ],
    "VAT": "20",
    "MultiFilter": {
      "Volume": [
        30.5
      ],
      "Recommended use": [
        "Trail running",
        "Trekking",
        "Hillwalking"
      ],
      "Features": [
        "Ice-pick holder",
        "Front access",
        "Mesh back",
        "Hydration compatible"
      ],
      "Weight": [
        860
      ]
    },
    "GtinList": [
      "0-943396-04-1",
      "0-85131-041-1"
    ],
    "BooleanList": [
      true,
      false,
      true,
      true
    ]
  }
]
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "record": {
      "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
      "ArticleNumber": "123-4567",
      "Title": "Osprey - Women's Tempest 30 - Touring backpack",
      "IsMaster": true,
      "Manufacturer": "Osprey",
      "InsertDate": "2017-03-02T01:00:00+01:00",
      "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
      "Price": 100.95,
      "Colors": [
        "red",
        "grey"
      ],
      "RatingCount": 0,
      "Category": [
        [
          "Outdoor equipment",
          "Backpacks",
          "Mountaineering backpacks"
        ],
        [
          "Outdoor equipment",
          "Backpacks",
          "Daypacks"
        ]
      ],
      "VAT": "20",
      "MultiFilter": {
        "Volume": [
          30.5
        ],
        "Recommended use": [
          "Trail running",
          "Trekking",
          "Hillwalking"
        ],
        "Features": [
          "Ice-pick holder",
          "Front access",
          "Mesh back",
          "Hydration compatible"
        ],
        "Weight": [
          860
        ]
      },
      "GtinList": [
        "0-943396-04-1",
        "0-85131-041-1"
      ],
      "BooleanList": [
        true,
        false,
        true,
        true
      ]
    },
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Update records

put

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
verbosebooleanOptionalDefault: false
Bodyobject · FlatRecord[]

The records which should be updated

Other propertiesobjectOptional
Responses
200

OK

application/json
put
PUT /fact-finder//rest/v5/records/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 779

[
  {
    "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
    "ArticleNumber": "123-4567",
    "Title": "Osprey - Women's Tempest 30 - Touring backpack",
    "IsMaster": true,
    "Manufacturer": "Osprey",
    "InsertDate": "2017-03-02T01:00:00+01:00",
    "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
    "Price": 100.95,
    "Colors": [
      "red",
      "grey"
    ],
    "RatingCount": 0,
    "Category": [
      [
        "Outdoor equipment",
        "Backpacks",
        "Mountaineering backpacks"
      ],
      [
        "Outdoor equipment",
        "Backpacks",
        "Daypacks"
      ]
    ],
    "VAT": "20",
    "MultiFilter": {
      "Volume": [
        30.5
      ],
      "Recommended use": [
        "Trail running",
        "Trekking",
        "Hillwalking"
      ],
      "Features": [
        "Ice-pick holder",
        "Front access",
        "Mesh back",
        "Hydration compatible"
      ],
      "Weight": [
        860
      ]
    },
    "GtinList": [
      "0-943396-04-1",
      "0-85131-041-1"
    ],
    "BooleanList": [
      true,
      false,
      true,
      true
    ]
  }
]
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "record": {
      "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
      "ArticleNumber": "123-4567",
      "Title": "Osprey - Women's Tempest 30 - Touring backpack",
      "IsMaster": true,
      "Manufacturer": "Osprey",
      "InsertDate": "2017-03-02T01:00:00+01:00",
      "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
      "Price": 100.95,
      "Colors": [
        "red",
        "grey"
      ],
      "RatingCount": 0,
      "Category": [
        [
          "Outdoor equipment",
          "Backpacks",
          "Mountaineering backpacks"
        ],
        [
          "Outdoor equipment",
          "Backpacks",
          "Daypacks"
        ]
      ],
      "VAT": "20",
      "MultiFilter": {
        "Volume": [
          30.5
        ],
        "Recommended use": [
          "Trail running",
          "Trekking",
          "Hillwalking"
        ],
        "Features": [
          "Ice-pick holder",
          "Front access",
          "Mesh back",
          "Hydration compatible"
        ],
        "Weight": [
          860
        ]
      },
      "GtinList": [
        "0-943396-04-1",
        "0-85131-041-1"
      ],
      "BooleanList": [
        true,
        false,
        true,
        true
      ]
    },
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Delete records

delete

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Optional

The ids from the records which should be deleted.

idTypestring · enumOptional

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.

Default: productNumberPossible values:
verbosebooleanOptionalDefault: false
Body
idsstring[]Optional

The ids of the records which should be deleted.

Responses
200

OK

application/json
delete
DELETE /fact-finder//rest/v5/records/{channel} HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "ids": [
    "text"
  ]
}
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "recordId": "text",
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Compare products

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Optional

Use this parameter to pass product ID(s) which should be compared.

idsOnlybooleanOptional

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.

Default: false
purchaserIdstringOptional

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.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/compare HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "attributes": [
    {
      "different": true,
      "name": "text",
      "sourceField": "text"
    }
  ],
  "fieldRoles": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "records": [
    {
      "id": "text",
      "values": {
        "ANY_ADDITIONAL_PROPERTY": {}
      }
    }
  ]
}

Get customer specific prices

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Required

The product numbers of the records for which customer prices should be returned.

idTypestring · enumOptional

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.

Default: productNumberPossible values:
Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/customerprices HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
[
  {
    "ArticleNumber": "123-4567",
    "price": {
      "1417": 44.14,
      "1514": 44.22,
      "4651": 42.12
    },
    "futurePrice": {
      "1514": 44.11,
      "4651": 42.17
    }
  }
]

Update customer prices

post

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
verbosebooleanOptionalDefault: false
Bodyobject · CustomerPriceRecord[]

The records which should be inserted

Other propertiesobjectOptional
Responses
200

OK

application/json
post
POST /fact-finder//rest/v5/records/{channel}/customerprices HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 121

[
  {
    "ArticleNumber": "123-4567",
    "price": {
      "1417": 44.14,
      "1514": 44.22,
      "4651": 42.12
    },
    "futurePrice": {
      "1514": 44.11,
      "4651": 42.17
    }
  }
]
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "record": {
      "ArticleNumber": "123-4567",
      "price": {
        "1417": 44.14,
        "1514": 44.22,
        "4651": 42.12
      },
      "futurePrice": {
        "1514": 44.11,
        "4651": 42.17
      }
    },
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Delete customer prices

delete

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Optional

The ids from the records which should be deleted.

idTypestring · enumOptional

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.

Default: productNumberPossible values:
verbosebooleanOptionalDefault: false
Body
idsstring[]Optional

The ids of the records which should be deleted.

Responses
200

OK

application/json
delete
DELETE /fact-finder//rest/v5/records/{channel}/customerprices HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "ids": [
    "text"
  ]
}
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "recordId": "text",
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Get full records

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Required

The record ids of the records which should be returned

idTypestring · enumOptional

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.

Default: idPossible values:
maxCountVariantsinteger · int32Optional

The maximum number of variants to return for every record

Default: 5
purchaserIdstringOptional

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.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/full HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "fieldRoles": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "records": [
    {
      "masterValues": {
        "ANY_ADDITIONAL_PROPERTY": {}
      },
      "variantValues": [
        {
          "ANY_ADDITIONAL_PROPERTY": {}
        }
      ]
    }
  ]
}

Get geo data

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Required

The product numbers of the records for which geo data should be returned.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/geo HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
[
  {
    "ArticleNumber": "016-1545",
    "marketId": "506223",
    "geoBoost": 14,
    "geoPrice": 300.95
  }
]

Update geo data

post

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
verbosebooleanOptionalDefault: false
Bodyobject · GeoRecord[]

The records which should be updated

Other propertiesobjectOptional
Responses
200

OK

application/json
post
POST /fact-finder//rest/v5/records/{channel}/geo HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 82

[
  {
    "ArticleNumber": "016-1545",
    "marketId": "506223",
    "geoBoost": 14,
    "geoPrice": 300.95
  }
]
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "record": {
      "ArticleNumber": "016-1545",
      "marketId": "506223",
      "geoBoost": 14,
      "geoPrice": 300.95
    },
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Delete geo data

delete

Required Roles: ApiImport

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Optional

The ids from the records which should be deleted.

verbosebooleanOptionalDefault: false
Body
idsstring[]Optional

The ids of the records which should be deleted.

Responses
200

OK

application/json
delete
DELETE /fact-finder//rest/v5/records/{channel}/geo HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "ids": [
    "text"
  ]
}
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "recordId": "text",
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Retrieve record metadata

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idstring[]Required

The record ids of the records which should be returned

idTypestring · enumOptional

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.

Default: idPossible values:
purchaserIdstringOptional

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.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/meta HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "entries": [
    {
      "id": "text",
      "state": "VISIBLE"
    }
  ]
}

Retrieve record metadata

post

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
idTypestring · enumOptional

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.

Default: idPossible values:
purchaserIdstringOptional

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.

Body
idsstring[] · min: 1 · max: 2147483647Required

The record ids of the records which should be returned.

Responses
200

OK

application/json
post
POST /fact-finder//rest/v5/records/{channel}/meta HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "ids": [
    "text"
  ]
}
{
  "entries": [
    {
      "id": "text",
      "state": "VISIBLE"
    }
  ]
}

Get recommendations

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
excludeProductsNotInRangebooleanOptional

Use this parameter to override the geo setting "exclude products not in range" for this request.

filterstring[]Optional

Filters for field values of recommended records.

idstring[]Required

Use this parameter to pass product ID(s) for which you wish to obtain recommendations.

idsOnlybooleanOptional

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.

Default: false
latitudenumber · double · min: -90 · max: 90Optional

The latitude coordinate of the current location.

longitudenumber · double · min: -180 · max: 180Optional

The longitude coordinate of the current location.

marketIdstring[]Optional

Currently selected markets

maxDistancenumber · doubleOptional

Use this parameter to override the geo setting "maximum distance" for this request.

maxResultsinteger · int32Optional

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.

Default: 0
purchaserIdstringOptional

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.

sidstringOptional

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.

usePersonalizationbooleanOptional

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.

Default: true
userIdstringOptional

This parameter is used to pass a user id for personalization across sessions. Required for Loop54 integrations.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/recommendation HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "fieldRoles": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "geo": {
    "markets": [
      {
        "distance": 1,
        "hasProducts": true,
        "id": "text",
        "location": {
          "latitude": 1,
          "longitude": 1
        },
        "searchParams": {
          "activeAbTests": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "advisorStatus": {
            "answerPath": "_0_0_0_1",
            "id": "text"
          },
          "articleNumberSearch": "DETECT",
          "customParameters": [
            {
              "cacheIrrelevant": true,
              "name": "text",
              "values": [
                "text"
              ]
            }
          ],
          "exactSearchMode": "LEGACY",
          "excludeProductsNotInRange": true,
          "filters": [
            {
              "filterWarning": "NON_EXISTING_FIELD",
              "name": "text",
              "substring": true,
              "values": [
                {
                  "exclude": true,
                  "type": "or",
                  "value": "text"
                }
              ]
            }
          ],
          "followSearch": "text",
          "hitsPerPage": 1,
          "location": {
            "latitude": 1,
            "longitude": 1
          },
          "marketIds": [
            "text"
          ],
          "maxCountVariants": 1,
          "maxDistance": 1,
          "page": 1,
          "purchaserId": "text",
          "query": "text",
          "searchField": "text",
          "showMarkets": true,
          "showPermutedSearchParams": true,
          "sortItems": [
            {
              "name": "text",
              "order": "asc"
            }
          ],
          "splitDocumentsAt": 1
        },
        "selected": "TRUE"
      }
    ],
    "selectedMarkets": [
      {
        "distance": 1,
        "hasProducts": true,
        "id": "text",
        "location": {
          "latitude": 1,
          "longitude": 1
        },
        "searchParams": {
          "activeAbTests": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "advisorStatus": {
            "answerPath": "_0_0_0_1",
            "id": "text"
          },
          "articleNumberSearch": "DETECT",
          "customParameters": [
            {
              "cacheIrrelevant": true,
              "name": "text",
              "values": [
                "text"
              ]
            }
          ],
          "exactSearchMode": "LEGACY",
          "excludeProductsNotInRange": true,
          "filters": [
            {
              "filterWarning": "NON_EXISTING_FIELD",
              "name": "text",
              "substring": true,
              "values": [
                {
                  "exclude": true,
                  "type": "or",
                  "value": "text"
                }
              ]
            }
          ],
          "followSearch": "text",
          "hitsPerPage": 1,
          "location": {
            "latitude": 1,
            "longitude": 1
          },
          "marketIds": [
            "text"
          ],
          "maxCountVariants": 1,
          "maxDistance": 1,
          "page": 1,
          "purchaserId": "text",
          "query": "text",
          "searchField": "text",
          "showMarkets": true,
          "showPermutedSearchParams": true,
          "sortItems": [
            {
              "name": "text",
              "order": "asc"
            }
          ],
          "splitDocumentsAt": 1
        },
        "selected": "TRUE"
      }
    ],
    "showDistance": true,
    "showMarkets": true
  },
  "hits": [
    {
      "id": "text",
      "masterValues": {
        "ANY_ADDITIONAL_PROPERTY": {}
      },
      "variantValues": [
        {
          "ANY_ADDITIONAL_PROPERTY": {}
        }
      ]
    }
  ],
  "timedOut": true
}

Get similar products

get

Required Roles: ApiPublicQueries

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
excludeProductsNotInRangebooleanOptional

Use this parameter to override the geo setting "exclude products not in range" for this request.

filterstring[]Optional

Filters for field values of recommended records.

idstringRequired

Use this parameter to pass the product ID for which you wish to obtain similar products.

idTypestring · enumRequired

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.

Possible values:
idsOnlybooleanOptional

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.

Default: false
latitudenumber · double · min: -90 · max: 90Optional

The latitude coordinate of the current location.

longitudenumber · double · min: -180 · max: 180Optional

The longitude coordinate of the current location.

marketIdstring[]Optional

Currently selected markets

maxDistancenumber · doubleOptional

Use this parameter to override the geo setting "maximum distance" for this request.

maxResultsinteger · int32 · min: 1Optional

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.

Default: 10
purchaserIdstringOptional

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.

userIdstringOptional

This parameter is used to pass a user id for personalization across sessions. Required for Loop54 integrations.

Responses
200

OK

application/json
get
GET /fact-finder//rest/v5/records/{channel}/similar HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Accept: */*
{
  "attributes": [
    {
      "name": "text",
      "value": "text"
    }
  ],
  "fieldRoles": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "geo": {
    "markets": [
      {
        "distance": 1,
        "hasProducts": true,
        "id": "text",
        "location": {
          "latitude": 1,
          "longitude": 1
        },
        "searchParams": {
          "activeAbTests": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "advisorStatus": {
            "answerPath": "_0_0_0_1",
            "id": "text"
          },
          "articleNumberSearch": "DETECT",
          "customParameters": [
            {
              "cacheIrrelevant": true,
              "name": "text",
              "values": [
                "text"
              ]
            }
          ],
          "exactSearchMode": "LEGACY",
          "excludeProductsNotInRange": true,
          "filters": [
            {
              "filterWarning": "NON_EXISTING_FIELD",
              "name": "text",
              "substring": true,
              "values": [
                {
                  "exclude": true,
                  "type": "or",
                  "value": "text"
                }
              ]
            }
          ],
          "followSearch": "text",
          "hitsPerPage": 1,
          "location": {
            "latitude": 1,
            "longitude": 1
          },
          "marketIds": [
            "text"
          ],
          "maxCountVariants": 1,
          "maxDistance": 1,
          "page": 1,
          "purchaserId": "text",
          "query": "text",
          "searchField": "text",
          "showMarkets": true,
          "showPermutedSearchParams": true,
          "sortItems": [
            {
              "name": "text",
              "order": "asc"
            }
          ],
          "splitDocumentsAt": 1
        },
        "selected": "TRUE"
      }
    ],
    "selectedMarkets": [
      {
        "distance": 1,
        "hasProducts": true,
        "id": "text",
        "location": {
          "latitude": 1,
          "longitude": 1
        },
        "searchParams": {
          "activeAbTests": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "advisorStatus": {
            "answerPath": "_0_0_0_1",
            "id": "text"
          },
          "articleNumberSearch": "DETECT",
          "customParameters": [
            {
              "cacheIrrelevant": true,
              "name": "text",
              "values": [
                "text"
              ]
            }
          ],
          "exactSearchMode": "LEGACY",
          "excludeProductsNotInRange": true,
          "filters": [
            {
              "filterWarning": "NON_EXISTING_FIELD",
              "name": "text",
              "substring": true,
              "values": [
                {
                  "exclude": true,
                  "type": "or",
                  "value": "text"
                }
              ]
            }
          ],
          "followSearch": "text",
          "hitsPerPage": 1,
          "location": {
            "latitude": 1,
            "longitude": 1
          },
          "marketIds": [
            "text"
          ],
          "maxCountVariants": 1,
          "maxDistance": 1,
          "page": 1,
          "purchaserId": "text",
          "query": "text",
          "searchField": "text",
          "showMarkets": true,
          "showPermutedSearchParams": true,
          "sortItems": [
            {
              "name": "text",
              "order": "asc"
            }
          ],
          "splitDocumentsAt": 1
        },
        "selected": "TRUE"
      }
    ],
    "showDistance": true,
    "showMarkets": true
  },
  "hits": [
    {
      "id": "text",
      "masterValues": {
        "ANY_ADDITIONAL_PROPERTY": {}
      },
      "variantValues": [
        {
          "ANY_ADDITIONAL_PROPERTY": {}
        }
      ]
    }
  ]
}

Upsert records

put

Required Roles: ApiImport 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.

Authorizations
Path parameters
channelstringRequired

The channel

Query parameters
verbosebooleanOptionalDefault: false
Bodyobject · FlatRecord[]

The records which should be upserted

Other propertiesobjectOptional
Responses
200

OK

application/json
put
PUT /fact-finder//rest/v5/records/{channel}/upsert HTTP/1.1
Host: ng-demo.fact-finder.de
Authorization: Basic username:password
Content-Type: application/json
Accept: */*
Content-Length: 779

[
  {
    "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
    "ArticleNumber": "123-4567",
    "Title": "Osprey - Women's Tempest 30 - Touring backpack",
    "IsMaster": true,
    "Manufacturer": "Osprey",
    "InsertDate": "2017-03-02T01:00:00+01:00",
    "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
    "Price": 100.95,
    "Colors": [
      "red",
      "grey"
    ],
    "RatingCount": 0,
    "Category": [
      [
        "Outdoor equipment",
        "Backpacks",
        "Mountaineering backpacks"
      ],
      [
        "Outdoor equipment",
        "Backpacks",
        "Daypacks"
      ]
    ],
    "VAT": "20",
    "MultiFilter": {
      "Volume": [
        30.5
      ],
      "Recommended use": [
        "Trail running",
        "Trekking",
        "Hillwalking"
      ],
      "Features": [
        "Ice-pick holder",
        "Front access",
        "Mesh back",
        "Hydration compatible"
      ],
      "Weight": [
        860
      ]
    },
    "GtinList": [
      "0-943396-04-1",
      "0-85131-041-1"
    ],
    "BooleanList": [
      true,
      false,
      true,
      true
    ]
  }
]
[
  {
    "error": {
      "description": "Unique value already exists: ArticleNumber=1234",
      "name": "FieldConstraintException",
      "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
    },
    "record": {
      "MasterArticleNumber": "3d407d51e8ca255a429fab65961428cc",
      "ArticleNumber": "123-4567",
      "Title": "Osprey - Women's Tempest 30 - Touring backpack",
      "IsMaster": true,
      "Manufacturer": "Osprey",
      "InsertDate": "2017-03-02T01:00:00+01:00",
      "Image": "http://demoshop.fact-finder.de/demoshop-images/bergfreunde/sol_502-2806-0111_pic1_1.jpg",
      "Price": 100.95,
      "Colors": [
        "red",
        "grey"
      ],
      "RatingCount": 0,
      "Category": [
        [
          "Outdoor equipment",
          "Backpacks",
          "Mountaineering backpacks"
        ],
        [
          "Outdoor equipment",
          "Backpacks",
          "Daypacks"
        ]
      ],
      "VAT": "20",
      "MultiFilter": {
        "Volume": [
          30.5
        ],
        "Recommended use": [
          "Trail running",
          "Trekking",
          "Hillwalking"
        ],
        "Features": [
          "Ice-pick holder",
          "Front access",
          "Mesh back",
          "Hydration compatible"
        ],
        "Weight": [
          860
        ]
      },
      "GtinList": [
        "0-943396-04-1",
        "0-85131-041-1"
      ],
      "BooleanList": [
        true,
        false,
        true,
        true
      ]
    },
    "success": true,
    "warnings": [
      {
        "description": "Unique value already exists: ArticleNumber=1234",
        "name": "FieldConstraintException",
        "stacktrace": "de.factfinder.worldmatch.index.FieldConstraintException: Unique value already exists: ArticleNumber=1234"
      }
    ]
  }
]

Was this helpful?