Skip to Content

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/api

Reemplaza 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 EndpointAutenticación RequeridaNotas
Endpoints de autenticación públicaNo/api/auth/login, /api/auth/signup, /api/auth/magic-link, /api/oauth/authorize
Usuario autenticadoSíToken de acceso de usuario estándar
Endpoints de administraciónSíEl token debe incluir el permiso requerido (por ejemplo, manage:users)
Endpoints M2MSí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/json

Ejemplo 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ódigoSignificado
200 OKLa solicitud fue exitosa
201 CreatedRecurso creado correctamente
400 Bad RequestCuerpo de solicitud o parámetros no válidos
401 UnauthorizedToken de acceso ausente o no válido
403 ForbiddenEl token es válido pero carece del permiso requerido
404 Not FoundEl recurso no existe
409 ConflictEl recurso ya existe (por ejemplo, email duplicado)
429 Too Many RequestsLímite de velocidad superado
500 Internal Server ErrorError en el lado del servidor

Códigos de Error Comunes

CódigoDescripción
INVALID_CREDENTIALSLa combinación email/contraseña es incorrecta
ACCOUNT_LOCKEDLa cuenta está bloqueada por demasiados intentos fallidos
TOKEN_EXPIREDEl token de acceso ha expirado
TOKEN_INVALIDEl token de acceso está mal formado o la firma es inválida
PERMISSION_DENIEDEl usuario carece del permiso requerido
NOT_FOUNDEl recurso solicitado no existe
VALIDATION_ERROREl cuerpo de la solicitud falló la validación de esquema
RATE_LIMITEDDemasiadas solicitudes en una ventana corta
MISSING_TENANTFalta la cabecera x-tenant requerida
TENANT_NOT_FOUNDEl 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ámetroTipoPredeterminadoMáximoDescripción
pageentero1—Número de página (indexado desde 1)
limitentero20100Elementos por página

Ejemplo:

GET /api/users?page=2&limit=50

Limitación de Velocidad

Cada respuesta incluye cabeceras de limitación de velocidad:

CabeceraDescripción
X-RateLimit-LimitSolicitudes máximas permitidas en la ventana actual
X-RateLimit-RemainingSolicitudes restantes en la ventana actual
X-RateLimit-ResetMarca 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

NivelEndpointsLímite
AuthInicio de sesión, registro, olvidé contraseñaEstricto (previene fuerza bruta)
Sensible2FA, cambio de contraseña, magic linkModerado
APITodos los endpoints de administración/gestiónEstándar
PúblicoDescubrimiento OIDC, JWKSRelajado

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:

  1. Ve a Consola → Aplicaciones
  2. Selecciona tu aplicación
  3. 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-configuration

Esto 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.json

Respuesta:

{ "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:

SDKPaqueteLenguaje
JavaScript@auris/jsNavegador + Node.js
React@auris/reactReact 18+
Next.js@auris/nextjsNext.js 13+ App Router
PHPauris/sdkPHP 7.4+
WordPressauris-ssoPlugin de WordPress

Consulta la documentación de SDKs para guías de instalación y uso.