Skip to content

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)