API Routes (Cálculo de rutas por lotes)

Use Routes para calcular múltiples rutas en una sola solicitud. REST devuelve JSON, mientras que SOAP usa CalculateRoutes para flujos de cálculo de rutas por lotes e integraciones heredadas.

Ilustración de la API Routes de TrackRoad calculando múltiples rutas en una sola solicitud y devolviendo distancias y tiempos.
Routes calcula múltiples rutas en una sola llamada, lo que la hace útil para planificación masiva de rutas, comparación de rutas y flujos de trabajo de enrutamiento por lotes.

¿Necesita el contrato completo de la API?

Swagger cubre los modelos REST, mientras que el WSDL de SOAP admite integraciones heredadas de TrackService.

Ver Swagger UI Ver SOAP WSDL Resumen de la referencia de API

Tabla de contenidos

  1. Qué hace Routes
  2. Endpoints y URL base
  3. Autenticación (REST y SOAP)
  4. Esquema de solicitud
  5. Esquema de respuesta
  6. Ejemplos
  7. Errores comunes
  8. Mejores prácticas
  9. Endpoints relacionados
  10. Preguntas frecuentes

Qué hace Routes#

Routes calcula una o varias rutas en una sola solicitud. Esto la hace útil cuando necesita cálculo de rutas por lotes en lugar de enviar muchas llamadas de ruta única.

Cada ruta utiliza una lista ordenada de entradas Location y RouteOptions opcionales. También puede definir un objeto global RoutesOptions que aplique valores predeterminados a toda la solicitud.

Consejo: Si solo necesita una ruta, use la API Route . Si necesita calcular múltiples rutas a la vez, use Routes.

Endpoints y URL base#

REST (JSON)

Elemento Valor
URL base https://trackservice.trackroad.com
Endpoint POST /rest/routes
URL completa https://trackservice.trackroad.com/rest/routes
Content-Type application/json

SOAP (CalculateRoutes)

Elemento Valor
URL SOAP https://trackservice.trackroad.com/TrackService.asmx
WSDL https://trackservice.trackroad.com/TrackService.asmx?WSDL
Método CalculateRoutes
SOAPAction http://TrackService.TrackRoad.com/CalculateRoutes
Content-Type text/xml; charset=utf-8

SOAP y REST comparten los mismos conceptos principales de enrutamiento, como RouteSpecification, RouteOptions y Location. La principal diferencia es el transporte: JSON para REST y sobre SOAP + SessionIDHeader para SOAP.

Autenticación (REST y SOAP)#

Autenticación REST (X-API-Key)

Incluya su TrackServiceKey en el encabezado X-API-Key en cada solicitud REST. Consulte Autenticación de API .

Autenticación SOAP (SessionIDHeader)

Las solicitudes SOAP usan SessionIDHeader. Envíe su TrackServiceKey como SessionID en cada llamada a CalculateRoutes.

Recomendación: use REST a menos que necesite integrarse con un sistema empresarial heredado o solo SOAP.

Esquema de solicitud#

El cuerpo de la solicitud REST es un único objeto por lotes: RoutesSpecification, que contiene una lista de elementos RouteSpecification. SOAP usa la misma estructura lógica dentro de la operación CalculateRoutes.

Modelos compartidos

Location, LatLong y Address se comparten entre distintos endpoints. Consulte API Dispatch (modelos compartidos) .

RoutesSpecification (REST)

Propiedad Tipo Obligatorio Descripción
Specifications RouteSpecification[] Sí* Un elemento por cada ruta que desea calcular en la solicitud por lotes.
RoutesOptions RouteOptions No Valores predeterminados globales aplicados a cada ruta, salvo que se sobrescriban mediante RouteOptions por ruta.

RouteSpecification

Propiedad Tipo Obligatorio Descripción
Locations Location[] Sí* Paradas de esta ruta. El orden puede optimizarse según RouteOptions.
RouteOptions RouteOptions No Sobrescrituras por ruta para motor de enrutamiento, unidades, modo de optimización, cultura y opciones de mapa.

RouteOptions (resumen)

Los campos de RouteOptions como RoutingService, DistanceUnit, RouteOptimize, Culture y la configuración relacionada con mapas son similares al endpoint Route y pueden aplicarse globalmente o por ruta.

Esquema de respuesta#

Respuesta REST (RoutesResult)

Propiedad Tipo Descripción
Results RouteResult[] Un resultado por cada RouteSpecification de entrada.
Map string Salida de mapa opcional según las opciones. Puede estar vacía.
Errors Error[] Advertencias y errores opcionales devueltos por el servicio.
Status int (enum) 0=None, 1=Success, 2=Failed, 3=SuccessWithErrors.

Respuesta SOAP (CalculateRoutesResult)

SOAP envuelve la misma estructura lógica del resultado dentro de CalculateRoutesResponse y CalculateRoutesResult.

Ejemplos#

Use los ejemplos siguientes para comprender cómo funciona TrackRoad Routes con REST JSON y SOAP CalculateRoutes. Los bloques de código de ejemplo deben permanecer sin cambios entre idiomas.

REST request body (JSON)#

