Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/Miercoles-Proyecto/llms.txt

Use this file to discover all available pages before exploring further.

El módulo de usuarios permite al administrador gestionar las cuentas de acceso al sistema Tiendas Mi Cholo. Todos los endpoints requieren rol ADMIN. Las contraseñas nunca se devuelven en las respuestas y se almacenan cifradas con BCrypt. El borrado es lógico: en lugar de eliminar el registro, se establece activo = false.
Todos los endpoints de este módulo requieren Authorization: Bearer <token> con rol ADMIN. Cualquier otro rol recibirá 403 Forbidden.

GET /api/usuarios

Lista todos los usuarios con activo = true.

Ejemplo

curl -s http://localhost:8080/api/usuarios \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..."
Respuesta 200 OK:
[
  {
    "id": 1,
    "nombre": "Juan",
    "apellido": "Pérez",
    "username": "admin",
    "email": "admin@tienda.com",
    "telefono": "987654321",
    "activo": true,
    "rol": {
      "id": 1,
      "nombre": "ADMIN",
      "descripcion": "Administrador del sistema"
    },
    "createdAt": "2024-01-01T08:00:00",
    "updatedAt": "2024-01-15T10:00:00"
  }
]

Response fields

id
integer
Identificador único del usuario.
nombre
string
Nombre de pila del usuario.
apellido
string
Apellido del usuario.
username
string
Nombre de usuario para login. Único en el sistema.
email
string
Correo electrónico. Único en el sistema.
telefono
string
Teléfono de contacto. Puede ser null.
activo
boolean
Estado del usuario. false indica borrado lógico.
rol
object
Rol asignado al usuario.
createdAt
string
Fecha y hora de creación (ISO 8601).
updatedAt
string
Fecha y hora de última actualización (ISO 8601).
El campo password nunca se incluye en ninguna respuesta de este módulo.

GET /api/usuarios/{id}

Obtiene un usuario por su ID numérico.

Path parameters

id
integer
required
ID del usuario a consultar.

Ejemplo

curl -s http://localhost:8080/api/usuarios/1 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..."
Respuesta 404 Not Found:
{
  "timestamp": "2024-01-15T10:30:00",
  "status": 404,
  "error": "Usuario no encontrado: 99"
}

POST /api/usuarios

Crea un nuevo usuario en el sistema. La contraseña se cifra automáticamente con BCrypt antes de persistir.

Request body

nombre
string
required
Nombre de pila del usuario. Máximo 100 caracteres.
apellido
string
required
Apellido del usuario. Máximo 100 caracteres.
username
string
required
Nombre de usuario para login. Máximo 50 caracteres. Debe ser único en el sistema.
email
string
required
Correo electrónico válido. Único en el sistema.
password
string
Contraseña en texto plano (se almacena como hash BCrypt). Entre 6 y 100 caracteres. Requerido al crear; opcional al editar (si se omite o envía vacío, no se modifica).
telefono
string
Teléfono de contacto. Máximo 20 caracteres.
rolId
integer
required
ID del rol a asignar. Obtener los IDs válidos desde GET /api/roles.
activo
boolean
Estado inicial del usuario. Por defecto true.

Ejemplo

curl -s -X POST http://localhost:8080/api/usuarios \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "María",
    "apellido": "García",
    "username": "mgarcia",
    "email": "maria@tienda.com",
    "password": "segura123",
    "telefono": "912345678",
    "rolId": 2,
    "activo": true
  }'
Respuesta 200 OK — retorna el usuario creado (sin password):
{
  "id": 4,
  "nombre": "María",
  "apellido": "García",
  "username": "mgarcia",
  "email": "maria@tienda.com",
  "telefono": "912345678",
  "activo": true,
  "rol": {
    "id": 2,
    "nombre": "VENDEDOR",
    "descripcion": "Vendedor de la tienda"
  },
  "createdAt": "2024-01-15T14:00:00",
  "updatedAt": "2024-01-15T14:00:00"
}

PUT /api/usuarios/{id}

Actualiza los datos de un usuario existente. Si el campo password se omite o se envía vacío, la contraseña actual no se modifica.

Path parameters

id
integer
required
ID del usuario a actualizar.

Request body

Mismos campos que POST /api/usuarios. El username no se actualiza vía PUT (el controlador no llama a setUsername).
Para cambiar la contraseña de un usuario, incluye el campo password con el nuevo valor. Si lo omites, la contraseña existente se conserva intacta.

Ejemplo

curl -s -X PUT http://localhost:8080/api/usuarios/4 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "María Lucía",
    "apellido": "García Ríos",
    "username": "mgarcia",
    "email": "mlgarcia@tienda.com",
    "telefono": "999888777",
    "rolId": 3,
    "activo": true
  }'

DELETE /api/usuarios/{id}

Realiza un borrado lógico: establece activo = false en el usuario. El registro se conserva en la base de datos y el usuario no aparecerá en GET /api/usuarios.

Path parameters

id
integer
required
ID del usuario a desactivar.

Ejemplo

curl -s -X DELETE http://localhost:8080/api/usuarios/4 \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..."
Respuesta: 204 No Content (sin cuerpo).
El borrado lógico no impide que el usuario intente autenticarse si conoce sus credenciales. Para bloquear el acceso por completo, cambia la contraseña del usuario mediante PUT /api/usuarios/{id} con un nuevo valor en password antes (o después) de eliminarlo.

Códigos de error

CódigoDescripciónCausa habitual
400 Bad RequestValidación fallidaCampo requerido vacío, email mal formado, password < 6 chars
401 UnauthorizedNo autenticadoToken ausente, inválido o expirado
403 ForbiddenSin permisosEl token pertenece a un rol distinto de ADMIN
404 Not FoundUsuario no encontradoEl id no existe en la base de datos
Respuesta 400 (validación):
{
  "timestamp": "2024-01-15T10:30:00",
  "status": 400,
  "error": "Validación fallida",
  "campos": {
    "email": "must be a well-formed email address",
    "password": "size must be between 6 and 100"
  }
}

Build docs developers (and LLMs) love