Migration Guide 7.3 zu NG 1.2 (REST)

Der Hauptteil des Versionswechsels wird als Projekt von unseren Mitarbeitenden durchgeführt. Nach dessen Abschluss müssen folgende Änderungen von Ihnen vorgenommen werden.

Detaillierte Informationen zur Einbindung neuer Funktionen finden Sie in der Integrationsdokumentation für NG 1.2 bwz. der API-Dokumentation zu Ihrer FACT-Finder-Installation (https://<Ihre Basis-URL>/fact-finder/swagger-ui.html).

Hinweis für Nutzende der SOAP- oder JSON/XML-API

Verwenden Sie noch die SOAP- oder JSON/XML-API zur Anbindung Ihres Shops, muss zunächst eine vollständige Neuintegration auf REST erfolgen.

SOAP

Informationen zur Migration von SOAP finden Sie im Migration Guide von SOAP zu REST.

JSON/XML

Informationen zur Migration von JSON/XML finden Sie im Migration Guide von JSON/XML zu REST.

Allgemeines

Authentifizierung

Ab dem 01.04.2022 wird OAuth2 nicht mehr von FACT-Finder unterstützt.

Als Optionen zur Authentifizierung steht Basic Authentication zur Verfügung:

Basic Authentication

Um sich mit Basic Authentication zu authentifizieren, muss der Authorization-Header folgendes enhalten: das Wort Basic, gefolgt von einem Leerzeichen und der Base64-encodierten username:passwort-Zeichenkette. Ein Header mit den Anmeldedaten factfinder:pw würde so aussehen: Authorization: Basic ZmFjdGZpbmRlcjpwdw=. ZmFjdGZpbmRlcjpwdw== ist hierbei die Base64-Repräsentation von factfinder:pw.

Fehlermeldungen

Die Struktur der Fehlermeldungen (4xx und 5xx) hat sich verändert.

Es wird nun keine Liste aus Fehlermeldungen mehr, sondern eine einzige Fehlermeldung mit folgender Struktur zurückgegeben:

{

  "error": "Bad Request",

  "errorDescription": "Channel 'abcde' does not exist.",

  "stacktrace":

    [

      "stack trace",

      "as array"

    ]

}

campaign

Page campaigns (GET)

Der Endpunkt ist von /rest/v1/campaign/{channel}/page zu /rest/v4/campaign/{channel}/page umgezogen.

Request

Der Parameter advisorStatus ist entfallen.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "activeQuestions":

      [

        {

          "answers"*:

            [

              null

            ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

    "advisorTree"*:

      [

        {

          "answers"*:

            [

              null

            ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

    "category"*: "string",

    "feedbackTexts":

      [

        {

          "html"*: boolean,

          "label"*: "string",

          "position": integer($int32),

          "teaser"*: true,

          "text": "string"

        }

      ],

    "flavour"*: "string [ADVISOR, REDIRECT, FEEDBACK, PRODUCT]",

    "hits":

      [

        {

          "id": "string",

          "values"*:

            {

              "< * >": {}

            }

        }

      ],

    "id": "string",

    "name": "string",

    "target":

      {

        "destination"*: "string",

        "name": "string"

      }

  }

]

Product campaigns (GET)

Der Endpunkt ist von /rest/v1/campaign/{channel}/product zu /rest/v4/campaign/{channel}/product umgezogen.

Request

Der Parameter advisorStatus ist entfallen.

Der Parameter productNumber wurde zu id umbenannt.

Der Parameter idType (string, query) wurde hinzugefügt. Er spezifiziert, welchen Typ die ID besitzt. Der Typ id identifiziert eine Produktgruppe (z. B. ein Kleidungsstück, das in mehreren Varianten, bspw. Farben, angeboten wird), productNumber identifiziert ein einzelnes Produkt (z. B. ein grünes T-Shirt). Der Standardwert ist productNumber.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.


Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "activeQuestions":

      [

        {

          "answers"*:

            [

              null

            ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

    "advisorTree"*:

      [

        {

          "answers"*:

            [

              null

            ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

    "category"*: "string",

    "feedbackTexts":

      [

        {

          "html"*: boolean,

          "label"*: "string",

          "position": integer($int32),

          "teaser"*: true,

          "text": "string"

        }

      ],

    "flavour"*: "string [ADVISOR, REDIRECT, FEEDBACK, PRODUCT]",

    "hits":

      [

        {

          "id": "string",

          "values"*:

            {

              "< * >": {}

            }

        }

      ],

    "id": "string",

    "name": "string",

    "target":

      {

        "destination"*: "string",

        "name": "string"

      }

  }

]

Shopping cart campaigns (GET)

Der Endpunkt ist von /rest/v1/campaign/{channel}/shoppingcart zu /rest/v4/campaign/{channel}/shoppingcart umgezogen.

Request

Der Parameter advisorStatus ist entfallen.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "activeQuestions":

      [

        {

          "answers"*:

            [

              null

            ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

    "advisorTree"*:

      [

        {

          "answers"*:

            [

              null

            ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

    "category"*: "string",

    "feedbackTexts":

      [

        {

          "html"*: boolean,

          "label"*: "string",

          "position": integer($int32),

          "teaser"*: true,

          "text": "string"

        }

      ],

    "flavour"*: "string [ADVISOR, REDIRECT, FEEDBACK, PRODUCT]",

    "hits":

      [

        {

          "id": "string",

          "values"*:

            {

              "< * >": {}

            }

        }

      ],

    "id": "string",

    "name": "string",

    "target":

      {

        "destination"*: "string",

        "name": "string"

      }

  }

]

compareproducts

Compare Products (GET)

Der Endpunkt ist von /rest/v1/compareproducts/{channel} zu /rest/v4/records/{channel}/compare umgezogen.

Request

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "attributes"*: [

    {

      "different"*: boolean,

      "name"*: "string",

      "sourceField"*: "string"

    }

  ],

  "fieldRoles"*: {

    "<*>": "string"

  },

  "records"*: [

    {

      "id": "string",

      "values"*: {

        "<*>": {}

      }

    }

  ]

}

import

Recommendation (POST)

Der Endpunkt ist von /rest/v1/import/recommendation zu /rest/v4/import/recommendation umgezogen.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "channel"*: "string",

    "durationInSeconds"*: integer($int64),

    "errorMessages"*: [

      "string"

    ],

    "importType"*: "string [DATA, ATTRIBUTES_AND_DATA, SUGGEST, RECOMMENDATION, RANKING, CUSTOMER_SPECIFIC_PRICING, GEO]",

    "importedFields"*: integer($int32),

    "importedRecords": integer($int32),

    "importedWorldmatchDocuments": integer($int32),

    "startDate"*: "string($date-time)",

    "statusMessages"*: [

      "string"

    ]

  }

]

Running (GET)

Der Endpunkt ist von /rest/v1/import/running zu /rest/v4/import/running umgezogen.

Response

Der Response 200 (OK) gibt einen Boolean-Wert (true/false) zurück.

Search (POST)

Der Endpunkt ist von /rest/v1/import/search zu /rest/v4/import/search umgezogen.

Request

Der Parameter cacheFlush (boolean, query) wurde hinzugefügt. Wenn true, wird der Cache geleert, nachdem ein Channel importiert worden ist. Der Standardwert ist false.

Der Parameter importStage (string, query) wurde hinzugefügt. IMPORT_ONLY füllt nur die Zwischendatenbank, LOAD_ONLY importiert die Datenbank in den Arbeitsspeicher, FULL kombiniert beide Stufen. Der Standardwert ist FULL.

Der Parameter includeCustomerPrices (boolean, query) wurde hinzugefügt. Wenn true, wird nach dem Such-Import ein Customer-Specific-Pricing-Import gestartet. Wenn Customer Specific Pricing in einem Channel nicht aktiviert ist, wird der Parameter ignoriert. Der Standardwert ist false.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "channel"*: "string",

    "durationInSeconds"*: integer($int64),

    "errorMessages"*: [

      "string"

    ],

    "importType"*: "string [DATA, ATTRIBUTES_AND_DATA, SUGGEST, RECOMMENDATION, RANKING, CUSTOMER_SPECIFIC_PRICING, GEO]",

    "importedFields"*: integer($int32),

    "importedRecords": integer($int32),

    "importedWorldmatchDocuments": integer($int32),

    "startDate"*: "string($date-time)",

    "statusMessages"*: [

      "string"

    ]

  }

]

Suggest (POST)

Der Endpunkt ist von /rest/v1/import/suggest zu /rest/v4/import/suggest umgezogen.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "channel"*: "string",

    "durationInSeconds"*: integer($int64),

    "errorMessages"*: [

      "string"

    ],

    "importType"*: "string [DATA, ATTRIBUTES_AND_DATA, SUGGEST, RECOMMENDATION, RANKING, CUSTOMER_SPECIFIC_PRICING, GEO]",

    "importedFields"*: integer($int32),

    "importedRecords": integer($int32),

    "importedWorldmatchDocuments": integer($int32),

    "startDate"*: "string($date-time)",

    "statusMessages"*: [

      "string"

    ]

  }

]

management

In NG 1.2 gibt es zahlreiche neue Management-Endpunkte. Über diese können Sie sich in der Integrationsdokumentation informieren.

Reload Configuration (POST)

Der Endpunkt ist von /rest/v1/management/reloadConfiguration zu /rest/v4/management/reloadConfiguration umgezogen.

What’s hot (POST)

Dieses Modul ist in NG 1.2 entfallen.

predbasket

Predictive Basket (GET)

Der Endpunkt ist von /rest/v1/predictivebasket/{channel} zu /rest/v4/predictivebasket/{channel} umgezogen.

Request

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "hits"*: [

    {

      "id": "string",

      "values"*: {

        "< * >": {}

      }

    }

  ]

}

recommendation

Recommendation (GET)

Der Endpunkt ist von /rest/v1/recommendation/{channel} zu /rest/v4/records/{channel}/recommendation umgezogen.

Request

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "fieldRoles"*: {

    "< * >": "string"

  },

  "hits"*: [

    {

      "id": "string",

      "values"*: {

        "< * >": {}

      }

    }

  ]

}

records

In NG 1.2 gibt es zahlreiche neue Records-Endpunkte. Über diese können Sie sich in der Integrationsdokumentation informieren.

Delete records (DELETE)

Der Endpunkt ist von /rest/v1/records/{channel} zu /rest/v4/records/{channel} umgezogen.

Request

Der Parameter save ist entfallen.

Der Parameter recordId wurde zu id umbenannt.

Der Parameter deleteRequest (application/json, body) wurde hinzugefügt. Er enthält die Löschabfrage im JSON-Format, bspw. { "ids": [ "string" ] }.

Der Parameter idType (string, query) wurde hinzugefügt. Er spezifiziert, welchen Typ die ID besitzt. Der Typ id identifiziert eine Produktgruppe (z. B. ein Kleidungsstück, das in mehreren Varianten, bspw. Farben, angeboten wird), productNumber identifiziert ein einzelnes Produkt (z. B. ein grünes T-Shirt). Der Standardwert ist productNumber.

Der Parameter verbose (boolean, query) wurde hinzugefügt. Wenn true, werden in der Antwort zusätzliche Informationen geliefert. Der Standardwert ist false.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "error": {

      "name"*: "string",

      "description": "string",

      "stacktrace": "string"

    },

    "record": {

      < WorldmatchRecord >

    },

    "success"*: boolean,

    "warnings": [

      {

        "name"*: "string",

        "description": "string",

        "stacktrace": "string"

      }

    ]

  }

]

Get records (GET)

Der Endpunkt ist von /rest/v1/records/{channel} zu /rest/v4/records/{channel} umgezogen.

Request

Der Parameter recordId wurde durch den Parameter productNumber (array [string], query) ersetzt. Er enthält die Produktnummern der Einträge, die zurückgegeben werden sollen.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Der Parameter verbose (boolean, query) wurde hinzugefügt. Wenn true, werden in der Antwort zusätzliche Informationen geliefert. Der Standardwert ist false.


Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "fieldRoles"*: {

    "< * >": "string"

  },

  "records"*: [

    {

      < FlatRecord>

    }

  ]

}

Update records (PUT)

Der Endpunkt ist von /rest/v1/records/{channel} zu /rest/v4/records/{channel} umgezogen.

Request

Der Parameter save ist entfallen.

Der verpflichtende Parameter records (application/json, body) nimmt Records im JSON-Format entgegen.

Der Parameter verbose (boolean, query) wurde hinzugefügt. Wenn true, werden in der Antwort zusätzliche Informationen geliefert. Der Standardwert ist false.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "error": {

      "name"*: "string",

      "description": "string",

      "stacktrace": "string"

    },

    "record": {

      < WorldmatchRecord >

    },

    "success"*: boolean,

    "warnings": [

      {

        "name"*: "string",

        "description": "string",

        "stacktrace": "string"

      }

    ]

  }

]

