Endpoints / Clientes

PATCH

Actualizar cliente

Actualiza parcialmente los datos editables de un cliente de la empresa del usuario autenticado.

PATCH/clients/:id

Caso de Uso

Se usa cuando la aplicación necesita modificar el tipo de identificación, nombre, correo, dirección, teléfono o estado de un cliente existente. Al usarlo, el usuario obtiene el cliente actualizado con sus datos vigentes.

Autenticación

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

Parámetros de ruta

idstringobligatorio

Identificador del cliente.

Body

clntetipoidentificacionstring opcional

Nuevo tipo de identificación; acepta cedula o ruc.

clnteidentificacionstring opcional

Nuevo número de identificación válido según clntetipoidentificacion.

clntenombrestring opcional

Nuevo nombre del cliente.

clntecorreostring | null opcional

Nuevo correo electrónico; puede enviarse como null para limpiarlo.

clntedireccionstring | null opcional

Nueva dirección; puede enviarse como null para limpiarla.

clntetelefonostring | null opcional

Nuevo teléfono móvil de 10 dígitos; puede enviarse como null para limpiarlo.

clnteestadostring opcional

Nuevo estado del cliente; acepta activo, inactivo o eliminado.

Reglas de negocio

1

Solo un usuario con rol jefe o empleado puede actualizar clientes.

2

Solo permite actualizar clientes de la empresa del usuario autenticado.

3

La empresa del usuario autenticado debe estar activa.

4

El usuario autenticado debe estar activo.

5

El cliente debe existir dentro de la empresa autenticada.

6

Un cliente 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 clntetipoidentificacion, solo acepta cedula o ruc.

9

Si se envía clnteidentificacion, debe ser válida según clntetipoidentificacion.

10

clnteidentificacion no puede repetirse en otro cliente de la misma empresa.

11

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

12

Si se envía clntecorreo como texto, debe tener formato de correo válido; puede ser null.

13

clntecorreo no puede repetirse en otro cliente de la misma empresa.

14

Si se envía clntedireccion como texto, no puede estar vacía; puede ser null.

15

Si se envía clntetelefono como texto, debe ser de 10 dígitos; puede ser null.

16

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

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 cliente es requerido

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

404Cliente no encontrado

La actualización no devolvió un cliente actualizado.

500El tipo de identificación de cliente es requerido

clntetipoidentificacion fue enviado vacío.

500El tipo de identificación debe ser cedula o ruc

clntetipoidentificacion tiene un valor distinto de cedula o ruc.

500La identificación de cliente es requerida

clnteidentificacion fue enviado vacío.

500La identificación debe ser válida para el tipo seleccionado

clnteidentificacion no cumple el formato requerido para cedula o ruc.

500El nombre de cliente es requerido

clntenombre fue enviado vacío.

500El correo de cliente es requerido

clntecorreo fue enviado como texto vacío.

500El correo de cliente debe ser válido

clntecorreo fue enviado, pero no tiene formato de correo válido.

500La dirección de cliente es requerida

clntedireccion fue enviada como texto vacío.

500El teléfono de cliente es requerido

clntetelefono fue enviado como texto vacío.

500El teléfono de cliente debe ser válido

clntetelefono no cumple el formato de teléfono móvil requerido.

500El estado de cliente es requerido

clnteestado fue enviado vacío.

500El estado de cliente debe ser activo, inactivo o eliminado

clnteestado tiene un valor no permitido.

500Al menos un campo es requerido para actualizar el cliente

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

500Cliente no encontrado

El cliente no existe o no pertenece a la empresa autenticada.

500El cliente eliminado no puede ser actualizado

El cliente existe, pero está en estado eliminado.

500Ya existe un cliente con esa identificación

Otro cliente de la misma empresa ya usa la clnteidentificacion enviada.

500Ya existe un cliente con ese correo

Otro cliente de la misma empresa ya usa el clntecorreo enviado.

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 clientes.

500El usuario no es jefe o empleado

El usuario autenticado no tiene un rol permitido para actualizar clientes.

500El usuario no está activo

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

500Error updating client

Ocurrió un error interno al actualizar el cliente.

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

clntecorreo, clntedireccion y clntetelefono pueden enviarse como null para limpiar esos datos.

5

clnteidentificacion y clntetelefono deben enviarse como texto para conservar ceros iniciales.