Un client met trois pièces au panier et saisit son numéro de châssis. Deux conviennent, une appartient à une autre motorisation de la même série. Si cela n’apparaît pas en caisse, cela apparaît au montage — et coûte alors port, retour, avoir et un client mécontent.
Le contrôle du panier prend tout le panier en un appel. Si le résultat est disponible aussitôt, il revient directement avec 200. Si un contrôle du véhicule ne peut pas être terminé immédiatement, l’API répond 202 avec un jobId, et le résultat est récupéré via l’endpoint de statut.
| Surface | Rôles |
|---|---|
| Hub | Commerce de pièces, Atelier, Plateforme et marketplace |
Ce que ce cas suppose
- Un numéro de châssis fourni par le client. Sans lui, aucune référence à contrôler.
- Les lignes du panier sous forme de références. Le texte libre n’est pas contrôlable ; d’où la normalisation en premier.
- Un endroit dans la caisse qui peut attendre le résultat. Si l’API répond
202, le résultat n’est disponible que via l’endpoint de statut — l’interface doit le refléter. - Une règle pour le cas `fits=false` avec `complete=false`. Autoriser avec avertissement ou bloquer : c’est une décision commerciale.
- Le droit d’interroger le véhicule. Par l’appel, vous confirmez être détenteur, propriétaire ou mandaté de façon prouvée, ou autrement habilité en droit, et utiliser le numéro de châssis exclusivement pour la finalité licite indiquée.
Le déroulement
Le tableau indique pour chaque étape l’appel compétent et ce qui existe ensuite. La justification de l’étape figure en dessous.
| Étape | Appel | Ce qui existe ensuite |
|---|---|---|
| Normaliser les références | GET /parts/oe/normalize | Les saisies manuelles deviennent un lookupKey par ligne |
| Contrôler le panier | POST /vin/cart-check | Un appel pour tout le panier ; 202 avec jobId seulement si le contrôle du véhicule ne s’achève pas aussitôt |
| Récupérer le résultat | GET /vin/cart-check/jobs/{jobId} | Par ligne fits, et complete pour tout le panier |
Pourquoi chaque étape est nécessaire
- Normaliser les références.
GET /parts/oe/normalizetransforme une saisie manuelle enlookupKey. Sans cette étape, on contrôle aussi tirets et espaces, et le panier échoue pour une question de forme. - Contrôler le panier.
POST /vin/cart-checkprend d’une à 30 lignes d’un coup dansoeNumbers, avecvinet le champ obligatoiremode(typeouvehicle). Un appel pour tout le panier remplace une requête par ligne ; la réponse conserve l’ordre et les doublons de l’entrée. - Récupérer le résultat. Après une réponse
202,GET /vin/cart-check/jobs/{jobId}renvoie le statut ; en cas desucceeded,resultcontientoeetfitspar ligne etcompletepour le panier. Sicomplete=false, un résultat négatif isolé n’est pas une exclusion définitive.
curl -X POST \
-H 'X-Api-Key: <API_KEY>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: korb-88213' \
-d '{"vin":"<VIN>","country":"de","mode":"vehicle","oeNumbers":["8K0959455K","1K0121207AK"]}' \
'https://api.tapinomahub.com/vin/cart-check'Ce que l’on obtient
Il reste une caisse qui avertit le client avant le paiement. Cela réduit le taux de retour, et du bon côté : non par des conditions de retour plus strictes, mais par moins de commandes erronées.
Où cela figure dans la documentation
Les listes de champs contractuelles, les codes d’erreur et les réponses d’exemple se trouvent dans le contrat OpenAPI de cette surface, à l’adresse docs.tapinomahub.com (tapinoma-hub). Tous les cas d’usage classés par surface et par rôle : aperçu des cas d’usage.
Sources et références juridiques
Questions fréquentes
Le résultat passe-t-il toujours par un travail ?
Non. Si le résultat est disponible aussitôt, il revient directement avec 200. Si un contrôle du véhicule ne peut pas être terminé immédiatement, l’API répond 202 avec un jobId, et le résultat est récupéré via l’endpoint de statut.
Qu’afficher au client en cas de résultat négatif avec une liste de pièces incomplète ?
Le constat lui-même : la liste de pièces n’était pas complète, et le résultat négatif n’est donc pas une exclusion définitive. Un « ne convient pas » global serait faux, un « convient » global serait risqué.
Puis-je lancer le contrôle la nuit sur les commandes ouvertes ?
Oui, chaque contrôle est un appel distinct. Si l’API répond 202, le résultat se récupère via GET /vin/cart-check/jobs/{jobId} ; le contrat ne définit pas de mode dédié aux traitements groupés.
