NominexDocs
Referencia de la APICentro de costos

Editar

Actualiza parcialmente un centro de costos existente.

Descripcion general

Este endpoint permite actualizar parcialmente un centro de costos. Todos los campos del cuerpo son opcionales: si omites una clave, ese campo no se toca; si la envías como null, ese campo se limpia (cuando aplica). El identificador en la URL es el cost_center_number del CC dentro de tu organización. Una solicitud exitosa devuelve 200 con la forma completa del centro de costos actualizado.

Endpoint

PATCHhttps://app.integranom.com/api/v1/cost-centers/{cost_center_number}

Path param: cost_center_number — entero positivo, el número de centro de costos dentro de la organización.

Actualizacion minima


Envía solo los campos que quieras cambiar. El resto del centro de costos queda intacto.

{ "name": "Centro de costos Ventas Internacionales" }

Limpiar campos y desanidar


null (y "" para strings) limpia el campo. En particular, parent_cost_center_code: null desancla el centro de costos y lo convierte en raíz (depth: 0).

Nota: code no es nullable — es una columna requerida en la base de datos.

{
  "description": null,
  "parent_cost_center_code": null
}

Cascada a departamentos vinculados


Tras actualizar el CC, el handler corre un updateMany sobre cada departamento vivo vinculado para espejar los valores del CC en name, code, description, is_active, sort_order. Esto mantiene la invariante de vinculación intacta, hayas o no tocado esos campos en este PATCH.

{
  "code": "VEN-INT",
  "name": "Centro de costos Ventas Internacionales",
  "is_active": true
}

Campos del cuerpo

CampoTipoNotas
codestring≤ 60 caracteres, se almacena en mayúsculas. No nullable — es columna requerida.
namestringNo vacío tras recortar.
descriptionstring | nullnull o "" limpian la descripción.
parent_cost_center_codestring | nullnull convierte el CC en raíz. El nuevo padre debe existir y no puede ser el propio CC ni un descendiente.
is_activebooleanFlag activo controlado por el usuario. Independiente del borrado — un CC puede estar inactivo y seguir apareciendo en GET. Al ponerlo en false, se desvincula de cada empleo el CC (cost_center_code → null) y el departamento (department_code → null) de los empleos cuyo departamento esté vinculado a este CC; además el flag se espeja a los departamentos vinculados.
sort_orderinteger ≥ 0

Reparenting

Si parent_cost_center_code cambia:

  • Primero corre una verificación de ciclos: el nuevo padre no puede ser el propio CC ni un descendiente suyo (devuelve 400).
  • Se actualizan path y depth del CC, y se recalculan path/depth para todos los descendientes del subárbol, en la misma transacción.

Vinculación de departamentos

No se expone en PATCH /api/v1/cost-centers/{n}. La vinculación es unidireccional: los departamentos se atan a los CCs mediante los endpoints de departamentos:

  • POST /api/v1/departments con cost_center_code — crea un departamento ya vinculado.
  • PATCH /api/v1/departments/{n} con cost_center_code — vincula o desvincula (con null) un departamento existente.
  • POST /api/v1/departments/{n}/cost-center — genera un CC nuevo a partir de un departamento existente.

Forma de la respuesta

200 OK — misma forma que la respuesta de crear en modo single:

{
  "id": "ck...",
  "cost_center_number": 5,
  "parent_id": null,
  "depth": 0,
  "name": "Centro de costos Ventas",
  "code": "VEN-CC",
  "description": null,
  "is_active": true,
  "sort_order": 0,
  "created_at": "...",
  "updated_at": "..."
}

Errores

StatusCausa
400cost_center_number inválido en la URL; falla de validación del cuerpo; parent_cost_center_code no encontrado; intento de poner el padre en sí mismo o en un descendiente.
404El centro de costos con ese cost_center_number no existe (o fue eliminado) en esta organización.
409Carrera por code duplicado durante la escritura.
Abrir Nominex