Écritures
Chaque écriture attend que le commerçant ait armé l'envoi correspondant, et chacune accepte
dryRun.
| Commande | Capacité | Envoi armé | Charge | Réponse |
|---|---|---|---|---|
stock.set | stock.write | stock | { productId, quantity, expectedQuantity } | { quantity, at } |
stock.restore | stock.restore | stock | { items: [même forme] } | { applied, failures[] } |
product.suspend, product.resume | product.availability | stock | { productId } | { available } |
customer.create | customers.write | clients | { customerKey, fields } | { customerId } |
customer.update | customers.write | clients | { customerId, fields: { <champ>: { value, mode } } } | { customer } |
loyalty.credit, loyalty.debit | loyalty.write | points | { customerId, points, reason, operationId } | { balance, at } |
L'essai à blanc
Une commande avec "dryRun": true valide, trouve l'objet, dit ce qui se passerait, et n'écrit
rien. C'est ainsi que Kult Lab vérifie une écriture sans toucher à votre boutique, avant même que
l'envoi soit armé.
- Un
customer.createà blanc rend lecustomerIdque vous donneriez, sans créer personne. - Un
customer.updateà blanc rend le client entier tel qu'il est. - La réponse d'un essai à blanc se garde sept jours comme les autres, avec le même
at.
stock.set : une écriture conditionnelle
expectedQuantity est la dernière quantité que Kult Lab tient de vous. N'écrivez que si ce qui peut
se vendre maintenant lui est encore égal. Sinon, refusez en rendant la quantité actuelle :
{ "ok": false, "error": "quantity_moved", "details": { "quantity": 11, "at": "2026-10-30T14:02:11.48+01:00" } }
Kult Lab lit ce refus comme une lecture de stock : il compte la vente arrivée entre-temps, puis renvoie la bonne quantité avec la bonne attente. Sans ce contrôle, une vente faite chez vous pendant l'envoi serait écrasée.
expectedQuantity: nullveut dire « écrivez sans comparer ».- La réponse
{ quantity, at }donne ce que vous avez réellement écrit, et l'instant. - Kult Lab n'envoie qu'un
stock.setà la fois par produit et attend sa réponse avant le suivant. - L'écriture ne produit pas d'événement
stock.changed(Pas d'écho).
customer.update
Chaque champ porte son mode : fill (remplir seulement s'il est vide chez vous) ou overwrite. La
réponse rend le client entier, que Kult Lab garde comme copie.
loyalty.credit et loyalty.debit
operationId identifie un mouvement du registre de Kult Lab : rendez l'écriture idempotente sur votre
propre table avec lui. Un débit au-delà du solde est refusé en insufficient.
Rien de destructif
La liste des commandes est fermée, et aucune ne supprime quoi que ce soit chez vous. stock.restore et
product.resume rendent la main sur ce que Kult Lab avait suspendu, notamment à la déconnexion.