Aller au contenu

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.

openapi: 3.1.0
info:
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.