> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Storefront API Session-Handling

> Sessions in der WEBSALE Storefront über die Storefront API erstellen und verwalten, damit Warenkorb und Merkliste über Requests hinweg konsistent bleiben.

Das Storefront API Session-Handling stellt Funktionen bereit, um Sessions in der Storefront zu erstellen und zu verwalten. Damit lassen sich Benutzerzustände (z. B. anonymer Besuch oder eingeloggter Kunde) sowie sessiongebundene Daten wie Warenkorb und Merkliste konsistent über mehrere Requests hinweg nutzen.

Die Session ist ein Bestandteil des Shops und zwingend erforderlich. Weiteren Informationen dazu finden Sie [hier](https://websaleag-44ee7ea6.mintlify.app/konfiguration/general-allgemeine-shopeinstellungen#9-general-garbagecollection-sitzungsverwaltung-und-automatische-aufräumprozesse).

***

## Unterstützte Methoden

Angabe aller unterstützten Methoden.

| **Befehl**                              | **Endpunkte**             | **GET**             | **POST**              | **PUT**             | **DELETE**          |
| --------------------------------------- | ------------------------- | ------------------- | --------------------- | ------------------- | ------------------- |
| Session erstellen                       | `session/create`          | <Icon icon="ban" /> | <Icon icon="check" /> | <Icon icon="ban" /> | <Icon icon="ban" /> |
| Link zu einer Template-Seite erstellen. | `session/prepareRedirect` | <Icon icon="ban" /> | <Icon icon="check" /> | <Icon icon="ban" /> | <Icon icon="ban" /> |

## Methoden für das Session-Handling

Diese Methoden kümmern sich um das Session-Handling zwischen API und Storefront: Zunächst werden neue Session-IDs als technische Grundlage für alle weiteren API-Aufrufe erzeugt. Bei Bedarf werden vollständige Weiterleitungslinks zu Template-Seiten (z. B. Checkout) inklusive Übergabe der aktuellen Session aufgebaut. Über optionale Parameter lassen sich Zielseiten gezielt steuern (z. B. ein bestimmter Checkout-Schritt oder Hervorhebungen), während die eigentliche Session-ID sicher im Link eingebettet wird.

### POST session/create

Folgender Aufruf erstellt eine Session-ID.\
Mehr Infos dazu: [Storefront API Basics](/schnittstellen/storefront-api/storefront-api-basics)

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
POST https://<ihr-shop>.de/api/v1/session/create
```

#### Beispiel-Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
   "id" : "bc37dffbf7a3d067a1b0a3040143c5a8d1a1d8651f79159f59d81705c9733c49"
}
```

### POST session/prepareRedirect

Folgender Aufruf erzeugt einen vollständigen Link zu einer Template-Seite (z. B. „checkout.htm”) und übernimmt die aktuelle Session in die Storefront. Optional können Zusatzparameter übergeben werden, die das Ziel-Template ausliest (z. B. um direkt einen bestimmten Checkout-Schritt zu öffnen).

Die Verwendung dieser Methode ist sinnvoll, wenn Ihr Shop gemischt aufgebaut ist, d. h., wenn einige Teile mit dem [WEBSALE-Template Theme](/frontend/die-basics/template-theme) und andere Teile mit der Storefront-API erstellt wurden. Der Endpunkt stellt sicher, dass beide Teile dieselbe Session verwenden.

**Beispiel-Request, der einen vollständigen Link zur Template-Seite** `checkout` **erstellt und dabei die aktuelle Session mitnimmt**

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "viewIdentifier": "checkout"
}
```

#### Parameterübersicht

| **Parameter**    | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                    |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `x-session`      | string  | **Pflichtfeld**<br />ID der aktuellen Session.   Mehr Informationen dazu: [Storefront API Basics](../storefront-api/storefront-api-basics.md#2-session-handling)                                                                                                    |
| `viewIdentifier` | string  | **Pflichtfeld**<br />Die ID, die in `storefrontApi.redirects` konfiguriert wird.   Mehr dazu:   [storefrontApi - Storefront-API](/konfiguration/storefrontapi-storefront-api#storefrontapiredirects-template-weiterleitung)                                         |
| `parameters`     | object  | Optionale Werte, die an die Zielseite übergeben werden und dort z.B. über `$wsViews.storefrontApiLinkParameters` verfügbar sind.      Beispiel:  `{   "viewIdentifier": "checkout",   "params":    {      "step": "address",      "highlight": "shipping"      } }` |

#### Beispiel-Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "storeFrontLink": "https://demo.shop.websale.biz/checkout?sessionKey=U2swGmPcfOeSsVPLF4wCXw2wmYDDcuzh"
}
```

(vollständige URL zur Ziel-Template-Seite inkl. Session Übergabe)

#### Fehlercodes

| **Code**                       | **Beschreibung**                                                     |
| ------------------------------ | -------------------------------------------------------------------- |
| `redirectNotFound`             | Kein Konfigurationseintrag zum angegebene `viewIdentifier` gefunden. |
| `redisServicePoolInaccessible` | Internes Problem. Bitte wenden dich an den Websale-Support.          |
| `redisServiceNotFound`         | Internes Problem. Bitte wende dich an den Websale-Support.           |
