Référence API SCIM

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Référence API SCIM

Cette page documente les points de terminaison SCIM 2.0 qu'axe Account expose pour le provisioning des utilisateurs et des groupes. Dans la plupart des cas, le connecteur SCIM de votre fournisseur d'identité appelle ces points de terminaison pour vous ; cette référence est destinée aux équipes qui développent une intégration personnalisée ou qui valident le comportement directement.

axe implémente la norme SCIM 2.0 (RFC 7643 / RFC 7644). Cette page se concentre sur le comportement spécifique à axe. Pour le protocole générique, consultez les spécifications SCIM.

URL de base et authentification

Tous les points de terminaison sont servis sous /api/scim/v2 sur votre URL de base régionale ou privée :

https://axe.deque.com/api/scim/v2

Authentifiez chaque requête avec votre clé API SCIM :

-H "X-API-Key: <API_KEY>"
# or
-H "Authorization: <API_KEY>"

Voir Prérequis et configuration pour obtenir une clé et une URL de base.

Conventions

  • Type de contenu : application/json
  • Réponses d'erreur utilise le schéma d'erreur SCIM :
    {
      "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
      "detail": "<message>",
      "status": <code>
    }
  • Pagination (Utilisateurs) : startIndex (à partir de 1) et count (1–100).
  • Filtrage (Utilisateurs, Groupes) : filter en utilisant l'opérateur eq, par exemple userName eq "user@example.com".

Utilisateurs

Lister les utilisateurs

GET /api/scim/v2/Users

Retourne les membres de votre entreprise. Prend en charge la pagination et le filtrage.

note

Lorsqu'un filter est fourni, la recherche n'est pas limitée à votre entreprise : un utilisateur correspondant qui n'est pas membre est renvoyé avec active: false. Vérifiez active plutôt que de considérer tout résultat comme membre. Les requêtes filtrées renvoient toujours au maximum une ressource et ignorent count et startIndex.

Paramètres de requête

Paramètre Type Description
filter chaîne Optionnel. par exemple userName eq "user@example.com" ou externalId eq "<id>".
startIndex entier Optionnel. Index de départ basé sur 1. Valeur par défaut 1.
count entier Optionnel. Résultats par page, 1100.

Exemple

curl -H "X-API-Key: $KEY" \
  "https://axe.deque.com/api/scim/v2/Users?count=10&startIndex=1"

Réponse 200 OK

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 42,
  "itemsPerPage": 10,
  "startIndex": 1,
  "Resources": [
    {
      "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
      "id": "5f3e...c2",
      "userName": "user@example.com",
      "active": true,
      "name": { "givenName": "Alex", "familyName": "Doe" },
      "emails": [
        { "primary": true, "value": "user@example.com", "type": "work", "display": "user@example.com" }
      ],
      "groups": [
        { "value": "grp-1", "display": "Axe Monitor", "$ref": "/Groups/grp-1" }
      ],
      "meta": { "resourceType": "User", "location": "/Users/5f3e...c2" }
    }
  ]
}

Erreurs

Statut detail
400 Count must be between 1-100

Obtenir un utilisateur

GET /api/scim/v2/Users/{id}

Retourne un utilisateur unique par son ID utilisateur axe. active reflète l'appartenance à l'entreprise.

Réponse 200 OK — une ressource Utilisateur (voir ci-dessus).

Erreurs

Statut detail
404 User not found

Créer un utilisateur

POST /api/scim/v2/Users

Provisionne un utilisateur : crée le compte axe, l'ajoute à votre entreprise et envoie un email d'invitation. Une valeur groups dans le corps est ignorée — assignez l'accès aux produits séparément via PATCH /Groups.

Corps de la requête

Champ Requis Description
schemas Doit inclure urn:ietf:params:scim:schemas:core:2.0:User.
userName L'adresse e-mail de l'utilisateur.
name.givenName Prénom.
name.familyName Nom de famille.
emails Tableau avec exactement une entrée primary: true.
active true ajoute l'utilisateur à l'entreprise.
externalId L'identifiant unique de votre annuaire (recommandé).

Exemple

curl -X POST -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "userName": "user@example.com",
    "name": { "givenName": "Alex", "familyName": "Doe" },
    "emails": [{ "type": "work", "value": "user@example.com", "primary": true }],
    "active": true
  }' \
  "https://axe.deque.com/api/scim/v2/Users"

Réponse 201 Created — la ressource Utilisateur créée.

Erreurs

Statut detail
400 Validation errors: Exactly one primary e-mail is required at 'emails'. (enveloppe d'erreur générique, pas le schéma d'erreur SCIM)
400 A primary email is required but was not found in the emails array
400 User email domain does not match enterprise root group
400 Enterprise does not have an identity provider configured
409 User is already a member of an enterprise

Remplacer un utilisateur

PUT /api/scim/v2/Users/{id}

Met à jour le nom et l'adresse e-mail d'un utilisateur.

Corps de la requête

Champ Requis Description
schemas Doit inclure urn:ietf:params:scim:schemas:core:2.0:User.
id L'ID utilisateur axe de l'utilisateur (UUID). Doit correspondre à {id} dans le chemin.
name.givenName Prénom.
name.familyName Nom de famille.
emails Tableau contenant les e-mails de l'utilisateur. Une seule entrée doit avoir primary: true.
name.middleName Deuxième prénom.
meta Accepté et ignoré ; le serveur assigne meta.

