Skip to content

Usuarios

Usuarios

Prefijo: /api/usuarios
Requiere Auth:
Permiso requerido: usuarios, *

Módulo de gestión de usuarios del sistema. La política de contraseñas exige: mínimo 8 caracteres, al menos una mayúscula, un número y un carácter especial. Los usuarios nuevos se crean con password_must_change: true.

Nota: Los usuarios utilizan soft delete — al eliminar se marcan como eliminados sin borrarse físicamente.

GET /api/usuarios/

Descripción: Lista los usuarios del tenant con paginación
Requiere Auth:
Permiso requerido: usuarios, leer

Respuesta exitosa: 200 OK

Response:

[
{
"id": 1,
"nombre": "Juan Pérez",
"correo": "juan@miempresa.com",
"rol": 1,
"tenant_id": "uuid-tenant",
"fecha_registro": "2025-01-01",
"password_must_change": false
}
]

cURL:

Terminal window
curl "http://localhost/api/usuarios/?skip=0&limit=10" -H "Authorization: Bearer <token>"

Python:

import httpx
resp = httpx.get("http://localhost/api/usuarios/", headers={"Authorization": f"Bearer {token}"})
usuarios = resp.json()

JavaScript:

const resp = await fetch('http://localhost/api/usuarios/', {
headers: {'Authorization': `Bearer ${token}`}
});
const usuarios = await resp.json();

GET /api/usuarios/{usuario_id}

Descripción: Obtiene un usuario por ID
Requiere Auth:
Permiso requerido: usuarios, leer

Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)

cURL:

Terminal window
curl http://localhost/api/usuarios/1 -H "Authorization: Bearer <token>"

POST /api/usuarios/

Descripción: Crea un nuevo usuario en el tenant
Requiere Auth:
Permiso requerido: usuarios, crear

Request:

{
"nombre": "Nuevo Usuario",
"correo": "nuevo@miempresa.com",
"password": "Passw0rd!",
"rol": 2
}

Respuesta exitosa: 201 Created

cURL:

Terminal window
curl -X POST http://localhost/api/usuarios/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"nombre":"Nuevo Usuario","correo":"nuevo@miempresa.com","password":"Passw0rd!","rol":2}'

Python:

import httpx
resp = httpx.post("http://localhost/api/usuarios/",
json={"nombre": "Nuevo Usuario", "correo": "nuevo@miempresa.com", "password": "Passw0rd!", "rol": 2},
headers={"Authorization": f"Bearer {token}"})
usuario = resp.json()

JavaScript:

const resp = await fetch('http://localhost/api/usuarios/', {
method: 'POST',
headers: {'Content-Type': 'application/json', 'Authorization': `Bearer ${token}`},
body: JSON.stringify({nombre: 'Nuevo Usuario', correo: 'nuevo@miempresa.com', password: 'Passw0rd!', rol: 2})
});

PUT /api/usuarios/{usuario_id}

Descripción: Actualiza un usuario (nombre, correo, rol, password)
Requiere Auth:
Permiso requerido: usuarios, actualizar

Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)

cURL:

Terminal window
curl -X PUT http://localhost/api/usuarios/1 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"nombre":"Juan Actualizado","rol":1}'

DELETE /api/usuarios/{usuario_id}

Descripción: Elimina (soft delete) un usuario
Requiere Auth:
Permiso requerido: usuarios, eliminar

Respuesta exitosa: 204 No Content
Errores: 404 (no encontrado)

cURL:

Terminal window
curl -X DELETE http://localhost/api/usuarios/1 -H "Authorization: Bearer <token>"