Consultas GET

Consultas GET de Sincronización

Estos endpoints permiten al integrador consultar qué registros sincronizados existen en Smartfleet.


Patrón general

Listar todos:

GET/transportes/sync/{resource}/getAll

Buscar por source_id:

GET/transportes/sync/{resource}/{sourceId}?source_system=external_erp

Query Params

Para getAll

Importante: getAll siempre pagina. No existe un modo "traer todo en una sola llamada"; para recorrer un recurso completo iterá las páginas usando meta.total_pages. Esto evita respuestas que superan el límite de la API (6 MB) en recursos grandes como facturas o guías.

ParámetroDefaultDescripción
page1Número de página (entero positivo)
page_size100Registros por página (máx. 200; valores mayores se recortan a 200)
source_system—Filtra por sistema de origen
searchQuery—Búsqueda libre sobre el recurso

La respuesta incluye en meta: total (total de registros), page, page_size, total_pages. Para traer todo, recorré desde page=1 hasta page = total_pages.

Para \{sourceId\}

ParámetroDescripción
source_systemOpcional pero recomendado para evitar ambigüedad

Recursos disponibles para GET

RecursoListarPor source_id
ProductosGET /transportes/sync/products/getAllGET /transportes/sync/products/{sourceId}
ClientesGET /transportes/sync/clients/getAllGET /transportes/sync/clients/{sourceId}
ProyectosGET /transportes/sync/projects/getAllGET /transportes/sync/projects/{sourceId}
SedesGET /transportes/sync/hubs/getAllGET /transportes/sync/hubs/{sourceId}
Almacenes de sedeGET /transportes/sync/hubs/warehouses/getAllGET /transportes/sync/hubs/warehouses/{sourceId}
ProveedoresGET /transportes/sync/suppliers/getAllGET /transportes/sync/suppliers/{sourceId}
Tipos de vehículoGET /transportes/sync/vehicles/vehicle-types/getAllGET /transportes/sync/vehicles/vehicle-types/{sourceId}
Tipos de licenciaGET /transportes/sync/drivers/licenses/types/getAllGET /transportes/sync/drivers/licenses/types/{sourceId}
VehículosGET /transportes/sync/vehicles/getAllGET /transportes/sync/vehicles/{sourceId}
ChoferesGET /transportes/sync/drivers/getAllGET /transportes/sync/drivers/{sourceId}
Tipos de facturaGET /transportes/sync/receipts/types/getAllGET /transportes/sync/receipts/types/{sourceId}
Tipos de restricciónGET /transportes/sync/restrictions/types/getAllGET /transportes/sync/restrictions/types/{sourceId}
Tipos de paradaGET /transportes/sync/stops/types/getAllGET /transportes/sync/stops/types/{sourceId}
FacturasGET /transportes/sync/receipts/getAllGET /transportes/sync/receipts/{sourceId}
RecoleccionesGET /transportes/sync/pickups/getAllGET /transportes/sync/pickups/{sourceId}
TrasladosGET /transportes/sync/transfers/getAllGET /transportes/sync/transfers/{sourceId}
DevolucionesGET /transportes/sync/returns/getAllGET /transportes/sync/returns/{sourceId}
GuíasGET /transportes/sync/dispatch/getAllGET /transportes/sync/dispatch/{sourceId}

Ejemplos por recurso — {sourceId}

Productos

GET/transportes/sync/products/product.product:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "product.product:1",
    "source_system": "external_erp",
    "product_id": 1,
    "product_code": "PROD-001",
    "product_description": "Producto de ejemplo",
    "weight": 2.5,
    "volume": 0.01,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/products/product.product:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "product.product:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Clientes

GET/transportes/sync/clients/client.client:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "client.client:1",
    "source_system": "external_erp",
    "client_id": 1,
    "client_code": "CLI-001",
    "name": "Empresa XYZ",
    "phone": "+1234567890",
    "email": "contacto@xyz.com",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/clients/client.client:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "client.client:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Proyectos

GET/transportes/sync/projects/project.project:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "project.project:1",
    "source_system": "external_erp",
    "project_id": 1,
    "project_code": "PROY-001",
    "project_name": "Proyecto Ejemplo",
    "client_id": 1,
    "exact_address": "Calle Principal 123",
    "latitude": 9.9281,
    "longitude": -84.0907,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/projects/project.project:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "project.project:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Sedes