Insert records (POST)

Der Endpunkt ist von /rest/v1/records/{channel} zu /rest/v4/records/{channel} umgezogen.

Request

Der Parameter save ist entfallen.

Der verpflichtende Parameter records (application/json, body) nimmt Records im JSON-Format entgegen.

Der Parameter verbose (boolean, query) wurde hinzugefügt. Wenn true, werden in der Antwort zusätzliche Informationen geliefert. Der Standardwert ist false.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

[

  {

    "error": {

      "name"*: "string",

      "description": "string",

      "stacktrace": "string"

    },

    "record": {

      < WorldmatchRecord >

    },

    "success"*: boolean,

    "warnings": [

      {

        "name"*: "string",

        "description": "string",

        "stacktrace": "string"

      }

    ]

  }

]

refreshdatabases

All (POST)

Der Endpunkt unter /rest/v1/refreshdatabases/all ist entfallen.

Recommendation (POST)

Der Endpunkt unter /rest/v1/refreshdatabases/recommendation ist entfallen.

Search (POST)

Der Endpunkt unter /rest/v1/refreshdatabases/search ist entfallen.

Suggest (POST)

Der Endpunkt unter /rest/v1/refreshdatabases/suggest ist entfallen.

In NG 1.2 gibt es zahlreiche neue Search-Endpunkte. Über diese können Sie sich in der Integrationsdokumentation informieren.

