Commandes

Écritures

Les commandes qui écrivent chez vous, l'essai à blanc, et l'écriture conditionnelle du stock.

Chaque écriture attend que le commerçant ait armé l'envoi correspondant, et chacune accepte dryRun.

CommandeCapacitéEnvoi arméChargeRéponse
stock.setstock.writestock{ productId, quantity, expectedQuantity }{ quantity, at }
stock.restorestock.restorestock{ items: [même forme] }{ applied, failures[] }
product.suspend, product.resumeproduct.availabilitystock{ productId }{ available }
customer.createcustomers.writeclients{ customerKey, fields }{ customerId }
customer.updatecustomers.writeclients{ customerId, fields: { <champ>: { value, mode } } }{ customer }
loyalty.credit, loyalty.debitloyalty.writepoints{ 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 le customerId que 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: null veut 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.

Copyright © 2026