Zum Hauptinhalt springen
Über den Endpunkt categories/ steht Ihnen eine Schnittstelle zur Verfügung, mit der Sie Kategoriedaten in unserem Shop-System verwalten können. Über diese Schnittstelle können Sie Kategorien abrufen, erstellen, aktualisieren, verschieben und löschen, Produkten Kategorien zuweisen und abfragen, in welchen Kategorien ein Produkt liegt. Die folgenden Abschnitte beschreiben zunächst die Datenfelder einer Kategorie, dann die Methoden für Kategorien und schließlich die Methoden für die Produktzuweisung.

Unterstützte Methoden

Angabe aller unterstützten Methoden.

Datenfelder einer Kategorie (Category Resource)

Die Datenfelder einer Kategorie werden in der Konfiguration verwaltet und als JSON-Objekt intern gespeichert.
Es wird zwischen den folgenden Feldtypen unterschieden:
  • Standardfelder: Vom System vorgegeben und immer vorhanden (beispielsweise id, name, descr, hidden)
  • Benutzerdefinierte Felder: Können flexibel angelegt werden und befinden sich im Abschnitt custom des Objekts
  • Technische Felder zur Strukturabbildung: Dienen der Darstellung der Kategoriestruktur im Shop
    Dazu gehören:
    • _parent: ID der übergeordneten Kategorie
    • _children: Liste der untergeordneten Kategorien
    • sortValue: technischer Sortierwert zur Bestimmung der tatsächlichen Reihenfolge im Shop

Zusätzliche Felder

Beispiel des Datensatzes

Breaking Change in Antworten. Kategoriefelder vom Typ Price werden nicht mehr als String, sondern als Objekt mit Standardpreis und geplanten Aktionspreisen ausgeliefert. Aufbau, erlaubtes Format in Requests und Validierung sind identisch mit den Produktfeldern und im Abschnitt Zeitgesteuerte Preise (Aktionspreise) beschrieben.

Methoden für Kategorien

GET categories

Dieser Endpunkt liefert eine Liste von Kategorien aus dem Shopsystem. Die Liste lässt sich nach Feldern filtern und sortieren. Zusätzlich steht der Parameter textSearch für eine Textsuche zur Verfügung. Felder, die Ihr Shop selbst angelegt hat, sprechen Sie als custom.<technischer Feldname> an. Mit dem eigenen Parameter filter[parent] erhalten Sie gezielt die direkten Unterkategorien einer Kategorie. Dazu zählen die Unterkategorien, die selbst zu den Filtern passen oder weiter unten einen Treffer enthalten. Wird filter[parent]=root gesetzt, werden alle Hauptkategorien der obersten Ebene zurückgegeben. Durch den Parameter withExternData=yes können zusätzlich die IDs der übergeordneten Kategorie (_parent) und der untergeordneten Kategorien (_children) sowie der Sortierwert (sortValue) mitgeladen werden. Mit subshopId lassen sich die Kategorien eines bestimmten Subshops abfragen. Für die Nutzung dieses Endpunkts sind Leseberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Beispiel mit withExternData=yes, um _parent und _children mitzuladen:

Antwort

Filterfelder

id, name, descr, active, hidden, productAssignmentType, productRules, timestampCreatedAt, timestampUpdatedAt sowie custom.<technischer Feldname> für selbst angelegte Felder. filter[parent] ist ein eigener Parameter und gehört nicht zu den Filterfeldern.

Sortierfelder

Alle Kategoriefelder und custom.<technischer Feldname>, ausgenommen Felder vom Typ Liste, Map, Bild und Video.

Fehlercodes

GET categories/{categoryId}

Dieser Endpunkt lädt die vollständigen Daten einer einzelnen Kategorie anhand ihrer ID. Optional kann mit dem Parameter withExternData=yes zusätzlich die ID der übergeordneten Kategorie (_parent), die Liste aller direkt untergeordneten Kategorien (_children) und der Sortierwert (sortValue) mitgeliefert werden. Für die Nutzung des Endpunkts sind Leseberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Beispiel mit withExternData=yes, um _parent und _children mitzuladen:

Antwort

Fehlercodes

PUT categories/{categoryId}

Mit diesem Endpunkt kann eine bestehende Kategorie anhand ihrer ID aktualisiert werden. Der Request-Body muss nur die Felder enthalten, die tatsächlich geändert werden sollen. Eine vollständige Kategorie-Definition ist nicht notwendig. Wird der optionale Parameter createMissing=yes gesetzt und existiert keine Kategorie mit der angegebenen ID, wird stattdessen eine neue Kategorie mit dieser ID angelegt. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

PUT categories/{categoryId}/assign