{
  "Locations": [
    { "Name": "Start", "LatLong": { "Latitude": 37.7946, "Longitude": -122.3950 }, "LocationType": 1 },
    { "Name": "Stop A", "LatLong": { "Latitude": 37.7897, "Longitude": -122.4011 }, "LocationType": 0 },
    { "Name": "Finish", "LatLong": { "Latitude": 37.7810, "Longitude": -122.4110 }, "LocationType": 2 }
  ],
  "RouteOptions": {
    "RoutingService": 2,
    "DistanceUnit": 0,
    "RouteOptimize": 0,
    "Culture": "en-US",
    "ZoomLevel": 0
  }
}

REST call examples#

curl -X POST "https://trackservice.trackroad.com/rest/Route" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_TRACKSERVICEKEY" \
  -d @route-request.json

SOAP request (CalculateRoute)#

SOAP requires SessionIDHeader. Replace YOUR_SESSION_ID with the session id returned from SOAP Login.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <SessionIDHeader xmlns="http://TrackService.TrackRoad.com/">
      <SessionID>YOUR_SESSION_ID</SessionID>
    </SessionIDHeader>
  </soap:Header>

  <soap:Body>
    <CalculateRoute xmlns="http://TrackService.TrackRoad.com/">
      <specification>
        <Locations>
          <Location>
            <Name>Start</Name>
            <LatLong><Latitude>37.7946</Latitude><Longitude>-122.3950</Longitude></LatLong>
            <LocationType>Start</LocationType>
          </Location>

          <Location>
            <Name>Stop A</Name>
            <LatLong><Latitude>37.7897</Latitude><Longitude>-122.4011</Longitude></LatLong>
            <LocationType>Midway</LocationType>
          </Location>

          <Location>
            <Name>Finish</Name>
            <LatLong><Latitude>37.7810</Latitude><Longitude>-122.4110</Longitude></LatLong>
            <LocationType>Finish</LocationType>
          </Location>
        </Locations>

        <RouteOptions>
          <RoutingService>Bing</RoutingService>
          <DistanceUnit>Mile</DistanceUnit>
          <RouteOptimize>MinimizeTime</RouteOptimize>
          <Culture>en-US</Culture>
          <ZoomLevel>0</ZoomLevel>
        </RouteOptions>
      </specification>
    </CalculateRoute>
  </soap:Body>
</soap:Envelope>

SOAP call examples#

curl -X POST "https://trackservice.trackroad.com/TrackService.asmx" \
  -H "Content-Type: text/xml; charset=utf-8" \
  -H "SOAPAction: http://TrackService.TrackRoad.com/CalculateRoute" \
  -d @calculate-route.xml

Response example (REST JSON)#

{
  "Route": {
    "Distance": 5.42,
    "Time": 1180,
    "RouteLegs": [
      {
        "Distance": 2.10,
        "Time": 480,
        "Itinerary": {
          "Items": [
            {
              "Distance": 0.2,
              "Time": 40,
              "Text": "Head north on ...",
              "LatLong": { "Latitude": 37.79, "Longitude": -122.39 }
            }
          ]
        }
      }
    ],
    "Points": [
      { "Latitude": 37.7946, "Longitude": -122.3950 },
      { "Latitude": 37.7897, "Longitude": -122.4011 }
    ],
    "Map": null
  },
  "Errors": [],
  "Status": 1
}

Errores comunes#

  • REST 401 / Unauthorized: falta o no es válido el X-API-Key.
  • REST 403 / Forbidden: la clave es válida, pero está bloqueada, caducada o no tiene crédito disponible.
  • Fallo de autenticación SOAP: falta o no es válido el SessionIDHeader. SessionID debe ser su TrackServiceKey.
  • Errores de validación: faltan Locations, hay coordenadas no válidas o valores enum no válidos.

Mejores prácticas#

  • Agrupe de forma inteligente: incluya varios cálculos de ruta en una sola llamada a Routes para reducir la sobrecarga de solicitudes.
  • Prefiera LatLong: proporcione coordenadas siempre que sea posible para reducir la ambigüedad del geocoding y mejorar el rendimiento.
  • Use RoutesOptions globales: defina valores compartidos una sola vez y sobrescríbalos solo cuando sea necesario por ruta.
  • Mantenga la coherencia de opciones: mezclar motores de enrutamiento, unidades o modos de optimización entre rutas puede dificultar las comparaciones.

Preguntas frecuentes#

¿Qué hace la API Routes?
La API Routes calcula una o varias rutas en una sola solicitud. Cada resultado puede incluir ubicaciones ordenadas, distancia, tiempo y una salida de mapa opcional según las opciones.
¿Cómo me autentico en Routes (REST y SOAP)?
Las solicitudes REST envían el TrackServiceKey en el encabezado X-API-Key. Las solicitudes SOAP CalculateRoutes envían el TrackServiceKey en SessionIDHeader como SessionID.
¿Cuándo debo usar Routes en lugar de Route?
Use Route cuando necesite calcular una sola ruta. Use Routes cuando quiera calcular varias rutas en una sola solicitud por lotes.
¿Cuáles son los errores más comunes de la API Routes?
Los errores comunes incluyen un X-API-Key faltante o no válido, fallos de autenticación SOAP con SessionIDHeader, falta de Locations, coordenadas no válidas y valores enum no válidos.

Siguiente paso: optimizar entre vehículos

Si necesita asignar paradas a varios vehículos y optimizar el orden de las paradas por vehículo, continúe con la API Dispatch.

Ir a Dispatch Swagger UI