Contenido
Cambios de la API pública
Política (ADR 0027): en v1 solo se añade (endpoints, parámetros opcionales, campos, valores de enum, cabeceras). Los clientes deben tolerar campos y valores desconocidos. Un cambio incompatible (quitar o renombrar, cambiar tipo o semántica, cambiar el orden por defecto o el sobre) sale en /v2, y v1 sigue viva al menos 12 meses con las cabeceras Deprecation y Sunset.
v1.5.1 — 2026-10-06
vehiculo_tipogana el valor2R2: camión sencillo o turbo con remolque (2 + 2 ejes). Aparece en/despachosy/citas, y en la dimensión y el filtrovehiculode/metricas. Si tu integración valida la configuración contra una lista cerrada, añádelo (la política dev1pide tolerar valores desconocidos).- El 2R2 no está tarifado por el SICETAC ni lo regula el Decreto 1017: TruckDock no le calcula piso de flete ni tarifa por hora (
sicetac_valor_pisollega ennull, salvo el piso que el despacho ya tuviera con otra configuración o que se haya registrado a mano) y no le genera liquidaciones, ni de origen ni de destino, así que no tiene penalidad de 8 h ni stand-by de 12 h. - Como las configuraciones con «S», un 2R2 se confirma con la placa del remolque (
placa_remolque). - Los campos y tipos no cambian.
v1.5.0 — 2026-09-27
- Liquidación en destino: además del comprobante de origen (el tiempo en el muelle del generador, uno por despacho), el generador emite un comprobante de destino por cada entrega de una salida con transporte contratado (y del nodo
puerto_cliente): el tiempo desde el mayor entre la llegada al destino y la cita de destino vigente hasta «Finalizar operación». Una integración que suponía un comprobante por despacho verá varios: filtra porcontextoo agrupa pordespacho_id. LiquidacionV1ganacontexto(origen|destino),entrega_idyentrega_numero(solo en destino),minutos_previosyrequiere_nueva_cita.cierregana el valorfinalizacion.- En un comprobante de destino
salida_ateinicio_operacion_atvan ennull,fin_operacion_at(yfin_conteo_at) es «Finalizar operación»,cita_ates la cita de destino yespera_minva ennull;total_minson los minutos propios del tramo.cita_idsigue siendo la cita del muelle del despacho (nullenpuerto_cliente, que no usa muelle). - La penalidad del Decreto 1017 y el stand-by se miden sobre el tiempo acumulado del viaje (origen y destinos anteriores, sin contar el tránsito):
minutos_previostrae lo acumulado antes del tramo ypenalidad_valores la marginal del tramo. El comprobante de origen no cambia. - Un comprobante de destino con
requiere_nueva_cita = true(llegó más de 15 min tarde o la entrega no tenía cita) traetotal_min = 0y sigue enborradorhasta que el generador reprograme la cita de destino. /liquidacionesacepta el filtrocontexto. El PDF de un comprobante de destino dice «Liquidación en destino · Entrega E1 · Despacho D-…».- El KPI
costo_transporte_copde/metricassuma también las liquidaciones de destino emitidas o pagadas; por cliente, cada una se atribuye al cliente de su entrega.
v1.4.0 — 2026-09-27
- Corrección de registros de origen y destino: el generador puede corregir la fecha y hora o la ubicación de un evento del muelle, con motivo obligatorio; el registro original se conserva y la API entrega el valor vigente (la última corrección aplicada).
EventoV1ganacorregido(truesi se corrigió) ycorregido_at(la última corrección,nullsi nunca). En un evento corregido,ocurrido_at,diferencia_min,llegada_clasificacion,latitudylongitudtraen el valor corregido;registrado_aty el orden del cursor no cambian./eventosaceptaupdated_since: eventos registrados o corregidos desde ese instante (registrado_at >=ocorregido_at >=).created_sincesigue igual (solo eventos nuevos).- Los tiempos de
/citas,/citas/{id}y de lacitade/despachos/{id}(llegada_at,inicio_efectivo_at,espera_min,operacion_min,tiempo_logistico_min…) se calculan con los valores vigentes. Aplicar una corrección mueveupdated_atde la cita y del despacho:updated_sincelos re-entrega. LiquidacionV1ganacorregida_despues_pago_at: una corrección aplicada después de pagar el comprobante no lo cambia; lo marca para conciliar (guarda la última) y mueve suupdated_at. Una corrección sobre un comprobante emitido lo anula (estado = anulada) y genera uno nuevo en borrador.- Las correcciones de los registros en destino no se publican en esta versión (los registros en destino tampoco).
v1.3.0 — 2026-09-27
- Flujo en destino por entrega:
EntregaV1ganaestado_destino(pendiente→llegada→post_operacion→completado) yDespachoV1ganaestado_destino(pendientesi ninguna entrega tiene llegada,en_curso,completadocuando todas se completaron). Tienen flujo en destino las salidas sin nodo con transporte contratado o flota propia y el nodopuerto_cliente; en los demás (planta_puerto,puerto_planta, recepciones de proveedor, cliente retira) lleganull, igual que en los despachos que ya estaban cerrados (completadoocancelado) al actualizar. - Cada fase registrada en destino mueve el
updated_atde la entrega y, cuando cambia el estado agregado, el del despacho:updated_sincelos re-entrega. - Re-entrega única al actualizar: para llenar los datos nuevos se escribieron las entregas y los despachos vivos de los carriles con flujo en destino (
estado_destino = pendiente) y las entregas cuyo NIT de cliente coincide con un cliente del catálogo (la entrega quedó ligada a ese cliente; el vínculo no se publica). Suupdated_atcambió, así que llegan una vez porupdated_sinceen/entregasy/despachos, aunque lo único visible que cambió esestado_destino(o nada, si solo se ligó la entrega al cliente). - Los registros detallados en destino (fotos, ubicación, quién registró) no se publican en esta versión.
v1.2.0 — 2026-09-27
- Anulación de despachos:
DespachoV1ganaanulado(truesi el generador lo anuló) yanulado_at(instante de la anulación,nullsi no se anuló). Un despacho anulado queda conestado = cancelado; un cancelado corriente traeanulado = false. La anulación mueveupdated_at, así queupdated_sincelo re-entrega. LiquidacionV1ganacierre(salida|anulacion) yfin_conteo_at. Concierre = salida(todas las liquidaciones anteriores),fin_conteo_ates lasalida_at. Concierre = anulacion, el despacho se anuló con el camión ya en planta: se liquida solo el tiempo logístico hasta la anulación (fin_conteo_at),salida_atllega ennully el generador valida el borrador antes de emitirlo./metricas/cumplimiento_pct: la solicitud pendiente de un despacho que se cancela o se anula se cierra comocancelada(antes el vencimiento la marcaba como vencida) y no cuenta en el porcentaje, igual que las pendientes. Las filas ganan la columnacanceladasyvencidasya no incluye esas solicitudes. Las vencidas históricas no se reescriben; las que seguían pendientes en despachos ya cancelados pasaron acanceladas.- Desde esta versión solo se generan liquidaciones de salidas con transporte contratado (y del nodo
puerto_plantacontratado); una salida de flota propia o de cliente retira no genera liquidación.
Nota de datos — número de entrega y número de despacho (sin cambio de contrato)
- Las entregas sin número reciben uno automático
E1,E2… (en el orden del despacho); un número escrito a mano se respeta. Las entregas existentes quedaron numeradas al actualizar y se re-entregan una vez porupdated_sinceen/entregas(suupdated_atcambió). Dentro de un mismo despacho elnumerode la entrega no se repite. - El
numerodel despacho es único en la cuenta. Los pocos repetidos que existían conservaron el más antiguo y los demás recibieron el sufijo-2,-3… (también se re-entregan una vez). - En los despachos
puerto_planta,cita_destino_atde su entrega es la cita en el muelle de la planta (la mismacita_atdel despacho); cuando esa cita cambia, la entrega se re-entrega porupdated_since. - Los campos y tipos no cambian; la versión sigue en 1.1.0.
v1.1.0 — 2026-09-24
- Costos de las operaciones portuarias y aéreas, con el alcance
liquidaciones:read:/operaciones-logisticas,/operaciones-logisticas/{id}(conlineas[]: los despachos terrestres y los servicios de la operación),/servicios-portuariosy/servicios-portuarios/{id}. Filtrosdesde/hasta,tipo(maritimo|aereo) yupdated_since; en servicios tambiénagente_id,operacion_idyasociado.costo_total= fletes pactados (un despacho cancelado aporta 0) + servicios; el tiempo liquidado es informativo (valor_tiempo_liquidado) y no entra al total. DespachoV1gananodo(planta_puerto|puerto_cliente|puerto_planta),puerto_id,puerto_nombre,puerto_tipo(puerto|aeropuerto),operacion_idyoperacion_numero. Un despachopuerto_clienteno tiene cita ni muelle; unopuerto_plantaes una entrada (tipo_operacion = entrada) que sí lleva flete./despachosacepta el filtrooperacion_id.- El alcance
liquidaciones:readcubre ahora también estos costos: las llaves que ya lo tienen los ven sin cambios.
v1.0.0 — 2026-09-22
- Primera versión: llaves por tenant con alcances (
despachos:read,citas:read,liquidaciones:read,metricas:read,metricas_dinero:read). - Recursos:
/me,/despachos,/despachos/{id},/entregas,/entregas/{id},/citas,/citas/{id},/citas/{id}/eventos,/eventos,/muelles,/transportadoras,/liquidaciones,/liquidaciones/{id},/liquidaciones/{id}/pdf,/metricas,/metricas/{key}. - Las métricas
conductores_bloqueados_proximas_citasypendientes_accionno se exponen (datos personales de conductores y mecánica interna de asignación); el aplanado descarta cualquier columna con esos fragmentos. - Guía de integración y este historial publicados en
/v1/guiay/v1/cambios. - Paginación por cursor (
next_cursor/next), sincronización incremental (updated_since,created_since), erroresapplication/problem+json, límites de tasa con cabecerasX-RateLimit-*.