Services

Services & capacités

Découpez votre journée en services (déjeuner, dîner, brunch...) chacun avec ses propres horaires, durée de slot, et capacité totale cumulée. Le widget filtre automatiquement quand un service est plein.

Concept

Un service est une période continue de la journée avec :

  • Un code unique (lunch, dinner, brunch...)
  • Des horaires (start_timeend_time)
  • Une durée de slot (ex : 15 min pour un lunch rapide)
  • Un nombre de réservations max par slot
  • Une capacité totale en couverts (max_total_guests) pour le service entier

Quand la capacité totale est atteinte, tous les slots du service deviennent service_full et le widget bascule en "complet" — même si certains slots individuels avaient encore de la place.

Lister les services

GET/api/v1/services

Liste tous les services configurés. Si ?date=YYYY-MM-DD est fourni, ajoute l'usage actuel.

bash
curl "https://api.restaurateur.ch/api/v1/services?date=2026-06-15" \
  -H "X-API-Key: VOTRE_CLE_API"
json
{
  "services": [
    {
      "id": 12, "code": "lunch", "label": "Déjeuner",
      "start_time": "12:00", "end_time": "13:45",
      "slot_duration_min": 15, "max_bookings_per_slot": 5,
      "max_total_guests": 20, "is_active": true, "sort_order": 0,
      "usage_on_date": { "date": "2026-06-15", "bookings": 4, "guests": 8, "service_full": false }
    }
  ]
}

Créer un service

POST/api/v1/services

Body

ChampTypeNotes
codestringrequired Unique par restaurant
labelstringLibellé affiché (ex: "Déjeuner")
start_timeHH:MMrequired
end_timeHH:MMrequired
slot_duration_minintDéfaut 30
max_bookings_per_slotintDéfaut 5
max_total_guestsint|nullnull = illimité
is_activeboolDéfaut true
sort_orderintPour l'ordre d'affichage
bash
curl -X POST https://api.restaurateur.ch/api/v1/services \
  -H "X-API-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "lunch",
    "label": "Déjeuner",
    "start_time": "12:00",
    "end_time": "13:45",
    "slot_duration_min": 15,
    "max_bookings_per_slot": 5,
    "max_total_guests": 20
  }'

Modifier un service

PUT/api/v1/services/:id

Tous les champs sont optionnels. Envoyez uniquement ceux à modifier.

bash
# Désactiver un service (sans le supprimer)
curl -X PUT https://api.restaurateur.ch/api/v1/services/13 \
  -H "X-API-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"is_active": false}'

# Augmenter la capacité pour un événement
curl -X PUT https://api.restaurateur.ch/api/v1/services/12 \
  -H "X-API-Key: VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"max_total_guests": 40}'

Supprimer un service

DELETE/api/v1/services/:id

Supprime définitivement le service. Les réservations existantes ne sont pas touchées. Préférez is_active: false si vous voulez juste le désactiver temporairement.

bash
curl -X DELETE https://api.restaurateur.ch/api/v1/services/13 \
  -H "X-API-Key: VOTRE_CLE_API"

Workflow : capacité cumulée lunch

Exemple : "Au max 20 couverts au déjeuner, peu importe la répartition sur les créneaux".

  1. Créer le service lunch 12:00-13:45 avec max_total_guests: 20
  2. Le widget affiche les créneaux normalement tant que guests_booked < 20
  3. Quand le total atteint 20, tous les créneaux du service deviennent service_full
  4. Vous pouvez augmenter dynamiquement max_total_guests via PUT si un client appelle directement