Obtener sus datos

La API de Trackberry

Lea sus envíos, el seguimiento, los días libres, las alertas y los documentos desde sus propios scripts y sistemas, con un token creado en la configuración.

48 min de lectura

Última actualización

Objetivo

Leer los datos de envíos de su organización desde un script, una herramienta de hojas de cálculo, un panel de BI o su propio sistema, sin exportar archivos a mano.

La API es de solo lectura. Devuelve lo que usted ya ve en Trackberry, en formato JSON, para una organización a la vez. Los envíos se siguen creando y modificando por correo electrónico, mediante carga de archivos o en la aplicación.

Para agentes de IA y generadores de código

Toda la API se describe en un único archivo OpenAPI 3.1 que no requiere token: https://trackberry.com/api/v1/openapi.json. Entregue esa URL a su agente de programación, o cárguela en un generador de código o en un cliente de API como Postman o Insomnia, y tendrá cada endpoint, parámetro, valor de enumeración y campo, cada uno con una descripción en lenguaje sencillo de lo que significa para el negocio (por ejemplo, en qué se diferencian effective_eta, eta, original_eta y predicted_eta). Siempre describe la versión más reciente de la API.

Algunos datos útiles antes de generar código:

  • Todos los campos están siempre presentes. Un campo sin valor es null, nunca falta, así que declare tipos que admitan nulos en lugar de tipos opcionales.
  • Ignore los campos y valores de enumeración que no reconozca. Los nuevos se agregan sin crear una versión nueva.
  • Las listas de envíos, alertas y verificaciones se paginan con limit y starting_after; las demás listas no se paginan.
  • El archivo también está enlazado desde llms.txt, para los agentes que empiezan por ahí.

El resto de esta página es el mismo contrato, escrito para personas.

Crear un token

  1. Vaya a Configuración → Tokens de API (/your-slug/settings/api).
  2. Haga clic en Crear token, asígnele un nombre que indique dónde se usará (“Actualización de Power BI”, “Sincronización ERP”) y elija cuándo vence.
  3. Copie el token. Se muestra una sola vez. Trackberry solo guarda una huella del token, así que nadie, ni siquiera nuestro equipo, puede volver a mostrárselo. Si lo pierde, revóquelo y cree uno nuevo.

Un token le pertenece a usted y a una organización. Puede leer todo lo que usted puede leer en esa organización, y nada más. Cualquier miembro puede crear tokens para sí mismo; los administradores y propietarios pueden ver y revocar todos los tokens de la organización.

Puede tener hasta 10 tokens activos por organización. Los tokens vencidos y revocados no cuentan. Si intenta crear el número 11, el formulario muestra “Ya tiene 10 tokens activos para esta organización. Revoque uno primero.” Haga clic en Revocar junto a un token que ya no use y vuelva a intentarlo.

Un token deja de funcionar cuando:

  • vence (en 30 días, 90 días, 1 año o nunca, según lo que elija al crearlo),
  • alguien lo revoca en la configuración,
  • usted sale de la organización o lo retiran de ella.

Los tokens empiezan con tb_ seguido de 40 letras y dígitos. Si usa un escáner de secretos, este patrón los detecta: \btb_[A-Za-z0-9]{40}\b. Trate un token como una contraseña: guárdelo en su gestor de secretos, nunca en una celda de una hoja de cálculo ni en un repositorio público.

Hacer una solicitud

La URL base es https://trackberry.com/api/v1. Envíe el token en el encabezado Authorization:

bash
curl https://trackberry.com/api/v1/organization \
  -H "Authorization: Bearer tb_your_token"
json
{
  "object": "organization",
  "id": "org_42",
  "name": "Fresh Imports Ltd",
  "slug": "fresh-imports",
  "api_version": "2026-10-01",
  "token": { "id": "tok_7", "name": "ERP sync", "scopes": ["read"], "expires_at": "2027-09-29T10:00:00Z", "user_email": "you@freshimports.com" }
}

Las URL no llevan el slug de la organización: el token ya indica qué organización está leyendo.

Versiones

La API está versionada, así que una integración que escriba hoy seguirá funcionando a medida que la API crezca.

  • Cada versión lleva el nombre del día en que se publicó, por ejemplo 2026-10-01.
  • Su organización queda fijada en la versión más reciente la primera vez que llama a la API sin un encabezado Trackberry-Version. Todas las respuestas posteriores usan ese formato hasta que un administrador pase la organización a una versión más nueva desde Configuración → Tokens de API.
  • Para probar una versión más nueva antes de cambiar, envíela en una sola solicitud: Trackberry-Version: 2026-10-01. Eso no cambia la versión fijada.
  • Las respuestas correctas incluyen un encabezado Trackberry-Version con la versión con la que se generaron.

Los campos nuevos, los endpoints nuevos y los valores nuevos en una lista de estados se agregan a todas las versiones, así que su código debe ignorar los campos que no reconozca. Todo lo que elimine un campo, le cambie el nombre o cambie su significado recibe una versión nueva, y el registro de cambios explica qué cambió y cómo adaptarse.

ID, listas y formatos

  • Los ID son cadenas con un prefijo que indica el tipo de objeto: shp_ para envíos, ctr_ contenedores, doc_ documentos, alr_ alertas, chk_ verificaciones, pkl_ listas de empaque, lbl_ etiquetas, org_ organizaciones, tok_ tokens, leg_ tramos de ruta, evt_ eventos de seguimiento, eta_ revisiones de ETA, plt_ pallets y pln_ líneas de empaque. Trátelos como opacos y devuélvalos exactamente como los recibió. Un ID con el prefijo incorrecto, o de otra organización, da un 404 cuando está en la ruta.
  • Las listas llegan como { "object": "list", "data": [...], "has_more": true }, de la más reciente a la más antigua. Pida hasta 100 elementos con limit (25 por defecto). Para obtener la página siguiente, pase el id del último elemento recibido como starting_after, y deténgase cuando has_more sea false. Los elementos que llegan mientras pagina no causan huecos ni repeticiones.
  • Las horas están en UTC en formato ISO 8601 (2026-09-29T14:03:00Z); los días calendario son 2026-09-29. Los filtros aceptan ambos.
  • Los pesos están en kilogramos (net_weight_kg), las temperaturas en grados Celsius (temperature_celsius) y los estados son cadenas en minúsculas (in_transit).
  • Los campos sin valor son null, nunca faltan. Las listas vacías son [].

Endpoints

Todos los endpoints son GET.

Endpoint Devuelve
/organization Su organización, su versión fijada y el token que usó
/shipments Envíos, del más reciente al más antiguo, con filtros (abajo)
/shipments/{id} Un envío: estado, ETA, ruta, naviera o transportista, seguimiento, contenedores, totales de carga, etiquetas, conteo de verificaciones
/shipments/{id}/timeline Tramos de ruta, eventos de seguimiento y todas las revisiones de ETA
/shipments/{id}/free_time Contadores de demora y detención del envío
/shipments/{id}/documents Documentos adjuntos al envío
/shipments/{id}/packing_lists Listas de empaque vigentes con pallets, líneas y totales
/documents/{id} Los detalles de un documento
/documents/{id}/data Los campos que Trackberry extrajo del documento
/documents/{id}/file El archivo original del documento
/free_time/at_risk Contenedores cerca de agotar sus días libres o ya fuera de ellos, los más urgentes primero
/alerts Alertas de monitoreo abiertas; shipment filtra por un envío
/checks Verificaciones fallidas y con advertencia; status y shipment los filtran

Buscar envíos

/shipments acepta estos parámetros, todos opcionales:

Parámetro Ejemplo Significado
q MSCU1234567 Referencia, B/L, AWB, número de contenedor o producto
status in_transit,arrived Uno o más de draft, validated, in_transit, arrived, in_warehouse
labels lbl_3,lbl_9 Envíos que llevan todas estas etiquetas
archived true false (por defecto), true o any
created_after, created_before 2026-09-01 Cuándo se creó el envío
eta_after, eta_before 2026-10-01T00:00:00Z Llegada prevista
limit, starting_after 50, shp_812 Paginación, como se explicó arriba
bash
curl "https://trackberry.com/api/v1/shipments?status=in_transit&eta_before=2026-10-07" \
  -H "Authorization: Bearer tb_your_token"

Errores

Los errores tienen un solo formato, sea cual sea el problema:

json
{ "error": { "type": "invalid_request_error", "code": "invalid_parameter", "message": "limit must be an integer between 1 and 100", "param": "limit" } }
Estado code Qué hacer
400 invalid_parameter Corrija el parámetro indicado en param
400 invalid_version Envíe una versión publicada en Trackberry-Version, o ninguna
401 missing_token Agregue el encabezado Authorization: Bearer
401 invalid_token El token es incorrecto, venció, fue revocado o usted salió de la organización. Cree uno nuevo
403 insufficient_scope El token no puede usar este endpoint
404 resource_missing No existe ese objeto en esta organización, o no existe ese endpoint
429 rate_limited Reduzca el ritmo; espere la cantidad de segundos indicada en Retry-After

Límites

Cada token puede hacer 600 solicitudes cada 5 minutos, más que suficiente para una sincronización que se ejecuta cada pocos minutos. Las solicitudes desde una misma dirección IP tienen un tope de 1,200 cada 5 minutos sumando todos los tokens, y las solicitudes sin ningún token (incluida la descarga de openapi.json) tienen un tope de 30 cada 5 minutos por dirección IP. Cuando alcanza un límite, recibe un 429 con un encabezado Retry-After.

Referencia de endpoints

Toda solicitud acepta el encabezado opcional Trackberry-Version descrito en Versiones. Cada cuerpo de respuesta de abajo muestra todos sus campos: un campo sin valor es null, nunca falta. Las horas están en UTC. Las respuestas correctas llevan un encabezado Trackberry-Version, y también lo lleva un 404 o un 400 causado por un parámetro. Los errores tienen el formato descrito en Errores.

