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.
La spécification
Section intitulée « La spécification »openapi: 3.1.0info: 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: backofficepaths: /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. }