API de provisionnement des utilisateurs
Créez et gérez les utilisateurs par programme via l'API REST Trousseau.
Vue d'ensemble
Les partenaires autorisés peuvent utiliser l'API de provisionnement Trousseau pour créer, mettre à jour et désactiver des utilisateurs. Les utilisateurs sont provisionnés dans un état "staged": ils définissent leur propre mot de passe à la première connexion.
L'API de provisionnement est disponible pour les partenaires qui en ont fait la demande lors de l'intégration. Contactez l'équipe KeySuite si vous avez besoin d'y accéder.
Authentification
Toutes les requêtes API nécessitent un token Bearer :
curl https://auth.trousseau.app/api/v3/core/users/ \
-H "Authorization: Bearer {your-api-token}" \
-H "Content-Type: application/json"Créer un utilisateur
POST https://auth.trousseau.app/api/v3/core/users/
{
"username": "jean.dupont@hotel.com",
"email": "jean.dupont@hotel.com",
"name": "Jean Dupont",
"is_active": true,
"groups": ["{your-group-uuid}"]
}Réponse
{
"pk": 42,
"username": "jean.dupont@hotel.com",
"email": "jean.dupont@hotel.com",
"name": "Jean Dupont",
"is_active": true,
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}L'utilisateur est créé sans mot de passe. Lors de sa première connexion, Trousseau l'invite automatiquement à en définir un.
Avec prénom et nom de famille
POST https://auth.trousseau.app/api/v3/core/users/
{
"username": "jean.dupont@hotel.com",
"email": "jean.dupont@hotel.com",
"name": "Jean Dupont",
"is_active": true,
"groups": ["{your-group-uuid}"],
"attributes": {
"first_name": "Jean",
"last_name": "Dupont"
}
}Lister les utilisateurs de votre groupe
Filtrez toujours par votre groupe pour ne récupérer que les utilisateurs que vous gérez :
GET https://auth.trousseau.app/api/v3/core/users/?groups={your-group-uuid}Réponse
{
"pagination": {
"count": 2,
"next": null,
"previous": null
},
"results": [
{
"pk": 42,
"username": "jean.dupont@hotel.com",
"email": "jean.dupont@hotel.com",
"name": "Jean Dupont",
"is_active": true,
"uuid": "a1b2c3d4-..."
},
{
"pk": 43,
"username": "marie.martin@hotel.com",
"email": "marie.martin@hotel.com",
"name": "Marie Martin",
"is_active": true,
"uuid": "b2c3d4e5-..."
}
]
}Rechercher un utilisateur par e-mail
GET https://auth.trousseau.app/api/v3/core/users/?email=jean.dupont@hotel.comMettre à jour un utilisateur
PATCH https://auth.trousseau.app/api/v3/core/users/{pk}/
{
"name": "Jean-Pierre Dupont",
"attributes": {
"first_name": "Jean-Pierre"
}
}Ne définissez jamais de mots de passe via l'API. Les mots de passe doivent toujours être choisis par l'utilisateur via les flux sécurisés de Trousseau. Cela garantit un hachage correct, la vérification des fuites et l'application des politiques de sécurité.
Désactiver un utilisateur
La désactivation empêche l'utilisateur de se connecter mais préserve ses données :
PATCH https://auth.trousseau.app/api/v3/core/users/{pk}/
{
"is_active": false
}Pour réactiver :
PATCH https://auth.trousseau.app/api/v3/core/users/{pk}/
{
"is_active": true
}Gestion des groupes
Ajouter un utilisateur à votre groupe
POST https://auth.trousseau.app/api/v3/core/groups/{your-group-pk}/add_user/
{
"pk": 42
}Retirer un utilisateur de votre groupe
POST https://auth.trousseau.app/api/v3/core/groups/{your-group-pk}/remove_user/
{
"pk": 42
}Cycle de vie d'un utilisateur
Création via API
Inexistant ──────────────────────> Staged (sans mot de passe)
│
│ Première connexion
│ (l'utilisateur crée son mot de passe)
▼
Actif
│
┌────────┼────────┐
│ │
▼ ▼
Désactivé Actif (usage normal)
(is_active: (connexion, SSO, etc.)
false)Limites de débit
L'API applique une limitation de débit pour protéger le service. Limites en vigueur :
| Périmètre | Limite |
|---|---|
| Par token | 100 requêtes / minute |
| Création d'utilisateurs | 50 utilisateurs / minute |
Si vous atteignez la limite, l'API retourne HTTP 429 avec un en-tête Retry-After.
Gestion des erreurs
| Code HTTP | Signification |
|---|---|
200 | Succès |
201 | Créé |
400 | Requête invalide (consultez le corps de la réponse pour les erreurs par champ) |
401 | Token API invalide ou expiré |
403 | Permission refusée |
404 | Utilisateur ou groupe introuvable |
429 | Limite de débit atteinte |