Mit diesem Endpunkt können einer bestehenden Kategorie anhand ihrer ID mehrere Unterkategorien zugewiesen werden. Der spezielle Wert categoryId: “root” sorgt dafür, dass die Kategorien als Hauptkategorien auf die oberste Ebene kommen. Im Request-Body muss ein Array mit Kategorie-IDs übergeben werden. Diese sollen der angegebenen Kategorie als untergeordnet (_children) zugeordnet werden. Die übergebene Liste ersetzt die bisherigen Unterkategorien in der angegebenen Reihenfolge. Kategorien, die bisher Unterkategorien waren und in der Liste fehlen, verlieren ihren Platz im Kategoriebaum. Um eine einzelne Kategorie zu verschieben, ohne die übrigen Unterkategorien neu schreiben zu müssen, verwenden Sie POST categories/{categoryId}/move. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

POST categories/{categoryId}/move

Mit diesem Endpunkt kann eine bestehende Kategorie anhand ihrer ID innerhalb der Kategoriestruktur verschoben werden. Die Positionierung erfolgt entweder durch Einordnung als Unterkategorie (intoTarget) oder durch Sortierung auf derselben Ebene (beforeTarget oder afterTarget). Es darf nur einer dieser Zielparameter gesetzt sein. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

POST categories/{categoryId}/setRule

Über diesen Endpunkt können einer bestehenden Kategorie anhand ihrer ID mehrere Produkte zugewiesen werden. Dabei wird die Kategorie auf die regelbasierte Produktzuweisung (ruleBased) umgestellt. Im Request-Body muss ein als JSON serialisiertes Array von Regeln übergeben werden. Produkte, auf die die Regeln zutreffen, werden der Kategorie zugewiesen. Die Antwort enthält den Wertcount, der die ANzahl der Produkte angibt, auf die die Regel zutrifft. rebuilt gibt an, ob die Regel sofort angewendet werden konnte. Wenn der Wert false ist, wird es später erneut versucht. Der Endpunkt muss dafür nicht erneut getriggert werden. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

POST categories/rebuildRules

Dieser Endpunkt aktualisiert Produkte in Kategorien mit regelbasierter Produktzuweisung. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

POST categories

Mit diesem Endpunkt kann eine neue Kategorie im Shop-System erstellt werden.
Über die optionalen Parameter intoTarget, beforeTarget oder afterTarget lässt sich festlegen, wo die neue Kategorie in der Kategoriestruktur einsortiert werden soll:
  • Mit intoTarget wird sie als Unterkategorie einer bestehenden Kategorie angelegt.
  • Der spezielle Wert intoTarget: "root" sorgt dafür, dass die neue Kategorie als Hauptkategorie auf der obersten Ebene erstellt wird.
  • Mit beforeTarget oder afterTarget wird sie auf derselben Ebene vor oder nach einer vorhandenen Kategorie einsortiert.
Es darf jeweils nur ein Zielparameter gesetzt sein. Wenn die übergebene Kategorie-ID bereits vergeben ist, lehnt der Shop die Anfrage mit dem Status 409 Conflict ab. Eine vorhandene Kategorie wird dabei nicht überschrieben. Für die Nutzung dieses Endpunkts sind Erstellberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

DELETE categories/{categoryId}

Mit diesem Endpunkt kann eine bestehende Kategorie anhand ihrer ID gelöscht werden.
Dabei werden nicht nur die gewählte Kategorie selbst, sondern auch alle zugehörigen Unterkategorien aus dem System entfernt.
Für die Nutzung dieses Endpunkts sind Löschberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Antwort

Fehlercodes

Methoden für Produktzuweisung

Technische Limits

Produkte können Kategorien manuell, regelbasiert oder über die Unterkategorien zugewiesen werden:
  • Manuelle Zuweisung bedeutet, dass bestimmte Produkte gezielt einzelnen Kategorien zugeordnet werden (beispielsweise „Produkt A gehört zu Kategorie B“).
  • Regelbasierte Zuweisung erlaubt es, Kategorien automatisch mit Produkten zu befüllen, die bestimmte Kriterien erfüllen (beispielsweise „alle reduzierten Produkte“ oder „alle Produkte mit Lagerbestand > 0“).
  • Produkte von Unterkategorien übernehmen, hiermit werden Kategorien automatisch mit allen Produkten befüllt, die den direkten Unterkategorien zugewiesen sind. Beispielsweise enthält die Kategorie “Damen” alle Produkte aus den Unterkategorien “Damenblusen” und “Damenröcke”.
