Créer une réservation

Client, demande de réservation, suivi et annulation.

Objectif : enregistrer le client, puis créer une demande de réservation dans Opticar.

Étape 1 — Retrouver le client (si déjà connu)

GET /clients/lookup?phone=+21620123456

Vous pouvez aussi chercher par email ou identity_document_number (au moins un critère).

  • Trouvé → { "found": true, "data": { "id": … } }
  • Pas trouvé → { "found": false } → créez-le (étape 2)

Étape 2 — Créer le client

POST /clients
{
  "first_name": "Amine",
  "last_name": "Ben Ali",
  "phone": "+21620123456",
  "email": "amine@example.com"
}

Obligatoire : prénom, nom, téléphone. Réponse 201 avec un driver_id.

curl -sS -X POST "https://app.opticar.tn/api/v1/clients" \
  -H "Authorization: Bearer opticar_VOTRE_CLE" \
  -H "Content-Type: application/json" \
  -d '{"first_name":"Amine","last_name":"Ben Ali","phone":"+21620123456"}'

Étape 3 — Créer la réservation

POST /bookings
{
  "vehicle_id": 12,
  "driver_id": 45,
  "start_date": "2026-10-20",
  "start_time": "10:00",
  "end_date": "2026-10-25",
  "end_time": "10:00",
  "pickup_address": 3,
  "drop_off_address": 3,
  "notes": "Vol TU718"
}

Champs obligatoires : vehicle_id, dates et heures (H:i). Le reste est optionnel.

Si tout va bien (201) :

  • Statut api_pending — en attente d’acceptation par l’agence
  • Paiement unpaid
  • Vous recevez une référence (booking_id / ref)

Autres codes utiles :

  • 409 — véhicule plus disponible
  • 422 — formulaire incomplet / invalide

Suivre ou annuler

GET    /bookings           → liste (filtres possibles)
GET    /bookings/{ref}     → détail
DELETE /bookings/{ref}     → annuler (réservations API uniquement)

Côté agence dans Opticar

L’équipe voit la demande et peut accepter ou refuser. Affichez sur le site un message du type : « Demande envoyée — confirmation sous peu. »

Ensuite : Recevoir les mises à jour par webhook →