# API TRACKING COURSIER.FR V3

<table border="1" id="bkmrk-08%2F06%2F2020-version-3" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 33.3333%;">08/06/2020</td><td style="width: 33.3333%;">[![image-1662457811981.png](https://bookstack.digf.fr/uploads/images/gallery/2022-09/scaled-1680-/image-1662457811981.png)](https://bookstack.digf.fr/uploads/images/gallery/2022-09/image-1662457811981.png)</td><td class="align-right" style="width: 33.3333%;">Version 3.1</td></tr></tbody></table>

##### **Objectif**

Suivre tous les évènements liés à une mission donnée : enlèvement, livraison, approches, informations coursier, reprogrammation, preuve de livraison. Il est également possible d'interroger l'API pour l'ensemble des missions en cours en une fois.

##### **Protocole**

Les requests se font en mode https à l’url <u>api.coursier.fr/v3/tracking.php,</u> on récupère un json contenant toutes les informations de la course. Dans le cas d'une rupture de charge, plusieurs enregistrements sont renvoyés, chacun d'eux ayant ses propres informations.

##### **Authentification**

L'authentification se fait à l'aide d'une apikey associée à votre user coursier.fr, vous pouvez trouver ces informations dans votre espace client. Vous devez disposez d'un compte en facturation mensuelle, si ce n'est pas encore le cas vous pouvez contacter un commercial à l'adresse <commercial@coursier.fr>. Vous devez passer en paramètre l'apikey, le user et le compte client utilisé, un même user pouvant être rattaché à plusieurs comptes client.

Afin de tester nos apis, vous pouvez utiliser le compte de test suivant pour réaliser vos développements dès à présent en attendant d'avoir vos accès définitifs :

User : <test@apicfr.fr>

Pass : T3stCFR\*

ClientId : 7055339

Apikey : e1ab1411d66765e73cf4b068d39cda8a

##### **Paramètres 

Les paramètres sont à passer en POST sous forme d’un tableau json.

<table id="bkmrk-nom-requis-type-desc" style="width: 0px;" width="614"><tbody><tr><td style="width: 222px;">**NOM**

</td><td style="width: 107px;">**REQUIS**

</td><td style="width: 116px;">**TYPE**

</td><td style="width: 357px;">**DESCRIPTIF**

</td></tr><tr><td style="width: 222px;">User

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(32)

</td><td style="width: 357px;">User d'accès aux interfaces coursier.fr

</td></tr><tr><td style="width: 222px;">Apikey

</td><td style="width: 107px;">O

</td><td style="width: 116px;">Varchar(32)

</td><td style="width: 357px;">Apikey liée à votre user d'accès aux interfaces coursier.fr

</td></tr><tr><td style="width: 222px;">ClientId

</td><td style="width: 107px;">O

</td><td style="width: 116px;">int

</td><td style="width: 357px;">Numéro de compte client

</td></tr><tr><td style="width: 222px;">MissionNumber

</td><td style="width: 107px;">O

</td><td style="width: 116px;">int

</td><td style="width: 357px;">Identifiant de la course obtenu lors du passage de commande. Si ce paramètre n'est pas spécifié ou vide, l'API retourne l'ensemble des missions à livrer à partir d'aujourd'hui.

</td></tr><tr><td style="width: 222px;">Lang

</td><td style="width: 107px;">N

</td><td style="width: 116px;">varchar(2)

</td><td style="width: 357px;">Code langue pour ma restitution des messages (FR par défaut)

</td></tr></tbody></table>

##### **Réponse JSON 

La réponse est un tableau json contenant les informations relatives à la course ou au fragment interrogé. En cas d'erreur, l'api répond un json contenant un champ Message précisant la nature de l'erreur.

<table id="bkmrk-nom-taille-descripti" style="width: 810px; height: 1066px;"><tbody><tr style="height: 35px;"><td style="width: 225px; height: 35px;">**NOM**

</td><td style="width: 116px; height: 35px;">**Taille**

</td><td style="width: 469px; height: 35px;">**DESCRIPTIF**

</td></tr><tr style="height: 79px;"><td style="width: 225px; height: 79px;">MissionId

</td><td style="width: 116px; height: 79px;">int

</td><td style="width: 469px; height: 79px;">Id de la course, dans le cas d'une rupture de charge l'Id est différent pour chaque fragment

