Drivoo propose une API simple pour créer des demandes de courses
Vous pouvez vous servir de cette API pour utiliser les fonctionnalités de Drivoo en plus des interfaces fournies par Drivoo.
Les utilisations les plus fréquentes de l'API concernent :
Une de demande de course est une requête permattant de signifier une livraison d'un point physique vers un client final à une heure définie à l'avance.
Drivoo met à disposition une API HTTP RESTful, ce qui signifie que le traitement d'une requête sera dépendant de l'ensemble des éléments suivants :
Les API HTTP RESTful donnent un sens très précis à chaque méthode HTTP, comme expliqué sur cette page wikipedia.
Dans la suite de cette documentation, les appels à l'API seront toujours présentés de la façon suivante :
1 | POST /api/v1/ressource.format?x=y&w=z |
2 |
{ "clé": "valeur" ... } |
1 La première ligne indique la méthode HTTP utilisée (dans l'exemple POST
), suivie d'un espace, puis de l'URL appelée sur l'API (dans l'exemple /api/ressource?x=y&w=z
).
Pour la clarté de la présentation, l'URL est volontairement raccourcie. Elle contient :
/api/ressource
,?x=y&w=z
.Lors de votre utilisation de l'API vous devrez compléter cette URL, selon le cas, avec l'URL de base de production ou bien de test/recette (voir rubriques ci-dessous).
Ex: /course
deviendra https://api.drivoo.com/course
en production.
Vous devrez également veiller à passer en paramètre toutes les informations utiles concernant l'authentification (clé API), la pagination, lesformats, etc.
Note Lorsque l'URL contient des mots clés précédés d'un caractère :
, ils sont à remplacer par des valeurs correspondant à votre cas d'utilisation. Par exemple l'URL /course/:course_id
contient un mot clé :course_id
, que vous devrez remplacer par une valeurs numérique, par exemple /course/4
.
2 La deuxième ligne et les lignes suivantes, lorsqu'elles sont présentes dans l'exemple, correspondent au contenu du "body" de la requête (requêtes de type POST ou PUT).
Pour utiliser l'API en production, l'URL de base est :
https://api.drivoo.com
Important A terme L'API fonctionnera exclusivement en HTTPS (port 443). Si vous essayez d'utiliser l'API en HTTP, vous obtiendrez un message d'erreur.
Si votre utilisation de l'API nécessite l'accès en écriture, il est préférable de développer l'application sur notre plateforme de test.
L'URL de base devient alors :
http://sandbox.drivoo.com
Important La clé API, nécessaire pour tous les appels API, n'est pas la même que la clé API de production.
Atuellement, l'API Drivoo permet de récupérer les données dans le format : json
.
Important Les requêtes d'écritures à l'API (requêtes HTTP utilisant la méthode POST), doivent contenir le header Content-Type
correspondant au format des données envoyées dans le corps de la requête (body).
application/json
application/x-www-form-urlencoded
Pour effectuer des requêtes à l'API, vous aurez besoin :
Pour obtenir ces identifiants, veuillez nous contacter par mail jerome@drivoo.fr
POST http://api.drivoo.com/oauth { "grant_type": "client_credentials", "client_id":"testclient", "client_secret":"testpass" }
Important N'oubliez pas de spécifier dans le header le Content-type à application/json
Le serveur OAuth2 renvoie une réponse avec le token dans la structure JSON suivante :
{ "access_token":"8ed2b8d7f1210a39432a2fa2c41ecbb334de6f59", "expires_in":36000, "token_type":"Bearer", "scope":null }
OAuth2 est basé sur l'échange d'un token entre le client et la ressource appelée.
Ce token sert à authentifier tous les appels à l'API au travers du HTTP Header.
Authorization: Bearer RsT5OjbzRn430zqMLgV3Ia
Tous les codes du standard HTTP sont respectés au maximum. Le code de réponse HTTP est contenu dans l’entête HTTP, et non dans le contenu de la réponse. La récupération de ce code dépend donc du client HTTP utilisé.
Tous les autres codes indiquent que quelque chose s’est mal passé.
Les codes d’erreurs que vous êtes susceptibles de voir sont :
Les réponses sur les ressources collection sont paginées. (Par défaut, l’API Drivoo renvoie les 25 premiers éléments.)
La réponse contient donc des informations relatives à la pagination, mais aussi au tri :
Champ | Type | Description |
---|---|---|
num_found | integer | Nombre total d’éléments correspondant aux filtres |
num_returned | integer | Nombre d’éléments retournés dans la liste |
pageCount | integer | Nombre de pages |
itemCountPerPage | integer | Nombre d’éléments par page |
first | integer | Index de la première page |
current | integer | Index de la page courante |
last | integer | Index de la dernière page |
next | integer | Index de la page suivante |
Important Les options ci-dessous sont disponibles uniquement sur les URLs de type "collection" (listes).
Par défaut, l’API de Drivoo propose une pagination de toutes les ressources « collection » limitée à 25 éléments.
Champ | Type | Description |
---|---|---|
order_by | String | Nom du champ sur lequel effectuer le filtre. |
order | String | Sens du tri ASC ou DESC |
page | integer | Page à récupérer. |
Exemple :
GET https://api.drivoo.com/course?page=3&per_page=25&sort=id
Les attributs ci-dessous sont communs à toutes les ressource de type member, et sont accessibles en lecture uniquement.
Attribut | Type | Description |
---|---|---|
id | integer | Identifiant de la ressource member |
created_at | datetime | Date de création de la ressource, ex: "2010-01-22 20:25:20" |
updated_at | datetime | Date de dernière modification de la ressource, ex: "2010-01-22 20:25:20" |
Une course peut passer par les différents suivants:
Etats | Description |
---|---|
created | Course créé et disponible |
assigned | Course assigné à un driver |
in_transit | En cours de livraison |
delivered | Colis livré |
returned | Colis retourné |
canceled | Course annulée |
Un colis représente un objet à livrer pour un client donné.
Champ | Type | Description |
---|---|---|
id | int | Identifiant du colis. |
description | String | Description |
poids | String | Poids du colis |
hauteur | int | |
largeur | int | |
profondeur | int | |
course_id | int | La course à laquelle appartient le colis |
type | int | Type de colis |
Un driver représente une personne physique pouvant effectuer la livraison de colis.
Champ | Type | Description |
---|---|---|
id | int | Identifiant du driver. |
nom | String | Nom du driver |
Prénom | String | Prénom du driver |
String | Adresse email du compte drivoo | |
mobile | String | Numéro de mobile |
latitude | String | Position du driver |
longitude | String | Position du driver |
photo | String | Photo du driver |
note | int | Note moyenne attribuée par les clients |
POST /course
Champ | Type | Description |
---|---|---|
retailer_id | int | (Required) Id du retailer ou le colis doit être récupéré. |
client | Client | (Required) Un objet client |
date_dispo | date | (Required) Date et heure de mise à dispo du colis |
colis | array | (Required) Liste du ou des colis |
commentaire_retailer | string | (Optionnel) Instructions spéciales pour récupérer le colis |
commentaire_client | string | (Optionnel) Instructions spéciales pour déposer le colis. |
En cas de succès, le code HTTP renvoyé est 201 Created. En cas d'erreur, un code HTTP 400
est renvoyé.
POST https://api.drivoo.com/course $ curl –X POST https://api.drivoo.com/course --header "Content-Type:application/json" --data '{ "retailer_id":"99999", "date_debut":"2014-10-04T20:15:00.000Z", "commentaire_retailer":"ici le commentaire", "commentaire_client":"Sonnez Porte 1, bat B", "delai":"2", "client":{"address":"54 av Winston Churchill, 31770, Colomiers, France","nom":"Mme Michu","mobile":"0651451225"}, "colis":[ { "description":"colis fragile","typecolis":"2" } ] }'
Important : Une course doit posséder au moins un colis.
PUT /course/:id
Champ | Type | Description |
---|---|---|
client | Client | (Required) Un objet client |
date_dispo | date | (Required) Date et heure de mise à dispo du colis |
colis | array | (Required) Liste du ou des colis |
commentaire_retailer | string | (Optionnel) Instructions spéciales pour récupérer le colis |
commentaire_client | string | (Optionnel) Instructions spéciales pour déposer le colis. |
En cas de succès, le code HTTP renvoyé est 201 Created. En cas d'erreur, un code HTTP 400
est renvoyé.
$ curl –X PUT https://api.drivoo.com/course/1526 --header "Content-Type:application/json" --data '{ "commentaire_client": "Saisir le code 1254 pour ouvrir la porte" }'
GET /course
Important:
Par défaut, toutes les courses sont retournés.
Pour obtenir seulement les courses disponibles, il suffit de passer le paramètre ?etat=created
Voir la liste des états d'une course
{ "id": "107", "date_debut": "2014-10-28 14:52:00", "delai": "2", "etat": "created", "retailer_adresse": "Simorre", "retailer_nom": "martin", "retailer_societe": "Decathlon", "retailer_lat": "43.5293972", "retailer_long": "1.404874299", "retailer_photo": "photo-mag-1268526336_54350b9a1b7ee.jpg", "driver_adresse": null, "driver_nom": null, "driver_prenom": null, "client_adresse": "Place du Capitole, Toulouse, France", "client_nom": "ytytfut", "client_prenom": null, "client_lat": "43.6044328", "client_long": "1.443463" }, ........
DELETE /course/:id
En cas de succès, le code HTTP renvoyé est 204 No Content. En cas d'erreur, un code HTTP 400
est renvoyé.
Un retailer représente une entité physique ou un commerçant, ou les drivers récupèrent les colis pour vos clients.
Champ | Type | Description |
---|---|---|
id | int | Identifiant du retailer. |
nom | String | Nom du contact chez le retailer |
Prénom | String | Prénom du contact chez le retailer |
societe | String | Nom commercial |
String | Adresse email du compte du retailer | |
mobile | String | Téléphone |
adresse | String | Adresse physique complète du retailer |
latitude | String | Position géographique |
longitude | String | Position géographique |
photo | String | Photo du point de retrait |
GET /retailer
Important:
Retourne une liste paginable de retailers.
"retailer": [ { "id": "1", "nom": "test", "prenom": "eric", "societe": "Allard Fleur", "email": "allard@gmail.com", "mobile": null, "adresse": "869 ru de championnet , la seyne sur mer", "latitude": "", "longitude": "", "ville_id": null, "photo": null, "user_id": "1", "password": "", "created": "0000-00-00 00:00:00", "_links": { "self": { "href": "http://api.drivoo.com/retailer/1" } } }, { "id": "2", "nom": "martin2", "prenom": "eric2", "societe": "Allard Fleur2", "email": "allard@gmail.com", "mobile": null, "adresse": null, "latitude": "", "longitude": "", "ville_id": null, "photo": null, "user_id": "0", "password": "", "created": "0000-00-00 00:00:00", "_links": { "self": { "href": "http://api.drivoo.com/retailer/2" } } }, ........ ]
GET /retailer/:id
GET https://api.drivoo.com/course/1
Retourne :
{ "id": "1", "nom": "test", "prenom": "eric", "societe": "Allard Fleur", "email": "allard@gmail.com", "password": "", "mobile": null, "adresse": "869 ru de championnet , la seyne sur mer", "latitude": "", "longitude": "", "ville_id": null, "photo": null, "user_id": "1", "_links": { "self": { "href": "http://api.drivoo.com/retailer/1" } } }