Trip

Estructura de respuesta

En el siguiente ejemplo tenemos una ruta entre las ciudades de Casa Branca-SP y Guaxupé-MG, evitando áreas urbanas, con los valores de peaje para un camión de dos ejes, las estaciones de servicio a lo largo de la ruta y los estados recorridos.

Solicitud

En la solicitud a la Trip API, además de los puntos (points) y del modo de cálculo (calculationMode), usaremos los siguientes parámetros:

  • avoidanceTypes – Tipos de vía o área que deben evitarse en la ruta. Informaremos CITY para evitar áreas urbanas;
  • avoidanceBehavior – Comportamiento aplicado a las restricciones de avoidanceTypes. Los valores posibles son FAIL, RELAXED y STRONG. Usaremos STRONG;
  • toll – Parámetros referentes a la Toll API. Para conocer todos los parámetros soportados, consulte la lista de parámetros:
    • vehicleType – Tipo de vehículo. Usaremos "TRUCK_WITH_TWO_DOUBLE_AXLES";
    • transponderOperators – Operadoras de pago automático deseadas. Informaremos CONECTCAR para obtener los códigos de integración de esa operadora.
  • crossedBorders – Parámetros para identificar las fronteras cruzadas por la ruta:
    • level – Nivel de las fronteras devueltas. Usaremos STATE para obtener los estados recorridos;
    • reverseGeocode – Define para qué puntos se devolverá la dirección. Usaremos START_END_LEGS para obtener las direcciones del inicio y del fin de los tramos.
  • place – Parámetros para buscar lugares a lo largo de la ruta. Para conocer todos los parámetros soportados, consulte la lista de parámetros de la POIs API:
    • categories – Categorías de los lugares buscados. Usaremos POSTOS_DE_COMBUSTIVEL;
    • subCategories – Subcategorías de los lugares buscados, por ejemplo POSTO_FISCAL y BALANCAS, de la categoría FISCALIZACAO. Parámetro opcional, no utilizado en este ejemplo;
    • bufferRouteInMeters – Distancia máxima, en metros, entre el lugar y la ruta. Usaremos 500;
    • bufferStoppingPointsInMeters – Distancia máxima, en metros, entre el lugar y los puntos de parada. Usaremos 500;
    • onlyMyPlaces – Cuando es true, devuelve solo los lugares registrados por el propio cliente.
{
    "points": [
        {
            "siteId": "Point 1-Casa Branca",
            "latitude": -21.780449,
            "longitude": -47.079822
        },
        {
            "siteId": "Point 2-Guaxupe",
            "latitude": -21.312320,
            "longitude": -46.717873
        }
    ],
    "calculationMode": "THE_FASTEST",
    "avoidanceTypes": [
        "CITY"
    ],
    "avoidanceBehavior": "STRONG",
    "toll": {
        "vehicleType": "TRUCK_WITH_TWO_DOUBLE_AXLES",
        "transponderOperators": [
            "CONECTCAR"
        ]
    },
    "crossedBorders": {
        "level": "STATE",
        "reverseGeocode": "START_END_LEGS"
    },
    "place": {
        "categories": [
            "POSTOS_DE_COMBUSTIVEL"
        ],
        "bufferRouteInMeters": 500,
        "bufferStoppingPointsInMeters": 500,
        "onlyMyPlaces": true
    }
}

A continuación, la ruta visualizada en el mapa:

Ruta entre Casa Branca – SP y Guaxupé – MG

Respuesta

Algunos campos de la respuesta se devuelven siempre, mientras que otros solo aparecen cuando el parámetro correspondiente se informa en la solicitud. Por ejemplo, los campos de peaje solo se devuelven si se informa el objeto toll.

Campos devueltos siempre

  • id – Identificador único de la ruta calculada;
  • clientId – Identificador del cliente que realizó la solicitud;
  • totalDistance – Distancia total de la ruta, en metros;
  • totalNominalDuration – Duración nominal total de la ruta, en segundos;
  • averageSpeed – Velocidad media de la ruta, en km/h;
  • legs – Array de objetos donde cada objeto representa un tramo de la ruta. Cada objeto contiene los siguientes campos, siempre devueltos:
    • distance – Distancia del tramo, en metros;
    • nominalDuration – Duración nominal del tramo, en segundos;
    • averageSpeed – Velocidad media del tramo, en km/h;
    • points – Geometría del tramo. El formato depende del parámetro pointsMode de la solicitud. Para saber más, consulte cómo cambiar el tipo de retorno de las coordenadas de la ruta.
  • source – Origen del mapa utilizado en el cálculo de la ruta. Siempre se devolverá como MAPLINK.
  • createdAt – Fecha y hora de creación de la ruta, en formato timestamp;
  • expiryIn – Fecha y hora de expiración de la ruta, en formato timestamp.

