Aller au contenu

consultation-des-calendriers

Interface synchrone (OpenAPI) — version 0.1.0. Producteur : instruments. Consommateurs déclarés : backoffice.

Le domaine sert les calendriers dont les règles de valorisation dépendent : la définition durable (type, autorité, fuseau IANA), les versions en succession — jamais modifiées en place —, les exceptions qualifiées et sourcées, et les dépendances (quels fonds, par quelle sémantique, directement ou à travers leur fonds maître). La règle résolue d’un instrument et son horizon d’occurrences se lisent au contrat consultation-du-referentiel. Le teneur de compte ne se donne jamais dans l’adresse.

openapi: 3.1.0
info:
title: instruments — consultation des calendriers
version: 0.1.0
x-ruptures: []
summary: >-
Les calendriers du référentiel — définitions, versions immuables, exceptions
sourcées, dépendances vers les règles de valorisation.
description: >-
Le domaine sert les calendriers dont les règles de valorisation dépendent : la
définition durable (type, autorité, fuseau IANA), les versions en succession —
jamais modifiées en place —, les exceptions qualifiées et sourcées, et les
dépendances (quels fonds, par quelle sémantique, directement ou à travers leur
fonds maître). La règle résolue d'un instrument et son horizon d'occurrences se
lisent au contrat consultation-du-referentiel. Le teneur de compte ne se donne
jamais dans l'adresse.
x-producteurs:
- instruments
x-consommateurs:
- composant: backoffice
paths:
/calendriers:
get:
operationId: rechercherLesCalendriers
summary: La liste des calendriers — filtres, pagination, total.
security:
- authentification: [instruments:consultation]
parameters:
- name: nom
in: query
required: false
schema: { type: string, minLength: 1 }
- name: type
in: query
required: false
schema: { $ref: '#/components/schemas/TypeDeCalendrier' }
- name: etat_de_la_version
in: query
required: false
description: Ne servir que les calendriers dont une version est dans cet état.
schema: { type: string, enum: [en_preparation, publiee] }
- name: fuseau
in: query
required: false
schema: { type: string, minLength: 1 }
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/taille'
responses:
'200':
description: La page demandée — vide si aucun calendrier ne répond.
content:
application/json:
schema:
type: object
required: [lignes, total]
properties:
lignes:
type: array
items: { $ref: '#/components/schemas/CalendrierEnListe' }
total:
type: [integer, 'null']
'400': { $ref: '#/components/responses/irrecevable' }
'401': { $ref: '#/components/responses/sansIdentite' }
'403': { $ref: '#/components/responses/horsFamille' }
/calendriers/{calendrier}:
get:
operationId: consulterUnCalendrier
summary: La fiche d'un calendrier — identité durable, état, version en vigueur.
security:
- authentification: [instruments:consultation]
parameters:
- $ref: '#/components/parameters/calendrier'
responses:
'200':
description: La fiche.
content:
application/json:
schema: { $ref: '#/components/schemas/FicheDeCalendrier' }
'401': { $ref: '#/components/responses/sansIdentite' }
'403': { $ref: '#/components/responses/horsFamille' }
'404': { $ref: '#/components/responses/inconnu' }
/calendriers/{calendrier}/versions:
get:
operationId: consulterLesVersions
summary: Les versions d'un calendrier — immuables, en succession.
security:
- authentification: [instruments:consultation]
parameters:
- $ref: '#/components/parameters/calendrier'
responses:
'200':
description: Les versions, de la plus récente à la plus ancienne.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/VersionDeCalendrier' }
'401': { $ref: '#/components/responses/sansIdentite' }
'403': { $ref: '#/components/responses/horsFamille' }
'404': { $ref: '#/components/responses/inconnu' }
/calendriers/{calendrier}/exceptions:
get:
operationId: consulterLesExceptions
summary: Les exceptions d'un calendrier — dates qualifiées, sourcées, datées de leur connaissance.
security:
- authentification: [instruments:consultation]
parameters:
- $ref: '#/components/parameters/calendrier'
- name: version
in: query
required: false
description: La version dont on lit les exceptions — omise, la version en vigueur.
schema: { type: string, minLength: 1 }
- 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 }
responses:
'200':
description: Les exceptions de la période, dans l'ordre des dates visées.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/ExceptionDeCalendrier' }
'400': { $ref: '#/components/responses/irrecevable' }
'401': { $ref: '#/components/responses/sansIdentite' }
'403': { $ref: '#/components/responses/horsFamille' }
'404': { $ref: '#/components/responses/inconnu' }
/calendriers/{calendrier}/dependances:
get:
operationId: consulterLesDependances
summary: Ce qui dépend du calendrier — l'inverse de la résolution.
description: >-
Les fonds dont la règle de valorisation affecte ce calendrier, avec la
sémantique de chaque affectation, la dépendance directe ou indirecte (le
nourricier dépend des calendriers de son maître sans jamais les déclarer), et
le compte des occurrences à venir qui en découlent. Seul le domaine a la
matière pour la produire.
security:
- authentification: [instruments:consultation]
parameters:
- $ref: '#/components/parameters/calendrier'
- name: horizon_jours
in: query
required: false
description: L'horizon du compte des occurrences à venir.
schema: { type: integer, minimum: 1, maximum: 730, default: 90 }
responses:
'200':
description: Les dépendances.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Dependance' }
'400': { $ref: '#/components/responses/irrecevable' }
'401': { $ref: '#/components/responses/sansIdentite' }
'403': { $ref: '#/components/responses/horsFamille' }
'404': { $ref: '#/components/responses/inconnu' }
components:
parameters:
calendrier:
name: calendrier
in: path
required: true
description: L'identifiant du calendrier chez ce tenant — immuable.
schema: { type: string, minLength: 1 }
page:
name: page
in: query
required: false
schema: { type: integer, minimum: 1, default: 1 }
taille:
name: taille
in: query
required: false
schema: { type: integer, minimum: 1, maximum: 500, default: 50 }
securitySchemes:
authentification:
type: http
scheme: bearer
description: >-
Tout appel est authentifié (401) et autorisé par famille d'accès (403) — la 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 — le motif nomme le champ.
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
sansIdentite:
description: Aucune identité présentée.
horsFamille:
description: L'identité présentée n'a pas la famille d'accès instruments:consultation.
inconnu:
description: Le calendrier est inconnu de ce tenant.
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
schemas:
TypeDeCalendrier:
type: string
enum: [place_de_negociation, jours_feries, contractuel_de_fonds, fonds_maitre,
reglement_livraison, paiement, fenetre_liquidite_non_cote,
operationnel_de_service, interets_ccb, remboursement_ccb]
description: Des natures NON SUBSTITUABLES entre elles — un calendrier de paiement ne remplace jamais un calendrier de place.
CalendrierEnListe:
type: object
required: [calendrier, nom, type, fuseau, etat]
properties:
calendrier: { type: string }
nom: { type: string }
type: { $ref: '#/components/schemas/TypeDeCalendrier' }
fuseau: { type: string, description: Le fuseau IANA de référence — une heure locale sans fuseau n'est pas une donnée. }
etat: { type: string, enum: [actif, desactive] }
version_en_vigueur:
type: object
properties:
version: { type: string }
valide_du: { type: string, format: date }
valide_au: { type: string, format: date }
version_en_preparation: { type: string }
exceptions: { type: integer, description: Le nombre d'exceptions de la version en vigueur. }
fonds_associes: { type: integer, description: Le nombre de fonds dont une règle affecte ce calendrier. }
FicheDeCalendrier:
allOf:
- $ref: '#/components/schemas/CalendrierEnListe'
- type: object
properties:
perimetre: { type: string, description: Ce que le calendrier couvre — une place, une juridiction, un fonds. }
autorite: { type: string, description: L'autorité responsable des jours et exceptions. }
VersionDeCalendrier:
type: object
required: [version, valide_du, statut, connue_le]
properties:
version: { type: string }
valide_du: { type: string, format: date }
valide_au: { type: string, format: date, description: La borne de fin, exclue — absente si la validité court. }
connue_le: { type: string, format: date, description: La date d'entrée au référentiel — la période de connaissance est distincte de la validité métier. }
statut: { type: string, enum: [en_preparation, publiee, remplacee] }
preparee_par: { type: string }
validee_par: { type: string, description: Le valideur des quatre yeux — jamais le préparateur. }
publiee_le: { type: string, format: date-time }
regle_jour_ouvre:
type: object
description: La semaine habituelle de la version — jamais réduite au « lundi-vendredi » implicite.
properties:
jours_ouvres: { type: array, items: { type: string, enum: [lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche] } }
jours_feries_reference: { type: string, description: Le calendrier de jours fériés référencé, le cas échéant. }
politique_demi_seance: { type: string }
preuves:
type: array
items: { type: string, description: La référence de la preuve (document, publication officielle). }
ExceptionDeCalendrier:
type: object
required: [date, nature, source, connue_le]
properties:
date: { type: string, format: date, description: La date visée. }
nature:
type: string
enum: [fermeture, ouverture_exceptionnelle, demi_seance, changement_heure_limite, statut_incertain]
heure_limite_modifiee:
type: string
pattern: '^([01][0-9]|2[0-3]):[0-5][0-9]$'
description: L'heure limite du jour, quand la nature la change.
motif: { type: string }
source: { type: string, description: D'où l'exception est connue — avis de place, décision, document. }
connue_le: { type: string, format: date, description: La date de connaissance — distincte de la date visée. }
urgence:
type: boolean
description: Saisie par le circuit accéléré habilité — la revue a posteriori est due.
echeance_de_revue:
type: string
format: date
description: Obligatoire pour une exception provisoire ou saisie en urgence.
Dependance:
type: object
required: [instrument, semantiques, directe]
properties:
instrument: { type: string }
libelle: { type: string }
societe_de_gestion: { type: string }
semantiques:
type: array
items:
type: string
enum: [ouverture_requise, fermeture_exclusive, dependance_valorisation,
calcul_publication, calcul_reglement, informatif]
directe:
type: boolean
description: >-
Faux quand la dépendance passe par le fonds maître — le nourricier ne
déclare jamais les calendriers de son maître.
occurrences_a_venir:
type: integer
description: Le compte des occurrences de l'horizon demandé qui découlent de ce calendrier.
Erreur:
type: object
required: [motif]
properties:
motif: { type: string, description: Le motif, qui nomme le champ ou l'identifiant en cause. }