API Import et Export Utilisateurs
L’API Import et Export te permet d’importer des utilisateurs en masse depuis des fichiers CSV ou JSON, et d’exporter les données utilisateurs pour la migration, la sauvegarde ou l’intégration avec des systèmes externes. Les deux opérations sont traitées de manière asynchrone via des jobs qui peuvent être surveillés jusqu’à leur complétion.
Tous les endpoints requièrent l’en-tête x-tenant et un token Bearer valide.
Importer des Utilisateurs
Charger un Fichier d’Importation
/api/users/importRequires: manage:usersDémarre un job d’importation asynchrone en chargeant un fichier CSV ou JSON. Retourne immédiatement avec un ID de job que tu peux utiliser pour surveiller la progression et les erreurs.
Corps de la requête (multipart/form-data)
| Champ | Type | Description |
|---|---|---|
file | File | Le fichier CSV ou JSON à importer. Taille maximale : 10 Mo. |
Réponse de succès
{
"ok": true,
"data": {
"id": "import_abc123",
"status": "PENDING",
"totalRows": 250,
"processedRows": 0,
"successCount": 0,
"errorCount": 0,
"errors": [],
"createdAt": "2025-02-18T10:00:00Z"
}
}Lister les Jobs d’Importation
/api/users/importRequires: manage:usersRetourne la liste paginée de tous les jobs d’importation pour ce tenant, du plus récent au plus ancien.
Paramètres de requête
| Paramètre | Type | Description |
|---|---|---|
page | integer | Numéro de page (défaut : 1) |
limit | integer | Éléments par page (défaut : 20, max : 100) |
Récupérer le Détail du Job
/api/users/import/[id]Requires: manage:usersRetourne le détail complet d’un job d’importation, y compris les erreurs par ligne pour les lignes qui ont échoué.
Réponse de succès
{
"ok": true,
"data": {
"id": "import_abc123",
"status": "PARTIAL",
"totalRows": 250,
"processedRows": 250,
"successCount": 247,
"errorCount": 3,
"errors": [
{ "row": 14, "email": "bad-email", "error": "Invalid email format" },
{ "row": 87, "email": "[email protected]", "error": "Email already exists in this tenant" },
{ "row": 203, "email": "[email protected]", "error": "Role 'superadmin' does not exist" }
],
"createdAt": "2025-02-18T10:00:00Z",
"completedAt": "2025-02-18T10:02:15Z"
}
}Progression des États
| État | Description |
|---|---|
PENDING | Fichier chargé, traitement en attente |
PROCESSING | Lignes en cours de traitement |
COMPLETED | Toutes les lignes traitées avec succès |
PARTIAL | Toutes les lignes traitées, certaines avec des erreurs |
FAILED | Échec total du job (ex. fichier invalide ou erreur système) |
Formats des Fichiers d’Importation
Format CSV
email,firstName,lastName,roles,password
[email protected],Jane,Doe,editor,SecurePass123!
[email protected],Bob,Smith,"editor,viewer",AnotherPass456!
[email protected],Alice,Johnson,,- La première ligne doit être l’en-tête avec les noms de colonnes
- Plusieurs rôles doivent être entourés de guillemets :
"editor,viewer" - Un mot de passe vide génère un magic link ou force une réinitialisation au premier accès (approche recommandée)
Format JSON
[
{
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe",
"roles": ["editor"],
"password": "SecurePass123!"
},
{
"email": "[email protected]",
"firstName": "Bob",
"lastName": "Smith",
"roles": ["editor", "viewer"]
},
{
"email": "[email protected]"
}
]Référence des Champs
| Champ | Obligatoire | Description |
|---|---|---|
email | Oui | L’adresse email de l’utilisateur. Doit être unique dans le tenant. |
firstName | Non | Prénom de l’utilisateur |
lastName | Non | Nom de famille de l’utilisateur |
roles | Non | Rôle(s) à assigner. CSV : chaîne séparée par des virgules ; JSON : tableau de chaînes. Si omis, aucun rôle n’est assigné. |
password | Non | Mot de passe initial de l’utilisateur. Si omis, l’utilisateur devra définir un mot de passe via magic link ou réinitialisation. |
Il est recommandé de ne pas inclure de mots de passe dans les fichiers d’importation. Laisse le champ vide et Auris enverra automatiquement un lien de définition de mot de passe lors du premier accès.
Erreurs par Ligne
| Message d’erreur | Description |
|---|---|
Email is required | La colonne email est vide |
Invalid email format | L’adresse email n’est pas valide |
Email already exists in this tenant | Un utilisateur avec cet email existe déjà |
Role 'X' does not exist | Le rôle spécifié n’existe pas dans ce tenant |
Password does not meet minimum length requirement | Le mot de passe est trop court |
Password does not meet complexity requirements | Le mot de passe ne respecte pas les règles de complexité |
Exporter des Utilisateurs
Démarrer l’Export
/api/users/exportRequires: manage:usersDémarre un job d’export asynchrone. Retourne un ID de job que tu peux utiliser pour surveiller la progression et télécharger le fichier une fois prêt.
Corps de la requête
{
"format": "csv"
}| Champ | Obligatoire | Description |
|---|---|---|
format | Oui | Format du fichier d’export : csv ou json |
Réponse de succès
{
"ok": true,
"data": {
"id": "export_abc123",
"status": "PENDING",
"format": "csv",
"expiresAt": "2025-02-19T10:00:00Z",
"createdAt": "2025-02-18T10:00:00Z"
}
}Les fichiers d’export expirent après 24 heures (expiresAt). Télécharge le fichier avant l’expiration — tu devras lancer un nouveau job d’export après cette date.
Télécharger le Fichier d’Export
/api/users/export/[id]/downloadRequires: manage:usersTélécharge le fichier généré par un job d’export terminé. Retourne le contenu du fichier directement avec les en-têtes de téléchargement appropriés.
Réponse de succès
En-têtes de réponse :
Content-Type: text/csv
Content-Disposition: attachment; filename="users-export-2025-02-18.csv"Le corps de la réponse est le contenu brut du fichier CSV ou JSON.
Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
NOT_READY | 400 | Le job d’export n’est pas encore terminé |
EXPIRED | 410 | Le fichier d’export a expiré (après 24 heures) |
EXPORT_NOT_FOUND | 404 | L’ID du job d’export n’existe pas |
Champs Exportés
| Champ | Type | Description |
|---|---|---|
email | string | Adresse email de l’utilisateur |
firstName | string | Prénom |
lastName | string | Nom de famille |
roles | string / array | Rôles assignés. CSV : séparés par des virgules ; JSON : tableau |
emailVerified | boolean | Si l’email a été vérifié |
isEnabled | boolean | Si le compte est actif |
createdAt | string | Date de création du compte (ISO 8601) |
lastLoginAt | string | null | Dernière connexion (ISO 8601), null si jamais connecté |
Les mots de passe ne sont jamais inclus dans les exports, quelle que soit la configuration.
Flux de Migration
Pour migrer des utilisateurs d’un tenant Auris vers un autre, suis ces étapes :
- Exporter depuis le tenant source au format
json - Télécharger le fichier d’export
- Modifier optionnellement le fichier (ajuster les rôles, retirer certains utilisateurs)
- Importer dans le tenant de destination
- Surveiller le job d’importation jusqu’à l’état
COMPLETEDouPARTIAL - Examiner les erreurs dans
errors[]et les traiter manuellement si nécessaire - Notifier les utilisateurs de définir leur mot de passe via magic link ou réinitialisation
Puisque les mots de passe ne sont jamais exportés, les utilisateurs migrés devront définir un nouveau mot de passe. Il est recommandé d’importer sans mot de passe et de laisser Auris envoyer automatiquement les liens de définition de mot de passe.
Corrélés
- Guide Import/Export Utilisateurs — Procédure pas à pas pour l’import et l’export
- Console Import/Export — Gère les imports et exports depuis la Console
- API Utilisateurs — Endpoints de gestion individuelle des utilisateurs
- API SCIM — Provisionnement automatisé des utilisateurs via SCIM 2.0