Un phare est publié sur deux canaux et commandé sur l’un. Des heures passent avant l’emballage. S’il est commandé entre-temps sur le second canal, un acheteur doit essuyer un refus — et cela coûte plus que cette vente.
La réservation lie une pièce en stock concrète à une ligne de commande. Elle se termine consommée quand la marchandise part, ou libérée si la vente n’aboutit pas ; state connaît aussi la valeur expired. Les deux portent sur des quantités et figurent au journal.
| Surface | Rôles |
|---|---|
| Commerce | Commerce de pièces, Recycleurs automobiles |
Ce que ce cas suppose
- Une commande avec des lignes. La réservation exige
salesOrderIdetorderLineId; une réservation sans commande n’est pas prévue. - Une pièce en stock plutôt qu’une référence. On réserve un exemplaire concret avec
stockItemId. - La révision actuelle. Toute modification porte
expectedRevision. - Un canal qui prend en charge les réservations. Les capacités l’indiquent par canal.
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 |
|---|---|---|
| Réserver | POST /commerce/v1/inventory/reservations | stockItemId, salesOrderId et orderLineId, expiresAt en option |
| Vérifier l’état | GET /commerce/v1/inventory/reservations/{reservationId} | reservedQuantity, releasedQuantity et consumedQuantity |
| Consommer | POST /commerce/v1/inventory/reservations/{reservationId}/consume | reasonCode fulfilled quand la marchandise part |
| Libérer | POST /commerce/v1/inventory/reservations/{reservationId}/release | reasonCode order_cancelled ou expired si la vente n’aboutit pas |
| Lire le journal | GET /commerce/v1/inventory/ledger | réservation, consommation et libération comme écritures traçables |
Pourquoi chaque étape est nécessaire
- Réserver.
POST /commerce/v1/inventory/reservationsprendstockItemId,quantity,salesOrderId,orderLineId,expectedRevisionet en optionexpiresAt. Dès lors, la pièce est liée à cette ligne ; selon le contrat,availableQuantitydans le stock est dérivé en tenant compte des réservations actives. - Vérifier l’état.
GET /commerce/v1/inventory/reservations/{reservationId}indiqueinitialQuantity,reservedQuantity,releasedQuantity,consumedQuantityetstate. Avec plusieurs pièces, on voit ce qui reste lié. - Consommer.
POST /commerce/v1/inventory/reservations/{reservationId}/consumeprendquantity,reasonCode— à l’expéditionfulfilled— etexpectedRevision. On consomme quand la marchandise part, non quand la commande arrive. - Libérer.
POST /commerce/v1/inventory/reservations/{reservationId}/releaserend des quantités, par exemple avecorder_cancelled,order_changed,expiredoumanual_review. Une réservation jamais libérée bloque une pièce vendable sans acheteur. - Lire le journal.
GET /commerce/v1/inventory/ledgerconsigne réservation, consommation et libération comme écritures avecreservationId,quantityDeltaetbalance. Chaque mouvement d’une pièce unique s’explique ainsi plus tard.
curl -X POST \
-H 'X-Api-Key: <API_KEY>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: reservierung-4711-versand' \
-d '{"quantity":1,"reasonCode":"fulfilled","expectedRevision":"<revision>"}' \
'https://commerce-preview.invalid/commerce/v1/inventory/reservations/<reservationId>/consume'Ce que l’on obtient
Au final, reservedQuantity, releasedQuantity et consumedQuantity montrent quelle quantité reste liée, libérée ou consommée, et state indique l’état de la réservation. Qu’un second acheteur ait encore pu commander la pièce entre-temps dépend de la mise à jour à temps de l’offre sur le second canal.
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
Puis-je réserver sans commande ?
Non. La réservation exige salesOrderId et orderLineId ; elle lie une pièce à une ligne de commande concrète.
Quand consommer la réservation ?
Quand la marchandise part, avec reasonCode fulfilled. L’arrivée de la commande n’est pas encore une consommation.
Puis-je libérer une réservation en partie ?
Oui. Consommation et libération portent sur des quantités ; l’état montre ce qui est réservé, libéré et consommé.
