Carrier-to-carrier (relais entre deux transporteurs)
Un transport peut changer de main en cours de route — un transporteur initial (A) prend en charge la collecte, puis remet la garde de la marchandise à un second transporteur (B) qui assure la livraison finale. L'API modélise ce relais en ajoutant un second rôle SUBSEQUENTCARRIER au document en cours de transport, puis en faisant enregistrer une double signature au point de rupture de charge : un transfert côté A, une acceptation côté B.
Points clés à retenir :
- Le second transporteur n'est pas connu à la création du document — il est ajouté dynamiquement une fois le transport déjà en statut
TRANSIT. - Le transfert de garde est un événement à deux signatures distinctes (remise / acceptation), pas une simple mise à jour de champ.
- Le TMS donneur d'ordre reste notifié de bout en bout, y compris du relais lui-même (webhook de type commentaire), sans jamais perdre la visibilité sur le transport.
- Le PDF final consolide l'historique des deux transporteurs sur un seul document — il n'y a pas deux e-CMR distincts.
sequenceDiagram
participant TMS as TMS externe
participant API as API e-CMR
participant A as Chauffeur A
participant B as Chauffeur B
Note over TMS,API: Création avec Carrier A comme transporteur initial
TMS->>API: POST /freightdocuments (role Carrier = A)
API-->>TMS: 201 Created, status=DRAFT
TMS->>API: POST /freightdocuments/id/issue
API-->>TMS: 200 OK, status=ISSUED
API-)TMS: Webhook STATUS=ISSUED
Note over A,API: Collecte par le transporteur A
A->>API: GET /freightdocuments/id (préchargement)
A->>API: POST signature collecte
API-->>A: 200 OK, status=TRANSIT
API-)TMS: Webhook STATUS=TRANSIT
Note over TMS,API: Ajout du relais en cours de route
TMS->>API: POST subsequentCarriers (ajout Carrier B)
API-->>TMS: 200 OK, role Carrier B ajouté
Note over A,B: Point de rupture de charge
A->>API: POST signature transfert (remise de garde)
API-->>A: 200 OK, transfert enregistré
B->>API: POST signature acceptation (prise en charge)
API-->>B: 200 OK, garde transférée à B
API-)TMS: Webhook COMMENT (relais A vers B)
Note over B,API: Poursuite jusqu'à livraison
B->>API: POST events (arrivée, déchargement)
B->>API: POST signature livraison
API-->>B: 200 OK, status=DELIVERED
API-)TMS: Webhook STATUS=DELIVERED
TMS->>API: GET /freightdocuments/id/pdf
API-->>TMS: PDF e-CMR (historique des deux transporteurs)