KeySuiteTrousseau
Référence

Référence de l'API Utilisateurs

Référence de l'API REST pour le provisionnement des utilisateurs via Trousseau.

URL de base

https://auth.trousseau.app/api/v3/core

Authentification

Toutes les requêtes nécessitent un token Bearer :

Authorization: Bearer {your-api-token}

Utilisateurs

Lister les utilisateurs

GET /users/?groups={group-uuid}
ParamètreTypeDescription
groupsUUIDFiltrer par appartenance au groupe (recommandé)
emailstringFiltrer par e-mail exact
searchstringRechercher par nom ou e-mail
is_activebooleanFiltrer par statut actif
pageintegerNuméro de page (défaut : 1)
page_sizeintegerRésultats par page (défaut : 20, max : 100)

Réponse : 200 OK

{
  "pagination": {
    "count": 42,
    "next": "https://auth.trousseau.app/api/v3/core/users/?page=2",
    "previous": null
  },
  "results": [
    {
      "pk": 42,
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "username": "jean.dupont@hotel.com",
      "email": "jean.dupont@hotel.com",
      "name": "Jean Dupont",
      "is_active": true,
      "last_login": "2026-04-05T14:30:00Z",
      "attributes": {
        "first_name": "Jean",
        "last_name": "Dupont"
      }
    }
  ]
}

Créer un utilisateur

POST /users/
Content-Type: application/json
{
  "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"
  }
}
ChampObligatoireTypeDescription
usernameOuistringNom d'utilisateur unique (utiliser l'e-mail)
emailOuistringAdresse e-mail de l'utilisateur
nameOuistringNom d'affichage complet
is_activeNonbooleanDéfaut : true
groupsNonUUID[]UUIDs des groupes auxquels ajouter l'utilisateur
attributesNonobjectAttributs personnalisés

Réponse : 201 Created

{
  "pk": 42,
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "username": "jean.dupont@hotel.com",
  "email": "jean.dupont@hotel.com",
  "name": "Jean Dupont",
  "is_active": true
}

Erreurs :

CodeRaison
400Erreur de validation (e-mail dupliqué, champ manquant)
401Token API invalide
403Permissions insuffisantes

Obtenir un utilisateur

GET /users/{pk}/

Réponse : 200 OK: Même format que les résultats de liste.

Mettre à jour un utilisateur

PATCH /users/{pk}/
Content-Type: application/json
{
  "name": "Jean-Pierre Dupont",
  "attributes": {
    "first_name": "Jean-Pierre"
  }
}

N'incluez que les champs que vous souhaitez mettre à jour. Tous les champs sont optionnels.

Réponse : 200 OK: Objet utilisateur mis à jour.

Désactiver un utilisateur

PATCH /users/{pk}/
Content-Type: application/json

{ "is_active": false }

Groupes

Ajouter un utilisateur à un groupe

POST /groups/{group-pk}/add_user/
Content-Type: application/json

{ "pk": 42 }

Réponse : 204 No Content

Retirer un utilisateur d'un groupe

POST /groups/{group-pk}/remove_user/
Content-Type: application/json

{ "pk": 42 }

Réponse : 204 No Content

Obtenir les détails d'un groupe

GET /groups/{group-pk}/

Réponse : 200 OK

{
  "pk": "group-uuid",
  "name": "Your App Users",
  "users": [42, 43, 44],
  "users_count": 3
}

Format des erreurs

Toutes les réponses d'erreur suivent ce format :

{
  "detail": "Not found."
}

Ou pour les erreurs de validation :

{
  "email": ["This field must be unique."],
  "username": ["This field is required."]
}