</td></tr><tr style="height: 79px;"><td style="width: 225px; height: 79px;">MissionNumber

</td><td style="width: 116px; height: 79px;">int

</td><td style="width: 469px; height: 79px;">Numéro de la course, c'est ce numéro qui permet de dialoguer avec notre coursier et le service client

</td></tr><tr><td style="width: 225px;">From

</td><td style="width: 116px;">varchar(80)

</td><td style="width: 469px;">Nom de l'adresse de d'enlèvement

</td></tr><tr><td style="width: 225px;">To

</td><td style="width: 116px;">varchar(80)

</td><td style="width: 469px;">Nom de l'adresse de livraison

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">PickupStartDate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">début du créneau d’enlèvement

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">PickupEndDate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">fin du créneau d’enlèvement

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">PickupStartEstimate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">début du créneau affiné de la date d'enlèvement

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">PickupEndEstimate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">fin du créneau affiné de la date d'enlèvement

</td></tr><tr><td style="width: 225px;">PickupDate

</td><td style="width: 116px;">Datetime

</td><td style="width: 469px;">date effective d'enlèvement

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">DeliveryStartDate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">début du créneau de livraison

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">DeliveryEndDate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">fin du créneau de livraison

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">DeliveryStartEstimate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">début du créneau affiné de livraison

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">DeliveryEndEstimate

</td><td style="width: 116px; height: 57px;">Datetime

</td><td style="width: 469px; height: 57px;">fin du créneau affiné de livraison

</td></tr><tr><td style="width: 225px;">DeliveryDate

</td><td style="width: 116px;">Datetime

</td><td style="width: 469px;">date effective de livraison

</td></tr><tr style="height: 211px;"><td style="width: 225px; height: 211px;">State

</td><td style="width: 116px; height: 211px;">varchar(50)

</td><td style="width: 469px; height: 211px;">Statut de la mission :

\- Non Attribué

\- Enlevé

\- Livré

\- Annulé

\- Facturé

\- Suspendu

\- Attribué

\- A facturer

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">WorkerShortCode

</td><td style="width: 116px; height: 57px;">varchar(5)

</td><td style="width: 469px; height: 57px;">Code d'identification du chauffeur

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">WorkerSurname

</td><td style="width: 116px; height: 57px;">varchar(100)

</td><td style="width: 469px; height: 57px;">Prénom du chauffeur

</td></tr><tr style="height: 57px;"><td style="width: 225px; height: 57px;">Picture

</td><td style="width: 116px; height: 57px;">varchar(100)

</td><td style="width: 469px; height: 57px;">Url de la photo du chauffeur

</td></tr><tr style="height: 35px;"><td style="width: 225px; height: 35px;">ProofOfDelivery

</td><td style="width: 116px; height: 35px;">varchar(100)

</td><td style="width: 469px; height: 35px;">Url de la photo de signature

</td></tr><tr><td style="width: 225px;">DeliverySignee

</td><td style="width: 116px;">varchar(30)

</td><td style="width: 469px;">Nom du signataire

</td></tr></tbody></table>

##### **Exemple d'appel**

```PHP
<?php
$Url = "https://api.coursier.fr/v3/tracking.php";
$Data = array('User' => 'test@apicfr.fr',
			  'Apikey' => 'e1ab1411d66765e73cf4b068d39cda8a',
			  'ClientId' => '7055339',
			  'MissionNumber' => '9005657',
			  'Lang' => 'FR',
			 );

$datajson = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
var_dump($res);
?>
```

##### **Exemple de réponse**

<p class="callout success">\[{"MissionId":"10009999","MissionNumber":"9005657","From":"Hub Coursier.fr","To":"Yann THEBAULT","PickupStartDate":"2020-06-26 11:00:00","PickupEndDate":"2020-06-26 12:00:00","PickupStartEstimate":"","PickupEndEstimate":"","PickupDate":"2020-06-26 11:24:52","DeliveryStartDate":"2020-06-26 12:00:00","DeliveryEndDate":"2020-06-26 13:00:00","DeliveryStartEstimate":"","DeliveryEndEstimate":"","DeliveryDate":"","State":"Enlevé","WorkerShortCode":"710","WorkerSurname":"Laurent","Picture":"https:\\/\\/iris.coursier.fr\\/worker\\/view\\/710","ProofOfDelivery":"","DeliverySignee":""}\]</p>