Endpoints / Categorías

PATCH

Actualizar categoría

Actualiza parcialmente los datos editables de una categoría de la empresa del usuario autenticado.

PATCH/categories/:id

Caso de Uso

Se usa cuando la aplicación necesita modificar el nombre, descripción o estado de una categoría existente. Al usarlo, el usuario obtiene la categoría actualizada con sus datos vigentes.

Autenticación

Requiere token JWT en el header `Authorization: Bearer <token>`.

Parámetros de ruta

idstringobligatorio

Identificador de la categoría.

Body

ctgnombrestring opcional

Nuevo nombre de la categoría.

ctgriadescripcionstring | null opcional

Nueva descripción de la categoría; puede enviarse como null.

ctgriaestadostring opcional

Nuevo estado de la categoría; acepta activo o inactivo.

Reglas de negocio

1

Solo permite actualizar categorías de la empresa del usuario autenticado.

2

La empresa del usuario autenticado debe estar activa.

3

El usuario autenticado debe estar activo.

4

El usuario autenticado debe tener rol jefe o empleado.

5

La categoría debe existir dentro de la empresa autenticada.

6

Una categoría con estado eliminado no puede actualizarse.

7

Debe enviarse al menos un campo editable con un valor diferente al actual.

8

Si se envía ctgnombre, no puede estar vacío.

9

ctgnombre no puede repetirse en otra categoría de la misma empresa.

10

Si se envía ctgriadescripcion como texto, no puede estar vacía.

11

ctgriadescripcion puede enviarse como null.

12

Si se envía ctgriaestado, solo puede ser activo o inactivo.

Errores esperados

401No autorizado

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

400El id de categoría es requerido

No se envió el parámetro id en la ruta.

404Categoría no encontrada

La categoría no existe o no pertenece a la empresa autenticada.

500El nombre de categoría es requerido

ctgnombre fue enviado vacío.

500La descripcion de categoría es requerida

ctgriadescripcion fue enviada como texto vacío.

500El estado de categoría es requerido

ctgriaestado fue enviado vacío.

500El estado de categoría debe ser activo, inactivo o eliminado

ctgriaestado tiene un valor no permitido.

500Al menos un campo es requerido para actualizar la categoría

No se envió ningún campo editable o todos los valores enviados son iguales a los actuales.

500Ya existe una categoría con ese nombre

Otra categoría de la misma empresa ya usa el ctgnombre enviado.

500La categoría eliminada no puede ser actualizada

La categoría existe, pero está en estado eliminado.

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

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

500El usuario no es jefe, empleado o administrador

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

500El usuario no es jefe o empleado

El usuario autenticado no tiene un rol permitido para actualizar categorías.

500El usuario no está activo

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

500Error updating category by id

Ocurrió un error interno al actualizar la categoría.

Notas de uso

1

Este endpoint no recibe query params.

2

Envía solo los campos que deseas actualizar.

3

El body debe incluir al menos un campo editable con un valor distinto al actual.

4

ctgriadescripcion puede enviarse como null para limpiar la descripción.

5

La comparación de nombres existentes se realiza ignorando mayúsculas, minúsculas y espacios extremos.

6

Aunque el mensaje de validación menciona eliminado, la validación actual solo acepta activo o inactivo para ctgriaestado.