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_systemFiltra por sistema de origen
searchQueryBú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.