Obtener la organización y el token detrás de la solicitud

GET /organization (operación get_organization)

Úselo primero para comprobar que un token funciona y para saber qué organización lee, en qué versión de la API está fijada esa organización y cuándo vence el token. Es de solo lectura y no consume casi nada.

Sin parámetros.

Ejemplo de respuesta, 200:

json
{
  "object": "organization",
  "id": "org_42",
  "name": "Fresh Imports Ltd",
  "slug": "fresh-imports",
  "api_version": "2026-10-01",
  "token": {
    "id": "tok_7",
    "name": "ERP sync",
    "scopes": [
      "read"
    ],
    "expires_at": "2027-09-29T10:00:00Z",
    "user_email": "you@freshimports.com"
  }
}

Errores: 400, 401, 429.

Listar y buscar envíos

GET /shipments (operación list_shipments)

Úselo para encontrar envíos, sincronizar toda su cartera o responder preguntas como “qué llega la próxima semana” (eta_after y eta_before) o “qué envíos están en tránsito” (status). Del más reciente al más antiguo, con paginación por cursor. Los envíos que aún esperan aprobación nunca aparecen. Los envíos archivados se excluyen salvo que archived indique lo contrario. Cada elemento es el objeto de envío completo, igual que en get_shipment. Todos los parámetros son opcionales y se combinan con AND.

Parámetro En Tipo Descripción
q query cadena Búsqueda de texto libre. No distingue mayúsculas de minúsculas y acepta coincidencias parciales en la referencia del envío, la referencia ERP, la referencia de transporte (número de conocimiento de embarque o de guía aérea), los nombres del remitente y del consignatario (también tolera pequeñas diferencias de ortografía), los números de contenedor y los nombres de producto (entiende los alias comunes). Los espacios y guiones se ignoran al comparar referencias de transporte y números de contenedor, así que MSCU 123456-7 encuentra MSCU1234567. Un valor vacío significa sin búsqueda. Ejemplo: MSCU1234567.
status query lista separada por comas Solo envíos en alguno de estos estados. Un único valor separado por comas. No se admite repetir el parámetro (solo se usa la última aparición) y status[]= da un 400. El estado error existe en los envíos, pero no se puede filtrar por él. Omítalo para obtener todos los estados. Uno de draft, validated, in_transit, arrived, in_warehouse. Ejemplo: in_transit,arrived.
labels query lista separada por comas Solo envíos que llevan todas estas etiquetas (AND, no OR). Un único valor separado por comas con ID de etiqueta (prefijo lbl_), tal como aparecen en labels[].id de los envíos. Un ID mal formado da un 400. Ejemplo: lbl_3,lbl_9.
archived query cadena Si se incluyen los envíos archivados. false (por defecto) lista solo los activos, true solo los archivados y any ambos. Uno de false, true, any. Por defecto false. Ejemplo: any.
created_after query cadena de fecha-hora o fecha Solo envíos creados en este momento o después (inclusive). Fecha-hora ISO 8601, o una fecha sola, que significa la medianoche UTC al inicio de ese día. Ejemplo: 2026-09-01.
created_before query cadena de fecha-hora o fecha Solo envíos creados en este momento o antes (inclusive). Fecha-hora ISO 8601, o una fecha sola, que significa la medianoche UTC al inicio de ese día: created_before=2026-09-30 excluye todo lo creado después de las 00:00 UTC del 30 de septiembre. Para incluir un día completo, pase el día siguiente o una fecha-hora completa. Ejemplo: 2026-09-30T23:59:59Z.
eta_after query cadena de fecha-hora o fecha Solo envíos cuya effective_eta es igual o posterior a este momento (inclusive). Los envíos sin ninguna ETA nunca coinciden cuando se indica eta_after o eta_before. Fecha-hora ISO 8601 o fecha sola (medianoche UTC). Ejemplo: 2026-10-01T00:00:00Z.
eta_before query cadena de fecha-hora o fecha Solo envíos cuya effective_eta es igual o anterior a este momento (inclusive). Mismas reglas que eta_after, incluida la regla de medianoche para una fecha sola. Ejemplo: 2026-10-07.
limit query entero Cantidad máxima de elementos en la página, de 1 a 100. Solo dígitos decimales; cualquier otra cosa (0, 101, 1e1, 0x10, un número negativo) da un 400. Por defecto 25. Ejemplo: 50.
starting_after query cadena Cursor de la página siguiente: el id del último envío de la página anterior. Debe empezar con shp_; cualquier otra cosa da un 400. Ejemplo: shp_812.

Ejemplo de respuesta, 200:

json
{
  "object": "list",
  "has_more": true,
  "data": [
    {
      "object": "shipment",
      "id": "shp_812",
      "reference": "SHIP-20260915-K7QX",
      "erp_reference": "PO-88231",
      "transport_reference": "MEDURU156671",
      "transport_reference_type": "bill_of_lading",
      "transport_type": "ocean",
      "load_type": null,
      "house_bl": null,
      "forwarder_reference": null,
      "forwarder_eta": null,
      "cargo_type": "reefer",
      "temperature_celsius": 2.0,
      "status": "in_transit",
      "archived": false,
      "archived_at": null,
      "validated_at": "2026-09-16T08:30:00Z",
      "approved_at": "2026-09-15T12:05:00Z",
      "origin": {
        "location": "Callao",
        "country": "Peru",
        "timezone": "-05:00"
      },
      "destination": {
        "location": "Rotterdam",
        "country": "Netherlands",
        "timezone": "+02:00"
      },
      "etd": "2026-09-10T18:00:00Z",
      "eta": "2026-10-05T06:00:00Z",
      "effective_eta": "2026-10-05T06:00:00Z",
      "original_eta": "2026-10-02T06:00:00Z",
      "predicted_eta": null,
      "carrier": {
        "name": "MSC",
        "scac": "MSCU"
      },
      "tracking": {
        "state": "available",
        "status": "in_transit",
        "unavailable_reason": null,
        "halted_reason": null,
        "last_tracked_at": "2026-09-29T09:41:00Z",
        "carrier_updated_at": "2026-09-29T06:12:00Z"
      },
      "parties": {
        "consignor": "Agro Andes SAC",
        "consignee": "Fresh Imports Ltd",
        "notify_party": null
      },
      "produce": [
        "Grapes"
      ],
      "organic": false,
      "cargo": {
        "pallets": 20,
        "boxes": 2400,
        "net_weight_kg": 9600.0,
        "gross_weight_kg": 10320.0
      },
      "containers": [
        {
          "object": "container",
          "id": "ctr_1301",
          "number": "MSCU1234567",
          "seal_number": "ES123456",
          "vessel": "MSC AURORA",
          "voyage": "2609W",
          "port_of_loading": "Callao",
          "port_of_discharge": "Rotterdam",
          "etd": "2026-09-10T18:00:00Z",
          "eta": "2026-10-05T06:00:00Z",
          "cargo_type": "reefer",
          "temperature_celsius": 2.0
        }
      ],
      "labels": [
        {
          "object": "label",
          "id": "lbl_3",
          "name": "Priority",
          "color": "red",
          "color_hex": "#ef4444"
        }
      ],
      "checks": {
        "total": 6,
        "passed": 4,
        "failed": 1,
        "warnings": 1,
        "skipped": 0,
        "pending": 0
      },
      "notes": null,
      "created_at": "2026-09-15T12:00:00Z",
      "updated_at": "2026-09-29T09:41:00Z"
    }
  ]
}

Errores: 400, 401, 429.

Obtener un envío

GET /shipments/{id} (operación get_shipment)

Úselo cuando ya tiene el ID de un envío y quiere su estado actual: estado, ETA, ruta, naviera o transportista, salud del seguimiento, partes, producto, totales de carga, contenedores, etiquetas y conteo de verificaciones. Los envíos archivados también se encuentran. Para los eventos de seguimiento y el historial de ETA, use get_shipment_timeline; para la demora y la detención, use get_shipment_free_time.

Parámetro En Tipo Descripción
id path cadena, obligatorio El ID del envío (prefijo shp_). Un ID de otra organización, o con otro prefijo, da un 404. Ejemplo: shp_812.

Ejemplo de respuesta, 200:

json
{
  "object": "shipment",
  "id": "shp_812",
  "reference": "SHIP-20260915-K7QX",
  "erp_reference": "PO-88231",
  "transport_reference": "MEDURU156671",
  "transport_reference_type": "bill_of_lading",
  "transport_type": "ocean",
  "load_type": null,
  "house_bl": null,
  "forwarder_reference": null,
  "forwarder_eta": null,
  "cargo_type": "reefer",
  "temperature_celsius": 2.0,
  "status": "in_transit",
  "archived": false,
  "archived_at": null,
  "validated_at": "2026-09-16T08:30:00Z",
  "approved_at": "2026-09-15T12:05:00Z",
  "origin": {
    "location": "Callao",
    "country": "Peru",
    "timezone": "-05:00"
  },
  "destination": {
    "location": "Rotterdam",
    "country": "Netherlands",
    "timezone": "+02:00"
  },
  "etd": "2026-09-10T18:00:00Z",
  "eta": "2026-10-05T06:00:00Z",
  "effective_eta": "2026-10-05T06:00:00Z",
  "original_eta": "2026-10-02T06:00:00Z",
  "predicted_eta": null,
  "carrier": {
    "name": "MSC",
    "scac": "MSCU"
  },
  "tracking": {
    "state": "available",
    "status": "in_transit",
    "unavailable_reason": null,
    "halted_reason": null,
    "last_tracked_at": "2026-09-29T09:41:00Z",
    "carrier_updated_at": "2026-09-29T06:12:00Z"
  },
  "parties": {
    "consignor": "Agro Andes SAC",
    "consignee": "Fresh Imports Ltd",
    "notify_party": null
  },
  "produce": [
    "Grapes"
  ],
  "organic": false,
  "cargo": {
    "pallets": 20,
    "boxes": 2400,
    "net_weight_kg": 9600.0,
    "gross_weight_kg": 10320.0
  },
  "containers": [
    {
      "object": "container",
      "id": "ctr_1301",
      "number": "MSCU1234567",
      "seal_number": "ES123456",
      "vessel": "MSC AURORA",
      "voyage": "2609W",
      "port_of_loading": "Callao",
      "port_of_discharge": "Rotterdam",
      "etd": "2026-09-10T18:00:00Z",
      "eta": "2026-10-05T06:00:00Z",
      "cargo_type": "reefer",
      "temperature_celsius": 2.0
    }
  ],
  "labels": [
    {
      "object": "label",
      "id": "lbl_3",
      "name": "Priority",
      "color": "red",
      "color_hex": "#ef4444"
    }
  ],
  "checks": {
    "total": 6,
    "passed": 4,
    "failed": 1,
    "warnings": 1,
    "skipped": 0,
    "pending": 0
  },
  "notes": null,
  "created_at": "2026-09-15T12:00:00Z",
  "updated_at": "2026-09-29T09:41:00Z"
}

