Aller au contenu

Suivi public

Contrairement à toutes les autres pages de cette référence API, ce point de terminaison n’exige ni clé API ni connexion. C’est lui qui alimente le lien de suivi public partagé avec le destinataire d’une expédition.

Un lien de suivi n’est pas généré automatiquement pour chaque expédition — il est créé à la demande. Dans l’application, un utilisateur disposant d’un accès en lecture aux expéditions sélectionne Partager le lien de suivi sur une expédition (page Expéditions), ce qui appelle un point de terminaison authentifié (POST /shipments/:id/share) qui :

  • Génère un jeton aléatoire pour cette expédition la première fois qu’elle est partagée, et le stocke sur l’enregistrement de l’expédition.
  • Renvoie le même jeton à chaque partage suivant — le lien ne change pas une fois créé.

Voir la page Expéditions du Guide utilisateur pour la marche à suivre dans l’application. Le lien obtenu ouvre la page de suivi de l’application elle-même (/track/:token) ; le point de terminaison API ci-dessous est celui que cette page appelle.

GET /track/:token

Aucun en-tête d’authentification n’est requis ni vérifié. :token est le jeton opaque du lien de partage.

Terminal window
curl https://tenant.logistall.cloud/api/track/9f2e4a1b7c3d5e6f8a0b1c2d3e4f5a6b
{
"shipmentNumber": "SHP-00482",
"status": "in_transit",
"mode": "ftl",
"originCity": "Casablanca",
"destCity": "Tanger",
"pickupScheduledAt": "2026-07-10T08:00:00.000Z",
"deliveryScheduledAt": "2026-07-12T17:00:00.000Z",
"events": [
{
"eventType": "departure",
"status": "in_transit",
"description": "Left Casablanca distribution hub",
"city": "Casablanca",
"eventAt": "2026-07-10T09:15:00.000Z"
},
{
"eventType": "pickup",
"status": "pickup_scheduled",
"description": null,
"city": "Casablanca",
"eventAt": "2026-07-10T08:05:00.000Z"
}
]
}

Notez que events[] inclut ici un champ description — la note en texte libre qu’un répartiteur ou un chauffeur peut joindre à un événement de suivi. C’est la seule différence avec le tableau tracking[] du point de terminaison authentifié GET /v1/shipments/:id, qui ne l’inclut pas.

Ce point de terminaison est volontairement minimal. Il ne renvoie jamais :

  • L’id interne de l’expédition (uniquement son shipmentNumber lisible).
  • Les noms des clients ou des transporteurs.
  • La moindre adresse, le moindre contact ou toute autre donnée personnelle au-delà des noms de villes d’origine et de destination.
  • La tarification, les frais, la facture ou toute donnée financière.
  • Le locataire/l’entreprise auquel appartient l’expédition (le jeton seul le résout côté serveur).
  • Toute donnée appartenant à d’autres expéditions, clients ou locataires — le jeton ne déverrouille jamais que la seule expédition pour laquelle il a été créé.

S’il vous faut davantage — noms de clients, adresses, tarification — cela requiert une clé API authentifiée contre /v1/shipments/:id ou les pages équivalentes de l’application, pas ce point de terminaison.

Statut Corps Quand
404 { "error": "Not found" } Le jeton ne correspond à aucune expédition dans aucun locataire actif.
500 { "error": "Server error" } Erreur serveur inattendue.

Il n’existe aucun moyen d’énumérer ou de lister les jetons valides — un jeton ne fonctionne que si vous possédez le lien exact.