Der EndpunktDocumentation Index
Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
Use this file to discover all available pages before exploring further.
/products stellt Ihnen eine Schnittstelle bereit, mit der Sie Produktdaten und Lagerbestände in unserem Shop-System verwalten können. Darüber können Sie Produkte erstellen, bearbeiten, filtern, abrufen und löschen sowie Lagerbestandsinformationen zu Produkten abrufen, aktualisieren und löschen.
Unterstützte Methoden
| Befehl/Info | Endpunkte | GET | POST | PUT | DELETE |
|---|---|---|---|---|---|
| Allgemeines Produkt | products/ | ||||
| Allgemeines Produkt (Bulk) | bulk/products | ||||
| Variantenattribute | products/variants | ||||
| Varianten | |||||
| Varianten (Bulk) | bulk/products/variants | ||||
| Lagerbestand Allgemein | products/inventory | ||||
| Lagerbestand für Produkte | |||||
| Lagerbestand für Varianten | |||||
| Set-Produkte |
Datenfelder
Felder werden in der Konfiguration verwaltet und als ein JSON-Objekt in der Tabelle gespeichert. Es wird unterschieden zwischen Standardproduktdatenfeldern und benutzerdefinierten Produktdatenfeldern. Benutzerdefinierte Produktdatenfelder können beliebig angelegt werden, während Standardproduktdatenfelder vom Shop vorgegeben werden und immer definiert sind. Alle benutzerdefinierte Produktdatenfelder sind im Abschnitt custom zu finden. Alle anderen Einträge stellen Standardproduktdatenfelder dar.| Name | Typ | Bedeutung |
|---|---|---|
| active | String | Aktivitätsstatus des Produkts (z. B. „always“, „never“) |
| custom | Objekt | Benutzerdefinierte Felder |
| custom.liste | Array | Beispielhafte Liste |
| custom.map | Objekt | Beispielhafte Schlüssel-Wert-Zuordnungen |
| custom.robotsNoFollow | Boolean | True = Link zu diesem Produkt sollte von Suchmaschinen nicht gefolgt werden |
| custom.robotsNoIndex | Boolean | True = Produktseite sollte nicht in Suchmaschinen indiziert werden |
| custom.weight | Float | Gewicht des Produkts in Kilogramm (zur Priorisierung oder Sortierung) |
| descr | String | Produktbeschreibung |
| hasVariants | Boolean | Gibt an, ob das Produkt Varianten besitzt (z. B. Größe, Farbe) |
| id | String | Technische ID des Produkts |
| itemNumber | String | Artikelnummer (kann identisch mit id sein) |
| name | String | Klartext-Name des Produkts |
| price | String | Standardpreis des Produkts (z. B. “89.900000”) |
| ratingApprovalConfig.maximumRating | Integer | Maximal zulässige Bewertung (z. B. 5) |
| ratingApprovalConfig.minimumRating | Integer | Minimal zulässige Bewertung (z. B. 0) |
| setPrice | String | Setpreis (bei Produktbündeln) |
| statistics.averageRating | Float | Durchschnittliche Bewertung des Produkts |
| statistics.ratingCount | Integer | Anzahl der abgegebenen Bewertungen |
| statisticsPerPoint | Array | Bewertungshistogramm: für jeden möglichen Wert Anzahl Bewertungen |
| taxRateId | String | ID des angewendeten Steuersatzes |
| timestampCreatedAt | String | Zeitpunkt der Erstellung (ISO 8601-Format, UTC) |
| timestampUpdatedAt | String | Zeitpunkt der letzten Produktänderung (ISO 8601-Format, UTC) |
Beispielhafter Datensatz
Methoden für Produkte
Die hier dokumentierten Endpunkte ermöglichen den Lese-, Schreib-, Änderungs- und Löschzugriff auf Produktdaten im Shopsystem. Sie können zur Verwaltung des Produktkatalogs genutzt werden – sowohl zur Initialbefüllung als auch zur laufenden Aktualisierung von Inhalten. Zusätzlich stehen Endpunkte zur Verfügung, um Produktsuchen auf Basis definierter Regeln durchzuführen. Da jeder Subshop eine eigene Produktmenge hat, sollen URLs den ParametersubshopId enthalten.
Für alle Endpunkte ist eine gültige Authentifizierung erforderlich. Die jeweiligen Berechtigungen zum Lesen, Schreiben, Erstellen oder Löschen von Produkten müssen vorhanden sein.
GET products
Mit diesem Endpunkt können Sie eine Liste aller Produkte im System abrufen. Optional kann die Ergebnismenge mithilfe von Filterparametern eingeschränkt werden, z. B. auf Produkte, die einer bestimmten Kategorie zugeordnet sind (inCategory) oder aus einer bestimmten Kategorie ausgeschlossen werden sollen (notInCategory). Beide Parameter dürfen nicht gleichzeitig verwendet werden.
Wenn der Parameter inCategory verwendet wird, erfolgt die Ausgabe der Produkte nicht in der im Shop gepflegten Reihenfolge innerhalb der Kategorie. Um die Produkte in der korrekten Reihenfolge zu erhalten, verwenden Sie bitte den Endpunkt GET categories/{categoryId}/products.
Damit der Endpunkt verwendet werden kann, müssen die entsprechenden Berechtigungen zum Lesen von Produkten vorhanden sein.
Beispiel
Antwort
Filterfelder
Alle Produktdatenfelder,inCategory, notInCategory, inSetProduct, notInSetProduct
Sortierfelder
Alle ProduktdatenfelderSonstige Parameter
from
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produkten. | |
| 400 Bad Request | Request body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue" | "stage” ist ungültig size ∉ [1;300] pageToken ist keine Zahl oder kleiner als 0. from ist größer als 9999.Es wird versucht, Produkte nach einem Feld vom Typ Liste, Map, Bild oder Video zu sortieren. |
| 400 Bad Request | ”unknownDataField” | Ein Filter- oder Sortierfeld ist ungültig. |
| 400 Bad Request | ”illegalOperation” | Ein Filtertyp ist ungültig. |
| 400 Bad Request | ”invalidCharacters” | Ein Filterwert ist ungültig.size ist keine Ganzzahl. |
| 400 Bad Request | ”invalidCombination” | Die Filter inCategory und notInCategory oder inSetProduct und notInSetProduct sind gleichzeitig gesetzt. |
| 503 Service Unavailable | ”serviceUnavailable” | Das Lesen von Daten ist fehlgeschlagen. |
GET products/
Mit diesem Endpunkt können Sie die vollständigen Daten eines einzelnen Produkts abrufen. Geben Sie dazu die Produkt-ID als Pfadparameter an. Neben den Basisdaten werden auch benutzerdefinierte Felder zurückgegeben. Damit der Endpunkt verwendet werden kann, müssen die entsprechenden Berechtigungen zum Lesen von Produkten vorhanden sein.Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produkten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Produkt mit id={id} wurde nicht gefunden. |
GET products//url
Mit diesem Endpunkt können Sie die vollständige URL eines Produkts abrufen. Für die Nutzung dieses Endpunkts sind Leseberechtigungen für Produkt-Daten erforderlich.Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produkten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
GET products/testRule
Mit diesem Endpunkt können Sie gezielt Produkte abrufen, die einer oder mehreren angegebenen Regeln entsprechen. Die Regeln werden als JSON-formatiertes Array in der Query-URL übergeben und ermöglichen eine flexible Filterung nach Produktfeldern wie z. B. Aktivitätsstatus, Artikelnummern oder Preisangaben. Die Regeln dürfen nur gültige Felder und zulässige Operatoren enthalten. Damit dieser Endpunkt verwendet werden kann, müssen die entsprechenden Berechtigungen zum Lesen von Produktdaten vorhanden sein.Beispiel
Die Regeln werden in der URL als JSON-Array kodiert und über den Parameterrules übergeben. Um korrekt interpretiert zu werden, muss dieser Parameter URL-dekodiert werden.
- Das Feld
activemuss den Wertalwayshaben.
Es werden nur Produkte berücksichtigt, die dauerhaft aktiv sind. - Die Artikelnummer (
itemNumber) muss die Ziffer „5“ enthalten.
Es werden nur Produkte ausgewählt, deren Artikelnummer irgendwo die „5“ enthält (z. B.11-2518).
Antwort
Mögliche Werte für mode
gt (größer), gte (größer oder gleich), lt (kleiner), lte (kleiner oder gleich), eq (gleich), neq (ungleich), contains (enthält), notcontains (nicht enthält)
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produkt-Daten. | |
| 400 Bad Request | Regeln konnten nicht geparst werden. | |
| 400 Bad Request | ”syntaxError” | sort enthält mehr als einen oder keinen ”:“. |
| 400 Bad Request | ”unknownDataField” | Ein Sortierfeld ist ungültig. |
| 400 Bad Request | ”invalidValue” |
POST products
Mit dem Endpunkt/products können neue Produkte im Shop-System angelegt werden. Alle für die Erstellung erforderlichen Produktinformationen müssen im Request Body übergeben werden. Die Antwort enthält die vollständigen Produktdaten des neu erstellten Produkts im JSON-Format.
Zum Erstellen eines Produkts sind entsprechende Berechtigungen erforderlich.
Beispiel
Request Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Produkten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage oder ein ungültiger Subshop angegeben. Ein Feld enthält den Wert null.Ein Wert hat den Typ, der mit dem Typ aus der Konfiguration nicht übereinstimmt. Ein Preis-Wert kann nicht geparst werden. Ein Feld vom Typ Map hat einen Schlüssel, der kein String ist.Ein Feld vom Typ List ist kein Array von Strings.Ein Zeitwert ist nicht in ISO 8601 Format. Bild-Daten von einem Bild sind kein Array von Objekten. id des Formats oder path sind keine Strings. |
| 400 Bad Request | ”invalidFormat” | custom ist kein Objekt. |
| 400 Bad Request | ”unknownDataField” | Ein nicht existierendes Produktdatenfeld wurde im Request-Body angegeben. |
| 400 Bad Request | ”notManualEditable” | Ein nicht bearbeitbares Produktdatenfeld wurde im Request-Body angegeben. |
PUT products/
Mit dem Endpunktproducts/{productId} können Produktdaten aktualisiert werden. Wird ein Produkt mit der angegebenen ID nicht gefunden, kann bei gesetztem Parameter createMissing=yes automatisch ein neues Produkt angelegt werden.
Die vollständigen Produktdaten müssen im Request-Body übergeben werden.
Das optionale Feld set kann benutzt werden, um andere Produkte zusammen mit dem Aktuellen einem Set zuzuweisen. Alternativ können die Endpunkte für Set-Produkte genutzt werden.
Zum Bearbeiten oder Anlegen eines Produkts sind entsprechende Berechtigungen erforderlich.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produkten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Die productId im Pfad ist ungültig.Es wurde eine ungültige Stage oder ein ungültiger Subshop angegeben. Ein Feld enthält den Wert null.Ein Wert hat den Typ, der mit dem Typ aus der Konfiguration nicht übereinstimmt. Ein Preis-Wert kann nicht geparst werden. Ein Feld vom Typ Map hat einen Schlüssel, der kein String ist.Ein Feld vom Typ List ist kein Array von Strings.Ein Zeitwert ist nicht in ISO 8601 Format. Bild-Daten von einem Bild sind kein Array von Objekten. id des Formats oder path sind keine Strings. |
| 400 Bad Request | ”invalidFormat” | custom ist kein Objekt. |
| 400 Bad Request | ”unknownDataField” | Ein nicht existierendes Produktdatenfeld wurde im Request-Body angegeben. |
| 400 Bad Request | ”notManualEditable” | Ein nicht bearbeitbares Produktdatenfeld wurde im Request-Body angegeben. |
| 400 Bad Request | ”protectedFieldWriteError” | Ein geschütztes Produktdatenfeld wurde im Request-Body angegeben und der Benutzer hat keine Berechtigung, dieses Feld zu ändern. |
| 503 Service Unavailable | ”internalError” | Das Produkt konnte nach mehreren Versuchen aufgrund von Versionskonflikten nicht gespeichert werden. |
| 404 Not Found | Das Produkt mit id={id} wurde nicht gefunden und der Parameter createMissing ist nicht auf yes gesetzt. |
DELETE products/
Mit dem Endpunktproducts/{productId} kann ein Produkt mit der angegebenen ID dauerhaft gelöscht werden.
Dieser Vorgang entfernt das Produkt vollständig aus dem System.
Zum Löschen eines Produkts sind entsprechende Berechtigungen erforderlich.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Löschen von Produkten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Das Produkt mit id={id} existiert nicht. |
Bulk-Methoden für Produkte
In diesem Abschnitt werden die Bulk-Endpunkte beschrieben, mit denen mehrere Datensätze in einem einzigen Request abgefragt oder verarbeitet werden können.POST bulk/products
Ermöglicht das massenhafte Erstellen und Aktualisieren von Produktdaten in einem einzigen Request. Der Request-Body ist ein JSON-Array, in dem jedes Element ein Produkt mit ID beschreibt. Erstell- und Schreibrechte für Produkte sind erforderlich. Standardmäßig werden nur Produkte aktualisiert. Wird der Parameter createMissing=yes gesetzt, dann werden Produkte in der Anfrage die noch nicht existieren automatisch neues angelegt.Beispiel
Request Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen oder aktualisieren von Produkten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage oder ein ungültiger Subshop angegeben. Ein Feld enthält den Wert null.Ein Wert hat den Typ, der mit dem Typ aus der Konfiguration nicht übereinstimmt. Ein Preis-Wert kann nicht geparst werden. Ein Feld vom Typ Map hat einen Schlüssel, der kein String ist.Ein Feld vom Typ List ist kein Array von Strings.Ein Zeitwert ist nicht in ISO 8601 Format. Bild-Daten von einem Bild sind kein Array von Objekten. id des Formats oder path sind keine Strings. |
| 400 Bad Request | ”invalidFormat” | custom ist kein Objekt. |
| 400 Bad Request | ”unknownDataField” | Ein nicht existierendes Produktdatenfeld wurde im Request-Body angegeben. |
| 400 Bad Request | ”notManualEditable” | Ein nicht bearbeitbares Produktdatenfeld wurde im Request-Body angegeben. |
Methoden für Variantenattribute
Mit den Endpunkten im Bereichproducts/variants/ lassen sich die Variantenattribute und zugehörige Optionen verwalten, die zur Bildung von Produktvarianten im Shop verwendet werden. Sie können neue Attribut-Optionen hinzufügen, bestehende anpassen oder Attribute löschen. Ebenso können Sie die Anzeige-Reihenfolge von Optionen ändern oder gezielt einzelne Optionen abfragen.
Für alle hier dokumentierten Endpunkte ist eine gültige Authentifizierung erforderlich. Zusätzlich benötigen Sie die Berechtigungen zum Lesen, Erstellen oder Bearbeiten von Produktdaten.
GET products/variants
Mit diesem Endpunkt kann eine Liste aller im Shop-System definierten Varianten-Attribute und deren verfügbaren Optionen abgerufen werden. Die Antwort gibt Aufschluss darüber, welche Attributnamen (z. B. „Größe“, „Farbe“) verwendet werden und welche Ausprägungen pro Attribut zur Verfügung stehen. Dies ist besonders hilfreich für das Anlegen oder Bearbeiten von Produktvarianten. Für diesen Endpunkt ist eine gültige Authentifizierung erforderlich. Sie müssen über die Berechtigung zum Lesen von Produkten verfügen.Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
GET products/variants/
Mit diesem Endpunkt kann entweder ein Varianten-Attribut mit seinen zugehörigen Optionen oder eine einzelne Variante-Option abgerufen werden. Wird in der URL ein Attributname (z. B. „Farbe“) übergeben, liefert die Antwort alle Optionen zu diesem Attribut. Wird hingegen eine Options-ID übergeben, muss zusätzlich der ParametersingleOption=yes gesetzt werden, um die Daten zu einer konkreten Variante-Option abzurufen. Die Suche nach dem Attributnamen erfolgt unabhängig von der Groß-/Kleinschreibung.
Für die Nutzung dieses Endpunkts ist eine gültige Authentifizierung notwendig. Sie benötigen die Berechtigung zum Lesen von Produkten.
Beispiel (Attribut)
Antwort (Attribut)
Beispiel (Option)
Antwort (Option)
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. Die übergebene id ist keine positive Ganzzahl (bei singleOption=yes). |
| 404 Not Found | Die Option oder das Attribute wurde nicht gefunden. |
POST products/variants
Mit diesem Endpunkt wird ein neues Varianten-Attribut mit beliebigen Optionswerten erstellt. Sollte das Attribut bereits existieren (Groß-/Kleinschreibung wird nicht berücksichtigt), wird es um die neuen, bislang nicht vorhandenen Optionen ergänzt. Ist eine der angegebenen Optionen für das Attribut bereits vorhanden, wird der Vorgang mit einem Konfliktfehler (409) abgebrochen. Für die Nutzung dieses Endpunkts ist eine gültige Authentifizierung erforderlich. Sie benötigen die Berechtigung zum Erstellen von Produkten.Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Produktvarianten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben.attribute oder options sind leer.Die Länge von attribute oder von einzelnen Optionen ist gleich 0 oder größer als 128 Zeichen. |
| 400 Bad Request | ”missing” | Parameter attribute oder options fehlen. |
| 400 Bad Request | ”invalidFormat” | attribute ist kein String.options ist kein Array. |
| 400 Bad Request | ”unknownDataField” | Ein unbekanntes Feld wurde im Request-Body angegeben. |
| 409 Conflict | ”variantAlreadyExists” | Ein Attribut mit der angegebenen Option existiert bereits. |
PUT products/variants/
Mit diesem Endpunkt wird ein bestehendes Varianten-Attribut aktualisiert. Die Suche nach dem Attributnamen erfolgt unabhängig von der Groß-/Kleinschreibung. Es können neue Optionen hinzugefügt, bestehende bearbeitet und die Reihenfolge der Optionen geändert werden. Das Umbenennen des Attributs ist über den optionalen ParameternewAttributeName möglich. Bereits existierende Optionen, die im Request-Body nicht enthalten sind, bleiben unverändert bestehen.
Für die Nutzung dieses Endpunkts ist eine gültige Authentifizierung erforderlich. Sie benötigen die Berechtigung zum Schreiben von Produkten.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Bearbeiten von Produktvarianten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben.options ist kein Array.Die Länge von newAttributeName oder von einzelnen Optionen ist gleich 0 oder größer als 128 Zeichen. |
| 400 Bad Request | ”missing” | attributeId fehlt. |
| 404 Not Found | Das Attribut wurde nicht gefunden. | |
| 503 Internal Error | ”internalError” | Das Aktualisieren ist fehlgeschlagen. |
DELETE products/variants/
Mit diesem Endpunkt können Sie entweder ein Varianten-Attribut samt aller zugehörigen Optionen oder eine einzelne Option löschen. Wird das Attribut derzeit noch von einem Produkt verwendet, wird der Vorgang mit einem Konfliktfehler abgebrochen. Für die Nutzung dieses Endpunkts ist eine gültige Authentifizierung erforderlich. Sie benötigen die Berechtigung zum Löschen von Produktdaten. Wird in der URL ein Attributname übergeben, werden das Attribut und alle zugehörigen Optionen gelöscht. Die Suche nach dem Attributnamen erfolgt unabhängig von der Groß-/Kleinschreibung. Wird hingegen eine Options-ID übergeben, muss zusätzlich der ParametersingleOption=yes gesetzt werden, um nur diese einzelne Option zu löschen.
Beispiel (Attribut)
Antwort (Attribut)
Beispiel (Option)
Antwort (Option)
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Löschen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. Die übergebene id ist keine positive Ganzzahl (bei singleOption=yes). |
| 404 Not Found | Die Option oder das Attribut wurden nicht gefunden. | |
| 409 Conflict | ”variantInUse” | Dieses Varianten-Attribut wird von einer Produktvariante verwendet. |
Methoden für Produktvarianten
Die folgenden Endpunkte ermöglichen das Verwalten von Produktvarianten innerhalb eines bestehenden Produkts. Varianten stellen spezifische Ausprägungen eines Produkts dar (z. B. Größen oder Farben) und basieren auf den zuvor definierten Variantenattributen. Die API erlaubt es, Varianten einzeln abzurufen, zu erstellen, zu aktualisieren oder zu löschen sowie komplette Variantenkombinationen automatisch zu erzeugen. Für alle Endpunkte in diesem Abschnitt ist sicherzustellen, dass die entsprechenden Lese-, Schreib- oder Löschberechtigungen für Produktvarianten vorliegen.GET products//variants
Mit diesem Endpunkt kann eine Liste aller Varianten für das angegebene Produkt geladen werden. Varianten sind Produktversionen, die sich durch unterschiedliche Attributkombinationen (wie z. B. Größe oder Farbe) vom Hauptprodukt unterscheiden. Die Antwort enthält grundlegende Produktdaten sowie die zugehörigen Attributwerte unterselection.
Um diesen Endpunkt nutzen zu können, sind entsprechende Berechtigungen zum Lesen von Produktvarianten erforderlich.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Das Produkt mit id={productId} wurde nicht gefunden. |
GET products//variants/
Mit diesem Endpunkt kann eine bestimmte Produktvariante anhand ihrer ID innerhalb eines Produkts geladen werden. Die Produkt-ID wird als Teil der URL übergeben, ebenso die Varianten-ID. Die Antwort enthält die zugehörigen Variantendaten inklusive Preis, Artikelnummer, Auswahlattribute (selection) und weiterer Detailinformationen.
Für die Nutzung dieses Endpunkts sind entsprechende Berechtigungen zum Lesen von Produktvarianten erforderlich.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | id ist ungültig. Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Produkt mit id={productId} wurde nicht gefunden. Produktvariante mit id={variantId} wurde nicht gefunden. |
PUT products//variants/
Mit diesem Endpunkt können die Daten einer bestimmten Produktvariante anhand ihrer Produkt-ID und Varianten-ID aktualisiert werden. Die Variante wird anhand der angegebenen ID identifiziert und mit den im Request-Body übermittelten Werten überschrieben. Für die Nutzung dieses Endpunkts sind Schreibrechte für Produktvarianten erforderlich.Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produktvarianten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben oder ein ungültiger Subshop angegeben.custom ist kein Objekt.Ein Feld enthält den Wert null.Ein Wert hat den Typ, der mit dem Typ aus der Konfiguration nicht übereinstimmt. Ein Preis-Wert kann nicht geparst werden. Ein Feld vom Typ Map hat einen Schlüssel, der kein String ist.Ein Feld vom Typ List ist kein Array von Strings.Ein Zeitwert ist nicht in ISO 8601 Format. Bild-Daten von einem Bild sind kein Array von Objekten. id des Formats oder path sind keine Strings. |
| 400 Bad Request | ”unknownDataField” | Ein nicht existierendes Produktdatenfeld wurde im Request-Body angegeben. |
| 404 Not Found | Produkt mit id={productId} wurde nicht gefunden Produktvariante mit id={variantId} wurde nicht gefunden. | |
| 400 Bad Request | ”invalidFormat” | custom ist kein Objekt. |
| 503 Service Unavailable | ”internalError” | Das Produkt konnte nach mehreren Versuchen aufgrund von Versionskonflikten nicht gespeichert werden. |
POST products//variantAttributes
Mit diesem Endpunkt können für ein bestimmtes Produkt Varianten automatisch aus den übergebenen Attributen erzeugt werden. Dabei wird jede mögliche Kombination der Attribut-Optionen als eigene Produktvariante angelegt. Wenn dem Produkt bisher nicht zugewiesene Attribute ergänzt oder vorhandene Attribute entfernt werden, wird der Vorgang standardmäßig abgebrochen und es wird ein 400-Fehler mit dem Fehlertypconflict zurückgegeben. Um diesen Abbruch zu umgehen, kann der optionale Parameter force=yes verwendet werden – in diesem Fall werden alle bisherigen Kombinationen gelöscht und durch die neuen ersetzt.
Für die Nutzung dieses Endpunkts sind Schreibrechte für Produktvarianten erforderlich.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Produktvarianten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. Ein angegebenes Attribut existiert nicht. |
| 400 Bad Request | ”missing” | attributes fehlt im Request-Body. |
| 400 Bad Request | ”invalidFormat” | attributes ist kein Array. Ein Element in attributes ist kein String. |
| 400 Bad Request | ”unknownDataField” | Ein unbekanntes Feld wurde im Request-Body angegeben. |
| 400 Bad Request | ”conflict” | Die Variantenattribute des Produkts haben sich geändert. Bestehende Varianten würden gelöscht. Verwenden Sie force=yes, um den Vorgang trotzdem durchzuführen. |
| 404 Not Found | Das Produkt mit id={productId} wurde nicht gefunden. | |
| 503 Service Unavailable | ”internalError” | Das Produkt konnte nicht aktualisiert werden. |
POST products//variants/manage
Dieser Endpunkt ermöglicht es, gezielt bestimmte Varianten-Kombinationen für ein bestehendes Produkt anzulegen. Anders als beim EndpunktPOST products/{productId}/variantAttributes, der automatisch alle möglichen Kombinationen aus den angegebenen Attributen generiert, werden hier nur die explizit übermittelten Kombinationen erzeugt. Bereits existierende Kombinationen werden ignoriert; bei Kollisionen wird ein entsprechender Fehlercode zurückgegeben. Optional können auch IDs übergeben.
Der Endpunkt eignet sich besonders, wenn nicht alle theoretisch möglichen Kombinationen eines Produkts benötigt werden, sondern nur eine gezielte Auswahl.
Für die Nutzung sind Schreibrechte für Produktvarianten erforderlich.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Produktvarianten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben.selections beinhaltet ungültige Attribut oder Attributwerte. |
| 400 Bad Request | ”duplicateEntry” | Eine übergebene Attributkombination existiert bereits als Produktvariante. |
| 400 Bad Request | ”missing” | selections fehlt im Request-Body. |
| 400 Bad Request | ”invalidFormat” | selections ist kein Array. Ein Element in selections ist kein JSON-Objekt. Ein Attributwert ist kein String. |
| 400 Bad Request | ”unknownDataField” | Ein unbekanntes Feld wurde im Request-Body angegeben. |
| 404 Not Found | Produkt mit id={productId} wurde nicht gefunden | |
| 409 Conflict | ”versionConflict” | Das Produkt wurde während des Generierens der Varianten verändert. |
DELETE products//variants/
Mit diesem Endpunkt kann eine bestehende Produktvariante anhand von Produkt-ID und Varianten-ID gelöscht werden. Dies ist etwa dann sinnvoll, wenn bestimmte Kombinationen von Varianten (z. B. Größe/Farbe) nicht mehr angeboten werden sollen. Sowohl das übergeordnete Produkt als auch die Variante müssen existieren – andernfalls wird ein entsprechender Fehler zurückgegeben. Für die Nutzung sind Löschberechtigungen für Produktvarianten erforderlich.Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Löschen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Produkt mit id={productId} wurde nicht gefunden Produktvariante mit id={variantId} wurde nicht gefunden |
Bulk-Methoden für Varianten
In diesem Abschnitt werden die Bulk-Endpunkte beschrieben, mit denen mehrere Datensätze in einem einzigen Request abgefragt oder verarbeitet werden können.POST bulk/products/variants
Ermöglicht das massenhafte Erstellen und Aktualisieren von Produktdaten in einem einzigen Request. Der Request-Body ist ein JSON-Array, in dem jedes Element ein Produkt beschreibt. Erstell- und Schreibrechte für Produktvarianten sind erforderlich. Für jeden Eintrag wird über die FelderproductId und selection die jeweilige Produktvariante identifiziert.
Standardmäßig werden nur Produktvarianten aktualisiert. Wird der Parameter createMissing=yes gesetzt, dann werden Produktvarianten in der Anfrage die noch nicht existieren automatisch neues angelegt.
Beispiel
Request Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen oder aktualisieren von Produkten. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage oder ein ungültiger Subshop angegeben. Ein Feld enthält den Wert null.Ein Wert hat den Typ, der mit dem Typ aus der Konfiguration nicht übereinstimmt. Ein Preis-Wert kann nicht geparst werden. Ein Feld vom Typ Map hat einen Schlüssel, der kein String ist.Ein Feld vom Typ List ist kein Array von Strings.Ein Zeitwert ist nicht in ISO 8601 Format. Bild-Daten von einem Bild sind kein Array von Objekten. id des Formats oder path sind keine Strings. |
| 400 Bad Request | ”invalidFormat” | custom ist kein Objekt. |
| 400 Bad Request | ”unknownDataField” | Ein nicht existierendes Produktdatenfeld wurde im Request-Body angegeben. |
| 400 Bad Request | ”notManualEditable” | Ein nicht bearbeitbares Produktdatenfeld wurde im Request-Body angegeben. |
Methoden für Lagerbestand Allgemein
Die folgenden Endpunkte ermöglichen das Abrufen, Erstellen, Aktualisieren und Löschen von Lagerbeständen im System. Jeder Lagerbestand wird durch eine eindeutigeinventoryId identifiziert, die üblicherweise mit einer Produkt- oder Varianten-ID übereinstimmt.
Abhängig vom Endpunkt können Lagerbestände direkt gesetzt oder relativ verändert werden (z. B. beim Buchen von Zu- oder Abgängen).
Für alle hier dokumentierten Endpunkte ist eine entsprechende Berechtigung für den Zugriff auf Lagerbestände erforderlich.
Alle Endpunkte in diesem Abschnitt unterstützen den optionalen URL-Parameter storageId, mit dem die Lager-ID explizit angegeben werden kann. Wird dieser Parameter nicht gesetzt, wird automatisch die Lager-ID des aktiven Subshops verwendet.
GET products/inventory/
Mit diesem Endpunkt kann der Lagerbestand eines Produkts oder einer Produktvariante anhand der Lagerbestands-ID (inventoryId) abgerufen werden. Die Antwort enthält Informationen über den aktuellen Bestand, offene Bestellungen sowie den Zeitpunkt der letzten Aktualisierung.
Damit der Endpunkt genutzt werden kann, müssen die entsprechenden Berechtigungen zum Lesen von Lagerbeständen vorhanden sein.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Lagerbeständen. | |
| 404 Not Found | Es wurde kein Lagerbestand mit id={inventoryId} im aktuellen Subshop gefunden. |
POST products/inventory
Mit diesem Endpunkt wird ein neuer Lagerbestand für ein Produkt oder eine Produktvariante angelegt. Dabei wird eine eindeutige Lagerbestands-ID (id) sowie die verfügbaren und offenen Mengen angegeben.
Damit dieser Endpunkt verwendet werden kann, müssen die entsprechenden Berechtigungen zum Erstellen von Lagerbeständen vorhanden sein.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Lagerbeständen. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden | |
| 400 Bad Request | ”missing” | Das Pflichtfeld id fehlt im Request-Body |
| 400 Bad Request | ”invalidValue” | Das Feld id darf nicht leer sein |
| 400 Bad Request | ”invalidFormat” | Ein Feldwert hat einen falschen Datentyp (z. B. Number statt String für id) |
| 400 Bad Request | ”unknownDataField” | Der Request-Body enthält ein unbekanntes Feld |
| 400 Bad Request | ”duplicateEntry” | Ein Lagerbestand mit der angegebenen id existiert bereits |
PUT products/inventory/
Mit diesem Endpunkt aktualisieren Sie den Lagerbestand eines bestimmten Produkts anhand der übergebenen Parameter. Dabei können Sie sowohl den Bestand (amount) als auch die Anzahl der offenen Bestellungen (openOrder) anpassen – entweder absolut oder relativ:
- Ist
amountTypeaufrelativegesetzt, wird der aktuelle Lagerbestand um den angegebenenamounterhöht oder – falls der Wert negativ ist – verringert. Andernfalls wird der Lagerbestand auf den Wert vonamountgesetzt. - Entsprechend funktioniert
openOrderType: Ist dieser aufrelativegesetzt, wird die Anzahl der offenen Bestellungen umopenOrdererhöht oder verringert (bei negativem Wert). OhnerelativewirdopenOrderdirekt gesetzt.
{inventoryId}, kann über den optionalen URL-Parameter createMissing=yes automatisch ein neuer Eintrag angelegt werden.
Um diesen Endpunkt verwenden zu können, benötigen Sie die Berechtigung zum Schreiben von Lagerbeständen.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Lagerbeständen. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden | |
| 400 Bad Request | ”invalidFormat” | amount oder openOrder ist kein gültiger Number-Typ |
| 404 Not Found | Es wurde kein Lagerbestand mit id={inventoryId} im aktuellen Subshop gefunden und createMissing ist nicht yes |
DELETE products/inventory/
Mit diesem Endpunkt löschen Sie den Lagerbestand eines Produkts für die angegebene{inventoryId} im aktuellen Subshop. Wenn kein entsprechender Eintrag existiert, wird ein Fehler zurückgegeben.
Um diesen Endpunkt verwenden zu können, benötigen Sie die Berechtigung zum Löschen von Lagerbeständen.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Löschen von Lagerbeständen. | |
| 404 Not Found | Es wurde kein Lagerbestand mit id={inventoryId} im aktuellen Subshop gefunden |
PUT products/inventory/bulk
Mit diesem Endpunkt können Sie mehrere Lagerbestände gleichzeitig aktualisieren. Die zu aktualisierenden Einträge werden als Array im Felddata des Request-Body übergeben. Jeder Eintrag muss eine id (Lagerbestands-ID) enthalten. Für jeden Eintrag können sowohl der Bestand (amount) als auch die Anzahl der offenen Bestellungen (openOrder) angepasst werden – entweder absolut oder relativ:
- Ist
amountTypeaufrelativegesetzt, wird der aktuelle Lagerbestand um den angegebenenamounterhöht oder – falls der Wert negativ ist – verringert. Andernfalls wird der Lagerbestand auf den Wert vonamountgesetzt. - Entsprechend funktioniert
openOrderType: Ist dieser aufrelativegesetzt, wird die Anzahl der offenen Bestellungen umopenOrdererhöht oder verringert (bei negativem Wert). OhnerelativewirdopenOrderdirekt gesetzt. - Existiert noch kein Lagerbestand für eine angegebene
id, kann über den optionalen URL-ParametercreateMissing=yesautomatisch ein neuer Eintrag angelegt werden. Einträge mit ungültigen Daten (z. B.amountist kein Number-Typ) werden übersprungen.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Lagerbeständen. | |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidFormat” | Der URL-Parameter stageId ist ungültig. |
Methoden für Produkte Lagerbestand
Über die folgenden Endpunkte lassen sich lagerbezogene Einstellungen für einzelne Produkte verwalten. Dazu zählen sowohl die Zuordnung zu einem Lagerbestandseintrag als auch die Konfiguration der Darstellung im Shop, wie z. B. farbliche Ampellogik, individuelle Lagermeldungen und Reservierungszeiten. Die Einstellungen greifen dabei direkt auf die allgemeinen Lagerbestände zu, die über die Endpunkte aus Kapitel 6 gepflegt werden. Für den Zugriff auf diese Endpunkte sind Lese- oder Schreibrechte für Produktdaten erforderlich, je nach gewählter Operation.GET products//inventory
Mit diesem Endpunkt können Sie die Lagerbestandskonfiguration eines bestimmten Produkts abrufen. Diese Konfiguration umfasst unter anderem Schwellwerte für Ampelfarben, individuelle Lagermeldungen und die Reservierungsdauer. Die AngabestoreId verweist auf einen allgemeinen Lagerbestandseintrag, wie er über die Lagerbestands-Endpunkte verwaltet wird.
Für die Verwendung dieses Endpunkts sind Lese-Berechtigungen für Produktdaten erforderlich.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktdaten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Das Produkt mit id={productId} wurde nicht gefunden Kein Lagerbestand ist dem Produkt mit id={productId} zugewiesen |
PUT products//inventory
Dieser Endpunkt dient dazu, die Lagerbestandseinstellungen eines Produkts zu aktualisieren. Dabei lassen sich z. B. die Darstellung im Shop (Ampel-Logik), Lagermeldungen oder die Reservierungszeit anpassen. Die EinstellungstoreId bleibt hierbei unverändert und muss nicht übergeben werden.
Für die Verwendung dieses Endpunkts sind Schreib-Berechtigungen für Produktdaten erforderlich.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produktdaten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben state ∉ {“dynamic”, “green”, “yellow”, “redhard”, “redsoft”}messageMode ∉ {“inactive”, “active”, “global”} |
| 400 Bad Request | ”invalidFormat” | Ein Feldwert hat einen falschen Datentyp (z. B. String statt Boolean oder Number) |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden | |
| 404 Not Found | Das Produkt mit id={productId} wurde nicht gefunden Kein Lagerbestand ist dem Produkt mit id={productId} zugewiesen | |
| 503 Service Unavailable | Versionskonflikte: Die Aktualisierung konnte nach mehreren Versuchen nicht durchgeführt werden. |
Methoden für Varianten Lagerbestand
Dieses Kapitel beschreibt die Endpunkte zur Verwaltung von lagerbezogenen Einstellungen einzelner Produktvarianten. Wie bei Produkten lassen sich auch für Varianten spezifische Lagerbestandsanzeigen, Ampelgrenzen, individuelle Texte und Reservierungszeiten festlegen. Die Zuordnung erfolgt ebenfalls über einenstoreId, der auf einen zentral gepflegten Lagerbestand verweist.
Für den Zugriff sind entsprechende Lese- oder Schreibrechte auf Produktdaten erforderlich.
GET products//variants//inventory
Ruft die Lagerbestandseinstellungen der Produktvariante mit der angegebenenvariantId ab.
Die Einstellungen beinhalten unter anderem Ampelgrenzen, Verfügbarkeitsanzeige, E-Mail-Benachrichtigungen sowie den Verweis (storeId) auf den zugehörigen zentralen Lagerbestand.
Für diese Abfrage werden Lese-Rechte auf Produktvarianten benötigt.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | Das Produkt mit id={productId} wurde nicht gefunden Die Produktvariante mit id={variantId} wurde nicht gefunden Kein Lagerbestand ist dem Produkt mit id={productId} zugewiesen |
PUT products//variants//inventory
Aktualisiert die Lagerbestandseinstellungen der Produktvariante mit der angegebenenvariantId.
Die Konfigurationen wirken sich direkt auf die Darstellung im Shop aus und steuern z. B. die Verfügbarkeitsanzeige. Die Verknüpfung zum zentralen Lager erfolgt über das Feld storeId.
Für diese Operation werden Schreibrechte auf Produktvarianten benötigt.
Beispiel
Request-Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produktvarianten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben state ∉ {“dynamic”, “green”, “yellow”, “redhard”, “redsoft”}messageMode ∉ {“inactive”, “active”, “global”} |
| 400 Bad Request | ”invalidFormat” | Ein Feldwert hat einen falschen Datentyp (z. B. String statt Boolean oder Number) |
| 400 Bad Request | Der Request-Body konnte nicht geladen werden | |
| 404 Not Found | Das Produkt mit id={productId} wurde nicht gefunden Die Produktvariante mit id={variantId} wurde nicht gefunden Kein Lagerbestand ist dem Produkt mit id={productId} zugewiesen | |
| 503 Service Unavailable | Versionskonflikte: Die Aktualisierung konnte nach mehreren Versuchen nicht durchgeführt werden. |
Methoden für Set-Produkte
Dieses Kapitel beschreibt die Endpunkte zur Verwaltung von Set-Produkten (Produktbündeln) Für den Zugriff sind entsprechende Lese- oder Schreibrechte auf Produktdaten erforderlich.products//setproducts
Gibt eine Liste mit Unterprodukten zurück, wenn das Produkt mitid=parentProductId einen Set besitzt. Optional kann setParentProductList IDs der Produkte enthalten, zu deren Sets das aktuelle Produkt gehört.
Für diese Abfrage werden Lese-Rechte auf Produktdaten benötigt.
Beispiel
Antwort (Hauptprodukt)
Antwort (Set-Unterprodukt)
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktdaten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
POST products//setproducts/assign
Produkte aus dem Request Body werden dem Set vom Produkt mitid=parentProductId zugewiesen. Das Feld prodId kann entweder ein einzelner String oder ein Array von Strings sein.
Für diese Abfrage werden Schreib-Rechte auf Produktdaten benötigt.
Beispiel
Request Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produktdaten. | |
| 400 Bad Request | Request body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 400 Bad Request | ”missing” | prodId fehlt oder ist leer. |
| 400 Bad Request | ”invalidFormat” | prodId ist kein Array von Strings. |
| 400 Bad Request | ”unknownDataField” | Der Request Body enthält unbekannte Felder. |
| 404 Not Found | parentProductId fehlt. |
POST products//setproducts/update/
Daten vom Produkt mitid=childProductId im Set vom Produkt mit id=parentProductId werden aktualisiert.
Für diese Abfrage werden Schreib-Rechte auf Produktdaten benötigt.
Beispiel
Request Body
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produktdaten. | |
| 400 Bad Request | Request body konnte nicht geladen werden. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 400 Bad Request | ”missing” | setData fehlt im Request Body. |
| 400 Bad Request | ”invalidFormat” | setData ist kein Objekt. |
| 400 Bad Request | ”unknownDataField” | Der Request Body enthält unbekannte Felder. |
| 404 Not Found | parentProductId oder childProductId fehlen. |
PUT products//setproducts/recalculate
Die Preise von Produkten, die zum Set des Produkts mitid=childProductId gehören, sowie von Produkten, zu deren Sets das Produkt mit id=childProductId gehört, werden neu berechnet. Varianten werden berücksichtigt.
Für diese Abfrage werden Schreib-Rechte auf Produktdaten benötigt.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Produktdaten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | childProductId fehlt. |
DELETE products//setproducts/
Das Produkt mitid=childProductId wird aus dem Set vom Produkt mit id=parentProductId entfernt. Gilt childProductId=all, werden alle Produkte aus dem Set entfernt. Gilt parentProductId=all, wird das Produkt mit id=childProductId aus allen Sets entfernt, in denen es enthalten ist.
Für diese Abfrage werden Löschberechtigungen für Produktdaten benötigt.
Beispiel
Antwort
Fehlercodes
| Fehler | Typ | Grund |
|---|---|---|
| 401 Unauthorized | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Löschen von Produktdaten. | |
| 400 Bad Request | ”invalidValue” | Es wurde eine ungültige Stage angegeben. |
| 404 Not Found | parentProductId oder childProductId fehlen. |
Ergänzende Referenzen
- API-Referenz Bildkonverter
- API-Referenz Kategorien
- API-Referenz Konfiguration
- API-Referenz Meta-Daten
- API-Referenz SEO-URLs
- content - Katalog (Kategorien & Produkte)
Hinweis zu Produktdatenfeldern
Neue Produktdatenfelder (zusätzliche Eigenschaften, Attribute oder technische Felder) können nicht direkt über die Produkt-API erstellt werden. Die API dient ausschließlich dem Auslesen und Pflegen vorhandener Felder. Um neue Felder zu definieren, muss die Konfiguration im Knotencontent.customProductField verwendet werden. → content - Katalog (Kategorien & Produkte)
Dort lassen sich individuelle Felder mit Typ, Suchrelevanz, Pflichtstatus und Varianteneigenschaften anlegen. Sobald ein Feld dort konfiguriert wurde, steht es anschließend automatisch in der Produkt-API zur Verfügung (z. B. in GET products oder POST products).
