Événements et données
Les neuf événements disponibles, leur enveloppe et leurs données métier.
Sur cette page
Enveloppe communeRendez-vouscustomer.createdvehicle.createdrepair.status_changedcall.completedcallback.requestedquote.requestedGET /events/sampleEnveloppe commune
{
"id": "evt_3f2504e0-...",
"event": "reservation.created",
"createdAt": "2026-07-04T10:00:00.000Z",
"data": {
"reservationId": 101
}
}
id identifie la livraison et reste identique lors des nouvelles tentatives. createdAt est la date de construction/livraison du message, pas nécessairement celle de la modification métier.
Rendez-vous
reservation.created signale une création ; reservation.modified une modification de date ou de détails ; reservation.cancelled une annulation. Les trois événements utilisent les données ci-dessous.
{
"reservationId": 101,
"status": "confirmed",
"startTime": "2026-07-06T08:00:00.000Z",
"startLocal": "2026-07-06T10:00:00.000+02:00",
"endTime": "2026-07-06T08:30:00.000Z",
"fullDay": false,
"service": {
"id": 11,
"name": "Vidange",
"durationType": "fixed"
},
"resource": {
"id": 21,
"name": "Pont 1"
},
"customer": {
"id": 31,
"name": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@example.com",
"phone": "+33612345678"
},
"guest": null,
"guestCount": 1,
"notes": null,
"cancellationReason": null,
"vehicle": {
"id": 41,
"plate": "AB123CD",
"make": "Renault",
"model": "Clio",
"year": 2019,
"mileage": "80 000 km",
"displayName": "Renault Clio AB-123-CD"
},
"repairStatus": "in-repair"
}
vehicle contient le véhicule associé au rendez-vous, ou null si aucun véhicule n’est associé. repairStatus est distinct du statut du rendez-vous : ses valeurs possibles sont in-repair (en réparation), ready (prêt), delivered (livré) ou null (non renseigné).
Pour reservation.modified, previousStartTime (UTC) et previousStartLocal sont aussi présents. Pour une annulation, status vaut cancelled et cancellationReason contient le motif. Pour une prestation à la journée, fullDay vaut true, endTime est null et startLocal utilise une date ISO seule dans le fuseau de l’entreprise, par exemple 2026-07-06.
customer.created
Émis lors de la création d’un client.
{
"customerId": 31,
"name": "Jean",
"lastName": "Dupont",
"civility": "Monsieur",
"email": "jean.dupont@example.com",
"phone": "+33612345678",
"metadata": {
"vehicule": "Renault Clio"
}
}
vehicle.created
Émis lorsqu’un nouveau véhicule est ajouté à un client. vehicleId identifie le véhicule ; customer contient les coordonnées du client associé.
{
"vehicleId": 41,
"plate": "AB123CD",
"make": "Renault",
"model": "Clio",
"year": 2019,
"mileage": "80 000 km",
"displayName": "Renault Clio AB-123-CD",
"customer": {
"id": 31,
"name": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@example.com",
"phone": "+33612345678"
}
}
Les plaques sont stockées en majuscules, sans séparateurs : par exemple AB123CD. displayName est le libellé lisible affiché dans le tableau de bord. mileage est une chaîne, par exemple 80 000 km ; ne supposez pas une valeur numérique.
repair.status_changed
Émis lorsque le statut de réparation d’un rendez-vous change. Les données reprennent l’intégralité des données du rendez-vous, avec repairStatus pour la nouvelle valeur et previousRepairStatus pour la valeur avant modification. previousRepairStatus vaut null si aucun statut n’était renseigné. L’exemple montre le passage de in-repair à ready.
{
"reservationId": 101,
"status": "confirmed",
"startTime": "2026-07-06T08:00:00.000Z",
"startLocal": "2026-07-06T10:00:00.000+02:00",
"endTime": "2026-07-06T08:30:00.000Z",
"fullDay": false,
"service": {
"id": 11,
"name": "Vidange",
"durationType": "fixed"
},
"resource": {
"id": 21,
"name": "Pont 1"
},
"customer": {
"id": 31,
"name": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@example.com",
"phone": "+33612345678"
},
"guest": null,
"guestCount": 1,
"notes": null,
"cancellationReason": null,
"vehicle": {
"id": 41,
"plate": "AB123CD",
"make": "Renault",
"model": "Clio",
"year": 2019,
"mileage": "80 000 km",
"displayName": "Renault Clio AB-123-CD"
},
"repairStatus": "ready",
"previousRepairStatus": "in-repair"
}
call.completed
{
"callRecordId": 51,
"callId": "demo-call-1",
"direction": "inbound",
"startedAt": "2026-07-06T07:58:00.000Z",
"endedAt": "2026-07-06T08:01:00.000Z",
"durationSeconds": 180,
"outcome": "booked",
"callerNumber": "+33612345678",
"calledNumber": "+33987654321",
"reservationId": 101,
"callbackRequested": false
}
callback.requested
{
"callRecordId": 52,
"reason": "Demande de rappel pour un devis",
"urgency": "urgent",
"callerNumber": "+33612345678",
"customer": {
"id": 31,
"name": "Jean",
"lastName": "Dupont",
"phone": "+33612345678"
}
}
quote.requested
Les données sont transmises telles quelles par l’outil vocal, sans schéma fixe ni ligne métier associée. Les champs possibles incluent customerName, verifiedCallerPhone, vehicle, requestedServices, plate, mileage et notes. Ne les considérez pas tous comme obligatoires.
GET /events/sample
Le paramètre event est obligatoire et doit correspondre à un des neuf événements, y compris vehicle.created et repair.status_changed. limit est compris entre 1 et 10, avec 3 par défaut. La réponse est un tableau JSON direct, sans propriété docs.
curl 'https://app.kawlya.com/api/integrations/v1/events/sample?event=reservation.created&limit=3' \
-H "Authorization: Bearer $KAWLYA_API_KEY"
[
{
"id": "evt_sample_a1b2c3d4",
"event": "reservation.created",
"createdAt": "2026-07-04T10:00:00.000Z",
"data": {
"reservationId": 101,
"status": "confirmed",
"startTime": "2026-07-06T08:00:00.000Z",
"startLocal": "2026-07-06T10:00:00.000+02:00",
"endTime": "2026-07-06T08:30:00.000Z",
"fullDay": false,
"service": {
"id": 11,
"name": "Vidange",
"durationType": "fixed"
},
"resource": {
"id": 21,
"name": "Pont 1"
},
"customer": {
"id": 31,
"name": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@example.com",
"phone": "+33612345678"
},
"guest": null,
"guestCount": 1,
"notes": null,
"cancellationReason": null,
"vehicle": {
"id": 41,
"plate": "AB123CD",
"make": "Renault",
"model": "Clio",
"year": 2019,
"mileage": "80 000 km",
"displayName": "Renault Clio AB-123-CD"
},
"repairStatus": "in-repair"
}
}
]
Les exemples utilisent les données récentes de votre entreprise avec les mêmes fonctions de construction que les livraisons réelles. Sans données, un exemple de démonstration est utilisé ; c’est toujours le cas pour quote.requested. Erreurs : 400 unknown event ou 401 pour une clé invalide.