# Winkelwagens

> Deelbare winkelwagens die op WhatsApp worden afgerond

- Pagina: https://tbit.app/nl/docs/api/carts
- Basis-URL: `https://rest-api.tbit.app/v1`
- Authenticatie: header `X-API-Key` met je sleutel bij elk verzoek (de voorbeelden lezen hem uit de omgevingsvariabele `TBIT_API_KEY`)

## Overzicht

Met winkelwagens kan een bezoeker van je webshop een lijst met producten samenstellen en die meenemen naar een WhatsApp-gesprek, met alle context. Een winkelwagen is een kortlevende momentopname: hij krijgt een code van 7 tekens, is 90 dagen geldig en kan niet worden gewijzigd: wil je iets aanpassen, maak dan een nieuwe.

## Hoe de flow werkt

1. Een bezoeker van je webshop stelt een lijst met producten samen.
2. Je webshop maakt een winkelwagen met POST /v1/carts en krijgt een korte code terug.
3. Je stuurt de bezoeker via WhatsApp een link als https://<jouw-webshop>/c/<code>.
4. Als het gesprek begint, heeft je agent al alle context van wat de bezoeker heeft gekozen.

## Endpoints

| Methode | Pad | Beschrijving |
| --- | --- | --- |
| `POST` | `/v1/carts` | Deelbare winkelwagen maken |
| `GET` | `/v1/carts/:code` | Winkelwagen opzoeken via code |

## Winkelwagen maken

Stuur 1 tot 50 artikelen, elk met een product-id en een qty tussen 1 en 99. De response is de korte code van de winkelwagen:

`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
      }
    ]
  }'
```

Response:

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

## Winkelwagen ophalen

Zet een code terug om naar de artikelen, elk een volledig productobject plus qty. Winkelwagens zijn per account afgeschermd: een sleutel vindt alleen winkelwagens die voor de eigen agent zijn gemaakt; al het andere geeft 404:

`GET /v1/carts/K3F9X2A`

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

Response:

```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
      }
    ]
  }
}
```

## Opmerkingen

- Codes hebben 7 tekens.
- Winkelwagens zijn 90 dagen geldig.
- Winkelwagens kunnen niet worden gewijzigd: maak een nieuwe om de artikelen te veranderen.
- Winkelwagens van andere agents (of onbekende codes) geven 404.
