Table des Matières
- Introduction
- Objectifs
- Récupération des étiquettes via API
- Endpoint API
Introduction
Le projet “Shipping 2.0” vise à fournir un service API performant pour la récupération rapide d’étiquettes de livraison ainsi que la gestion et la sauvegarde des commandes dite classiques.
L’objectif principal est d’assurer que la récupération des étiquettes se fasse de manière synchrone en un temps inférieur ou égal à 300ms via un endpoint POST/shipments et que les commandes dite classiques soient efficacement gérées et sauvegardées à la suite de cet appel.
Objectifs
1. Récupération d’étiquettes rapide : Assurer une réponse synchrone en moins de 300ms (en temps internes) pour la récupération des étiquettes de livraison.
2. Gestion efficace des commandes : Permettre la création, la mise à jour et la sauvegarde des orders.
3. Robustesse et Fiabilité : Assurer une haute disponibilité et un traitement fiable des demandes
Récupération des Étiquettes via API
1. Requête Client : Un client envoie une requête POST/shipments avec les détails nécessaires pour la génération d’une étiquette (en MVP ZPL A6 et service PICK_UP_POINT).
Nous pouvons récupérer une étiquette transporteur à la suite de la delivery côté transporteur ou la créer en interne (étiquette générique WOOP).
Pour ce faire, nous avons dû réaliser un travail d'architecture et de changements conséquents afin d'obtenir une étiquette de manière "synchrone" et surtout
{ "orderId": "string", "referenceNumber": "string", "storeId": "string", "exchangePlaceId": "string", "state": "TO_BE_COMPLETED", "delivery": { "location": { "type": "pickUpPoint", "id": "string", "carrierCode": "string", } }, "interval": [ { "start": "2019-12-04T12:30:00+0000", "end": "2019-12-04T14:30:00+0000" } ], "contact": { "firstName": "string", "lastName": "string", "phone": "string", "email": "string", "optIn": { "survey": [ "MAIL" ], "delivery": [ "MAIL" ] }, "language": "fr", "timezone": "Europe/Paris", "isProfessional": false, "companyName": "woop" } }, "packages": [ { "references": [ { "reference": "12345B", "barcode": { "value": "54fd56g4f5gfd456sd", "type": "barcode", "format": "128" }, "state": { "value": "ON_DOCK", "date": "2019-08-24T14:15:22Z" }, "containerId": { "trailerId": "string", "palletId": "string" } } ], "category": "string", "length": { "value": 0, "unit": "mm" }, "width": { "value": 0, "unit": "mm" }, "height": { "value": 0, "unit": "mm" }, "weight": { "value": 0, "unit": "kg" }, "products": [ { "type": "TYPOLOGY_GENERIC", "ean": "string", "cug": "string", "label": "string", "quantity": 1 } ], "quantity": 1, "attributes": { "footprint": { "value": 13, "unit": "m2" } }, "type": "PACKAGE", "volume": [ { "value": "15", "unit": "m3" } ] } ], "services": [ "SERVICE_PICK_UP_POINT" ], "productsPrice": { "value": 0, "currency": "EUR" }, "carrierCode": "string", }, }
2. Réponse : Le serveur API retourne l’étiquette générée au client en moins de 300ms ainsi que les informations ci dessous:
{
"order": {
"id": "string",
"referenceNumber": "string"
},
"delivery": {
"externalDeliveryId": "string"
},
"carrier": {
"name": "string",
"code": "string"
},
"parcels": {
"labels": {
"id": "string",
"type": "base64",
"mode": "zpl",
"value": "string",
"parcelId": "string"
}
}
}
Gestion des Commandes
1. Création de Commande : une commande dite classique est créée suite à un appel du POST/shipments qui regroupe toutes les données nécessaire à un suivi classique.
2. Sauvegarde dans la Base de Données : Enregistre dans les bases de données des différentes briques successives.
3. Confirmation : Le serveur retourne une confirmation de la commande au client ainsi que les informations nécessaires à cette delivery.
Endpoint API
• Description : Récupère une étiquette de livraison de manière synchrone.
• Méthode HTTP : POST
• URL : /shipments
Versions suivantes (non exhaustif):
- V1: ajout du fulfillmentId aux shipments + ajout type de palette (référentiel csv) + ajout du type adresse pour la delivery.