consultation-du-referentiel
Interface synchrone (OpenAPI) — version 0.7.0. Producteur : instruments. Consommateurs déclarés : carnet-ordres, operations, tenue-de-compte, fiscalite, entreprise, conformite, relation-tiers, banque-flux-financiers, backoffice.
Le référentiel sert ce qu’il publie — l’identité (nature, état du cycle, unité de quantité), la structure (véhicule, compartiment, relations de structure), les caractéristiques applicables à une date (avec leur provenance), la règle de valorisation résolue, les restrictions de négociabilité et les capacités résolues, l’horizon des occurrences de valorisation prévues — par instrument et en transverse avec leur sort —, la valeur applicable à toute date passée comprise (l’exigence « date de VL client »), la série des valeurs rangs compris, les documents de référence et les intervenants — sans jamais exposer sa structure interne. Un instrument à un terminus (annulé, absorbé, liquidé) reste servi : l’identifiant publié est stable à vie. UN INSTRUMENT PAR CATÉGORIE DE PARTS : quand la documentation du fonds différencie les parts (A, I…), chaque catégorie EST un instrument — un identifiant, une série de valeurs, jamais de seconde dimension. Toute réponse est en identifiants publiés et entiers à unité suffixée. Le teneur de compte ne se donne jamais dans l’adresse : l’assemblage le déduit de l’hôte, de l’audience ou d’un en-tête.
La spécification
Section intitulée « La spécification »openapi: 3.1.0info: title: instruments — consultation du référentiel version: 0.7.0 summary: >- L'identité, la structure et les capacités résolues, les caractéristiques à date, la règle de valorisation résolue, l'horizon des valorisations prévues, la valeur applicable à toute date, les documents et les intervenants. description: >- Le référentiel sert ce qu'il publie — l'identité (nature, état du cycle, unité de quantité), la structure (véhicule, compartiment, relations de structure), les caractéristiques applicables à une date (avec leur provenance), la règle de valorisation résolue, les restrictions de négociabilité et les capacités résolues, l'horizon des occurrences de valorisation prévues — par instrument et en transverse avec leur sort —, la valeur applicable à toute date passée comprise (l'exigence « date de VL client »), la série des valeurs rangs compris, les documents de référence et les intervenants — sans jamais exposer sa structure interne. Un instrument à un terminus (annulé, absorbé, liquidé) reste servi : l'identifiant publié est stable à vie. UN INSTRUMENT PAR CATÉGORIE DE PARTS : quand la documentation du fonds différencie les parts (A, I…), chaque catégorie EST un instrument — un identifiant, une série de valeurs, jamais de seconde dimension. Toute réponse est en identifiants publiés et entiers à unité suffixée. Le teneur de compte ne se donne jamais dans l'adresse : l'assemblage le déduit de l'hôte, de l'audience ou d'un en-tête. x-producteurs: - instruments x-consommateurs: - composant: carnet-ordres - composant: operations - composant: tenue-de-compte - composant: fiscalite - composant: entreprise - composant: conformite - composant: relation-tiers - composant: banque-flux-financiers - composant: backoffice statut: réel hors service — le module Instruments de Tempo (19 vues) tourne sur simulation, le composant renaîtra de la conception reprise # Le différentiel de compatibilité exige que toute rupture entre # deux versions publiées soit DÉCLARÉE ici. La règle 0.x admet la rupture en version # mineure ; aucun consommateur n'est né. Le module supprimé avec l'ancien composant # avait publié jusqu'en 0.5.0 : la numérotation continue au-dessus. x-ruptures: - version: 0.7.0 rupture: >- la catégorie de parts disparaît comme dimension : paramètres `categorie` retirés (horizon, valeur applicable) ; propriété `categorie` retirée des valeurs, des occurrences, des documents et des publications ; schéma CategorieDeParts et `structure.categories` remplacés par `structure.categorie` (le libellé du corps de parts servi) ; portées et niveaux réduits (règle résolue, restriction, plafonnement, niveau d'attache documentaire) motif: >- Le consommateur gagne l'identifiant unique ; les lignes sœurs d'un fonds se découvrent par le filtre `vehicule` de la collection. - version: 0.7.0 rupture: "propriété ajoutée : structure.vehicule.est_compartimente (booléen requis à terme)" motif: >- Le compartimentage est déclaré au véhicule — jamais de compartiment fantôme ; l'absence de compartiment sous un véhicule non compartimenté est une information, pas une lacune. - version: 0.6.0 rupture: "chemins déplacés : le préfixe /tenants/{tenant} disparaît de tous les chemins" motif: >- Le tenant n'entre jamais dans le chemin d'une interface : un processus ne sert qu'un teneur de compte, le routage se fait par l'hôte, l'audience ou l'en-tête. La propriété tenant quitte également toutes les réponses. - version: 0.6.0 rupture: "propriété retirée : #/components/schemas/Vehicule/properties/entreprise_emettrice" motif: >- Remplacée par les relations sous-jacent datées et sourcées du modèle convergé : le rôle du titre, le mode d'exposition et la provenance remplacent un identifiant nu. Le retrait était annoncé dès la 0.4.0. - version: 0.6.0 rupture: "schéma remanié : #/components/schemas/RegleValorisationResolue — fuseau requis avec l'heure limite, calendriers affectés servis" motif: >- Une heure locale sans fuseau n'est pas une donnée ; la règle résolue sert désormais ses affectations de calendriers (calendrier, version, sémantique), le contrat des calendriers eux-mêmes étant consultation-des-calendriers.paths: /instruments: get: operationId: rechercherLesInstruments summary: La liste des instruments — filtres, pagination, total. description: >- La collection du référentiel. La recherche par référence externe (ISIN, code de place) tient lieu de résolution d'identifiant : chaque catégorie de parts étant un instrument, un ISIN mène à exactement une ligne. Le filtre `vehicule` sert les lignes sœurs d'un même fonds. Une recherche vide n'est pas une erreur. security: - authentification: [instruments:consultation] parameters: - name: nature in: query required: false schema: { type: string, enum: [placement_collectif, ccb, devise] } - name: etat in: query required: false description: L'état du cycle (un terminus reste servi). schema: { type: string, enum: [en_preparation, commercialisable, annule, absorbe, liquide] } - name: vehicule in: query required: false schema: { type: string, minLength: 1 } - name: societe_de_gestion in: query required: false description: L'intervenant jouant le rôle de société de gestion à la date du jour. schema: { type: string, minLength: 1 } - name: regime_juridique in: query required: false schema: { type: string, enum: [l_214_164, l_214_165, l_214_165_1, reprise_l_3332_16] } - name: profil in: query required: false schema: { type: string, enum: [solidaire, relais, garanti, a_formule, nourricier] } - name: restriction in: query required: false description: Ne servir que les instruments portant une restriction en vigueur de ce type. schema: { type: string, enum: [ferme_aux_souscriptions, ferme_aux_rachats, suspendu, ferme_aux_nouveaux_versements] } - name: reference in: query required: false description: Une référence externe exacte — l'ISIN de l'instrument. schema: { type: string, minLength: 1 } - name: nom in: query required: false description: Une recherche sur le libellé. schema: { type: string, minLength: 1 } - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/taille' responses: '200': description: La page demandée — vide si aucun instrument ne répond. content: application/json: schema: type: object required: [lignes, total] properties: lignes: type: array items: { $ref: '#/components/schemas/InstrumentEnListe' } total: type: [integer, 'null'] description: Le nombre total du filtre — null quand on ne sait pas compter à coût raisonnable. '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } /instruments/{instrument}: get: operationId: consulterLaFiche summary: >- La fiche d'un instrument à une date — identité, structure, caractéristiques, règle de valorisation résolue, restrictions, capacités résolues. security: - authentification: [instruments:consultation] parameters: - $ref: '#/components/parameters/instrument' - name: date in: query required: true description: >- La date de consultation (AAAA-MM-JJ) — toute consommation de donnée datée est datée ; la date vient toujours de l'appelant. schema: { type: string, format: date } responses: '200': description: La fiche à la date demandée. content: application/json: schema: { $ref: '#/components/schemas/FicheDInstrument' } '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } '404': { $ref: '#/components/responses/inconnu' } /instruments/{instrument}/calendrier: get: operationId: consulterLHorizonDeValorisation summary: L'horizon des occurrences de valorisation prévues d'un instrument, sur une période. description: >- Le consommateur n'a jamais à recalculer un calendrier : le référentiel établit, publie et explique. Chaque occurrence porte son identifiant stable, ses dates, son heure limite fusée, son statut et son lignage ; l'absence d'occurrence à une date est servie MOTIVÉE — « inconnu » n'est jamais « ouvert » par défaut. security: - authentification: [instruments:consultation] parameters: - $ref: '#/components/parameters/instrument' - $ref: '#/components/parameters/du' - $ref: '#/components/parameters/au' responses: '200': description: L'horizon de la période — occurrences et absences motivées. content: application/json: schema: { $ref: '#/components/schemas/HorizonDeValorisation' } '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } '404': description: >- L'instrument est inconnu, ou n'a pas de règle de valorisation (un CCB, une devise) — l'absence est motivée. content: application/json: schema: { $ref: '#/components/schemas/Erreur' } /echeances-de-valorisation: get: operationId: rechercherLesEcheancesDeValorisation summary: Les occurrences de valorisation en transverse — la soirée, pas le fonds. description: >- Toutes les occurrences du tenant sur une période, avec leur SORT SERVI : reçue (une valeur y répond), attendue, ou en retard — le seuil du retard est une règle du domaine, jamais un calcul du consommateur. Sans bornes, la soirée en cours et l'échéance suivante. La lecture de masse qui répond à la rafale calendaire du carnet d'ordres et à l'écran des valorisations du back-office. security: - authentification: [instruments:consultation] parameters: - name: du in: query required: false schema: { type: string, format: date } - name: au in: query required: false description: La borne de fin, exclue. schema: { type: string, format: date } - name: instrument in: query required: false schema: { type: string, minLength: 1 } - name: statut in: query required: false schema: { type: string, enum: [prevue, confirmee, reportee, annulee, suspendue] } - name: sort in: query required: false schema: { type: string, enum: [recue, attendue, en_retard] } - name: societe_de_gestion in: query required: false schema: { type: string, minLength: 1 } - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/taille' responses: '200': description: La page demandée, dans l'ordre des dates puis des instruments. content: application/json: schema: type: object required: [lignes, total] properties: lignes: type: array items: { $ref: '#/components/schemas/EcheanceDeValorisation' } total: type: [integer, 'null'] '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } /instruments/{instrument}/valeur: get: operationId: consulterLaValeurApplicable summary: La valeur applicable à une date — toute date, passée comprise. description: >- Avec `date`, le dernier rang publié pour la date de calcul demandée (la « date de VL client » d'une opération), avec son motif s'il corrige ; l'unité pour une devise ; l'absence motivée sinon — jamais d'interpolation. Avec `avant`, la DERNIÈRE VALEUR PUBLIÉE STRICTEMENT AVANT la date — l'ensemencement du prix de référence d'une strate fiscale. Exactement l'un des deux paramètres. security: - authentification: [instruments:consultation] parameters: - $ref: '#/components/parameters/instrument' - name: date in: query required: false description: La date de calcul demandée. schema: { type: string, format: date } - name: avant in: query required: false description: Servir la dernière valeur dont la date de calcul est strictement antérieure. schema: { type: string, format: date } responses: '200': description: La valeur servie. content: application/json: schema: { $ref: '#/components/schemas/ValeurApplicable' } '400': description: date et avant absents tous deux, ou présents tous deux, ou mal formés — le motif nomme le champ. content: application/json: schema: { $ref: '#/components/schemas/Erreur' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } '404': description: >- L'instrument est inconnu, ou aucune valeur n'est applicable (l'absence est motivée — la règle de valorisation et son calendrier font foi). content: application/json: schema: { $ref: '#/components/schemas/Erreur' } /instruments/{instrument}/valeurs: get: operationId: consulterLaSerie summary: La série datée des valeurs, rangs compris — l'historique des corrections se lit. description: >- Chaque publication porte sa date de calcul, son rang, sa provenance (flux de place, saisie) et, pour une valeur administrée de CCB, ses paramètres de calcul (taux, convention, producteur). security: - authentification: [instruments:consultation] parameters: - $ref: '#/components/parameters/instrument' - $ref: '#/components/parameters/du' - $ref: '#/components/parameters/au' responses: '200': description: Les publications de la période, dans l'ordre des dates puis des rangs. content: application/json: schema: type: array items: { $ref: '#/components/schemas/Publication' } '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } '404': { $ref: '#/components/responses/inconnu' } /valeurs-applicables: get: operationId: consulterLesValeursApplicablesEnMasse summary: Les valeurs applicables de tous les instruments à une date — la lecture de valorisation. description: >- Une ligne par instrument : la valeur applicable à la date, ou l'absence motivée. La lecture de masse de la valorisation des positions (position × valeur) et des éditions ; elle répond à la question de la consultation par lots pour les valeurs. security: - authentification: [instruments:consultation] parameters: - name: date in: query required: true schema: { type: string, format: date } - name: nature in: query required: false schema: { type: string, enum: [placement_collectif, ccb] } - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/taille' responses: '200': description: La page demandée. content: application/json: schema: type: object required: [date, lignes, total] properties: date: { type: string, format: date } lignes: type: array items: { $ref: '#/components/schemas/ValeurEnMasse' } total: type: [integer, 'null'] '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } /instruments/{instrument}/documents: get: operationId: consulterLesDocumentsDeLInstrument summary: Les documents de référence d'un instrument — métadonnées seulement. security: - authentification: [instruments:consultation] parameters: - $ref: '#/components/parameters/instrument' responses: '200': description: Les documents, du plus récent au plus ancien. content: application/json: schema: type: array items: { $ref: '#/components/schemas/DocumentDeReference' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } '404': { $ref: '#/components/responses/inconnu' } /documents: get: operationId: rechercherLesDocuments summary: Les documents de référence en transverse — la chaîne documentaire du tenant. security: - authentification: [instruments:consultation] parameters: - name: instrument in: query required: false schema: { type: string, minLength: 1 } - name: type in: query required: false schema: { type: string, enum: [prospectus, dic, reglement_du_fonds, lettre_aux_porteurs] } - name: niveau_d_attache in: query required: false schema: { type: string, enum: [vehicule, instrument] } - name: etat_d_analyse in: query required: false schema: { type: string, enum: [a_analyser, analyse, ecart_detecte] } - name: recu_depuis in: query required: false schema: { type: string, format: date } - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/taille' responses: '200': description: La page demandée. content: application/json: schema: type: object required: [lignes, total] properties: lignes: type: array items: { $ref: '#/components/schemas/DocumentDeReference' } total: type: [integer, 'null'] '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } /evenements-instrument: get: operationId: rechercherLesEvenementsDInstrument summary: Les événements de la vie des instruments — liste filtrée. security: - authentification: [instruments:consultation] parameters: - name: etat in: query required: false schema: { type: string, enum: [annonce, prononce, denoue, annule] } - name: type in: query required: false schema: { type: string, enum: [fusion, scission, reajustement, distribution] } - name: instrument in: query required: false description: Servir les événements dont l'instrument est touché, quel que soit son rôle. schema: { type: string, minLength: 1 } - name: reference in: query required: false description: L'identifiant publié de l'événement. schema: { type: string, minLength: 1 } - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/taille' responses: '200': description: La page demandée. content: application/json: schema: type: object required: [lignes, total] properties: lignes: type: array items: { $ref: '#/components/schemas/EvenementDInstrument' } total: type: [integer, 'null'] '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } /evenements-instrument/{evenement}: get: operationId: consulterUnEvenement summary: Un événement d'instrument — le chapeau, sa décision typée, son état de cycle, ses transitions ouvertes. security: - authentification: [instruments:consultation] parameters: - name: evenement in: path required: true schema: { type: string, minLength: 1 } responses: '200': description: L'événement. content: application/json: schema: { $ref: '#/components/schemas/EvenementDInstrument' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' } '404': { $ref: '#/components/responses/inconnu' } /intervenants: get: operationId: rechercherLesIntervenants summary: Les intervenants du tenant et leurs rôles datés par véhicule. description: >- Le référentiel des intervenants (l'identité générale vit chez la relation tiers ; le domaine détient le rôle sur un véhicule). La lecture qui répond aux rattachements de la tenue de compte, aux clés du carnet d'ordres et aux éditions. security: - authentification: [instruments:consultation] parameters: - name: role in: query required: false schema: { $ref: '#/components/schemas/RoleDIntervenant' } - name: vehicule in: query required: false schema: { type: string, minLength: 1 } - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/taille' responses: '200': description: La page demandée. content: application/json: schema: type: object required: [lignes, total] properties: lignes: type: array items: { $ref: '#/components/schemas/Intervenant' } total: type: [integer, 'null'] '400': { $ref: '#/components/responses/irrecevable' } '401': { $ref: '#/components/responses/sansIdentite' } '403': { $ref: '#/components/responses/horsFamille' }components: parameters: instrument: name: instrument in: path required: true description: L'identifiant publié de l'instrument — stable à vie. schema: { type: string, minLength: 1 } du: name: du in: query required: true schema: { type: string, format: date } au: name: au in: query required: true description: La borne de fin, exclue. schema: { type: string, format: date } page: name: page in: query required: false description: La page demandée, à partir de 1. schema: { type: integer, minimum: 1, default: 1 } taille: name: taille in: query required: false description: Le nombre de lignes par page. schema: { type: integer, minimum: 1, maximum: 500, default: 50 } securitySchemes: authentification: type: http scheme: bearer description: >- L'exigence : tout appel est authentifié (401) 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 mécanisme est OIDC ; sa déclinaison relève de l'assemblage. responses: irrecevable: description: La demande est irrecevable (date mal formée, bornes incohérentes…) — le motif nomme le champ. content: application/json: schema: { $ref: '#/components/schemas/Erreur' } sansIdentite: description: Aucune identité présentée (l'exigence est du contrat, le mécanisme de l'assemblage). horsFamille: description: L'identité présentée n'a pas la famille d'accès instruments:consultation. inconnu: description: La ressource est inconnue de ce tenant — rien n'existe à travers la muraille. content: application/json: schema: { $ref: '#/components/schemas/Erreur' } schemas: InstrumentEnListe: type: object required: [instrument, libelle, nature, etat] properties: instrument: { type: string, description: L'identifiant publié. } libelle: { type: string } nature: { type: string, enum: [placement_collectif, ccb, devise] } etat: { type: string, enum: [en_preparation, commercialisable, annule, absorbe, liquide] } isin: { type: string, description: L'ISIN de l'instrument, s'il vit à ce niveau. } vehicule: type: object description: Le véhicule porteur — absent pour un CCB et une devise. required: [vehicule, type] properties: vehicule: { type: string } type: { type: string, enum: [fcpe, sicavas] } nom_legal: { type: string } restrictions_en_vigueur: type: array description: Les types de restriction en vigueur au jour de la lecture — le détail vit à la fiche. items: { type: string, enum: [ferme_aux_souscriptions, ferme_aux_rachats, suspendu, ferme_aux_nouveaux_versements] } derniere_valeur: type: object description: La dernière valeur applicable de l'instrument. required: [date_calcul, valeur_part_ue6] properties: date_calcul: { type: string, format: date } valeur_part_ue6: { type: integer } FicheDInstrument: type: object required: [instrument, libelle, nature, etat, date, unite, decimales, caracteristiques, restrictions, capacites] properties: instrument: type: string description: L'identifiant publié. libelle: { type: string } nature: type: string enum: [placement_collectif, ccb, devise] isin: type: string description: >- Le code ISIN, s'il existe — celui de la catégorie de parts que l'instrument représente (chaque catégorie de parts est un instrument). unite: type: string enum: [part, unite_monetaire] description: >- L'unité dans laquelle toute quantité de cet instrument s'exprime chez les consommateurs — l'unité que la tenue de compte et la passerelle partenaires citent sans jamais la redéfinir. decimales: type: integer minimum: 0 description: >- La précision de l'unité : une quantité s'échange en entier à l'échelle 10^-decimales (millionièmes de part : 6). entreprise_debitrice: type: string description: L'identifiant publié de la débitrice — CCB seulement. accord_participation: type: string description: L'identifiant publié de l'accord — CCB seulement. etat: type: string enum: [en_preparation, commercialisable, annule, absorbe, liquide] description: L'état du cycle — un terminus reste servi à jamais. date: type: string format: date description: La date de consultation servie. structure: $ref: '#/components/schemas/Structure' regle_valorisation: $ref: '#/components/schemas/RegleValorisationResolue' caracteristiques: type: array items: { $ref: '#/components/schemas/CaracteristiqueApplicable' } restrictions: type: array description: Les restrictions de négociabilité en vigueur à la date — cumulables. items: { $ref: '#/components/schemas/RestrictionEnVigueur' } capacites: type: array description: >- LA RÉSOLUTION SERVIE : pour chaque capacité, le verdict à la date, dérivé de l'état du cycle, des restrictions en vigueur et de la nature — le consommateur ne dérive jamais l'« ordonnabilité » lui-même. La capacité intrinsèque de l'instrument, jamais l'ouverture contextuelle d'un dispositif (domaine Entreprise) ni l'admissibilité d'une instruction (carnet d'ordres). items: { $ref: '#/components/schemas/CapaciteResolue' } Structure: type: object description: >- La structure du placement collectif — le véhicule qui porte l'instrument, le compartiment le cas échéant, la catégorie de parts que la ligne représente. Absente pour un CCB et une devise. Le véhicule est servi RÉSOLU à la date : régime, profils et rôles sont ce qui s'applique — jamais l'arbre des versions. Les lignes sœurs du même fonds se découvrent par le filtre `vehicule` de la collection. properties: vehicule: $ref: '#/components/schemas/Vehicule' compartiment: type: object description: >- Le compartiment qui porte la ligne, quand le véhicule est compartimenté — la subdivision du patrimoine ; jamais servi pour un véhicule qui ne se déclare pas compartimenté. required: [compartiment] properties: compartiment: { type: string, minLength: 1 } libelle: { type: string } categorie: type: object description: >- La catégorie de parts que la ligne représente, quand la documentation du fonds différencie les parts — la subdivision des droits ; absente pour une catégorie de parts unique. Son identité (devise, politique de revenus) est celle de la ligne ; ses frais se lisent aux caractéristiques applicables de l'instrument (frais_du_fonds), jamais ici — une seule source, à date. required: [libelle] properties: libelle: { type: string, minLength: 1 } devise: { type: string } politique_revenus: { type: string } Vehicule: type: object description: >- L'enveloppe juridique qui porte le placement collectif et émet les parts — pas un instrument : rien ne s'y détient, il ne publie aucune valeur. required: [vehicule, type] properties: vehicule: { type: string, minLength: 1 } type: type: string enum: [fcpe, sicavas] description: Le type du véhicule — un OPC maître n'est jamais tenu, il n'apparaît qu'en cible de la relation maître. nom_legal: { type: string } est_compartimente: type: boolean description: >- Le compartimentage déclaré par la documentation du fonds — vrai, chaque ligne vit sur un compartiment ; faux, aucun compartiment n'existe. agrement: type: string description: La référence de l'agrément, quand il est établi. regime_juridique: type: string enum: [l_214_164, l_214_165, l_214_165_1, reprise_l_3332_16] description: >- Le régime juridique explicite d'un FCPE — liste fermée par le logiciel ; sa mutation (le fonds relais) est un ré-établissement tracé, pas un état. profils: type: array description: >- Les profils opérationnels datés en vigueur — cumulables. Le profil nourricier se DÉDUIT de l'existence d'une relation maître effective, il ne se saisit pas. items: { type: string, enum: [solidaire, relais, garanti, a_formule, nourricier] } etat: type: string enum: [en_preparation, agree, ouvert, abandonne, dissous] intervenants: type: array description: Les rôles d'intervenants en vigueur à la date, pour le fonds entier. items: { $ref: '#/components/schemas/RoleEnVigueur' } relation_maitre: type: object description: >- La relation maître/nourricier effective à la date — au plus une. Le maître est une référence publiée (jamais tenu au référentiel). required: [maitre, du] properties: maitre: type: object required: [nom] properties: nom: { type: string } isin: { type: string } du: { type: string, format: date } provenance: { $ref: '#/components/schemas/Provenance' } sous_jacents: type: array description: >- Les relations sous-jacent d'un FCPE d'actionnariat : le titre visé est une référence publiée — l'exposition PRÉVUE par la documentation, jamais l'inventaire du portefeuille réel. items: type: object required: [titre, role_du_titre, mode_exposition, du, provenance] properties: titre: type: object description: La référence publiée du titre (émetteur, identifiants externes). required: [emetteur] properties: emetteur: { type: string } isin: { type: string } role_du_titre: type: string enum: [sous_jacent_principal, sous_jacent_de_formule, titre_de_reference, actif_de_couverture] mode_exposition: type: string enum: [direct, indirect, garanti, a_effet_de_levier] du: { type: string, format: date } au: { type: string, format: date } provenance: { $ref: '#/components/schemas/Provenance' } orientation_gestion: type: object description: L'exposition prévue par le règlement d'un FCPE d'actionnariat — seuils ou fourchettes, à la date. properties: part_minimale_pb: { type: integer } part_maximale_pb: { type: integer } provenance: { $ref: '#/components/schemas/Provenance' } RoleEnVigueur: type: object required: [role, intervenant, nom, du] properties: role: { $ref: '#/components/schemas/RoleDIntervenant' } intervenant: { type: string, description: L'identifiant de l'intervenant chez ce tenant. } nom: { type: string } du: { type: string, format: date } au: { type: string, format: date, description: La borne de fin, exclue — absente si le rôle court. } RoleDIntervenant: type: string enum: [societe_de_gestion, depositaire, valorisateur, agent_de_transfert, centralisateur, teneur_compte_emission, commissaire_aux_comptes, conseil_de_surveillance] description: >- La nomenclature des rôles structurels — propriété du domaine ; la relation tiers détient l'identité générale des acteurs et consomme ces rôles sans les modifier. Intervenant: type: object required: [intervenant, nom, actif, roles] properties: intervenant: { type: string } nom: { type: string } actif: { type: boolean, description: Un intervenant ne se supprime jamais — il se désactive. } roles: type: array description: Les rôles datés joués par véhicule. items: allOf: - $ref: '#/components/schemas/RoleEnVigueur' - type: object required: [vehicule] properties: vehicule: { type: string } RegleValorisationResolue: type: object description: >- La règle de valorisation RÉSOLUE applicable à l'instrument : la règle vit au niveau qui porte le patrimoine valorisé d'un seul mouvement — le véhicule non compartimenté ou le compartiment — et s'hérite puis se spécialise ; le service publie toujours la règle résolue, jamais l'arbre. Toutes les lignes d'un même patrimoine partagent leurs échéances. Pour un CCB, la périodicité de la valeur administrée reste une caractéristique datée : ce champ est absent. required: [portee, frequence, heure_limite, fuseau] properties: portee: type: string enum: [vehicule, compartiment, instrument] description: Le niveau auquel la règle est déclarée — celui d'où la résolution part. frequence: type: string enum: [quotidienne, hebdomadaire, mensuelle] ancrage: type: string description: La règle d'ancrage — chaque jour admissible, chaque vendredi, dernier jour ouvré du mois… heure_limite: type: string pattern: '^([01][0-9]|2[0-3]):[0-5][0-9]$' description: >- L'heure limite contractuelle de réception des instructions (HH:MM, 24 h). L'heure limite de service du teneur de compte ne peut lui être postérieure. fuseau: type: string minLength: 1 description: Le fuseau IANA de l'heure limite — une heure locale sans fuseau n'est pas une donnée. convention_report: type: string description: Ce que devient une échéance qui tombe un jour fermé. delai_publication_jours: { type: integer, minimum: 0 } delai_reglement_jours: { type: integer, minimum: 0 } calendriers: type: array description: >- Les affectations de calendriers de la règle résolue — la simple présence d'un lien ne détermine jamais un effet, la sémantique est explicite. Le calendrier lui-même se consulte au contrat consultation-des-calendriers. items: type: object required: [calendrier, version, semantique] properties: calendrier: { type: string } version: { type: string } semantique: type: string enum: [ouverture_requise, fermeture_exclusive, dependance_valorisation, calcul_publication, calcul_reglement, informatif] provenances: type: array description: >- D'où vient chaque élément de la règle résolue — résoudre une règle n'efface jamais la trace documentaire acquise sur les caractéristiques absorbées. items: type: object required: [element, provenance, du] properties: element: type: string enum: [frequence, ancrage, heure_limite, convention_report, delai_publication_jours, delai_reglement_jours, calendriers] provenance: { $ref: '#/components/schemas/Provenance' } du: { type: string, format: date } au: { type: string, format: date } HorizonDeValorisation: type: object required: [instrument, du, au, occurrences, absences] properties: instrument: { type: string } du: { type: string, format: date } au: { type: string, format: date, description: La borne de fin, exclue. } occurrences: type: array items: { $ref: '#/components/schemas/OccurrenceDeValorisation' } absences: type: array description: >- Les dates de la période sans occurrence, chacune MOTIVÉE : l'insuffisance de l'horizon est une anomalie de qualité, jamais une autorisation implicite. items: type: object required: [date, motif] properties: date: { type: string, format: date } motif: type: string enum: [inconnu, ferme, hors_horizon] description: >- inconnu — la date n'est couverte par aucun calendrier obligatoire (elle n'est JAMAIS « ouverte » par défaut) ; ferme — un calendrier l'exclut ; hors_horizon — au-delà de l'horizon glissant matérialisé. OccurrenceDeValorisation: type: object required: [occurrence, date_valorisation, heure_limite, fuseau, statut] properties: occurrence: type: string minLength: 1 description: L'identifiant stable de l'occurrence — la date ne change jamais sous lui. date_valorisation: { type: string, format: date } heure_limite: type: string pattern: '^([01][0-9]|2[0-3]):[0-5][0-9]$' fuseau: { type: string, minLength: 1, description: Le fuseau IANA de l'heure limite. } date_publication_prevue: { type: string, format: date } date_reglement_prevue: { type: string, format: date } statut: type: string enum: [prevue, confirmee, reportee, annulee, suspendue] motif: type: string description: Obligatoire au sens métier pour un report, une annulation, une suspension. occurrence_remplacante: type: string description: >- L'occurrence nouvelle qui porte la date reportée — présente pour un report : jamais de modification en place. lignage: type: object description: Les versions de règles et de calendriers utilisées — l'explicabilité du calcul. EcheanceDeValorisation: allOf: - $ref: '#/components/schemas/OccurrenceDeValorisation' - type: object required: [instrument, sort] properties: instrument: { type: string } sort: type: string enum: [recue, attendue, en_retard] description: >- Le sort SERVI de l'échéance — une valeur y répond (reçue), rien encore (attendue), rien au-delà du seuil de retard du domaine (en retard). valeur_recue_le: type: string format: date-time description: L'instant de la publication de la valeur qui répond, quand le sort est « reçue ». CaracteristiqueApplicable: type: object required: [type, du, provenance] properties: type: type: string enum: [periodicite_de_publication, classification, frais_du_fonds, taux_d_interet, mecanisme_plafonnement_rachats, modalites_d_ordre] description: >- La typologie fermée des caractéristiques datées servies à ce niveau. La périodicité de publication ne concerne que le CCB (hors calendriers de place) ; pour un placement collectif, elle est absorbée — avec l'heure limite — par la règle de valorisation. 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] } 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 } plafonnement: type: object description: >- Le mécanisme de plafonnement des rachats (la « gate ») tel que la documentation du fonds le prévoit — sa PRÉSENCE et son paramétrage, jamais sa décision d'activation (elle arrive en restriction de négociabilité). Le carnet d'ordres consomme la version applicable et la fige avec l'ordre. required: [seuil_pb, perimetre] properties: seuil_pb: { type: integer, description: Le seuil de déclenchement, en points de base de l'actif net. } perimetre: { type: string, enum: [instrument, vehicule] } regle_de_report: { type: string, description: Ce que deviennent les quantités non exécutées. } revocable: { type: boolean, description: La documentation admet-elle la révocation d'un reliquat. } representations_max: { type: integer, description: Le nombre maximal de représentations d'un reliquat. } duree_max_jours: { type: integer } modalites: type: object description: >- Les modalités d'ordre intrinsèques au support — le carnet d'ordres et les opérations les consomment, jamais ne les recalculent. properties: minimum_souscription_ue6: { type: integer, description: Le minimum de souscription, en micro-euros. } minimum_rachat_ue6: { type: integer } pas_de_souscription_ue6: { type: integer, description: Le pas d'arrondi d'une souscription en montant. } decimales_quantite: { type: integer, description: La précision d'exécution en quantité, si elle diffère des décimales de l'instrument. } 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. RestrictionEnVigueur: type: object required: [type, du] 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 levée, exclue — absente si la restriction est ouverte. } provenance: { $ref: '#/components/schemas/Provenance' } capacites_touchees: type: array description: >- Les capacités que la restriction suspend — l'indisponibilité est hors cycle : elle touche des capacités, jamais l'état de l'instrument. items: { $ref: '#/components/schemas/Capacite' } heure_effet: type: string pattern: '^([01][0-9]|2[0-3]):[0-5][0-9]$' description: L'heure d'effet, quand la restriction prend effet en cours de journée. fuseau: { type: string, description: Le fuseau IANA de l'heure d'effet. } portee: type: string enum: [instrument, vehicule] Capacite: type: string enum: [souscription, rachat, arbitrage_entrant, arbitrage_sortant, transfert, affectation_ccb] CapaciteResolue: type: object required: [capacite, admise] properties: capacite: { $ref: '#/components/schemas/Capacite' } admise: { type: boolean } motifs: type: array description: Les motifs du refus, normalisés — vide quand la capacité est admise. items: type: string enum: [instrument_non_commercialisable, souscription_fermee, rachat_ferme, suspendu, ferme_aux_nouveaux_versements, nature_inapplicable] ValeurApplicable: type: object required: [instrument, date_calcul, rang, valeur_part_ue6, sorte] properties: instrument: { type: string } date_calcul: { type: string, format: date } rang: type: integer minimum: 1 description: Le rang servi — supérieur à 1, la valeur corrige. valeur_part_ue6: type: integer description: La valeur d'une part, en micro-euros — l'unité pour une devise. sorte: { type: string, enum: [marche, administree, unite] } provenance: type: string enum: [flux_de_place, saisie] description: D'où la valeur est arrivée — absente pour une valeur administrée (calculée) et l'unité d'une devise. motif: { type: string, description: Le motif de la correction — présent dès le rang 2. } occurrence: type: string description: >- L'occurrence de valorisation prévue à laquelle la valeur répond — absente pour une valeur hors calendrier (une régularisation, un CCB). ValeurEnMasse: type: object required: [instrument] properties: instrument: { type: string } valeur: { $ref: '#/components/schemas/ValeurApplicable' } absence: type: string description: Le motif de l'absence de valeur applicable à la date — présent quand valeur est absente. Publication: type: object required: [date_calcul, rang, valeur_part_ue6, sorte] properties: date_calcul: { type: string, format: date } rang: { type: integer, minimum: 1 } valeur_part_ue6: { type: integer } sorte: { type: string, enum: [marche, administree] } provenance: { type: string, enum: [flux_de_place, saisie] } motif: { type: string } publiee_le: { type: string, format: date-time } parametres: type: object description: Les paramètres d'une valeur administrée (CCB) — le calcul s'explique. properties: taux_pb: { type: integer } convention: { type: string } producteur: { type: string, description: Qui a calculé la série — le cœur du référentiel. } interet_couru_ue6: { type: integer } DocumentDeReference: type: object required: [document, type, version, edite_le, empreinte, niveau_d_attache] properties: document: { type: string } type: { type: string, enum: [prospectus, dic, reglement_du_fonds, lettre_aux_porteurs] } libelle: { type: string } version: { type: string } langue: { type: string, description: Le code de langue du document (fr, en…). } edite_le: { type: string, format: date } applicable_le: { type: string, format: date } derniere_revue_le: type: string format: date description: La date de dernière revue déclarée par l'émetteur — distincte de la date d'édition (le DIC se revoit sans changer). recu_le: { type: string, format: date-time } empreinte: { type: string, description: L'empreinte du fichier — le contenu vit derrière l'adaptateur de stockage. } emetteur: { type: string, description: L'intervenant émetteur. } niveau_d_attache: type: string enum: [vehicule, instrument] description: >- Le niveau déclaré par type — prospectus, règlement et lettre au véhicule ; DIC à l'instrument (celui d'une catégorie de parts est celui de son instrument). instrument: { type: string, description: L'instrument rattaché, quand l'attache est à l'instrument. } etat_d_analyse: type: string enum: [a_analyser, analyse, ecart_detecte] description: L'état de la chaîne d'analyse documentaire — le détail vit au contrat d'administration. ecarts: type: [integer, 'null'] description: Le nombre d'écarts relevés par la dernière analyse — null tant qu'aucune analyse n'a eu lieu. EvenementDInstrument: type: object required: [evenement, type, etat, annonce_le, instruments_touches] properties: evenement: { type: string } type: { type: string, enum: [fusion, scission, reajustement, distribution] } etat: { type: string, enum: [annonce, prononce, denoue, annule] } annonce_le: { type: string, format: date } effet_le: { type: string, format: date } denoue_le: { type: string, format: date } corrige: { type: string, description: L'événement corrigé, pour un correctif. } etabli_par_document: { type: string } instruments_touches: type: array description: Les instruments touchés, chacun avec son rôle — l'ordre et l'orientation sont servis, jamais inventés. items: type: object required: [instrument, role] properties: instrument: { type: string } libelle: { type: string } role: { type: string, enum: [absorbant, absorbe, source, cible, concerne] } cible: type: string description: >- La ligne d'arrivée d'un absorbé, quand la fusion touche plusieurs lignes — chaque absorbé désigne l'instrument qui le remplace. decision: type: object description: La décision typée — présente et figée dès le prononcé (parités, clés, coefficient, coupon, lignes d'arrivée). transitions_ouvertes: type: array description: >- Les transitions que le cycle admet depuis l'état courant — servies d'après le cycle convergé, jamais déduites à l'écran ; l'habilitation de l'appelant reste l'affaire du contrat d'administration. items: { type: string, enum: [prononcer, annuler, denouer] } Erreur: type: object required: [motif] properties: motif: type: string description: Le motif, qui nomme le champ ou l'identifiant en cause.