Aller au contenu

administration-du-referentiel

Interface synchrone (OpenAPI) — version 0.1.0. Producteur : entreprise.

Le rejeu de la même Idempotency-Key et de la même commande retourne le résultat initial ; une charge différente sous la même clé retourne 409. Une mutation d’une ressource existante comporte If-Match. Le corps ne choisit jamais le tenant ; une ressource d’un autre tenant est traitée comme inexistante. Les autorisations métier du correspondant (mandat, délégation, séparation des tâches) sont vérifiées en plus du droit technique.

openapi: 3.1.0
info:
title: entreprise — l'administration du référentiel
version: 0.1.0
summary: >-
Les commandes du référentiel des organisations, de l'emploi et des règles
conventionnelles — des intentions métier, jamais la modification d'une version
publiée.
description: >-
Le rejeu de la même Idempotency-Key et de la même commande retourne le résultat
initial ; une charge différente sous la même clé retourne 409. Une mutation d'une
ressource existante comporte If-Match. Le corps ne choisit jamais le tenant ; une
ressource d'un autre tenant est traitée comme inexistante. Les autorisations métier
du correspondant (mandat, délégation, séparation des tâches) sont vérifiées en plus
du droit technique.
x-producteurs:
- entreprise
x-consommateurs: []
x-ruptures: [] # première version publiée — aucune rupture
x-gabarits:
parametresCommande: &parametresCommande
- { $ref: '#/components/parameters/tenant' }
- { $ref: '#/components/parameters/correlation' }
- { $ref: '#/components/parameters/causation' }
- { $ref: '#/components/parameters/idempotence' }
parametresCommandeSurRessource: &parametresCommandeSurRessource
- { $ref: '#/components/parameters/tenant' }
- { $ref: '#/components/parameters/correlation' }
- { $ref: '#/components/parameters/causation' }
- { $ref: '#/components/parameters/idempotence' }
- { $ref: '#/components/parameters/id' }
parametresMutation: &parametresMutation
- { $ref: '#/components/parameters/tenant' }
- { $ref: '#/components/parameters/correlation' }
- { $ref: '#/components/parameters/causation' }
- { $ref: '#/components/parameters/idempotence' }
- { $ref: '#/components/parameters/id' }
- { $ref: '#/components/parameters/versionAttendue' }
corpsDeCommande: &corpsDeCommande
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Commande' }
reponsesDeCommande: &reponsesDeCommande
'200': { $ref: '#/components/responses/commandeServie' }
'400': { $ref: '#/components/responses/malForme' }
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'404': { $ref: '#/components/responses/introuvable' }
'409': { $ref: '#/components/responses/conflit' }
'422': { $ref: '#/components/responses/inapplicable' }
'429': { $ref: '#/components/responses/quotaAtteint' }
'503': { $ref: '#/components/responses/dependanceIndisponible' }
paths:
/entreprise/v1/dossiers-clients:
post:
operationId: ouvrirUnDossierClient
summary: Ouvrir un dossier en entrée en relation.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dossiers-clients/{id}:
patch:
operationId: corrigerUnDossierClient
summary: Corriger les données de gestion du dossier (If-Match exigé).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresMutation
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dossiers-clients/{id}/activation:
post:
operationId: activerUnDossierClient
summary: >-
Passer le dossier à ACTIF — exige une identité minimale, une couverture
contractuelle et une évaluation de conformité favorable lorsqu'elle est requise.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dossiers-clients/{id}/sortie:
post:
operationId: ouvrirLaSortieDUnDossierClient
summary: >-
Passer à EN_SORTIE_DE_RELATION — bloque les nouvelles publications, pas les
lectures historiques.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dossiers-clients/{id}/rattachements:
post:
operationId: rattacherUneEntite
summary: >-
Rattacher une entité avec rôle, finalité et période — l'adhésion d'une entité à
un PEI crée un rattachement ADHERENTE de finalité PLAN, jamais une seconde
entité juridique.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/rattachements/{id}:
patch:
operationId: bornerOuCorrigerUnRattachement
summary: Borner ou corriger un rattachement (If-Match exigé).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresMutation
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/entites:
post:
operationId: enregistrerUneEntite
summary: Enregistrer une entité juridique.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/entites/{id}:
patch:
operationId: versionnerLIdentiteDUneEntite
summary: Ajouter une version d'identité (If-Match exigé) — jamais un écrasement.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresMutation
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/entites/{id}/etablissements:
post:
operationId: enregistrerUnEtablissement
summary: Enregistrer un établissement.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/relations-groupe:
post:
operationId: declarerUneRelationDeGroupe
summary: Déclarer une relation datée, sourcée, jamais réflexive (ENT-ORG-004).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/perimetres:
post:
operationId: constituerUnPerimetre
summary: Constituer un périmètre pour une finalité — il ne devient jamais employeur.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/perimetres/{id}/appartenances:
post:
operationId: modifierLesAppartenances
summary: >-
Ajouter ou clore une appartenance — chaque appartenance cible exactement une
entité ou un établissement (ENT-ORG-003).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/correspondants:
post:
operationId: referencerUnCorrespondant
summary: Référencer un tiers_id — jamais un epargnant_id (ENT-COR-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/correspondants/{id}/activation:
post:
operationId: activerUnCorrespondant
summary: Activer le correspondant — exige un tiers_id résolu.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/correspondants/{id}/suspension:
post:
operationId: suspendreUnCorrespondant
summary: >-
Suspendre ses usages — les mandats sont conservés à titre historique, leur
utilisation est interdite.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/correspondants/{id}/affectations:
post:
operationId: affecterUnCorrespondant
summary: Attribuer fonction, périmètre et période (ENT-COR-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/mandats:
post:
operationId: enregistrerUnMandat
summary: >-
Enregistrer un mandat et sa preuve (ENT-COR-003) — un mandat ne crée pas de
compte d'accès (ENT-COR-005).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/mandats/{id}/revocation:
post:
operationId: revoquerUnMandat
summary: Révoquer un mandat — les délégations qui en dépendent deviennent inapplicables.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/delegations:
post:
operationId: deleguerDesActes
summary: >-
Déléguer des actes pour une période — jamais au-delà des pouvoirs ni de la
période du délégant (ENT-COR-004), l'API le vérifie.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/delegations/{id}/revocation:
post:
operationId: revoquerUneDelegation
summary: Interrompre la délégation.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/chargements-rh:
post:
operationId: deposerUnChargement
summary: >-
Déposer un lot chiffré — les attributs d'identité transitent en zone chiffrée
temporaire et ne sont jamais retournés après dépôt (ENT-EMP-003).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/chargements-rh/{id}/analyse:
post:
operationId: analyserUnChargement
summary: Valider le format et les références.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/chargements-rh/{id}/previsualisation:
post:
operationId: previsualiserUnChargement
summary: Calculer les effets proposés, sans les appliquer.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/chargements-rh/{id}/application:
post:
operationId: appliquerUnChargement
summary: >-
Appliquer les lignes résolues — retourne 202 et un lien vers le suivi ; seule
une ligne résolue peut créer ou modifier un lien d'emploi.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses:
'202':
description: >-
L'application est engagée — la réponse porte le lien de suivi
(GET /chargements-rh/{id} de la consultation).
content:
application/json:
schema: { $ref: '#/components/schemas/ReponseDeCommande' }
'400': { $ref: '#/components/responses/malForme' }
'401': { $ref: '#/components/responses/nonAuthentifie' }
'403': { $ref: '#/components/responses/nonAutorise' }
'404': { $ref: '#/components/responses/introuvable' }
'409': { $ref: '#/components/responses/conflit' }
'422': { $ref: '#/components/responses/inapplicable' }
'429': { $ref: '#/components/responses/quotaAtteint' }
'503': { $ref: '#/components/responses/dependanceIndisponible' }
/entreprise/v1/chargements-rh/{id}/annulation:
post:
operationId: annulerUnChargement
summary: Annuler avant application.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/liens-emploi:
post:
operationId: ouvrirUnLienEmploi
summary: >-
Ouvrir un lien unitaire après résolution — exige un epargnant_id résolu
(ENT-EMP-001) ; aucun attribut d'état civil n'est conservé (ENT-EMP-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/liens-emploi/{id}:
patch:
operationId: versionnerUnLienEmploi
summary: Ajouter une version du lien (If-Match exigé).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresMutation
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/liens-emploi/{id}/cloture:
post:
operationId: cloreUnLienEmploi
summary: >-
Clore avec date et motif — la fin d'un lien ne ferme aucun compte ni avoir
(ENT-EMP-006).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/liens-emploi/{id}/annulation:
post:
operationId: compenserUnLienEmploi
summary: Compenser une ouverture erronée — un fait contraire, jamais un effacement.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/liens-emploi/{id}/mises-a-disposition:
post:
operationId: creerUneMiseADisposition
summary: >-
Créer une affectation d'accueil — période propre, incluse dans celle du lien
(ENT-EMP-007), fondement exigé.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/liens-emploi/{id}/donnees-sociales:
post:
operationId: ajouterUneDonneeSociale
summary: >-
Ajouter un fait périodique — collecté seulement si une règle ou une preuve
l'utilise (ENT-EMP-008) ; append-only.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/populations:
post:
operationId: constituerUnePopulation
summary: Constituer une photographie — exige entite_declarante_id et perimetre_id.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody:
required: true
content:
application/json:
schema:
allOf:
- { $ref: '#/components/schemas/Commande' }
- type: object
required: [entite_declarante_id, perimetre_id]
properties:
entite_declarante_id: { type: string }
perimetre_id: { type: string }
responses: *reponsesDeCommande
/entreprise/v1/populations/{id}/publication:
post:
operationId: publierUnePopulation
summary: Figer la population — publiée, elle est immuable (ENT-POP-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/attestations-completude:
post:
operationId: attesterUnePopulation
summary: >-
Attester une population publiée — le mandat du signataire est vérifié à la date
de signature (ENT-POP-004) ; source_exigence et reference_exigence sont exigés
(ENT-POP-006).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody:
required: true
content:
application/json:
schema:
allOf:
- { $ref: '#/components/schemas/Commande' }
- type: object
required: [population_id, source_exigence, reference_exigence]
properties:
population_id: { type: string }
source_exigence:
type: string
description: Convention, contrôle interne ou texte réglementaire.
reference_exigence:
type: string
description: La clause ou l'article exact — jamais AMF 322-75 seul.
responses: *reponsesDeCommande
/entreprise/v1/attestations-completude/{id}/revocation:
post:
operationId: revoquerUneAttestation
summary: >-
Révoquer avec motif — un fait séparé qui n'efface ni population ni traitement
antérieur (ENT-POP-005).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/actes:
post:
operationId: enregistrerUnActe
summary: Enregistrer accord, règlement, décision ou avenant — signé, il est immuable.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/actes/{id}/parties:
post:
operationId: qualifierLesPartiesDUnActe
summary: Qualifier employeur, syndicat, CSE, collectif ou branche (ENT-ACT-004).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/actes/{id}/signature:
post:
operationId: constaterLaSignatureDUnActe
summary: Constater la signature.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/actes/{id}/preuves-conclusion:
post:
operationId: enregistrerUnePreuveDeConclusion
summary: Enregistrer ratification, procès-verbal ou décision unilatérale.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/actes/{id}/depots:
post:
operationId: enregistrerUnDepot
summary: Enregistrer un dépôt.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/actes/{id}/relations:
post:
operationId: relierUnActe
summary: Relier un avenant ou un remplacement à l'acte (ENT-ACT-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dispositifs:
post:
operationId: creerUnDispositif
summary: Créer l'identité stable d'un dispositif — elle survit à ses versions.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dispositifs/{id}/versions:
post:
operationId: preparerUneVersionDeParametrage
summary: >-
Préparer un paramétrage — la création cite au moins un acte_id, la nature du
lien et la clause source (ENT-DIS-004).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/versions-parametrage/{id}/validation:
post:
operationId: validerUneVersionDeParametrage
summary: Contrôler la version — chaque paramètre cite sa clause (ENT-ACT-003).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/versions-parametrage/{id}/publication:
post:
operationId: publierUneVersionDeParametrage
summary: >-
Rendre la version opposable — exige un acte, un périmètre et des contrôles
complets (ENT-DIS-003) ; les versions publiées ne se chevauchent pas
(ENT-DIS-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/versions-parametrage/{id}/suspension:
post:
operationId: suspendreUneVersionDeParametrage
summary: Suspendre son usage futur — jamais un retour en brouillon.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/regles-abondement:
post:
operationId: creerUneRegleDAbondement
summary: Créer une règle en brouillon — ciblage, assiette, tranches, plafond, priorité.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/jeux-abondement:
post:
operationId: creerUnJeuDAbondement
summary: Créer un jeu ordonné de règles versionnées (ENT-ABO-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/jeux-abondement/{id}/publication:
post:
operationId: publierUnJeuDAbondement
summary: Publier le jeu.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/regles-calcul-enveloppe:
post:
operationId: creerUneRegleDeCalculDEnveloppe
summary: Créer une règle de calcul collectif.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/regles-calcul-enveloppe/{id}/versions:
post:
operationId: versionnerUneFormuleCollective
summary: >-
Créer une formule versionnée — elle cite l'acte, la clause et les sources
attendues de ses indicateurs (ENT-CAL-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/regles-repartition:
post:
operationId: creerUneRegleDeRepartition
summary: Créer une règle de répartition.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/regles-repartition/{id}/versions:
post:
operationId: versionnerUneRepartition
summary: >-
Créer les composantes d'une version — UNIFORME, SALAIRE, PRESENCE avec
pondérations, assiettes, assimilations et arrondis explicites.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/versions-repartition/{id}/publication:
post:
operationId: publierUneRepartition
summary: >-
Contrôler et publier la version — échoue si les pondérations ne totalisent pas
10 000 points de base (ENT-REP-001 : UNIFORME 5 000 + SALAIRE 3 000 +
PRESENCE 2 000 passe ; 9 500 est refusé) ou si une composante ne cite pas sa
clause ; une règle de reliquat RESTITUTION_EMPLOYEUR est rejetée (ENT-REP-003).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/enveloppes:
post:
operationId: declarerUneEnveloppe
summary: >-
Déclarer un montant collectif — exige entite_declarante_id et perimetre_id
(ENT-ENV-003) ; une enveloppe répartissable référence une population attestée
(ENT-ENV-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody:
required: true
content:
application/json:
schema:
allOf:
- { $ref: '#/components/schemas/Commande' }
- type: object
required: [entite_declarante_id, perimetre_id]
properties:
entite_declarante_id: { type: string }
perimetre_id: { type: string }
responses: *reponsesDeCommande
/entreprise/v1/enveloppes/{id}/arret-repartition:
post:
operationId: arreterLaRepartitionDUneEnveloppe
summary: >-
Figer montant et population — l'enveloppe fige la version de répartition
appliquée (ENT-REP-004) et passe à PRETE_A_REPARTIR.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/enveloppes/{id}/transmission:
post:
operationId: transmettreUneEnveloppe
summary: >-
Transmettre à Opérations — les quotes-parts individuelles ne sont jamais
détenues par Entreprise (ENT-ENV-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/dispositifs/{id}/offres:
post:
operationId: preparerUneLigneDOffre
summary: >-
Préparer une ligne d'offre — l'instrument externe est référencé, jamais copié
(ENT-OFF-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/offres/{id}/publication:
post:
operationId: publierUneLigneDOffre
summary: Publier la ligne.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/offres/{id}/fermeture:
post:
operationId: fermerUneLigneDOffre
summary: >-
Fermer aux nouvelles souscriptions — le retrait ne supprime ni positions ni
droits acquis (ENT-OFF-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/paniers:
post:
operationId: creerOuVersionnerUnPanier
summary: >-
Créer ou versionner un panier — les poids d'un panier publié totalisent 10 000
points de base (ENT-OFF-004).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/strategies:
post:
operationId: creerOuVersionnerUneStrategie
summary: Créer ou versionner une stratégie — profils et paliers.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions:
post:
operationId: creerUneConvention
summary: Créer une convention en négociation.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommande
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/parties:
post:
operationId: qualifierLesPartiesDUneConvention
summary: >-
Qualifier les parties contractuelles — TCC, cocontractante, teneur de registre,
adhérente, payeur ou autre prestataire.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/signature:
post:
operationId: constaterLaSignatureDUneConvention
summary: Constater la signature — la personne, son pouvoir et les preuves.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/adhesions:
post:
operationId: enregistrerUneAdhesion
summary: >-
Enregistrer l'adhésion datée d'une entité — distincte d'une simple couverture.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/activation:
post:
operationId: activerUneConvention
summary: Activer couverture et services (ENT-CON-001).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/avenants:
post:
operationId: creerUnAvenantDeConvention
summary: >-
Créer une nouvelle version — les versions tarifaires concurrentes ne se
chevauchent pas pour une même prestation (ENT-CON-002).
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/preavis:
post:
operationId: ouvrirUnPreavisDeResiliation
summary: Ouvrir la résiliation — statut EN_PREAVIS_DE_RESILIATION.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
/entreprise/v1/conventions/{id}/resiliation:
post:
operationId: resilierUneConvention
summary: >-
Terminer la convention — les obligations résiduelles et la convention de
substitution éventuelle sont conservées.
security: [{ authentification: [entreprise:administration] }]
parameters: *parametresCommandeSurRessource
requestBody: *corpsDeCommande
responses: *reponsesDeCommande
components:
parameters:
tenant:
name: X-Tenant-Id
in: header
required: true
description: >-
Le teneur de compte — injecté et signé par la passerelle ; le corps ne choisit
jamais le tenant. Une ressource d'un autre tenant est traitée comme inexistante.
schema: { type: string, minLength: 1 }
correlation:
name: X-Correlation-Id
in: header
required: true
description: La corrélation de bout en bout — reprise dans toute réponse.
schema: { type: string, minLength: 1 }
causation:
name: X-Causation-Id
in: header
required: false
description: Présent lorsqu'une commande en déclenche une autre.
schema: { type: string, minLength: 1 }
idempotence:
name: Idempotency-Key
in: header
required: true
description: >-
La clé d'idempotence de la commande — le rejeu de la même clé et de la même
commande retourne le résultat initial ; une charge différente sous la même clé
retourne 409.
schema: { type: string, minLength: 1 }
id:
name: id
in: path
required: true
description: L'identifiant publié de la ressource.
schema: { type: string, minLength: 1 }
versionAttendue:
name: If-Match
in: header
required: true
description: >-
La version attendue de la ressource — le verrou optimiste d'une mutation ; un
écart retourne 409 (ENT_VERSION_CONFLICT).
schema: { type: string, minLength: 1 }
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
entreprise:famille. Ce contrat n'ouvre que
entreprise:administration ; les autorisations métier du correspondant (mandat,
délégation, séparation des tâches) sont vérifiées en plus du droit technique, à
l'exécution. Le mécanisme est OIDC ; sa déclinaison relève de l'assemblage.
responses:
commandeServie:
description: >-
La commande est servie — la ressource, sa version et la corrélation ; le rejeu
idempotent retourne ce même résultat.
content:
application/json:
schema: { $ref: '#/components/schemas/ReponseDeCommande' }
malForme:
description: Syntaxe ou champ invalide (400) — le motif nomme le champ.
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
nonAuthentifie:
description: Aucune identité présentée (401).
nonAutorise:
description: >-
L'identité présentée n'a pas la famille d'accès entreprise:administration
(403) — les 403 croisés entre familles sont prouvés par les tests d'assemblage.
Un mandat métier manquant n'est pas un 403 : c'est un refus métier (422).
introuvable:
description: >-
Ressource absente ou invisible — y compris une ressource d'un autre tenant (le
régime de la muraille : 404, jamais 403).
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
conflit:
description: Conflit de version, d'idempotence ou d'invariant (409).
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
inapplicable:
description: Commande comprise mais impossible au regard du métier (422).
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
quotaAtteint:
description: Quota du tenant atteint (429).
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
dependanceIndisponible:
description: Dépendance indisponible, sans effet partiel (503).
content:
application/json:
schema: { $ref: '#/components/schemas/Erreur' }
schemas:
Commande:
type: object
description: >-
Une intention métier. Les exigences déjà contractuelles (acte cité, clause source,
déclarant et périmètre d'une enveloppe…) sont dites à l'opération.
additionalProperties: true
ReponseDeCommande:
type: object
description: La réponse de toute commande servie.
required: [resource_id, version, correlation_id]
properties:
resource_id:
type: string
version:
type: integer
correlation_id:
type: string
suivi:
type: string
description: Le lien de suivi — présent sur une application de chargement (202).
Erreur:
type: object
required: [code, message, correlation_id]
properties:
code:
type: string
description: Par exemple ENT_VERSION_CONFLICT.
message:
type: string
correlation_id:
type: string
details:
type: array
items:
type: object
properties:
champ: { type: string }
motif: { type: string }