Aller au contenu principal

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​

PermissionDescription
reservation.createCréer une réservation

Voir aussi​