Bei regelbasierten Kategorien ist die maximale Anzahl an zugewiesenen Produkten technisch auf 1.000 Ergebnisse begrenzt, unabhängig von der Anzahl der Produkte im Shop oder von der formulierten Regel. Wenn Produkte über mehrere Hierarchie-Ebenen übernommen werden sollen, müssen alle Kategorieebenen ihre Produkte ebenfalls aus den Unterkategorien übernehmen. Andernfalls werden nur die Produkte der direkten Unterkategorie übernommen, aber nicht die Produkte deren Kinder. Beispiel:
Kategorie A bekommt alle Produkte aus den Kategorien B, D, E, F und G zugeordnet. Die Produkte aus Kategorie C werden Kategorie A jedoch nicht zugeordnet, da die Produktzuweisung für Kategorie B “Manuell” ist und nicht “Produkte von Unterkategorien übernehmen”.

GET categories/{categoryId}/products

Über diesen Endpunkt wird eine Liste aller Produkte abgerufen, die anhand ihrer ID einer bestimmten Kategorie zugewiesen sind. Er entspricht der Anfrage GET products?inCategory={categoryId}, nimmt dieselben Parameter entgegen und liefert dieselben Einträge. Eine vollständige Beschreibung der Parameter, Filter- und Sortierfelder ist unter GET products zu finden. Mithilfe der Parameter from und size können große Ergebnismengen in Seiten aufgeteilt werden, sodass die API beispielsweise nicht 10.000 Produkte auf einmal übertragen muss. Mit from wird angegeben, wie viele Einträge am Anfang übersprungen werden sollen. size bestimmt die maximale Anzahl der zurückgegebenen Produkte und muss im Bereich von 1 bis 300 liegen. Mit dem optionalen Parameter textSearch kann zusätzlich eine Textsuche innerhalb der zugewiesenen Produkte durchgeführt werden. Für die Nutzung dieses Endpunkts sind Leseberechtigungen für Produkte erforderlich.

Beispiel

Antwort

Filterfelder

Alle Produktdatenfelder sowie benutzerdefinierte Felder beginnen mit dem Präfix custom.. Die Details dazu finden Sie unter GET products.

Sortierfelder

Alle Produktdatenfelder mit Ausnahme der Felder vom Typ Liste, Map, Bild und Video. Ohne den Parameter sort liefert der Endpunkt die Produkte in der im Shop gepflegten Kategoriereihenfolge.

Fehlercodes

GET categories/products/unassigned

Mit diesem Endpunkt wird eine Liste aller Produkte abgerufen, die aktuell keiner Kategorie zugewiesen sind. Er entspricht der Anfrage GET products?notInAnyCategory=true, nimmt dieselben Parameter entgegen und liefert dieselben Einträge. Die vollständige Beschreibung der Parameter, Filter- und Sortierfelder ist unter GET products zu finden. Mithilfe der Parameter from und size können große Ergebnismengen in Seiten aufgeteilt werden, damit die API beispielsweise nicht 10.000 Produkte auf einmal übertragen muss. Mit from wird angegeben, wie viele Einträge am Anfang übersprungen werden sollen. size bestimmt die maximale Anzahl der zurückgegebenen Produkte und muss im Bereich von 1 bis 300 liegen. Mithilfe des optionalen Parameters textSearch ist eine Textsuche innerhalb der nicht zugewiesenen Produkte möglich. Für die Nutzung dieses Endpunkts sind Leseberechtigungen für Produkte erforderlich.

Beispiel

Antwort

Filterfelder

Alle Produktdatenfelder sowie benutzerdefinierte Felder beginnen mit dem Präfix custom.. Die Details dazu finden Sie unter GET products.

Sortierfelder

Alle Produktdatenfelder mit Ausnahme der Felder vom Typ Liste, Map, Bild und Video.

Fehlercodes

GET products/{productId}/categories

Mit diesem Endpunkt werden alle Kategorien abgerufen, denen ein bestimmtes Produkt zugewiesen ist. Damit lässt sich die Zuweisung aus der umgekehrten Richtung prüfen: Statt der Produkte einer Kategorie erhalten Sie die Kategorien eines Produkts. Enthalten sind alle Zuweisungsarten, also manuelle und regelbasierte Zuweisungen sowie Zuweisungen über „Produkte von Unterkategorien übernehmen“. Es gilt derselbe Stand wie bei GET categories/{categoryId}/products. Auch inaktive und ausgeblendete Kategorien werden geliefert. Ob eine Kategorie im Shop sichtbar ist, erkennen Sie an den Feldern active und hidden. Die Liste wird vollständig in einer Antwort geliefert. Die Parameter from, size und textSearch sowie Filter und Sortierung werden nicht unterstützt. Die Kategorien erscheinen in der Reihenfolge, in der die Zuweisungen angelegt wurden. Diese Reihenfolge entspricht nicht der Reihenfolge in der Navigation des Shops. Kategorien werden Produkten zugewiesen, nicht einzelnen Varianten. Geben Sie deshalb die Produkt-ID an. Wie bei GET categories stehen folgende optionale Parameter zur Verfügung:
  • withExternData=yes liefert zu jeder Kategorie zusätzlich _parent, _children und sortValue.
  • subshopId fragt die Zuweisungen eines bestimmten Subshops ab.