Errores: 400, 401, 404, 429.

Obtener la ruta, los eventos de seguimiento y las revisiones de ETA de un envío

GET /shipments/{shipment_id}/timeline (operación get_shipment_timeline)

Úselo para responder “dónde está y qué pasó” y “cómo se ha movido la ETA”. Devuelve los tramos de la ruta en orden, todos los eventos de seguimiento (tanto los ocurridos como los estimados, del más antiguo al más reciente) y todas las revisiones registradas de la llegada estimada, de la más antigua a la más reciente. Sin paginación.

Parámetro En Tipo Descripción
shipment_id path cadena, obligatorio El ID del envío (prefijo shp_). Un ID de otra organización, o con otro prefijo, da un 404. Ejemplo: shp_812.

Ejemplo de respuesta, 200:

json
{
  "object": "timeline",
  "shipment_id": "shp_812",
  "legs": [
    {
      "object": "shipment_leg",
      "id": "leg_5501",
      "position": 0,
      "transport_type": "ocean",
      "carrier": "MSC",
      "transport_reference": "MEDURU156671",
      "origin": {
        "location": "Callao",
        "country": "Peru",
        "timezone": "-05:00"
      },
      "destination": {
        "location": "Rotterdam",
        "country": "Netherlands",
        "timezone": "+02:00"
      },
      "etd": "2026-09-10T18:00:00Z",
      "eta": "2026-10-05T06:00:00Z"
    }
  ],
  "events": [
    {
      "object": "tracking_event",
      "id": "evt_90211",
      "milestone": "loaded",
      "actual": true,
      "occurred_at": "2026-09-10T14:20:00Z",
      "occurred_at_local": "2026-09-10T09:20:00-05:00",
      "container_number": "MSCU1234567",
      "leg_index": 1,
      "location": {
        "name": "Callao",
        "code": "PECLL",
        "country_code": "PE"
      },
      "vessel": {
        "name": "MSC AURORA",
        "imo": "9876543",
        "voyage": "2609W"
      },
      "flight_number": null,
      "position": {
        "latitude": -12.05,
        "longitude": -77.15
      }
    },
    {
      "object": "tracking_event",
      "id": "evt_90233",
      "milestone": "arrived",
      "actual": false,
      "occurred_at": "2026-10-05T06:00:00Z",
      "occurred_at_local": "2026-10-05T08:00:00+02:00",
      "container_number": "MSCU1234567",
      "leg_index": 1,
      "location": {
        "name": "Rotterdam",
        "code": "NLRTM",
        "country_code": "NL"
      },
      "vessel": {
        "name": "MSC AURORA",
        "imo": "9876543",
        "voyage": "2609W"
      },
      "flight_number": null,
      "position": {
        "latitude": null,
        "longitude": null
      }
    }
  ],
  "eta_revisions": [
    {
      "object": "eta_revision",
      "id": "eta_4401",
      "observed_at": "2026-09-11T05:00:00Z",
      "previous_eta": null,
      "new_eta": "2026-10-02T06:00:00Z",
      "slip_seconds": null,
      "first_estimate": true,
      "backfilled": false
    },
    {
      "object": "eta_revision",
      "id": "eta_4470",
      "observed_at": "2026-09-25T05:00:00Z",
      "previous_eta": "2026-10-02T06:00:00Z",
      "new_eta": "2026-10-05T06:00:00Z",
      "slip_seconds": 259200.0,
      "first_estimate": false,
      "backfilled": false
    }
  ]
}

Errores: 400, 401, 404, 429.

Obtener los contadores de demora y detención de un envío

GET /shipments/{shipment_id}/free_time (operación get_shipment_free_time)

Úselo para responder “cuántos días libres le quedan a este envío” o “cuánto nos costará la demora”. Devuelve un contador de demora y uno de detención por contenedor, más el contador que más importa en este momento (active_clock). Los contadores solo existen para envíos marítimos, para cada contenedor que tenga eventos de carga, descarga, salida de terminal (gate out) o devolución del vacío, y se quedan en not_started hasta que el contenedor se descarga; para cualquier otro envío, las listas de contadores están vacías y active_clock es null. Los días libres provienen del propio envío, del aviso de llegada más reciente o de las condiciones de la naviera de la organización, en ese orden (vea free_days_source).

Parámetro En Tipo Descripción
shipment_id path cadena, obligatorio El ID del envío (prefijo shp_). Un ID de otra organización, o con otro prefijo, da un 404. Ejemplo: shp_812.

Ejemplo de respuesta, 200:

json
{
  "object": "free_time_summary",
  "shipment_id": "shp_790",
  "shipment_reference": "SHIP-20260901-B2MD",
  "transport_reference": "MAEU123456789",
  "at_risk": true,
  "terms_unknown": false,
  "demurrage": [
    {
      "object": "free_time_clock",
      "kind": "demurrage",
      "container_number": "TGHU7654321",
      "state": "running",
      "free_days": 5,
      "free_days_source": "carrier",
      "free_days_basis": "calendar",
      "started_on": "2026-09-25",
      "ended_on": null,
      "last_free_day": "2026-09-29",
      "days_left": 1,
      "elapsed_days": null,
      "used_days": null,
      "overdue_days": null,
      "carrier": "Maersk"
    }
  ],
  "detention": [
    {
      "object": "free_time_clock",
      "kind": "detention",
      "container_number": "TGHU7654321",
      "state": "not_started",
      "free_days": 10,
      "free_days_source": "carrier",
      "free_days_basis": "calendar",
      "started_on": null,
      "ended_on": null,
      "last_free_day": null,
      "days_left": null,
      "elapsed_days": null,
      "used_days": null,
      "overdue_days": null,
      "carrier": "Maersk"
    }
  ],
  "active_clock": {
    "object": "free_time_clock",
    "kind": "demurrage",
    "container_number": "TGHU7654321",
    "state": "running",
    "free_days": 5,
    "free_days_source": "carrier",
    "free_days_basis": "calendar",
    "started_on": "2026-09-25",
    "ended_on": null,
    "last_free_day": "2026-09-29",
    "days_left": 1,
    "elapsed_days": null,
    "used_days": null,
    "overdue_days": null,
    "carrier": "Maersk"
  }
}

Errores: 400, 401, 404, 429.

Listar los documentos de un envío

GET /shipments/{shipment_id}/documents (operación list_shipment_documents)

Úselo para ver qué documentación tiene Trackberry de un envío (conocimiento de embarque, lista de empaque, factura, certificados) y si cada documento se leyó correctamente. Solo se listan los documentos vigentes: se excluyen las versiones reemplazadas, los adjuntos solo de referencia y los registros internos de división de páginas. Del más antiguo al más reciente, sin paginación. Descargue un archivo con download_document_file cuando su downloadable sea true.

Parámetro En Tipo Descripción
shipment_id path cadena, obligatorio El ID del envío (prefijo shp_). Un ID de otra organización, o con otro prefijo, da un 404. Ejemplo: shp_812.

Ejemplo de respuesta, 200:

json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "document",
      "id": "doc_301",
      "shipment_id": "shp_812",
      "type": "packing_list",
      "filename": "PL_MEDURU156671.xlsx",
      "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      "byte_size": 48211,
      "source": "email_upload",
      "parse_status": "parsed",
      "downloadable": true,
      "page_range": null,
      "data_available": true,
      "created_at": "2026-09-15T12:01:00Z",
      "updated_at": "2026-09-15T12:03:00Z"
    }
  ]
}

Errores: 400, 401, 404, 429.

Listar las listas de empaque de un envío con pallets y líneas

GET /shipments/{shipment_id}/packing_lists (operación list_shipment_packing_lists)

Úselo para leer lo que hay físicamente en el envío: para cada lista de empaque vigente, sus totales declarados, sus pallets y las líneas de producto de cada pallet (producto, variedad, calibre, cantidad de cajas y pesos). Solo se listan las listas de empaque vigentes (no reemplazadas por un documento más nuevo), de la más antigua a la más reciente, sin paginación. Los pallets que no pertenecen a ninguna lista de empaque no se pueden consultar aquí (aunque sí cuentan en cargo.pallets del envío).

Parámetro En Tipo Descripción
shipment_id path cadena, obligatorio El ID del envío (prefijo shp_). Un ID de otra organización, o con otro prefijo, da un 404. Ejemplo: shp_812.

Ejemplo de respuesta, 200:

