Skip to main content
Die Warenkorb API steuert sämtliche Interaktionen rund um den Warenkorb: Artikel können hinzugefügt, Mengen geändert und Positionen entfernt werden. Zusätzlich stellt die API die Warenkorbinhalte inklusive Summen, Rabatten und Regeln wie Mindestbestellwerten oder Maximalbestellmengen bereit. Gutscheincodes lassen sich im Warenkorb erfassen, aktualisieren oder entfernen. Die Auswirkungen auf Rabatte und Summen werden entsprechend zurückgegeben. Versandkosten sind nicht Teil der Warenkorb-Antwort. total, totalNet, totalGross und totalTax sind reine Warenwert-Zwischensummen ohne Versand-, Zahlarten- und Zuschlagskosten sowie ohne Gutscheinabzug. Versandkosten (shippingCost), Zahlartenkosten (paymentCost), Zuschläge (surchargeCost), den Gutscheinabzug (totalVoucher) und die Endsumme liefern die Checkout-Endpunkte im Objekt sum. Die Schnittstelle liefert konsistente JSON-Antworten und informiert bei fehlerhaften Aktionen über eindeutige Fehlercodes (z. B. fehlende oder ungültige Produkt-/Positions-IDs, Mengenbeschränkungen, gesperrte Änderungen) inklusive Detailangaben, die eine schnelle Ursachenanalyse ermöglichen. Für die korrekte Verwaltung des Warenkorbs muss eine Session per x-session übermittelt werden. Mehr dazu hier.

Unterstützte Methoden

Angabe aller Unterstützten Methoden.

Fehlerformat

Alle Fehler werden mit HTTP 400 und folgendem Rumpf beantwortet:
  • error = invalidParameters bei Fehlern in Parametern/Feldtypen (Details in paramErrors, Schlüssel = Parametername, Wert {"type": "missing" | "invalidFormat" | "invalidValue" | "unknownField" | …}).
  • error = actionFailed bei fachlichen Fehlern. Die in den folgenden Tabellen genannten Fehlercodes stehen dann in actionErrors[].code.
  • Ein Aufruf mit falscher HTTP-Methode wird mit HTTP 404 beantwortet (nicht 405).
  • Fehlt die Session (x-session), wird mit HTTP 400 geantwortet.

Methoden für den Warenkorb

Diese Methoden steuern den Warenkorb im Shop. Sie können den aktuellen Warenkorb auslesen, Produkte in der gewünschten Menge hinzufügen, bestehende Positionen ändern oder wieder entfernen.

GET basket/item/get

Der folgende Aufruf liefert den aktuellen Warenkorb mit allen Positionen und Summen (Netto/Brutto/Steuer). Die Daten unter „items[].product” repräsentieren den Zustand des Produkts zum Zeitpunkt, als es in den Warenkorb gelegt wurde. Ändert sich beispielsweise der Preis während des Bezahlvorgangs, wird die Bestellung trotzdem zum ursprünglichen, im Warenkorb gespeicherten Preis abgeschlossen. So werden Fehler oder Nachberechnungen verhindert. Welche Produktdaten in „items[].product” enthalten sind, wird in der Konfiguration der benutzerdefinierten Produktfelder festgelegt. Mehr dazu hier: content - Katalog (Kategorien & Produkte).
Dieser Befehl kann zum Anzeigen des Warenkorbs verwendet werden.
Beispiel-Aufruf für das Anzeigen des aktuellen Warenkorbs

Parameterübersicht

Header-Parameter

Beispiel Response

billingCountry und shippingCountry sind jeweils ein einzelner Länder-Code als String. Welches Format geliefert wird (isoAlpha2 = DE, isoAlpha3 = DEU oder isoNum = 276), hängt von der Shop-Konfiguration ab. lastBasketAction kennzeichnet die zuletzt ausgeführte Änderung. Mögliche Werte: add, delete, unknown. Eine Mengenänderung setzt je nach Ergebnis add oder delete. Den Wert update gibt es nicht. lastUpdatedItem beschreibt die zuletzt geänderte Position. Achtung: lastUpdatedItem.id enthält die Produkt-ID, nicht die Warenkorbpositions-ID aus items[].id. Weitere Felder: productNumber, categories (string[]), parentCategories (string[]), freeFields, voucherIds.

POST basket/items/add

