evenements-du-cre
Événement (AsyncAPI) — version 0.3.0, convergé. Producteur : tenue-de-compte. Consommateurs déclarés : carnet-ordres.
Les faits publiés par la tenue de compte quand l’état d’un CRE (compte rendu d’événement) change : comptabilisé, rejeté, bloqué, extourné. Chaque fait dit que le changement a eu lieu et comment le retrouver ; aucun ne transporte les écritures ni les positions. Garanties (notice) : jamais de faux positif (boîte d’envoi), livraison au moins une fois, exactement un événement par fait (unicité tenant × clé × type), ordre par producteur (sequence).
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 CRE version: 0.3.0 description: >- Les faits publiés par la tenue de compte quand l'état d'un CRE (compte rendu d'événement) change : comptabilisé, rejeté, bloqué, extourné. Chaque fait dit que le changement a eu lieu et comment le retrouver ; aucun ne transporte les écritures ni les positions. Garanties (notice) : jamais de faux positif (boîte d'envoi), livraison au moins une fois, exactement un événement par fait (unicité tenant × clé × type), ordre par producteur (sequence). x-producteurs: - tenue-de-compte x-consommateurs: - composant: carnet-ordresdefaultContentType: application/jsonchannels: cre: address: tenue-de-compte.cre description: >- Canal logique du cycle de vie des CRE de la tenue de compte. L'ordre n'est garanti que par producteur (sequence strictement croissant), jamais entre producteurs. messages: creComptabilise: $ref: '#/components/messages/creComptabilise' creRejete: $ref: '#/components/messages/creRejete' creBloque: $ref: '#/components/messages/creBloque' creExtourne: $ref: '#/components/messages/creExtourne'operations: publierLeCycleDeVieDuCre: action: send channel: $ref: '#/channels/cre' summary: La tenue de compte publie un événement par changement d'état d'un CRE. messages: - $ref: '#/channels/cre/messages/creComptabilise' - $ref: '#/channels/cre/messages/creRejete' - $ref: '#/channels/cre/messages/creBloque' - $ref: '#/channels/cre/messages/creExtourne'components: messages: creComptabilise: name: cre-comptabilise title: CRE comptabilisé summary: Un CRE a été comptabilisé — la pièce est inscrite au livre. contentType: application/json payload: $ref: '#/components/schemas/evenementCreComptabilise' creRejete: name: cre-rejete title: CRE rejeté summary: Un CRE a été rejeté — verdict terminal, motivé. contentType: application/json payload: $ref: '#/components/schemas/evenementCreRejete' creBloque: name: cre-bloque title: CRE bloqué summary: >- Un CRE a été bloqué — motivé, en attente d'une reprise ; sa comptabilisation ultérieure publiera « CRE comptabilisé ». contentType: application/json payload: $ref: '#/components/schemas/evenementCreBloque' creExtourne: name: cre-extourne title: CRE extourné summary: >- Un CRE comptabilisé a été extourné — le fait désigne la cible et porte la causalité (le CRE compensateur, lui-même comptabilisé). contentType: application/json payload: $ref: '#/components/schemas/evenementCreExtourne' 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 - tenant - cre - cle_idempotence - 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. tenant: type: string minLength: 1 description: Le teneur de compte — la muraille de Chine. cre: type: string minLength: 1 description: L'identifiant du CRE dont l'état a changé (celui du producteur amont). cle_idempotence: type: string minLength: 1 description: >- La clé de la livraison à l'origine du fait — avec le tenant et le type, l'identifiant unique de déduplication des consommateurs. produit_le: type: string format: date-time description: L'instant de la retenue de l'événement (UTC) — la survenance du fait. evenementCreComptabilise: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object required: [nombre_ecritures] properties: type_evenement: const: cre-comptabilise nombre_ecritures: type: integer minimum: 1 description: Le nombre d'écritures de la pièce inscrite. evenementCreRejete: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object required: [motif] properties: type_evenement: const: cre-rejete motif: type: string minLength: 1 description: Le motif du rejet, tel que le livre l'a prononcé. evenementCreBloque: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object required: [motif] properties: type_evenement: const: cre-bloque motif: type: string minLength: 1 description: Le motif du blocage — la reprise est possible quand les conditions changent. evenementCreExtourne: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object required: [cause] properties: type_evenement: const: cre-extourne cre: type: string minLength: 1 description: L'identifiant du CRE extourné — la cible. cause: type: string minLength: 1 description: >- La référence de causalité — l'identifiant du CRE compensateur dont la comptabilisation a produit l'extourne ; cle_idempotence est la clé de ce compensateur.