json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "packing_list",
      "id": "pkl_55",
      "shipment_id": "shp_812",
      "document_id": "doc_301",
      "container_id": "ctr_1301",
      "reference": "PL-2026-0915",
      "declared_box_count": 240,
      "declared_net_weight_kg": 960.0,
      "totals": {
        "pallets": 2,
        "boxes": 240,
        "net_weight_kg": 960.0
      },
      "pallets": [
        {
          "object": "pallet",
          "id": "plt_9001",
          "pallet_number": "PAL0001",
          "container_id": "ctr_1301",
          "lines": [
            {
              "object": "packing_line",
              "id": "pln_70001",
              "line_index": 1,
              "produce_name": "Grapes",
              "produce_type": "Organic",
              "variety": "Sweet Globe",
              "calibre": "L",
              "quality_category": "Class I",
              "pack_format": "4.0 kg carton",
              "label": "Andes Gold",
              "ggn": "4049929123456",
              "box_count": 120,
              "box_weight_kg": 4.0,
              "net_weight_kg": 480.0,
              "gross_weight_kg": 522.0
            }
          ]
        },
        {
          "object": "pallet",
          "id": "plt_9002",
          "pallet_number": "PAL0002",
          "container_id": "ctr_1301",
          "lines": [
            {
              "object": "packing_line",
              "id": "pln_70002",
              "line_index": 1,
              "produce_name": "Grapes",
              "produce_type": "Organic",
              "variety": "Sweet Globe",
              "calibre": "L",
              "quality_category": "Class I",
              "pack_format": "4.0 kg carton",
              "label": "Andes Gold",
              "ggn": "4049929123456",
              "box_count": 120,
              "box_weight_kg": 4.0,
              "net_weight_kg": 480.0,
              "gross_weight_kg": 522.0
            }
          ]
        }
      ]
    }
  ]
}

Errores: 400, 401, 404, 429.

Listar los envíos cuyos días libres de demora están por agotarse o ya se agotaron

GET /free_time/at_risk (operación list_free_time_at_risk)

Úselo para una vista diaria de “qué tengo que retirar hoy”. Devuelve un resumen de días libres por cada envío que tenga un contador de demora en marcha con 2 días o menos restantes (o ya vencido), los más urgentes primero. Solo se consideran los envíos marítimos que no están archivados, que aún no se recibieron en el almacén y que se descargaron en los últimos 45 días. Sin paginación. Los envíos con condiciones de días libres desconocidas nunca aparecen aquí; terms_unknown en get_shipment_free_time indica cuándo faltan las condiciones.

Sin parámetros.

Ejemplo de respuesta, 200:

json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "free_time_summary",
      "shipment_id": "shp_790",
      "shipment_reference": "SHIP-20260901-B2MD",
      "transport_reference": "MAEU123456789",
      "at_risk": true,
      "terms_unknown": false,
      "demurrage": [
        {
          "object": "free_time_clock",
          "kind": "demurrage",
          "container_number": "TGHU7654321",
          "state": "running",
          "free_days": 5,
          "free_days_source": "carrier",
          "free_days_basis": "calendar",
          "started_on": "2026-09-25",
          "ended_on": null,
          "last_free_day": "2026-09-29",
          "days_left": 1,
          "elapsed_days": null,
          "used_days": null,
          "overdue_days": null,
          "carrier": "Maersk"
        }
      ],
      "detention": [
        {
          "object": "free_time_clock",
          "kind": "detention",
          "container_number": "TGHU7654321",
          "state": "not_started",
          "free_days": 10,
          "free_days_source": "carrier",
          "free_days_basis": "calendar",
          "started_on": null,
          "ended_on": null,
          "last_free_day": null,
          "days_left": null,
          "elapsed_days": null,
          "used_days": null,
          "overdue_days": null,
          "carrier": "Maersk"
        }
      ],
      "active_clock": {
        "object": "free_time_clock",
        "kind": "demurrage",
        "container_number": "TGHU7654321",
        "state": "running",
        "free_days": 5,
        "free_days_source": "carrier",
        "free_days_basis": "calendar",
        "started_on": "2026-09-25",
        "ended_on": null,
        "last_free_day": "2026-09-29",
        "days_left": 1,
        "elapsed_days": null,
        "used_days": null,
        "overdue_days": null,
        "carrier": "Maersk"
      }
    }
  ]
}

Errores: 400, 401, 429.

Listar las alertas de monitoreo abiertas

GET /alerts (operación list_alerts)

Úselo para encontrar los envíos que, según el monitoreo de Trackberry, tienen un problema en este momento: seguimiento sin novedades, ETA vencida o atrasada, carga detenida en la terminal y casos similares. Solo se listan las alertas abiertas de los tipos que los clientes pueden ver, de todos los envíos (incluidos los archivados), de la más reciente a la más antigua, con paginación por cursor. Pase shipment para ver un solo envío.

Parámetro En Tipo Descripción
shipment query cadena Solo las alertas de este envío. Debe empezar con shp_; cualquier otra cosa da un 400. Un ID bien formado que no pertenece a esta organización simplemente no coincide con nada. Ejemplo: shp_812.
limit query entero Cantidad máxima de elementos en la página, de 1 a 100. Solo dígitos decimales; cualquier otra cosa (0, 101, 1e1, 0x10, un número negativo) da un 400. Por defecto 25. Ejemplo: 50.
starting_after query cadena Cursor de la página siguiente: el id de la última alerta de la página anterior. Debe empezar con alr_; cualquier otra cosa da un 400. Ejemplo: alr_2210.

Ejemplo de respuesta, 200:

json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "monitoring_alert",
      "id": "alr_2210",
      "shipment_id": "shp_812",
      "shipment_reference": "SHIP-20260915-K7QX",
      "key": "eta_drift",
      "group": "schedule",
      "severity": "warning",
      "title": "ETA has slipped",
      "summary": "ETA has moved 3 days later than first quoted (2026-10-02 → 2026-10-05).",
      "since": "2026-10-02T06:00:00Z",
      "first_detected_at": "2026-09-25T03:00:00Z",
      "last_detected_at": "2026-09-29T03:00:00Z",
      "resolved_at": null
    }
  ]
}

Errores: 400, 401, 429.

Listar las verificaciones de todos los envíos

GET /checks (operación list_checks)

Úselo para encontrar problemas de documentación y de datos: documentos faltantes, totales de la lista de empaque que no coinciden con los declarados, números de contenedor no válidos y casos similares. Por defecto solo se listan las verificaciones fallidas o con advertencia; pase status para ver otros. De todos los envíos (incluidos los archivados), del más reciente al más antiguo, con paginación por cursor. Pase shipment para ver un solo envío.

Parámetro En Tipo Descripción
status query lista separada por comas Solo las verificaciones en alguno de estos estados. Un único valor separado por comas. Vale failed,warning cuando se omite o está vacío. Un estado desconocido da un 400. Uno de pending, passed, failed, skipped, warning. Por defecto failed,warning. Ejemplo: failed,warning.
shipment query cadena Solo las verificaciones de este envío. Debe empezar con shp_; cualquier otra cosa da un 400. Un ID bien formado que no pertenece a esta organización simplemente no coincide con nada. Ejemplo: shp_812.
limit query entero Cantidad máxima de elementos en la página, de 1 a 100. Solo dígitos decimales; cualquier otra cosa (0, 101, 1e1, 0x10, un número negativo) da un 400. Por defecto 25. Ejemplo: 50.
starting_after query cadena Cursor de la página siguiente: el id de la última verificación de la página anterior. Debe empezar con chk_; cualquier otra cosa da un 400. Ejemplo: chk_9001.

Ejemplo de respuesta, 200:

json
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "shipment_check",
      "id": "chk_9001",
      "shipment_id": "shp_812",
      "shipment_reference": "SHIP-20260915-K7QX",
      "key": "has_commercial_invoice",
      "category": "documents",
      "status": "warning",
      "title": "Commercial invoice",
      "message": "No commercial invoice has been received for this shipment yet.",
      "ran_at": "2026-09-29T03:00:00Z"
    }
  ]
}

Errores: 400, 401, 429.

Obtener un documento

GET /documents/{id} (operación get_document)

Úselo para describir un documento que encontró con list_shipment_documents: su tipo, nombre de archivo, tamaño, origen, estado de procesamiento y si hay datos extraídos disponibles. download_document_file devuelve el archivo en sí. Solo se encuentran los documentos vigentes; un documento reemplazado o solo de referencia da un 404.

Parámetro En Tipo Descripción
id path cadena, obligatorio El ID del documento (prefijo doc_). Un ID de otra organización, con otro prefijo o de un documento que no está vigente da un 404. Ejemplo: doc_301.

Ejemplo de respuesta, 200:

json
{
  "object": "document",
  "id": "doc_301",
  "shipment_id": "shp_812",
  "type": "packing_list",
  "filename": "PL_MEDURU156671.xlsx",
  "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  "byte_size": 48211,
  "source": "email_upload",
  "parse_status": "parsed",
  "downloadable": true,
  "page_range": null,
  "data_available": true,
  "created_at": "2026-09-15T12:01:00Z",
  "updated_at": "2026-09-15T12:03:00Z"
}

Errores: 400, 401, 404, 429.

Descargar el archivo de un documento

GET /documents/{id}/file (operación download_document_file)

Úselo para obtener el archivo original de un documento (el PDF, el escaneo, la hoja de cálculo o la imagen que se cargó o se envió por correo electrónico), para archivarlo o para leer lo que la extracción no cubrió. El cuerpo es el archivo, enviado como adjunto con su propio Content-Type y el nombre de archivo en Content-Disposition. Solo un documento cuyo downloadable es true tiene archivo: un documento sin archivo, o cuyo archivo no ha pasado el análisis de seguridad (porque aún se está analizando o fue bloqueado), da un 404.

