Aller au contenu

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).

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