Endpoints / Proveedores

POST

Crear Proveedor

Registra un nuevo proveedor dentro de la empresa del usuario autenticado, con sus datos de contacto y relaciones opcionales de categoría y marca.

POST/proveedores

Caso de Uso

Se usa cuando la aplicación necesita crear un nuevo proveedor para compras, abastecimiento o gestión de inventario, opcionalmente asociándolo a una categoría o marca. Al usarlo, el usuario obtiene los datos completos del proveedor creado, con las relaciones resueltas.

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

provemidstringobligatorio

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

provnombrestringobligatorio

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

provtelefonostringobligatorio

Teléfono móvil del proveedor; debe ser un número válido de 10 dígitos (ej. 0984653471).

provctgriaidstring | null opcional

Identificador de la categoría asociada; puede enviarse como null. Si se envía un valor, la categoría debe existir y estar activa.

provmrcidstring | null opcional

Identificador de la marca asociada; puede enviarse como null. Si se envía un valor, la marca debe existir y estar activa.

provcorreostring | null opcional

Correo electrónico del proveedor; puede enviarse como null. Si se envía un valor, debe tener formato de correo válido.

Reglas de negocio

1

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

2

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

3

La empresa del usuario autenticado debe estar activa.

4

El usuario autenticado debe estar activo.

5

provemid, provnombre y provtelefono son obligatorios.

6

provnombre no puede repetirse dentro de la misma empresa.

7

provtelefono debe ser un número móvil válido de 10 dígitos que inicie con 09.

8

provctgriaid, provmrcid y provcorreo son opcionales y pueden enviarse como null.

9

Si se envía provctgriaid, la categoría debe existir y estar activa.

10

Si se envía provmrcid, la marca debe existir y estar activa.

11

Si se envía provcorreo, debe tener formato de correo válido.

12

El proveedor se crea con estado activo.

Errores esperados

401Token inválido o ausente

No se proporcionó un token JWT o el token es inválido o ha expirado.

403Usuario sin permisos

El usuario no tiene el rol requerido (jefe o empleado) para realizar esta acción.

400Cuerpo de solicitud inválido

El cuerpo de la solicitud no es un JSON válido o está malformado.

500Company id is required

provemid ausente o vacío.

400provemid inválido

El formato de provemid no es un UUID válido.

500Proveedor name is required

provnombre ausente o vacío.

400provnombre inválido

provnombre excede la longitud máxima permitida.

500Proveedor phone is required

provtelefono ausente o vacío.

500Proveedor phone must be valid

provtelefono con formato inválido.

400provtelefono inválido

El formato de provtelefono no corresponde a un número móvil ecuatoriano.

500Proveedor email must be valid

provcorreo con formato inválido.

400provcorreo inválido

El formato de provcorreo no es una dirección de correo válida.

500Proveedor category id is required

provctgriaid enviado como string vacío en lugar de null.

500Proveedor brand id is required

provmrcid enviado como string vacío en lugar de null.

500User cannot access another company

Empresa distinta a la del usuario autenticado.

400Empresa no coincide

El usuario autenticado no pertenece a la empresa especificada en provemid.

500User is not jefe or empleado

Usuario sin rol permitido.

500User is not active

Usuario inactivo.

500Company is not active

Empresa inactiva.

500Proveedor already exists with that name

Proveedor duplicado por nombre en la misma empresa.

400provnombre duplicado

Ya existe un proveedor con el mismo nombre en la empresa.

500Proveedor category does not exist

Categoría inexistente.

500Proveedor category is not active

Categoría inactiva o eliminada.

500Proveedor brand does not exist

Marca inexistente.

500Proveedor brand is not active

Marca inactiva o eliminada.

500Database error

Error interno de base de datos al crear el proveedor.

500Internal server error

Error inesperado del servidor.

400provctgriaid inválido

El formato de provctgriaid no es un UUID válido.

Notas de uso

1

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

2

provctgriaid, provmrcid y provcorreo pueden enviarse como null o simplemente omitirse del body.

3

provtelefono debe ser un número móvil ecuatoriano válido (10 dígitos, iniciando con 09).

4

Las relaciones categoria y marca pueden devolverse como null en la respuesta si no fueron enviadas.