samedi, 25 juillet, 2026
API IsoFind
IsoFind expose une API REST locale servie par FastAPI sur http://127.0.0.1:8001. Elle est utilisée par l'interface frontend Tauri et peut être interrogée directement par des scripts ou des outils tiers pour automatiser des opérations sur les données analytiques. Cette page recense les 489 routes exposées par le backend.
Informations générales
Toutes les routes retournent du JSON sauf indication contraire (exports CSV, images PNG, fichiers PDF). Les réponses d'erreur suivent le format FastAPI standard : {"detail": "message d'erreur"} avec le code HTTP correspondant. En mode multi-utilisateurs, les routes qui modifient des données requièrent un cookie de session valide.
La documentation interactive Swagger est accessible à http://127.0.0.1:8001/docs pendant qu'IsoFind est ouvert. Elle liste toutes les routes avec leurs schémas de données complets et permet de les tester directement.
Compartimentage des données
Depuis la version 1.1, la plupart des routes appliquent un filtre de visibilité. Un utilisateur non administrateur ne voit que les échantillons dont il est propriétaire, ceux qui lui ont été partagés et ceux marqués publics. Les tables enfants (géochimie, molécules, physico-chimie, isotopes) héritent implicitement de ce filtre par la liste d'identifiants déjà restreinte. Les identifiants non visibles fournis par un client sont silencieusement retirés plutôt que de provoquer une erreur, afin de ne rien révéler de leur existence.
Les opérations destructives en masse et les opérations de maintenance globale (normalisations globales, purge des données d'entraînement, réinitialisation des normalisations) sont réservées aux administrateurs.
L'API écoute uniquement sur 127.0.0.1 (localhost). Elle n'est pas accessible depuis le réseau local sauf configuration explicite. Pour un usage intranet multi-postes, consulter la documentation de déploiement réseau.
Certaines routes de préfixe /api/licence disposent d'un alias anglophone en /api/license. Les deux formes sont strictement équivalentes.
Sommaire
Sections
- Système, sécurité et démarrage
- Jeton local et accès API tiers
- Authentification et sessions
- Gestion des utilisateurs
- Protection et chiffrement de la base
- Sauvegarde et restauration
- Échantillons
- Rendements de purification
- Import et export d'échantillons
- Recherche de correspondances
- Méthodes, pipelines et publications (v2)
- Standards et normalisation isotopique
- Éléments
- CRM certifiés
- CRM analysés et shifts inter-standards
- Intégration GeoReM
- Géochimie inorganique
- Physico-chimie
- Molécules : catalogue utilisateur
- Molécules : mesures et conformité
- Molécules : base de référence
- Liens isotopie et polluants
- CSIA : isotopie spécifique aux composés
- Fractionnements isotopiques
- Fractionnement cinétique
- Nexus : santé, sessions et workflows
- Nexus : calcul isotopique et pipeline hybride
- Nexus : spéciation et apprentissage
- Nexus : détection rapide et provenance
- Nexus moléculaire
- Prédiction et simulation
- Reconstruction de signature (IsoSupply)
- Rapports
- Format ISOF
- Base communautaire
- Archives
- Projets
- Cartographie
- Workflows génériques
- Licence
- Pages de l'interface
Système, sécurité et démarrage
GET
/api/ready
Indique si le chargement complet du backend est terminé. Le frontend affiche un loader tant que
ready=false.
GET
/health
Vérification de santé du backend.
GET
/api/version/info
Version, mode d'installation, date de build et fonctionnalités activées.
GET
/api/system/mode
Mode de fonctionnement du système (
single_user ou multi_user).
GET
/api/system/config
Configuration système. Réservé aux administrateurs.
GET
/api/system/stats
Statistiques système : utilisateurs actifs, sessions, état de la base. Réservé aux administrateurs.
GET
/api/system/protection
Statut de protection des assets frontend (templates et scripts chiffrés).
GET
/api/installation/mode
Mode d'installation détecté au démarrage.
GET
/api/network-mode
Mode réseau courant :
standard ou airgap. Le frontend s'en sert pour désactiver les fonctionnalités qui dépendent du réseau.
GET
/api/trial-status
Endpoint de compatibilité avec l'ancien système d'essai. IsoFind n'a plus de période d'essai.
GET
/api/debug/modules
Diagnostic de l'état de chargement des modules critiques.
POST
/api/shutdown
Arrête proprement le serveur FastAPI. Appelé par Tauri à la fermeture de l'application.
GET
/api/updates/check
Vérifie la disponibilité d'une mise à jour. Requiert un accès réseau (bloqué en mode air-gap).
GET
/api/updates/current
Retourne la version actuellement installée.
GET
/api/config/language
Langue d'interface configurée dans
config.json.
POST
/api/config/language
Change la langue d'interface.
Corps : {"language": "fr"|"en"}
POST
/api/sync
Synchronisation des données entre les sources configurées.
Jeton local et accès API tiers
GET
/api/local/token
Point d'entrée des clients Python locaux. Le flux dépend du mode
api_access configuré (ouvert, confirmation manuelle, refus).
GET
/api/local/pending-authorizations
Liste les demandes d'autorisation en attente. Alimente la fenêtre de confirmation Tauri.
POST
/api/local/authorize-client
Valide ou refuse une demande d'autorisation en attente.
GET
/api/local/api-access-config
Configuration actuelle du contrôle d'accès API.
POST
/api/local/api-access-config
Change le mode
api_access. Appelé depuis les préférences IsoFind.
DELETE
/api/local/authorized-client/{client_id}
Révoque l'autorisation d'un client enregistré.
GET
/api/security/token
Indique si un jeton de sécurité est requis, sans jamais en révéler la valeur.
POST
/api/security/bind-session-cookie
Pose le cookie
isofind_token, miroir du jeton de sécurité. Nécessaire aux navigations déclenchées par une balise <a href>.
Authentification et sessions
Les routes de récupération sont volontairement publiques. Le code de récupération est l'unique facteur d'authentification : il doit être conservé hors ligne, au même titre qu'une clé de chiffrement.
POST
/api/auth/login
Authentification utilisateur (mode multi-utilisateurs).
Corps : {"username": str, "password": str}
Retour : {"success": bool, "user": {...}} et cookie de session. En mode mono-utilisateur, toujours accepté.
POST
/api/auth/logout
Déconnexion et invalidation de la session.
GET
/api/auth/check
Version canonique de la vérification de session : lit l'utilisateur posé par le middleware d'authentification.
POST
/api/auth/lock
Verrouille la session courante et invalide le cookie côté serveur.
GET
/api/auth/sessions
Liste les sessions actives de l'utilisateur courant (multi-utilisateurs uniquement).
DELETE
/api/auth/sessions/{session_id}
Termine une session spécifique.
POST
/api/auth/change-password
Change le mot de passe de l'utilisateur connecté.
Corps : {"old_password": str, "new_password": str, "confirm_password": str}
GET
/api/auth/first-launch
Retourne le mot de passe admin temporaire si le compte vient d'être créé. Appel unique : la valeur est effacée de la mémoire ensuite.
GET
/api/auth/recovery-code-status
Indique si un code de récupération actif est configuré. Route publique, ne révèle rien de sensible.
POST
/api/auth/recovery/generate-initial
Génère le code de récupération initial au premier démarrage. Route publique, protégée par le mot de passe admin temporaire.
POST
/api/auth/recovery/generate
Génère un nouveau code de récupération (admin authentifié). Le code en clair n'est retourné qu'une seule fois.
POST
/api/auth/generate-recovery-code
Variante appelée depuis les préférences. Seul le hash PBKDF2 du code est persisté.
POST
/api/auth/recovery
Réinitialise le mot de passe admin via le code de récupération. Route publique : le code tient lieu d'authentification.
Corps : {"recovery_code": str, "new_password": str}. Usage unique.
Gestion des utilisateurs
GET
/api/users/list
Liste tous les comptes utilisateurs. Réservé aux administrateurs.
POST
/api/users/create
Crée un compte utilisateur. Réservé aux administrateurs.
Corps : username, email, password, role (user, analyst, manager, admin), display_name.
POST
/api/users/{user_id}/toggle
Active ou désactive un compte utilisateur.
POST
/api/users/{user_id}/unlock
Déverrouille un compte bloqué après trop de tentatives échouées. Réinitialise
failed_attempts et locked_until.
DELETE
/api/users/{user_id}
Supprime un compte utilisateur. Un administrateur ne peut pas supprimer son propre compte.
PUT
/api/user/profile
Met à jour le profil de l'utilisateur connecté (nom d'affichage, email).
GET
/api/logs/activity
Journal d'activité : connexions, actions, exports. Réservé aux administrateurs.
GET
/api/logs/export
Exporte le journal d'activité en CSV. Réservé aux administrateurs.
Protection et chiffrement de la base
GET
/api/database-protection/status
État de protection de la base. Réponse plate consommée par le frontend pour l'affichage du cadenas.
GET
/api/database-protection/lock-status
Endpoint léger pour le splash de déverrouillage : quatre champs suffisent à décider d'afficher ou non la modale.
GET
/api/database-protection/icon
État condensé pour les widgets de barre d'état : cadenas vert (protégée) ou gris.
POST
/api/database-protection/enable
Active la protection au niveau demandé. Pour le niveau
encrypted : création du keystore avec MEK aléatoire et génération d'une clé de récupération BIP39.
POST
/api/database-protection/unlock
Déverrouille la session : vérification du mot de passe, dérivation de la clé, rejeu du vérificateur d'intégrité ISOF.
POST
/api/database-protection/lock
Verrouille la session courante. Idempotent.
POST
/api/database-protection/verify
Vérifie un mot de passe de protection sans changer l'état de verrouillage.
POST
/api/database-protection/unlock-with-recovery
Déverrouille via la clé de récupération BIP39 en cas d'oubli. Force la définition d'un nouveau mot de passe maître.
POST
/api/database-protection/regenerate-recovery
Régénère une clé de récupération BIP39. L'ancienne est invalidée. Le mot de passe maître est requis.
POST
/api/database-protection/change-master-password
Change le mot de passe maître de la base chiffrée. Distinct de
/api/auth/change-password, qui concerne le mot de passe utilisateur.
GET
/api/integrity-seal/status
Statut du sceau d'intégrité des colonnes de provenance ISOF. Valide signifie qu'aucune modification extérieure n'a été détectée depuis le dernier import.
POST
/api/integrity-seal/reseal
Rescelle l'empreinte des colonnes de provenance ISOF. Appelé automatiquement après un import réussi.
GET
/api/refs/integrity-status
État d'intégrité des bases de référence :
fractionation_database, isotopes_reference, molecules_reference.
POST
/api/refs/import
Reçoit un fichier
.db de référence, vérifie sa signature ECDSA de l'autorité intermédiaire IsoFind puis l'installe.
Sauvegarde et restauration
GET
/api/database/backup
Télécharge une copie binaire de la base active. Pour une base SQLCipher, le fichier reste chiffré.
GET
/api/database/backup/info
Métadonnées des sauvegardes disponibles et état de protection.
POST
/api/database/restore
Restaure une base sauvegardée. Écriture binaire directe pour une base en clair.
POST
/api/database/backup/encrypted
Crée une sauvegarde chiffrée AES-256-GCM dans
backups/.
Corps : {"password": "mot_de_passe_maitre"}
POST
/api/database/restore/encrypted
Restaure une sauvegarde
.protected.bak. Le déchiffrement a lieu en mémoire côté serveur : le clair ne transite jamais.
Échantillons
Toutes les routes de lecture sur les échantillons appliquent le compartimentage : un utilisateur non administrateur ne voit que ses propres échantillons, ceux qui lui sont partagés et ceux marqués publics.
GET
/api/samples
Liste complète des échantillons avec leurs données isotopiques.
Params : limit (int), sort (asc ou desc, tri par date de création). Par défaut, tri par identifiant décroissant.
GET
/api/samples/{sample_id}
Récupère un échantillon précis avec ses données isotopiques. Retourne 404 si l'identifiant n'existe pas.
POST
/api/samples
Crée un nouvel échantillon avec ses données isotopiques.
Corps : name (requis), material_type, sector, collection_date, collection_location, description, classification (source ou fille), latitude, longitude, project.
Le type de matériau et la classification sont normalisés automatiquement. En mode multi-utilisateurs, owner_id vaut l'utilisateur courant et la visibilité est private.
PUT
/api/samples/{sample_id}
Remplace complètement un échantillon. Réservé au propriétaire ou à un administrateur.
PATCH
/api/samples/{sample_id}
Mise à jour partielle : seuls les champs fournis sont modifiés.
DELETE
/api/samples/{sample_id}
Supprime un échantillon et toutes ses données isotopiques associées.
DELETE
/api/samples/{sample_id}/isotope/{isotope_id}
Supprime une donnée isotopique individuelle.
GET
/api/samples/{sample_id}/isotopes
Données isotopiques d'un échantillon.
GET
/api/samples/{sample_id}/isotope-values
Valeurs isotopiques d'un échantillon, format destiné aux modules de calcul.
GET
/api/samples/{sample_id}/isotope-debug
Lignes brutes de
isotope_data avec le détail ratio_value face à normalized_value. Usage diagnostic.
GET
/api/samples/{sample_id}/depth-profile
Points de profondeur associés à un échantillon (profil vertical).
GET
/api/samples/{sample_id}/audit
Historique de traçabilité d'un échantillon.
Params : limit (int).
POST
/api/samples/{sample_id}/audit
Enregistre une entrée d'audit sur un échantillon.
GET
/api/samples/isotopic-data
Toutes les données isotopiques de la base, avec indicateur de normalisation.
GET
/api/samples/metadata
Métadonnées des échantillons indexées par
sample_id, fusionnables côté client.
GET
/api/samples/stats
Statistiques du tableau de bord scientifique : total, échantillons géoréférencés, éléments uniques, répartition par matériau.
GET
/api/samples/family-distribution
Distribution agrégée des mesures par famille de données.
GET
/api/samples/integrity
Informations de provenance et d'intégrité ISOF par échantillon.
POST
/api/samples/check-existing
Pré-vérification d'unicité des noms d'échantillons, avant l'envoi d'un import.
POST
/api/samples/count
Comptage des échantillons avant chargement, pour dimensionner la pagination côté frontend.
GET
/api/spreadsheet/samples
Endpoint dédié au tableur : retourne tous les champs des données isotopiques, dont
collection_date, sample_type et standard_used.
Rendements de purification
GET
/api/samples/{sample_id}/purification-yields
Rendements de purification enregistrés pour un échantillon.
POST
/api/samples/{sample_id}/purification-yields
Enregistre ou remplace le rendement d'un élément pour un échantillon.
Corps : {"element": str, "yield_percent": float, "operator": str|null, "method_key": str|null}
Fonctionne par INSERT OR REPLACE : un seul rendement par couple (sample_id, element).
DELETE
/api/samples/{sample_id}/purification-yields/{element}
Supprime le rendement d'un élément pour un échantillon.
GET
/api/v2/methods/yield-ranges
Plages de rendement attendu pour un élément, lues dans le
protocol_json des méthodes de type purification ou séparation.
Params : element (str).
Import et export d'échantillons
POST
/api/import-csv
Import CSV avec résolution sémantique des colonnes.
Corps : multipart/form-data : file, archive_mode (bool), standard_aliases, skip_existing.
Accepte les en-têtes en français ou en anglais, avec ou sans accents, en majuscules ou minuscules. La résolution est d'abord exacte puis approximative (distance d'édition maximum 2). L'encodage est détecté automatiquement (UTF-8, UTF-8 BOM, Latin-1).
POST
/api/csv/preview-excel
Pré-parsing d'un fichier Excel côté serveur, pour les modules frontend qui n'embarquent pas SheetJS.
GET
/api/samples/export
Exporte les échantillons visibles en CSV.
GET
/api/v2/samples/{sample_id}/full
Échantillon complet : isotopes, méthodes, publications, pipeline.
POST
/api/v2/samples/export-batch
Exporte plusieurs échantillons avec toutes leurs données associées.
Corps : [sample_id, ...]
Recherche de correspondances
POST
/analyze
Lance la recherche de correspondance géographique pour un échantillon de la base.
Corps :
| Champ | Type | Défaut | Description |
|---|---|---|---|
sample_id | int | requis | Identifiant de l'échantillon dans la base. |
isotope_data | list | [] | Données isotopiques à utiliser. Si vide, celles de la base sont reprises. |
threshold | float | 0.85 | Seuil de score de correspondance, entre 0 et 1. Distance de Mahalanobis. |
algorithm | str | hybrid | hybrid, mahalanobis ou bayesian. |
classification_filter | str | sources | sources, filles ou all. |
database_sources | list | ["local"] | local, archive, community. |
same_material | bool | true | Restreindre aux mêmes types de matériaux. |
POST
/analyze/manual
Analyse à partir de données isotopiques saisies directement, sans échantillon en base. Crée un échantillon temporaire non persisté.
Corps : sample_name, material_type, isotope_data (requis), threshold (défaut 0.75), algorithm.
POST
/analyze/map
Analyse et génération de la carte des correspondances en une seule requête.
POST
/analyze/archives
Variante de
/analyze qui ne cherche que dans les archives. Mêmes paramètres.
POST
/analyze/manual/archives
Variante de
/analyze/manual restreinte aux archives visibles.
POST
/api/matching/find/{sample_id}
Recherche de correspondances pour un échantillon, version simplifiée.
Params : threshold (float).
POST
/api/matching/batch
Analyse plusieurs échantillons en une requête. Retourne un dictionnaire
sample_id vers résultat, les erreurs étant isolées par échantillon.
POST
/api/matching/manual
Analyse manuelle depuis l'interface de correspondance, avec sélection d'éléments et de ratios.
POST
/api/matching/advanced/{sample_id}
Analyse avancée avec choix explicite d'algorithme.
Params : algorithm, threshold, sigma_multiplier.
GET
/api/matching/compare/{sample_id}
Compare les résultats de tous les algorithmes pour un même échantillon.
GET
/api/matching/config
Configuration actuelle du moteur de correspondance : seuils, algorithme par défaut.
Méthodes, pipelines et publications (v2)
GET
/api/v2/methods
Liste les méthodes de la bibliothèque.
Params : type, element.
GET
/api/v2/methods/{method_id}
Récupère une méthode par son identifiant.
POST
/api/v2/methods
Crée une méthode.
PUT
/api/v2/methods/{method_id}
Met à jour une méthode.
DELETE
/api/v2/methods/{method_id}
Supprime une méthode.
GET
/api/v2/methods/{method_id}/samples
Identifiants des échantillons auxquels cette méthode est assignée.
GET
/api/v2/samples/{sample_id}/methods
Méthodes appliquées à un échantillon.
POST
/api/v2/samples/{sample_id}/methods
Associe une méthode à un échantillon.
POST
/api/v2/samples/methods-batch
Méthodes assignées pour une liste d'échantillons.
Corps : {"sample_ids": [...]}
POST
/api/v2/samples/assign-method-batch
Assigne une méthode à plusieurs échantillons.
Corps : sample_ids, method_id, method_type, method_name, element, parameters_json.
DELETE
/api/v2/sample-methods/{sm_id}
Dissocie une méthode d'un échantillon.
GET
/api/v2/publications
Liste les publications.
Params : year, category.
GET
/api/v2/publications/{pub_id}
Récupère une publication par son identifiant.
GET
/api/v2/publications/doi/{doi}
Récupère une publication par son DOI. Le DOI est accepté tel quel, barres obliques comprises.
POST
/api/v2/publications
Crée une référence bibliographique.
PUT
/api/v2/publications/{pub_id}
Met à jour une publication.
DELETE
/api/v2/publications/{pub_id}
Supprime une publication.
GET
/api/v2/samples/{sample_id}/publications
Publications liées à un échantillon.
POST
/api/v2/samples/{sample_id}/publications
Lie une publication à un échantillon.
DELETE
/api/v2/sample-publications/{sp_id}
Supprime un lien échantillon vers publication.
GET
/api/v2/pipelines
Liste les pipelines d'analyse.
Params : element.
GET
/api/v2/pipelines/{pipeline_id}
Pipeline détaillé avec ses méthodes.
POST
/api/v2/pipelines
Crée un pipeline.
DELETE
/api/v2/pipelines/{pipeline_id}
Supprime un pipeline.
GET
/api/v2/samples/{sample_id}/pipeline
Pipeline actif d'un échantillon et sa progression.
POST
/api/v2/samples/{sample_id}/pipeline
Assigne un pipeline à un échantillon.
PUT
/api/v2/sample-pipelines/{sp_id}/progress
Met à jour la progression d'une étape de pipeline.
Params : current_stage, status.
Standards et normalisation isotopique
GET
/api/standards
Liste les standards isotopiques.
Params : element.
POST
/api/standards/custom
Crée un standard personnalisé.
PUT
/api/standards/{standard_id}
Met à jour un standard.
DELETE
/api/standards/{standard_id}
Supprime un standard.
POST
/api/samples/{sample_id}/normalize
Persiste les valeurs normalisées d'un échantillon dans la base.
POST
/api/samples/{sample_id}/reset-normalization
Annule la normalisation d'un échantillon.
POST
/api/samples/auto-normalize
Normalise automatiquement tous les échantillons pour lesquels un shift inter-standard est disponible. Opération globale, réservée aux administrateurs.
POST
/api/samples/check-normalization
Détermine quels échantillons peuvent être normalisés, sans rien appliquer.
POST
/api/samples/reset-all-normalizations
Réinitialise toutes les normalisations. Réservé aux administrateurs.
POST
/api/samples/normalize-materials
Normalise les types de matériaux existants. Opération de maintenance, réservée aux administrateurs.
POST
/api/samples/normalize-classifications
Normalise les classifications existantes. Réservé aux administrateurs.
POST
/api/samples/normalize-all-data
Normalise en une passe matériaux, classifications, ratios isotopiques et symboles d'éléments. Réservé aux administrateurs.
Éléments
GET
/api/elements
Liste tous les éléments isotopiques, prédéfinis et personnalisés.
GET
/api/elements/custom
Liste les éléments personnalisés uniquement.
POST
/api/elements/custom
Crée un élément isotopique personnalisé.
PUT
/api/elements/custom/{element_id}
Modifie un élément personnalisé.
DELETE
/api/elements/custom/{element_id}
Supprime un élément personnalisé.
GET
/api/zones
Zones géographiques de référence utilisées par la recherche de correspondances.
GET
/api/stats
Statistiques globales du tableau de bord : échantillons, éléments, zones, correspondances calculées.
CRM certifiés
GET
/api/crm/list
Liste tous les matériaux de référence certifiés.
GET
/api/crm/{crm_id}
Récupère un CRM avec ses concentrations et données isotopiques.
GET
/api/crm/statistics
Statistiques globales de la base CRM.
POST
/api/crm/add
Ajoute un CRM.
PUT
/api/crm/{crm_id}/update
Met à jour un CRM.
PUT
/api/crm/{crm_id}/edit
Édite un CRM : ajout ou modification de concentrations et d'isotopes en une requête.
DELETE
/api/crm/{crm_id}/delete
Supprime un CRM.
DELETE
/api/crm/{crm_id}
Supprime un CRM. Variante d'URL courte, comportement identique.
POST
/api/crm/{crm_id}/concentration
Ajoute ou met à jour la concentration d'un élément dans un CRM.
POST
/api/crm/{crm_id}/isotope
Ajoute ou met à jour un ratio isotopique dans un CRM.
DELETE
/api/crm/{crm_id}/concentration/{element}
Supprime la concentration d'un élément.
DELETE
/api/crm/{crm_id}/isotope/{ratio}
Supprime un ratio isotopique.
GET
/api/crm/export/database
Télécharge la base CRM complète.
GET
/api/crm/export/json
Exporte les CRM en JSON.
POST
/api/crm/import/database
Importe une base CRM avec fusion.
Params : strategy : stratégie de fusion en cas de doublon.
POST
/api/crm/import/preview
Prévisualise le contenu d'un import CRM sans l'appliquer.
CRM analysés et shifts inter-standards
GET
/api/crm-analyzed/list
Liste les CRM analysés avec leurs statistiques.
GET
/api/crm-analyzed/{crm_analysis_id}
Récupère un CRM analysé avec toutes ses valeurs mesurées.
POST
/api/crm-analyzed/create
Crée un CRM analysé avec ses valeurs.
PUT
/api/crm-analyzed/{crm_analysis_id}
Met à jour les informations d'un CRM analysé.
DELETE
/api/crm-analyzed/{crm_analysis_id}
Supprime un CRM analysé. Cascade sur les valeurs, associations et shifts.
POST
/api/crm-analyzed/{crm_analysis_id}/add-value
Ajoute une valeur mesurée à un CRM analysé.
DELETE
/api/crm-analyzed/value/{value_id}
Supprime une valeur mesurée.
GET
/api/crm-analyzed/robustness-score
Score de robustesse global de la campagne d'étalonnage.
GET
/api/crm-analyzed/robustness-by-element
Score de robustesse détaillé par élément.
POST
/api/crm-analyzed/recalculate-scores
Recalcule les scores de tous les CRM analysés existants.
POST
/api/crm-analyzed/associate-samples
Associe des échantillons à un CRM analysé.
POST
/api/crm-analyzed/auto-associate
Associe automatiquement les échantillons par plage de dates d'analyse.
DELETE
/api/crm-analyzed/disassociate/{sample_id}/{crm_id}
Supprime une association échantillon vers CRM.
GET
/api/crm-analyzed/sample/{sample_id}/crms
CRM associés à un échantillon.
POST
/api/crm-analyzed/{crm_analysis_id}/calculate-shifts
Calcule les shifts isotopiques entre standards pour un même CRM, en comparant les analyses réalisées avec des standards différents.
POST
/api/crm-analyzed/calculate-all-shifts
Calcule tous les shifts inter-standards, en regroupant par nom de CRM et en traitant chaque paire de standards.
GET
/api/crm-analyzed/shifts/active
Liste les shifts actifs dérivés des CRM analysés.
POST
/api/crm-analyzed/shift/{shift_id}/toggle-active
Active ou désactive un shift.
POST
/api/crm-analyzed/import-csv
Importe des CRM analysés depuis un CSV.
Format : crm_id, crm_name, session_name, analysis_date, instrument, standard_used, element, isotope_ratio, measured_value, uncertainty
GET
/api/crm-analyzed/export-csv
Exporte tous les CRM analysés en CSV.
POST
/api/shifts/calculate/{crm_id}
Calcule les shifts inter-standards en analysant toutes les mesures d'un CRM.
Params : element (requis), isotope_ratio (requis).
POST
/api/shifts/calculate-all
Calcule les shifts pour tous les CRM mesurés contre plusieurs standards.
GET
/api/shifts/get
Récupère un shift entre deux standards.
Params : element, isotope_ratio, standard_from, standard_to.
GET
/api/shifts/list
Liste tous les shifts calculés, avec filtres optionnels.
POST
/api/shifts/convert
Convertit une valeur isotopique d'un standard à un autre en appliquant le shift approprié.
Params : value, element, isotope_ratio, standard_from, standard_to.
GET
/api/shifts/statistics
Statistiques sur les shifts calculés.
GET
/api/shifts/history
Historique des calculs de shifts.
Params : limit (int).
Intégration GeoReM
Les routes GeoReM effectuent des requêtes sortantes vers un service en ligne. Elles sont indisponibles en mode air-gap.
GET
/api/crm/georem/search
Recherche un matériau de référence dans GeoReM.
Params : q : nom du matériau.
GET
/api/crm/georem/preview/{georem_id}
Prévisualise les données qui seront importées depuis GeoReM.
POST
/api/crm/georem/import/{georem_id}
Importe un CRM depuis GeoReM.
POST
/api/crm/georem/import/{georem_id}/full
Importe un CRM depuis GeoReM avec l'ensemble des données extraites.
Params : user_notes.
GET
/api/georem/search
Recherche GeoReM, variante d'URL courte.
GET
/api/georem/preview
Prévisualise les données GeoReM disponibles pour un matériau, sans import.
Params : material_name.
GET
/api/georem/search-isotopes
Recherche les données isotopiques d'un matériau sur GeoReM.
Exemple : /api/georem/search-isotopes?material_name=GXR-4
POST
/api/georem/import-complete
Import complet depuis GeoReM : concentrations et isotopes.
POST
/api/georem/import/{sample_name}
Import complet par nom de matériau. Convertit automatiquement epsilon en delta et identifie les ratios isotopiques.
GET
/api/georem/test/{sample_name}
Route de diagnostic : retourne le HTML brut renvoyé par GeoReM.
Géochimie inorganique
GET
/api/samples/{sample_id}/geochem
Toutes les concentrations d'un échantillon, triées par élément.
GET
/api/samples/{sample_id}/geochem/{geochem_id}
Une entrée géochimique précise.
POST
/api/samples/{sample_id}/geochem
Ajoute une concentration.
POST
/api/samples/{sample_id}/geochem/batch
Insère un lot de concentrations en une transaction.
remplacer=true supprime d'abord les éléments concernés, ce qui permet de rejouer proprement un import CSV.
PATCH
/api/samples/{sample_id}/geochem/{geochem_id}
Mise à jour partielle d'une entrée.
DELETE
/api/samples/{sample_id}/geochem/{geochem_id}
Supprime une entrée géochimique. Réservé au propriétaire ou à un administrateur.
DELETE
/api/samples/{sample_id}/geochem
Supprime toutes les concentrations d'un échantillon. Action destructive en masse, tracée en audit.
Physico-chimie
GET
/api/samples/{sample_id}/physicochemistry
Toutes les mesures physico-chimiques d'un échantillon.
GET
/api/samples/{sample_id}/physicochemistry/nexus-conditions
Conditions physico-chimiques formatées pour la carte Conditions du Nexus (objet
GeochemicalConditions).
POST
/api/samples/{sample_id}/physicochemistry
Ajoute ou remplace une mesure. La contrainte
UNIQUE(sample_id, parameter) garantit une valeur unique par paramètre.
POST
/api/samples/{sample_id}/physicochemistry/batch
Upsert d'un lot de mesures en une transaction.
PATCH
/api/samples/{sample_id}/physicochemistry/{parameter}
Mise à jour partielle par nom de paramètre.
DELETE
/api/samples/{sample_id}/physicochemistry/{parameter}
Supprime un paramètre physico-chimique.
DELETE
/api/samples/{sample_id}/physicochemistry
Supprime toutes les mesures physico-chimiques d'un échantillon.
Molécules : catalogue utilisateur
GET
/api/molecules/catalogue
Liste paginée des molécules du catalogue utilisateur.
Params : famille (filtre exact, par exemple PFAS), actif, page, page_size, include_geochemical, q (recherche libre).
GET
/api/molecules/catalogue/familles
Familles présentes dans le catalogue utilisateur.
GET
/api/molecules/catalogue/{molecule_id}
Détail d'une molécule du catalogue.
POST
/api/molecules/catalogue
Crée une molécule dans le catalogue utilisateur.
PATCH
/api/molecules/catalogue/{molecule_id}
Mise à jour partielle d'une molécule.
DELETE
/api/molecules/catalogue/{molecule_id}
Supprime une molécule.
Params : archiver (bool) : archive au lieu de supprimer.
POST
/api/molecules/catalogue/seed/{famille}
Insère les molécules prédéfinies d'une famille. Les doublons CAS sont ignorés.
GET
/api/molecules/catalogue/seed/familles
Familles disponibles dans le seed, avec le niveau de licence requis.
Molécules : mesures et conformité
GET
/api/molecules/mesures-all
Toutes les mesures de tous les échantillons en une requête.
Params : page, page_size, include_geochemical, famille, sample_ids.
GET
/api/molecules/{sample_id}/mesures
Mesures moléculaires d'un échantillon.
GET
/api/molecules/{sample_id}/mesures/{mesure_id}
Une mesure précise.
POST
/api/molecules/{sample_id}/mesures
Ajoute une mesure.
POST
/api/molecules/{sample_id}/mesures/batch
Ajoute un lot de mesures en une transaction.
PATCH
/api/molecules/{sample_id}/mesures/{mesure_id}
Mise à jour partielle d'une mesure.
DELETE
/api/molecules/{sample_id}/mesures/{mesure_id}
Supprime une mesure.
DELETE
/api/molecules/{sample_id}/mesures
Supprime toutes les mesures d'un échantillon.
POST
/api/molecules/recalculer-conformite
Recalcule
conforme, seuil_ref et seuil_ref_unit pour toutes les mesures dont la molécule cataloguée a vu son seuil modifié.
POST
/api/molecules/recalculer-conformite/{molecule_id}
Recalcule la conformité pour une seule molécule. À appeler après un PATCH sur le catalogue.
GET
/api/molecules/{sample_id}/conformite
Résumé de conformité d'un échantillon, par famille et par molécule : dépassements, conformes, non testés.
GET
/api/molecules/stats/global
Statistiques moléculaires globales.
GET
/api/molecules/stats/par-sample/{sample_id}
Statistiques moléculaires d'un échantillon.
Molécules : base de référence
GET
/api/molecules/reference/catalogue
Molécules de la base de référence.
Params : famille (PFAS, Pesticides, HAP...), niveau_acces (gratuit, pro, defense), q, limit.
GET
/api/molecules/reference/familles
Familles de la base de référence, avec comptage et niveaux d'accès.
GET
/api/molecules/reference/{ref_id}
Une molécule de la base de référence.
GET
/api/molecules/reference/{ref_id}/isotopes
Liens isotopiques d'une molécule de référence.
POST
/api/molecules/reference/{ref_id}/importer
Copie une molécule de référence vers le catalogue utilisateur. Le doublon CAS est ignoré.
POST
/api/molecules/reference/importer-batch
Importe plusieurs molécules de référence. Retourne le détail de chaque import : nouveau, déjà existant, ou erreur.
Liens isotopie et polluants
GET
/api/molecules/{sample_id}/isotopic-links
Croise les familles de molécules détectées avec les éléments isotopiques pertinents pour l'attribution d'origine. Nécessite des données dans
isotope_data.
GET
/api/molecules/ref-isotopes
Liens molécule vers isotope de la table de référence.
Params : famille, element.
POST
/api/molecules/ref-isotopes/seed
Insère les liens molécule vers isotope de référence. Les doublons CAS plus ratio sont ignorés.
GET
/api/molecules/ref-isotopes/v2
Liens isotopiques enrichis : gammes de valeurs, score de discrimination, faisabilité.
Params : famille, element, faisabilite, min_discrimination. Repli sur les données statiques si la table est vide.
POST
/api/molecules/ref-isotopes/seed-v2
Insère les entrées enrichies de
ref_molecules_isotopes_v2.
GET
/api/molecules/ref-isotopes/sample/{sample_id}
Croise les familles détectées dans un échantillon avec la table de référence pour identifier les liens exploitables.
GET
/api/molecules/ref-isotopes/suggest/{sample_id}
Recommandations d'analyses complémentaires priorisées, déduites des molécules et signatures isotopiques présentes.
CSIA : isotopie spécifique aux composés
GET
/api/molecules/csia/list
Molécules disposant de données CSIA exploitables par le Nexus.
GET
/api/molecules/csia/{molecule_name}/pathways
Voies de dégradation documentées pour une molécule.
POST
/api/molecules/csia/resolve
Résolution complète molécule et voie : epsilon, mode, métabolites, références, et tous les fractionnements multi-éléments de la même voie.
POST
/api/molecules/csia/dual
Résolution dual-isotope pour une paire d'éléments (C/Cl, C/N...). Retourne les deux epsilons et la pente Lambda, diagnostique du mécanisme.
Fractionnements isotopiques
GET
/api/fractionation/summary
Résumé agrégé par type de processus. Utilisé par la Process Library.
GET
/api/fractionation/list
Liste paginée avec filtres.
Params : page, per_page, element, process_type, material, search, sort_by, sort_order.
GET
/api/fractionation/elements
Éléments disponibles dans la base de fractionnements.
GET
/api/fractionation/process-types
Types de processus disponibles.
GET
/api/fractionation/materials
Matériaux disponibles, optionnellement filtrés par type de processus.
GET
/api/fractionation/stats/overview
Statistiques générales de la base de fractionnements.
GET
/api/fractionation/{entry_id}
Une entrée de fractionnement.
POST
/api/fractionation/
Crée une entrée de fractionnement.
POST
/api/fractionation/experimental
Crée des entrées à partir de données expérimentales : plusieurs points de mesure, les valeurs de fractionnement étant calculées automatiquement.
PUT
/api/fractionation/{entry_id}
Met à jour une entrée.
DELETE
/api/fractionation/{entry_id}
Supprime une entrée.
GET
/api/fractionation/export/json
Exporte les données en JSON.
Params : element, process_type.
GET
/api/fractionation/export/csv
Exporte les données en CSV.
POST
/api/fractionation/import/json
Importe des données depuis un fichier JSON.
Fractionnement cinétique
GET
/api/kinetic-fractionation/health
Vérification de santé du module.
POST
/api/kinetic-fractionation/compute
Calcule le fractionnement cinétique. Les données cinétiques (
equilibrium_reached = 0) sont recherchées en priorité, avec repli sur les données non spécifiées.
GET
/api/kinetic-fractionation/search
Recherche un epsilon cinétique dans la base.
Params : element, process_type, mineral.
GET
/api/kinetic-fractionation/database/kinetic
Liste toutes les entrées cinétiques.
GET
/api/kinetic-fractionation/database/all
Liste toutes les entrées avec leur type : équilibre, cinétique ou non spécifié.
Nexus : santé, sessions et workflows
GET
/api/nexus/health
État du moteur Nexus.
GET
/api/nexus/statistics
Statistiques de la base de données Nexus.
POST
/api/nexus/sessions/save
Sauvegarde une session Nexus complète : workflow, résultats de calcul et correspondances, en vue d'un rapport.
GET
/api/nexus/sessions/list
Liste les cinquante sessions les plus récentes, enrichies de la molécule et du delta total.
GET
/api/nexus/sessions/{session_id}
Charge une session Nexus complète.
DELETE
/api/nexus/sessions/{session_id}
Supprime une session Nexus.
GET
/api/nexus/workflows/list
Liste les workflows sauvegardés.
GET
/api/nexus/workflows/{workflow_id}
Charge un workflow.
POST
/api/nexus/workflows/save
Sauvegarde un workflow.
DELETE
/api/nexus/workflows/{workflow_id}
Supprime un workflow.
GET
/api/nexus/workflows/autosave
Récupère le dernier autosave, stocké dans le slot réservé
__autosave__.
POST
/api/nexus/workflows/autosave
Upsert du slot autosave.
POST
/api/nexus/execute
Route principale du frontend : transforme la représentation nœuds et connexions en analyse de workflow.
POST
/api/nexus/validate
Valide un workflow avant exécution.
POST
/api/nexus/analyze_workflow
Analyse complète d'un workflow : ML couches 1 et 2, base de données, scoring composite.
GET
/api/nexus/templates/list
Templates de workflow prédéfinis.
GET
/api/nexus/templates/{template_id}
Charge un template prédéfini.
Nexus : calcul isotopique et pipeline hybride
POST
/api/nexus/calculate_isotopic_chain
Calcul isotopique complet avec contextualisation. Modes
forward et inverse.
POST
/api/fourier/calculate
Calcul des fractionnements via ML et transformée de Fourier. Endpoint historique, conservé pour compatibilité.
POST
/api/ml/analyze
Analyse chimique par ML. Endpoint historique : préférer
/api/nexus/predict_speciation.
GET
/api/nexus/hybrid/status
Disponibilité du pipeline hybride.
POST
/api/nexus/hybrid/forward
Pipeline forward hybride, en séparation d'opérateurs : signature source, composante linéaire FFT, puis Rayleigh.
POST
/api/nexus/hybrid/inverse
Pipeline inverse hybride. Nécessite
delta_source pour l'estimation de la fraction résiduelle.
POST
/api/nexus/hybrid/analyze
Analyse hybride complète : les processus et paramètres sont extraits automatiquement du workflow.
GET
/api/nexus/process-diagnostics/{workflow_id}
Diagnostics détaillés des processus d'un workflow, notamment pour chaque étape Rayleigh.
POST
/api/nexus/identify-processes
Identifie les processus géochimiques entre deux signatures connectées.
POST
/api/nexus/identify-processes-multi
Identification multi-processus par chaîne itérative, via la contextualisation automatique.
POST
/api/nexus/auto-contextualise
Contextualisation automatique itérative depuis une signature initiale et un contexte géochimique.
Nexus : spéciation et apprentissage
GET
/api/nexus/ml_status
État des modèles ML embarqués.
POST
/api/nexus/predict_speciation
Prédit la spéciation (ML couche 1). Tous les éléments supportés.
POST
/api/nexus/predict_adsorption
Prédit la favorabilité d'adsorption (ML couche 2).
POST
/api/nexus/predict_workflow
Prédiction ML appliquée à un workflow complet.
POST
/api/nexus/analyze-speciation
Spéciation détaillée d'un échantillon : espèces, concentrations et pourcentages.
POST
/api/nexus/compare-speciation
Compare la spéciation source et la spéciation produit : changements d'états d'oxydation, concentrations, espèces.
POST
/api/nexus/analyze-csv-speciation
Analyse la spéciation depuis un CSV téléversé.
Params : file, element.
POST
/api/nexus/query_database
Interroge la base de fractionnements.
Nexus : détection rapide et provenance
GET
/api/nexus/samples/search
Recherche d'échantillons pour la carte Échantillon BDD.
Params : q, element, material_type, limit.
POST
/api/nexus/db-match
Correspondances dans la base pour la carte Correspondance BDD.
POST
/api/nexus/scoring-composite
Scoring composite : correspondance de la signature avec la base et détection de mélange.
POST
/api/nexus/search-origin
Recherche l'origine géographique d'un échantillon à partir de sa signature isotopique.
GET
/api/nexus/quick-match/templates
Templates de transformation disponibles. Filtrés selon le niveau de licence.
GET
/api/nexus/quick-match/csia-templates/{molecule_name}
Voies CSIA d'une molécule exposées comme templates Quick Match, chaque voie générant une étape pré-remplie.
Params : element.
POST
/api/nexus/quick-match
Correspondance rapide avec application de fractionnements, en deux étapes.
POST
/api/nexus/quick-match-archives
Même chose, mais dans les tables d'archives.
POST
/api/nexus/traceability
Recherche de provenance par inversion du procédé industriel, via la base de fractionnements.
POST
/api/nexus/traceability-archives
Même logique d'inversion, appliquée aux archives.
POST
/api/nexus/unmix
Démixage isotopique multi-sources, par résolution d'un problème contraint.
POST
/api/nexus/authenticity-check
Score d'authenticité composite, entre 0 et 1, par comparaison à la bibliothèque de référence.
POST
/api/nexus/authenticity-check-archives
Variante interrogeant
archive_samples et archive_isotope_data.
GET
/api/nexus/sample-series
Mesures isotopiques datées d'un échantillon, pour le suivi temporel.
Params : sample_id, element, isotope_ratio.
POST
/api/nexus/monitor-series
Analyse d'une série temporelle isotopique : tendance, ruptures, dérive.
Nexus moléculaire
POST
/api/nexus/molecular/degradation-chain
Propage une signature isotopique le long d'une chaîne de dégradation multi-étapes (Rayleigh cinétique CSIA). Chaque étape porte son isotope, son epsilon et sa fraction résiduelle.
POST
/api/nexus/molecular/molecular-traceability
Reconstruction inverse de la signature source d'un contaminant organique, par Rayleigh inverse :
delta_0 = delta_residu - epsilon * ln(f). L'incertitude est propagée à chaque remontée.
POST
/api/nexus/molecular/degradation-extent
Estime le degré de dégradation par inversion CSIA :
f = exp((delta_ech - delta_source) / epsilon), la dégradation valant (1 - f) * 100.
GET
/api/nexus/molecular/epsilon-database
Epsilons CSIA disponibles. Sans paramètre, toute la base.
Params : process_type.
GET
/api/nexus/molecular/sample-geochem/{sample_id}
Concentrations de
sample_geochem pour un échantillon.
Prédiction et simulation
POST
/api/predict/prior
Prior géochimique couplé : mélange de deux pôles, distillation de Rayleigh avec epsilon issu de la base de fractionnements ou de la littérature.
POST
/api/predict/train
Entraîne le perceptron multicouche résiduel (
résidu = observé - prior) pour un élément.
POST
/api/predict/infer
Prior corrigé par le modèle résiduel.
GET
/api/predict/model-status
État des modèles résiduels entraînés.
POST
/api/predict/temporal
Extrapolation temporelle isotopique.
POST
/api/predict/temporal/train-lstm
Entraîne le LSTM temporel sur les campagnes disponibles.
GET
/api/predict/lithology-templates
Catalogue des templates lithologiques, chacun fournissant les plages [min, max, typique] des paramètres hydrogéochimiques et les références bibliographiques.
GET
/api/predict/nexus-processes
Processus Nexus disponibles pour un élément, avec le nombre d'entrées en base.
Params : element.
POST
/api/predict/simulate
Simule l'évolution d'un panache géochimique depuis un point source.
GET
/api/predict/simulate/molecules
Molécules disposant de propriétés de transport.
GET
/api/predict/csia/molecules
Molécules disposant de données CSIA exploitables pour la simulation isotopique.
GET
/api/predict/csia/pathways
Voies de dégradation documentées pour une molécule.
Params : molecule.
GET
/api/predict/csia/dual
Résolution dual CSIA : couple d'isotopes (C/Cl, C/N, C/H) et pente Lambda diagnostique du mécanisme.
Params : molecule, pathway, primary, secondary.
GET
/api/predict/info
Modèles disponibles et leurs paramètres.
Reconstruction de signature (IsoSupply)
POST
/api/reconstruction/forward
Propage une signature initiale à travers la chaîne industrielle. Mode simulation : si l'on part de X, le métal sortant vaut Y.
POST
/api/reconstruction/inverse
Reconstruit la signature d'origine depuis la signature finale.
Params : method : analytical (défaut, instantané et défendable scientifiquement) ou méthodes stochastiques.
POST
/api/reconstruction/match
Compare une signature observée aux gisements de la base. Comportement adaptatif selon la compatibilité à 95 % d'intervalle de confiance.
POST
/api/reconstruction/full
Pipeline complet, inversion puis matching. Endpoint principal d'IsoSupply.
GET
/api/reconstruction/methods
Méthodes d'inversion supportées.
GET
/api/reconstruction/catalog/{element}
Procédés industriels documentés pour un élément.
GET
/api/reconstruction/deposits/search
Recherche de gisements par nom partiel.
Params : element (requis), q (fragment de nom, insensible à la casse).
GET
/api/reconstruction/deposit/{deposit_id}
Détail complet d'un gisement : métadonnées, publications, nombre d'échantillons.
GET
/api/reconstruction/deposit/{deposit_id}/measurements
Mesures individuelles d'un gisement pour un élément, afin de superposer les points historiques aux ellipses de confiance.
GET
/api/reconstruction/samples
Échantillons d'
isofind.db disposant de mesures pour l'élément demandé.
Params : element, limit.
GET
/api/reconstruction/sample/{sample_id}
Détail d'un échantillon avec ses ratios mesurés : notation, valeur, incertitude, standard, profondeur.
POST
/api/reconstruction/samples/aggregate
Agrège plusieurs échantillons en une signature moyenne pondérée par les inverses de variances.
POST
/api/reconstruction/check-chain-consistency
Vérifie la cohérence entre une matrice mesurée et une chaîne déclarée. Les avertissements sont informatifs, le calcul reste autorisé.
GET
/api/reconstruction/nexus-chains
Chaînes Nexus sauvegardées pour un élément.
Params : element, limit.
GET
/api/reconstruction/nexus-chain/{chain_id}/preview
Détail d'une chaîne Nexus avec résolution des
process_id du catalogue.
POST
/api/reconstruction/dag/preview
Validation légère du graphe sans inversion : cycles, nœuds isolés, ancrage des cibles, reconstructibilité de chaque maillon inconnu.
POST
/api/reconstruction/dag
Reconstruction complète d'un graphe d'approvisionnement. Les nœuds de convergence sont traités selon l'état du maillon aval.
POST
/api/reconstruction/audit-score
Score d'auditabilité de la reconstruction.
POST
/api/reconstruction/session/save
Sauvegarde une session de reconstruction dans
workflows.db.
POST
/api/reconstruction/session/{session_id}/rename
Renomme une session et met à jour
updated_at.
GET
/api/reconstruction/sessions
Sessions sauvegardées, triées par date décroissante.
Params : element, limit.
GET
/api/reconstruction/session/{session_id}
Recharge une session complète : entrée, résultat, audit.
DELETE
/api/reconstruction/session/{session_id}
Supprime une session. Idempotent, sans corbeille.
Rapports
GET
/api/reports/templates
Liste les templates de rapport.
POST
/api/reports/templates
Crée un template.
GET
/api/reports/templates/{template_id}
Récupère un template.
PUT
/api/reports/templates/{template_id}
Met à jour un template.
DELETE
/api/reports/templates/{template_id}
Supprime un template.
POST
/api/reports/generate
Génère un rapport PDF et le persiste. La liste
sample_ids est filtrée sur les échantillons visibles.
POST
/api/reports/preview
Génère un PDF d'aperçu, sans persistance.
GET
/api/reports/licence-status
État d'autorisation par tag de licence pour chaque bloc de rapport. Le frontend grise les blocs non autorisés.
GET
/api/reports/list
Liste les rapports générés.
Params : label_id, project.
GET
/api/reports/{report_id}
Métadonnées d'un rapport.
DELETE
/api/reports/{report_id}
Supprime un rapport et son fichier PDF.
GET
/api/reports/download/{report_id}
Sert le PDF généré en téléchargement direct.
POST
/api/reports/bulk-delete
Suppression groupée de rapports.
POST
/api/reports/export-zip
Crée et renvoie une archive ZIP des rapports sélectionnés.
GET
/api/reports/nexus-sessions
Sessions Nexus disponibles pour le formulaire de rapport.
GET
/api/reports/signature-reconstruction-sessions
Sessions de reconstruction de signature disponibles pour le formulaire de rapport.
GET
/api/reports/labels
Liste les étiquettes.
POST
/api/reports/labels
Crée une étiquette.
PATCH
/api/reports/labels/{label_id}
Met à jour une étiquette.
DELETE
/api/reports/labels/{label_id}
Supprime une étiquette.
POST
/api/reports/labels/assign
Assigne des étiquettes à des rapports.
POST
/api/reports/labels/unassign
Retire des étiquettes.
GET
/api/reports/branding
Branding configuré.
PUT
/api/reports/branding
Met à jour le branding : nom et chemin du logo. Licence Pro requise.
DELETE
/api/reports/branding
Supprime le branding personnalisé et rétablit l'identité IsoFind.
GET
/api/reports/custom-blocks
Liste les blocs personnalisés actifs.
GET
/api/reports/custom-blocks/{block_id}
Détail d'un bloc personnalisé.
POST
/api/reports/custom-blocks
Crée un bloc personnalisé.
PUT
/api/reports/custom-blocks/{block_id}
Met à jour un bloc personnalisé.
DELETE
/api/reports/custom-blocks/{block_id}
Supprime un bloc personnalisé.
GET
/api/reports/matrix-groups
Groupes de matrices comparables.
PUT
/api/reports/matrix-groups
Enregistre les groupes de matrices.
GET
/api/reports/matrix-groups/check
Vérifie la pertinence d'une comparaison entre deux matrices.
Params : matrix_a, matrix_b.
Format ISOF
POST
/api/isof/export-payload
Construit le document ISOF et le retourne en JSON brut, sans déclencher de téléchargement.
POST
/api/isof/export
Génère et renvoie un fichier
.isof. Seuls les échantillons visibles sont exportés.
POST
/api/isof/import
Importe méthodes, pipelines, rendements et assignations depuis un
.isof. Les échantillons du fichier sont traités en lecture seule : aucune insertion dans samples.
POST
/api/isof/verify
Vérifie la signature d'un fichier ISOF sans l'importer.
POST
/api/isof/sign
Signe un fichier
.isof au niveau 2 (ECDSA et PKI IsoFind).
Corps : multipart : file, lab_key_pem, lab_cert_pem, use_stored_cert, scope, signed_by.
POST
/api/isof/inspect-cert
Lit un certificat PEM ou DER et retourne ses attributs X.509, ainsi que sa position dans la chaîne PKI IsoFind.
GET
/api/isof/load-cert
Indique si un certificat laboratoire est mémorisé localement et retourne ses attributs. Retourne
found=false sans erreur si aucun certificat n'est stocké.
POST
/api/isof/store-cert
Chiffre et stocke localement la clé privée et le certificat laboratoire.
Si use_stored_key=true, la clé est lue depuis le magasin existant : cas du retour de CSR, où la clé a déjà été générée.
POST
/api/isof/generate-csr
Génère une paire ECDSA P-256 localement, construit un CSR signé, sauvegarde la clé privée dans le magasin chiffré Fernet, et retourne le CSR en PEM.
DELETE
/api/isof/store-cert
Supprime la clé, le certificat et la clé Fernet du magasin local.
Base communautaire
GET
/api/community/search
Recherche dans la base communautaire en ligne.
Params : query, location. Requiert un accès réseau, bloqué en mode air-gap.
POST
/api/community/contribute
Contribue un échantillon à la base communautaire. Disponible dès le plan Research.
GET
/api/community/stats
Statistiques de la base communautaire.
POST
/api/community/submit
Reçoit un ISOF signé, le contrôle, puis le place en file de modération.
GET
/api/community/imports
Liste les packs communautaires importés.
POST
/api/community/imports/{prov_id}/{action}
Archive, désarchive ou supprime un pack importé.
Chemin : action vaut archive, unarchive ou delete.
Archives
GET
/api/archives/samples
Liste paginée des échantillons archivés.
Params : page (défaut 1), page_size (défaut 50), search, element, classification, sector, project.
GET
/api/archives/samples/{sample_id}
Détails complets d'un échantillon archivé.
GET
/api/archives/filters
Valeurs uniques disponibles pour les filtres de la liste d'archives.
GET
/api/archives/stats
Statistiques des archives visibles.
GET
/api/archive/stats
Statistiques d'archives destinées au tableau de bord. Alias historique.
POST
/api/archives/restore/{sample_id}
Restaure un échantillon archivé dans la base active.
DELETE
/api/archives/delete/{sample_id}
Supprime définitivement un échantillon archivé.
GET
/api/archives/export
Exporte les archives visibles en CSV.
POST
/api/samples/{sample_id}/archive
Archive un échantillon.
POST
/api/projects/{project_name}/archive
Archive tous les échantillons d'un projet en une opération.
Projets
POST
/api/project/new
Crée un projet.
GET
/api/project/current
Retourne le projet actif.
PUT
/api/project/update
Met à jour le projet actif.
DELETE
/api/project/close
Ferme le projet actif.
GET
/api/project/list
Liste tous les projets du registre, triés par date de modification décroissante.
POST
/api/project/activate/{id_projet}
Bascule vers un projet du registre. Le projet est reconstruit depuis les métadonnées, sans exiger de fichier
.isf.
DELETE
/api/project/registry/{id_projet}
Supprime un projet du registre.
Params : supprimer_donnees (bool) : supprime également les échantillons associés. Irréversible.
GET
/api/project/samples
Identifiants et métadonnées légères des échantillons associés au projet actif.
POST
/api/project/samples/add
Associe manuellement des échantillons au projet par leurs identifiants.
POST
/api/project/samples/sync
Synchronise les échantillons du projet par correspondance de nom.
DELETE
/api/project/samples/{sample_id}
Retire un échantillon du projet, sans le supprimer de la base.
POST
/api/project/samples/clear
Réinitialise la liste des échantillons associés.
GET
/api/project/score
Score du projet actif.
Params : project_only (bool) : restreint le calcul aux échantillons associés au projet.
GET
/api/project/score/snapshot
Crée un instantané du score pour l'historique.
GET
/api/project/score/history
Historique des scores.
GET
/api/project/intention
Détecte l'objectif implicite du projet à partir de l'usage observé.
GET
/api/project/objectives
Objectifs disponibles avec leurs descriptions.
GET
/api/project/constraints
Contraintes disponibles.
POST
/api/project/export
Exporte le projet actif au format
.isf.
GET
/api/project/export/download/{filename}
Télécharge un fichier
.isf exporté.
POST
/api/project/import
Importe un projet depuis un fichier
.isf.
GET
/api/project/training-data/check
Détecte la présence de données d'entraînement dans la base. Réservé aux administrateurs.
DELETE
/api/project/training-data/purge
Supprime tous les échantillons et analyses portant le marqueur d'entraînement. Action destructive globale, réservée aux administrateurs.
Cartographie
GET
/api/tiles/{z}/{x}/{y}.png
Sert une tuile PNG depuis le MBTiles local. Schéma TMS :
y_tms = (2^z - 1) - y_xyz.
GET
/api/tiles/metadata
Métadonnées du MBTiles actif. Permet au frontend d'ajuster dynamiquement le
maxZoom Leaflet au pack installé.
GET
/api/map/samples-extended
Données géochimiques, moléculaires et physico-chimiques de tous les échantillons géoréférencés. Sans pagination : conçu pour un unique appel au chargement de la page cartographie.
GET
/api/map/section-data
Mesures avec profondeur, pour la coupe verticale.
Params : sample_ids (liste séparée par des virgules), mode (isotope, geochem, physico, molecule), element, ratio, parameter (défaut pH).
GET
/api/mapping/view/{sample_id}
Génère et affiche une carte interactive des correspondances.
GET
/api/mapping/export/{sample_id}
Exporte la carte des correspondances en HTML autonome.
Params : threshold, filename.
GET
/api/mapping/batch-export
Génère les cartes de plusieurs échantillons.
Workflows génériques
POST
/api/workflows/save
Sauvegarde un workflow générique.
GET
/api/workflows/list
Liste les workflows génériques.
Licence
GET
/api/licence/status
État de la licence courante. Une variante
/api/license/status existe pour les clients anglophones.
GET
/api/licence/features
Fonctionnalités autorisées par la licence.
GET
/api/licence/scopes
Périmètres d'usage autorisés.
GET
/api/licence/dev-mode/status
Indique si le mode développement est actif.
Pages de l'interface
GET
/
Tableau de bord.
GET
/echantillons
Gestion des échantillons.
GET
/analyse
Recherche de correspondances.
GET
/database
Gestion de la base de données.
GET
/standardization
Standardisation et normalisation.
GET
/visualisation
Cartographie et visualisation 2D.
GET
/visualisation_3d
Visualisation 3D et simulation.
GET
/tableur
Tableur intégré.
GET
/advanced
Fonctionnalités avancées.
GET
/advanced_analysis
Interface avancée d'analyse isotopique avec Fourier. Servie chiffrée en mémoire via
ProtectedTemplates.
GET
/algocalculs
Algorithmes et calculs.
GET
/correspondances_nexus
Correspondances Nexus.
GET
/process_library
Bibliothèque de processus.
GET
/process_database
Base de données de processus.
GET
/lab_data_advanced
Données de laboratoire avancées.
GET
/rapports
Module de rapports.
GET
/signature_reconstruction
Reconstruction de signature.
GET
/chain_map
Graphe de chaîne d'approvisionnement.
GET
/supplier_audit
Audit fournisseur.
GET
/prospection
Module Prospection Energy and Mining. Licence Pro requise.
GET
/prospection_site
Site de prospection.
GET
/forages
Gestion des forages.
GET
/credits-isof
Crédits et mentions ISOF.
GET
/login
Page de connexion.
GET
/lock
Page de session verrouillée, affichée après un verrouillage manuel.