Aller au contenu

evenement-d-instrument

Événement (AsyncAPI) — version 0.1.0, convergé 0.1.0 — validé par François le 2026-07-18. Producteur : instruments. Consommateurs déclarés : operations.

Les faits du cycle d’un événement de la vie d’un instrument — annoncé, prononcé (les caractéristiques arrêtées et figées, la charge typée par le type d’événement), dénoué, annulé (avant le prononcé seulement). Émis une seule fois par tenant et par fait (amendement du 2026-07-18 — cloisonnement strict), jamais par porteur : la déclinaison par porteur appartient aux consommateurs, cloisonnée. Le mécanisme d’une OST n’émet aucun ordre — l’événement porte tout ce que la déclinaison exige.

asyncapi: 3.0.0
info:
title: instruments — l'événement d'instrument (le cycle des OST)
version: 0.1.0
description: >-
Les faits du cycle d'un événement de la vie d'un instrument — annoncé,
prononcé (les caractéristiques arrêtées et figées, la charge typée par le type
d'événement), dénoué, annulé (avant le prononcé seulement). Émis une seule fois par
tenant et par fait (amendement du 2026-07-18 — cloisonnement strict), jamais par
porteur : la déclinaison par porteur appartient aux consommateurs, cloisonnée. Le
mécanisme d'une OST n'émet aucun ordre — l'événement porte tout ce que la
déclinaison exige.
x-producteurs:
- instruments
x-consommateurs:
- composant: operations
defaultContentType: application/json
channels:
evenement:
address: instruments.evenement
description: >-
Canal logique du cycle des événements d'instrument. L'ordre du cycle est garanti
par entité (sequence par producteur) ; unicité tenant × événement × type de fait.
messages:
evenementAnnonce:
$ref: '#/components/messages/evenementAnnonce'
evenementPrononce:
$ref: '#/components/messages/evenementPrononce'
evenementDenoue:
$ref: '#/components/messages/evenementDenoue'
evenementAnnule:
$ref: '#/components/messages/evenementAnnule'
operations:
publierLeCycleDesEvenements:
action: send
channel:
$ref: '#/channels/evenement'
summary: Le référentiel des instruments publie un fait par transition du cycle.
description: >-
Chaque transition est un fait au passé, retenu en boîte d'envoi dans la
transaction qui le produit ; livraison au moins une fois, consommateurs
idempotents ; un cycle ne publie jamais deux fois la même transition.
messages:
- $ref: '#/channels/evenement/messages/evenementAnnonce'
- $ref: '#/channels/evenement/messages/evenementPrononce'
- $ref: '#/channels/evenement/messages/evenementDenoue'
- $ref: '#/channels/evenement/messages/evenementAnnule'
components:
messages:
evenementAnnonce:
name: evenement-annonce
title: Événement annoncé
summary: La décision est annoncée — calendrier connu, caractéristiques non figées.
contentType: application/json
payload:
$ref: '#/components/schemas/faitAnnonce'
evenementPrononce:
name: evenement-prononce
title: Événement prononcé
summary: >-
Les caractéristiques sont arrêtées et figées — le message porteur, typé par le
type d'événement ; toute correction ultérieure est un nouvel événement correctif.
contentType: application/json
payload:
$ref: '#/components/schemas/faitPrononce'
evenementDenoue:
name: evenement-denoue
title: Événement dénoué
summary: >-
Le dénouement constaté — pour une fusion, il emporte la fin de vie des
instruments absorbés.
contentType: application/json
payload:
$ref: '#/components/schemas/faitDenoue'
evenementAnnule:
name: evenement-annule
title: Événement annulé
summary: Le renoncement — avant le prononcé seulement.
contentType: application/json
payload:
$ref: '#/components/schemas/faitAnnule'
schemas:
socleDeFait:
type: object
# Les consommateurs sont tolérants : un champ inconnu s'ignore.
required:
- type_evenement
- version_contrat
- sequence
- identifiant
- tenant
- evenement
- type_d_evenement
- annonce_le
- effet_le
- cree_le
- cree_par
properties:
type_evenement:
type: string
description: Le type du fait — la transition du cycle.
version_contrat:
type: string
description: La version du présent contrat (SemVer).
sequence:
type: integer
minimum: 1
description: Le numéro d'ordre par producteur — fourni par la boîte d'envoi.
identifiant:
type: string
minLength: 1
description: L'identifiant unique du fait.
tenant:
type: string
minLength: 1
description: Le teneur de compte — l'émission est par tenant.
evenement:
type: string
minLength: 1
description: L'identifiant publié de l'événement d'instrument (l'entité sujet).
type_d_evenement:
type: string
enum: [fusion, scission, reajustement, distribution]
description: Le type de la décision — structure ou revenu.
annonce_le:
type: string
format: date
effet_le:
type: string
format: date
etabli_par_document:
type: string
description: La cause — le document qui établit la décision, s'il existe.
corrige:
type: string
description: La cause — l'événement corrigé, pour un événement correctif.
cree_le:
type: string
format: date-time
cree_par:
type: string
minLength: 1
decisionFusion:
type: object
required: [absorbant, absorbes]
properties:
absorbant:
type: string
minLength: 1
description: L'identifiant publié du fonds absorbant.
absorbes:
type: array
minItems: 1
items:
type: object
required: [instrument, parite_p6]
properties:
instrument:
type: string
minLength: 1
parite_p6:
type: integer
minimum: 1
description: La parité d'échange, en millionièmes — arrêtée au prononcé.
decisionScission:
type: object
required: [source, cibles]
properties:
source:
type: string
minLength: 1
cibles:
type: array
minItems: 1
items:
type: object
required: [instrument, cle_repartition_p6]
properties:
instrument:
type: string
minLength: 1
cle_repartition_p6:
type: integer
minimum: 1
description: La clé de répartition, en millionièmes — les clés somment à l'unité.
decisionReajustement:
type: object
required: [fonds, coefficient_p6]
properties:
fonds:
type: string
minLength: 1
coefficient_p6:
type: integer
minimum: 1
description: Le coefficient de division ou de regroupement, en millionièmes.
decisionDistribution:
type: object
required: [fonds, coupon_part_ue6]
properties:
fonds:
type: string
minLength: 1
coupon_part_ue6:
type: integer
minimum: 1
description: >-
Le coupon par part, en micro-euros — la forme (versée / réinvestie) et la
fiscalité attendent la capture au référentiel.
decision:
description: La charge typée par le type d'événement — le chapeau et ses types.
oneOf:
- $ref: '#/components/schemas/decisionFusion'
- $ref: '#/components/schemas/decisionScission'
- $ref: '#/components/schemas/decisionReajustement'
- $ref: '#/components/schemas/decisionDistribution'
faitAnnonce:
allOf:
- $ref: '#/components/schemas/socleDeFait'
- type: object
properties:
type_evenement:
const: evenement-annonce
faitPrononce:
allOf:
- $ref: '#/components/schemas/socleDeFait'
- type: object
required: [decision]
properties:
type_evenement:
const: evenement-prononce
decision:
$ref: '#/components/schemas/decision'
faitDenoue:
allOf:
- $ref: '#/components/schemas/socleDeFait'
- type: object
required: [denoue_le]
properties:
type_evenement:
const: evenement-denoue
denoue_le:
type: string
format: date
faitAnnule:
allOf:
- $ref: '#/components/schemas/socleDeFait'
- type: object
properties:
type_evenement:
const: evenement-annule