Le statut public d’une mission est exposé via le champ
status (objet Transport) sur GET /transports/{id} et GET /transports. Les statuts internes ne sont jamais renvoyés.Les 9 statuts publics
scheduled
Mission planifiée, en attente d’attribution d’un convoyeur. C’est le statut initial après
POST /transports.assigned
Un convoyeur a été attribué à la mission. Le véhicule n’est pas encore enlevé.
in_transit
Le véhicule a été enlevé et est en cours d’acheminement vers le point de livraison (jambe aller).
in_transit_return
La jambe retour est en cours (uniquement pour les missions aller-retour).
awaiting_documents
Le véhicule est livré ; la mission attend les PV et documents (inspection, bon de livraison).
under_review
Les documents transmis sont en cours de validation.
completed
Mission terminée. Documents validés, prestation clôturée.
incident
Une anomalie a été signalée sur la mission (peut survenir à tout moment).
cancelled
Mission annulée (peut survenir à tout moment avant la clôture).
Diagramme des transitions
Le chemin nominal va descheduled à completed. La jambe in_transit_return n’apparaît que pour les aller-retours. Les états incident et cancelled peuvent être atteints depuis n’importe quel état actif.
Résumé textuel de la séquence nominale :
incident et cancelled ne sont pas des étapes du flux nominal : ce sont des sorties qui peuvent intervenir à tout moment. Un incident ne clôt pas forcément la mission — il signale une anomalie à traiter.Cas de l’aller-retour (double jambe)
Une mission peut comporter une jambe retour lorsque le convoyeur doit ramener un véhicule après la livraison aller. Vous l’activez à la création via le champreturn_trip (booléen ou objet).
- Le détail de la mission (
GET /transports/{id}) porte un objetreturn_tripnonnull, qui contient son proprestatus, ses pointspickup/delivery, sonvehicle, sadistance_kmet sonprice. - Le résumé de listing (
GET /transports) expose un booléenhas_returnpour repérer les aller-retours d’un coup d’œil. - Le statut public passe par
in_transit_returnpendant que la jambe retour est en cours. Si la mission est un trajet simple, ce statut n’apparaît jamais — on passe directement dein_transitàawaiting_documents.
Distinguer les jambes dans les modifications de dates et de prix
Distinguer les jambes dans les modifications de dates et de prix
Les endpoints de modification raisonnent par jambe. Pour les dates (
PATCH /transports/{id}/dates), les clés possibles sont enlevement-aller, livraison-aller, enlevement-retour, livraison-retour. Pour la refacturation (POST /transports/{id}/price-adjustments), le champ leg vaut aller ou retour. Seules les jambes réellement modifiées déclenchent une notification.Webhook émis à chaque transition
Chaque changement d’état projette un événement dans le journal de la mission, qui est ensuite livré à vos endpoints webhook. Le tableau ci-dessous associe une transition à l’événement correspondant.| Transition | Événement webhook | Payload data (résumé) |
|---|---|---|
Création → scheduled | transport.created | { id, transport_id, status, price } |
scheduled → assigned | transport.assigned | { id, driver } |
assigned → in_transit | transport.collected | { id, collected_at } |
| Tout changement de statut public | transport.status_changed | { id, from, to } |
under_review → completed | transport.completed | { id, completed_at } |
→ incident | transport.incident | { id } |
→ cancelled | transport.cancelled | { id, reason } |
L’événement générique
transport.status_changed est émis à chaque transition de statut public et porte les deux statuts (from, to). Les événements plus spécifiques (transport.assigned, transport.collected, transport.completed, transport.incident, transport.cancelled) le doublent pour les étapes clés. Vous pouvez vous abonner uniquement à transport.status_changed pour suivre tout le cycle de vie avec un seul handler.| Action | Événement webhook | Payload data (résumé) |
|---|---|---|
Modification des dates (PATCH …/dates) | transport.dates_updated | { id, updated_legs } |
Refacturation (POST …/price-adjustments) | transport.price_adjusted | { id, leg, old_price_ht, new_price_ht, motif } |
Ajout / retrait d’option (POST / DELETE …/options) | transport.price_adjusted | { id, option | removed_option, new_price } |
| Ajout d’un document | document.added | { id, document_key, url } |
| Document accepté | document.accepted | { id, document_key, status } |
| Document refusé | document.rejected | { id, document_key, status } |
Réagir à une transition (exemple)
Voici un handler de webhook minimal qui aiguille selon le statut public reçu. Le détail de la vérification de signature HMAC est traité dans la page webhooks.Node.js
Étapes suivantes
Catalogue des événements webhook
Tous les types d’événements, leurs payloads, les en-têtes de livraison et la vérification de signature.
Démarrage rapide
Créez votre première mission et abonnez-vous à ses événements en quelques minutes.
