{"openapi":"3.0.3","info":{"title":"Anonymise — Export de la synthèse","version":"1.0.0","description":"Web service REST qui renvoie la synthèse d'anonymisation au format CSV.\n\nC'est exactement le fichier produit par le bouton « Exporter la synthèse » de l'application : le calcul des libellés de méthode et des résumés de paramètres vient d'un package partagé entre la SPA et ce service, les deux fichiers ne peuvent donc pas diverger.\n\n**Usage prévu** : appeler l'endpoint au démarrage d'une anonymisation, pour archiver les règles telles qu'elles étaient à cet instant. Le service relit les règles à chaque appel, sans cache.\n\nLe token ne donne accès qu'à la lecture : il ne permet ni de modifier une règle, ni de déclencher une anonymisation.","contact":{"name":"Ordesoft"}},"servers":[{"url":"https://api.anonymise.beta.ordesoft.com","description":"Bêta"}],"tags":[{"name":"Synthèse","description":"Export des règles d'anonymisation configurées."}],"paths":{"/export/synthese.csv":{"get":{"tags":["Synthèse"],"summary":"Synthèse d'anonymisation au format CSV","description":"Renvoie une ligne par champ configuré — c'est-à-dire ayant une règle enregistrée en base, ou des paramètres saisis.\n\nLe fichier est un CSV UTF-8 **avec BOM**, séparateur `;`, ce qui permet à Excel FR de l'ouvrir sans manipulation. Les colonnes sont `Table`, `Champ`, `Type`, `Clé`, `Anonymiser`, `Méthode`, `Option`, `Paramètres`.\n\nL'en-tête `Content-Disposition` porte un nom de fichier horodaté à la minute : l'enregistrer sous ce nom suffit à constituer l'archive.\n\nLes règles visant un champ absent de la structure de la base sont ignorées, comme dans l'application.","operationId":"getSynthese","security":[{"bearerAuth":[]}],"parameters":[{"name":"table","in":"query","required":false,"description":"Restreint l'export à une table. Nom exact, sensible à la casse, tel qu'il apparaît dans la colonne « Table » de l'export complet. Omis, toutes les tables sont exportées.","schema":{"type":"string"},"example":"STAGIAIRE"}],"responses":{"200":{"description":"La synthèse.","headers":{"Content-Disposition":{"description":"Nom de fichier horodaté, ex. `attachment; filename=\"anonymisation_hfsql_20260806-0818.csv\"`. Le segment central vaut `hfsql` pour un export complet, sinon le nom de la table.","schema":{"type":"string"}}},"content":{"text/csv":{"schema":{"type":"string"},"example":"\"Table\";\"Champ\";\"Type\";\"Clé\";\"Anonymiser\";\"Méthode\";\"Option\";\"Paramètres\"\n\"AVENANT\";\"CertificateurEmail\";\"Chaîne\";\"NON\";\"OUI\";\"Vidage\";\"\";\"\"\n\"STAGIAIRE\";\"Nom\";\"Chaîne\";\"NON\";\"OUI\";\"Aléatoire\";\"Référentiel\";\"Table : REF_NOMS · Champ : NOM\"\n\"STAGIAIRE\";\"Email\";\"Chaîne\";\"NON\";\"OUI\";\"Valeur fixe\";\"\";\"anonyme@example.com\""}}},"401":{"description":"En-tête `Authorization` absent, ou token invalide.","content":{"text/plain":{"schema":{"type":"string"},"example":"Unauthorized"}}},"404":{"description":"La table demandée n'existe pas dans la structure. Le service répond une erreur plutôt qu'un CSV réduit à sa ligne d'en-tête, pour qu'un export vide ne passe pas pour une absence de configuration.","content":{"text/plain":{"schema":{"type":"string"},"example":"Table inconnue : NEXISTEPAS"}}},"502":{"description":"La base de règles est momentanément injoignable. L'appel est rejouable tel quel.","content":{"text/plain":{"schema":{"type":"string"},"example":"Upstream error"}}}}}},"/export/openapi.json":{"get":{"tags":["Synthèse"],"summary":"Ce document","description":"Renvoie la spécification OpenAPI du service. Accessible sans authentification, pour qu'un portail d'API puisse l'aspirer.","operationId":"getOpenapi","security":[],"responses":{"200":{"description":"La spécification.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/export/docs":{"get":{"tags":["Synthèse"],"summary":"Documentation lisible","description":"Page HTML générée par le service à partir de cette même spécification. Répond aussi sur `/`, ce qui permet à un sous-domaine dédié de pointer sur le service sans réécriture de chemin.","operationId":"getDocs","security":[],"responses":{"200":{"description":"La page de documentation.","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Token statique, transmis hors bande. À placer dans l'en-tête `Authorization`, jamais en query string — il finirait dans les journaux du proxy."}}}}