Endpoints / Usuarios

POST

Crear usuario

Registra un nuevo usuario en el sistema, ya sea dentro de la misma empresa del solicitante o para otra empresa desde administración central.

POST/users

Caso de Uso

Se usa cuando la aplicación necesita crear un nuevo usuario, ya sea un empleado o jefe dentro de la misma empresa, o cualquier tipo de usuario para otra empresa desde el panel de administración central. Al usarlo, el usuario obtiene los datos completos del usuario creado, incluyendo la URL pública de su imagen de perfil.

Autenticación

Requiere token JWT en el header `Authorization: Bearer <token>`. Para creación en la misma empresa: rol jefe, no permite crear administradores. Para otra empresa: rol administrador, empresa debe ser padre.

Parámetros de ruta

Este endpoint no recibe parámetros de ruta.

Body

usemidstringobligatorio

Identificador de la empresa a la que pertenecerá el usuario.

usnombrestringobligatorio

Nombre completo del usuario; debe contener solo letras y espacios.

usapodostringobligatorio

Apodo o nombre de usuario; debe ser único dentro de la empresa.

uscorreostringobligatorio

Correo electrónico del usuario; debe tener formato válido y ser único globalmente.

uspasswordstringobligatorio

Contraseña del usuario; debe tener al menos 8 caracteres.

usrolstringobligatorio

Rol del usuario. Valores: administrador, jefe, empleado.

imagenfile opcional

Imagen de perfil del usuario; solo se aceptan .png o .jpg de hasta 5 MB.

Reglas de negocio

1

El campo usemid es obligatorio y debe corresponder a una empresa existente.

2

El campo usnombre es obligatorio y solo permite letras y espacios.

3

El campo usapodo es obligatorio y debe ser único dentro de la empresa destino.

4

El campo uscorreo es obligatorio, debe tener formato de correo electrónico válido y ser único a nivel global.

5

El campo uspassword es obligatorio y debe tener al menos 8 caracteres.

6

El campo usrol es obligatorio y solo acepta los valores: administrador, jefe, empleado.

7

El campo imagen es opcional; si no se envía, se asigna una imagen por defecto.

8

La imagen solo acepta formatos .png y .jpg.

9

La imagen no puede superar los 5 MB.

10

Si no se envía imagen, la solicitud debe usar Content-Type: application/json.

11

Si se envía imagen, la solicitud debe usar Content-Type: multipart/form-data.

12

La contraseña se almacena cifrada; nunca se devuelve en la respuesta.

13

El usuario autenticado debe tener rol jefe para crear dentro de la misma empresa.

14

El usuario autenticado debe tener rol administrador para crear en otra empresa.

15

Para crear en otra empresa, la empresa autenticada debe ser empresa padre de la empresa destino.

16

No se permite crear usuarios con rol administrador dentro de la misma empresa.

17

El sistema verifica que la empresa destino exista y esté activa.

18

El sistema verifica que el usuario autenticado esté activo.

19

Si el correo ya está registrado en el sistema, se rechaza la creación.

20

Si el apodo ya existe en la empresa destino, se rechaza la creación.

21

El endpoint transforma la ruta de la imagen a una URL pública completa.

22

La imagen por defecto se asigna desde /uploads/usuarios/user.png.

23

El endpoint no recibe parámetros de ruta ni query params.

24

El usuario creado se devuelve con todos sus datos, incluida la URL de la imagen.

25

El estado del usuario se asigna como "activo" por defecto.

26

La fecha de registro se genera automáticamente al crear el usuario.

Errores esperados

401No autorizado

No se envió un token JWT válido o el token no contiene información válida del usuario.

500El id de empresa es requerido

usemid fue enviado vacío.

500El nombre es requerido

usnombre fue enviado vacío.

500El nombre sólo debe contener letras y espacios

usnombre contiene caracteres no permitidos.

500El apodo es requerido

usapodo fue enviado vacío.

500El correo es requerido

uscorreo fue enviado vacío.

500El correo debe ser válido

uscorreo no tiene formato de correo válido.

500La contraseña es requerida

uspassword fue enviado vacío.

500La contraseña debe tener al menos 8 caracteres

uspassword tiene menos de 8 caracteres.

500El rol es requerido

usrol fue enviado vacío.

500El rol debe ser válido

usrol no es uno de los valores permitidos.

500El tamaño de la imagen excede el límite permitido

La imagen enviada supera los 5 MB.

500Solo se permiten imágenes PNG y JPG

La imagen enviada no tiene extensión .png o .jpg.

500Error al guardar la imagen

Ocurrió un error interno al guardar la imagen en el servidor.

500El código de empresa no es inválido

La empresa asociada al usuario autenticado no fue encontrada.

500La empresa no está activa

La empresa asociada al usuario autenticado está inactiva.

500La empresa no es empresa padre

Se intentó crear un usuario para otra empresa, pero la empresa del solicitante no es empresa padre.

500El usuario no existe

El usuario autenticado no fue encontrado dentro de su empresa.

500El usuario no pertenece a la empresa

El usuario autenticado no pertenece a la empresa indicada por su sesión.

500El usuario no puede acceder a otra empresa

El usuario autenticado intentó operar sobre una empresa distinta a la suya.

500El usuario no es administrador

Para crear usuarios en otra empresa, el solicitante debe ser administrador.

500El usuario no es jefe, empleado o administrador

El rol del usuario no está permitido para acceder al módulo de usuarios.

500El usuario no está activo

El usuario autenticado está inactivo y no puede usar el sistema.

500La empresa no existe

La empresa destino indicada en usemid no fue encontrada.

500El rol debe ser jefe o empleado

En creación dentro de la misma empresa, no se permite crear usuarios con rol administrador.

500El usuario no es jefe

Para crear usuarios en la misma empresa, el solicitante debe tener rol jefe.

500Ya existe un usuario con ese correo

El uscorreo enviado ya está registrado por otro usuario.

500Ya existe un usuario con ese apodo

El usapodo enviado ya está en uso por otro usuario dentro de la empresa destino.

500El usuario no fue creado

El usuario fue guardado, pero no pudo consultarse para devolver la respuesta.

500Error saving user

Ocurrió un error interno al guardar el usuario.

Notas de uso

1

Este endpoint no recibe parámetros de ruta ni query params.

2

Si no se envía imagen, usa Content-Type: application/json.

3

Si se envía imagen, usa Content-Type: multipart/form-data con el archivo en el campo imagen.

4

La contraseña se almacena cifrada; nunca se devuelve en la respuesta.

5

uscorreo debe ser único a nivel global.

6

usapodo debe ser único solo dentro de la empresa destino.

7

En creación dentro de la misma empresa, no se permite asignar el rol administrador.