Usuarios
Usuarios
Prefijo: /api/usuarios
Requiere Auth: Sí
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: Sí
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:
curl "http://localhost/api/usuarios/?skip=0&limit=10" -H "Authorization: Bearer <token>"Python:
import httpxresp = 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: Sí
Permiso requerido: usuarios, leer
Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)
cURL:
curl http://localhost/api/usuarios/1 -H "Authorization: Bearer <token>"POST /api/usuarios/
Descripción: Crea un nuevo usuario en el tenant
Requiere Auth: Sí
Permiso requerido: usuarios, crear
Request:
{ "nombre": "Nuevo Usuario", "correo": "nuevo@miempresa.com", "password": "Passw0rd!", "rol": 2}Respuesta exitosa: 201 Created
cURL:
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 httpxresp = 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: Sí
Permiso requerido: usuarios, actualizar
Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)
cURL:
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: Sí
Permiso requerido: usuarios, eliminar
Respuesta exitosa: 204 No Content
Errores: 404 (no encontrado)
cURL:
curl -X DELETE http://localhost/api/usuarios/1 -H "Authorization: Bearer <token>"