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
limitystarting_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
- Vaya a Configuración → Tokens de API (
/your-slug/settings/api). - 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.
- 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:
curl https://trackberry.com/api/v1/organization \
-H "Authorization: Bearer tb_your_token"
{
"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-Versioncon 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 ypln_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 conlimit(25 por defecto). Para obtener la página siguiente, pase eliddel último elemento recibido comostarting_after, y deténgase cuandohas_moreseafalse. 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 son2026-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 |
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:
{ "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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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. |
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:
{
"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
/shipmentso/alertsperió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.