Campos devueltos solo si se informa el objeto toll

  • tollCosts – Valor total de los peajes en toda la ruta;
  • legs[].tollCalculation – Objeto, devuelto en cada tramo, con los valores e información de peaje del tramo correspondiente:
    • tolls – Array con los valores e información de cada peaje en el tramo. Cada objeto devuelto en tolls representa un peaje y contendrá la siguiente información:
      • id – Identificador único del peaje;
      • type – Tipo de peaje. Los valores posibles son:
        • TOLL_BOOTH – Casetas de peaje convencionales;
        • MUNICIPAL_TOLL_BOOTH – Similar a TOLL_BOOTH, sirve únicamente para identificar que la caseta de peaje es municipal;
        • TOLL_GANTRY – Corresponde a los pórticos convencionales;
        • ENTRY_GANTRY – Corresponde a los pórticos de entrada, utilizados en carreteras con cobro por tramos;
        • EXIT_GANTRY – Corresponde a los pórticos de salida, utilizados en carreteras con cobro por tramos.
      • name – Nombre del peaje;
      • address – Dirección del peaje;
      • city – Ciudad del peaje;
      • state – Objeto que contiene el nombre del estado (name) y su sigla (code);
      • country – País del peaje;
      • concession – Concesionaria responsable del peaje;
      • direction – Sentido de la vía en que se cobra el peaje (por ejemplo, NORTH, EAST o SOUTHEAST);
      • coordinates – Coordenadas (latitud y longitud) del peaje;
      • price – Valor por peaje;
      • conditions – Array con valores diferenciados del peaje según el tipo de cobro. Se devuelve solo en los peajes que tienen este tipo de valor:
        • billingsType – Array con los tipos de cobro a los que se aplica el valor, por ejemplo TAG;
        • value – Valor del peaje para los tipos de cobro informados.
      • currency – Tipo de moneda utilizada por el peaje. Los valores posibles son:
        • BRL – Real brasileño;
        • ARS – Peso argentino;
        • CLP – Peso chileno;
        • COP – Peso colombiano;
        • MXN – Peso mexicano.
      • serviceTypes – Array con códigos para integración con sistemas de pago automático. Actualmente disponible solo en Brasil. Además de ANTTCODE, se devuelven los códigos de las operadoras informadas en toll.transponderOperators (en este ejemplo, CONECTCAR);
        • serviceId – Código para la integración;
        • name – Descripción del código del servicio.
      • active – Indica si el peaje está activo (true) o no (false).
    • legTotalCost – Valor total de peajes para el tramo;
    • vehicleType – Tipo de vehículo considerado para el tramo. Puede variar entre los tramos cuando se informa toll.variableAxles;
    • calculationDate – Fecha y hora considerados para el tramo, en formato timestamp. La fecha base es el valor de toll.calculationDate (o el momento de la solicitud, si no se informa), sumada a la duración nominal de los tramos anteriores. Por eso, en rutas con más de un tramo, el valor aumenta en cada tramo;
    • condition – Se devuelve solo si se usa el parámetro toll.condition en la solicitud. Contiene qué billingType y period se consideraron para el tramo.

Campos devueltos solo si se informa crossedBorders.level

  • crossedBorders – Array de objetos donde cada objeto representa una frontera cruzada por la ruta, de acuerdo con el nivel informado en crossedBorders.level (en este ejemplo, STATE), en el orden en que fueron recorridas:
    • state – Sigla del estado;
    • city – Nombre de la ciudad. Se devuelve cuando level es CITY;
    • country – País de la frontera.

Campos devueltos solo si se informa crossedBorders.reverseGeocode

Estos campos son independientes de crossedBorders.level. Con START_END, se devuelven startAddress y endAddress. Con START_END_LEGS, también se devuelve legs[].firstPointAddress.

  • startAddress – Dirección del punto de origen de la ruta. El objeto contiene la siguiente información:
    • road – Calle;
    • district – Barrio;
    • zipCode – Código postal;
    • city – Ciudad;
    • state – Objeto que contiene el nombre del estado (name) y su sigla (code);
    • mainLocation – Coordenadas (lat y lon) de la dirección encontrada;
    • Cuando están disponibles para la dirección, también pueden devolverse geometry (array de coordenadas lat y lon de la vía), leftZipCode y rightZipCode (código postal de cada lado de la vía), leftFirstNumber, leftLastNumber, rightFirstNumber y rightLastNumber (numeración inicial y final de cada lado de la vía).
  • endAddress – Dirección del punto de destino de la ruta, con la misma estructura del objeto startAddress;
  • legs[].firstPointAddress – Dirección del primer punto de cada tramo, con la misma estructura del objeto startAddress. Se devuelve solo con START_END_LEGS.

