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).
La spécification
Section intitulée « La spécification »asyncapi: 3.0.0info: 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/jsonchannels: 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).