Parámetro En Tipo Descripción
id path cadena, obligatorio El ID del documento (prefijo doc_). Un ID de otra organización, con otro prefijo o de un documento que no está vigente da un 404. Ejemplo: doc_301.
bash
curl -H "Authorization: Bearer tb_..." -OJ https://trackberry.com/api/v1/documents/doc_301/file

Errores: 400, 401, 404, 429.

Obtener los datos que Trackberry extrajo de un documento

GET /documents/{id}/data (operación get_document_data)

Úselo para leer el contenido estructurado que Trackberry extrajo de un documento (las líneas de una lista de empaque, los totales de una factura, las partes y los días de salida y llegada de un conocimiento de embarque, los números de un certificado). Revise primero data_available en el documento, o acepte un resultado vacío: cuando no se extrajo nada, o el tipo de documento no tiene un esquema estructurado, la respuesta sigue siendo un 200 con schema en null y fields como un objeto vacío.

Parámetro En Tipo Descripción
id path cadena, obligatorio El ID del documento (prefijo doc_). Un ID de otra organización, con otro prefijo o de un documento que no está vigente da un 404. Ejemplo: doc_301.

Ejemplo de respuesta, 200:

json
{
  "object": "document_data",
  "document_id": "doc_301",
  "type": "packing_list",
  "schema": "packing_list",
  "fields": {
    "packing_list_number": "PL-2026-0915",
    "exporter_name": "Agro Andes SAC",
    "exporter_port": "Callao",
    "exporter_country": "Peru",
    "importer_name": "Fresh Imports Ltd",
    "importer_country": "Netherlands",
    "total_net_weight": 960.0,
    "total_boxes": 240,
    "diagram_pallet_numbers": [],
    "container_number": "MSCU1234567",
    "line_items": [
      {
        "pallet_number": "PAL0001",
        "produce_name": "Grapes",
        "variety": "Sweet Globe",
        "size_calibre": "L",
        "quality_category": "Class I",
        "format": "4.0 kg carton",
        "label": "Andes Gold",
        "produce_type": "Organic",
        "ggn": "4049929123456",
        "number_of_boxes": 120,
        "net_weight_kg": 480.0,
        "box_weight_kg": 4.0,
        "gross_weight_kg": 522.0
      }
    ]
  }
}

Errores: 400, 401, 404, 429.

Obtener esta descripción OpenAPI

GET /openapi.json (operación get_openapi_document)

Úselo para cargar la descripción de la API, legible por máquinas, en un agente, un generador de código o una herramienta de documentación. Es pública: no necesita token. Describe la versión más reciente de la API y no depende de la organización ni de Trackberry-Version. Cuenta para el límite por IP de las solicitudes sin token. Se puede almacenar en caché durante una hora.

Sin parámetros.

Devuelve 200 con un documento OpenAPI 3.1 en JSON (es el archivo a partir del cual se genera esta referencia).

Errores: 429.

Objetos

Los objetos que devuelve la API llevan un campo object con el nombre de su tipo, y la mayoría tiene un id. Los objetos anidados se muestran con nombres de campo separados por puntos. La columna de tipo dice o null cuando un campo puede ser null. Place es un componente que se usa dentro de otros objetos; List y Error son los envoltorios de las listas y los errores.

Objeto Error

El único cuerpo de error que usan todos los fallos.

Campo Tipo Descripción
error objeto Los detalles de lo que salió mal.
error.type cadena La clase general del error. Uno de authentication_error, permission_error, not_found_error, invalid_request_error, rate_limit_error.
error.code cadena Un motivo estable y legible por máquinas. Base su lógica en este campo. Uno de missing_token, invalid_token, insufficient_scope, resource_missing, invalid_parameter, invalid_version, rate_limited.
error.message cadena Una frase en inglés para personas. No la analice con código.
error.param cadena o null El parámetro de consulta o el encabezado que causa el error, o null cuando el error no se refiere a ninguno.

Objeto List

El envoltorio que devuelve todo endpoint de lista.

Campo Tipo Descripción
object cadena Siempre list.
data arreglo de objetos Los elementos de esta página, en el orden que documenta el endpoint. Cada elemento es un objeto del tipo que devuelve el endpoint.
has_more booleano True cuando hay más elementos después de esta página. Pase el id del último elemento como starting_after para obtenerlos. Siempre false en las listas sin paginación.

Objeto Organization

La organización que lee un token, con el token que hizo la solicitud.

Campo Tipo Descripción
object cadena Siempre organization.
id cadena El ID de la organización.
name cadena El nombre visible de la organización.
slug cadena El slug de URL de la organización en la aplicación de Trackberry.
api_version cadena o null La versión de la API en la que está fijada la organización. Es null solo si la organización todavía no ha hecho una solicitud sin encabezado Trackberry-Version.
token objeto El token de API que autenticó esta solicitud.
token.id cadena El ID del token (no el secreto).
token.name cadena El nombre que se le dio al token al crearlo.
token.scopes arreglo de cadenas Lo que puede hacer el token. Solo existe read. Uno de read.
token.expires_at cadena de fecha-hora o null Cuándo deja de funcionar el token, o null si nunca vence.
token.user_email cadena El correo electrónico del usuario al que pertenece el token.

Objeto Shipment

Una partida de mercancía: un conocimiento de embarque o una guía aérea, sus contenedores y todo lo que Trackberry sabe sobre dónde está y qué contiene.