Campos devueltos solo si se informa el objeto place

  • legs[].placeCalculation – Objeto, devuelto en cada tramo, con los lugares encontrados a lo largo del tramo de acuerdo con los parámetros de place:
    • total – Cantidad de lugares encontrados en el tramo;
    • places – Array con los lugares encontrados. En este ejemplo el array se devuelve vacío, pues ningún lugar registrado cumplió los criterios de la búsqueda. Cuando hay resultados, cada objeto contiene:
      • id – Identificador único del lugar;
      • name – Nombre del lugar;
      • documentNumber – Número de documento del establecimiento;
      • category – Categoría del lugar, por ejemplo POSTOS_DE_COMBUSTIVEL;
      • subCategory – Subcategoría del lugar;
      • address – Dirección del lugar:
        • street – Calle;
        • number – Número;
        • city – Ciudad;
        • state – Sigla del estado;
        • zipcode – Código postal;
        • point – Coordenadas (latitude y longitude) del lugar.
      • phones – Array con los teléfonos del lugar;
      • clientId – Identificador del cliente que registró el lugar;
      • active – Indica si el lugar está activo (true) o no (false).

Campos devueltos solo si se informa el objeto turnByTurn

Al utilizar el parámetro turnByTurn, la hoja de ruta también se devuelve en la respuesta. Este parámetro no se utilizó en este ejemplo. Para más información sobre los campos devueltos, consulte el ejemplo de hoja de ruta detallada de la ruta.

Campos devueltos solo si se informa el objeto freight

  • routeFreightCost – Costo de flete de la ruta. Corresponde a freight.minimumFreightWithCosts sumado a tollCosts. Si no se informa el objeto toll, el valor de peaje considerado es cero;
  • freight – Objeto con el resultado del cálculo de flete:
    • source – Norma utilizada como base del cálculo;
    • results – Objeto con los valores calculados, organizado en niveles: tipo de operación (operationType), cantidad de ejes (axis) y tipo de carga (goodsType). Para cada combinación se devuelven value (valor del flete) y otherCosts (objeto con el valor de cada costo informado en freight.otherCosts, indexado por el respectivo name);
    • minimumFreight – Valor mínimo del flete;
    • minimumFreightWithCosts – Valor mínimo del flete sumado a los otros costos informados.

El campo freight no forma parte de la solicitud de este ejemplo. A continuación, un ejemplo de cómo se devuelve este campo cuando se informa el objeto correspondiente en la solicitud. El valor de routeFreightCost es solo ilustrativo. Para saber más, consulte la documentación de la Freight API.

"routeFreightCost": 36970.73,
"freight": {
    "source": "PORTARIA Nº 169, DE 18 DE MARÇO DE 2022",
    "results": {
        "D": {
            "4": {
                "GRANEL_SOLIDO": {
                    "value": 36970.73,
                    "otherCosts": {
                        "ICMS": 1848.54,
                        "Lucro": 7394.15,
                        "TaxaFixa": 500
                    }
                }
            }
        }
    },
    "minimumFreight": 36970.73,
    "minimumFreightWithCosts": 46713.42
}

Respuesta completa

La respuesta completa se encuentra a continuación, generada a partir de la solicitud de este ejemplo (con toll, crossedBorders y place):