Search (GET)

Der Endpunkt ist von /rest/v1/search/{channel} zu /rest/v4/search/{channel} umgezogen.

Request

Die folgenden Parameter sind entfallen:

  • seoPath
  • useKeywords
  • generateAdvisorTree

Der Parameter navigation hat einen eigenen Endpunkt unter /rest/v4/navigation/{channel} (GET) bzw. /rest/v4/navigation (POST) erhalten.

Der Parameter productsPerPage wurde zu hitsPerPage umbenannt.

Der Parameter disableCache wurde zu useCache. Dadurch ergibt sich eine Umkehrung der Werte! Wenn true, wird das Ergebnis aus dem Cache zurückgegeben, falls ein passender Eintrag existiert. Der Standardwert ist true.

Der Parameter noArticleNumberSearch wurde zu articleNumberSearch. Er legt fest, ob die Abfrage als Artikelnummer interpretiert werden soll. Bei DETECT wird automatisiert ermittelt, ob es sich bei der Abfrage um eine Artikelnummer handelt, ALWAYS interpretiert den Suchbegriff stets als Artikelnummer, NEVER nie. Der Standardwert ist DETECT.

Die Datenstruktur des Parameters filter hat sich verändert. Die Einträge werden im Format facetid:value übergeben; z. B. Brand:FACT-Finder. Um alle Felder zu durchsuchen, ersetzen Sie die facedId durch ein Asterisk (*).

Der Parameter substringFilter (array [string], query) wurde hinzugefügt. Er filtert die Einträge nach einem Substring des Feldwerts. Ein Filter kann mehrere Werte enthalten, durch Einsetzen des Präfix „!“ kann ein Wert ausgeschlossen werden. Die Einträge werden im Format facetid:value übergeben. Um alle Felder zu durchsuchen, ersetzen Sie die facedId durch ein Asterisk (*). Dieser Filtertyp unterstützt allerdings das Ausschluss-Präfix nicht.

Der Parameter forceAbVariant (array [string], query) wurde hinzugefügt. Forciert die Anwendung bestimmter A/B-Varianten auf das Suchergebnis. Die Einträge werden im Format abTestId:AbVariantId übergeben; z. B. 1b7f3b1a-600f-4d23-b1bf-ac9978628d17:A.