Campo Tipo Descripción
object cadena Siempre shipment.
id cadena El ID del envío.
reference cadena La referencia de Trackberry para el envío, única dentro de la organización. Se genera automáticamente (como SHIP-20260915-K7QX) salvo que una persona haya definido una.
erp_reference cadena o null La referencia propia de la organización para el envío (por ejemplo, un número de orden de compra), cuando se registró una.
transport_reference cadena o null El número con el que se rastrea la carga, tomado del documento de transporte. Un número de conocimiento de embarque marítimo, de guía aérea o de contenedor. Las referencias marítimas y terrestres se pasan a mayúsculas y se les quitan espacios y guiones; las guías aéreas usan el formato canónico con prefijo de 3 dígitos.
transport_reference_type cadena o null Qué tipo de número es transport_reference (un número de contenedor, una guía aérea o un conocimiento de embarque), o null cuando está vacío o no corresponde a ninguno. Uno de container, awb, bill_of_lading.
transport_type cadena o null Cómo viaja la carga. Solo los envíos marítimos y aéreos se rastrean con datos de la naviera o el transportista. Null cuando aún no se conoce. Uno de ocean, air, road.
load_type cadena o null Si un envío marítimo ocupa su propio contenedor (fcl) o lo comparte con otra carga (lcl). Un envío LCL viaja en el contenedor de consolidación del agente de carga, así que no tiene días libres propios y su house_bl nunca se usa para el seguimiento con la naviera. Null cuando no está definido, y en envíos aéreos y terrestres. Uno de fcl, lcl.
house_bl cadena o null El conocimiento de embarque house del agente de carga para un envío LCL, tal como lo escribió el agente. Las navieras no pueden resolverlo, así que nunca es la transport_reference.
forwarder_reference cadena o null La referencia propia de trabajo o expediente del agente de carga para el envío, cuando se registró una.
forwarder_eta cadena de fecha o null La fecha en que, según el agente de carga, la carga está disponible, que en LCL es posterior a eta porque primero se descarga el contenedor en una estación de carga consolidada (CFS). No cambia eta ni effective_eta.
cargo_type cadena o null El régimen de temperatura de la carga. Null cuando aún no se conoce. Uno de ambient, reefer, frozen.
temperature_celsius número o null La temperatura de consigna en grados Celsius para carga refrigerada, cuando se conoce.
status cadena En qué etapa de su ciclo de vida está el envío. draft son datos leídos de documentos que nadie ha confirmado; validated significa que una persona o las verificaciones automáticas confirmaron los datos clave; in_transit significa que la carga está en movimiento; arrived significa que llegó al puerto o aeropuerto; in_warehouse significa que se recibió en el almacén; error significa que el procesamiento falló (poco usado). Los envíos que esperan aprobación no se exponen. Uno de draft, validated, in_transit, arrived, error, in_warehouse.
archived booleano True cuando el envío se archivó. Los envíos archivados no aparecen en list_shipments salvo que archived los pida.
archived_at cadena de fecha-hora o null Cuándo se archivó el envío, o null si no está archivado.
validated_at cadena de fecha-hora o null Cuándo se confirmaron por primera vez los datos clave. Se conserva después de que el estado pase a in_transit, arrived o in_warehouse. Null para un envío que nunca se validó.
approved_at cadena de fecha-hora o null Cuándo se aprobó el envío, ya sea por una persona o automáticamente porque llegó de un remitente de confianza. Null cuando no se registró ninguna aprobación.
origin objeto Place Un origen o un destino.
destination objeto Place Un origen o un destino.
etd cadena de fecha-hora o null Hora estimada (y luego real) de salida, según los documentos o la naviera.
eta cadena de fecha-hora o null La hora estimada de llegada al destino según lo último que indicaron los documentos o la naviera. Es la cifra propia de la naviera y cambia cada vez que la naviera la modifica. Null cuando se desconoce.
effective_eta cadena de fecha-hora o null La hora de llegada con la que conviene planificar. Es eta cuando está definida; si no, la eta más temprana entre los contenedores del envío; si no, null. Los filtros eta_after y eta_before de list_shipments comparan con este valor.
original_eta cadena de fecha-hora o null La primera estimación de llegada que Trackberry registró para el destino documentado. Las estimaciones posteriores no la sobrescriben, así que eta menos original_eta es el atraso total. Null cuando nunca se registró una estimación.
predicted_eta cadena de fecha-hora o null Una predicción de llegada independiente al puerto de descarga, de la fuente de datos de seguimiento, basada en los movimientos del buque, la congestión portuaria y el clima. Solo algunas fuentes la publican, y solo cuando faltan unos tres días o menos para la llegada. Es independiente de eta (la cifra de la naviera) y nunca la sobrescribe. Null cuando no hay ninguna.
carrier objeto La naviera o aerolínea.
carrier.name cadena o null El nombre de la naviera o el transportista en su grafía canónica, según los datos de seguimiento. Null hasta que el seguimiento lo identifique.
carrier.scac cadena o null El código SCAC (Standard Carrier Alpha Code) del transportista, cuando se conoce.
tracking objeto Salud del seguimiento con la naviera o el transportista para este envío.
tracking.state cadena Lo que Trackberry sabe del seguimiento. available significa que hay datos de seguimiento; unavailable significa que Trackberry los pidió y no puede obtenerlos (vea unavailable_reason); pending significa que se solicitó el seguimiento y todavía no ha llegado nada; not_started significa que hay una referencia, pero no se ha solicitado el seguimiento; awaiting_reference significa que podría rastrearse en cuanto se conozca un número de conocimiento de embarque, de contenedor o de guía aérea; none significa que el seguimiento no aplica (por ejemplo, transporte terrestre). Uno de available, unavailable, pending, not_started, awaiting_reference, none.
tracking.status cadena o null El último estado informado por la naviera o el transportista, con las palabras de la propia fuente de datos de seguimiento (por ejemplo in_transit, arrived, not_found). No es una lista cerrada. Null cuando no hay ninguno.
tracking.unavailable_reason cadena o null Por qué el seguimiento no pudo producir datos, cuando no pudo. unsupported_carrier significa que la naviera o el tipo de referencia no se rastrea; invalid_reference significa que el número no es utilizable; not_found significa que la naviera aún no tiene registro de él; provider_error significa que la consulta no devolvió nada utilizable; past_voyage significa que el viaje terminó mucho antes de que llegaran los documentos, por lo que no se inició el seguimiento. Null en los demás casos. Uno de unsupported_carrier, invalid_reference, not_found, provider_error, past_voyage.
tracking.halted_reason cadena o null Se define cuando la fuente de seguimiento informó que dejó de producir datos. errored significa que su conexión con la naviera falló para esta referencia; dropped significa que retiró el envío del seguimiento. Se borra automáticamente cuando los datos vuelven a llegar. Null en los demás casos. Uno de errored, dropped.
tracking.last_tracked_at cadena de fecha-hora o null Cuándo actualizó Trackberry por última vez los datos de seguimiento de este envío. Null si nunca lo hizo.
tracking.carrier_updated_at cadena de fecha-hora o null Cuándo publicó la naviera por última vez datos nuevos de este envío, a diferencia de cuándo consultó Trackberry por última vez. Null cuando la fuente no lo indica.
parties objeto Las empresas mencionadas en el documento de transporte.
parties.consignor cadena o null El remitente de la mercancía (embarcador o proveedor).
parties.consignee cadena o null El receptor de la mercancía indicado en el documento de transporte.
parties.notify_party cadena o null La parte a la que la naviera notifica la llegada, cuando es distinta del consignatario.
produce arreglo de cadenas Los distintos nombres de producto del envío, tomados de sus líneas de empaque, o de la entrada en borrador cuando todavía no se ha leído ninguna lista de empaque.
organic booleano True cuando al menos una línea de empaque visible está marcada como orgánica.
cargo objeto Totales de todos los pallets del envío. Cero cuando no se ha leído ninguna lista de empaque.
cargo.pallets entero Cantidad de pallets registrados para el envío.
cargo.boxes entero Cantidad total de cajas en las líneas de empaque visibles.
cargo.net_weight_kg número Peso neto total del producto en kilogramos.
cargo.gross_weight_kg número Peso bruto total, producto más embalaje, en kilogramos.
containers arreglo de objetos Container Los contenedores del envío, del más antiguo al más reciente.
labels arreglo de objetos Label Las etiquetas que la organización asignó al envío, ordenadas por nombre.
checks objeto Cuántas verificaciones tiene el envío en cada estado. Use list_checks para obtener las verificaciones en sí.
checks.total entero Todas las verificaciones del envío.
checks.passed entero Verificaciones aprobadas.
checks.failed entero Verificaciones fallidas, es decir, algo está mal.
checks.warnings entero Verificaciones aprobadas con una advertencia.
checks.skipped entero Verificaciones omitidas porque no se cumplían sus condiciones previas.
checks.pending entero Verificaciones que todavía no se han ejecutado.
notes cadena o null Notas de texto libre sobre el envío.
created_at cadena de fecha-hora Cuándo se creó el envío en Trackberry.
updated_at cadena de fecha-hora Cuándo cambió por última vez el registro del envío.

Objeto Place

Un origen o un destino.

Campo Tipo Descripción
location cadena o null La ciudad o el puerto, normalizado (por ejemplo Rotterdam), sin el país.
country cadena o null El nombre del país en inglés (por ejemplo Netherlands).
timezone cadena o null La diferencia horaria del lugar respecto de UTC, como +HH:MM o -HH:MM (por ejemplo +02:00), obtenida de los datos de la naviera. No es un nombre de zona horaria IANA.

Objeto Container

Un contenedor de un envío.

Campo Tipo Descripción
object cadena Siempre container.
id cadena El ID del contenedor.
number cadena o null El número de contenedor ISO 6346 (4 letras y 7 dígitos, como MSCU1234567).
seal_number cadena o null El número del precinto de la puerta del contenedor.
vessel cadena o null El nombre del buque que indican los documentos para este contenedor.
voyage cadena o null El número de viaje que indican los documentos para este contenedor.
port_of_loading cadena o null Dónde se carga el contenedor, tal como figura en los documentos.
port_of_discharge cadena o null Dónde se descarga el contenedor, tal como figura en los documentos.
etd cadena de fecha-hora o null Hora estimada de salida de este contenedor.
eta cadena de fecha-hora o null Hora estimada de llegada de este contenedor. Cuando el envío no tiene eta propia, la eta más temprana de sus contenedores pasa a ser su effective_eta.
cargo_type cadena o null El régimen de temperatura de este contenedor. Uno de ambient, reefer, frozen.
temperature_celsius número o null La temperatura de consigna del contenedor en grados Celsius.

Objeto Label

Una etiqueta de color que la organización usa para agrupar envíos.

Campo Tipo Descripción
object cadena Siempre label.
id cadena El ID de la etiqueta. Úselo en el filtro labels de list_shipments.
name cadena El nombre de la etiqueta, único dentro de la organización.
color cadena o null El nombre del color de la paleta. Uno de gray, red, orange, amber, green, teal, blue, indigo, purple, pink.
color_hex cadena El color como código hexadecimal, por ejemplo #ef4444.

Objeto Timeline

La ruta, los eventos de seguimiento y el historial de ETA de un envío.

Campo Tipo Descripción
object cadena Siempre timeline.
shipment_id cadena El envío al que pertenece esta línea de tiempo.
legs arreglo de objetos ShipmentLeg Los tramos de la ruta en orden de viaje.
events arreglo de objetos TrackingEvent Eventos de seguimiento, del más antiguo al más reciente. Los eventos sin hora se ubican según el orden habitual de los hitos.
eta_revisions arreglo de objetos EtaRevision Todos los cambios registrados de la llegada estimada, del más antiguo al más reciente.

Objeto ShipmentLeg

Un tramo de la ruta planificada de un envío, por ejemplo un tramo marítimo seguido de un tramo terrestre.

Campo Tipo Descripción
object cadena Siempre shipment_leg.
id cadena El ID del tramo.
position entero El orden del tramo en la ruta, empezando en cero. No es lo mismo que leg_index en los eventos de seguimiento.
transport_type cadena o null Cómo viaja la carga en este tramo. Uno de ocean, air, road.
carrier cadena o null La naviera o el transportista de este tramo, tal como figura en el documento de transporte.
transport_reference cadena o null El número de conocimiento de embarque, guía aérea o carta de porte de este tramo.
origin objeto Place Un origen o un destino.
destination objeto Place Un origen o un destino.
etd cadena de fecha-hora o null Hora de salida de este tramo, según el documento de transporte.
eta cadena de fecha-hora o null Hora de llegada de este tramo, según el documento de transporte.

Objeto TrackingEvent

Un hito del recorrido de la carga, real o estimado.

Campo Tipo Descripción
object cadena Siempre tracking_event.
id cadena El ID del evento.
milestone cadena Qué pasó, según el vocabulario de hitos propio de Trackberry (nunca el código original de una naviera). Hitos de la carga en su orden habitual: booked, received_from_shipper (aéreo), empty_pickup, stuffed, gate_in, manifested (aéreo), loaded, departed, transshipment_arrival, transshipment_discharge, transferred (aéreo), transshipment_load, transshipment_departure, arrived, discharged, customs_cleared, notified (aéreo), available_for_pickup, gate_out, cfs_released (LCL, cuando el agente de carga libera la carga en su estación de carga; solo se conoce el día, así que occurred_at es las 00:00Z de ese día), delivered, stripped, empty_return. Hitos del ciclo de vida: eta_revised, exception, untracked. discharged (descargado del buque) y gate_out (salió de la terminal) inician y detienen el contador de demora. Uno de booked, received_from_shipper, empty_pickup, stuffed, gate_in, manifested, loaded, departed, transshipment_arrival, transshipment_discharge, transferred, transshipment_load, transshipment_departure, arrived, discharged, customs_cleared, notified, available_for_pickup, gate_out, cfs_released, delivered, stripped, empty_return, eta_revised, exception, untracked.
actual booleano True cuando el evento ya ocurrió; false cuando es una estimación de un hito futuro o no confirmado.
occurred_at cadena de fecha-hora o null Cuándo ocurrió el evento (o cuándo se espera), en UTC. Null cuando la fuente no indicó la hora.
occurred_at_local cadena de fecha-hora o null El mismo instante escrito con la diferencia horaria respecto de UTC del lugar donde ocurrió (por ejemplo 2026-09-10T09:20:00-05:00), cuando la fuente informó esa diferencia; si no, la hora UTC. Null cuando occurred_at es null.
container_number cadena o null El contenedor al que se refiere el evento. Null para los eventos que se refieren a todo el envío.
leg_index entero o null El número, empezando en uno, del tramo en buque o vuelo del recorrido al que pertenece el evento, contado a partir de la secuencia de eventos de la naviera (1 es el primer tramo, 2 viene después de un transbordo). No es la position de un tramo del envío. Null cuando la fuente no lo indica.
location objeto Dónde ocurrió el evento.
location.name cadena o null El nombre del lugar, como un puerto o un aeropuerto.
location.code cadena o null El código de ubicación tal como se informó, un UN/LOCODE para los puertos (por ejemplo NLRTM) cuando está disponible.
location.country_code cadena o null El código de país ISO 3166-1 alfa-2.
vessel objeto El buque involucrado, para eventos marítimos.
vessel.name cadena o null El nombre del buque.
vessel.imo cadena o null El número IMO del buque.
vessel.voyage cadena o null El número de viaje.
flight_number cadena o null El vuelo, para eventos aéreos.
position objeto Coordenadas del evento, cuando la fuente las indicó.
position.latitude número o null Latitud en grados decimales.
position.longitude número o null Longitud en grados decimales.

