Aller au contenu

evenements-publies

Événement (AsyncAPI) — version 0.1.0. Producteur : relation-tiers. Consommateurs déclarés : conformite, operations, back-office.

Les faits au passé du domaine sous l’enveloppe canonique — le tenantId est obligatoire dans l’enveloppe et dans la partition de transport, et le consommateur vérifie leur concordance. Données interdites, partie intégrante du contrat : contenu libre, nom, courriel, téléphone, adresse, IBAN complet, pièce jointe, secret, statut ou identifiant de CRM, copie complète d’un acteur ou d’un objet externe. Un événement publié ne se supprime jamais : la correction est un fait nouveau portant correctionOfEventId.

asyncapi: 3.0.0
info:
title: relation-tiers — les événements publiés
version: 0.1.0
x-ruptures: [] # première publication — aucune rupture
description: >-
Les faits au passé du domaine sous l'enveloppe canonique — le tenantId est
obligatoire dans l'enveloppe et dans la partition de transport, et le consommateur
vérifie leur concordance. Données interdites, partie intégrante du contrat : contenu
libre, nom, courriel, téléphone, adresse, IBAN complet, pièce jointe, secret, statut
ou identifiant de CRM, copie complète d'un acteur ou d'un objet externe. Un
événement publié ne se supprime jamais : la correction est un fait nouveau portant
correctionOfEventId.
x-producteurs:
- relation-tiers
x-consommateurs:
- composant: conformite
statut: pressenti — les faits relationnels comme signaux
- composant: operations
statut: pressenti — faits de mandat et résultats de traitement
- composant: back-office
statut: pressenti — projections d'interface
defaultContentType: application/json
channels:
acteurs:
address: relation-tiers.acteurs.v1
description: >-
Les faits des ancres d'acteurs, identifiants et rapprochements. L'ordre est
garanti par agrégat (partition dérivée de tenantId et aggregateId) et par
producteur, jamais entre producteurs.
messages:
acteurReference: { $ref: '#/components/messages/acteurReference' }
acteurSuspendu: { $ref: '#/components/messages/acteurSuspendu' }
acteurRedirige: { $ref: '#/components/messages/acteurRedirige' }
identifiantQualifie: { $ref: '#/components/messages/identifiantQualifie' }
identiteContestee: { $ref: '#/components/messages/identiteContestee' }
rapprochementConfirme: { $ref: '#/components/messages/rapprochementConfirme' }
rapprochementEcarte: { $ref: '#/components/messages/rapprochementEcarte' }
relationsEtMandats:
address: relation-tiers.relations-et-mandats.v1
description: Les faits des relations, rôles, périmètres, mandats et délégations.
messages:
relationEtablie: { $ref: '#/components/messages/relationEtablie' }
relationSuspendue: { $ref: '#/components/messages/relationSuspendue' }
relationCloturee: { $ref: '#/components/messages/relationCloturee' }
roleAttribue: { $ref: '#/components/messages/roleAttribue' }
roleRetire: { $ref: '#/components/messages/roleRetire' }
perimetreModifie: { $ref: '#/components/messages/perimetreModifie' }
mandatEnregistre: { $ref: '#/components/messages/mandatEnregistre' }
mandatActive: { $ref: '#/components/messages/mandatActive' }
mandatRevoque: { $ref: '#/components/messages/mandatRevoque' }
mandatExpire: { $ref: '#/components/messages/mandatExpire' }
contactsEtCanaux:
address: relation-tiers.contacts-et-canaux.v1
description: >-
Les faits des rattachements de contact, points de contact et autorisations de
canal — aucune adresse, aucun numéro, aucun endpoint n'y figure.
messages:
contactRattache: { $ref: '#/components/messages/contactRattache' }
contactRemplace: { $ref: '#/components/messages/contactRemplace' }
pointContactVerifie: { $ref: '#/components/messages/pointContactVerifie' }
canalAutorise: { $ref: '#/components/messages/canalAutorise' }
canalSuspendu: { $ref: '#/components/messages/canalSuspendu' }
demandesEtEchanges:
address: relation-tiers.demandes-et-echanges.v1
description: >-
Les faits des demandes et des échanges — sujets, résumés, participants nominatifs
et contenus restent consultables par API autorisée, jamais par le bus.
messages:
demandeRecue: { $ref: '#/components/messages/demandeRecue' }
demandeurIdentifie: { $ref: '#/components/messages/demandeurIdentifie' }
demandeQualifiee: { $ref: '#/components/messages/demandeQualifiee' }
demandeAffectee: { $ref: '#/components/messages/demandeAffectee' }
demandeTransferee: { $ref: '#/components/messages/demandeTransferee' }
demandeEscaladee: { $ref: '#/components/messages/demandeEscaladee' }
objetRattache: { $ref: '#/components/messages/objetRattache' }
objetDetache: { $ref: '#/components/messages/objetDetache' }
echangeEnregistre: { $ref: '#/components/messages/echangeEnregistre' }
echangeRattache: { $ref: '#/components/messages/echangeRattache' }
echangeDetache: { $ref: '#/components/messages/echangeDetache' }
demandesRegroupees: { $ref: '#/components/messages/demandesRegroupees' }
demandeDissociee: { $ref: '#/components/messages/demandeDissociee' }
traitementsEtReponses:
address: relation-tiers.traitements-et-reponses.v1
description: Les faits des traitements externes, échéances et réponses.
messages:
traitementDemande: { $ref: '#/components/messages/traitementDemande' }
traitementAccepte: { $ref: '#/components/messages/traitementAccepte' }
traitementRejete: { $ref: '#/components/messages/traitementRejete' }
resultatRecu: { $ref: '#/components/messages/resultatRecu' }
resultatCorrige: { $ref: '#/components/messages/resultatCorrige' }
echeanceCalculee: { $ref: '#/components/messages/echeanceCalculee' }
echeanceMenacee: { $ref: '#/components/messages/echeanceMenacee' }
echeanceDepassee: { $ref: '#/components/messages/echeanceDepassee' }
reponsePreparee: { $ref: '#/components/messages/reponsePreparee' }
reponseValidee: { $ref: '#/components/messages/reponseValidee' }
reponseEnvoyee: { $ref: '#/components/messages/reponseEnvoyee' }
reponseRemise: { $ref: '#/components/messages/reponseRemise' }
demandeResolue: { $ref: '#/components/messages/demandeResolue' }
demandeCloturee: { $ref: '#/components/messages/demandeCloturee' }
demandeRouverte: { $ref: '#/components/messages/demandeRouverte' }
operations:
publierLesFaitsDesActeurs:
action: send
channel:
$ref: '#/channels/acteurs'
summary: Relation tiers publie les faits des ancres, identifiants et rapprochements.
publierLesFaitsDesRelationsEtMandats:
action: send
channel:
$ref: '#/channels/relationsEtMandats'
summary: Relation tiers publie les faits des relations, rôles et mandats.
publierLesFaitsDesContactsEtCanaux:
action: send
channel:
$ref: '#/channels/contactsEtCanaux'
summary: Relation tiers publie les faits des contacts et canaux, valeurs masquées.
publierLesFaitsDesDemandesEtEchanges:
action: send
channel:
$ref: '#/channels/demandesEtEchanges'
summary: Relation tiers publie les faits des demandes et des échanges.
publierLesFaitsDesTraitementsEtReponses:
action: send
channel:
$ref: '#/channels/traitementsEtReponses'
summary: Relation tiers publie les faits des traitements, échéances et réponses.
components:
schemas:
Enveloppe:
type: object
description: >-
L'enveloppe canonique de la conception — se projettera sur CloudEvents à la
liaison Kafka, au premier contrat qui l'applique.
required:
- eventId
- eventType
- schemaVersion
- tenantId
- aggregateType
- aggregateId
- aggregateVersion
- occurredAt
- recordedAt
- data
properties:
eventId:
type: string
description: L'identifiant unique — la clé d'idempotence des consommateurs.
eventType:
type: string
schemaVersion:
type: integer
tenantId:
type: string
description: >-
Obligatoire ici et dans la partition de transport — le consommateur vérifie
la concordance.
aggregateType:
type: string
aggregateId:
type: string
aggregateVersion:
type: integer
description: Le numéro de séquence par entité — l'assise de l'ordre.
occurredAt:
type: string
format: date-time
effectiveAt:
type: string
format: date-time
recordedAt:
type: string
format: date-time
publishedAt:
type: string
format: date-time
correlationId:
type: string
causationId:
type: string
correctionOfEventId:
type: string
description: Présent sur un fait de correction — l'original demeure.
data:
type: object
messages:
acteurReference:
name: ActeurTiersReference
title: Acteur tiers référencé
summary: Une ancre est utilisable — mode d'ancrage et référence propriétaire.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [actorId, identityMode, actorNature]
properties:
actorId: { type: string }
identityMode: { type: string }
actorNature: { type: string }
ownerReference:
type: object
properties:
domain: { type: string }
objectType: { type: string }
objectId: { type: string }
acteurSuspendu:
name: ActeurTiersSuspendu
title: Acteur tiers suspendu
summary: Une ancre est suspendue — raison codée et date d'effet.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [actorId, reasonCode]
properties:
actorId: { type: string }
reasonCode: { type: string }
acteurRedirige:
name: ActeurTiersRedirige
title: Acteur tiers redirigé
summary: Une ancre pointe logiquement vers une canonique — fusion logique datée.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [sourceActorId, canonicalActorId]
properties:
sourceActorId: { type: string }
canonicalActorId: { type: string }
identifiantQualifie:
name: IdentifiantTiersQualifie
title: Identifiant tiers qualifié
summary: >-
Un identifiant a été validé — l'ID de l'identifiant par défaut, la valeur
seulement si non personnelle, nécessaire et approuvée par le schéma.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [externalIdentifierId, actorId, identifierType, issuer, verificationStatus]
properties:
externalIdentifierId: { type: string }
actorId: { type: string }
identifierType: { type: string }
issuer: { type: string }
verificationStatus: { type: string }
identiteContestee:
name: IdentiteTiersContestee
title: Identité tiers contestée
summary: Une contradiction affecte l'ancre — code d'anomalie.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [actorId, anomalyCode]
properties:
actorId: { type: string }
anomalyCode: { type: string }
rapprochementConfirme:
name: RapprochementTiersConfirme
title: Rapprochement tiers confirmé
summary: Une décision humaine établit la correspondance — jamais l'IA.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [caseId, actorIds, decision]
properties:
caseId: { type: string }
actorIds:
type: array
items: { type: string }
decision: { type: string }
rapprochementEcarte:
name: RapprochementTiersEcarte
title: Rapprochement tiers écarté
summary: Deux ancres sont distinctes — la paire est exclue des propositions répétées.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [caseId, actorIds]
properties:
caseId: { type: string }
actorIds:
type: array
items: { type: string }
relationEtablie:
name: RelationTiersEtablie
title: Relation tiers établie
summary: Relation active — parties, nature, période.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [relationshipId, actorIds, relationshipType]
properties:
relationshipId: { type: string }
actorIds:
type: array
items: { type: string }
relationshipType: { type: string }
validFrom: { type: string, format: date-time }
validTo: { type: string, format: date-time }
relationSuspendue:
name: RelationTiersSuspendue
title: Relation tiers suspendue
summary: Relation suspendue — raison et effet.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [relationshipId, reasonCode]
properties:
relationshipId: { type: string }
reasonCode: { type: string }
relationCloturee:
name: RelationTiersCloturee
title: Relation tiers clôturée
summary: Relation terminée — raison et fin ; jamais écrasée.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [relationshipId, reasonCode]
properties:
relationshipId: { type: string }
reasonCode: { type: string }
validTo: { type: string, format: date-time }
roleAttribue:
name: RoleTiersAttribue
title: Rôle tiers attribué
summary: Rôle applicable — code canonique, relation, période.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [roleAssignmentId, actorId, roleCode, relationshipId]
properties:
roleAssignmentId: { type: string }
actorId: { type: string }
roleCode: { type: string }
relationshipId: { type: string }
validFrom: { type: string, format: date-time }
validTo: { type: string, format: date-time }
roleRetire:
name: RoleTiersRetire
title: Rôle tiers retiré
summary: Rôle retiré — fin et raison, l'historique demeure.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [roleAssignmentId, reasonCode]
properties:
roleAssignmentId: { type: string }
reasonCode: { type: string }
validTo: { type: string, format: date-time }
perimetreModifie:
name: PerimetreRelationModifie
title: Périmètre de relation modifié
summary: Nouvelle version de portée — les membres restent consultables par API.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [scopeId, relationshipId, scopeVersion]
properties:
scopeId: { type: string }
relationshipId: { type: string }
scopeVersion: { type: integer }
mandatEnregistre:
name: MandatTiersEnregistre
title: Mandat tiers enregistré
summary: Mandat accepté dans le référentiel — parties, type, statut.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [mandateId, grantorActorId, granteeActorId, mandateType, status]
properties:
mandateId: { type: string }
grantorActorId: { type: string }
granteeActorId: { type: string }
mandateType: { type: string }
status: { type: string }
mandatActive:
name: MandatTiersActive
title: Mandat tiers activé
summary: >-
Mandat applicable — période et actes codés ; aucune pièce ni condition libre
n'est publiée.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [mandateId, actions]
properties:
mandateId: { type: string }
actions:
type: array
items: { type: string }
validFrom: { type: string, format: date-time }
validTo: { type: string, format: date-time }
mandatRevoque:
name: MandatTiersRevoque
title: Mandat tiers révoqué
summary: >-
Révocation enregistrée — la date d'effet peut précéder la date de connaissance,
les décisions passées ne sont pas réécrites.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [mandateId, reasonCode]
properties:
mandateId: { type: string }
reasonCode: { type: string }
mandatExpire:
name: MandatTiersExpire
title: Mandat tiers expiré
summary: Fin atteinte.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [mandateId]
properties:
mandateId: { type: string }
validTo: { type: string, format: date-time }
contactRattache:
name: ContactTiersRattache
title: Contact tiers rattaché
summary: Personne rattachée à une organisation — période, aucun pouvoir implicite.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [assignmentId, personActorId, organisationActorId]
properties:
assignmentId: { type: string }
personActorId: { type: string }
organisationActorId: { type: string }
validFrom: { type: string, format: date-time }
validTo: { type: string, format: date-time }
contactRemplace:
name: ContactTiersRemplace
title: Contact tiers remplacé
summary: Suppléance ou remplacement établi — rattachements et période.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [substitutedAssignmentId, substituteAssignmentId]
properties:
substitutedAssignmentId: { type: string }
substituteAssignmentId: { type: string }
validFrom: { type: string, format: date-time }
validTo: { type: string, format: date-time }
pointContactVerifie:
name: PointContactTiersVerifie
title: Point de contact tiers vérifié
summary: Point vérifié — type, finalité, niveau, date ; jamais la valeur.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [contactPointId, channelType, purpose, level, verifiedAt]
properties:
contactPointId: { type: string }
channelType: { type: string }
purpose: { type: string }
level: { type: string }
verifiedAt: { type: string, format: date-time }
canalAutorise:
name: CanalTiersAutorise
title: Canal tiers autorisé
summary: Usage autorisé — finalité et période ; jamais la valeur.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [authorizationId, contactPointId, purpose]
properties:
authorizationId: { type: string }
contactPointId: { type: string }
purpose: { type: string }
validFrom: { type: string, format: date-time }
validTo: { type: string, format: date-time }
canalSuspendu:
name: CanalTiersSuspendu
title: Canal tiers suspendu
summary: Canal inutilisable — finalités touchées, effet, raison (NPAI, compromission).
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [contactPointId, reasonCode]
properties:
contactPointId: { type: string }
purposes:
type: array
items: { type: string }
reasonCode: { type: string }
demandeRecue:
name: DemandeTiersRecue
title: Demande tiers reçue
summary: Demande durablement reçue — référence, canal, réception, statut du demandeur.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, readableReference, originChannel, receivedAt, requesterStatus]
properties:
requestId: { type: string }
readableReference: { type: string }
originChannel: { type: string }
receivedAt: { type: string, format: date-time }
requesterStatus: { type: string }
demandeurIdentifie:
name: DemandeurTiersIdentifie
title: Demandeur tiers identifié
summary: Demandeur rapproché ou vérifié — acteur et niveau.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, actorId, level]
properties:
requestId: { type: string }
actorId: { type: string }
level: { type: string }
demandeQualifiee:
name: DemandeTiersQualifiee
title: Demande tiers qualifiée
summary: Catégorie et priorité acceptées — taxonomie versionnée.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, categoryCode, taxonomyVersion]
properties:
requestId: { type: string }
categoryCode: { type: string }
taxonomyVersion: { type: string }
priority: { type: string }
demandeAffectee:
name: DemandeTiersAffectee
title: Demande tiers affectée
summary: Affectation active — file et affectation.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, queueId, assignmentId]
properties:
requestId: { type: string }
queueId: { type: string }
assignmentId: { type: string }
demandeTransferee:
name: DemandeTiersTransferee
title: Demande tiers transférée
summary: Changement de responsabilité — files source et cible, motif.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, sourceQueueId, targetQueueId, reasonCode]
properties:
requestId: { type: string }
sourceQueueId: { type: string }
targetQueueId: { type: string }
reasonCode: { type: string }
demandeEscaladee:
name: DemandeTiersEscaladee
title: Demande tiers escaladée
summary: Niveau d'escalade relevé — motif ; l'escalade reste après clôture.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, level, reasonCode]
properties:
requestId: { type: string }
level: { type: integer }
reasonCode: { type: string }
objetRattache:
name: ObjetMetierRattacheADemande
title: Objet métier rattaché à une demande
summary: Lien externe accepté — domaine, type, objet, finalité ; jamais l'état copié.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, ownerDomain, objectType, objectId, purpose]
properties:
requestId: { type: string }
ownerDomain: { type: string }
objectType: { type: string }
objectId: { type: string }
purpose: { type: string }
objetDetache:
name: ObjetMetierDetacheDeDemande
title: Objet métier détaché d'une demande
summary: Lien clôturé — motif, l'histoire demeure.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [linkId, reasonCode]
properties:
linkId: { type: string }
reasonCode: { type: string }
echangeEnregistre:
name: EchangeTiersEnregistre
title: Échange tiers enregistré
summary: Échange durable — direction, canal, instant métier ; jamais le contenu.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [interactionId, direction, channel, businessAt]
properties:
interactionId: { type: string }
direction: { type: string }
channel: { type: string }
businessAt: { type: string, format: date-time }
echangeRattache:
name: EchangeTiersRattacheADemande
title: Échange tiers rattaché à une demande
summary: Lien actif — demande, échange, rôle.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [linkId, requestId, interactionId, role]
properties:
linkId: { type: string }
requestId: { type: string }
interactionId: { type: string }
role: { type: string }
echangeDetache:
name: EchangeTiersDetacheDeDemande
title: Échange tiers détaché d'une demande
summary: Lien corrigé — motif (RATTACHE_PAR_ERREUR), jamais supprimé.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [linkId, reasonCode]
properties:
linkId: { type: string }
reasonCode: { type: string }
demandesRegroupees:
name: DemandesTiersRegroupees
title: Demandes tiers regroupées
summary: Doublon logique établi — la principale et les secondaires.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [primaryRequestId, secondaryRequestIds]
properties:
primaryRequestId: { type: string }
secondaryRequestIds:
type: array
items: { type: string }
demandeDissociee:
name: DemandeTiersDissociee
title: Demande tiers dissociée
summary: Demandes dérivées créées — la source reste consultable.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [sourceRequestId, derivedRequestIds]
properties:
sourceRequestId: { type: string }
derivedRequestIds:
type: array
items: { type: string }
traitementDemande:
name: TraitementMetierDemande
title: Traitement métier demandé
summary: Commande émise — domaine cible, type et identifiant idempotent de commande.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [treatmentId, requestId, targetDomain, commandType, commandId]
properties:
treatmentId: { type: string }
requestId: { type: string }
targetDomain: { type: string }
commandType: { type: string }
commandId: { type: string }
traitementAccepte:
name: TraitementMetierAccepte
title: Traitement métier accepté
summary: Le domaine cible a accepté.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [treatmentId]
properties:
treatmentId: { type: string }
sourceTreatmentId: { type: string }
traitementRejete:
name: TraitementMetierRejete
title: Traitement métier rejeté
summary: Commande rejetée — motif codé.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [treatmentId, reasonCode]
properties:
treatmentId: { type: string }
reasonCode: { type: string }
resultatRecu:
name: ResultatTraitementMetierRecu
title: Résultat de traitement métier reçu
summary: Résultat disponible — code et version source.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [treatmentId, resultCode]
properties:
treatmentId: { type: string }
resultCode: { type: string }
sourceVersion: { type: string }
resultatCorrige:
name: ResultatTraitementMetierCorrige
title: Résultat de traitement métier corrigé
summary: Résultat précédent régularisé — nouveau résultat lié, jamais une réécriture.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [treatmentId, correctionOf, resultCode]
properties:
treatmentId: { type: string }
correctionOf: { type: string }
resultCode: { type: string }
echeanceCalculee:
name: EcheanceDemandeCalculee
title: Échéance de demande calculée
summary: Échéance matérialisée — règle et version citées, instant dû.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [deadlineId, requestId, ruleId, ruleVersion, dueAt]
properties:
deadlineId: { type: string }
requestId: { type: string }
ruleId: { type: string }
ruleVersion: { type: string }
dueAt: { type: string, format: date-time }
echeanceMenacee:
name: EcheanceDemandeMenacee
title: Échéance de demande menacée
summary: Seuil atteint — niveau d'alerte.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [deadlineId, alertLevel]
properties:
deadlineId: { type: string }
alertLevel: { type: string }
echeanceDepassee:
name: EcheanceDemandeDepassee
title: Échéance de demande dépassée
summary: Délai franchi — le premier dépassement est immuable.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [deadlineId, firstBreachedAt]
properties:
deadlineId: { type: string }
firstBreachedAt: { type: string, format: date-time }
reponsePreparee:
name: ReponseTiersPreparee
title: Réponse tiers préparée
summary: Projet disponible — nombre de sources citées.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [responseId, requestId]
properties:
responseId: { type: string }
requestId: { type: string }
sourceCount: { type: integer }
reponseValidee:
name: ReponseTiersValidee
title: Réponse tiers validée
summary: Validation acquise — politique de validation citée.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [responseId]
properties:
responseId: { type: string }
validationPolicy: { type: string }
reponseEnvoyee:
name: ReponseTiersEnvoyee
title: Réponse tiers envoyée
summary: Émission constatée — échange sortant et canal.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [responseId, interactionId, channel]
properties:
responseId: { type: string }
interactionId: { type: string }
channel: { type: string }
reponseRemise:
name: ReponseTiersRemise
title: Réponse tiers remise
summary: Remise prouvée — référence de preuve.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [responseId, evidenceRef]
properties:
responseId: { type: string }
evidenceRef: { type: string }
demandeResolue:
name: DemandeTiersResolue
title: Demande tiers résolue
summary: Résultat suffisant — code de résolution.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, resolutionCode]
properties:
requestId: { type: string }
resolutionCode: { type: string }
demandeCloturee:
name: DemandeTiersCloturee
title: Demande tiers clôturée
summary: Suivi terminé — code de clôture, échéances et dépassements figés.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, closureCode]
properties:
requestId: { type: string }
closureCode: { type: string }
demandeRouverte:
name: DemandeTiersRouverte
title: Demande tiers rouverte
summary: Suivi repris — motif, append-only.
payload:
allOf:
- $ref: '#/components/schemas/Enveloppe'
- type: object
properties:
data:
type: object
required: [requestId, reasonCode]
properties:
requestId: { type: string }
reasonCode: { type: string }