Aller au contenu

administration-des-comptes

Interface synchrone (OpenAPI) — version 0.2.0, proposition. Producteur : tenue-de-compte. Consommateurs déclarés : aucun déclaré à ce jour.

La première tranche du paramétrage administré : le cycle de vie du compte — ouvert, puis clos (définitivement, la liquidation totale des avoirs exigée). Toute interface de la plateforme est authentifiée (401) et autorisée par famille d’accès (403) — l’administration exige la famille tenue-de-compte:parametrage.

openapi: 3.1.0
info:
title: tenue-de-compte — administration des comptes
version: 0.2.0
summary: Ouvrir un compte au plan du tenant, le clore quand ses avoirs sont liquidés.
description: >-
La première tranche du paramétrage administré : le cycle de vie du compte —
ouvert, puis clos (définitivement, la liquidation totale des avoirs exigée). Toute
interface de la plateforme est authentifiée (401) et autorisée par famille d'accès
(403) — l'administration exige la famille tenue-de-compte:parametrage.
x-producteurs:
- tenue-de-compte
x-consommateurs: []
paths:
/tenants/{tenant}/comptes:
post:
operationId: ouvrirUnCompte
summary: Ouvrir un compte — un numéro ne s'ouvre qu'une fois.
description: >-
Le compte ouvert participe aussitôt au paramétrage. Un numéro déjà connu —
ouvert ou clos — est refusé : un compte clos ne se rouvre pas, on en ouvre un
autre. L'ouverture publie le fait « compte ouvert ».
security:
- authentification: [tenue-de-compte:parametrage]
parameters:
- $ref: '#/components/parameters/tenant'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DemandeDOuverture'
responses:
'201':
description: Le compte est ouvert.
content:
application/json:
schema:
$ref: '#/components/schemas/FicheDeCompteAdministre'
'400':
description: La demande est irrecevable — 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:parametrage.
'404':
description: Le tenant est inconnu.
'409':
description: Le numéro est déjà connu (ouvert ou clos) — motivé.
content:
application/json:
schema:
$ref: '#/components/schemas/Erreur'
/tenants/{tenant}/comptes/{numero}/cloture:
post:
operationId: cloreUnCompte
summary: Clore un compte — définitivement, ses avoirs liquidés.
description: >-
La clôture exige que la position de chaque instrument soit à zéro ; refusée
sinon, motif à l'appui. Elle est définitive. Elle publie le fait « compte clos ».
security:
- authentification: [tenue-de-compte:parametrage]
parameters:
- $ref: '#/components/parameters/tenant'
- name: numero
in: path
required: true
description: L'identifiant public du compte chez ce tenant.
schema:
type: string
minLength: 1
responses:
'200':
description: Le compte est clos.
content:
application/json:
schema:
$ref: '#/components/schemas/FicheDeCompteAdministre'
'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:parametrage.
'404':
description: Le compte (ou le tenant) est inconnu.
'409':
description: Des avoirs restent (le motif nomme ce qui reste), ou le compte est déjà clos.
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.
parameters:
tenant:
name: tenant
in: path
required: true
description: Le teneur de compte — la muraille de Chine.
schema:
type: string
minLength: 1
schemas:
DemandeDOuverture:
type: object
required: [numero, categorie]
properties:
numero:
type: string
minLength: 1
description: L'identifiant public du compte à ouvrir.
categorie:
type: string
enum: [avoirs, passage]
description: >-
Un compte d'avoirs n'est jamais négatif ; un compte de passage est
structurellement à zéro, le négatif de transit est toléré.
historise:
type: boolean
default: false
description: La position sera photographiée à chaque variation.
FicheDeCompteAdministre:
type: object
required: [tenant, compte, categorie, historise, statut]
properties:
tenant:
type: string
compte:
type: string
categorie:
type: string
enum: [avoirs, passage]
historise:
type: boolean
statut:
type: string
enum: [ouvert, clos]
description: Le cycle de vie — ouvert, puis clos (définitif).
Erreur:
type: object
required: [motif]
properties:
motif:
type: string
description: Le motif, qui nomme le champ ou l'identifiant en cause.