Objeto EtaRevision

Un cambio observado en la llegada estimada de un envío. Las revisiones solo se registran cuando la ETA se mueve 5 minutos o más.

Campo Tipo Descripción
object cadena Siempre eta_revision.
id cadena El ID de la revisión.
observed_at cadena de fecha-hora Cuándo vio Trackberry la nueva estimación. En las revisiones backfilled es solo la hora de la última actualización, no el momento en que la naviera cambió de opinión.
previous_eta cadena de fecha-hora o null La estimación anterior a esta revisión. Null para la primera estimación conocida.
new_eta cadena de fecha-hora La estimación posterior a esta revisión.
slip_seconds número o null Cuánto se atrasó la llegada, en segundos (new_eta menos previous_eta). Negativo cuando la naviera adelantó la llegada. Null para la primera estimación, porque no hay nada con qué comparar.
first_estimate booleano True para la estimación inicial, cuando no había una estimación anterior.
backfilled booleano True cuando la revisión se reconstruyó a partir de datos más antiguos, así que observed_at no es el momento en que ocurrió el cambio. Exclúyalas al medir qué tan rápido se atrasan los itinerarios.

Objeto FreeTimeSummary

La situación de demora y detención de un envío. La demora es el cargo por dejar un contenedor en la terminal después de sus días libres; la detención es el cargo por quedarse con el contenedor vacío después de sus días libres. Solo los envíos marítimos tienen contadores.

Campo Tipo Descripción
object cadena Siempre free_time_summary.
shipment_id cadena El ID del envío.
shipment_reference cadena La referencia de Trackberry del envío.
transport_reference cadena o null El número de conocimiento de embarque, guía aérea o contenedor del envío.
at_risk booleano True cuando el contador de demora está en marcha con días libres conocidos y quedan 2 días o menos (o ya está vencido). Los envíos con condiciones desconocidas nunca están en riesgo.
terms_unknown booleano True cuando no se conocen los días libres de demora o detención, es decir, ni el envío, ni un aviso de llegada, ni las condiciones de la naviera de la organización los indican. Defina las condiciones en Trackberry para obtener cuentas regresivas.
demurrage arreglo de objetos FreeTimeClock Un contador de demora por contenedor. Vacío para envíos que no son marítimos o que no tienen eventos de seguimiento para ello.
detention arreglo de objetos FreeTimeClock Un contador de detención por contenedor, en el mismo orden que demurrage. Vacío para envíos que no son marítimos.
active_clock objeto FreeTimeClock o null El contador que conviene mirar primero. El contador de demora más urgente mientras la demora no haya terminado (incluido uno en not_started); una vez que la demora se detuvo o se dio por perdida, el contador de detención más urgente si está en marcha. Null cuando no hay contadores o no queda nada que vigilar.

Objeto FreeTimeClock

Un contador de demora o de detención para un contenedor. La demora empieza con la descarga del contenedor y se detiene en la salida de la terminal (gate out) o, si no la hay, con la devolución del contenedor vacío. La detención empieza en la salida de la terminal y se detiene con la devolución del contenedor vacío. Los días se cuentan según el calendario local del puerto. Este objeto no tiene id.

Campo Tipo Descripción
object cadena Siempre free_time_clock.
kind cadena Qué cargo mide este contador. Uno de demurrage, detention.
container_number cadena o null El contenedor al que corresponde el contador. Null cuando los eventos de seguimiento no traen número de contenedor.
state cadena not_started significa que el contador todavía no tiene desde dónde contar; running significa que está contando contra días libres conocidos; running_unknown_terms significa que está contando, pero los días libres se desconocen (solo se completa elapsed_days); stopped significa que terminó (vea ended_on, used_days, overdue_days); end_not_reported (demora) y return_not_reported (detención) significan que el contador dejó de esperar el evento de cierre porque el contenedor se archivó o se recibió en el almacén, o porque pasaron 30 días sin él. Uno de not_started, running, running_unknown_terms, stopped, end_not_reported, return_not_reported.
free_days entero o null La cantidad de días libres que aplican. Null cuando se desconoce.
free_days_source cadena o null De dónde proviene free_days, en orden de prioridad. shipment significa que se definió en el propio envío; notice significa que se leyó del aviso de llegada más reciente; carrier significa las condiciones negociadas por la organización con esta naviera. Null cuando free_days se desconoce. Uno de shipment, notice, carrier.
free_days_basis cadena o null Cómo se cuentan los días. calendar cuenta todos los días; working omite los fines de semana y los feriados del país. Null cuando no hay condiciones conocidas. Uno de calendar, working.
started_on cadena de fecha o null El día, en hora local del puerto, en que empezó el contador (el día de descarga para la demora, el día de salida de la terminal para la detención). Null mientras está en not_started.
ended_on cadena de fecha o null El día, en hora local del puerto, en que terminó el contador. Null salvo en stopped.
last_free_day cadena de fecha o null El último día que todavía es libre. Null salvo en running.
days_left entero o null Días libres que quedan después de hoy, contados según free_days_basis. 0 significa que hoy es el último día libre. Negativo una vez vencido (como mínimo -1). Null salvo en running.
elapsed_days entero o null Días calendario desde el inicio, contando el día de inicio. Solo se define en running_unknown_terms.
used_days entero o null Cuántos días se usaron entre el inicio y el fin, contando ambos. Solo se define en stopped.
overdue_days entero o null Cuántos días se usaron más allá de los días libres. 0 cuando el contador se detuvo a tiempo. Solo se define en stopped y cuando se conocen los días libres.
carrier cadena o null La naviera a la que corresponden las condiciones, como etiqueta.

Objeto MonitoringAlert

Un problema que el monitoreo de Trackberry encontró en un envío y que sigue abierto. Una alerta se abre cuando empieza un problema, puede pasar de warning a critical y desaparece de la API una vez resuelta.

Campo Tipo Descripción
object cadena Siempre monitoring_alert.
id cadena El ID de la alerta.
shipment_id cadena El envío al que se refiere la alerta.
shipment_reference cadena La referencia de Trackberry de ese envío.
key cadena Qué monitor la generó. tracking_halted: la fuente de seguimiento informó que dejó de producir datos. tracking_blind: la fuente de seguimiento dejó de llegar a la naviera. tracking_stale: la naviera no ha publicado nada nuevo en más tiempo de lo habitual. tracking_silent: registrado para seguimiento, pero la naviera nunca informó nada. tracking_not_found: la fuente de seguimiento no reconoce la referencia. overdue_eta: la ETA pasó y la llegada no está confirmada. missing_eta: nada indica cuándo llegará. eta_drift: la ETA se atrasó 5 días o más respecto de la primera estimación. rollover: el contenedor no está en el buque en el que se reservó (contenedor transferido a otro buque). port_dwell: se descargó hace más de 5 días y aún no salió de la terminal. stalled_draft: aprobado, pero nunca validado. unresolved_checks: verificaciones fallidas sin resolver durante más de 3 días. Pueden agregarse claves nuevas. Uno de tracking_halted, tracking_blind, tracking_stale, tracking_silent, tracking_not_found, overdue_eta, missing_eta, eta_drift, rollover, port_dwell, stalled_draft, unresolved_checks.
group cadena o null El tema de la alerta. Null si el monitor que la generó ya no existe. Uno de tracking, schedule, workflow.
severity cadena Qué tan urgente es. La gravedad puede subir de warning a critical a medida que el problema se prolonga. Uno de warning, critical.
title cadena Un título breve en inglés para el tipo de problema.
summary cadena o null Una frase en inglés que dice qué está mal en este envío.
since cadena de fecha-hora o null Cuándo empezó el problema, según lo mide el monitor (por ejemplo, el momento en que pasó la ETA). Null cuando se desconoce.
first_detected_at cadena de fecha-hora o null Cuándo una revisión del monitoreo vio el problema por primera vez.
last_detected_at cadena de fecha-hora o null Cuándo la revisión más reciente todavía lo vio.
resolved_at cadena de fecha-hora o null Cuándo desapareció el problema. Aquí siempre es null, porque solo se devuelven alertas abiertas.

Objeto ShipmentCheck

El resultado de una verificación ejecutada sobre un envío, por ejemplo si hay una lista de empaque o si su cantidad de cajas coincide con el total declarado.

