Referencia de la API SCIM
Referencia de la API SCIM
Esta página documenta los endpoints de SCIM 2.0 que axe Account expone para la provisión de usuarios y grupos. En la mayoría de los casos, el conector SCIM de su proveedor de identidad llama a estos endpoints por usted; esta referencia es para equipos que construyen una integración personalizada o validan el comportamiento directamente.
axe implementa el estándar SCIM 2.0 (RFC 7643 / RFC 7644). Esta página se centra en el comportamiento específico de axe. Para el protocolo genérico, consulte las especificaciones de SCIM.
URL base y autenticación
Todos los endpoints se sirven bajo /api/scim/v2 en su URL base regional o privada:
https://axe.deque.com/api/scim/v2Autentique cada solicitud con su clave de API SCIM:
-H "X-API-Key: <API_KEY>"
# or
-H "Authorization: <API_KEY>"Consulte Requisitos previos y configuración para obtener una clave y URL base.
Convenciones
- Tipo de contenido:
application/json - Respuestas de errores usan el esquema de error SCIM:
{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"], "detail": "<message>", "status": <code> } - Paginación (Usuarios):
startIndex(basado en 1) ycount(1–100). - Filtrado (Usuarios, Grupos):
filterusando el operadoreq, por ejemplo,userName eq "user@example.com".
Usuarios
Listar usuarios
GET /api/scim/v2/UsersDevuelve miembros de su empresa. Soporta paginación y filtrado.
Cuando se proporciona un filter, la búsqueda no se limita a su empresa: se devuelve un usuario coincidente que no es miembro con active: false. Verifique active en lugar de tratar cualquier resultado como miembro. Las solicitudes filtradas siempre devuelven como máximo un recurso e ignoran count y startIndex.
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
filter |
cadena | Opcional. por ejemplo, userName eq "user@example.com" o externalId eq "<id>". |
startIndex |
entero | Opcional. Índice basado en 1 del primer resultado. Predeterminado 1. |
count |
entero | Opcional. Resultados por página, 1–100. |
Ejemplo
curl -H "X-API-Key: $KEY" \
"https://axe.deque.com/api/scim/v2/Users?count=10&startIndex=1"Respuesta 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" }
}
]
}Errores
| Estado | detail |
|---|---|
| 400 | Count must be between 1-100 |
Obtener un usuario
GET /api/scim/v2/Users/{id}Devuelve un único usuario por su ID de usuario de axe. active refleja la membresía empresarial.
Respuesta 200 OK — un recurso de Usuario (ver arriba).
Errores
| Estado | detail |
|---|---|
| 404 | User not found |
Crear un usuario
POST /api/scim/v2/UsersProvisiones de un usuario: crea la cuenta de axe, lo agrega a su empresa y envía un correo de invitación. Un valor groups en el cuerpo se ignora — asigne el acceso al producto por separado a través de PATCH /Groups.
Cuerpo de la solicitud
| Campo | Requerido | Descripción |
|---|---|---|
schemas |
✅ | Debe incluir urn:ietf:params:scim:schemas:core:2.0:User. |
userName |
✅ | El correo electrónico del usuario. |
name.givenName |
✅ | Nombre. |
name.familyName |
✅ | Apellido. |
emails |
✅ | Arreglo con exactamente una entrada primary: true. |
active |
✅ | true añade al usuario a la empresa. |
externalId |
— | El identificador único de su directorio (recomendado). |
Ejemplo
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"Respuesta 201 Created — el recurso de Usuario creado.
Errores
| Estado | detail |
|---|---|
| 400 | Validation errors: Exactly one primary e-mail is required at 'emails'. (sobre de error genérico, no el esquema de error 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 |
Reemplazar un usuario
PUT /api/scim/v2/Users/{id}Actualiza el nombre y correo electrónico de un usuario.
Cuerpo de la solicitud
| Campo | Requerido | Descripción |
|---|---|---|
schemas |
✅ | Debe incluir urn:ietf:params:scim:schemas:core:2.0:User. |
id |
✅ | El identificador de usuario de axe del usuario (UUID). Debe coincidir con {id} en la ruta. |
name.givenName |
✅ | Nombre. |
name.familyName |
✅ | Apellido. |
emails |
✅ | Arreglo que contiene los correos electrónicos del usuario. Exactamente una entrada debe tener primary: true. |
name.middleName |
— | Segundo nombre. |
meta |
— | Aceptado e ignorado; el servidor asigna meta. |
Respuesta 200 OK — el recurso de Usuario actualizado.
Errores
| Estado | 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 |
Activar o desactivar un usuario
PATCH /api/scim/v2/Users/{id}Establece la membresía empresarial. active: true agrega al usuario a la empresa; active: false lo desprovisiona (remueve la membresía; se conserva la cuenta).
Cuerpo de la solicitud
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{ "op": "replace", "value": { "active": false } }
]
}Respuesta 204 No Content
Errores
| Estado | detail |
|---|---|
| 404 | User not found |
| 400 | Cannot remove the last admin from the enterprise |
Desprovisionar un usuario
DELETE /api/scim/v2/Users/{id}Remueve al usuario de tu empresa (remoción suave — se conserva la cuenta).
Respuesta 204 No Content
Errores
| Estado | detail |
|---|---|
| 404 | User not found |
| 400 | Cannot remove the last admin from the enterprise |
Grupos
Los grupos son suscripciones de productos (otorgar un asiento de producto) o equipos (organizar usuarios). Ver Cómo SCIM funciona con la cuenta de axe.
Listar grupos
GET /api/scim/v2/GroupsDevuelve todas las suscripciones de productos y equipos para tu empresa. Este endpoint no se pagina.
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
filter |
cadena | Opcional. displayName eq "<name>". Coincide exactamente y Distingue mayúsculas y minúsculas con nombres de equipos y nombres de productos — a diferencia del filtro userName en /Users, que no distingue mayúsculas. |
Respuesta 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" }
]
}
]
}Obtener un grupo
GET /api/scim/v2/Groups/{id}Respuesta 200 OK — un recurso de grupo.
Errores
| Estado | detail |
|---|---|
| 404 | Group not found |
Crear un grupo
POST /api/scim/v2/GroupsCrea un equipo. Si displayName coincide exactamente con el nombre de un producto para el que tu empresa tiene una suscripción activa, no se crea un equipo — en su lugar, se devuelve el grupo existente de suscripción al producto (201, con su id y Location), y cualquier members en el cuerpo de la solicitud son ignorados. Administra la membresía de ese grupo a través de PATCH /Groups/{id}.
La coincidencia distingue mayúsculas y minúsculas y es exacta. Si el nombre coincide con un producto cuya suscripción está no activa, se crea un equipo regular con ese nombre — no otorgará asientos de producto.
Cuerpo de la solicitud
| Campo | Requerido | Descripción |
|---|---|---|
schemas |
✅ | Debe incluir urn:ietf:params:scim:schemas:core:2.0:Group. |
displayName |
✅ | Nombre del equipo (no en blanco, ≤128 caracteres). |
members |
— | Array opcional (≤1000). |
Respuesta 201 Created — el recurso de Grupo creado, con un encabezado Location.
Errores
| Estado | 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 |
Actualizar membresía del grupo
PATCH /api/scim/v2/Groups/{id}Agrega o elimina miembros. Para un grupo de suscripción, esto concede o revoca un asiento de producto. Para un grupo del equipo, esto cambia la membresía del equipo.
Cuerpo de la solicitud
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{ "op": "add", "path": "members", "value": [ { "value": "5f3e...c2" } ] }
]
}Usa op: "remove" con un path para eliminar miembros. Un replace con un array vacío elimina a todos los miembros.
Respuesta 204 No Content
Errores
| Estado | 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 |
Eliminar un grupo
DELETE /api/scim/v2/Groups/{id}Elimina un equipo. Las solicitudes de eliminación contra un grupo de suscripción de productos son ignoradas (devuelve 204).
Respuesta 204 No Content
Errores
| Estado | detail |
|---|---|
| 404 | Group not found |
Actualizar un grupo (no soportado)
PUT /api/scim/v2/Groups/{id}No soportado. Devuelve 405 Method not allowed. Usa PATCH para modificar la membresía.
Puntos de descubrimiento
Estos apoyan la configuración automática del conector. Todos devuelven 200 OK.
| Punto de acceso | Devuelve |
|---|---|
GET /api/scim/v2/ServiceProviderConfig |
Capacidades soportadas (patch, filtrado con un máximo de 100 resultados; no soporta operaciones masivas ni ordenación). |
GET /api/scim/v2/Schemas |
Definiciones de esquema de Usuario y Grupo. |
GET /api/scim/v2/Schemas/{id} |
Un solo esquema por URN. 404 "Schema not found" si se desconoce. |
GET /api/scim/v2/ResourceTypes |
Tipos de recursos de Usuario y Grupo. |
GET /api/scim/v2/ResourceTypes/{id} |
Un solo tipo de recurso. 404 "Resource type not found" si se desconoce. |
