# Warenkörbe

> Teilbare Warenkörbe, die auf WhatsApp abschließen

- Seite: https://tbit.app/de/docs/api/carts
- Basis-URL: `https://rest-api.tbit.app/v1`
- Authentifizierung: Header `X-API-Key` mit deinem Schlüssel in jeder Anfrage (die Beispiele lesen ihn aus der Umgebungsvariable `TBIT_API_KEY`)

## Überblick

Mit Warenkörben stellt ein Besucher deines Shops eine Produktliste zusammen und nimmt sie mit dem ganzen Kontext in ein WhatsApp-Gespräch mit. Ein Warenkorb ist eine kurzlebige Momentaufnahme: Er bekommt einen 7-stelligen Code, gilt 90 Tage und ist unveränderlich: Um ihn zu ändern, erstellst du einen neuen.

## So funktioniert der Ablauf

1. Ein Besucher deines Shops stellt eine Produktliste zusammen.
2. Dein Shop erstellt mit POST /v1/carts einen Warenkorb und bekommt einen kurzen Code.
3. Du schickst dem Besucher per WhatsApp einen Link wie https://<dein-shop>/c/<code>.
4. Wenn das Gespräch beginnt, hat dein Agent schon den ganzen Kontext dessen, was der Besucher ausgewählt hat.

## Endpoints

| Methode | Pfad | Beschreibung |
| --- | --- | --- |
| `POST` | `/v1/carts` | Teilbaren Warenkorb erstellen |
| `GET` | `/v1/carts/:code` | Warenkorb per Code auflösen |

## Einen Warenkorb erstellen

Schick 1 bis 50 Artikel, jeder mit Verweis auf eine Produkt-ID und einer qty zwischen 1 und 99. Die Antwort ist der kurze Code des Warenkorbs:

`POST /v1/carts`

```bash
curl -X POST "https://rest-api.tbit.app/v1/carts" \
  -H "X-API-Key: $TBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "id": "prod_id_1",
        "qty": 2
      },
      {
        "id": "prod_id_2",
        "qty": 1
      }
    ]
  }'
```

Antwort:

```json
{
  "data": {
    "code": "K3F9X2A"
  }
}
```

## Einen Warenkorb abrufen

Löst einen Code wieder in seine Artikel auf, jeder ein vollständiges Produkt-Objekt plus qty. Warenkörbe sind pro Konto isoliert: Ein Schlüssel löst nur Warenkörbe auf, die für den eigenen Agenten erstellt wurden: Alles andere liefert 404:

`GET /v1/carts/K3F9X2A`

```bash
curl "https://rest-api.tbit.app/v1/carts/K3F9X2A" \
  -H "X-API-Key: $TBIT_API_KEY"
```

Antwort:

```json
{
  "data": {
    "code": "K3F9X2A",
    "created_at": "2024-09-01T12:00:00Z",
    "items": [
      {
        "_id": "prod_id_1",
        "kind": "product",
        "title": "Kit fiesta dinosaurios",
        "currency": "COP",
        "base_price": 95000,
        "qty": 2
      },
      {
        "_id": "prod_id_2",
        "kind": "product",
        "title": "Piñata dinosaurio",
        "currency": "COP",
        "base_price": 45000,
        "qty": 1
      }
    ]
  }
}
```

## Hinweise

- Codes haben 7 Zeichen.
- Warenkörbe gelten 90 Tage.
- Warenkörbe sind unveränderlich: Erstell einen neuen, um die Artikel zu ändern.
- Warenkörbe anderer Agenten (oder unbekannte Codes) liefern 404.
