Aller au contenu

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

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