Implémentation standard
L'implémentation de Cocolis se fait en général en respectant ces étapes :
1. Principe général
Voici un schéma des échanges entre votre site et l'API Cocolis :

Le prélèvement du montant de la livraison est effectué sur le compte MangoPay associé à votre compte Cocolis. Il est déclenché lors de la confirmation de la livraison par le transporteur, c’est à dire lorsque la “Ride” passe en statut “completed”.
2. Inscription pour un compte développeur
Inscrivez-vous sur cocolis.fr/developer-sign-up. Une fois connecté, suivez les étapes et remplissez les informations demandées.
Il vous suffira ensuite de créer une clé API depuis votre espace clés API.
3. Authentification
Toutes les requêtes API doivent être authentifiées via une clé API passée en header de toutes vos requêtes pour pouvoir accéder aux ressources.
Pour comprendre le fonctionnement de l'authentification, reportez vous à la rubrique dédiée.
5. Eligibilité d'une livraison
Tous nos prix sont en centimes
Afin de simuler une livraison non éligible en sandbox, utilisez comme code postal d'arrivée 15000
Calcul du volume final : Le calcul du volume final de l'annonce suit la règle suivante par ordre de priorité :
- Somme de la clée
volume_in_m3des rides objects - Calcul du volume à partir des dimensions des rides_objects :
(width * length * height * quantity) - Conversion du
formaten m3 - Prise en compte de la clée
volumesur la ride
- Doc
- Réponse
- Essayez-la
Pour savoir si la livraison Cocolis est éligible d'un point A à un point B, il faut appeler l'URL :
POST /api/v1/rides/can_match
{
"title": "Response",
"type": "object",
"properties": {
"from": {
"type": "object",
"properties": {
"postal_code": {
"type": "string",
"description": "Code postal du point de départ"
}
},
"required": [
"postal_code"
]
},
"to": {
"type": "object",
"properties": {
"postal_code": {
"type": "string",
"description": "Code postal du point d'arrivée"
}
},
"required": [
"postal_code"
]
},
"volume": {
"type": "number",
"description": "Somme des volumes en m3 des produits à livrer. Privilégiez plutôt le champ 'objects'"
},
"objects": {
"type": "array",
"description": "Dimensions et quantité des objets à livrer ! !!! Si le paramètre volume est défini, c'est le volume calculé des objets qui sera utilisé en priorité !!!!",
"items": {
"type": "object",
"properties": {
"height": {
"type": "number",
"description": "Hauteur en cm"
},
"width": {
"type": "number",
"description": "Largeur en cm"
},
"length": {
"type": "number",
"description": "Longueur en cm"
},
"volume_in_m3": {
"type": "number",
"description": "Volume en m3 !!! ne sera pas multiplié par la quantité !!!"
},
"qty": {
"type": "integer",
"description": "Quantité"
}
}
}
},
"content_value": {
"type": "number",
"description": "Valeur de la livraison en Centimes (Valeur de la commande). Utilisé pour le montant de l'assurance"
}
},
"required": [
"from",
"to",
"volume",
"content_value"
]
}
Pour avoir une gestion plus fine des prix, vous pouvez envoyer les dimensions exactes en centimètres des produits à livrer dans la clé objects de l'appel can_match
{
"title": "Response",
"type": "object",
"properties": {
"result": {
"type": "boolean"
"description": "Cocolis peut réaliser la livraison"
},
"estimated_prices": {
"type": "object",
"properties": {
"with_insurance": {
"type": "number",
"description": "Prix avec assurance"
},
"regular": {
"type": "number",
"description": "Dans le cas ou l'assurance est optionnel, prix sans assurance. Pour les marketplace avec assurance inclus, ce prix inclue l'assurance"
}
}
},
"insurance_detail": {
"type": "object",
"description": "Informations de l'assurance si il y en a une",
"properties": {
"amount": {
"type": "number",
"description": "Montant assuré en !! CENTIMES !!"
},
"conditions_url": {
"type": "number",
"description": "Liens vers les conditions générales de l'assurance"
}
}
},
"rider_count": {
"type": "number",
"description": "Le nombre de porteur déjà disponibles pour effectuer la livraison"
},
"riders_from_similar_offers": {
"type": "number",
"description": "Le nombre de porteur potentiel pour effectuer la livraison"
}
}
}
{
"method": "post",
"url": "https://api.cocolis.fr/api/v1/rides/can_match",
headers: {
Content-Type: application/json,
token-type: Bearer,
uid: uid_of_previous_request,
access-token: access_token_of_previous_request,
client: client_of_previous_request,
expiry: expiry_of_previous_request
},
body: {
from: {
postal_code: 'code_postal_de_depart',
},
to: {
postal_code: 'code_postal_d_arrivee',
},
objects: [
{
height: 10,
width: 20,
length: 120
}
],
content_value: 20000
}
}
6. Création d'une annonce :
Tous nos prix sont en centimes
N'oubliez pas de spécifier la valeur de external_id (généralement votre identifiant de commande) afin de pouvoir relier les webhooks avec votre commande.
Quand une vente a été réalisée sur votre site avec notre mode de livraison, il faut ensuite la créer sur Cocolis. Nous vous recommandons de la créer 30 minutes après le paiement pour gérer des cas d'annulation rapide sur votre site.
- Doc
- Réponse
- Essayez-la
POST https://api.cocolis.fr/api/v1/rides
{
"type": "object",
"description": "Body de la requête",
"properties": {
"ride": {
"$ref": "../models/ride/ride-create.v1.json"
}
}
}
{
"description": "Réponse",
"$ref": "../models/ride/ride-full.v1.json"
}
{
"method": "post",
"url": "https://api.cocolis.fr/api/v1/rides",
headers: {
Content-Type: application/json,
token-type: Bearer,
uid: uid_of_previous_request,
access-token: access_token_of_previous_request,
client: client_of_previous_request,
expiry: expiry_of_previous_request
},
body: {
ride: {
"description": "description de l'objet",
"from_lat": "43.212498",
"to_lat": "43.599120",
"from_address": "Carcassonne",
"to_address": "Toulouse",
"from_lng": "2.350351",
"to_lng": "1.444391",
"from_is_flexible": true,
"from_pickup_date": "2020-04-13T14:21:21+00:00",
"to_is_flexible": true,
"to_pickup_date": "2020-04-13T14:21:21+00:00",
"is_passenger": false,
"is_packaged": false,
"content_value": 15000,
"price": "57000",
"seller_participation": 0,
"environment": "objects",
"from_need_help": "false",
"from_need_help_floor": "0",
"from_need_help_elevator": "false",
"from_need_help_furniture_lift": "false",
"to_need_help": "false",
"to_need_help_floor": "0",
"to_need_help_elevator": "false",
"to_need_help_furniture_lift": "false",
"rider_extra_information": "Extra informations",
"photos": [],
"ride_objects_attributes": [
{
"title": "Canapé",
"qty": 1,
"format": "xxl"
}
],
"ride_delivery_information_attributes": {
"from_address": "1 rue de rivoli",
"from_postal_code": "75001",
"from_city": "Paris",
"from_country": "FR",
"from_contact_name": "Jean",
"from_contact_phone": "+33 6 66 66 66 66",
"from_contact_email": "test@example.com",
"to_address": "1 boulevard des Belges",
"to_postal_code": "69006",
"to_city": "Lyon",
"to_country": "FR",
"to_contact_name": "Claude",
"to_contact_phone": "+33 6 77 77 77 77",
"to_contact_email": "test2@example.com"
},
"external_id": "ABC_123"
}
}
}
La Ride est en status published. N'oubliez pas d'implémenter le webhook ride_published !
Quand un transporteur se proposera, l'expéditeur et le destinataire recevront des SMS et mails pour accepter ou refuser le créneaux de passage.
7. Suivi de la livraison par votre site
A chaque changement de statut de l'annonce sur Cocolis, notre système vous enverra des webhooks Voir documentation détaillée aux URLs que vous avez spécifiées. De cette manière, vous pourrez suivre les différentes étapes de la livraison.
Dans la documentation détaillée, nous vous donnons un exemple des actions à mettre en place de votre coté selon l'évènement.
8. Suivi de la livraison par le destinataire
Le destinataire dispose d'une interface dédiée pour le suivi de la livraison. Lors de la création de l'annonce, nous vous avons retourné un buyer_tracking qui est un code de suivi pour votre destinataire. Il permet de construire l'URL de suivi qui prend la forme suivante :
https://:domain/tracking/recipient/:tracking_code
- Paramètres
- Exemples
| Paramètre | Valeur | Commentaire |
|---|---|---|
| :domain | www.cocolis.fr | En sandbox, le domaine sera sandbox.cocolis.fr |
| :tracking_code | ride.buyer_tracking | Lors de la création de la ride, nous vous avons renvoyé ce paramètre dans la clé buyer_tracking |
Nous vous conseillons de remonter ce lien de tracking sur la page de suivi de commande de votre client.
8.1 Documents de facturation du destinataire
Le buyer_tracking vous permet également de générer les documents de facturation du destinataire en format PDF. Cela se fait via une URL qui prend la forme suivante et qui déclenchera le téléchargement du PDF :
https://:domain/cocolis-api/rides/recipient/:tracking_code/billing_document
- Paramètres
- Exemples
| Paramètre | Valeur | Commentaire |
|---|---|---|
| :domain | www.cocolis.fr | En sandbox, le domaine sera sandbox.cocolis.fr |
| :tracking_code | ride.buyer_tracking | Lors de la création de la ride, nous vous avons renvoyé ce paramètre dans la clé buyer_tracking |
Nous vous conseillons d'afficher un lien "Téléchargez la facture" information sur la page de suivi de commande de votre client. Ce bouton est disponible sinon sur la page de tracking mentionnée plus haut.
9. Suivi de la livraison par l'expéditeur
L'expéditeur dispose d'une interface dédiée pour suivre la livraison. Lors de la création de l'annonce, nous retournons un seller_tracking qui est un code de suivi pour votre expéditeur. Il permet de construire l'URL de suivi qui prend la forme suivante :
https://:domain/tracking/sender/:seller_tracking
- Paramètres
- Exemples
| Paramètre | Valeur | Commentaire |
|---|---|---|
| :domain | www.cocolis.fr | En sandbox, le domaine sera sandbox.cocolis.fr |
| :seller_tracking | ride.seller_tracking | Lors de la création de la ride, nous vous avons renvoyé ce paramètre dans la clé seller_tracking |
Nous vous conseillons de remonter ce lien de tracking sur la page de suivi de commande de votre client.
9.1 Documents de facturation de l'expéditeur
Le seller_tracking vous permet également de générer les documents de facturation de l'acheteur en format PDF. Cela se fait via une URL qui prend la forme suivante et qui déclenchera le téléchargement du PDF :
https://:domain/cocolis-api/rides/sender/:seller_tracking/billing_document
- Paramètres
- Exemples
| Paramètre | Valeur | Commentaire |
|---|---|---|
| :domain | www.cocolis.fr | En sandbox, le domaine sera sandbox.cocolis.fr |
| :seller_tracking | ride.seller_tracking | Lors de la création de la ride, nous vous avons renvoyé ce paramètre dans la clé seller_tracking |
Nous vous conseillons d'afficher un lien "Téléchargez la facture" information sur la page de suivi de commande de votre client. Ce bouton est disponible sinon sur la page de tracking mentionnée plus haut.