Version : 1.0.0
Base URL : http://localhost:8000/api/v1
Format : JSON (REST)
Authentification : JWT Bearer Token
- Authentification
- Utilisateurs
- Datasets
- Pipelines
- Analyse & Visualisation
- Modèles ML
- Recommandations
- Expériences
- Prédictions
- Rapports
- Activités
- Logs Système
Inscription d'un nouvel utilisateur.
Body :
{
"email": "user@example.com",
"password": "SecurePass123!",
"full_name": "John Doe"
}Response : 201 Created
{
"id": "uuid",
"email": "user@example.com",
"is_active": true
}Connexion (form-data).
Body : username=user@example.com&password=SecurePass123!
Response : 200 OK
{
"access_token": "eyJ...",
"token_type": "bearer"
}Rafraîchir le token JWT.
Déconnexion.
Profil de l'utilisateur connecté.
Auth : Required
Mettre à jour son profil.
Auth : Required
Configurer la clé API Groq.
Body :
{
"groq_api_key": "gsk_..."
}Changer le mot de passe.
Body :
{
"current_password": "old",
"new_password": "NewSecure456!",
"confirm_password": "NewSecure456!"
}Lister tous les utilisateurs.
Uploader un fichier CSV.
Content-Type : multipart/form-data
Param : file (CSV uniquement)
Response : 201 Created
{
"id": "uuid",
"filename": "data.csv",
"file_path": "uploads/uuid.csv",
"file_size": 12345,
"columns": [{"name": "age", "type": "int64"}, {"name": "salary", "type": "float64"}],
"row_count": 1000,
"created_at": "2026-07-21T00:00:00Z"
}Lister les datasets de l'utilisateur.
Auth : Required
Response : List[DatasetRead]
Détails d'un dataset (inclut colonnes, types).
Auth : Required (propriétaire)
Supprimer un dataset et son fichier physique.
Auth : Required (propriétaire)
Cascade : Pipelines → Experiments
Response : 204 No Content
Créer un pipeline de preprocessing.
Body :
{
"dataset_id": "uuid",
"name": "Mon Pipeline",
"description": "Nettoyage + normalisation",
"steps": [
{"operation": "drop", "params": {"columns": ["id"]}},
{"operation": "fill_missing", "params": {"strategy": "mean"}},
{"operation": "scale", "params": {"method": "standard"}}
]
}Response : 201 Created
Prévisualiser un pipeline sur 10 lignes.
Body :
{
"dataset_id": "uuid",
"steps": [{"operation": "drop", "params": {"columns": ["id"]}}]
}Response :
{
"preview": [{"age": 25, "salary": 50000}, ...],
"columns": ["age", "salary"],
"column_types": {"age": "num", "salary": "num"}
}Lister les pipelines. Filtrage optionnel par dataset_id.
Auth : Required
Détails d'un pipeline.
Mettre à jour un pipeline (nom, description, steps).
Supprimer un pipeline.
Response : 204 No Content
Tous les endpoints retournent des images PNG (image/png).
Histogramme / distribution d'une colonne.
Heatmap de corrélation (toutes les colonnes numériques).
Nuage de points (scatter plot).
Graphique des valeurs manquantes.
Histogrammes multiples.
Boxplots pour détection d'outliers.
Distribution des variables catégorielles.
Projection PCA (réduction de dimensionnalité).
Projection t-SNE (max 1000 échantillons).
Diagramme circulaire pour colonne catégorielle.
Liste de tous les modèles ML disponibles par catégorie.
Response :
{
"classification": [
{"name": "random_forest_classifier", "display_name": "Random Forest", ...}
],
"regression": [...],
"clustering": [...]
}Modèles par catégorie (classification, regression, clustering).
Schéma des hyperparamètres d'un algorithme.
Response :
{
"algorithm": "random_forest_classifier",
"display_name": "Random Forest Classifier",
"hyperparameters": {
"n_estimators": {"type": "int", "default": 100, "min": 10, "max": 1000},
"max_depth": {"type": "int", "default": null, "min": 1, "max": 100}
}
}Métadonnées d'un algorithme.
Générer des recommandations d'algorithmes.
Body :
{
"dataset_id": "uuid",
"problem_type": "classification"
}Response :
{
"dataset_id": "uuid",
"recommendations": [
{
"algorithm": "random_forest_classifier",
"display_name": "Random Forest",
"score": 92.5,
"reasons": ["Handles mixed data types", "Robust to outliers"],
"warnings": ["May overfit on very small datasets"]
}
],
"problem_type": "classification",
"dataset_profile": {...}
}Recommandations détaillées avec analyse complète.
Soumettre un feedback sur une recommandation.
Body :
{
"rating": 4,
"was_used": true,
"actual_metrics": {"accuracy": 0.94},
"comment": "Bon choix pour ce dataset"
}Lancer un entraînement ML.
Body :
{
"name": "Classification RF",
"pipeline_id": "uuid",
"task_type": "classification",
"target_column": "target",
"algorithm": "random_forest_classifier",
"hyperparameters": {"n_estimators": 100, "max_depth": 10},
"splitting_config": {
"method": "random",
"test_size": 0.2,
"shuffle": true,
"stratify": true
}
}Response : 202 Accepted
{
"id": "uuid",
"status": "PENDING",
"message": "Training initiated"
}Lister toutes les expériences de l'utilisateur.
Statut et résultats d'une expérience.
Response (COMPLETED) :
{
"id": "uuid",
"name": "Classification RF",
"status": "COMPLETED",
"metrics": {
"accuracy": 0.945,
"precision": 0.94,
"recall": 0.93,
"f1_score": 0.935
},
"model_path": "models/uuid.joblib"
}Supprimer une expérience.
Response : 204 No Content
Télécharger le modèle entraîné (fichier .joblib).
Prédiction unitaire.
Body :
{
"features": {"age": 35, "salary": 75000, "department": "Engineering"}
}Response :
{
"prediction": "Yes",
"probabilities": [0.15, 0.85],
"experiment_id": "uuid",
"model_type": "classification"
}Prédiction par lot.
Body :
{
"samples": [
{"age": 35, "salary": 75000},
{"age": 42, "salary": 82000}
]
}Informations sur le modèle (métriques, configuration).
Vider le cache d'un modèle spécifique.
Vider tous les caches de modèles.
Générer un rapport PDF pour une expérience.
Body :
{
"experiment_id": "uuid",
"include_dataset_analysis": true,
"include_pipeline_details": true,
"include_visualizations": true
}Response :
{
"report_id": "uuid",
"file_path": "reports/experiment_report_uuid.pdf",
"file_size_bytes": 245678,
"generated_at": "2026-07-21T00:00:00Z",
"experiment_name": "Classification RF"
}Télécharger le rapport PDF.
Activités de l'utilisateur (avec filtres).
Query Parameters :
| Param | Type | Description |
|---|---|---|
user_id |
UUID | Filtrer par utilisateur (superuser) |
action_type |
string | create, update, delete, view, download, login, etc. |
resource_type |
string | dataset, pipeline, experiment, report, etc. |
start_date |
datetime | Date de début |
end_date |
datetime | Date de fin |
limit |
int | Nombre résultats (1-1000, défaut 100) |
offset |
int | Pagination (défaut 0) |
Statistiques d'activité agrégées.
Activités récentes (10 dernières).
Logs système (superuser uniquement).
Query Parameters :
| Param | Type | Description |
|---|---|---|
skip |
int | Offset (défaut 0) |
limit |
int | Nombre résultats (défaut 50) |
level |
string | INFO, WARNING, ERROR |
| Code | Signification |
|---|---|
200 |
Succès |
201 |
Créé |
202 |
Accepté (traitement asynchrone) |
204 |
Succès sans contenu (delete) |
400 |
Requête invalide |
401 |
Non authentifié |
403 |
Accès refusé (pas propriétaire) |
404 |
Ressource non trouvée |
422 |
Erreur de validation Pydantic |
500 |
Erreur serveur interne |
Toutes les routes protégées nécessitent le header :
Authorization: Bearer <access_token>