Aller au contenu

administration-du-domaine

Interface synchrone (OpenAPI) — version 0.1.0. Producteur : relation-tiers. Consommateurs déclarés : back-office.

Ce qui paramètre et surveille le domaine sans toucher un dossier. L’identifiant d’un système fournisseur est une donnée interne du connecteur, chiffrée, jamais publiée ; une réconciliation n’a aucun effet métier sans politique de résolution ; un export exige une finalité explicite et laisse une trace.

openapi: 3.1.0
info:
title: relation-tiers — l'administration du domaine
version: 0.1.0
summary: >-
Les règles d'échéance versionnées, les politiques de rétention, les mappings
fournisseur, les rapprochements et les exports tenantisés.
description: >-
Ce qui paramètre et surveille le domaine sans toucher un dossier. L'identifiant d'un
système fournisseur est une donnée interne du connecteur, chiffrée, jamais publiée ;
une réconciliation n'a aucun effet métier sans politique de résolution ; un export
exige une finalité explicite et laisse une trace.
x-producteurs:
- relation-tiers
x-consommateurs:
- composant: back-office
statut: pressenti — administration du paramétrage relationnel
x-ruptures: [] # première version publiée — aucune rupture
paths:
/relation-tiers/v1/deadline-rules:
post:
operationId: creerUneVersionDeRegleDEcheance
summary: >-
Créer une version de règle — événement de départ, durée, calendrier versionné ;
la version précédente n'est jamais réécrite.
security:
- authentification: [relation-tiers:administration]
parameters:
- $ref: '#/components/parameters/tenant'
- $ref: '#/components/parameters/correlation'
- $ref: '#/components/parameters/idempotence'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegleDEcheance'
responses:
'201':
description: La version de règle est créée.
content:
application/json:
schema:
$ref: '#/components/schemas/ResultatDeCommande'
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'409': { $ref: '#/components/responses/conflit' }
'422': { $ref: '#/components/responses/inapplicable' }
/relation-tiers/v1/retention-policies:
post:
operationId: creerUnePolitiqueDeRetention
summary: >-
Créer une politique — catégorie, base juridique, durées, gel contentieux,
pseudonymisation ; tenantisée.
security:
- authentification: [relation-tiers:administration]
parameters:
- $ref: '#/components/parameters/tenant'
- $ref: '#/components/parameters/correlation'
- $ref: '#/components/parameters/idempotence'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PolitiqueDeRetention'
responses:
'201':
description: La politique est créée.
content:
application/json:
schema:
$ref: '#/components/schemas/ResultatDeCommande'
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'409': { $ref: '#/components/responses/conflit' }
'422': { $ref: '#/components/responses/inapplicable' }
/relation-tiers/v1/external-system-mappings:
post:
operationId: creerUnMappingFournisseur
summary: >-
Créer un mapping fournisseur — l'identifiant externe est chiffré et n'apparaît
jamais dans un événement public ; le tenant du mapping est immuable.
security:
- authentification: [relation-tiers:administration]
parameters:
- $ref: '#/components/parameters/tenant'
- $ref: '#/components/parameters/correlation'
- $ref: '#/components/parameters/idempotence'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MappingFournisseur'
responses:
'201':
description: Le mapping est créé.
content:
application/json:
schema:
$ref: '#/components/schemas/ResultatDeCommande'
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'409': { $ref: '#/components/responses/conflit' }
'422': { $ref: '#/components/responses/inapplicable' }
/relation-tiers/v1/reconciliation-runs:
get:
operationId: consulterLesRapprochements
summary: >-
Consulter les exécutions — niveaux, plages, compteurs, empreintes, dernier
curseur validé.
security:
- authentification: [relation-tiers:administration]
parameters:
- $ref: '#/components/parameters/tenant'
- $ref: '#/components/parameters/correlation'
- $ref: '#/components/parameters/curseur'
- $ref: '#/components/parameters/limite'
responses:
'200':
description: Les exécutions de rapprochement.
content:
application/json:
schema:
$ref: '#/components/schemas/PageDeRapprochements'
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
post:
operationId: declencherUnRapprochement
summary: >-
Déclencher un contrôle autorisé — niveau, périmètre ; aucun effet métier sans
politique de résolution.
security:
- authentification: [relation-tiers:administration]
parameters:
- $ref: '#/components/parameters/tenant'
- $ref: '#/components/parameters/correlation'
- $ref: '#/components/parameters/idempotence'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [level]
properties:
level:
type: string
description: >-
TRANSPORT, POPULATION, IDENTITE, VERSION, CONTENU ou SEMANTIQUE.
scope: { type: object }
responses:
'202':
description: Le contrôle est accepté et s'exécutera.
content:
application/json:
schema:
$ref: '#/components/schemas/ResultatDeCommande'
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'422': { $ref: '#/components/responses/inapplicable' }
/relation-tiers/v1/exports:
post:
operationId: creerUnExport
summary: >-
Créer un export tenantisé — finalité explicite, périmètre borné, volume
contrôlé, trace de téléchargement ; permission distincte de la consultation.
security:
- authentification: [relation-tiers:administration]
parameters:
- $ref: '#/components/parameters/tenant'
- $ref: '#/components/parameters/correlation'
- $ref: '#/components/parameters/idempotence'
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [purpose, scope]
properties:
purpose: { type: string }
scope: { type: object }
format: { type: string }
responses:
'202':
description: L'export est accepté — préparé puis remis sous trace.
content:
application/json:
schema:
$ref: '#/components/schemas/ResultatDeCommande'
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'422': { $ref: '#/components/responses/inapplicable' }
components:
securitySchemes:
authentification:
type: http
scheme: bearer
description: >-
Tout appel est authentifié (401) et autorisé par famille d'accès (403 hors famille). Ce
contrat n'ouvre que relation-tiers:administration — administrer le paramétrage et la
surveillance est une action sensible à part entière. Le tenant vient du jeton.
parameters:
tenant:
name: X-Tenant-Id
in: header
required: false
description: >-
Facultatif — le tenant fait foi dans le jeton ; s'il est fourni, il doit être
identique.
schema:
type: string
correlation:
name: X-Correlation-Id
in: header
required: false
schema:
type: string
idempotence:
name: Idempotency-Key
in: header
required: true
schema:
type: string
curseur:
name: cursor
in: query
required: false
schema:
type: string
limite:
name: limit
in: query
required: false
schema:
type: integer
maximum: 200
responses:
nonAuthentifie:
description: Aucune identité présentée (401).
nonAutorise:
description: >-
L'identité présentée n'a pas la famille d'accès
relation-tiers:administration (403).
conflit:
description: Version obsolète, chevauchement ou clé d'idempotence réutilisée.
content:
application/json:
schema:
$ref: '#/components/schemas/Probleme'
inapplicable:
description: Donnée comprise mais non admissible — règle identifiée.
content:
application/json:
schema:
$ref: '#/components/schemas/Probleme'
schemas:
Probleme:
type: object
required: [type, title, status, code, correlationId]
properties:
type: { type: string }
title: { type: string }
status: { type: integer }
code: { type: string }
detail: { type: string }
instance: { type: string }
correlationId: { type: string }
retryable: { type: boolean }
violations:
type: array
items:
type: object
properties:
field: { type: string }
reason: { type: string }
ruleId: { type: string }
RegleDEcheance:
type: object
required: [ruleCode, startEvent, duration]
properties:
ruleCode: { type: string }
startEvent: { type: string }
duration:
type: string
description: Durée ISO 8601 ou nombre de jours ouvrés selon unité.
durationUnit: { type: string }
calendarCode: { type: string }
calendarVersion: { type: string }
validFrom: { type: string, format: date-time }
PolitiqueDeRetention:
type: object
required: [categoryCode, legalBasis, retentionDuration]
properties:
categoryCode: { type: string }
legalBasis: { type: string }
retentionDuration: { type: string }
litigationHold: { type: boolean }
pseudonymizationRule: { type: string }
validFrom: { type: string, format: date-time }
MappingFournisseur:
type: object
required: [systemCode, canonicalObjectType, canonicalObjectId]
properties:
systemCode: { type: string }
canonicalObjectType: { type: string }
canonicalObjectId: { type: string }
externalObjectId:
type: string
description: >-
En entrée seulement — chiffré à la persistance, jamais restitué dans un
contrat public.
mappingVersion: { type: integer }
PageDeRapprochements:
type: object
required: [items]
properties:
items:
type: array
items:
type: object
required: [runId, level, startedAt]
properties:
runId: { type: string }
level: { type: string }
startedAt: { type: string, format: date-time }
finishedAt: { type: string, format: date-time }
counters: { type: object }
lastValidatedCursor: { type: string }
nextCursor: { type: string }
ResultatDeCommande:
type: object
required: [id, status]
properties:
id: { type: string }
aggregateVersion: { type: integer }
status: { type: string }