{
    "id": "6aeb78781e5d6641c3a5d586",
    "clientId": "maplink",
    "totalDistance": 86857,
    "totalNominalDuration": 4363,
    "averageSpeed": 56.75,
    "tollCosts": 16.20,
    "legs": [
        {
            "distance": 86856,
            "nominalDuration": 4363,
            "averageSpeed": 56.75,
            "points": "j_}cCdgj~GmEgEv@eAgEgBSAYQuAuASy@IgA?[PuAh@oA`@s@h@k@rFmFN_@FY}AaAmAi@{@_@cHeEuUqLkIaE_DcBgFgCKOGOWKAICIEGD[COCU?O@MDOFOP[fDaF~BcDDK?O[uACk@?KCKIIKCK?GBEBGL?L@HDH@BUVSLMLsA|BIRGRCVAt@ETIVu@bBeAxAeAnA_A`AmAdAwB~AyA|@gAj@yB|@iA`@mCt@gBZ{BTaF`@aOdAeF\\inAzI{m@nEkQlA}D`@_Db@eBXkCj@_Dv@eDbAqSpHchB`q@wFvBcBh@eBb@eB\\kBViBNkBHkBBkBAkBKiBOiBYcB_@{A_@aA[mAc@_Aa@yAw@{A}@sAcAwCeCoGiFaDqCoK_JoAiAs}@mv@eGkFyE{DoV}SacAa{@uAmAiFmEqAaAgAq@y@g@gB_AwB_AoBq@qAa@}@UcCc@y@MmGs@oOyAkFi@gJy@mJ}@iFc@eQeBuGm@mCYuFg@mJu@aK_AcFk@aD[YEwD]_F]e_BeOqEa@gKeAoHo@wMuAiDYmBSsLcAy|BgTkHq@aWcCyGm@iZuCqIw@eHs@uFg@q_@sD}NsAoMoAuJ{@}AO_bAeJuC[o_@mD}s@{GcJy@mk@mFqYsCoBMkDc@eBKq@Gy@KwFaAmDq@}EsAaCw@ePwGeGiCiQmH_KcEuEoBsDaBaC_AsP_HeEiByF{B_Bm@wCoA_JqDgCkAqEoBoMcFuB_AyAo@qAe@mEkB}@c@uCkAsDuAqA[gAOw@Eq@Cs@?q@Du@Hc@HqA\\k@Ry@^_K~FsD|B}DzBmG`EwFfDcDrBiEdCwEtCmJvFaC|AsC~AwDbC{PhKoJtFcCzAm@\\[Ls@Rc@Ho@Ja@De@Dw@As@E]E}G_AyDa@uDg@qSkCgPwBeH{@kBSwG}@uEm@_C]eEi@w@Og@Ko@Sq@UgBq@qBaAc@WoCiBs@i@o@k@cPkOaEqDyAmAsDcDyb@k`@yDqDcBwAgIsHuEaE}IcIeDuCkAqAcHsGeFsEcCsBmIyHcCuBqAmAiAcAiByA{@u@qHwFaBmAoM}JiLsImO}Kgp@{f@mHqFcEaDeFqDeF_EuFeEuAqA{CkDeAuAgAaBmAyBkAmCq@qBiCiJgBqHi@mB_@cAe@qA_CqEq@cAgA}A}BuCm@o@e@c@yBeBm@a@iAaAW]MYSg@O[g@e@YOyBaBuCmBoCoBsAu@]W[OiAQi@KYKoAo@eJmGsA{@_CiBqBcBq@q@yAgB_B}BqFyGmDqEsCuD{ByCgH_J}ImLwBaCcA{@oBqAsBgAgDaAwAUqC]{BM}@Ey\\eBqDOoKk@qOu@yAKqAOaDo@yBg@cBk@u@YeEgBeD_BeF_Ce@WaJgEsSoJoI}DiBu@kBm@oBg@qBa@uBWoBUsBKoy@}@yo@g@}BGaf@g@qCIiE[aC_@eCg@}CaAkBs@sEmBaOwGeAg@cFyBcD{AoH_Di@OyQ_IiAm@w@k@a@c@g@i@QYm@oA]eAQu@K{@Gw@?]BcBNgB`BcNzAmNxAqM`AiIZcCn@sG~AmNfBgOXoCnB}PfBmPTwA`@oBXkA`@oAb@kA\\}@`AyBj@iAhBuC`D}EfEqFvDoF~HoKfA}A`BiCdBiD`J{TxD_Kv@oBd@{AVcARiALeAFkA@aAAgACiAKmAS{AqA{HeAqFSoAKoAEeACgABmAJeANgAr@sCl@gBxEaLf@uATw@Rs@Nu@Hu@Du@B{@?w@G{@Iu@a@gB_@cAoAoCgGiMWg@eIwP_@eAYw@WeAK{@IiACy@WuMa@_IGw@Io@Ou@Uo@Wi@_@k@e@i@k@e@g@[s@WwBi@qOeDw@Qg@Qi@Ui@[_@]UWo@}@Ue@g@mAyCwHm@wA[o@e@{@o@aA_@m@{B{C]_@wAmAgAeAcB}Ay@y@u@qAo@aB{AoEwDoKk@oBg@aC]sBiFka@}AoMo@wDQq@Uo@[q@g@u@k@y@}EeGa@o@Ym@M]Om@MiACe@?kAJmAFc@Ns@\\oA|AwG\\gBB_@Bk@?{@Ci@Ie@Kg@So@Yw@uAuC_@s@Wo@i@yAMi@Mm@O_AW_CKuAsAuUsAqXU{DMkBQeDMgBS{BOuAOgAUeAU_A[mAm@kBiAwCiEsJe@kAOi@_@_BOs@Ms@Io@OiBEu@Aq@AaA@w@FcBNeBNsAXaBxAuFnBcHX_Ap@iCp@aCh@yBhFsRhFwRXq@Ti@Te@t@qBPk@h@uBPg@ZiBVgBJi@BUbCgJpDiNrFkSvAwFJq@Jy@PaCBy@@uBCgAGaAIcAMgAe@}Ba@}A[}@yB_FwNcZg@uA_@sAWsA]gCMgBCmB?iABcAvBgQXeCRoBd@uF|F_v@LgC@wAAyAEqAMmBSkBWkBWuAe@qB[gA_@cAGSu@eBo@oAyHeNkAuCq@_Be@aAw@sACg@BUHMJGPCzD]vHm@dIq@dCUfHi@`@C^EVEz@Yl@GfDOh@?x@@fBFd@Dd@HbCz@XDV@xC@fEGfACd@Cf@Ij@Op@WrAu@pIeFf@Op@QDE@G@ICGtDmF~DqF`B_CzBuCNOHENCPEtC[SmB_@sEH}DCuACe@IkAM}@Eg@IYm@}ADEDEBE?G?GAGCEEEEAGAE?G@EBI?u@]s@w@o@w@qBmCgDcFc@u@q@cFOyAe@qDIs@oAu@gBy@?EEGA?EEe@m@w@w@dBoDOI",
            "firstPointAddress": {
                "road": "RUA SÃO PAULO",
                "district": "Centro",
                "zipCode": "13700049",
                "city": "CASA BRANCA",
                "state": {
                    "code": "SP",
                    "name": "SÃO PAULO"
                },
                "mainLocation": {
                    "lat": -21.780329800344585,
                    "lon": -47.07950794999991
                }
            },
            "placeCalculation": {
                "total": 0,
                "places": []
            },
            "tollCalculation": {
                "tolls": [
                    {
                        "id": "177",
                        "type": "TOLL_BOOTH",
                        "name": "Pedágio - Mococa",
                        "address": "SP-340 - Rodovia Professor Boanerges Nogueira de Lima - Km 254+7",
                        "city": "Casa Branca",
                        "state": {
                            "name": "São Paulo",
                            "code": "SP"
                        },
                        "country": "Brasil",
                        "currency": "BRL",
                        "concession": "Rota Mogiana",
                        "direction": "NORTH",
                        "coordinates": {
                            "latitude": -21.6408129,
                            "longitude": -47.0477845
                        },
                        "serviceTypes": [
                            {
                                "serviceId": "35353402546900103",
                                "name": "ANTTCODE"
                            },
                            {
                                "serviceId": "101140011",
                                "name": "Conectcar"
                            }
                        ],
                        "price": 16.20,
                        "active": true
                    }
                ],
                "legTotalCost": 16.20,
                "vehicleType": "TRUCK_WITH_TWO_DOUBLE_AXLES",
                "calculationDate": 1793816696871
            },
            "arrivalSiteId": "Point 2-Guaxupe",
            "departureSiteId": "Point 1-Casa Branca"
        }
    ],
    "crossedBorders": [
        {
            "state": "SP",
            "country": "BRASIL"
        },
        {
            "state": "MG",
            "country": "BRASIL"
        }
    ],
    "startAddress": {
        "road": "RUA SÃO PAULO",
        "district": "Centro",
        "zipCode": "13700049",
        "city": "CASA BRANCA",
        "state": {
            "code": "SP",
            "name": "SÃO PAULO"
        },
        "mainLocation": {
            "lat": -21.780329800344585,
            "lon": -47.07950794999991
        }
    },
    "endAddress": {
        "road": "RUA JOSÉ OLEGÁRIO DA SILVEIRA",
        "district": "PARQUE DO LAGO",
        "zipCode": "37831024",
        "city": "GUAXUPÉ",
        "state": {
            "code": "MG",
            "name": "MINAS GERAIS"
        },
        "mainLocation": {
            "lat": -21.312143750217658,
            "lon": -46.7183685
        }
    },
    "source": "MAPLINK",
    "createdAt": 1793816696967,
    "expiryIn": 1794421496626
}