GET/transportes/sync/hubs/hub.hub:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "hub.hub:1",
    "source_system": "external_erp",
    "hub_id": 1,
    "name": "Sede Principal",
    "address": "Calle Principal 123",
    "phone": "1234567890",
    "latitude": 9.9281,
    "longitude": -84.0907,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/hubs/hub.hub:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "hub.hub:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Almacenes de Sede

GET/transportes/sync/hubs/warehouses/warehouse.location:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "warehouse.location:1",
    "source_system": "external_erp",
    "warehouse_id": 1,
    "hub_id": 1,
    "warehouse_code": "W-MAIN-01",
    "description": "Almacen Principal de Sede Principal",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/hubs/warehouses/warehouse.location:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "warehouse.location:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Proveedores

GET/transportes/sync/suppliers/supplier.supplier:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "supplier.supplier:1",
    "source_system": "external_erp",
    "supplier_id": 1,
    "supplier_code": "PROV-001",
    "supplier_description": "Proveedor ABC",
    "supplier_phone": "+1234567890",
    "supplier_address": "Zona Industrial 456",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/suppliers/supplier.supplier:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "supplier.supplier:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Tipos de Vehículo

GET/transportes/sync/vehicles/vehicle-types/vehicle.type:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "vehicle.type:1",
    "source_system": "external_erp",
    "vehicle_type_id": 1,
    "vehicle_type_description": "Furgon",
    "max_weight": 1500,
    "max_volume": 20,
    "max_length": 5,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/vehicles/vehicle-types/vehicle.type:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "vehicle.type:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Tipos de Licencia

GET/transportes/sync/drivers/licenses/types/license.type:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "license.type:1",
    "source_system": "external_erp",
    "license_type_id": 1,
    "license_type_code": "B1",
    "license_type_description": "Licencia para vehiculo liviano",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/drivers/licenses/types/license.type:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "license.type:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Vehículos

GET/transportes/sync/vehicles/vehicle.vehicle:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "vehicle.vehicle:1",
    "source_system": "external_erp",
    "vehicle_id": 1,
    "plate": "ABC-123",
    "vehicle_type_id": 1,
    "vehicle_description": "Toyota Hiace 2023",
    "extra_weight": 1000,
    "extra_volume": 15,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/vehicles/vehicle.vehicle:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "vehicle.vehicle:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Choferes

Nota: El POST acepta licenses como arreglo de objetos. El GET devuelve license_codes y license_expiration_dates como strings formateados, que es el formato almacenado en la base de datos.

GET/transportes/sync/drivers/driver.driver:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "driver.driver:1",
    "source_system": "external_erp",
    "driver_id": 1,
    "employee_code": "EMP-001",
    "national_id": "123456789",
    "driver_name": "Juan Perez",
    "phone": "+1234567890",
    "license_codes": "B1",
    "license_expiration_dates": "31/12/2027",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/drivers/driver.driver:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "driver.driver:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Tipos de Factura

GET/transportes/sync/receipts/types/receipt.type:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "receipt.type:1",
    "source_system": "external_erp",
    "receipt_type_id": 1,
    "receipt_type_code": "STD",
    "receipt_type_description": "Factura Estandar ERP",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/receipts/types/receipt.type:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "receipt.type:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Tipos de Restricción

GET/transportes/sync/restrictions/types/restriction.type:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "restriction.type:1",
    "source_system": "external_erp",
    "restriction_type_id": 1,
    "restriction_type_description": "Zona Restringida - No transitar en horas pico",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/restrictions/types/restriction.type:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "restriction.type:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Tipos de Parada

GET/transportes/sync/stops/types/stop.type:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "stop.type:1",
    "source_system": "external_erp",
    "stop_type_id": 1,
    "stop_code": "ENT_FAC",
    "stop_description": "Entrega de Factura",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/stops/types/stop.type:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "stop.type:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Facturas

GET/transportes/sync/receipts/receipt.receipt:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "receipt.receipt:1",
    "source_system": "external_erp",
    "receipt_id": 1,
    "receipt_code": "FAC-001",
    "receipt_type_id": 1,
    "hub_id": 1,
    "project_id": 1,
    "address": "Calle Principal 123",
    "recipient_name": "Juan Perez",
    "recipient_phone": "+1234567890",
    "latitude": 9.9281,
    "longitude": -84.0907,
    "status_id": 1,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/receipts/receipt.receipt:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "receipt.receipt:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Recolecciones

