Skip to content

API Reference

Información General

PropiedadValor
Base URLhttps://api.aulix.com/v1
FormatoJSON
AutenticaciónBearer Token (JWT)
Rate Limit100 requests/minuto

Autenticación

Todas las rutas protegidas requieren el header:

Authorization: Bearer <access_token>

Endpoints

Auth

POST /auth/register

Registra un nuevo usuario.

Request Body:

json
{
  "email": "usuario@ejemplo.com",
  "password": "contraseña123",
  "firstName": "Juan",
  "lastName": "Pérez"
}

Response (201):

json
{
  "success": true,
  "data": {
    "id": "uuid",
    "email": "usuario@ejemplo.com",
    "firstName": "Juan",
    "lastName": "Pérez",
    "createdAt": "2025-01-01T00:00:00Z"
  }
}

Errores:

CódigoDescripción
400Datos de entrada inválidos
409Email ya registrado

POST /auth/login

Inicia sesión y obtiene tokens.

Request Body:

json
{
  "email": "usuario@ejemplo.com",
  "password": "contraseña123"
}

Response (200):

json
{
  "success": true,
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIs...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
    "expiresIn": 900,
    "tokenType": "Bearer"
  }
}

Errores:

CódigoDescripción
401Credenciales inválidas
423Cuenta bloqueada

POST /auth/refresh

Renueva el access token.

Request Body:

json
{
  "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
}

Response (200):

json
{
  "success": true,
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIs...",
    "expiresIn": 900
  }
}

POST /auth/logout

Cierra la sesión actual.

Headers: Authorization: Bearer <token>

Response (200):

json
{
  "success": true,
  "message": "Sesión cerrada exitosamente"
}

Users

GET /users/me

Obtiene el perfil del usuario autenticado.

Headers: Authorization: Bearer <token>

Response (200):

json
{
  "success": true,
  "data": {
    "id": "uuid",
    "email": "usuario@ejemplo.com",
    "firstName": "Juan",
    "lastName": "Pérez",
    "avatarUrl": "https://...",
    "role": "user",
    "createdAt": "2025-01-01T00:00:00Z"
  }
}

PATCH /users/me

Actualiza el perfil del usuario.

Headers: Authorization: Bearer <token>

Request Body:

json
{
  "firstName": "Juan Carlos",
  "lastName": "Pérez García"
}

Response (200):

json
{
  "success": true,
  "data": {
    "id": "uuid",
    "firstName": "Juan Carlos",
    "lastName": "Pérez García",
    "updatedAt": "2025-01-01T00:00:00Z"
  }
}

Formato de Respuestas

Respuesta Exitosa

json
{
  "success": true,
  "data": { ... },
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 100
  }
}

Respuesta de Error

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Los datos proporcionados son inválidos",
    "details": [
      {
        "field": "email",
        "message": "El email no es válido"
      }
    ]
  }
}

Códigos de Estado HTTP

CódigoDescripción
200OK - Solicitud exitosa
201Created - Recurso creado
204No Content - Sin contenido
400Bad Request - Error de validación
401Unauthorized - No autenticado
403Forbidden - Sin permisos
404Not Found - Recurso no encontrado
409Conflict - Conflicto (duplicado)
422Unprocessable Entity - Error de negocio
429Too Many Requests - Rate limit
500Internal Server Error - Error del servidor

Paginación

Para endpoints que retornan listas:

GET /users?page=1&limit=20&sort=createdAt&order=desc
ParámetroTipoDefaultDescripción
pagenumber1Página actual
limitnumber20Items por página (max 100)
sortstringcreatedAtCampo de ordenamiento
orderstringdescDirección (asc/desc)

Rate Limiting

Headers de respuesta:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640000000

Cuando se excede el límite:

json
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Demasiadas solicitudes. Intente de nuevo en 60 segundos.",
    "retryAfter": 60
  }
}

Documentación Aulix SAAS