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
http://45.10.154.145:3030/api/v1/bookingsHeader
| Nom | Type | Requis | Description |
|---|---|---|---|
Authorization | string (Bearer) | Oui | Votre clé API (scope write:bookings) |
Content-Type | application/json | Oui | Corps de requête JSON |
Body (payload)
| Paramètre | Type | Requis | Description |
|---|---|---|---|
clientId | integer | Oui | Identifiant du client dans votre entreprise Events‑ERP |
serviceId | string | Oui | Identifiant du service publié (catalogue) |
packId | integer | Non | Pack tarifaire ; le pack par défaut du service est utilisé si omis |
eventDate | string (ISO 8601) | Oui | Date et heure de la prestation |
location | string | Non | Lieu de l'événement |
notes | string | Non | Notes internes ou demandes du client |
fieldResponses | array | Non | Ré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.
- Connectez-vous au dashboard Gérant.
- Ouvrez la fiche du client concerné.
- Relevez l'identifiant utilisé dans les réservations existantes ou l'API.
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
| Code | Description |
|---|---|
400 | Données invalides (validation Zod) ou pack manquant |
401 | Clé API invalide, expirée ou scope write:bookings absent |
404 | Client 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 paiementIN_PREPARATION— En préparation (équipe notifiée)IN_PROGRESS— Prestation en coursCOMPLETED— Prestation terminéeCANCELLED— AnnuléeREFUNDED— 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
http://45.10.154.145:3030/api/v1/bookings/{bookingId}| Nom | Type | Requis | Description |
|---|---|---|---|
Authorization | string (Bearer) | Oui | Clé API avec scope read:public |
| Paramètre URL | Type | Requis | Description |
|---|---|---|---|
bookingId | integer | Oui | Identifiant 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
| Code | Description |
|---|---|
400 | ID de réservation invalide (non numérique) |
401 | Clé API invalide |
404 | Réservation introuvable |