Aller au contenu

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.

asyncapi: 3.0.0
info:
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/json
channels:
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