Aller au contenu

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).

asyncapi: 3.0.0
info:
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-ordres
defaultContentType: application/json
channels:
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.