evenement-identite-publiee
Événement (AsyncAPI) — version 0.2.0. Producteur : epargnant. Consommateurs déclarés : relation-client.
Publier QUI EXISTE au référentiel des personnes, pour que la relation client assemble sa vue consolidée — elle n’en est jamais maître. Ce contrat est la moitié « personnes » de cet assemblage (l’autre moitié vient de l’Entreprise). Il ne publie que l’identité d’usage — de quoi nommer et retrouver une personne — et rien d’autre : ni date ou commune de naissance, ni identifiants declaratifs (NIF, NIN), ni situation fiscale, ni statut d’identification (KYC), ni faits de vie, ni coordonnees, ni lien d’emploi. Deux messages sur un socle commun : l’entree au referentiel et la modification de l’identite d’usage. Emission par tenant — propriete du deploiement, aucun identifiant de tenant n’est transporte (INV-EP-12). Aucune suppression n’est publiee : l’epargnant se solde, il ne se supprime pas (INV-EP-2).
La spécification
Section intitulée « La spécification »asyncapi: 3.0.0info: title: epargnant — l'identité publiée version: 0.2.0 description: >- Publier QUI EXISTE au référentiel des personnes, pour que la relation client assemble sa vue consolidée — elle n'en est jamais maître. Ce contrat est la moitié « personnes » de cet assemblage (l'autre moitié vient de l'Entreprise). Il ne publie que l'identité d'usage — de quoi nommer et retrouver une personne — et rien d'autre : ni date ou commune de naissance, ni identifiants declaratifs (NIF, NIN), ni situation fiscale, ni statut d'identification (KYC), ni faits de vie, ni coordonnees, ni lien d'emploi. Deux messages sur un socle commun : l'entree au referentiel et la modification de l'identite d'usage. Emission par tenant — propriete du deploiement, aucun identifiant de tenant n'est transporte (INV-EP-12). Aucune suppression n'est publiee : l'epargnant se solde, il ne se supprime pas (INV-EP-2). x-producteurs: - epargnant x-consommateurs: - composant: relation-client # Le différentiel de compatibilité exige que toute rupture # entre deux versions publiées soit DÉCLARÉE ici. 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: identiteEpargnant: address: epargnant.identite description: >- Canal logique des identités publiées du référentiel des personnes. L'ordre est garanti PAR PERSONNE dans ce canal (sequence strictement croissant par entité), 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 — deux boîtes d'envoi, deux séquences indépendantes ; l'ordre est garanti DANS un canal et JAMAIS entre les deux. messages: epargnantPublie: $ref: '#/components/messages/epargnantPublie' identiteModifiee: $ref: '#/components/messages/identiteModifiee'operations: publierUneIdentite: action: send channel: $ref: '#/channels/identiteEpargnant' summary: Le référentiel des personnes publie un fait d'identité — entrée au référentiel ou modification de l'identité d'usage. 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 (clé d'idempotence : le champ identifiant). messages: - $ref: '#/channels/identiteEpargnant/messages/epargnantPublie' - $ref: '#/channels/identiteEpargnant/messages/identiteModifiee'components: messages: epargnantPublie: name: epargnant-publie title: Épargnant publié summary: >- Une identité entre au référentiel (à son premier rapprochement) : elle devient citable par identifiant publié. contentType: application/json payload: $ref: '#/components/schemas/evenementEpargnantPublie' identiteModifiee: name: identite-modifiee title: Identité modifiée summary: >- L'identité d'usage change (nom d'usage après un mariage, correction d'état civil). Le fait porte l'état APRÈS changement, jamais le motif ni l'avant/après. contentType: application/json payload: $ref: '#/components/schemas/evenementIdentiteModifiee' 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. # # Ne voyagent JAMAIS sur ce canal (rappel de la notice) : la date et la commune de # naissance, le NIF, le NIN, la situation fiscale, le statut KYC, les faits de vie, # les coordonnées, le lien d'emploi. Aucune suppression n'est publiée (INV-EP-2). required: - type_evenement - version_contrat - sequence - identifiant - epargnant - survenu_le - cree_le - cree_par properties: type_evenement: type: string description: Le type du fait — epargnant-publie ou identite-modifiee. 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é ET par canal chez le producteur, strictement croissant — fourni par la boîte d'envoi. Propre à ce canal : l'ordre est garanti par personne dans ce canal, jamais entre les deux canaux du domaine. 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, par son identifiant publié. La même entité pour les deux messages : l'ordre est garanti par personne dans ce canal. survenu_le: type: string format: date description: >- La date de survenance du fait métier — l'entrée au référentiel, l'effet du changement d'identité. 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. evenementEpargnantPublie: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object required: - nom_usage - prenoms properties: type_evenement: const: epargnant-publie nom_usage: type: string description: Le nom d'usage — de quoi nommer la personne. prenoms: type: string description: Les prénoms — de quoi nommer la personne. evenementIdentiteModifiee: allOf: - $ref: '#/components/schemas/socleDEvenement' - type: object required: - nom_usage - prenoms properties: type_evenement: const: identite-modifiee nom_usage: type: string description: >- Le nom d'usage APRÈS changement — l'état, jamais le motif ni l'avant/après. prenoms: type: string description: >- Les prénoms APRÈS changement — l'état, jamais le motif ni l'avant/après.