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.
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
ready=false.
single_user ou multi_user).
standard ou airgap. Le frontend s'en sert pour désactiver les fonctionnalités qui dépendent du réseau.
config.json.
Corps : {"language": "fr"|"en"}
Jeton local et accès API tiers
api_access configuré (ouvert, confirmation manuelle, refus).
api_access. Appelé depuis les préférences IsoFind.
isofind_token, miroir du jeton de sécurité. Nécessaire aux navigations déclenchées par une balise <a href>.
Authentification et sessions
Corps : {"username": str, "password": str}
Retour : {"success": bool, "user": {...}} et cookie de session. En mode mono-utilisateur, toujours accepté.
Corps : {"old_password": str, "new_password": str, "confirm_password": str}
Corps : {"recovery_code": str, "new_password": str}. Usage unique.
Gestion des utilisateurs
Corps : username, email, password, role (user, analyst, manager, admin), display_name.
failed_attempts et locked_until.
Protection et chiffrement de la base
encrypted : création du keystore avec MEK aléatoire et génération d'une clé de récupération BIP39.
/api/auth/change-password, qui concerne le mot de passe utilisateur.
fractionation_database, isotopes_reference, molecules_reference.
.db de référence, vérifie sa signature ECDSA de l'autorité intermédiaire IsoFind puis l'installe.
Sauvegarde et restauration
backups/.
Corps : {"password": "mot_de_passe_maitre"}
.protected.bak. Le déchiffrement a lieu en mémoire côté serveur : le clair ne transite jamais.
Échantillons
Params : limit (int), sort (asc ou desc, tri par date de création). Par défaut, tri par identifiant décroissant.
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.
isotope_data avec le détail ratio_value face à normalized_value. Usage diagnostic.
Params : limit (int).
sample_id, fusionnables côté client.
collection_date, sample_type et standard_used.
Rendements de purification
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).
protocol_json des méthodes de type purification ou séparation.
Params : element (str).
Import et export d'échantillons
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).
Corps : [sample_id, ...]
Recherche de correspondances
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. |
Corps : sample_name, material_type, isotope_data (requis), threshold (défaut 0.75), algorithm.
/analyze qui ne cherche que dans les archives. Mêmes paramètres.
/analyze/manual restreinte aux archives visibles.
Params : threshold (float).
sample_id vers résultat, les erreurs étant isolées par échantillon.
Params : algorithm, threshold, sigma_multiplier.
Méthodes, pipelines et publications (v2)
Params : type, element.
Corps : {"sample_ids": [...]}
Corps : sample_ids, method_id, method_type, method_name, element, parameters_json.
Params : year, category.
Params : element.
Params : current_stage, status.
Standards et normalisation isotopique
Params : element.
Éléments
CRM certifiés
Params : strategy : stratégie de fusion en cas de doublon.
CRM analysés et shifts inter-standards
Format : crm_id, crm_name, session_name, analysis_date, instrument, standard_used, element, isotope_ratio, measured_value, uncertainty
Params : element (requis), isotope_ratio (requis).
Params : element, isotope_ratio, standard_from, standard_to.
Params : value, element, isotope_ratio, standard_from, standard_to.
Params : limit (int).
Intégration GeoReM
Params : q : nom du matériau.
Params : user_notes.
Params : material_name.
Exemple : /api/georem/search-isotopes?material_name=GXR-4
Géochimie inorganique
remplacer=true supprime d'abord les éléments concernés, ce qui permet de rejouer proprement un import CSV.
Physico-chimie
GeochemicalConditions).
UNIQUE(sample_id, parameter) garantit une valeur unique par paramètre.
Molécules : catalogue utilisateur
Params : famille (filtre exact, par exemple PFAS), actif, page, page_size, include_geochemical, q (recherche libre).
Params : archiver (bool) : archive au lieu de supprimer.
Molécules : mesures et conformité
Params : page, page_size, include_geochemical, famille, sample_ids.
conforme, seuil_ref et seuil_ref_unit pour toutes les mesures dont la molécule cataloguée a vu son seuil modifié.
Molécules : base de référence
Params : famille (PFAS, Pesticides, HAP...), niveau_acces (gratuit, pro, defense), q, limit.
Liens isotopie et polluants
isotope_data.
Params : famille, element.
Params : famille, element, faisabilite, min_discrimination. Repli sur les données statiques si la table est vide.
ref_molecules_isotopes_v2.
CSIA : isotopie spécifique aux composés
Fractionnements isotopiques
Params : page, per_page, element, process_type, material, search, sort_by, sort_order.
Params : element, process_type.
Fractionnement cinétique
equilibrium_reached = 0) sont recherchées en priorité, avec repli sur les données non spécifiées.
Params : element, process_type, mineral.
Nexus : santé, sessions et workflows
__autosave__.
Nexus : calcul isotopique et pipeline hybride
forward et inverse.
/api/nexus/predict_speciation.
delta_source pour l'estimation de la fraction résiduelle.
Nexus : spéciation et apprentissage
Params : file, element.
Nexus : détection rapide et provenance
Params : q, element, material_type, limit.
Params : element.
archive_samples et archive_isotope_data.
Params : sample_id, element, isotope_ratio.
Nexus moléculaire
delta_0 = delta_residu - epsilon * ln(f). L'incertitude est propagée à chaque remontée.
f = exp((delta_ech - delta_source) / epsilon), la dégradation valant (1 - f) * 100.
Params : process_type.
sample_geochem pour un échantillon.
Prédiction et simulation
résidu = observé - prior) pour un élément.
Params : element.
Params : molecule.
Params : molecule, pathway, primary, secondary.
Reconstruction de signature (IsoSupply)
Params : method : analytical (défaut, instantané et défendable scientifiquement) ou méthodes stochastiques.
Params : element (requis), q (fragment de nom, insensible à la casse).
isofind.db disposant de mesures pour l'élément demandé.
Params : element, limit.
Params : element, limit.
process_id du catalogue.
workflows.db.
updated_at.
Params : element, limit.
Rapports
sample_ids est filtrée sur les échantillons visibles.
Params : label_id, project.
Params : matrix_a, matrix_b.
Format ISOF
.isof. Seuls les échantillons visibles sont exportés.
.isof. Les échantillons du fichier sont traités en lecture seule : aucune insertion dans samples.
.isof au niveau 2 (ECDSA et PKI IsoFind).
Corps : multipart : file, lab_key_pem, lab_cert_pem, use_stored_cert, scope, signed_by.
found=false sans erreur si aucun certificat n'est stocké.
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.
Base communautaire
Params : query, location. Requiert un accès réseau, bloqué en mode air-gap.
Chemin : action vaut archive, unarchive ou delete.
Archives
Params : page (défaut 1), page_size (défaut 50), search, element, classification, sector, project.
Projets
.isf.
Params : supprimer_donnees (bool) : supprime également les échantillons associés. Irréversible.
Params : project_only (bool) : restreint le calcul aux échantillons associés au projet.
.isf.
.isf exporté.
.isf.
Cartographie
y_tms = (2^z - 1) - y_xyz.
maxZoom Leaflet au pack installé.
Params : sample_ids (liste séparée par des virgules), mode (isotope, geochem, physico, molecule), element, ratio, parameter (défaut pH).
Params : threshold, filename.
Workflows génériques
Licence
/api/license/status existe pour les clients anglophones.
Pages de l'interface
ProtectedTemplates.