Protocole

Unités et formats

Centimes TTC, instants avec fuseau, identifiants stables, et ce que vaut un champ absent.

Une seule table, appliquée à chaque champ de chaque événement et de chaque réponse.

TypeRègle
Montantentier en centimes, TTC. Un montant HT porte un nom en *ExclVatCents. Sur un remboursement, négatif
Entiertient dans ±2 147 483 647, sinon too_large. La quantité d'une ligne de commande est gardée en millièmes, donc ±2 147 483
Texteplus long que sa colonne : too_long, le texte n'est pas coupé
Devisel'euro seulement
Quantitéentière. Pour le stock, ce qui peut se vendre maintenant (sur Sylius : onHand − onHold). Sur un remboursement, négative
InstantRFC 3339 avec un fuseau, microsecondes recommandées : 2026-10-30T14:02:11.482913+01:00. Sans fuseau, refusé ; plus de 5 minutes dans le futur, in_the_future
DateAAAA-MM-JJ
Identifiant^[A-Za-z0-9._-]{1,64}$, stable pour toujours. Les deux-points sont refusés
Identifiant d'événementun UUID neuf à chaque émission (Événements)
E-mailtel quel ; Kult Lab le normalise
TéléphoneE.164 de préférence ; un numéro national est lu avec le pays du commerce, un numéro illisible est écarté et signalé dans warnings[], l'événement passe

Absent ou null

Dans un événement, un champ absent et un champ à null veulent dire la même chose. Ce que cela veut dire dépend de l'événement :

  • Une déclaration complète dit tout de son objet, donc ce qu'elle omet n'existe pas. C'est le cas du bonjour, de order.upserted (sans customerId, une commande au nom de personne ; sans carrier, rien à expédier) et de category.upserted (sans parentId, une catégorie racine ; sans position, 0).
  • Tous les autres événements laissent la valeur connue en place : un champ absent veut dire « je ne le dis pas ». Vider une valeur enregistrée n'est pas possible dans cette version.

Deux valeurs par défaut sont écrites sur product.upserted : kind absent vaut simple, stockManaged absent vaut true.

Copyright © 2026