consultation-des-positions
Interface synchrone (OpenAPI) — version 0.3.0, convergé. Producteur : tenue-de-compte. Consommateurs déclarés : operations, back-office-teneur-de-compte.
Le premier contrat synchrone de la plateforme. La tenue de compte sert la position d’un compte — courante, ou à une date comptable donnée — en deux vues : la ventilation par échéance et origine d’avoir, et la position consommable, l’écrêtement déjà fait (indisponible, gelé, contraintes). Le consommateur n’applique aucune règle de disponibilité par lui-même ; si la tenue de compte ne répond pas, la décision attend (notice, garanties).
La spécification
Section intitulée « La spécification »openapi: 3.1.0info: title: tenue-de-compte — consultation des positions version: 0.3.0 summary: La position datée, ventilée et consommable, servie par la tenue de compte. description: >- Le premier contrat synchrone de la plateforme. La tenue de compte sert la position d'un compte — courante, ou à une date comptable donnée — en deux vues : la ventilation par échéance et origine d'avoir, et la position consommable, l'écrêtement déjà fait (indisponible, gelé, contraintes). Le consommateur n'applique aucune règle de disponibilité par lui-même ; si la tenue de compte ne répond pas, la décision attend (notice, garanties). x-producteurs: - tenue-de-compte x-consommateurs: - composant: operations - composant: back-office-teneur-de-comptepaths: /tenants/{tenant}/comptes/{compte}/position: get: operationId: consulterLaPosition summary: La position d'un compte, courante ou à une date comptable donnée. description: >- Sans paramètre de date, la position courante ; avec une date, l'état du livre à cette date, y compris dans le passé (un déblocage anticipé s'apprécie à la date du fait générateur). La réponse porte toujours la date effectivement servie. Lecture sans effet de bord. security: - authentification: [tenue-de-compte:consultation] parameters: - name: tenant in: path required: true description: Le teneur de compte — la muraille de Chine, aucune consultation ne la franchit. schema: type: string minLength: 1 - name: compte in: path required: true description: L'identifiant public du compte chez ce tenant. schema: type: string minLength: 1 - name: date in: query required: false description: >- La date comptable de consultation (AAAA-MM-JJ). Absente, la position courante est servie. schema: type: string format: date responses: '200': description: La position du compte à la date servie. content: application/json: schema: $ref: '#/components/schemas/PositionDatee' '400': description: La demande est irrecevable (date mal formée, par exemple) — le motif nomme le champ. content: application/json: schema: $ref: '#/components/schemas/Erreur' '401': description: Aucune identité présentée (l'exigence d'authentification est du contrat, son mécanisme de l'assemblage). '403': description: L'identité présentée n'a pas la famille d'accès tenue-de-compte:consultation. '404': description: Le compte est inconnu de ce tenant. content: application/json: schema: $ref: '#/components/schemas/Erreur'components: 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 tenue-de-compte:famille. Le mécanisme est OIDC ; sa déclinaison relève de l'assemblage, pas du présent contrat. schemas: PositionDatee: type: object required: [tenant, compte, date, gele, lignes] properties: tenant: type: string description: Le teneur de compte. compte: type: string description: L'identifiant public du compte. date: type: string format: date description: La date comptable effectivement servie — la vérité se rapporte à elle. gele: type: boolean description: >- Le compte est gelé sur ordre de la Conformité — le gel prime tout : quand il est vrai, toute quantité consommable est zéro. (Le canal du gel n'étant pas encore réalisé, la valeur reste fausse en attendant — notice, §2.) lignes: type: array description: Une ligne par instrument détenu à la date servie (les positions nulles ne sont pas servies). items: $ref: '#/components/schemas/LigneDePosition' LigneDePosition: type: object required: [instrument, quantite, consommable, ventilation] properties: instrument: type: string description: L'identifiant public de l'instrument (le fonds, le titre). quantite: type: integer description: >- La quantité détenue — toujours un entier, jamais de flottant ; l'unité est celle de l'instrument, publiée par le référentiel des instruments (des centimes pour la devise, des millionièmes de part pour un fonds…). consommable: type: integer minimum: 0 description: >- Ce qu'un rachat peut mobiliser à la date servie — l'écrêtement déjà fait par la tenue de compte (indisponible, gelé, contraintes retranchés). Même unité que la quantité. ventilation: type: array description: Le détail par échéance de disponibilité et origine d'avoir — la somme des quantités égale la quantité détenue. items: $ref: '#/components/schemas/LigneDeVentilation' LigneDeVentilation: type: object required: [echeance, origine, quantite, disponible] properties: echeance: type: string format: date description: La date de disponibilité de cette part de la position. compartiment: type: string description: Le compartiment fiscal (nomenclature de ventilation), s'il est porté. origine: type: string description: L'origine d'avoir (participation, intéressement, abondement, versement volontaire…), en identifiant de la nomenclature. quantite: type: integer description: La quantité de cette ligne — même unité que la position. disponible: type: boolean description: L'échéance est échue à la date servie (avant écrêtement du gel et des contraintes). Erreur: type: object required: [motif] properties: motif: type: string description: Le motif, qui nomme le champ ou l'identifiant en cause.