Autenticacion
La API de DPOLab utiliza JWT (JSON Web Tokens) para autenticacion. Cada request debe incluir un token valido en el header Authorization.
Flujo de autenticacion
1. POST /v1/auth/register → Crear cuenta
2. POST /v1/auth/login → Obtener access_token + refresh_token
3. Usar access_token en cada request
4. POST /v1/auth/refresh → Renovar tokens cuando expirenRegistro
curl -X POST https://api.dpolab.com/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "M1Contrasena!segura",
"name": "Maria Garcia",
"companyName": "Mi Empresa SpA",
"companyRut": "76123456-7"
}'Respuesta exitosa (201):
{
"success": true,
"data": {
"user": {
"id": "usr_abc123",
"email": "[email protected]",
"name": "Maria Garcia"
},
"tenant": {
"id": "tnt_xyz789",
"slug": "mi-empresa-spa",
"name": "Mi Empresa SpA"
}
}
}⚠️
El campo companyRut se valida con el algoritmo modulo 11 chileno. Si el RUT no es valido, la API retorna un error INVALID_RUT.
Login
curl -X POST https://api.dpolab.com/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "M1Contrasena!segura"
}'Respuesta exitosa (200):
{
"success": true,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "eyJhbGciOiJIUzI1NiIs...",
"expiresIn": 900
}
}| Token | Duracion | Uso |
|---|---|---|
accessToken | 15 minutos | Incluir en header Authorization: Bearer {token} |
refreshToken | 7 dias | Usar para obtener un nuevo accessToken |
Refresh token
curl -X POST https://api.dpolab.com/v1/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refreshToken": "eyJhbGciOiJIUzI1NiIs..."
}'Respuesta exitosa (200):
{
"success": true,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "eyJhbGciOiJIUzI1NiIs...",
"expiresIn": 900
}
}Usar el token
Incluye el accessToken en todas las requests:
curl -X GET https://api.dpolab.com/v1/rat/activities \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Errores de autenticacion
| Codigo | HTTP | Descripcion |
|---|---|---|
INVALID_CREDENTIALS | 401 | Email o contrasena incorrectos |
TOKEN_EXPIRED | 401 | El access token expiro, usa refresh |
TOKEN_INVALID | 401 | Token malformado o invalido |
REFRESH_TOKEN_EXPIRED | 401 | El refresh token expiro, vuelve a hacer login |
INVALID_RUT | 422 | RUT de empresa no valido |
EMAIL_ALREADY_EXISTS | 409 | Ya existe una cuenta con ese correo |
TENANT_NOT_FOUND | 404 | El tenant no existe |
Formato de error:
{
"success": false,
"error": {
"code": "TOKEN_EXPIRED",
"message": "El token de acceso ha expirado. Usa el refresh token para obtener uno nuevo."
}
}El tenant se obtiene automaticamente del JWT. No es necesario (ni permitido) enviarlo como parametro en body o query string. Esto garantiza el aislamiento multi-tenant.