Mit diesem Aufruf wird ein Produkt in der gewünschten Menge in den Warenkorb gelegt. Durch mehrmaliges Ausführen des Befehls können mehrere Produkte hinzugefügt werden. Der Befehl kann verwendet werden, um ein Produkt zum Warenkorb hinzuzufügen. Falls mehrere Produkte hinzugefügt werden sollen, muss der Befehl entsprechend oft ausgeführt werden. Beispiel-Aufruf für das Hinzufügen von drei Einheiten des Produktes mit der ID 71-3953und der Geschenknachricht “Alles Gute!” zum Warenkorb
Wird dasselbe Produkt (gleiche Variante und gleiche freeFields) mehrfach hinzugefügt, entsteht keine zweite Warenkorbposition: Die Menge der bestehenden Position wird um quantity erhöht und ihre items[].id bleibt unverändert. Set-Produkte werden nie zusammengeführt.

Beispiel Request

Parameterübersicht

Header-Parameter

Body-Parameter

Es sind ausschließlich die oben genannten Felder erlaubt. Jedes weitere Feld im Request-Body führt zu HTTP 400 mit error: "invalidParameters" und einem Eintrag unknownField in paramErrors. Hinweis zu Set-Produkten: Der Endpunkt akzeptiert ausschließlich die vier oben genannten Felder. Jedes weitere Feld wird mit unknownField abgelehnt. Die Variantenauswahl für Set-Unterartikel (setChildVar_<childId>) kann daher derzeit nicht übergeben werden. Set-Produkte, deren Unterartikel Varianten haben, sind über die Storefront-API nicht bestellbar.

Beispiel Response

Jede Position in items[] kann außerdem folgende Felder enthalten: Nicht sichtbare Positionen (isVisible = false) und ausgeblendete Set-Unterartikel erscheinen nicht in items.

Fehlercodes

Bei quantityExceeded enthält details die Felder productId (betroffene Produkt-ID), quantity (angeforderte Gesamtmenge) und maxQuantity (global konfigurierte Höchstmenge pro Position). subCode enthält die Produkt-ID, field den Wert quantity. Zusätzlich zur globalen Höchstmenge kann ein Produkt über das Produktfeld für die Maximalmenge eine niedrigere Grenze haben.

PUT basket/items/update

Mit folgendem Aufruf kann man eine bestehende Warenkorb-Position aktualisieren bzw. ändern, typischerweise die Menge. Er ist für Mengenänderungen im Warenkorb verwendbar. Beispiel-Aufruf für das ändern der Warenkorbposition mit der ID 0921e5b44dcd6034248fauf die Menge 2

Beispiel-Request (Menge einer Position auf 2 reduzieren)

Hinweis: Wenn quantity auf 0 gesetzt wird, wird die Position aus dem Warenkorb entfernt. Alternativ kann die Position auch über DELETE basket/delete gelöscht werden.

Parameterübersicht

Header-Parameter

Body-Parameter

Es sind ausschließlich die oben genannten Felder erlaubt. Jedes weitere Feld im Request-Body führt zu HTTP 400 mit error: "invalidParameters" und einem Eintrag unknownField in paramErrors.

Beispiel-Response

lastBasketAction, lastUpdatedItem, totalCommission und totalWeight liefert nur der Lese-Endpunkt GET basket/items/get. Die Felder der Positionen in items[] entsprechen denen bei POST basket/items/add, siehe dort.

Fehlercodes

Bei quantityExceeded enthält details die Felder productId (betroffene Produkt-ID), quantity (angeforderte Gesamtmenge) und maxQuantity (global konfigurierte Höchstmenge pro Position). subCode enthält die Produkt-ID, field den Wert quantity.

DELETE basket/item/delete

Mit folgendem Aufruf kann eine bestehende Warenkorb-Position dauerhaft entfernt werden. Mit diesem Befehl können Artikel aus dem Warenkorb entfernt werden. Beispiel-Aufruf für das Löschen des Produktes mit der Item-ID 0d1b062c8225f817aa3e

Beispiel-Request

Parameterübersicht

Header-Parameter

Body-Parameter

Beispiel-Response

Fehlercodes

Methoden für die Konfiguration

GET config/inserts

Der folgende Aufruf liefert die aktuelle Konfiguration der Werbemittelkennzeichnung. Nutzen Sie ihn, um in einer Storefront-Anwendung zu entscheiden, ob ein Eingabefeld für das Werbemittelkennzeichen angezeigt wird und wie die Anzeige aus Produktnummer und Code zusammengesetzt ist. Beispiel-Aufruf

Parameterübersicht

Header-Parameter

Dieser Endpunkt benötigt keine Session. Der Header x-session ist optional und wird ignoriert.

Beispiel Response