Campo Tipo Descripción
object cadena Siempre shipment_check.
id cadena El ID del resultado de la verificación.
shipment_id cadena El envío sobre el que se ejecutó la verificación.
shipment_reference cadena La referencia de Trackberry de ese envío.
key cadena El identificador estable de la verificación, por ejemplo has_packing_list, packing_list_box_count o invoice_total. Pueden agregarse claves nuevas.
category cadena o null El tipo de problema que busca la verificación. documents significa que falta un documento obligatorio; data_integrity significa que no coinciden cifras que deberían coincidir; data_completeness significa que falta un valor necesario en un documento. Null si la verificación ya no existe. Uno de documents, data_integrity, data_completeness.
status cadena El resultado. pending todavía no se ha ejecutado; passed está bien; failed significa que algo está mal; skipped significa que no se cumplían sus condiciones previas; warning significa que pasó con una salvedad. Uno de pending, passed, failed, skipped, warning.
title cadena Un nombre breve en inglés para este resultado.
message cadena o null Una frase en inglés que explica el resultado. Null cuando la verificación no ha producido ninguna.
ran_at cadena de fecha-hora o null Cuándo se ejecutó la verificación por última vez. Null si nunca se ejecutó.

Objeto Document

Un archivo adjunto a un envío, como un conocimiento de embarque, una lista de empaque, una factura o un certificado, con su estado de procesamiento. La API no entrega el archivo en sí.

Campo Tipo Descripción
object cadena Siempre document.
id cadena El ID del documento.
shipment_id cadena El envío al que pertenece el documento.
type cadena Qué tipo de documento determinó Trackberry que es. transport_document abarca conocimientos de embarque, guías aéreas y cartas de porte terrestres; merged_document es un único archivo que contiene varios tipos; unknown significa que no se pudo clasificar. Uno de unknown, packing_list, transport_document, invoice, phytosanitary_cert, merged_document, certificate_of_origin, warehouse_receipt, inspection_report, courier_document, other_certificate, arrival_notice, booking, pre_alert.
filename cadena o null El nombre del archivo. Null cuando no hay archivo adjunto.
content_type cadena o null El tipo MIME del archivo. Null cuando no hay archivo adjunto.
byte_size entero o null El tamaño del archivo en bytes. Null cuando no hay archivo adjunto.
source cadena Cómo llegó el documento a Trackberry. manual_upload se cargó en la aplicación; email_upload llegó por correo electrónico; api entró mediante una integración; correction_link se envió en respuesta a una solicitud de corrección. Uno de manual_upload, email_upload, api, correction_link.
parse_status cadena Si Trackberry ya leyó el documento. pending y processing están en curso; parsed significa que se extrajeron datos; failed significa que la lectura falló. Uno de pending, processing, parsed, failed.
downloadable booleano True cuando hay un archivo adjunto que pasó el análisis de seguridad, de modo que GET /documents/{id}/file lo entrega.
page_range cadena o null Para un documento separado de un PDF más grande con varios documentos, las páginas del archivo original que abarca, como 3-5 o 7. Null para los documentos que son archivos completos.
data_available booleano True cuando get_document_data devolverá campos extraídos para este documento.
created_at cadena de fecha-hora Cuándo se agregó el documento a Trackberry.
updated_at cadena de fecha-hora Cuándo cambió por última vez el registro del documento.

Objeto DocumentData

Los datos estructurados que Trackberry extrajo de un documento. El conjunto de campos depende de schema.

Campo Tipo Descripción
object cadena Siempre document_data.
document_id cadena El documento del que se leyeron los datos.
type cadena El nombre de la clase del documento cuando la tiene (más preciso que Document.type, por ejemplo exporter_invoice, transport_invoice, sanitary_document); si no, su type.
schema cadena o null La forma de fields. Null cuando no se extrajo nada o el tipo de documento no tiene un esquema estructurado, en cuyo caso fields está vacío. Uno de packing_list, transport_document, invoice, certificate, inspection_report, arrival_notice, booking, pre_alert.
fields objeto Los valores extraídos, con claves en snake_case, días calendario como cadenas YYYY-MM-DD, montos y pesos como números, valores faltantes como null y grupos repetidos como arreglos de objetos. Campos según schema. packing_list: packing_list_number, exporter_name, exporter_port, exporter_country, importer_name, importer_country, total_net_weight, total_boxes, diagram_pallet_numbers, container_number, line_items (cada uno con pallet_number, produce_name, variety, size_calibre, quality_category, format, label, produce_type, ggn, number_of_boxes, net_weight_kg, box_weight_kg, gross_weight_kg). transport_document: transport_type, shipment_reference, equipment_numbers, package_count, package_unit, consignor, consignee, notify_party, carrier, departure_location y arrival_location (cada uno con location_name y country), etd, eta, temperature_setpoint_celsius, cargo_type, load_type, issuer. invoice: seller_name, seller_location, seller_country, buyer_name, buyer_location, buyer_country, invoice_number, invoice_date, total_amount, currency, line_items (cada uno con produce_description, produce_name, variety, calibre, pack_format, box_weight_kg, quantity, unit_price, price_unit, total_amount). certificate: exporter_name, exporter_location, exporter_country, importer_name, importer_location, importer_country, certificate_number, certificate_date, produce_description. inspection_report: inspection_company, inspector_name, report_number, inspection_date, inspection_location, container_number, produce_description, total_pallets, overall_impression, overall_score, overall_impression_category, general_remarks, results (cada uno con pallet_number, lot_code, produce_name, variety, calibre, score, recommendation, remarks, defects, photo_numbers). arrival_notice: carrier_name, bill_of_lading_number, container_numbers, vessel_arrival_date, free_time (cada uno con applies_to, cargo_class, days, hours, basis, from_date, until_date, from_event, estimated, quote). booking: load_type, move_type, shipper, consignee, cargo_ready_date, departure_location y arrival_location (cada uno con location_name y country), place_of_delivery, incoterm, po_number, package_count, package_unit, gross_weight_kg, volume_cbm, booking_reference, transport_type. pre_alert: forwarder_name, forwarder_reference, house_bill_of_lading, master_bill_of_lading, load_type, vessel, voyage, departure_location y arrival_location (cada uno con location_name y country), etd, forwarder_arrival_date, shipper, consignee, incoterm, container_numbers, package_count, gross_weight_kg, volume_cbm. Con el tiempo pueden agregarse campos.

Objeto PackingList

Una lista de empaque leída de un documento, que indica lo que el exportador declara que hay en el contenedor, por pallet y línea de producto.

Campo Tipo Descripción
object cadena Siempre packing_list.
id cadena El ID de la lista de empaque.
shipment_id cadena El envío al que pertenece.
document_id cadena o null El documento del que se leyó. Null cuando se creó sin documento.
container_id cadena o null El contenedor que abarca. Null cuando el documento no lo indicaba.
reference cadena o null El número propio de la lista de empaque.
declared_box_count entero o null La cantidad total de cajas que declara el documento, antes de que Trackberry sume las líneas. Compárela con totals.boxes.
declared_net_weight_kg número o null El peso neto total en kilogramos que declara el documento. Compárelo con totals.net_weight_kg.
totals objeto Totales que Trackberry calculó a partir de las líneas visibles de esta lista de empaque.
totals.pallets entero Cantidad de pallets en esta lista de empaque.
totals.boxes entero Suma de las cantidades de cajas de sus líneas.
totals.net_weight_kg número Suma de los pesos netos de sus líneas, en kilogramos.
pallets arreglo de objetos Pallet Los pallets de esta lista de empaque, del más antiguo al más reciente.

Objeto Pallet

Un pallet de una lista de empaque.

Campo Tipo Descripción
object cadena Siempre pallet.
id cadena El ID del pallet.
pallet_number cadena o null El número o SSCC del pallet tal como figura en la lista de empaque. Único dentro de un envío cuando está definido.
container_id cadena o null El contenedor en el que está cargado el pallet. Null cuando se desconoce.
lines arreglo de objetos PackingLine Las líneas de producto del pallet en orden de lectura. Se excluyen las líneas fusionadas con otra línea.

Objeto PackingLine

Una línea de producto en un pallet: una cantidad de una variedad, un calibre y un formato de empaque.

Campo Tipo Descripción
object cadena Siempre packing_line.
id cadena El ID de la línea.
line_index entero o null La posición de la línea en la lista de empaque, que se usa para ordenar las líneas.
produce_name cadena o null El producto, normalizado (por ejemplo Grapes).
produce_type cadena o null Cómo se cultivó el producto, tal como figura en la lista de empaque. Las líneas marcadas como orgánicas (en mayúsculas o minúsculas) hacen que el envío sea organic.
variety cadena o null La variedad o el cultivar.
calibre cadena o null El calibre del producto.
quality_category cadena o null La categoría de calidad, como Class I.
pack_format cadena o null Cómo está empacado el producto, por ejemplo un tamaño de caja.
label cadena o null La marca o etiqueta impresa en el embalaje.
ggn cadena o null El número GLOBALG.A.P. (GGN) del productor, cuando se indica.
box_count entero o null Cantidad de cajas en esta línea.
box_weight_kg número o null Peso neto de una caja en kilogramos.
net_weight_kg número o null Peso neto de toda la línea en kilogramos.
gross_weight_kg número o null Peso bruto de toda la línea en kilogramos, embalaje incluido.

Lo que la API todavía no hace

  • Sin escritura. No puede crear envíos, aprobarlos ni cargar documentos a través de la API.
  • Sin webhooks. Trackberry no puede llamar a su sistema cuando cambia un envío; consulte /shipments o /alerts periódicamente.
  • Sin llamadas desde el navegador. La API es para servidores y scripts, así que no envía encabezados CORS.

Si alguna de estas funciones le permitiría avanzar, escriba a support@trackberry.com y cuéntenos qué está construyendo.

Etiquetas: api integración automatización tokens