administration-du-referentiel
Interface synchrone (OpenAPI) — version 0.2.0, proposition. Producteur : instruments. Consommateurs déclarés : alimentation-documentaire.
Les portes d’entrée du référentiel : le référencement des instruments, l’établissement des caractéristiques datées et des restrictions de négociabilité (rôle d’administration — aucun fait publié), la publication des valeurs et le pilotage des événements d’instrument (rôle de publication — la voix de la société de gestion, par délégation ; chaque geste publie son fait), et l’alimentation documentaire (famille d’administration) : verser un document, l’analyser — l’analyseur propose, le référentiel dispose —, examiner chaque geste proposé (appliquer, amender, écarter — l’application passe par les portes ordinaires, la provenance documentaire posée). Chaque opération déclare sa famille d’accès en portée de sécurité (la forme instruments:famille). Toute donnée entre en identifiants publiés, entiers à unité suffixée (jamais de flottant) et dates de l’appelant ; tout rejet du domaine est motivé.
La spécification
Section intitulée « La spécification »openapi: 3.1.0info: title: instruments — administration du référentiel version: 0.2.0 summary: Référencer, établir, alimenter par les documents, publier, piloter — chaque famille d'accès sa porte. description: >- Les portes d'entrée du référentiel : le référencement des instruments, l'établissement des caractéristiques datées et des restrictions de négociabilité (rôle d'administration — aucun fait publié), la publication des valeurs et le pilotage des événements d'instrument (rôle de publication — la voix de la société de gestion, par délégation ; chaque geste publie son fait), et l'alimentation documentaire (famille d'administration) : verser un document, l'analyser — l'analyseur propose, le référentiel dispose —, examiner chaque geste proposé (appliquer, amender, écarter — l'application passe par les portes ordinaires, la provenance documentaire posée). Chaque opération déclare sa famille d'accès en portée de sécurité (la forme instruments:famille). Toute donnée entre en identifiants publiés, entiers à unité suffixée (jamais de flottant) et dates de l'appelant ; tout rejet du domaine est motivé. x-producteurs: - instruments x-consommateurs: - composant: alimentation-documentairepaths: /tenants/{tenant}/instruments: post: operationId: referencerUnInstrument summary: Référencer un instrument — la hiérarchie est fermée, l'identifiant stable à vie. description: >- La nature commande la forme du corps : un OPCVM porte sa forme (l'émettrice pour le seul FCPE d'actionnariat), un CCB son grain (l'entreprise débitrice et l'accord de participation), une devise rien d'autre que son identité. Un identifiant déjà référencé chez ce tenant est refusé. Aucun fait n'est publié. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DemandeDeReferencement' responses: '201': description: L'instrument est référencé, commercialisable. '400': description: La demande est irrecevable (champ manquant, date mal formée, flottant) — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: Le référentiel refuse (identifiant déjà référencé, invariant de nature violé) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/instruments/{instrument}/caracteristiques: post: operationId: etablirUneCaracteristique summary: Établir une caractéristique datée — typée, datée, avec sa provenance. description: >- Le type commande les champs du corps ; une caractéristique inapplicable à la nature est un rejet, pas une donnée ignorée. Les périodes sont [du, au[ sans chevauchement ; la provenance est obligatoire (la référence documentaire exigée quand la source est un document). Aucun fait n'est publié. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/instrument' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CaracteristiqueAEtablir' responses: '201': description: La caractéristique est établie. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: >- Le référentiel refuse (instrument inconnu de ce tenant — la muraille ne révèle rien —, type inapplicable à la nature, chevauchement de périodes) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/instruments/{instrument}/caracteristiques/reetablissements: post: operationId: reetablirUneCaracteristique summary: Ré-établir une caractéristique — le motif obligatoire, l'ancienne version conservée. description: >- La correction d'une caractéristique établie : la nouvelle version remplace l'applicable, l'ancienne reste tracée à jamais. Le motif est obligatoire — une correction se lit. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/instrument' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReetablissementDeCaracteristique' responses: '201': description: La caractéristique est ré-établie — l'applicable est la nouvelle version. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: Le référentiel refuse (rien à ré-établir, motif absent, inapplicable) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/instruments/{instrument}/restrictions: post: operationId: poserUneRestriction summary: Poser une restriction de négociabilité — hors cycle de vie, cumulable. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/instrument' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RestrictionAPoser' responses: '201': description: La restriction est posée, en vigueur sur sa période. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: Le référentiel refuse (instrument inconnu, type inapplicable à la nature) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/instruments/{instrument}/restrictions/levees: post: operationId: leverUneRestriction summary: Lever une restriction — la levée borne la période, jamais d'effacement. description: >- La levée borne la première restriction ouverte du type à la date donnée — une restriction bornée ne se lève pas, elle expire. L'histoire reste servie. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/instrument' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LeveeDeRestriction' responses: '200': description: La restriction est levée — sa période bornée à la date de levée. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: Le référentiel refuse (aucune restriction ouverte de ce type) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/instruments/{instrument}/valeurs: post: operationId: publierUneValeur summary: Publier une valeur — première publication, rang 1, jamais de motif. description: >- La publication d'une valeur pour une date de calcul. Le fait « valeur publiée » est retenu dans la même transaction (contrat evenement-valeur-liquidative). Une devise ne publie pas — sa valeur est l'unité. security: - authentification: [instruments:publication] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/instrument' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublicationDeValeur' responses: '201': description: La valeur est publiée au rang 1, son fait retenu. '400': description: La demande est irrecevable (flottant, date mal formée) — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès publication. '422': description: Le référentiel refuse (instrument inconnu, devise, date déjà publiée, terminus) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/instruments/{instrument}/valeurs/corrections: post: operationId: corrigerUneValeur summary: Corriger une valeur publiée — le motif obligatoire, l'ancienne conservée. description: >- La republication tracée : le rang s'incrémente, l'applicable est le dernier rang, l'ancienne valeur reste servie dans la série. Le fait « valeur corrigée » est retenu dans la même transaction. security: - authentification: [instruments:publication] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/instrument' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CorrectionDeValeur' responses: '201': description: La correction est publiée au rang suivant, son fait retenu. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès publication. '422': description: Le référentiel refuse (rien à corriger à cette date, motif absent) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/evenements-instrument: post: operationId: annoncerUnEvenement summary: Annoncer un événement d'instrument — l'entrée du cycle. description: >- L'annonce porte la décision typée de la société de gestion (fusion, scission, réajustement, distribution), son calendrier, l'établissement documentaire éventuel, et la référence corrective si l'événement en corrige un autre. Les instruments de la décision sont connus du tenant — la muraille vaut. Le fait « événement annoncé » est retenu dans la même transaction (contrat evenement-d-instrument). security: - authentification: [instruments:publication] parameters: - $ref: '#/components/parameters/tenant' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnnonceDEvenement' responses: '201': description: L'événement est annoncé, son fait retenu. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès publication. '422': description: >- Le référentiel refuse (identifiant déjà porté, instrument de la décision inconnu ou à un terminus, invariant de la décision violé, correctif visant un événement non prononcé) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/evenements-instrument/{evenement}/prononce: post: operationId: prononcerUnEvenement summary: Prononcer un événement annoncé — ses caractéristiques sont figées. description: >- Après le prononcé, plus aucune modification : une erreur découverte se corrige par un nouvel événement correctif. Le fait « événement prononcé » (décision figée comprise) est retenu dans la même transaction. security: - authentification: [instruments:publication] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/evenement' responses: '200': description: L'événement est prononcé, sa décision figée, son fait retenu. '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès publication. '422': description: Le référentiel refuse (événement inconnu de ce tenant, ou non annoncé) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/evenements-instrument/{evenement}/annulation: post: operationId: annulerUnEvenement summary: Annuler un événement — avant le prononcé seulement. security: - authentification: [instruments:publication] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/evenement' responses: '200': description: L'événement est annulé, son fait retenu. '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès publication. '422': description: >- Le référentiel refuse (événement inconnu, ou déjà prononcé — l'annulation n'existe qu'avant le prononcé, après c'est un événement correctif) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/evenements-instrument/{evenement}/denouement: post: operationId: denouerUnEvenement summary: Dénouer un événement prononcé — le dénouement d'une fusion emporte la fin de vie des absorbés. description: >- Le dénouement constate l'exécution à sa date. Pour une fusion, les absorbés passent au terminus (absorbé) : ils ne publient plus, ne portent plus d'événement — mais restent consultables à jamais. Le fait « événement dénoué » est retenu dans la même transaction. security: - authentification: [instruments:publication] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/evenement' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Denouement' responses: '200': description: L'événement est dénoué, son fait retenu — les terminus prononcés. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès publication. '422': description: Le référentiel refuse (événement inconnu, ou non prononcé) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/intervenants: post: operationId: referencerUnIntervenant summary: Référencer un intervenant — la société de gestion, le dépositaire. description: >- L'intervenant émet les documents de référence (le versement l'exige). Un identifiant déjà référencé chez ce tenant est refusé. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DemandeDeReferencementDIntervenant' responses: '201': description: L'intervenant est référencé. '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: Le référentiel refuse (identifiant déjà référencé) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/documents: post: operationId: verserUnDocument summary: Verser un document de référence — immuable, empreint, archivé. description: >- Le temps 1 de l'alimentation documentaire : l'identité (le type, l'émetteur — un intervenant référencé —, la version, les dates), le rattachement aux instruments concernés, et le contenu — archivé derrière l'adaptateur de stockage, le référentiel n'en gardant que l'empreinte (calculée au versement). Un contenu déjà versé chez ce tenant (même empreinte) est reconnu, pas dupliqué : la réponse renvoie le document existant. Une nouvelle édition est un nouveau document — l'ancien reste, à jamais. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VersementDeDocument' responses: '201': description: Le document est versé — son empreinte fait foi. content: application/json: schema: $ref: '#/components/schemas/DocumentVerse' '200': description: Le contenu était déjà versé — le document existant est reconnu, rien n'est dupliqué. content: application/json: schema: $ref: '#/components/schemas/DocumentVerse' '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: >- Le référentiel refuse (référence déjà prise, émetteur ou instrument rattaché inconnu de ce tenant — la muraille ne révèle rien) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/documents/{document}/analyses: post: operationId: analyserUnDocument summary: Analyser un document versé — l'analyseur propose, le référentiel dispose. description: >- Le temps 2 : l'analyseur (un adaptateur outillé, versionné — jamais une autorité) lit le contenu archivé et produit une proposition de gestes d'administration, chacun localisé dans le document et rapproché de l'état courant (nouveau, écart, ou conforme — le conforme est un constat, il ne s'examine pas). Rien n'est appliqué. Ré-analyser produit une analyse de plus — jamais l'écrasement d'une précédente. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/document' requestBody: required: true content: application/json: schema: type: object required: [analyse, analyse_le] properties: analyse: type: string minLength: 1 description: L'identifiant de l'analyse — unique chez ce tenant. analyse_le: type: string format: date description: La date de l'analyse — les dates viennent de l'appelant. responses: '201': description: L'analyse est produite et enregistrée — ses gestes attendent l'examen. content: application/json: schema: $ref: '#/components/schemas/AnalyseDeDocument' '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: Le référentiel refuse (document inconnu de ce tenant, identifiant d'analyse déjà pris) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/analyses/{analyse}: get: operationId: consulterUneAnalyse summary: Consulter une analyse — ses gestes, leurs rapprochements, leurs sorts. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/analyse' responses: '200': description: L'analyse, gestes et sorts compris. content: application/json: schema: $ref: '#/components/schemas/AnalyseDeDocument' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '404': description: L'analyse est inconnue de ce tenant. content: application/json: schema: $ref: '#/components/schemas/Erreur' /tenants/{tenant}/analyses/{analyse}/gestes/{numero}/sort: post: operationId: examinerUnGeste summary: Examiner un geste proposé — appliquer, amender, ou écarter. description: >- Le temps 3, geste par geste : appliquer (le geste part par la porte d'administration ordinaire, la provenance documentaire posée), amender puis appliquer (le valideur corrige la donnée — la comparaison proposé/appliqué se lit), ou écarter (motivé). Un rejet du cœur à l'application vaut écart, avec le motif du cœur. Un geste n'a qu'un sort — jamais de ré-examen ; un constat conforme ne s'examine pas. L'application d'une annonce d'événement publie son fait ordinaire, dans la même transaction. security: - authentification: [instruments:administration] parameters: - $ref: '#/components/parameters/tenant' - $ref: '#/components/parameters/analyse' - name: numero in: path required: true description: Le numéro du geste dans l'analyse. schema: type: integer minimum: 1 responses: '200': description: Le sort est rendu — appliqué (l'état a changé), amendé, ou écarté. content: application/json: schema: $ref: '#/components/schemas/GesteExamine' '400': description: La demande est irrecevable — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée. '403': description: L'identité présentée n'a pas la famille d'accès administration. '422': description: >- Le référentiel refuse (analyse ou geste inconnu, sort déjà rendu, constat conforme, amendement d'une autre sorte que le geste) — motivé. content: application/json: schema: $ref: '#/components/schemas/Erreur' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SortAExaminer'components: parameters: tenant: name: tenant in: path required: true description: Le teneur de compte — la muraille, aucun geste ne la franchit. schema: type: string minLength: 1 instrument: name: instrument in: path required: true description: L'identifiant publié de l'instrument chez ce tenant. schema: type: string minLength: 1 document: name: document in: path required: true description: La référence du document chez ce tenant. schema: type: string minLength: 1 analyse: name: analyse in: path required: true description: L'identifiant de l'analyse chez ce tenant. schema: type: string minLength: 1 evenement: name: evenement in: path required: true description: L'identifiant publié de l'événement chez ce tenant. schema: type: string minLength: 1 securitySchemes: authentification: type: http scheme: bearer description: >- L'exigence : tout appel est authentifié (401 sans identité) et autorisé par famille d'accès (403 hors famille) — chaque opération déclare sa famille en portée, sous la forme instruments:famille ; le jeton porte le tenant unique et les familles accordées. Le mécanisme est OIDC ; sa déclinaison relève de l'assemblage. schemas: DemandeDeReferencement: type: object required: [instrument, libelle, nature] properties: instrument: type: string minLength: 1 description: L'identifiant publié — unique chez ce tenant, stable à vie. libelle: type: string minLength: 1 nature: type: string enum: [opcvm, ccb, devise] forme: type: string enum: [fcpe_diversifie, fcpe_actionnariat, sicav] description: Obligatoire pour un OPCVM. isin: type: string description: Le code ISIN, s'il existe — OPCVM seulement. entreprise_emettrice: type: string description: L'identifiant publié de l'émettrice — obligatoire pour le seul FCPE d'actionnariat. entreprise_debitrice: type: string description: L'identifiant publié de la débitrice — obligatoire pour un CCB. accord_participation: type: string description: L'identifiant publié de l'accord — obligatoire pour un CCB (le grain entreprise × accord). CaracteristiqueAEtablir: type: object required: [type, du, provenance] properties: type: type: string enum: [periodicite_de_publication, heure_limite_de_collecte, classification, frais_du_fonds, contrainte_solidaire, taux_d_interet] description: Le type commande les champs — la typologie est fermée. du: type: string format: date au: type: string format: date description: La borne de fin, exclue — absente si la période est ouverte. provenance: $ref: '#/components/schemas/Provenance' periodicite: type: string enum: [quotidienne, hebdomadaire, mensuelle] heure_limite: type: string description: Le cut-off (HH:MM). classification: type: string droits_entree_pb: type: integer droits_sortie_pb: type: integer part_minimale_pb: type: integer part_maximale_pb: type: integer taux_pb: type: integer convention: type: string ReetablissementDeCaracteristique: description: La caractéristique corrigée, complète — et le motif de la correction. allOf: - $ref: '#/components/schemas/CaracteristiqueAEtablir' - type: object required: [motif] properties: motif: type: string minLength: 1 description: Le motif de la correction — une correction se lit. RestrictionAPoser: type: object required: [type, du, provenance] properties: type: type: string enum: [ferme_aux_souscriptions, ferme_aux_rachats, suspendu, ferme_aux_nouveaux_versements] du: type: string format: date au: type: string format: date description: La borne de fin, exclue — absente pour une restriction ouverte (levée plus tard). provenance: $ref: '#/components/schemas/Provenance' LeveeDeRestriction: type: object required: [type, levee_le] properties: type: type: string enum: [ferme_aux_souscriptions, ferme_aux_rachats, suspendu, ferme_aux_nouveaux_versements] levee_le: type: string format: date description: La date de levée — borne exclue de la période de la restriction. PublicationDeValeur: type: object required: [date_calcul, valeur_part_ue6] properties: date_calcul: type: string format: date valeur_part_ue6: type: integer description: La valeur d'une part, en micro-euros — jamais de flottant. CorrectionDeValeur: type: object required: [date_calcul, valeur_part_ue6, motif] properties: date_calcul: type: string format: date valeur_part_ue6: type: integer motif: type: string minLength: 1 description: Le motif de la correction — obligatoire dès le rang 2. AnnonceDEvenement: type: object required: [evenement, type, annonce_le, effet_le, decision] properties: evenement: type: string minLength: 1 description: L'identifiant publié de l'événement — unique chez ce tenant. type: type: string enum: [fusion, scission, reajustement, distribution] annonce_le: type: string format: date effet_le: type: string format: date description: La date d'effet — jamais avant l'annonce. corrige: type: string description: L'événement corrigé (prononcé ou dénoué), pour un correctif. etabli_par_document: type: string description: La référence du document qui établit l'événement, le cas échéant. decision: description: La décision typée — sa forme suit le type de l'événement. oneOf: - $ref: '#/components/schemas/DecisionDeFusion' - $ref: '#/components/schemas/DecisionDeScission' - $ref: '#/components/schemas/DecisionDeReajustement' - $ref: '#/components/schemas/DecisionDeDistribution' DecisionDeFusion: type: object required: [absorbant, absorbes] properties: absorbant: type: string absorbes: type: array minItems: 1 items: type: object required: [instrument, parite_p6] properties: instrument: type: string parite_p6: type: integer minimum: 1 description: La parité d'échange, en millionièmes — strictement positive. DecisionDeScission: type: object required: [source, cibles] properties: source: type: string cibles: type: array minItems: 1 items: type: object required: [instrument, cle_repartition_p6] properties: instrument: type: string cle_repartition_p6: type: integer minimum: 1 description: La clé de répartition, en millionièmes — les clés somment à l'unité. DecisionDeReajustement: type: object required: [fonds, coefficient_p6] properties: fonds: type: string coefficient_p6: type: integer minimum: 1 description: Le coefficient, en millionièmes — division ou regroupement. DecisionDeDistribution: type: object required: [fonds, coupon_part_ue6] properties: fonds: type: string coupon_part_ue6: type: integer minimum: 1 description: Le coupon par part, en micro-euros. Denouement: type: object required: [denoue_le] properties: denoue_le: type: string format: date description: La date du dénouement constaté. Provenance: type: object required: [source] properties: source: type: string enum: [document, saisie, flux_de_place] document: type: string description: La référence du document — obligatoire quand la source est un document. DemandeDeReferencementDIntervenant: type: object required: [intervenant, libelle] properties: intervenant: type: string minLength: 1 description: L'identifiant publié de l'intervenant — unique chez ce tenant. libelle: type: string minLength: 1 VersementDeDocument: type: object required: [document, type, no_version, date_edition, date_application, emetteur, contenu_texte] properties: document: type: string minLength: 1 description: La référence du document — unique chez ce tenant, une édition = un document. type: type: string enum: [prospectus, document_d_informations_cles, reglement_du_fonds, lettre_aux_porteurs] no_version: type: integer minimum: 1 date_edition: type: string format: date date_application: type: string format: date emetteur: type: string minLength: 1 description: L'identifiant publié de l'intervenant émetteur — référencé chez ce tenant. instruments: type: array description: Les instruments rattachés — déclarés au versement, complétables à l'examen. items: type: string contenu_texte: type: string minLength: 1 description: >- Le contenu textuel du document — archivé derrière l'adaptateur de stockage, jamais dans le référentiel ; l'empreinte est calculée au versement. DocumentVerse: type: object required: [tenant, document, empreinte] properties: tenant: type: string document: type: string description: La référence servie — celle du versement, ou celle du document reconnu par l'empreinte. empreinte: type: string description: L'empreinte du contenu (SHA-256, hexadécimal). AnalyseDeDocument: type: object required: [tenant, analyse, document, outillage, version_outillage, analyse_le, examinee, gestes] properties: tenant: type: string analyse: type: string document: type: string description: La référence du document analysé. outillage: type: string description: L'identité de l'analyseur — un adaptateur, jamais une autorité. version_outillage: type: string analyse_le: type: string format: date examinee: type: boolean description: Vrai quand chaque geste (hors constats conformes) a son sort. gestes: type: array items: $ref: '#/components/schemas/GestePropose' GestePropose: type: object required: [numero, geste, rapprochement, confiance_pb, emplacement, extrait] properties: numero: type: integer minimum: 1 geste: type: string enum: [referencer_instrument, etablir_caracteristique, reetablir_caracteristique, poser_restriction, lever_restriction, annoncer_evenement] description: Le geste d'administration visé — jamais un geste inventé ; jamais une valeur liquidative. donnees: type: object description: Les données extraites, aux noms filaires du geste visé. rapprochement: type: string enum: [nouveau, ecart, conforme] description: Le conforme est un constat — il ne s'examine pas. confiance_pb: type: integer minimum: 0 maximum: 10000 description: L'indice de confiance de l'extraction, en points de base. emplacement: type: string description: Où, dans le document. extrait: type: string description: L'extrait cité — ce que le valideur lit en face du geste. sort: $ref: '#/components/schemas/SortRendu' SortAExaminer: type: object required: [sort] properties: sort: type: string enum: [applique, amende, ecarte] motif: type: string description: Obligatoire pour écarter. donnees: type: object description: Les données corrigées — obligatoires pour amender, même sorte que le geste proposé. SortRendu: type: object required: [sort] properties: sort: type: string enum: [applique, amende, ecarte] motif: type: string donnees: type: object description: Les données réellement appliquées, si amendées — la comparaison proposé/appliqué se lit. GesteExamine: type: object required: [tenant, analyse, numero, sort] properties: tenant: type: string analyse: type: string numero: type: integer sort: $ref: '#/components/schemas/SortRendu' Erreur: type: object required: [motif] properties: motif: type: string description: Le motif, qui nomme le champ, l'identifiant ou l'invariant en cause.