Aller au contenu

evenement-fait-de-vie

Événement (AsyncAPI) — version 0.2.0. Producteur : epargnant. Consommateurs déclarés : tenue-de-compte, conformite.

Les faits publiés — au passé — de la vie de la PERSONNE dont une conséquence traverse une frontière de domaine : le décès (qui interdit toute opération à l’initiative de l’épargnant et ouvre la succession) et le changement de résidence fiscale (qui rouvre les diligences d’échange automatique d’informations chez la Conformité). La mobilité professionnelle N’Y FIGURE PAS : c’est un fait employeur, partie au domaine Entreprise (miroir du lien d’emploi, 2026-07-27). Le domaine publie une conséquence d’état, jamais une confidence : aucune charge utile ne transporte de justificatif, de pièce, d’identifiant déclaratif (NIF, NIN), de coordonnée, ni la nature d’un fait générateur invoqué. L’émission est par tenant — propriété du déploiement : aucun identifiant de tenant n’est transporté (INV-EP-12).

asyncapi: 3.0.0
info:
title: epargnant — l'événement de fait de vie
version: 0.2.0
description: >-
Les faits publiés — au passé — de la vie de la PERSONNE dont une conséquence traverse
une frontière de domaine : le décès (qui interdit toute opération à l'initiative de
l'épargnant et ouvre la succession) et le changement de résidence fiscale (qui rouvre
les diligences d'échange automatique d'informations chez la Conformité). La mobilité
professionnelle N'Y FIGURE PAS : c'est un fait employeur, partie au domaine Entreprise
(miroir du lien d'emploi, 2026-07-27). Le domaine publie une conséquence d'état, jamais
une confidence : aucune charge utile ne transporte de justificatif, de pièce, d'identifiant
déclaratif (NIF, NIN), de coordonnée, ni la nature d'un fait générateur invoqué.
L'émission est par tenant — propriété du déploiement : aucun identifiant de
tenant n'est transporté (INV-EP-12).
x-producteurs:
- epargnant
x-consommateurs:
- composant: tenue-de-compte
- composant: conformite
# Le différentiel de compatibilité exige que toute rupture
# entre deux versions publiées soit DÉCLARÉE ici — sinon la construction casse.
x-ruptures:
- version: 0.2.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). L'émission reste par
tenant, propriété du déploiement (INV-EP-12), et l'unicité du fait perd sa
composante tenant.
defaultContentType: application/json
channels:
faitDeVie:
address: epargnant.fait-de-vie
description: >-
Canal logique des faits de vie de la personne. L'ordre n'est garanti que par
producteur (sequence strictement croissant), et par entité (l'épargnant) — jamais
entre producteurs. La séquence est PROPRE À CE CANAL : le domaine publie sur deux
canaux (epargnant.fait-de-vie et epargnant.identite) alimentés par deux boîtes
d'envoi distinctes, l'ordre est garanti DANS un canal et JAMAIS entre les deux.
messages:
decesConstate:
$ref: '#/components/messages/decesConstate'
residenceFiscaleChangee:
$ref: '#/components/messages/residenceFiscaleChangee'
operations:
publierUnFaitDeVie:
action: send
channel:
$ref: '#/channels/faitDeVie'
summary: Le référentiel de l'épargnant publie un fait de vie de la personne.
description: >-
Chaque fait est un fait au passé, retenu en boîte d'envoi dans la transaction qui le
produit ; livraison au moins une fois, consommateurs idempotents.
messages:
- $ref: '#/channels/faitDeVie/messages/decesConstate'
- $ref: '#/channels/faitDeVie/messages/residenceFiscaleChangee'
components:
messages:
decesConstate:
name: deces-constate
title: Décès constaté
summary: >-
Le décès est enregistré. Le seul fait dont les DEUX consommateurs déclarés
dépendent. Aucun champ propre : la date du décès EST survenu_le.
contentType: application/json
payload:
$ref: '#/components/schemas/evenementDecesConstate'
residenceFiscaleChangee:
name: residence-fiscale-changee
title: Résidence fiscale changée
summary: >-
La mobilité de résidence fiscale. La Fiscalité n'en est pas consommatrice (elle
photographie la situation à date par consultation synchrone).
contentType: application/json
payload:
$ref: '#/components/schemas/evenementResidenceFiscaleChangee'
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
- identifiant
- epargnant
- survenu_le
- cree_le
- cree_par
properties:
type_evenement:
type: string
description: Le type du fait — deces-constate ou residence-fiscale-changee.
version_contrat:
type: string
description: La version du présent contrat (SemVer).
sequence:
type: integer
minimum: 1
description: >-
Le numéro de séquence par entité (l'épargnant) ET par canal chez le producteur,
strictement croissant — l'assise de la garantie d'ordre, fourni par la boîte d'envoi
propre à ce canal.
identifiant:
type: string
minLength: 1
description: >-
L'identifiant unique du fait — clé d'idempotence des consommateurs.
epargnant:
type: string
minLength: 1
description: >-
L'entité sujet : l'épargnant, en identifiant publié — LA MÊME entité pour les
deux messages, tous les faits d'une personne s'ordonnent ensemble.
survenu_le:
type: string
format: date
description: >-
LA DATE DE SURVENANCE DU FAIT MÉTIER — la date du décès ou du changement de
résidence. Attribut d'enveloppe uniforme, jamais éclaté dans les charges utiles.
etabli_par:
type: string
description: >-
(extension du domaine, FACULTATIF) le fait générateur invoqué qui l'établit, en
identifiant publié OPAQUE. Jamais la nature du fait générateur.
cree_le:
type: string
format: date-time
description: La piste d'audit — quand.
cree_par:
type: string
minLength: 1
description: La piste d'audit — qui.
evenementDecesConstate:
# Aucun champ propre : la date du décès est survenu_le (elle borne les droits des
# ayants droit). Ne transporte ni justificatif, ni pièce, ni la demande qu'il fonde.
allOf:
- $ref: '#/components/schemas/socleDEvenement'
- type: object
properties:
type_evenement:
const: deces-constate
evenementResidenceFiscaleChangee:
# Deux champs propres seulement — des valeurs simples, jamais un NIF, ni une
# coordonnée, ni un justificatif.
allOf:
- $ref: '#/components/schemas/socleDEvenement'
- type: object
required:
- residence
- pays_fiscal
properties:
type_evenement:
const: residence-fiscale-changee
residence:
type: string
enum: [R, S, C, N]
description: >-
Le code de résidence — le pivot de tout assujettissement : R = résident soumis ;
S = résident non soumis à la CSG ; C = résident CEE hors France ; N =
non-résident hors CEE.
pays_fiscal:
type: string
minLength: 2
maxLength: 2
description: >-
Le pays fiscal, code ISO 3166-1 alpha-2 (deux lettres).