Für die Nutzung dieses Endpunkts sind Leseberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Antwort

Jeder Eintrag in items hat denselben Aufbau wie bei GET categories/{categoryId}.
Ist das Produkt keiner Kategorie zugewiesen, ist items leer und totalCount ist 0.

Filterfelder

Nicht unterstützt.

Sortierfelder

Nicht unterstützt.

Fehlercodes

POST categories/{categoryId}/products/assign

Mit diesem Endpunkt können ein oder mehrere Produkte anhand ihrer Produkt-IDs einer bestimmten Kategorie anhand ihrer Kategorie-ID zugewiesen werden. Die Produkt-IDs werden im Feld prodId übergeben. Das Feld akzeptiert entweder einen String (ein einzelnes Produkt) oder ein Array von Strings (mehrere Produkte). Der Endpunkt funktioniert nur bei Kategorien mit der Produktzuweisung manual, bei anderen Kategorien lehnt der Shop die Anfrage ab. Ohne Positionsangabe werden die Produkte am Ende der Kategorie angehängt. Durch den optionalen Query-Parameter updateIndex=yes wird der Suchindex der betroffenen Produkte sofort aktualisiert, anstatt bis zum nächsten geplanten Lauf zu warten. Optional kann mit den Parametern beforeTarget oder afterTarget festgelegt werden, an welcher Position innerhalb der Kategorie die Produkte einsortiert werden sollen. Beide dürfen nicht gleichzeitig gesetzt sein. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

POST categories/{categoryId}/products/swap

Über diesen Endpunkt können die Positionen zweier Produkten innerhalb einer bestimmten Kategorie getauscht werden. Er funktioniert nur bei Kategorien, die mit der Produktzuweisung manual versehen sind. Die Produkt-IDs werden im Request-Body übergeben. Die Antwort gibt Auskunft darüber, ob der Tausch erfolgreich durchgeführt werden konnte. Für die Nutzung dieses Endpunkts sind Schreibrechte für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

DELETE categories/{categoryId}/products/{productId}

Mit diesem Endpunkt wird ein Produkt anhand seiner ID aus einer bestimmten Kategorie anhand ihrer ID entfernt. Dadurch wird die Verknüpfung zwischen Produkt und Kategorie aufgelöst. Das Produkt bleibt im System bestehen, ist jedoch nicht mehr dieser Kategorie zugeordnet. Mit dem optionalen Query-Parameter updateIndex=yes wird der Suchindex des Produkts sofort aktualisiert, ohne dass es auf den nächsten geplanten Lauf warten muss. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Antwort

Fehlercodes

DELETE categories/{categoryId}/products/

Mit diesem Endpunkt können mehrere Produkte gleichzeitig aus einer bestimmten Kategorie anhand ihrer ID entfernt werden. Die zu entfernenden Produkt-IDs werden als Array im Feld prodId übergeben.
Dadurch wird die Zuordnung der Produkte zur angegebenen Kategorie aufgehoben. Die Produkte selbst bleiben im System erhalten. Der Endpunkt funktioniert nur bei Kategorien mit der Produktzuweisung manual.
Mit dem optionalen Query-Parameter updateIndex=yes wird der Suchindex der betroffenen Produkte sofort aktualisiert, anstatt auf den nächsten geplanten Lauf zu warten. Für die Nutzung dieses Endpunkts sind Schreibberechtigungen für Kategorie-Daten erforderlich.

Beispiel

Request Body

Antwort

Fehlercodes

Ergänzende Referenzen

Hinweis zu Kategoriedatenfeldern

Neue Kategoriedatenfelder (zusätzliche Beschreibungen, Bilder etc.) können nicht direkt über die Kategorie-API erstellt werden. Die API dient ausschließlich dem Auslesen und Pflegen vorhandener Felder. Um neue Felder zu definieren, muss die Konfiguration im Knoten content.customCategoryField verwendet werden. → content - Katalog (Kategorien & Produkte) Dort können individuelle Felder definiert werden. Sobald ein Feld dort konfiguriert wurde, steht es anschließend automatisch in der Kategorie-API zur Verfügung, beispielsweise in GET categories oder POST categories.

Support

Bei technischen Fragen und Hilfestellungen ist unser Support-Team für Sie erreichbar: Zum Kundenportal Bitte senden Sie uns eine möglichst detaillierte Beschreibung sowie Screenshots, Requests/Antworten, damit wir Ihre Anfrage zeitnah und zielführend beantworten können.