Der Parameter marketId (array [string], query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um nur Produkte anzuzeigen, die Werte für diese Market IDs enthalten.

Der Parameter cacheIrrelevant (array [string], query) wurde hinzugefügt. Setzt Parameter als irrelevant für den Cache.

Der Parameter latitude (number, query) wurde hinzugefügt. Er gibt den Breitengrad der Location an.

Der Parameter longitude (number, query) wurde hinzugefügt. Er gibt den Längengrad der Location an.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Der Parameter maxCountVariants (integer, query) wurde hinzugefügt. Er legt die maximale Anzahl an Varianten fest, die pro Eintrag zurückgegeben werden.

Der Parameter useGeo(boolean, query) wurde hinzugefügt. Wenn true, wird die Geo-Suchfunktion aktiviert. Der Standardwert ist true.

Der Parameter useAbTest (boolean, query) wurde hinzugefügt. Wenn true, wird die AB-Test-Funktion aktiviert. Der Standardwert ist true.

Der Parameter useSearch (boolean, query) wurde hinzugefügt. Wenn true, wird die die Suche für die Abfrage ausgeführt. Der Standardwert ist true.

Der Parameter useDeduplication (boolean, query) wurde hinzugefügt. Wenn true, wird die festgelegte Deduplizierung von Varianten durchgeführt. Der Standardwert ist true.

Der Parameter deduplicationField (string, query) wurde hinzugefügt. Er legt fest, in welchem Feld Varianten dedupliziert werden sollen.


Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "answers"*: [

    {

      "id"*: "string",

      "questions": [

        {

          "answers"*: [

            null

          ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

      "searchParams"*: {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "selected"*: boolean,

      "text"*: "string"

    }

  ],

  "articleNumberSearch"*: boolean,

  "breadCrumbTrail"*: [

    {

      "associatedFieldName": "string",

      "searchParams": {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant": boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "text": "string",

      "type"*: "string [search, filter, advisor, unspecified]",

      "value": {}

    }

  ],

  "campaigns"*: [

    {

      "activeQuestions": [

        {

          "answers"*: [

            null

          ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

      "advisorTree"*: [

        {

          "answers"*: [

            null

          ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

      "category"*: "string",

      "feedbackTexts": [

        {

          "html"*: boolean,

          "label"*: "string",

          "position": integer($int32),

          "teaser"*: boolean,

          "text": "string"

        }

      ],

      "flavour"*: "string [ADVISOR, REDIRECT, FEEDBACK, PRODUCT]",

      "hits": [

        {

          "id": "string",

          "values"*: {

            "< * >": {}

          }

        }

      ],

      "id": "string",

      "name": "string",

      "target": {

        "destination"*: "string",

        "name": "string"

      }

    }

  ],

  "facets"*: [

    {

      "associatedFieldName"*: "string",

      "detailedLinks"*: integer($int32),

      "elements"*: [

        {

          "absoluteMaxValue": number($double),

          "absoluteMinValue": number($double),

          "clusterLevel"*: integer($int32),

          "distance": number($double),

          "previewImageURL": "string",

          "searchParams": {

            "activeAbTests": {

              "< * >": "string"

            },

            "advisorStatus": {

              "answerPath"*: "string",

              "id"*: "string"

            },

            "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

            "channel"*: "string",

            "customParameters": [

              {

                "cacheIrrelevant"*: boolean,

                "name"*: "string",

                "values"*: [

                  "string"

                ]

              }

            ],

            "excludeProductsNotInRange": boolean,

            "filters": [

              {

                "name"*: "string",

                "substring"*: boolean,

                "values"*: [

                  {

                    "exclude"*: boolean,

                    "type"*: "string [or, and]",

                    "value"*: {}

                  }

                ]

              }

            ],

            "hitsPerPage": integer($int32),

            "location": {

              "latitude": number($double),

              "longitude": number($double)

            },

            "marketIds": [

              "string"

            ],

            "maxCountVariants": integer($int32),

            "maxDistance": number($double),

            "page": integer($int32),

            "purchaserId": "string",

            "query"*: "string",

            "searchField": "string",

            "sortItems": [

              {

                "name"*: "string",

                "order"*: "string [asc, desc]"

              }

            ]

          },

          "selected"*: "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]",

          "selectedMaxValue": number($double),

          "selectedMinValue": number($double),

          "showDistance": boolean,

          "text": "string",

          "totalHits": integer($int32)

          }

        ],

        "filterStyle"*: "string [DEFAULT, SLIDER, MULTISELECT, TREE]",

        "name": "string",

        "selectedElements"*: [

          {

            "absoluteMaxValue": number($double),

            "absoluteMinValue": number($double),

            "clusterLevel": integer($int32),

            "distance": number($double),

            "previewImageURL": "string",

            "searchParams": {

              "activeAbTests": {

                "< * >": "string"

              },

              "advisorStatus": {

                "answerPath"*: "string",

                "id"*: "string"

              },

              "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

              "channel"*: "string",

              "customParameters": [

                {

                  "cacheIrrelevant"*: boolean,

                  "name"*: "string",

                  "values"*: [

                    "string"

                  ]

                }

              ],

              "excludeProductsNotInRange": boolean,

              "filters": [

                {

                  "name"*: "string",

                  "substring"*: boolean,

                  "values"*: [

                    {

                      "exclude"*: boolean,

                      "type"*: "string [or, and]",

                      "value"*: {}

                    }

                  ]

                }

              ],

              "hitsPerPage": integer($int32),

              "location": {

                "latitude": number($double),

                "longitude": number($double)

              },

              "marketIds": [

                "string"

              ],

              "maxCountVariants": integer($int32),

              "maxDistance": number($double),

              "page": integer($int32),

              "purchaserId": "string",

              "query"*: "string",

              "searchField": "string",

              "sortItems": [

                {

                  "name"*: "string",

                  "order"*: "string [asc, desc]"

                }

              ]

            },

            "selected"*: "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]",

            "selectedMaxValue": number($double),

            "selectedMinValue": number($double),

            "showDistance": boolean,

            "text": "string",

            "totalHits": integer($int32)

          }

        ],

        "selectionType"*: "string [singleHideUnselected, singleShowUnselected, multiSelectOr, multiSelectAnd]",

        "showPreviewImages"*: boolean,

        "type": "string [FLOAT, INTEGER, MULTI, TEXT, CATEGORY_PATH, BOOLEAN, DATE, GTIN, ALPHANUMERIC, PROPERTY, GEO]",

        "unit": "string"

      }

    ],

    "fieldRoles"*: {

      "< * >": "string"

    },

    "filters"*: [

      {

        "name"*: "string",

        "substring"*: boolean,

        "values"*: [

          {

            "exclude"*: boolean,

            "type"*: "string [or, and]",

            "value"*: {}

          }

        ]

      }

    ],

    "geo": {

      "markets"*: [

        {

          "distance": number($double),

          "id": "string",

          "searchParams": {

            "activeAbTests": {

              "< * >": "string"

            },

            "advisorStatus": {

              "answerPath"*: "string",

              "id"*: "string"

            },

            "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

            "channel"*: "string",

            "customParameters": [

              {

                "cacheIrrelevant"*: boolean,

                "name"*: "string",

                "values"*: [

                  "string"

                ]

              }

            ],

            "excludeProductsNotInRange": boolean,

            "filters": [

              {

                "name"*: "string",

                "substring"*: boolean,

                "values"*: [

                  {

                    "exclude"*: boolean,

                    "type"*: "string [or, and]",

                    "value"*: {}

                  }

                ]

              }

            ],

            "hitsPerPage": integer($int32),

            "location": {

              "latitude": number($double),

              "longitude": number($double)

            },

            "marketIds": [

              "string"

            ],

            "maxCountVariants": integer($int32),

            "maxDistance": number($double),

            "page": integer($int32),

            "purchaserId": "string",

            "query"*: "string",

            "searchField": "string",

            "sortItems": [

              {

                "name"*: "string",

                "order"*: "string [asc, desc]"

              }

            ]

          },

          "selected": "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]"

        }

      ],

      "selectedMarkets"*: [

        {

          "distance": number($double),

          "id": "string",

          "searchParams": {

            "activeAbTests": {

              "< * >": "string"

            },

            "advisorStatus": {

              "answerPath"*: "string",

              "id"*: "string"

            },

            "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

            "channel"*: "string",

            "customParameters": [

              {

                "cacheIrrelevant"*: boolean,

                "name"*: "string",

                "values"*: [

                  "string"

                ]

              }

            ],

            "excludeProductsNotInRange": boolean,

            "filters": [

              {

                "name"*: "string",

                "substring"*: boolean,

                "values"*: [

                  {

                    "exclude"*: boolean,

                    "type"*: "string [or, and]",

                    "value"*: {}

                  }

                ]

              }

            ],

            "hitsPerPage": integer($int32),

            "location": {

              "latitude": number($double),

              "longitude": number($double)

            },

            "marketIds": [

              "string"

            ],

            "maxCountVariants": integer($int32),

            "maxDistance": number($double),

            "page": integer($int32),

            "purchaserId": "string",

            "query"*: "string",

            "searchField": "string",

            "sortItems": [

              {

                "name"*: "string",

                "order"*: "string [asc, desc]"

              }

            ]

          },

          "selected": "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]"

        }

      ],

      "showDistance"*: boolean

    },

    "hits"*: [

      {

        "foundWords"*: [

          "string"

        ],

        "id"*: "string",

        "masterValues"*: {},

        "position"*: integer($int32),

        "score"*: integer($int32),

        "variantValues"*: [

          {

            "< * >": {}

          }

        ]

      }

    ],

    "paging": {

      "currentPage"*: integer($int32),

      "defaultHitsPerPage": integer($int32),

      "hitsPerPage"*: integer($int32),

      "nextLink": {

        "currentPage"*: boolean,

        "number"*: integer($int32),

        "searchParams": {

          "activeAbTests": {

            "< * >": "string"

          },

          "advisorStatus": {

            "answerPath"*: "string",

            "id"*: "string"

          },

          "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

          "channel"*: "string",

          "customParameters": [

            {

              "cacheIrrelevant"*: boolean,

              "name"*: "string",

              "values"*: [

                "string"

              ]

            }

          ],

          "excludeProductsNotInRange": boolean,

          "filters": [

            {

              "name"*: "string",

              "substring"*: boolean,

              "values"*: [

                {

                  "exclude"*: boolean,

                  "type"*: "string [or, and]",

                  "value"*: {}

                }

              ]

            }

          ],

          "hitsPerPage": integer($int32),

          "location": {

            "latitude": number($double),

            "longitude": number($double)

          },

          "marketIds": [

            "string"

          ],

          "maxCountVariants": integer($int32),

          "maxDistance": number($double),

          "page": integer($int32),

          "purchaserId": "string",

          "query"*: "string",

          "searchField": "string",

          "sortItems": [

            {

              "name"*: "string",

              "order"*: "string [asc, desc]"

            }

          ]

        }

      },

      "pageCount"*: integer($int32),

      "previousLink": {

        "currentPage"*: boolean,

        "number"*: integer($int32),

        "searchParams": {

          "activeAbTests": {

            "< * >": "string"

          },

          "advisorStatus": {

            "answerPath"*: "string",

            "id"*: "string"

          },

          "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

          "channel"*: "string",

          "customParameters": [

            {

              "cacheIrrelevant"*: boolean,

              "name"*: "string",

              "values"*: [

                "string"

              ]

            }

          ],

          "excludeProductsNotInRange": boolean,

          "filters": [

            {

              "name"*: "string",

              "substring"*: boolean,

              "values"*: [

                {

                  "exclude"*: boolean,

                  "type"*: "string [or, and]",

                  "value"*: {}

                }

              ]

            }

          ],

          "hitsPerPage": integer($int32),

          "location": {

            "latitude": number($double),

            "longitude": number($double)

          },

          "marketIds": [

            "string"

          ],

          "maxCountVariants": integer($int32),

          "maxDistance": number($double),

          "page": integer($int32),

          "purchaserId": "string",

          "query"*: "string",

          "searchField": "string",

          "sortItems": [

            {

              "name"*: "string",

              "order"*: "string [asc, desc]"

            }

          ]

        }

      }

    },

    "scoreFirstHit"*: number($double),

    "scoreLastHit": number($double),

    "searchControlParams"*: {

      "deduplicationField": "string",

      "idsOnly": boolean,

      "useAbTest": boolean,

      "useAsn": boolean,

      "useAso": boolean,

      "useCache": boolean,

      "useCampaigns": boolean,

      "useDeduplication": boolean,

      "useFoundWords": boolean,

      "useGeo": boolean,

      "usePersonalization": boolean,

      "useRanking": boolean,

      "useSearch": boolean,

      "useSemanticEnhancer": boolean

    },

    "searchParams": {

    "activeAbTests": {

      "< * >": "string"

    },

    "advisorStatus": {

      "answerPath"*: "string",

      "id"*: "string"

    },

    "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

    "channel"*: "string",

    "customParameters": [

      {

        "cacheIrrelevant"*: boolean,

        "name"*: "string",

        "values"*: [

          "string"

        ]

      }

    ],

    "excludeProductsNotInRange": boolean,

    "filters": [

      {

        "name"*: "string",

        "substring"*: boolean,

        "values"*: [

          {

            "exclude"*: boolean,

            "type"*: "string [or, and]",

            "value"*: {}

          }

        ]

      }

    ],

    "hitsPerPage": integer($int32),

    "location": {

      "latitude": number($double),

      "longitude": number($double)

    },

    "marketIds": [

      "string"

    ],

    "maxCountVariants": integer($int32),

    "maxDistance": number($double),

    "page": integer($int32),

    "purchaserId": "string",

    "query"*: "string",

    "searchField": "string",

    "sortItems": [

      {

        "name"*: "string",

        "order"*: "string [asc, desc]"

      }

    ]

  },

  "singleWordResults"*: [

    {

      "previewRecords"*: [

        {

          "foundWords"*: [

            "string"

          ],

          "id"*: "string",

          "masterValues"*: {},

          "position"*: integer($int32),

          "score"*: integer($int32),

          "variantValues"*: [

            {

              "< * >": {}

            }

          ]

        }

      ],

      "searchParams": {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "totalHits"*: integer($int32),

      "word"*: "string"

    }

  ],

  "sortItems"*: [

    {

      "description"*: "string",

      "name"*: "string",

      "order"*: "string [asc, desc]",

      "searchParams"*: {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "selected"*: boolean

    }

  ],

  "timedOut"*: boolean,

  "tookTotal"*: integer($int64),

  "tookWorldmatch"*: integer($int64),

  "totalHits"*: integer($int32)

}

Search (POST)

Der Endpunkt ist von /rest/v1/search/ zu /rest/v4/search/ umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

{

  "params"*: {

    "activeAbTests": {

      "< * >": "string"

    },

    "advisorStatus" {

      "answerPath"*: "string",

      "id"*: "string"

    }

    "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

    "channel"*: "string",

    "customParameters": [

      {

        "cacheIrrelevant"*: boolean,

        "name"*: "string",

        "values"*: [

          "string"

        ]

      }

    ],

    "filters": [

      {

        "name"*: "string",

        "substring"*: boolean,

        "values"*: [

          {

            "exclude"*: boolean,

            "type"*: "string [or, and]"

            "value"*: {}

          }

        ]

      }

    ],

    "hitsPerPage": integer($int32),

    "location" {

      "latitude": number($double),

      "longitude": number($double)

    },

    "marketIds" [

      "string"

    ],

    "maxCountVariants": integer($int32),

    "page": integer($int32),

    "purchaserId": "string",

    "query"*: "string",

    "sortItems" [

      {

        "name"*: "string",

        "order"*: "string [asc, desc]"

      }

    ]

  },

  "searchControlParams": {

    "deduplicationField": "string",

    "idsOnly": boolean,

    "useAbTest": boolean,

    "useAsn": boolean,

    "useAso": boolean,

    "useCache": boolean,

    "useCampaigns": boolean,

    "useDeduplication": boolean,

    "useFoundWords": boolean,

    "useGeo": boolean,

    "usePersonalization": boolean,

    "useSearch": boolean,

    "useSemanticEnhancer": boolean

  }

  "sid": "string",

  "userInput": "string"

}

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "answers"*: [

    {

      "id"*: "string",

      "questions": [

        {

          "answers"*: [

            null

          ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

      "searchParams"*: {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "selected"*: boolean,

      "text"*: "string"

    }

  ],

  "articleNumberSearch"*: boolean,

  "breadCrumbTrail"*: [

    {

      "associatedFieldName": "string",

      "searchParams": {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant": boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "text": "string",

      "type"*: "string [search, filter, advisor, unspecified]",

      "value": {}

    }

  ],

  "campaigns"*: [

    {

      "activeQuestions": [

        {

          "answers"*: [

            null

          ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

      "advisorTree"*: [

        {

          "answers"*: [

            null

          ],

          "id"*: "string",

          "text"*: "string",

          "visible"*: boolean

        }

      ],

      "category"*: "string",

      "feedbackTexts": [

        {

          "html"*: boolean,

          "label"*: "string",

          "position": integer($int32),

          "teaser"*: boolean,

          "text": "string"

        }

      ],

      "flavour"*: "string [ADVISOR, REDIRECT, FEEDBACK, PRODUCT]",

      "hits": [

        {

          "id": "string",

          "values"*: {

            "< * >": {}

          }

        }

      ],

      "id": "string",

      "name": "string",

      "target": {

        "destination"*: "string",

        "name": "string"

      }

    }

  ],

  "facets"*: [

    {

      "associatedFieldName"*: "string",

      "detailedLinks"*: integer($int32),

      "elements"*: [

        {

          "absoluteMaxValue": number($double),

          "absoluteMinValue": number($double),

          "clusterLevel"*: integer($int32),

          "distance": number($double),

          "previewImageURL": "string",

          "searchParams": {

            "activeAbTests": {

              "< * >": "string"

            },

            "advisorStatus": {

              "answerPath"*: "string",

              "id"*: "string"

            },

            "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

            "channel"*: "string",

            "customParameters": [

              {

                "cacheIrrelevant"*: boolean,

                "name"*: "string",

                "values"*: [

                  "string"

                ]

              }

            ],

            "excludeProductsNotInRange": boolean,

            "filters": [

              {

                "name"*: "string",

                "substring"*: boolean,

                "values"*: [

                  {

                    "exclude"*: boolean,

                    "type"*: "string [or, and]",

                    "value"*: {}

                  }

                ]

              }

            ],

            "hitsPerPage": integer($int32),

            "location": {

              "latitude": number($double),

              "longitude": number($double)

            },

            "marketIds": [

              "string"

            ],

            "maxCountVariants": integer($int32),

            "maxDistance": number($double),

            "page": integer($int32),

            "purchaserId": "string",

            "query"*: "string",

            "searchField": "string",

            "sortItems": [

              {

                "name"*: "string",

                "order"*: "string [asc, desc]"

              }

            ]

          },

          "selected"*: "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]",

          "selectedMaxValue": number($double),

          "selectedMinValue": number($double),

          "showDistance": boolean,

          "text": "string",

          "totalHits": integer($int32)

          }

        ],

        "filterStyle"*: "string [DEFAULT, SLIDER, MULTISELECT, TREE]",

        "name": "string",

        "selectedElements"*: [

          {

            "absoluteMaxValue": number($double),

            "absoluteMinValue": number($double),

            "clusterLevel": integer($int32),

            "distance": number($double),

            "previewImageURL": "string",

            "searchParams": {

              "activeAbTests": {

                "< * >": "string"

              },

              "advisorStatus": {

                "answerPath"*: "string",

                "id"*: "string"

              },

              "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

              "channel"*: "string",

              "customParameters": [

                {

                  "cacheIrrelevant"*: boolean,

                  "name"*: "string",

                  "values"*: [

                    "string"

                  ]

                }

              ],

              "excludeProductsNotInRange": boolean,

              "filters": [

                {

                  "name"*: "string",

                  "substring"*: boolean,

                  "values"*: [

                    {

                      "exclude"*: boolean,

                      "type"*: "string [or, and]",

                      "value"*: {}

                    }

                  ]

                }

              ],

              "hitsPerPage": integer($int32),

              "location": {

                "latitude": number($double),

                "longitude": number($double)

              },

              "marketIds": [

                "string"

              ],

              "maxCountVariants": integer($int32),

              "maxDistance": number($double),

              "page": integer($int32),

              "purchaserId": "string",

              "query"*: "string",

              "searchField": "string",

              "sortItems": [

                {

                  "name"*: "string",

                  "order"*: "string [asc, desc]"

                }

              ]

            },

            "selected"*: "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]",

            "selectedMaxValue": number($double),

            "selectedMinValue": number($double),

            "showDistance": boolean,

            "text": "string",

            "totalHits": integer($int32)

          }

        ],

        "selectionType"*: "string [singleHideUnselected, singleShowUnselected, multiSelectOr, multiSelectAnd]",

        "showPreviewImages"*: boolean,

        "type": "string [FLOAT, INTEGER, MULTI, TEXT, CATEGORY_PATH, BOOLEAN, DATE, GTIN, ALPHANUMERIC, PROPERTY, GEO]",

        "unit": "string"

      }

    ],

    "fieldRoles"*: {

      "< * >": "string"

    },

    "filters"*: [

      {

        "name"*: "string",

        "substring"*: boolean,

        "values"*: [

          {

            "exclude"*: boolean,

            "type"*: "string [or, and]",

            "value"*: {}

          }

        ]

      }

    ],

    "geo": {

      "markets"*: [

        {

          "distance": number($double),

          "id": "string",

          "searchParams": {

            "activeAbTests": {

              "< * >": "string"

            },

            "advisorStatus": {

              "answerPath"*: "string",

              "id"*: "string"

            },

            "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

            "channel"*: "string",

            "customParameters": [

              {

                "cacheIrrelevant"*: boolean,

                "name"*: "string",

                "values"*: [

                  "string"

                ]

              }

            ],

            "excludeProductsNotInRange": boolean,

            "filters": [

              {

                "name"*: "string",

                "substring"*: boolean,

                "values"*: [

                  {

                    "exclude"*: boolean,

                    "type"*: "string [or, and]",

                    "value"*: {}

                  }

                ]

              }

            ],

            "hitsPerPage": integer($int32),

            "location": {

              "latitude": number($double),

              "longitude": number($double)

            },

            "marketIds": [

              "string"

            ],

            "maxCountVariants": integer($int32),

            "maxDistance": number($double),

            "page": integer($int32),

            "purchaserId": "string",

            "query"*: "string",

            "searchField": "string",

            "sortItems": [

              {

                "name"*: "string",

                "order"*: "string [asc, desc]"

              }

            ]

          },

          "selected": "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]"

        }

      ],

      "selectedMarkets"*: [

        {

          "distance": number($double),

          "id": "string",

          "searchParams": {

            "activeAbTests": {

              "< * >": "string"

            },

            "advisorStatus": {

              "answerPath"*: "string",

              "id"*: "string"

            },

            "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

            "channel"*: "string",

            "customParameters": [

              {

                "cacheIrrelevant"*: boolean,

                "name"*: "string",

                "values"*: [

                  "string"

                ]

              }

            ],

            "excludeProductsNotInRange": boolean,

            "filters": [

              {

                "name"*: "string",

                "substring"*: boolean,

                "values"*: [

                  {

                    "exclude"*: boolean,

                    "type"*: "string [or, and]",

                    "value"*: {}

                  }

                ]

              }

            ],

            "hitsPerPage": integer($int32),

            "location": {

              "latitude": number($double),

              "longitude": number($double)

            },

            "marketIds": [

              "string"

            ],

            "maxCountVariants": integer($int32),

            "maxDistance": number($double),

            "page": integer($int32),

            "purchaserId": "string",

            "query"*: "string",

            "searchField": "string",

            "sortItems": [

              {

                "name"*: "string",

                "order"*: "string [asc, desc]"

              }

            ]

          },

          "selected": "string [TRUE, FALSE, IMPLICIT, IRRELEVANT]"

        }

      ],

      "showDistance"*: boolean

    },

    "hits"*: [

      {

        "foundWords"*: [

          "string"

        ],

        "id"*: "string",

        "masterValues"*: {},

        "position"*: integer($int32),

        "score"*: integer($int32),

        "variantValues"*: [

          {

            "< * >": {}

          }

        ]

      }

    ],

    "paging": {

      "currentPage"*: integer($int32),

      "defaultHitsPerPage": integer($int32),

      "hitsPerPage"*: integer($int32),

      "nextLink": {

        "currentPage"*: boolean,

        "number"*: integer($int32),

        "searchParams": {

          "activeAbTests": {

            "< * >": "string"

          },

          "advisorStatus": {

            "answerPath"*: "string",

            "id"*: "string"

          },

          "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

          "channel"*: "string",

          "customParameters": [

            {

              "cacheIrrelevant"*: boolean,

              "name"*: "string",

              "values"*: [

                "string"

              ]

            }

          ],

          "excludeProductsNotInRange": boolean,

          "filters": [

            {

              "name"*: "string",

              "substring"*: boolean,

              "values"*: [

                {

                  "exclude"*: boolean,

                  "type"*: "string [or, and]",

                  "value"*: {}

                }

              ]

            }

          ],

          "hitsPerPage": integer($int32),

          "location": {

            "latitude": number($double),

            "longitude": number($double)

          },

          "marketIds": [

            "string"

          ],

          "maxCountVariants": integer($int32),

          "maxDistance": number($double),

          "page": integer($int32),

          "purchaserId": "string",

          "query"*: "string",

          "searchField": "string",

          "sortItems": [

            {

              "name"*: "string",

              "order"*: "string [asc, desc]"

            }

          ]

        }

      },

      "pageCount"*: integer($int32),

      "previousLink": {

        "currentPage"*: boolean,

        "number"*: integer($int32),

        "searchParams": {

          "activeAbTests": {

            "< * >": "string"

          },

          "advisorStatus": {

            "answerPath"*: "string",

            "id"*: "string"

          },

          "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

          "channel"*: "string",

          "customParameters": [

            {

              "cacheIrrelevant"*: boolean,

              "name"*: "string",

              "values"*: [

                "string"

              ]

            }

          ],

          "excludeProductsNotInRange": boolean,

          "filters": [

            {

              "name"*: "string",

              "substring"*: boolean,

              "values"*: [

                {

                  "exclude"*: boolean,

                  "type"*: "string [or, and]",

                  "value"*: {}

                }

              ]

            }

          ],

          "hitsPerPage": integer($int32),

          "location": {

            "latitude": number($double),

            "longitude": number($double)

          },

          "marketIds": [

            "string"

          ],

          "maxCountVariants": integer($int32),

          "maxDistance": number($double),

          "page": integer($int32),

          "purchaserId": "string",

          "query"*: "string",

          "searchField": "string",

          "sortItems": [

            {

              "name"*: "string",

              "order"*: "string [asc, desc]"

            }

          ]

        }

      }

    },

    "scoreFirstHit"*: number($double),

    "scoreLastHit": number($double),

    "searchControlParams"*: {

      "deduplicationField": "string",

      "idsOnly": boolean,

      "useAbTest": boolean,

      "useAsn": boolean,

      "useAso": boolean,

      "useCache": boolean,

      "useCampaigns": boolean,

      "useDeduplication": boolean,

      "useFoundWords": boolean,

      "useGeo": boolean,

      "usePersonalization": boolean,

      "useRanking": boolean,

      "useSearch": boolean,

      "useSemanticEnhancer": boolean

    },

    "searchParams": {

    "activeAbTests": {

      "< * >": "string"

    },

    "advisorStatus": {

      "answerPath"*: "string",

      "id"*: "string"

    },

    "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

    "channel"*: "string",

    "customParameters": [

      {

        "cacheIrrelevant"*: boolean,

        "name"*: "string",

        "values"*: [

          "string"

        ]

      }

    ],

    "excludeProductsNotInRange": boolean,

    "filters": [

      {

        "name"*: "string",

        "substring"*: boolean,

        "values"*: [

          {

            "exclude"*: boolean,

            "type"*: "string [or, and]",

            "value"*: {}

          }

        ]

      }

    ],

    "hitsPerPage": integer($int32),

    "location": {

      "latitude": number($double),

      "longitude": number($double)

    },

    "marketIds": [

      "string"

    ],

    "maxCountVariants": integer($int32),

    "maxDistance": number($double),

    "page": integer($int32),

    "purchaserId": "string",

    "query"*: "string",

    "searchField": "string",

    "sortItems": [

      {

        "name"*: "string",

        "order"*: "string [asc, desc]"

      }

    ]

  },

  "singleWordResults"*: [

    {

      "previewRecords"*: [

        {

          "foundWords"*: [

            "string"

          ],

          "id"*: "string",

          "masterValues"*: {},

          "position"*: integer($int32),

          "score"*: integer($int32),

          "variantValues"*: [

            {

              "< * >": {}

            }

          ]

        }

      ],

      "searchParams": {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "totalHits"*: integer($int32),

      "word"*: "string"

    }

  ],

  "sortItems"*: [

    {

      "description"*: "string",

      "name"*: "string",

      "order"*: "string [asc, desc]",

      "searchParams"*: {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "selected"*: boolean

    }

  ],

  "timedOut"*: boolean,

  "tookTotal"*: integer($int64),

  "tookWorldmatch"*: integer($int64),

  "totalHits"*: integer($int32)

}

similarproducts

Similar Products (GET)

Der Endpunkt ist von /rest/v1/similarproducts/{channel} zu /rest/v4/records/{channel}/similar umgezogen.

Request

Der verpflichtende Parameter idType (string, query) wurde hinzugefügt. Er spezifiziert, welchen Typ die ID besitzt. Der Typ id identifiziert eine Produktgruppe (z. B. ein Kleidungsstück, das in mehreren Varianten, bspw. Farben, angeboten wird), productNumber identifiziert ein einzelnes Produkt (z. B. ein grünes T-Shirt). Der Standardwert ist productNumber.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.


Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "attributes"*: [

    {

      "name"*: "string",

      "value"*: "string"

    }

  ],

  "fieldRoles"*: {

    "< * >": {}

  },

  "hits"*: [

    {

      "id": "string",

      "values"*: {

        "< * >": {}

      }

    }

  ]

}

suggest

Get Suggestions (GET)

Der Endpunkt ist von /rest/v1/suggest/{channel} zu /rest/v4/suggest/{channel} umgezogen.

Request

Der Parameter filter (array [string], query) wurde hinzugefügt. Er filtert die Einträge nach dem gesamten Feldwert. Ein Filter kann mehrere Werte enthalten, durch Einsetzen des Präfix „!“ kann ein Wert ausgeschlossen werden. Die Einträge werden im Format facetid:value übergeben. Um alle Felder zu durchsuchen, ersetzen Sie die facedId durch ein Asterisk (*). Dieser Filtertyp unterstützt allerdings das Ausschluss-Präfix nicht.

Der Parameter substringFilter (array [string], query) wurde hinzugefügt. Er filtert die Einträge nach einem Substring des Feldwerts. Ein Filter kann mehrere Werte enthalten, durch Einsetzen des Präfix „!“ kann ein Wert ausgeschlossen werden. Die Einträge werden im Format facetid:value übergeben. Um alle Felder zu durchsuchen, ersetzen Sie die facedId durch ein Asterisk (*). Dieser Filtertyp unterstützt allerdings das Ausschluss-Präfix nicht.

Der Parameter sort (array [string], query) wurde hinzugefügt. Er sortiert das Ergebnis. Die Einträge werden im Format FieldName:order übergeben, wobei order entweder den Wert asc oder desc enthalten muss; z. B. Manufacturer:asc.

Der Parameter cacheIrrelevant (array [string], query) wurde hinzugefügt. Setzt Parameter als irrelevant für den Cache.

Der Parameter latitude (number, query) wurde hinzugefügt. Er gibt den Breitengrad der Location an.

Der Parameter longitude (number, query) wurde hinzugefügt. Er gibt den Längengrad der Location an.

Der Parameter purchaserId (string, query) wurde hinzugefügt. Verwenden Sie diesen Parameter, um die Kunden-ID zu übergeben. Diese ID wird nur benötigt, wenn das Customer-Specific-Pricing-Modul aktiviert ist, andernfalls wird sie ignoriert.

Der Parameter page (string, query) wurde hinzugefügt. Enthält das Suchergebnis viele Einträge, werden diese in Seiten aufgeteilt. Dies reduziert die Datenmenge, die auf ein Mal übertragen werden muss. Sie können angeben, welche Seite zurückgegeben werden soll; die Nummerierung der Seiten beginnt mit 1.

Der Parameter hitsPerPage (string, query) wurde hinzugefügt. Im FACT-Finder-Management-Interface können Sie festlegen, wie viele Ergebnisse standardmäßig zurückgegeben werden sollen. Bevorzugen Sie eine andere Anzahl, können Sie diese durch diesen Parameter festlegen.

Der Parameter maxCountVariants (integer, query) wurde hinzugefügt. Er legt die maximale Anzahl an Varianten fest, die pro Eintrag zurückgegeben werden.

Der Parameter advisorStatus (string, query) wurde hinzugefügt. Hier können Sie die aktuelle Kampagnen-ID und den Antwortpfad übergeben. Die Einträge werden im Format campaignId-answerPath übergeben.

Der Parameter searchField (string, query) wurde hinzugefügt. Normalerweise durchsucht FACT-Finder alle durchsuchbaren Felder. Es ist allerdings auch möglich, nur ein spezifisches Feld zu durchsuchen.

Der Parameter articleNumberSearch (string, query) wurde hinzugefügt. Er legt fest, ob die Abfrage als Artikelnummer interpretiert werden soll. Bei DETECT wird automatisiert ermittelt, ob es sich bei der Abfrage um eine Artikelnummer handelt, ALWAYS interpretiert den Suchbegriff stets als Artikelnummer, NEVER nie. Der Standardwert ist DETECT.

Der Parameter sid (string, query) wurde hinzugefügt. Er enthält die Session-ID des Nutzers oder der Nutzerin.

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "articleNumberSearchAllowed"*: boolean,

  "fieldRoles"*: {

    "< * >": "string"

  },

  "suggestions"*: [

    {

      "attributes"*: {

        "< * >": {}

      },

      "hitCount"*: integer($int32),

      "image": "string",

      "name"*: "string",

      "score": number($double),

      "searchParams": {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "type"*: "string"

    }

  ]

}

Get Suggestions (POST)

Der Endpunkt ist von /rest/v1/suggest/ zu /rest/v4/suggest/ umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

{

  "activeAbTests": {

    "< * >": "string"

  },

  "advisorStatus": {

    "answerPath"*: "string",

    "id"*: "string"

  },

  "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

  "channel": "string",

  "customParameters": [

    {

      "cacheIrrelevant"*: true,

      "name"*: "string",

      "values"*: [

        "string"

      ]

    }

  ],

  "filters": [

    {

      "name"*: "string",

      "substring"*: true,

      "values"*: [

        {

          "exclude"*: true,

          "type"*: "string [or, and]",

          "value"*: {}

        }

      ]

    }

  ],

  "hitsPerPage": integer($int32),

  "location": {

    "latitude": number($double),

    "longitude": number($double)

  },

  "marketIds": [

    "string"

  ],

  "maxCountVariants": integer($int32),

  "page": integer($int32),

  "purchaserId": "string",

  "query"*: "string",

  "searchField": "string",

  "sid": "string",

  "sortItems": [

    {

      "name"*: "string",

      "order"*: "string [asc, desc]"

    }

  ]

}

Response

Der Response 200 (OK) gibt Daten im folgenden Format zurück:

{

  "articleNumberSearchAllowed"*: boolean,

  "fieldRoles"*: {

    "< * >": "string"

  },

  "suggestions"*: [

    {

      "attributes"*: {

        "< * >": {}

      },

      "hitCount"*: integer($int32),

      "image": "string",

      "name"*: "string",

      "score": number($double),

      "searchParams": {

        "activeAbTests": {

          "< * >": "string"

        },

        "advisorStatus": {

          "answerPath"*: "string",

          "id"*: "string"

        },

        "articleNumberSearch": "string [DETECT, ALWAYS, NEVER]",

        "channel"*: "string",

        "customParameters": [

          {

            "cacheIrrelevant"*: boolean,

            "name"*: "string",

            "values"*: [

              "string"

            ]

          }

        ],

        "excludeProductsNotInRange": boolean,

        "filters": [

          {

            "name"*: "string",

            "substring"*: boolean,

            "values"*: [

              {

                "exclude"*: boolean,

                "type"*: "string [or, and]",

                "value"*: {}

              }

            ]

          }

        ],

        "hitsPerPage": integer($int32),

        "location": {

          "latitude": number($double),

          "longitude": number($double)

        },

        "marketIds": [

          "string"

        ],

        "maxCountVariants": integer($int32),

        "maxDistance": number($double),

        "page": integer($int32),

        "purchaserId": "string",

        "query"*: "string",

        "searchField": "string",

        "sortItems": [

          {

            "name"*: "string",

            "order"*: "string [asc, desc]"

          }

        ]

      },

      "type"*: "string"

    }

  ]

}

tagcloud

Tag Cloud (GET)

Der Endpunkt unter /rest/v1/tagcloud/{channel} ist entfallen.

tracking

In NG 1.2 gibt es neue Tracking-Endpunkte. Über diese können Sie sich in der Integrationsdokumentation informieren.

Cart (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/cart zu /rest/v4/track/{channel}/cart umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

[

  {

    "campaign": "string",

    "count"*: integer($int32),

    "id"*: "string",

    "masterId": "string",

    "price": number($double),

    "purchaserId": "string",

    "sid"*: "string",

    "title": "string",

    "userId": "string

  }

]

Checkout (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/checkoutzu /rest/v4/track/{channel}/checkout umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

[

  {

    "campaign": "string",

    "count"*: integer($int32),

    "id"*: "string",

    "masterId": "string",

    "price": number($double),

    "purchaserId": "string",

    "sid"*: "string",

    "title": "string",

    "userId": "string

  }

]

Click (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/click zu /rest/v4/track/{channel}/click umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

[

  {

    "campaign": "string",

    "id"*: "string",

    "masterId": "string",

    "page": integer($int32),

    "pageSize": integer($int32),

    "pos"*: integer($int32),

    "purchaserId": "string",

    "query"*: "string",

    "score": number($double),

    "sid"*: "string",

    "title": "string",

    "userId": "string

  }

]

Feedback (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/feedback zu /rest/v4/track/{channel}/feedback umgezogen.

Log (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/log zu /rest/v4/track/{channel}/log umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

[

  {

    "additionalInfo": "string",

    "customSorting": true,

    "filters"*: [

      {

        "name": "string",

        "substring": true,

        "values": [

          {

            "exclude": true,

            "type": "or",

            "value": {}

          }

        ]

      }

    ],

    "hitCount"*: integer($int32),

    "id"*: "string",

    "masterId": "string",

    "maxScore"*: integer($int32),

    "minScore"*: integer($int32),

    "page"*: integer($int32),

    "pageSize"*: integer($int32),

    "purchaserId": "string",

    "query"*: "string",

    "searchField": "string",

    "searchTime"*: integer($int32),

    "sid"*: "string",

    "title": "string",

    "userId": "string"

  }

]

Login (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/login zu /rest/v4/track/{channel}/login umgezogen.

Recommendation click (POST)

Der Endpunkt ist von /rest/v1/track/{channel}/recommendationClick zu /rest/v4/track/{channel}/recommendationClick umgezogen.

Request

Der Request-Body nimmt Daten im folgenden Format entgegen (mit * gekennzeichnete Parameter sind verpflichtend):

[

  {

    "id"*: "string",

    "mainId"*: "string",

    "masterId": "string",

    "purchaserId": "string",

    "sid": "string",

    "title": "string",

    "userId": "string"

  }

]