Aller au contenu

administration-des-mesures

Interface synchrone (OpenAPI) — version 0.2.0. Producteur : conformite. Consommateurs déclarés : backoffice.

Ordonner n’est pas exécuter : la réponse dit que la mesure est ordonnée et publiée vers son exécutant ; l’état d’application vient des preuves déposées par l’exécutant (contrat d’exécution des mesures) et n’est que restitué ici. Toute interface est authentifiée (401) ; le refus (403) et la seconde validation (202) relèvent du point d’application de la politique.

openapi: 3.1.0
info:
title: conformite — administration des mesures
version: 0.2.0
x-ruptures:
- version: 0.2.0
rupture: "chemins déplacés : le préfixe /tenants/{tenant} disparaît de tous les chemins"
motif: >-
Le tenant n'entre jamais dans le chemin d'une interface : il est résolu à l'assemblage —
routage par l'hôte, audience du jeton — jamais par une donnée d'appel. Le paramètre de
chemin tenant disparaît avec le préfixe.
summary: >-
Ordonner, prolonger, confirmer et lever les mesures d'un dossier ; consulter leur
état consolidé d'exécution.
description: >-
Ordonner n'est pas exécuter : la réponse dit que la mesure est ordonnée et publiée
vers son exécutant ; l'état d'application vient des preuves déposées par
l'exécutant (contrat d'exécution des mesures) et n'est que restitué ici. Toute
interface est authentifiée (401) ; le refus (403) et la seconde validation (202)
relèvent du point d'application de la politique.
x-producteurs:
- conformite
x-consommateurs:
- backoffice
paths:
/dossiers/{dossier}/mesures:
get:
operationId: consulterLesMesuresDuDossier
summary: Les mesures du dossier, chaînées, avec leur état consolidé d'exécution.
security: [ { authentification: [conformite:mesures] } ]
parameters:
- $ref: '#/components/parameters/dossier'
responses:
'200':
description: Les mesures, de la plus récente à la plus ancienne.
content:
application/json:
schema: { $ref: '#/components/schemas/MesuresDuDossier' }
'401': { $ref: '#/components/responses/NonAuthentifie' }
'403': { $ref: '#/components/responses/NonAutorise' }
'404': { $ref: '#/components/responses/Inconnu' }
post:
operationId: ordonnerUneMesure
summary: Ordonner une mesure — nature, caractère, cible, base, effet.
description: >-
Une mesure PRÉVENTIVE porte obligatoirement son échéance de revue — et elle
seule (l'équivalence est structurelle). La base qui fonde la mesure est exigée
en clair. Idempotent par demande_id. La mesure ordonnée est publiée vers son
domaine exécutant ; son état d'application viendra des preuves.
security: [ { authentification: [conformite:mesures] } ]
parameters:
- $ref: '#/components/parameters/dossier'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/NouvelleMesure' }
responses:
'201':
description: La mesure est ordonnée et publiée vers son exécutant.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'202':
description: Le geste est suspendu à une seconde validation (politique du PEP).
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'400': { $ref: '#/components/responses/Irrecevable' }
'401': { $ref: '#/components/responses/NonAuthentifie' }
'403': { $ref: '#/components/responses/NonAutorise' }
'404': { $ref: '#/components/responses/Inconnu' }
/mesures/{mesure}/prolongation:
post:
operationId: prolongerUneMesure
summary: Prolonger une mesure préventive — une nouvelle mesure, motivée, avec sa nouvelle échéance.
security: [ { authentification: [conformite:mesures] } ]
parameters:
- $ref: '#/components/parameters/mesure'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Prolongation' }
responses:
'201':
description: La prolongation est ordonnée ; elle pointe la mesure qu'elle affecte.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'202':
description: Suspendue à une seconde validation.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'400': { $ref: '#/components/responses/Irrecevable' }
'401': { $ref: '#/components/responses/NonAuthentifie' }
'403': { $ref: '#/components/responses/NonAutorise' }
'404': { $ref: '#/components/responses/Inconnu' }
'409': { $ref: '#/components/responses/EtatIncompatible' }
/mesures/{mesure}/confirmation:
post:
operationId: confirmerUneMesure
summary: Confirmer une préventive en définitive — l'échéance de revue disparaît.
security: [ { authentification: [conformite:mesures] } ]
parameters:
- $ref: '#/components/parameters/mesure'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Confirmation' }
responses:
'201':
description: La confirmation est ordonnée.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'202':
description: Suspendue à une seconde validation.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'400': { $ref: '#/components/responses/Irrecevable' }
'401': { $ref: '#/components/responses/NonAuthentifie' }
'403': { $ref: '#/components/responses/NonAutorise' }
'404': { $ref: '#/components/responses/Inconnu' }
'409': { $ref: '#/components/responses/EtatIncompatible' }
/mesures/{mesure}/levee:
post:
operationId: leverUneMesure
summary: Lever une mesure — une nouvelle mesure, aux mêmes validations et preuves.
description: >-
La levée est publiée vers l'exécutant comme la mesure l'a été, et se prouve de même.
Pour un gel, la base de la levée est l'autorisation ministérielle qui la fonde
(R-CONF-GEL-AUTORISATIONS-DEBLOCAGE) — le champ base est exigé et le dit en clair.
security: [ { authentification: [conformite:mesures] } ]
parameters:
- $ref: '#/components/parameters/mesure'
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Levee' }
responses:
'201':
description: La levée est ordonnée et publiée vers l'exécutant.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'202':
description: Suspendue à une seconde validation.
content:
application/json:
schema: { $ref: '#/components/schemas/Mesure' }
'400': { $ref: '#/components/responses/Irrecevable' }
'401': { $ref: '#/components/responses/NonAuthentifie' }
'403': { $ref: '#/components/responses/NonAutorise' }
'404': { $ref: '#/components/responses/Inconnu' }
'409': { $ref: '#/components/responses/EtatIncompatible' }
components:
parameters:
dossier:
name: dossier
in: path
required: true
schema: { type: string }
mesure:
name: mesure
in: path
required: true
description: Identifiant publié de la mesure ordonnée.
schema: { type: string }
responses:
NonAuthentifie:
description: L'appelant n'est pas authentifié.
content: { application/json: { schema: { $ref: '#/components/schemas/Erreur' } } }
NonAutorise:
description: Le point d'application de la politique refuse cette action sur ce périmètre.
content: { application/json: { schema: { $ref: '#/components/schemas/Erreur' } } }
Irrecevable:
description: >-
La demande est irrecevable — le motif nomme le champ. Notamment : une
préventive sans échéance de revue, une non-préventive avec échéance, une base
absente.
content: { application/json: { schema: { $ref: '#/components/schemas/Erreur' } } }
Inconnu:
description: L'objet est inconnu — ou hors du périmètre de l'appelant, sans distinction.
content: { application/json: { schema: { $ref: '#/components/schemas/Erreur' } } }
EtatIncompatible:
description: >-
L'état de la mesure ne permet pas ce geste — prolonger une mesure déjà levée,
confirmer une mesure qui n'est pas préventive.
content: { application/json: { schema: { $ref: '#/components/schemas/Erreur' } } }
securitySchemes:
authentification:
type: openIdConnect
openIdConnectUrl: https://exemple.invalid/.well-known/openid-configuration
description: Exigence déclarée ici ; mécanisme décliné à l'assemblage.
schemas:
ReferenceCible:
type: object
required: [type_cible, cible]
properties:
type_cible:
type: string
enum: [COMPTE, EPARGNANT, ENTREPRISE, OPERATION, PAIEMENT]
cible:
type: string
description: Identifiant publié — l'exécutant décline le périmètre en cibles élémentaires.
NouvelleMesure:
type: object
required: [demande_id, nature, caractere, cible, base, effet_le]
properties:
demande_id: { type: string, description: Clé d'idempotence du client. }
nature:
type: string
enum:
- POURSUITE
- CONTROLE_RENFORCE
- MISE_EN_ATTENTE
- SUSPENSION_OPERATION
- REFUS
- GEL_AVOIRS
- BLOCAGE_TOTAL
- LECTURE_SEULE
- BLOCAGE_OPERATIONS
description: >-
Toutes ne restreignent pas — POURSUITE et CONTROLE_RENFORCE orientent une
diligence sans rien limiter. Le gel des avoirs n'est qu'un niveau, le plus
grave.
caractere:
type: string
enum: [PREVENTIVE, LEGALE, DEFINITIVE]
cible: { $ref: '#/components/schemas/ReferenceCible' }
base:
type: string
description: >-
La base légale ou de politique qui fonde la mesure, en clair — une mesure
sans base n'est pas recevable.
effet_le: { type: string, format: date }
echeance_revue:
type: string
format: date
description: >-
Obligatoire pour une PRÉVENTIVE, interdite sinon : l'équivalence est la
garde contre le blocage indéfini « en attente d'analyse ».
motif:
type: string
description: Le motif d'instruction — consigné au dossier, jamais publié vers l'exécutant.
Prolongation:
type: object
required: [demande_id, motif, echeance_revue]
properties:
demande_id: { type: string }
motif: { type: string, description: Une prolongation est toujours motivée — jamais un renouvellement tacite. }
echeance_revue: { type: string, format: date }
Confirmation:
type: object
required: [demande_id, motif]
properties:
demande_id: { type: string }
motif: { type: string }
Levee:
type: object
required: [demande_id, base, motif]
properties:
demande_id: { type: string }
base:
type: string
description: >-
Ce qui autorise la levée — pour un gel, l'autorisation ministérielle
(R-CONF-GEL-AUTORISATIONS-DEBLOCAGE) : une levée n'est jamais une décision
interne implicite.
motif: { type: string }
Mesure:
type: object
required: [mesure, dossier, nature, caractere, cible, base, effet_le, etat, ordonnee_le, decideur]
properties:
mesure: { type: string, description: Identifiant publié — le même que sur le canal conformite.mesure. }
dossier: { type: string }
nature: { type: string }
caractere:
type: string
enum: [PREVENTIVE, LEGALE, DEFINITIVE]
cible: { $ref: '#/components/schemas/ReferenceCible' }
base: { type: string }
effet_le: { type: string, format: date }
echeance_revue: { type: string, format: date }
mesure_source:
type: string
description: La mesure que ce geste affecte (prolongation, confirmation, levée) — la chaîne reste lisible.
etat:
type: string
enum: [SUSPENDUE_A_VALIDATION, ORDONNEE, PARTIELLEMENT_APPLIQUEE, EXECUTEE, EN_SUSPENS, LEVEE]
description: >-
L'état consolidé d'exécution est restitué depuis les preuves déposées par
l'exécutant — PARTIELLEMENT_APPLIQUEE est critique pour un gel.
ecarts:
type: integer
minimum: 0
description: Cibles élémentaires dont le dernier constat n'est pas une application franche.
ordonnee_le: { type: string, format: date-time }
decideur: { type: string, description: Le décideur est toujours nommé. }
MesuresDuDossier:
type: object
required: [dossier, mesures, servi_le]
properties:
dossier: { type: string }
mesures:
type: array
items: { $ref: '#/components/schemas/Mesure' }
servi_le: { type: string, format: date-time }
Erreur:
type: object
required: [code, message]
properties:
code: { type: string }
message:
type: string
description: >-
Nomme le champ ou la condition en cause. Ne révèle ni motif d'instruction,
ni l'existence d'un objet hors du périmètre de l'appelant.