evenements-du-compte
Événement (AsyncAPI) — version 0.3.0. Producteur : tenue-de-compte.
Les faits publiés par la tenue de compte quand l’état d’un compte change : ouvert, suspendu, remis en service, mis en clôture, clos. Un compte ne se supprime jamais, il se clôt — positions, lots, réservations et soldes nuls exigés, ou une décision prouvée sur chaque reste ; un compte clos ne se rouvre pas. Depuis la 0.2.0 (mineure, 2026-07-30), la suspension et la mise en clôture sont publiées : un compte suspendu refuse les mouvements, et l’ignorer conduirait un domaine amont à produire des faits voués au blocage. Chaque fait ne transporte que les identifiants : la fiche du compte se consulte (contrat consultation-des-entites), elle ne se duplique pas sur le bus.
La spécification
Section intitulée « La spécification »asyncapi: 3.0.0info: title: tenue-de-compte — les événements du cycle de vie du Compte version: 0.3.0 x-ruptures: - version: 0.3.0 rupture: "propriété retirée : tenant" motif: >- Isolation forte par tenant — aucun identifiant de tenant n'est transporté ; l'appartenance est celle de l'installation (précédent instruments 0.4.0). La déduplication devient compte × type — elle perd sa composante tenant. description: >- Les faits publiés par la tenue de compte quand l'état d'un compte change : ouvert, suspendu, remis en service, mis en clôture, clos. Un compte ne se supprime jamais, il se clôt — positions, lots, réservations et soldes nuls exigés, ou une décision prouvée sur chaque reste ; un compte clos ne se rouvre pas. Depuis la 0.2.0 (mineure, 2026-07-30), la suspension et la mise en clôture sont publiées : un compte suspendu refuse les mouvements, et l'ignorer conduirait un domaine amont à produire des faits voués au blocage. Chaque fait ne transporte que les identifiants : la fiche du compte se consulte (contrat consultation-des-entites), elle ne se duplique pas sur le bus. x-producteurs: - tenue-de-compte x-consommateurs: []defaultContentType: application/jsonchannels: compte: address: tenue-de-compte.compte description: >- Canal logique du cycle de vie des comptes de la tenue de compte. L'ordre n'est garanti que par producteur (sequence strictement croissant), jamais entre producteurs. messages: compteOuvert: $ref: '#/components/messages/compteOuvert' compteClos: $ref: '#/components/messages/compteClos' compteSuspendu: $ref: '#/components/messages/compteSuspendu' compteRemisEnService: $ref: '#/components/messages/compteRemisEnService' compteMisEnCloture: $ref: '#/components/messages/compteMisEnCloture'operations: publierLeCycleDeVieDuCompte: action: send channel: $ref: '#/channels/compte' summary: La tenue de compte publie un événement par changement d'état d'un compte. messages: - $ref: '#/channels/compte/messages/compteOuvert' - $ref: '#/channels/compte/messages/compteClos' - $ref: '#/channels/compte/messages/compteSuspendu' - $ref: '#/channels/compte/messages/compteRemisEnService' - $ref: '#/channels/compte/messages/compteMisEnCloture'components: messages: compteOuvert: name: compte-ouvert title: Compte ouvert summary: Un compte a été ouvert au plan du tenant. contentType: application/json payload: $ref: '#/components/schemas/evenementCompteOuvert' compteClos: name: compte-clos title: Compte clos summary: >- Un compte a été clos — définitivement : positions, lots, réservations et soldes nuls, ou une décision formelle et prouvée sur chaque reste (0.2.0 — l'exigence s'étend aux lots et aux réservations). contentType: application/json payload: $ref: '#/components/schemas/evenementCompteClos' compteSuspendu: name: compte-suspendu title: Compte suspendu summary: >- 0.2.0 — le compte refuse les mouvements sans rien effacer ; un domaine amont averti cesse de produire des faits voués au blocage. contentType: application/json payload: $ref: '#/components/schemas/evenementCompteSuspendu' compteRemisEnService: name: compte-remis-en-service title: Compte remis en service summary: 0.2.0 — la suspension est levée, le compte accepte de nouveau les mouvements. contentType: application/json payload: $ref: '#/components/schemas/evenementCompteRemisEnService' compteMisEnCloture: name: compte-mis-en-cloture title: Compte mis en clôture summary: >- 0.2.0 — l'examen des restes est ouvert ; le retour à l'état ouvert n'est pas une réouverture, c'est le constat qu'il restait quelque chose à traiter. contentType: application/json payload: $ref: '#/components/schemas/evenementCompteMisEnCloture' schemas: socleDEvenement: type: object # Les consommateurs sont tolérants : un champ inconnu s'ignore — # le schéma n'interdit donc pas les propriétés additionnelles. required: - type_evenement - version_contrat - sequence - compte - produit_le properties: version_contrat: type: string description: La version sémantique du présent contrat (celle de ce fichier). sequence: type: integer minimum: 1 description: >- Le numéro de séquence chez le producteur — strictement croissant, fourni par la boîte d'envoi ; un consommateur y détecte un manque ou un désordre. compte: type: string minLength: 1 description: >- L'identifiant public du compte dont l'état a changé — avec le type, l'identifiant unique de déduplication des consommateurs (un compte s'ouvre une fois, se clôt une fois). produit_le: type: string format: date-time description: L'instant de la retenue de l'événement (UTC) — la survenance du fait. evenementCompteOuvert: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object properties: type_evenement: const: compte-ouvert evenementCompteClos: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object properties: type_evenement: const: compte-clos evenementCompteSuspendu: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object properties: type_evenement: const: compte-suspendu evenementCompteRemisEnService: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object properties: type_evenement: const: compte-remis-en-service evenementCompteMisEnCloture: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object properties: type_evenement: const: compte-mis-en-cloture