pickups tiene un query param adicional:

ParámetroValoresDescripción
pickup_typeOC / TRANSFERFiltra por tipo de recolección
GET/transportes/sync/pickups/purchase.order:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "purchase.order:1",
    "source_system": "external_erp",
    "pickup_id": 1,
    "pickup_type": "OC",
    "document_code": "OC-001",
    "receipt_code": "FAC-001",
    "supplier_id": 1,
    "hub_id": null,
    "status_id": 1,
    "is_purchase_confirmed": false,
    "is_transfer_confirmed": null,
    "source_warehouse": null,
    "target_warehouse": null,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/pickups/purchase.order:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "purchase.order:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Traslados

Nota: El backend fuerza automáticamente pickup_type = TRANSFER para /transportes/sync/transfers/*.

GET/transportes/sync/transfers/transfer:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "transfer:1",
    "source_system": "external_erp",
    "pickup_id": 2,
    "pickup_type": "TRANSFER",
    "document_code": "TR-001",
    "receipt_code": "FAC-001",
    "hub_id": 1,
    "status_id": 1,
    "is_purchase_confirmed": null,
    "is_transfer_confirmed": false,
    "source_warehouse": null,
    "target_warehouse": null,
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/transfers/transfer:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "transfer:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Devoluciones

GET/transportes/sync/returns/return.return:1?source_system=external_erp
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": {
    "source_id": "return.return:1",
    "source_system": "external_erp",
    "return_id": 1,
    "receipt_id": 2,
    "reason": "Cliente no disponible",
    "is_active": true
  },
  "meta": {
    "route": "/transportes/sync/returns/return.return:1",
    "method": "SyncGetHandler",
    "operation": "get_by_source_id",
    "source_id": "return.return:1",
    "source_system": "external_erp",
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}

Guías (Dispatch)

GET/transportes/sync/dispatch/getAll
{
  "ok": true,
  "code": "SYNC_OK",
  "message": "Sync processed successfully.",
  "data": [
    {
      "dispatch_id": 1,
      "receipt_id": 1,
      "receipt_type_id": 1,
      "hub_id": 1,
      "status_id": 1,
      "dispatch_date": "2026-04-07T12:00:00.000Z",
      "is_active": true
    }
  ],
  "meta": {
    "route": "/transportes/sync/dispatch/getAll",
    "method": "SyncGetHandler",
    "operation": "list",
    "total": 1,
    "page": 1,
    "page_size": 100,
    "total_pages": 1,
    "search_query": null,
    "source_system": null,
    "timestamp": "2026-04-07T12:00:00.000Z"
  }
}
GET/transportes/sync/dispatch/{sourceId}
GET /transportes/sync/dispatch/guia.despacho:501?source_system=external_erp

Requiere que el dispatch haya sido creado con source_id en el payload de POST /transportes/sync/dispatch. Si el dispatch fue creado sin source_id, usar getAll y filtrar por dispatch_id.


Una sola ruta sirve todas estas lecturas

Los getAll y los {sourceId} de arriba no están declarados uno por uno en la API: los sirve un único comodín.

GET/transportes/sync/{proxy+}

Comodín que atiende TODAS las lecturas GET bajo /transportes/sync/.

Tres consecuencias prácticas para el integrador:

  1. El token es el mismo para todas. Cualquier GET bajo /transportes/sync/… pasa por el mismo authorizer de integración (Authorization: Bearer st_sync_…), incluidas las lecturas que esta documentación todavía no enumere.
  2. Una ruta de lectura nueva puede existir antes de estar documentada, porque el comodín ya la atiende sin que haya que declararla. Si probás un recurso y responde, es real; si responde SYNC_ROUTE_NOT_SUPPORTED, el recurso no está mapeado.
  3. No confundas «tiene token de sync» con «es de sync». Hay endpoints del panel que se parecen a estas rutas pero no llevan el token de integración: van con Cognito y con un token de sync responden 401. La regla simple: si el path no empieza con /transportes/sync/, no es de integración.