Endpoints / Productos

POST

Crear producto

Registra un nuevo producto dentro de la empresa del usuario autenticado, incluyendo sus relaciones comerciales y datos de inventario.

POST/products

Caso de Uso

Se usa cuando la aplicación necesita crear un nuevo producto con su categoría, marca, proveedor y medida asociados, además de sus precios y niveles de stock. Al usarlo, el usuario obtiene los datos completos del producto creado, con las relaciones resueltas y la URL pública de la imagen.

Autenticación

Requiere token JWT en el header `Authorization: Bearer <token>`. Permite acceso a usuarios con rol jefe o empleado. La empresa y el usuario autenticado deben estar activos.

Parámetros de ruta

Este endpoint no recibe parámetros de ruta.

Body

prdtoemidstringobligatorio

Identificador de la empresa a la que pertenecerá el producto; debe coincidir con la empresa del usuario autenticado.

prdtoctgriaidstringobligatorio

Identificador de la categoría del producto.

prdtomrcidstringobligatorio

Identificador de la marca del producto.

prdtoprovidstringobligatorio

Identificador del proveedor del producto.

prdtomdiaidstringobligatorio

Identificador de la medida del producto.

prdtocodigostringobligatorio

Código del producto; debe ser único dentro de la empresa.

prdtonombrestringobligatorio

Nombre del producto; debe ser único dentro de la empresa.

prdtopreciocompranumberobligatorio

Precio de compra del producto.

prdtoprecioventanumberobligatorio

Precio de venta del producto.

prdtostockminimonumberobligatorio

Nivel mínimo de stock.

prdtostockmaximonumberobligatorio

Nivel máximo de stock.

imagenfile opcional

Imagen del producto; solo se aceptan .png o .jpg de hasta 5 MB. Si no se envía, se asigna una imagen por defecto.

Reglas de negocio

1

Solo un usuario con rol jefe o empleado puede registrar productos.

2

Solo permite crear productos en la misma empresa del usuario autenticado.

3

La empresa del usuario autenticado debe estar activa.

4

El usuario autenticado debe estar activo.

5

Todos los campos del body, excepto imagen, son obligatorios.

6

prdtoctgriaid, prdtomrcid, prdtoprovid y prdtomdiaid deben corresponder a entidades existentes dentro de la misma empresa.

7

prdtocodigo no puede repetirse dentro de la misma empresa.

8

prdtonombre no puede repetirse dentro de la misma empresa.

9

prdtopreciocompra, prdtoprecioventa, prdtostockminimo y prdtostockmaximo deben ser valores numéricos válidos.

10

Si se envía imagen, solo se aceptan archivos .png y .jpg de hasta 5 MB.

11

Si no se envía imagen, se asigna una imagen por defecto.

12

El producto se crea con estado activo.

13

Cuando se envía imagen, el Content-Type debe ser multipart/form-data. Si no, puede usarse application/json.

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

prdtoemid fue enviado vacío.

500El id de categoría de producto es requerido

prdtoctgriaid fue enviado vacío.

500El id de marca de producto es requerido

prdtomrcid fue enviado vacío.

500El id de proveedor de producto es requerido

prdtoprovid fue enviado vacío.

500El id de medida de producto es requerido

prdtomdiaid fue enviado vacío.

500El código de producto es requerido

prdtocodigo fue enviado vacío.

500El nombre de producto es requerido

prdtonombre fue enviado vacío.

500El número es requerido

Uno de los campos numéricos fue enviado vacío.

500El valor debe ser un número válido

Uno de los campos numéricos no es un número válido.

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.

500La empresa no existe

La empresa asociada al usuario autenticado no fue encontrada.

500La empresa no está activa

La empresa asociada al usuario autenticado está inactiva.

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

prdtoemid pertenece a una empresa distinta a la del usuario autenticado.

500El usuario no es jefe, empleado o administrador

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

500El usuario no es jefe o empleado

El usuario autenticado no tiene un rol permitido para crear productos.

500El usuario no está activo

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

500La categoría de producto no existe

prdtoctgriaid no corresponde a una categoría existente en la empresa.

500La marca de producto no existe

prdtomrcid no corresponde a una marca existente en la empresa.

500El proveedor de producto no existe

prdtoprovid no corresponde a un proveedor existente en la empresa.

500La medida de producto no existe

prdtomdiaid no corresponde a una medida existente en la empresa.

500Ya existe un producto con ese código

Ya hay un producto registrado con el mismo prdtocodigo dentro de la empresa.

500Ya existe un producto con ese nombre

Ya hay un producto registrado con el mismo prdtonombre dentro de la empresa.

500El producto no fue creado

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

500Error saving product

Ocurrió un error interno al guardar el producto.

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

Los campos prdtocodigo y prdtonombre deben ser únicos dentro de la empresa.

5

La respuesta incluye las relaciones resueltas como objetos anidados (categoria, marca, proveedor, medida).

6

El campo prdtoimagen se devuelve como URL pública completa.