Références et rejeux
Un appel peut se perdre : délai dépassé, coupure réseau, redémarrage de votre TMS au mauvais moment. Vous ne savez alors pas si Fincargo a reçu la requête. Cette page explique comment rejouer sans risque : sans créer deux fois le même document, et sans être facturé deux fois.
Posez votre propre référence sur chaque DeCa
Chaque DeCa accepte un external_identifier : le numéro de l'ordre dans votre
TMS. C'est lui qui rend une création rejouable.
POST /v1/controldocuments
{
"external_identifier": "ORD-1001",
"roles": [ ... ],
"goods_lines": [ ... ]
}
- Il est unique dans votre compte, et seulement dans votre compte. Une
autre entreprise peut utiliser
ORD-1001sans vous gêner, et rien de ce qu'elle fait n'apparaît jamais dans vos réponses. - Il est distinct de la
transport_reference, le numéro imprimé sur le document. Vous pouvez donner les deux, ou seulement l'un.
Rejouer une création
Si vous renvoyez une création avec un external_identifier déjà utilisé dans
votre compte, la réponse est un 409 qui porte l'identifiant du document
déjà créé :
{
"errors": [
{
"code": "control_document.external_identifier_already_exists",
"description": "A control document of this account already carries this external_identifier.",
"existing_id": "3f2c9a4e-…"
}
]
}
Votre TMS lit existing_id, puis GET /v1/controldocuments/{existing_id} :
il retrouve le document que le premier appel a créé. Aucun second document
n'existe.
La tournée suit la même règle avec sa reference (POST /v1/tours, code
tour.reference_already_exists, avec existing_id). Une tournée créée sans
reference n'est pas protégée : rejouée, elle serait créée deux fois.
Envoyez toujours une référence.
Rejouer une assignation
Assigner un document est le geste qui l'émet et le facture. Rejouer la même
assignation ne fait rien de plus : la réponse est un 200 qui rend le document
(ou la tournée), sans nouvelle émission, sans nouvelle facturation et sans
nouvelle notification au chauffeur.
| Geste | Rejoué à l'identique | Rejoué avec une autre cible |
|---|---|---|
PATCH /v1/controldocuments/{id}/roles/{role_id}/assign-subaccount |
200, le document |
400 : changer de chauffeur est une correction (POST .../corrections, champ DRIVER), qui apparaît barrée sur le PDF |
POST /v1/tours/{id}/assignment |
200, la tournée (même chauffeur, et même camion s'il est donné) |
400 |
POST /v1/tours/{id}/send |
200, la tournée (même sous-traitant, et même chauffeur pour un envoi direct) |
400 |
Un document remplacé garde votre référence
Un DeCa émis ne se modifie pas toujours : certaines erreurs se réparent en le
remplaçant par un nouveau document (POST .../supersede, ou
POST .../replace pour un sous-traitant). Pour votre TMS, c'est le même ordre,
corrigé : le remplaçant garde l'external_identifier de l'original. S'il
n'en porte pas dans son corps, il en hérite.
Après un remplacement, l'existing_id d'un rejeu désigne la version en
vigueur, c'est-à-dire le remplaçant. Un remplacement ne peut pas prendre
l'external_identifier d'un autre document de votre compte.