Referencia de API
La API de Auris es una API REST que proporciona acceso programático a toda la funcionalidad IAM: autenticación, gestión de usuarios, roles, permisos, organizaciones, autorización de grano fino y más. Todas las respuestas de la API usan JSON.
URL Base
https://api.altovar.net/apiReemplaza api.altovar.net con el dominio donde está desplegada tu instancia de Auris. Si estás usando el servicio cloud de Auris, tu dominio es el que se muestra en la Consola en Configuración → Dominios Personalizados.
Autenticación
Token Bearer
La mayoría de los endpoints requieren un token de acceso válido en la cabecera Authorization:
Authorization: Bearer <access_token>Los tokens de acceso son JWTs de corta duración (predeterminado 15 minutos) obtenidos a través de los endpoints de autenticación. Están firmados con RS256 (o HS256 según la configuración) y pueden verificarse localmente usando el endpoint JWKS.
Nivel de Acceso por Tipo de Endpoint
| Tipo de Endpoint | Autenticación Requerida | Notas |
|---|---|---|
| Endpoints de autenticación pública | No | /api/auth/login, /api/auth/signup, /api/auth/magic-link, /api/oauth/authorize |
| Usuario autenticado | Sí | Token de acceso de usuario estándar |
| Endpoints de administración | Sí | El token debe incluir el permiso requerido (por ejemplo, manage:users) |
| Endpoints M2M | Sí | Token client_credentials con ámbitos configurados |
Los endpoints de administración y gestión comprueban los permisos usando la cabecera x-tenant en combinación con el token Bearer. Los roles del token se resuelven y verifican contra el permiso requerido antes de procesar la solicitud.
Cabecera de Tenant
Auris es una plataforma multi-tenant. Las solicitudes a endpoints de administración deben incluir el identificador del tenant:
x-tenant: <tenant-id>El ID de tenant es el nombre del realm configurado en tu despliegue de Auris. Para la instalación predeterminada, es default. Para configuraciones de tenant personalizadas, es el nombre del realm que se muestra en la Consola en Configuración → General.
Si se omite la cabecera en endpoints que la requieren, la API devuelve 400 Bad Request con el código MISSING_TENANT.
Formato de Solicitud
Usa Content-Type: application/json para todas las solicitudes POST, PUT y PATCH con cuerpo de solicitud:
Content-Type: application/jsonEjemplo de solicitud:
curl -X POST https://api.altovar.net/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "secreto"}'Para cargas de archivos (importación de usuarios), usa multipart/form-data.
Formato de Respuesta
Todas las respuestas de la API siguen un formato de sobre consistente.
Respuesta Exitosa
{
"ok": true,
"data": { }
}El campo data contiene el resultado. Su forma varía según el endpoint y se documenta individualmente para cada uno.
Respuesta de Error
{
"ok": false,
"error": {
"code": "CÓDIGO_DE_ERROR",
"message": "Descripción legible de lo que salió mal."
}
}Códigos de Estado HTTP
| Código | Significado |
|---|---|
200 OK | La solicitud fue exitosa |
201 Created | Recurso creado correctamente |
400 Bad Request | Cuerpo de solicitud o parámetros no válidos |
401 Unauthorized | Token de acceso ausente o no válido |
403 Forbidden | El token es válido pero carece del permiso requerido |
404 Not Found | El recurso no existe |
409 Conflict | El recurso ya existe (por ejemplo, email duplicado) |
429 Too Many Requests | Límite de velocidad superado |
500 Internal Server Error | Error en el lado del servidor |
Códigos de Error Comunes
| Código | Descripción |
|---|---|
INVALID_CREDENTIALS | La combinación email/contraseña es incorrecta |
ACCOUNT_LOCKED | La cuenta está bloqueada por demasiados intentos fallidos |
TOKEN_EXPIRED | El token de acceso ha expirado |
TOKEN_INVALID | El token de acceso está mal formado o la firma es inválida |
PERMISSION_DENIED | El usuario carece del permiso requerido |
NOT_FOUND | El recurso solicitado no existe |
VALIDATION_ERROR | El cuerpo de la solicitud falló la validación de esquema |
RATE_LIMITED | Demasiadas solicitudes en una ventana corta |
MISSING_TENANT | Falta la cabecera x-tenant requerida |
TENANT_NOT_FOUND | El tenant especificado no existe |
Paginación
Los endpoints de lista devuelven resultados paginados usando números de página basados en cursor.
Forma de la Respuesta
{
"ok": true,
"data": {
"data": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 143,
"totalPages": 8
}
}
}Parámetros de Consulta
| Parámetro | Tipo | Predeterminado | Máximo | Descripción |
|---|---|---|---|---|
page | entero | 1 | — | Número de página (indexado desde 1) |
limit | entero | 20 | 100 | Elementos por página |
Ejemplo:
GET /api/users?page=2&limit=50Limitación de Velocidad
Cada respuesta incluye cabeceras de limitación de velocidad:
| Cabecera | Descripción |
|---|---|
X-RateLimit-Limit | Solicitudes máximas permitidas en la ventana actual |
X-RateLimit-Remaining | Solicitudes restantes en la ventana actual |
X-RateLimit-Reset | Marca de tiempo Unix de cuando se reinicia la ventana |
Cuando se supera un límite de velocidad, la API devuelve 429 Too Many Requests con una cabecera Retry-After que indica cuántos segundos esperar antes de reintentar.
Niveles de Limitación de Velocidad
| Nivel | Endpoints | Límite |
|---|---|---|
| Auth | Inicio de sesión, registro, olvidé contraseña | Estricto (previene fuerza bruta) |
| Sensible | 2FA, cambio de contraseña, magic link | Moderado |
| API | Todos los endpoints de administración/gestión | Estándar |
| Público | Descubrimiento OIDC, JWKS | Relajado |
Los endpoints de autenticación y sensibles tienen límites de velocidad adicionales por cuenta más allá de los límites basados en IP. Los fallos repetidos en el inicio de sesión activan un bloqueo progresivo.
CORS
El Intercambio de Recursos de Origen Cruzado (CORS) se aplica en todos los endpoints de la API. Los orígenes permitidos deben registrarse en la configuración de la Aplicación en la Consola de Auris en Aplicaciones → [App] → Orígenes Permitidos.
Las solicitudes de verificación previa OPTIONS se manejan automáticamente. Se permiten credenciales (cookies) cuando el origen de la solicitud está registrado.
Para registrar un origen:
- Ve a Consola → Aplicaciones
- Selecciona tu aplicación
- Añade el origen a Orígenes Permitidos (por ejemplo,
https://app.tudominio.com)
Descubrimiento OIDC
Auris expone un documento de Descubrimiento OpenID Connect estándar:
GET /.well-known/openid-configurationEsto devuelve un documento JSON que contiene todas las URLs de endpoint, tipos de concesión admitidos, ámbitos, algoritmos de firma y otros metadatos. Las bibliotecas OIDC estándar usan esto para auto-configurarse.
Campos de ejemplo de la respuesta:
{
"issuer": "https://api.altovar.net",
"authorization_endpoint": "https://api.altovar.net/api/oauth/authorize",
"token_endpoint": "https://api.altovar.net/api/auth/token",
"userinfo_endpoint": "https://api.altovar.net/api/auth/validate",
"jwks_uri": "https://api.altovar.net/.well-known/jwks.json",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "client_credentials", "urn:ietf:params:oauth:grant-type:device_code", "urn:ietf:params:oauth:grant-type:token-exchange"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256", "HS256"],
"scopes_supported": ["openid", "profile", "email"]
}JWKS
Las claves de firma públicas usadas para la verificación de JWT están disponibles en:
GET /.well-known/jwks.jsonRespuesta:
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "key-id-1",
"alg": "RS256",
"n": "...",
"e": "AQAB"
}
]
}Los clientes almacenan en caché las claves durante hasta 1 hora (Cache-Control: public, max-age=3600). La rotación de claves añade una nueva clave al conjunto; las claves antiguas permanecen presentes hasta que expiran los tokens emitidos con ellas.
El SDK JS de Auris (@auris/js) incluye un verificador JWT basado en JWKS que automáticamente obtiene y almacena en caché las claves de firma. Consulta la documentación del SDK para su uso.
Clientes SDK
En lugar de llamar a la API directamente, considera usar un SDK de Auris que gestiona automáticamente los tokens, PKCE, actualización y manejo de errores:
| SDK | Paquete | Lenguaje |
|---|---|---|
| JavaScript | @auris/js | Navegador + Node.js |
| React | @auris/react | React 18+ |
| Next.js | @auris/nextjs | Next.js 13+ App Router |
| PHP | auris/sdk | PHP 7.4+ |
| WordPress | auris-sso | Plugin de WordPress |
Consulta la documentación de SDKs para guías de instalación y uso.