Aller au contenu principal

Réservations

Créer une réservation et initier le paiement

L'endpoint présenté ici vous permet de créer une réservation pour un client existant dans votre espace Events‑ERP. Une fois la réservation créée, le parcours de paiement (acompte Mobile Money, etc.) peut être déclenché côté plateforme selon votre configuration.

Voyons tout cela en détail.

La requête

Pour créer une réservation, effectuez une requête POSTvers l'endpoint ci-dessous, ajoutez la clé API dans les headers et fournissez une payload au format décrit.

Endpoint

POSThttp://45.10.154.145:3030/api/v1/bookings

Header

NomTypeRequisDescription
Authorizationstring (Bearer)OuiVotre clé API (scope write:bookings)
Content-Typeapplication/jsonOuiCorps de requête JSON

Body (payload)

ParamètreTypeRequisDescription
clientIdintegerOuiIdentifiant du client dans votre entreprise Events‑ERP
serviceIdstringOuiIdentifiant du service publié (catalogue)
packIdintegerNonPack tarifaire ; le pack par défaut du service est utilisé si omis
eventDatestring (ISO 8601)OuiDate et heure de la prestation
locationstringNonLieu de l'événement
notesstringNonNotes internes ou demandes du client
fieldResponsesarrayNonRéponses aux champs personnalisés : [{ fieldId, value }]

Comment obtenir le clientId

Le client doit déjà exister dans votre base Events‑ERP (compte client invité ou créé depuis le dashboard). Son identifiant numérique est visible dans l'espace client ou via vos outils internes.

  1. Connectez-vous au dashboard Gérant.
  2. Ouvrez la fiche du client concerné.
  3. Relevez l'identifiant utilisé dans les réservations existantes ou l'API.
Note : Pour un parcours 100 % self-service sur votre site, vous pouvez d'abord faire créer le compte client via votre vitrine Events‑ERP ou un flux d'inscription, puis appeler l'API avec le clientId obtenu.

Comment obtenir le serviceId

Appelez le catalogue public avec votre slug. Chaque service publié expose un champ id (cuid) à utiliser dans la payload.

GET http://45.10.154.145:3030/api/public/services?slug=votre-slug

Pack tarifaire

Si packIdest absent, Events‑ERP sélectionne le pack marqué par défaut sur le service. Sinon, transmettez l'identifiant du pack retourné dans le catalogue.

Champs personnalisés

Si votre service définit des champs supplémentaires (formulaire), transmettez-les via fieldResponses. Chaque entrée associe un fieldId (entier) à une valeur texte.

Exemples de création de réservation

Exemple de payload

{
  "clientId": 12,
  "serviceId": "clx9abc123def456",
  "packId": 3,
  "eventDate": "2026-09-15T14:00:00.000Z",
  "location": "Cotonou — Salle des fêtes",
  "notes": "Décoration florale incluse",
  "fieldResponses": [
    { "fieldId": 1, "value": "150 invités" }
  ]
}

Exemple curl

curl -X POST "http://45.10.154.145:3030/api/v1/bookings" \
  -H "Authorization: Bearer erp_VOTRE_CLE" \
  -H "Content-Type: application/json" \
  -d '{"clientId":12,"serviceId":"clx9abc123def456","eventDate":"2026-09-15T14:00:00.000Z"}'

Réponse

Succès (201)

{
  "success": true,
  "booking": {
    "id": 42,
    "status": "PENDING_PAYMENT",
    "totalAmount": 250000,
    "depositAmount": 75000,
    "eventDate": "2026-09-15T14:00:00.000Z",
    "planningWarning": null
  }
}

Le champ planningWarning peut contenir un message si un conflit de planning est détecté sans bloquer la création.

Erreurs possibles

CodeDescription
400Données invalides (validation Zod) ou pack manquant
401Clé API invalide, expirée ou scope write:bookings absent
404Client ou service introuvable pour votre entreprise

Exemple d'erreur JSON

{
  "success": false,
  "error": "Service introuvable."
}

Les statuts des réservations

  • PENDING_PAYMENT — En attente de paiement (acompte)
  • CONFIRMED — Confirmée après paiement
  • IN_PREPARATION — En préparation (équipe notifiée)
  • IN_PROGRESS — Prestation en cours
  • COMPLETED — Prestation terminée
  • CANCELLED — Annulée
  • REFUNDED — Remboursée

Récupérer le statut d'une réservation

Vous pouvez interroger une réservation ultérieurement pour afficher son état et les derniers paiements associés.

Requête

GEThttp://45.10.154.145:3030/api/v1/bookings/{bookingId}
NomTypeRequisDescription
Authorizationstring (Bearer)OuiClé API avec scope read:public
Paramètre URLTypeRequisDescription
bookingIdintegerOuiIdentifiant de la réservation retourné à la création
GET http://45.10.154.145:3030/api/v1/bookings/42

Réponse

Succès (200)

{
  "success": true,
  "booking": {
    "id": 42,
    "status": "CONFIRMED",
    "totalAmount": 250000,
    "depositAmount": 75000,
    "eventDate": "2026-09-15T14:00:00.000Z",
    "location": "Cotonou — Salle des fêtes",
    "planningWarning": null,
    "createdAt": "2026-06-01T10:00:00.000Z",
    "service": { "id": "clx9…", "name": "Mariage prestige" },
    "client": { "id": 12, "user": { "email": "client@example.com", "name": "Jean Dupont" } },
    "payments": [{ "id": 1, "status": "COMPLETED", "amount": 75000 }]
  }
}

Erreurs

CodeDescription
400ID de réservation invalide (non numérique)
401Clé API invalide
404Réservation introuvable