consultation-des-positions
Interface synchrone (OpenAPI) — version 0.4.1. Producteur : tenue-de-compte. Consommateurs déclarés : operations, backoffice.
La tenue de compte sert la position d’un compte — courante, à une date de référence, ou telle qu’elle était connue à un instant donné — et, sur demande, les lots de droits qui la composent, avec leurs dimensions corrélées (dispositif et sa version, compartiment, origine, échéance). Lecture pure, sans effet de bord, cacheable ; 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.4.1 summary: La position bitemporelle d'un compte, et les lots de droits qui la composent. x-ruptures: >- 0.4.0 (2026-08-07) — RUPTURE DÉCLARÉE en 0.x : le préfixe `/tenants/{tenant}` disparaît des chemins — le tenant est résolu à l'assemblage, jamais par le chemin. La propriété `tenant` quitte la réponse. 0.3.0 — RUPTURE DÉCLARÉE en 0.x. Trois changements incompatibles : (1) la position servie devient BITEMPORELLE — `date` est remplacée par `date_reference` et un `connu_au` facultatif ; (2) le booléen `gele` disparaît au profit des RESTRICTIONS à cible et à effet gradué ; (3) la quantité `consommable` DISPARAÎT — l'écrêtement paramétré est l'affaire de l'évaluation des avoirs (contrat propre), un entier sans paramètres revenait à décider de l'éligibilité, ce qui appartient aux Opérations. La `ventilation` cesse d'être servie de plein droit : les LOTS DE DROITS s'exposent sur demande, la ventilation étant une lecture que le consommateur recompose. description: >- La tenue de compte sert la position d'un compte — courante, à une date de référence, ou telle qu'elle était connue à un instant donné — et, sur demande, les lots de droits qui la composent, avec leurs dimensions corrélées (dispositif et sa version, compartiment, origine, échéance). Lecture pure, sans effet de bord, cacheable ; 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: backoffice statut: réel — le module Tenue de compte (fiche compte, onglet Positions)paths: /comptes/{compte}/position: get: operationId: consulterLaPosition summary: La position d'un compte — courante, datée, ou telle que connue à un instant. description: >- Sans paramètre, la position courante. Avec `date_reference`, la meilleure reconstitution d'aujourd'hui à cette date d'effet — un déblocage anticipé s'apprécie à la date du fait générateur. Avec `connu_au` en plus, ce que la plateforme en savait à cet instant — la preuve de la connaissance passée. La réponse porte toujours les axes effectivement servis. security: - authentification: [tenue-de-compte:consultation] parameters: - $ref: '#/components/parameters/compte' - name: date_reference in: query required: false description: La date d'effet de la consultation (AAAA-MM-JJ). Absente, la position courante. schema: { type: string, format: date } - name: connu_au in: query required: false description: >- L'instant de connaissance : la position telle qu'elle était représentée à cet instant, corrections tardives exclues. Exige une date_reference. schema: { type: string, format: date-time } - name: lots in: query required: false description: Vrai pour recevoir les lots de droits de chaque ligne (comptes-titres d'épargnant). schema: { type: boolean, default: false } responses: '200': description: La position du compte aux axes servis. content: application/json: schema: $ref: '#/components/schemas/PositionServie' '400': description: Demande irrecevable (connu_au sans date_reference, date mal formée…) — le motif nomme le champ. content: application/json: schema: { $ref: '#/components/schemas/Erreur' } '401': description: Aucune identité présentée. '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é. Le mécanisme cible est OIDC ; sa déclinaison relève de l'assemblage. parameters: compte: name: compte in: path required: true description: L'identifiant public du compte chez ce tenant. schema: { type: string, minLength: 1 } schemas: PositionServie: type: object required: [compte, date_reference, restrictions, lignes] properties: compte: { type: string } date_reference: type: string format: date description: La date d'effet effectivement servie — la vérité se rapporte à elle. connu_au: type: string format: date-time description: L'instant de connaissance servi ; absent = la meilleure reconstitution d'aujourd'hui. restrictions: type: array description: >- Les restrictions en vigueur dont la portée touche ce compte — à cible et à effet gradué, remplaçant le booléen `gele`. Le tableau vide signifie « aucune restriction » ; l'effet sur une opération donnée s'apprécie par l'évaluation des avoirs, jamais par le consommateur. items: { $ref: '#/components/schemas/RestrictionEnVigueur' } lignes: type: array description: Une ligne par instrument détenu aux axes servis (les positions nulles ne sont pas servies). items: { $ref: '#/components/schemas/LigneDePosition' } RestrictionEnVigueur: type: object required: [mesure, nature, cible_type, cible] properties: mesure: type: string description: L'identifiant publié de la mesure ordonnée par la Conformité. Le motif ne circule jamais. nature: type: string description: La nature de la mesure (nomenclature du canal conformite.mesure — GEL_AVOIRS, BLOCAGE_OPERATIONS…). cible_type: type: string enum: [COMPTE, INSTRUMENT, LOT, COMPARTIMENT, ORIGINE, OPERATION] description: Ce que la cible désigne — une restriction peut viser un seul lot sans viser le compte. cible: type: string description: L'identifiant de la cible (le compte, l'instrument, le lot…). depuis: type: string format: date-time description: La date d'effet de la mesure. LigneDePosition: type: object required: [instrument, quantite] properties: instrument: type: string description: L'identifiant public de l'instrument (le fonds, le titre, la devise). 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. lots: type: array description: >- Sur demande (`lots=true`) : les lots de droits vivants de la ligne, aux axes servis. La somme des quantités restantes se rapproche de la quantité détenue, aux réserves explicitement justifiées près. La ventilation par échéance, origine ou compartiment est une lecture que le consommateur recompose des lots — elle n'est plus servie de plein droit. items: { $ref: '#/components/schemas/LotDeDroits' } LotDeDroits: type: object required: [lot, dispositif, dispositif_version, origine, quantite_initiale, quantite_restante, date_acquisition, qualite_donnee, entreprise_origine] properties: lot: { type: string, description: L'identifiant du lot chez la tenue de compte. } dispositif: { type: string, description: L'identifiant publié du dispositif. } dispositif_version: type: string description: >- La version du paramétrage qui a fondé l'échéance — reçue avec le fait, jamais ré-résolue : c'est elle qui rend l'échéance rejouable. compartiment: { type: string, description: "Le compartiment (nomenclature des dimensions de lot), s'il est porté." } origine: { type: string, description: L'origine d'avoir (nomenclature des dimensions de lot). } echeance: type: string format: date description: La date à laquelle les droits cessent d'être indisponibles ; absente pour des droits sans échéance datée (retraite). date_acquisition: { type: string, format: date } quantite_initiale: { type: integer, description: Même unité que la position. } quantite_restante: { type: integer, minimum: 0 } qualite_donnee: type: string enum: [PROUVEE, PARTIELLE, INCERTAINE] description: >- La qualité de la donnée d'un lot repris — une donnée non démontrée bloque les opérations exigeant une précision indisponible. entreprise_origine: type: string description: L'entreprise d'origine du lot — contrôlée contre le rattachement du compte. Erreur: type: object required: [motif] properties: motif: type: string description: Le motif, qui nomme le champ ou l'identifiant en cause.