UC-05 — Réservation snack
Acteur : Porteur de carte (ou parent pour un enfant) But : Réserver un snack pour une date ultérieure
Trigger
Un porteur souhaite réserver un snack (produit de catégorie snack) pour une date future.
Distinction avec UC-04
Le parcours est identique à la réservation de repas (UC-04). La distinction repas / snack est portée par le produit (catégorie kind et type de repas), pas par l'API.
Endpoints
GET /api/v1/reservations/availability?date=2025-06-15
POST /api/v1/reservations
GET /api/v1/reservations
PATCH /api/v1/reservations/{id}/status
POST /api/v1/reservations
Content-Type: application/json
Idempotency-Key: <uuid-v4>
{
"card_holder_id": "uuid-porteur",
"for_date": "2025-06-15",
"items": [
{ "product_id": "uuid-snack", "quantity": 1 }
]
}
Flow
sequenceDiagram
participant Porteur
participant App
participant API
participant DB
Porteur->>App: "Réserver un snack pour le 15 juin"
App->>API: POST /reservations
API->>DB: Vérifie disponibilité + solde
API->>DB: INSERT reservation (pending) + débit carte
API-->>App: {reservation, new_balance}
App->>Porteur: "Snack réservé ✓"
Permissions
| Permission | Description |
|---|---|
reservation.create | Créer une réservation |