Réponse 200 OK — la ressource Utilisateur mise à jour.

Erreurs

Statut detail
404 User not found
403 User is a member of multiple enterprises
403 User is not a member of this enterprise
400 No primary email found in the provided emails array
409 A user with this email already exists

Activer ou désactiver un utilisateur

PATCH /api/scim/v2/Users/{id}

Définit l'adhésion à l'entreprise. active: true ajoute l'utilisateur à l'entreprise ; active: false le déprovisionne (retire l'adhésion ; le compte est conservé).

Corps de la requête

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    { "op": "replace", "value": { "active": false } }
  ]
}

Réponse 204 No Content

Erreurs

Statut detail
404 User not found
400 Cannot remove the last admin from the enterprise

Déprovisionner un utilisateur

DELETE /api/scim/v2/Users/{id}

Supprime l'utilisateur de votre entreprise (suppression douce — le compte est conservé).

Réponse 204 No Content

Erreurs

Statut detail
404 User not found
400 Cannot remove the last admin from the enterprise

Groupes

Les groupes sont soit abonnements aux produits (octroi d'une licence de produit) soit équipes (organisation des utilisateurs). Voir Comment SCIM fonctionne avec axe Account.

Lister les groupes

GET /api/scim/v2/Groups

Renvoie tous les abonnements aux produits et équipes pour votre entreprise. Ce point de terminaison n'est pas paginé.

Paramètres de requête

Paramètre Type Description
filter chaîne Optionnel. displayName eq "<name>". Correspond exactement et sensibilité à la casse contre les noms d'équipes et de produits — contrairement au filtre userName sur /Users, qui est insensible à la casse.

Réponse 200 OK

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 5,
  "startIndex": 1,
  "itemsPerPage": 5,
  "Resources": [
    {
      "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
      "id": "grp-1",
      "displayName": "Axe Monitor",
      "members": [
        { "value": "5f3e...c2", "display": "user@example.com", "$ref": "/Users/5f3e...c2" }
      ]
    }
  ]
}

Obtenir un groupe

GET /api/scim/v2/Groups/{id}

Réponse 200 OK — une ressource de groupe.

Erreurs

Statut detail
404 Group not found

Créer un groupe

POST /api/scim/v2/Groups

Crée une équipe. Si displayName correspond exactement au nom d'un produit pour lequel votre entreprise détient un abonnement actif, aucune équipe n'est créée — le groupe d'abonnement au produit existant est retourné à la place (201, avec ses id et Location), et tout members dans le corps de la requête est ignoré. Gérez l'adhésion de ce groupe via PATCH /Groups/{id}.

La correspondance est sensible à la casse et exacte. Si le nom correspond à un produit dont l'abonnement est pas actif, une équipe régulière est créée avec ce nom à la place — elle n'octroiera pas de licences de produit.

Corps de la requête

Champ Requis Description
schemas Doit inclure urn:ietf:params:scim:schemas:core:2.0:Group.
displayName Nom de l'équipe (non vide, ≤128 caractères).
members Tableau facultatif (≤1000).

Réponse 201 Created — la ressource de Groupe créée, avec un en-tête Location.

Erreurs

Statut detail
400 The group was not created because some users are not members of the enterprise. User IDs: ...
409 A group with this displayName already exists

Mettre à jour l'appartenance à un groupe

PATCH /api/scim/v2/Groups/{id}

Ajoute ou supprime des membres. Pour un groupe d'abonnement, cela accorde ou révoque un siège de produit. Pour un groupe d'équipe, cela modifie l'appartenance à l'équipe.

Corps de la requête

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    { "op": "add", "path": "members", "value": [ { "value": "5f3e...c2" } ] }
  ]
}

Utilisez op: "remove" avec un path pour supprimer des membres. Un replace avec un tableau vide supprime tous les membres.

Réponse 204 No Content

Erreurs

Statut detail
404 Group not found
404 Product not found
402 Enterprise subscription out of seats
400 Some users were not added to the group because they are not members of the enterprise. User IDs: ...
400 Path is required for remove operations

Supprimer un groupe

DELETE /api/scim/v2/Groups/{id}

Supprime un équipe. Les requêtes de suppression concernant un groupe d'abonnement produit sont ignorées (retourne 204).

Réponse 204 No Content

Erreurs

Statut detail
404 Group not found

Mettre à jour un groupe (non pris en charge)

PUT /api/scim/v2/Groups/{id}

Non pris en charge. Retourne 405 Method not allowed. Utilisez PATCH pour modifier l'appartenance.


Points de terminaison de découverte

Ils prennent en charge la configuration automatique du connecteur. Tous retournent 200 OK.

Point de terminaison Retours
GET /api/scim/v2/ServiceProviderConfig Capacités prises en charge (patch, filtrage avec un maximum de 100 résultats ; vrac et tri non pris en charge).
GET /api/scim/v2/Schemas Définitions de schémas utilisateur et groupe.
GET /api/scim/v2/Schemas/{id} Un seul schéma par URN. 404 "Schema not found" si inconnu.
GET /api/scim/v2/ResourceTypes Types de ressources utilisateur et groupe.
GET /api/scim/v2/ResourceTypes/{id} Un seul type de ressource. 404 "Resource type not found" si inconnu.

Connexe