Aller au contenu

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

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