Da es sich um authentifizierte Endpunkte handelt, wird das Access-Token für den Zugriff benötigt.
Produkt in den Warenkorb legen
Um ein Produkt auf den Warenkorb zu legen, muss
POST /storefront/carts/items
mit den Pflichtfeldern productId und quantity aufgerufen werden.

Der Rückgabewert ist die id des cart items. Die Warenkörbe können über folgenden Pfad abgerufen werden
GET /storefront/carts
Das iPad im Beispiel liegt dann auf dem Warenkorb

Warenkorb bestellen
Um den Warenkorb zu bestellen, muss der Endpunkt
GET /storefront/checkout/{id}
aufgerufen werden. Darin sind viele nützliche Daten enthalten, unter anderem auch, welche Rechnungs- und Lieferadressen zur Verfügung stehen. Mit den so enthaltenen Daten, kann der Endpunkt
POST /storefront/order/actions/send-cart
aufgerufen werden. Der Endpunkt verlangt im Body zumindest billingAddress, deliveryAddress und timestamp. Letzteres ist der Zeitstempel des Warenkorbes, der bei
GET /storefront/carts
mitgeliefert wird. Damit wird sichergestellt, dass keine veralteten Warenkörbe bestellt werden können. Sollte sich der Warenkorb in der Zwischenzeit geändert haben, wird das Backend den HTTP-Status 409 zurückgeben.
Warenkorb anfragen
Wenn der Portalnutzer keine Berechtigung hat den Warenkorb zu bestellen, wir das Feld canOrder bei
GET /storefront/carts
entweder FORBIDDEN oder DISABLED sein. Ist das Feld DISABLED kann mit dem Lösen der Probleme, die im Feld messages beschrieben sind, canOrder zu ENABLED umschaltet werden. Ob der Portalnutzer überhaupt bestellen darf, kann über den Endpunkt
GET /users/me
abgefragt werden. Hier gibt es die Permission submitOrder, aus der ersichtlich ist, ob der Portalnutzer bestellen darf. Hat der Benutzer kein Bestellrecht, kann über den Endpunkt
POST /storefront/order/actions/request-cart
eine Anfrage abgesendet werden. Die zugewiesenen Freigabebearbeiter können dann die Bestellung prüfen und absenden. Einziger Unterschied ist hier, dass im POST noch ein optionaler commentToApprovers mitgesendet werden kann.
