Tenir catalogue et stock, réserver les pièces uniquesTous les articles

Tenir catalogue et stock, réserver les pièces uniques

Dans le commerce de pièces d’occasion, presque chaque article est unique. Ce cas montre pourquoi article, pièce en stock et offre exigent des identités distinctes.

Publié: 2026-09-12Temps de lecture: 5 minAPI tapinomahub & processus
API & processusAftermarket automobileCommerce de piècesAPIMarketplacesPrix & évaluation

Un négociant de pièces d’occasion publie le même phare sur trois canaux. Mais il n’en a qu’un. Si la pièce se vend sur le canal un, deux offres doivent disparaître aussitôt — pas à la synchronisation nocturne, mais maintenant. Modéliser cela avec une référence et une quantité conduit tôt ou tard à une double vente.

Tenir catalogue et stock, réserver les pièces uniquesEntrée : articles et pièces en stock gérés séparément par canal jusqu’ici 1. Écrire l’article (PUT /commerce/v1/catalog/items/{catalogItemId}): merchantSku, condition, identifiers et compatibility en une version canonique 2. Comptabiliser le stock (POST /commerce/v1/inventory/batches): physicalQuantity et safetyStockQuantity groupés ; accepted et rejected indiqués en nombre 3. Réserver une pièce (POST /commerce/v1/inventory/reservations): Quantité d’une pièce en stock liée à une ligne de commande (salesOrderId, orderLineId) 4. Publier l’offre (PUT /commerce/v1/offers/{offerId}): price, connectionId et publicationState — l’offre est liée au canal, l’article non Sortie : une quantité disponible par pièce en stock, dérivée de la quantité physique, du stock de sécurité et des réservations actives Article, pièce en stock et offre sont des identités distinctes. Le contrat ne garantit pas que cette séparation exclut une double vente.Tenir catalogue et stock, réserver les pièces uniquesEntrée : articles et pièces en stock gérés séparément par canal jusqu’ici01Écrire l’articlePUT /commerce/v1/catalog/items/{catalogItemId}merchantSku, condition, identifiers et compatibility en une version canonique02Comptabiliser le stockPOST /commerce/v1/inventory/batchesphysicalQuantity et safetyStockQuantity groupés ; accepted et rejected indiqués en nombre03Réserver une piècePOST /commerce/v1/inventory/reservationsQuantité d’une pièce en stock liée à une ligne de commande (salesOrderId, orderLineId)04Publier l’offrePUT /commerce/v1/offers/{offerId}price, connectionId et publicationState — l’offre est liée au canal, l’article nonSortie : une quantité disponible par pièce en stock, dérivée de la quantité physique, du stock desécurité et des réservations activesArticle, pièce en stock et offre sont des identités distinctes. Le contrat ne garantit pas que cette séparationexclut une double vente.
Quatre appels, quatre identités. La réservation lie une quantité à une ligne de commande ; la réservation atomique n’est pas encore activée dans le contrat.

Le contrat sépare donc quatre choses que la pratique confond volontiers : l’article de catalogue comme description, la pièce en stock comme exemplaire concret, la réservation comme lien temporaire et l’offre comme publication liée au canal avec un prix.

SurfaceRôles
CommerceCommerce de pièces, Recycleurs automobiles, Plateforme et marketplace

Ce que ce cas suppose

  • Votre propre référence article. L’article de catalogue porte votre merchantSku ; c’est l’ancrage où votre système et le contrat se rencontrent.
  • Une distinction entre description et exemplaire. Un article de catalogue décrit, une pièce en stock existe. Si vous ne tenez que des articles, vous ne pouvez réserver de pièces uniques.
  • Une connexion par canal. L’offre renvoie à des connexions ; sans elles, une publication est sans objet.
  • Une révision à chaque écriture. Les champs de révision attendue empêchent deux modifications simultanées de s’écraser.

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.

La chaîne d’appels de ce cas d’usage
ÉtapeAppelCe qui existe ensuite
Écrire l’articlePUT /commerce/v1/catalog/items/{catalogItemId}merchantSku, condition, identifiers et compatibility en une version canonique
Comptabiliser le stockPOST /commerce/v1/inventory/batchesphysicalQuantity et safetyStockQuantity groupés ; accepted et rejected indiqués en nombre
Réserver une piècePOST /commerce/v1/inventory/reservationsQuantité d’une pièce en stock liée à une ligne de commande (salesOrderId, orderLineId)
Publier l’offrePUT /commerce/v1/offers/{offerId}price, connectionId et publicationState — l’offre est liée au canal, l’article non

Pourquoi chaque étape est nécessaire

  1. Écrire l’article. PUT /commerce/v1/catalog/items/{catalogItemId} enregistre la version canonique : merchantSku, condition, identifiers, compatibility, media et attributes. Canonique signifie indépendante de tout canal ; un changement de canal n’impose aucun renommage.
  2. Comptabiliser le stock. POST /commerce/v1/inventory/batches prend physicalQuantity et safetyStockQuantity en un lot. La réponse indique les nombres accepted et rejected et peut lister les erreurs dans errors.
  3. Réserver la pièce unique. POST /commerce/v1/inventory/reservations lie une quantité d’une pièce en stock concrète (stockItemId, quantity) à une ligne de commande ; salesOrderId et orderLineId sont obligatoires. Les réservations actives entrent dans la quantité disponible (availableQuantity) ; la réservation atomique n’est pas encore activée dans le contrat. Libérer et consommer sont des appels distincts.
  4. Publier l’offre. PUT /commerce/v1/offers/{offerId} relie stockItemId, connectionId, price et publicationState. L’offre est liée au canal, l’article non : le même article peut être à des prix différents sur deux canaux sans être décrit deux fois.
Écrire les variations de stock en un lot
curl -X POST \
  -H 'X-Api-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: bestand-2026-09-12-a' \
  -d '{"entries":[{"stockItemId":"<stockItemId>","physicalQuantity":1,"safetyStockQuantity":0,"expectedRevision":"<revision>"}]}' \
  'https://commerce-preview.invalid/commerce/v1/inventory/batches'

Ce que l’on obtient

Il reste un stock dont la quantité disponible découle de la quantité physique, du stock de sécurité et des réservations actives, et une pièce unique dont la réservation est liée à une ligne de commande et entre dans la quantité disponible. Description, exemplaire et prix se gèrent séparément — un changement de prix ne touche pas la description.

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-commerce). 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

Pourquoi pas simplement des articles avec une quantité ?

Parce qu’une pièce d’occasion est un exemplaire, non une quantité. Une pièce en stock se réserve et s’affecte à une commande ; une quantité ne peut que se décrémenter — et trop tard.

Le même article peut-il avoir deux prix sur deux canaux ?

Oui. Le prix est porté par l’offre, non par l’article. Une description suffit donc pour un nombre quelconque d’offres liées aux canaux.

Qu’advient-il d’une ligne rejetée dans le lot ?

La réponse compte les entrées rejetées dans rejected et les entrées acceptées dans accepted et peut lister les erreurs dans errors. Le contrat ne rattache pas les erreurs à des lignes précises et ne garantit pas la reprise des autres lignes.