NAV
shell javascript

Introdução

Bem vindo à documentação das APIs do iRoute!

Esta documentação foi criada pelo nosso time de desenvolvedores, em caso de duvidas, procure seu contato com iRoute e ele o colocará em contato conosco.

Autenticação

Token de Acesso

Para obter o token, use o código abaixo

curl --location --request POST 'https://api.iroute.itrackbrasil.com.br/api/users/local/signin' \
--data-raw '{ "email":"email@itrackbrasil.com.br", "password":"pass1234" }'

var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/users/local/signin',
  'body': JSON.stringify( { email: "youremail@itrackbrasil.com.br", password: "pass1234" } )

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

A requisição retornará um JSON conforme o exemplo abaixo

{
    "id": 40141,
    "email": "youremail@itrackbrasil.com.br",
    "firstName": "Your",
    "lastName": "Name",
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtc3Itdgfsn5478nksds6InVzZXIi...",
    "phone": "119999-9999",
    ...    
}

Não esqueça de inserir o seu e-mail e senha nos campos correspondentes

Todos os serviços do iRoute são autenticados, portanto, para cada requisição efetuada é necessário que o token seja enviado no header. Além de enviar o token, faz-se necessário enviar o e-mail do usuário dono do token para que a autenticação tenha sucesso.

Abaixo, temos um exemplo de como os headers devem ser enviados

X-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtc3ItYXBpIiwicm9sZSI6InVzZXIiLCJleHAiOiIyMDIxLTAzLTI5VDE5OjQzOjE0KzAwOjAwIiwibmJmIjoiMjAyMS0wMy0yMlQxOTo0MzoxNCswMDowMCJ9.jzB75zM-b9LY96EltGh33ctzZ-jrnMjiuALHs6_CwTk

X-User-Email: youremail@itrackbrasil.com.br'

Requisição HTTP

POST https://api.iroute.itrackbrasil.com.br/api/users/local/signin

Corpo da Requisição

{ "email": "youremail@itrackbrasil.com.br", "password": "pass1234" }

Geocodificação

Os serviços de roteirização do iRoute recebe por padrão a latitude e longitude dos endereços no qual precisa roteirizar, as demais informações como rua, número, cidade, estado são apenas para deixar a geolocalização "humanizada" para o usuário.

Portanto é necessário que cada endereços enviado para roteirização tenha a sua latitude e longitude. Pensando nisso, temos o serviço de geocodificação onde envia-se o endereço e o sistema retorna a geolocalizaçaõ correspondente.

Geocodificação de Endereços

curl --location --request POST 'https://api.iroute.itrackbrasil.com.br/api/addresses/geocode' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br' \
--header 'Content-Type: application/json' \
--data-raw '[
    {
        "city": "Novo Hamburgo",
        "streetName": "Rua Andrade Neves",
        "number": "381"
    }
]'
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/addresses/geocode',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify([{"city":"Novo Hamburgo","streetName":"Rua Andrade Neves","number":"381"}])

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

A requisição retornará um JSON conforme exemplo abaixo. O sistema sempre retornará o endereço completo e todos os outros campos informados na requisição

[

  {
      "city": "Novo Hamburgo",
      "state": "Rio Grande do Sul",
      "neighborhood": "Guarani",
      "streetName": "Rua Andrade Neves",
      "postalCode": "93520560",
      "number": "381",
      "lat": -29.675782569342015,
      "lng": -51.128091947256486,
      "country": "BRA",
      "address": "Rua Andrade Neves, 381, Guarani, 93520560, Novo Hamburgo, Rio Grande do Sul, RS"
  }

]

O serviço de geocodificação de endereço retorna a geolocalização a partir das informações enviadas. Os campos disponíveis são:

Esses campos não tem obrigatoriedade individual nem combinada, portanto, o usuário pode enviar apenas as informações que tem em mãos e o sistema buscará a geolocalização. Vale lembrar que quanto mais rica a informação, mais acertiva será a geolocalização.

Requisição HTTP

POST https://api.iroute.itrackbrasil.com.br/api/addresses/geocode

Corpo da Requisição

O serviço recebe uma lista de objetos.

Parâmetro Formato Descrição
streetName string Nome da rua
number string Número
neighborhood string Bairro
city string Cidade
state string Estado (UF)
postalCode string CEP

Roteirização

Enviar problema

curl --location --request POST 'https://api.iroute.itrackbrasil.com.br/api/routings' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br' \
--data-raw '{
    "properties": {
        "noToll": false,
        "avoidFerry": false,
        "routeOptimizationType": "time",
        "isOrdered": false,
        "maxDrivingTime": false,
        "workingTime": false,
        "customerTimeWindow": false,
        "zmrc": false,
        "rodiziosp": false
    },
    "startPoint": {
        "address": "Rua São Francisco, Sé, 01005020, São Paulo, São Paulo, SP",
        "city": "São Paulo",
        "state": "São Paulo",
        "neighborhood": "Sé",
        "streetName": "Rua São Francisco",
        "postalCode": "01005020",
        "number": "",
        "country": "Brasil",
        "lng": -46.637855,
        "lat": -23.54922
    },
    "stopPoints": [ 
        {
          "address": "Rua Andrade Neves, 381, Guarani, 93520560, Novo Hamburgo, Rio Grande do Sul, RS",
          "city": "Novo Hamburgo",
          "state": "Rio Grande do Sul",
          "neighborhood": "Guarani",
          "streetName": "Rua Andrade Neves",
          "number": "381",
          "lat": -29.675782569342015,
          "lng": -51.128091947256486,
          "postalCode": "93520560",
          "weight": 0,
          "volume": 0,
          "monetaryValue": 0,
          "serviceTime": 0,
          "stopPointName": "",
          "stopPointPhone": "",
          "danfe": "",
          "nfdoc": "",
          "cnpj": "",
          "embarcadorCNPJ": "",
          "embarcadorNome": "",
          "transportadorCNPJ": "",
          "transportadorNome": "",
          "customerTimeWindowStart": "2021-03-23T11:00:08.421Z",
          "customerTimeWindowEnd": "2021-03-23T20:00:08.421Z"
        }
    ],
    "endPoint": {
        "address": "Rua Direita 32, Sé, 01002901, São Paulo, São Paulo, SP",
        "city": "São Paulo",
        "state": "São Paulo",
        "neighborhood": "Sé",
        "streetName": "Rua Direita 32",
        "postalCode": "01002901",
        "number": "",
        "country": "Brasil",
        "lng": -46.6341,
        "lat": -23.5489
    },
    "vehicles": [
        {
        "name": "Cleitinhoooo",
        "cpf": "1234",
        "maxLoad": 100,
        "maxVolume": 10,
        "maxMonetaryValue": 150,
        "licensePlate": null,
        "consumption": 10,
        "averageSpeed": 50,
        "fuel": "diesel",
        "maxDrivingTime": null,
        "workingTimeStart": null,
        "workingTimeEnd": null

        }
    ]
}'
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/routings',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br'
  },
  body: JSON.stringify(
    {
    "properties": {
        "noToll": false,
        "avoidFerry": false,
        "routeOptimizationType": "time",
        "isOrdered": false,
        "maxDrivingTime": false,
        "workingTime": false,
        "customerTimeWindow": false,
        "zmrc": false,
        "rodiziosp": false
    },
    "startPoint": {
        "address": "Rua São Francisco, Sé, 01005020, São Paulo, São Paulo, SP",
        "city": "São Paulo",
        "state": "São Paulo",
        "neighborhood": "",
        "streetName": "Rua São Francisco",
        "postalCode": "01005020",
        "number": "",
        "country": "Brasil",
        "lng": -46.637855,
        "lat": -23.54922
    },
    "stopPoints": [
        {
            "address": "Rua Andrade Neves, 381, Guarani, 93520560, Novo Hamburgo, Rio Grande do Sul, RS",
            "city": "Novo Hamburgo",
            "state": "Rio Grande do Sul",
            "neighborhood": "Guarani",
            "streetName": "Rua Andrade Neves",
            "number": "381",
            "lat": -29.675782569342015,
            "lng": -51.128091947256486,
            "postalCode": "93520560",
            "weight": 0,
            "volume": 0,
            "monetaryValue": 0,
            "serviceTime": 0,
            "stopPointName": "",
            "stopPointPhone": "",
            "danfe": "",
            "nfdoc": "",
            "cnpj": "",
            "embarcadorCNPJ": "",
            "embarcadorNome": "",
            "transportadorCNPJ": "",
            "transportadorNome": "",
            "customerTimeWindowStart": "2021-03-23T11:00:08.421Z",
            "customerTimeWindowEnd": "2021-03-23T20:00:08.421Z"
        }
    ],
    "endPoint": {
        "address": "Rua Direita 32, Sé, 01002901, São Paulo, São Paulo, SP",
        "city": "São Paulo",
        "state": "São Paulo",
        "neighborhood": "",
        "streetName": "Rua Direita 32",
        "postalCode": "01002901",
        "number": "",
        "country": "Brasil",
        "lng": -46.6341,
        "lat": -23.5489
    },
    "vehicles": [
        {
            "name": "Cleitinhoooo",
            "cpf": "1234",
            "maxLoad": 100,
            "maxVolume": 10,
            "maxMonetaryValue": 150,
            "licensePlate": null,
            "consumption": 10,
            "averageSpeed": 50,
            "fuel": "diesel",
            "maxDrivingTime": null,
            "workingTimeStart": null,
            "workingTimeEnd": null
        }
    ]
})

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Em caso de sucesso, o sistema retornará 201 (Created) e o JSON será parecido com o da requisição, mas terá o routingId da roteirização

{
    "routingId": "605a2ead8031257fe109daa3",
    "properties": {
        "noToll": false,
        "avoidFerry": false,
        "routeOptimizationType": "time",
        "isOrdered": false,
        "maxDrivingTime": false,
        "workingTime": false,
        "customerTimeWindow": false,
        "zmrc": false,
        "rodiziosp": false
    },
    "startPoint": {
        "address": "Rua São Francisco, Sé, 01005020, São Paulo, São Paulo, SP",
        "city": "São Paulo",
        "state": "São Paulo",
        "neighborhood": "Sé",
        "streetName": "Rua São Francisco",
        "postalCode": "01005020",
        "number": "",
        "country": "Brasil",
        "lng": -46.637855,
        "lat": -23.54922
    },
    "stopPoints": [
        {
            "address": "Rua Andrade Neves, 381, Guarani, 93520560, Novo Hamburgo, Rio Grande do Sul, RS",
            "city": "Novo Hamburgo",
            "state": "Rio Grande do Sul",
            "neighborhood": "Guarani",
            "streetName": "Rua Andrade Neves",
            "number": "381",
            "lat": -29.675782569342015,
            "lng": -51.128091947256486,
            "postalCode": "93520560",
            "weight": 0,
            "volume": 0,
            "monetaryValue": 0,
            "serviceTime": 0,
            "stopPointName": "",
            "stopPointPhone": "",
            "danfe": "",
            "nfdoc": "",
            "cnpj": "",
            "embarcadorCNPJ": "",
            "embarcadorNome": "",
            "transportadorCNPJ": "",
            "transportadorNome": "",
            "customerTimeWindowStart": "2021-03-23T11:00:08.421Z",
            "customerTimeWindowEnd": "2021-03-23T20:00:08.421Z",
            "id": "STOPPOINT_0",
            "rodizioSp": false,
            "zmrc": false
        }
    ],
    "endPoint": {
        "address": "Rua Direita 32, Sé, 01002901, São Paulo, São Paulo, SP",
        "city": "São Paulo",
        "state": "São Paulo",
        "neighborhood": "Sé",
        "streetName": "Rua Direita 32",
        "postalCode": "01002901",
        "number": "",
        "country": "Brasil",
        "lng": -46.6341,
        "lat": -23.5489
    },
    "vehicles": [
        {
            "name": "Cleitinhoooo",
            "cpf": "1234",
            "maxLoad": 100,
            "maxVolume": 10,
            "maxMonetaryValue": 150,
            "licensePlate": null,
            "consumption": 10,
            "averageSpeed": 50,
            "fuel": "diesel",
            "maxDrivingTime": null,
            "workingTimeStart": null,
            "workingTimeEnd": null,
            "key": "VEHICLE_0"
        }
    ]
}

Requisição HTTP

POST https://api.iroute.itrackbrasil.com.br/api/routings

Corpo da Requisição

Parâmetro Formato Descrição Validação
properites json Propriedades da roteirização. Vide tabela properties. Obrigatório
startPoint json Ponto de partida. Vide tabela Start/End Point Obrigatório
endPoint json Ponto de chegada. Vide tabela Start/End Point -
stopPoints array Pontos de parada (destinos). Vide tabela StopPoint. -
vehicles array Veículos. Vide tabela veículo Obrigatório ao menos 1

Properties

Parâmetro Formato Descrição Validação
noToll boolean Flag para indicar se a roteirização deve evitar pedágio Obrigatório
avoidFerry false Flag para indicar se a roteirização deve evitar balsa Obrigatório
routeOptimizationType string Tipo de otimização. Valores aceitos: "time", "distance" e "morefwys". Otimização por tempo, distância ou preferindo rodovias respectivamente. Obrigatório
isOrdered boolean Flag para indicar se os destinos devem permanecer na mesma ordem Obrigatório
maxDrivingTime boolean Flag para indicar se a restrição "Tempo máximo de viagem do veículo" deve ser respeitada Obrigatório
workingTime boolean Flag para indicar se a restrição "Horário de trabalho do veículo" deve ser respeitada Obrigatório
customerTimeWindow boolean Flag para indicar se a restrição "Horário de atendimento do ponto de parada" deve ser respeitada Obrigatório
zmrc boolean Flag para indicar se a restrição "Evitar a Zona Máxima de Restrição de Circulação - São Paulo" deve ser respeitada Obrigatório
rodiziosp boolean Flag para indicar se a restrição "Evitar a Zona de Rodízio de São Paulo" deve ser respeitada Obrigatório

Start/End Point

Parâmetro Formato Descrição Validação
address string Endereço completo. Esse campo é uma "etiqueta" do endereço. -
city string Cidade -
state string Estado (UF) -
neighborhood string Bairro -
streetName string Nome da rua -
postalCode string CEP -
number string Número -
lng double Latitude Obrigatório
lat double Longitude Obrigatório

Stop Point

Parâmetro Formato Descrição Validação
address string Endereço completo. Esse campo é uma "etiqueta" do endereço. -
city string Cidade -
state string Estado (UF) -
neighborhood string Bairro -
streetName string Nome da rua -
postalCode string CEP -
number string Número -
lng double Latitude Obrigatório
lat double Longitude Obrigatório
weight double Peso -
volume double Volume -
monetaryValue double Valor monetário -
serviceTime string Duração do serviço/entrega -
stopPointName string Razão Social Destinatário -
stopPointPhone string Telefone Destinatário -
danfe string DANFE -
nfdoc string N.F/DOC -
cnpj string CPF/CNPJ Destinatário -
embarcadorCNPJ string Embarcador CNPJ -
embarcadorNome string Embarcador Nome -
transportadorCNPJ string Transportador CNPJ -
transportadorNome string Transportador Nome -
customerTimeWindowStart Date UTC in ISO FOrmat (YYYY-MM-DDTHH:MM:SSZ)) Início horário de atendimento. Apenas o horário é considerado. -
customerTimeWindowEnd Date UTC in ISO FOrmat (YYYY-MM-DDTHH:MM:SSZ)) Fim horário de atendimento. Apenas o horário é considerado. -

Veículo

Parâmetro Formato Descrição Validação
name string Nome do veículo -
cpf string CPF do motorista -
maxLoad string Peso máximo -
maxVolume string Volume máximo -
maxMonetaryValue string Valor monetário máximo -
maxDrivingTime string Tempo máximo de viagem -
workingTimeStart string Horário de início do trabalho -
workingTimeEnd string Horário de fim do trabalho -
consumption string Consumo de compustível -
averageSpeed string Velocidade média -
fuel string Tipo de combustível. Valores aceitos: "diesel", "ethanol", "gasoline", "specialGasoline", "gnv". -
licensePlate string Placa do veículo. Format AAA-0000 ou AAA-0A00 -

Buscar solução

curl --location --request GET 'https://api.iroute.itrackbrasil.com.br/api/routings/6059dff28031257fe109d90b' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br'
var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/routings/6059dff28031257fe109d90b',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br'
  }
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

A requisição retornará um JSON conforme o exemplo abaixo

{
    "routingId": "6059dff28031257fe109d90b",
    "name": null,
    "optimizationType": "time",
    "startTime": null,
    "routes": [
        {
            "id": 0,
            "type": "assigned",
            "points": [
                {
                    "address": "BETIM, MINAS GERAIS, MG, BRASIL, 3106705",
                    "city": "BETIM",
                    "state": "MINAS GERAIS",
                    "neighborhood": "",
                    "streetName": "",
                    "postalCode": "",
                    "number": "",
                    "country": "Brasil",
                    "lng": -44.1991,
                    "lat": -19.9676,
                    "weight": 0,
                    "volume": 0,
                    "monetaryValue": 0,
                    "serviceTime": 0,
                    "stopPointName": "",
                    "stopPointPhone": "",
                    "danfe": "",
                    "nfdoc": "",
                    "cnpj": "",
                    "embarcadorCNPJ": "",
                    "embarcadorNome": "",
                    "transportadorCNPJ": "",
                    "transportadorNome": "",
                    "customerTimeWindowStart": "2021-03-23T11:00:24.626Z",
                    "customerTimeWindowEnd": "2021-03-23T20:00:24.627Z",
                    "order": 0
                },
                {
                    "address": "ASSIS, SÃO PAULO, SP, BRASIL, 3504008",
                    "city": "ASSIS",
                    "state": "SÃO PAULO",
                    "neighborhood": "",
                    "streetName": "",
                    "postalCode": "",
                    "number": "",
                    "country": "Brasil",
                    "lng": -50.4044,
                    "lat": -22.6606,
                    "weight": 0,
                    "volume": 0,
                    "monetaryValue": 0,
                    "serviceTime": 0,
                    "stopPointName": "",
                    "stopPointPhone": "",
                    "danfe": "",
                    "nfdoc": "",
                    "cnpj": "",
                    "embarcadorCNPJ": "",
                    "embarcadorNome": "",
                    "transportadorCNPJ": "",
                    "transportadorNome": "",
                    "customerTimeWindowStart": null,
                    "customerTimeWindowEnd": null,
                    "id": "STOPPOINT_0",
                    "rodizioSp": false,
                    "zmrc": false,
                    "order": 1,
                    "deliveryStartDate": 1616582611745,
                    "deliveryEndDate": 1616582611745
                },
                {
                    "address": "BETIM, MINAS GERAIS, MG, BRASIL, 3106705",
                    "city": "BETIM",
                    "state": "MINAS GERAIS",
                    "neighborhood": "",
                    "streetName": "",
                    "postalCode": "",
                    "number": "",
                    "country": "Brasil",
                    "lng": -44.1991,
                    "lat": -19.9676,
                    "weight": 0,
                    "volume": 0,
                    "monetaryValue": 0,
                    "serviceTime": 0,
                    "stopPointName": "",
                    "stopPointPhone": "",
                    "danfe": "",
                    "nfdoc": "",
                    "cnpj": "",
                    "embarcadorCNPJ": "",
                    "embarcadorNome": "",
                    "transportadorCNPJ": "",
                    "transportadorNome": "",
                    "customerTimeWindowStart": "2021-03-23T11:00:24.626Z",
                    "customerTimeWindowEnd": "2021-03-23T20:00:24.627Z",
                    "order": 2
                }
            ],
            "startDate": 1616544000745,
            "endDate": 1616621154745,
            "cities": [
                "Betim - MG",
                "Assis - SP"
            ]
        }
    ],
    "vehicles": [
        {
            "id": 6619,
            "name": "TB SEIS EIXOS",
            "cpf": null,
            "maxLoad": 25,
            "maxVolume": 25,
            "maxMonetaryValue": null,
            "type": 11,
            "licensePlate": null,
            "year": null,
            "tank": null,
            "model": null,
            "consumption": 2.4,
            "averageSpeed": 50,
            "fuel": "diesel",
            "externalDb": null,
            "externalId": null,
            "vehicleTypeId": 13,
            "vehicleBodyTypeId": 14,
            "maxDrivingTime": null,
            "workingTimeStart": "00:00",
            "workingTimeEnd": "23:59",
            "createdAt": "2017-03-21T20:59:20.000Z",
            "updatedAt": "2020-07-08T19:39:03.000Z",
            "userId": 245,
            "key": "VEHICLE_0",
            "routeId": 0
        }
    ],
    "properties": {
        "noToll": false,
        "avoidToll": false,
        "avoidFerry": true,
        "startLunch": null,
        "lunchDuration": 0,
        "isSimpleRoute": false,
        "routingConfig": {
            "deliveryWeight": false,
            "deliveryMonetaryValue": false,
            "description": false,
            "deliveryVolume": false,
            "deliveryDuration": false
        },
        "routeOptimizationType": "time",
        "isOrdered": false,
        "maxDrivingTime": false,
        "workingTime": false,
        "customerTimeWindow": false,
        "zmrc": false,
        "rodiziosp": false,
        "avoidUnpavedRoad": true
    },
    "status": "success",
    "userId": 245,
    "isLocked": false,
    "toll": [
        {
            "responseJsonString": {
                "legs": [
                    {
                        "tolls": [
                            {
                                "id": "529",
                                "name": "Pedágio - Itaúna",
                                "address": "MG 050 - Km 81",
                                "concession": "Nascentes Das Gerais",
                                "coordinates": {
                                    "latitude": -20.0395849,
                                    "longitude": -44.5332458
                                },
                                "serviceTypes": [
                                    {
                                        "serviceId": "353",
                                        "name": "Via Facil"
                                    },
                                    {
                                        "serviceId": "31310500810000103",
                                        "name": "ANTTCODE"
                                    }
                                ],
                                "price": 38.4
                            },
                            {
                                "id": "525",
                                "name": "Pedágio - Córrego das Colheres",
                                "address": "MG 050 - Km 140,5",
                                "concession": "Nascentes Das Gerais",
                                "coordinates": {
                                    "latitude": -20.1934029,
                                    "longitude": -44.9976883
                                },
                                "serviceTypes": [
                                    {
                                        "serviceId": "363",
                                        "name": "Via Facil"
                                    },
                                    {
                                        "serviceId": "31310501405000103",
                                        "name": "ANTTCODE"
                                    }
                                ],
                                "price": 38.4
                            }
                        ],
                        "legTotalCost": 78.6
                    }
                ],
                "totalCost": 78.6
            },
            "id": 31221,
            "routeId": 0,
            "createdAt": "2021-03-23T12:35:29.000Z",
            "updatedAt": "2021-03-23T12:35:29.000Z",
            "routingId": 3075933
        }
    ]
}

Requisição HTTP

GET https://api.iroute.itrackbrasil.com.br/api/routings/<routingId>

Corpo da resposta

Há propriedades não documentadas pois algumas não são de uso e outras foram documentadas anteriormente na seção Enviar problema

Parâmetro Formato Descrição
routingId string ID da Roteirização
optimizationType string Tipo de otimização utilizado
routes array Lista de rotas. Veja a tabela Route
vehicles array Lista de veículos. Veja a tabela Veículo
toll object Lista de pedágios. Veja a tabela Toll

Route

Parâmetro Formato Descrição
id integer ID da rota
type string Tipo da rota. Os valores são "assigned" e "unassigned". As rotas "unassigned" contem os pontos de parada orfãos.
points array Lista de pontos de parada. Veja a tabela Stop point.
startDate Date in timestamp Horário de início da rota
endDate Date in timestamp Horári de fim da rota
cities array Lista de cidades que a rota passou

Stop Point Result

Abaixo estão listados as propriedades que são acrescentadas no stop point quando busca-se o resultado da roteirização. As demais propriedades estão na tabela Stop point.

Parâmetro Formato Descrição
order integer Ordem do ponto de parada
deliveryStartDate Date in timestamp Horário de chegada no ponto de parada
deliveryEndDate Date in timestamp Horário de saída do ponto de parada

Buscar a viagem da rota

curl --location --request GET 'https://api.iroute.itrackbrasil.com.br/api/routings/605a2c948031257fe109da8d/0/trip' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br' 

var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/routings/605a2c948031257fe109da8d/0/trip',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br'
  }
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

A requisição retornará um JSON conforme o exemplo abaixo

{
    "id": "605a2ca4dd5517788ea4d8ee",
    "clientId": "t0EN7wN4nlV68YG4OnyGoZaF2cSgmMyG",
    "totalDistance": 1381,
    "totalNominalDuration": 124,
    "averageSpeed": 40.09,
    "totalSpeedProfilePenalty": 0,
    "legs": [
        {
            "distance": 3,
            "nominalDuration": 0,
            "averageSpeed": 9223372036854776000,
            "speedProfilePenalty": 0,
            "points": [
                {
                    "latitude": -23.549212564693736,
                    "longitude": -46.63784865278734
                },
                {
                    "latitude": -23.549231666551965,
                    "longitude": -46.637826276324844
                }
            ]
        },
        {
            "distance": 1378,
            "nominalDuration": 124,
            "averageSpeed": 40.01,
            "speedProfilePenalty": 0,
            "points": [
                {
                    "latitude": -23.549231666551965,
                    "longitude": -46.637826276324844
                },
                {
                    "latitude": -23.549313,
                    "longitude": -46.637731
                },
                {
                    "latitude": -23.549357,
                    "longitude": -46.63767
                },
                {
                    "latitude": -23.549386,
                    "longitude": -46.637613
                },
                {
                    "latitude": -23.549427,
                    "longitude": -46.637457
                },
                {
                    "latitude": -23.549515,
                    "longitude": -46.637049
                },
                {
                    "latitude": -23.549568,
                    "longitude": -46.636659
                },
                {
                    "latitude": -23.549627,
                    "longitude": -46.636305
                },
                {
                    "latitude": -23.550072,
                    "longitude": -46.634111
                },
                {
                    "latitude": -23.551766,
                    "longitude": -46.634943
                },
                {
                    "latitude": -23.552471,
                    "longitude": -46.633233
                },
                {
                    "latitude": -23.552493,
                    "longitude": -46.63307
                },
                {
                    "latitude": -23.552502,
                    "longitude": -46.632914
                },
                {
                    "latitude": -23.550469,
                    "longitude": -46.631909
                },
                {
                    "latitude": -23.550342,
                    "longitude": -46.631879
                },
                {
                    "latitude": -23.550217,
                    "longitude": -46.631878
                },
                {
                    "latitude": -23.549855,
                    "longitude": -46.631951
                },
                {
                    "latitude": -23.549387,
                    "longitude": -46.63209
                },
                {
                    "latitude": -23.5495,
                    "longitude": -46.633057
                },
                {
                    "latitude": -23.5495,
                    "longitude": -46.633092
                },
                {
                    "latitude": -23.549497,
                    "longitude": -46.633111
                },
                {
                    "latitude": -23.549487,
                    "longitude": -46.633125
                },
                {
                    "latitude": -23.549035,
                    "longitude": -46.633657
                }
            ]
        }
    ],
    "source": "MAPLINK",
    "createdAt": 1616522405868
}

Requisição HTTP

https://api.iroute.itrackbrasil.com.br/api/routings/<routingId>/<routeId>/trip

Corpo da resposta

Parâmetro Formato Descrição
id string ID da request
totalDistance integer Distância total em metros
totalNominalDuration integer Duração nominal em segundos
averageSpeed double Velocidade média em hm/h
legs array Lista de trechos da viagem. Veja a tabela Legs

Os trechos de viagem servem para inserir a viagem no mapa.

Legs

Parâmetro Formato Descrição
distance string Distância do trecho em metros
nominalDuration string Duração nominal do trecho em segundos
avegareSpeed string Velocidade média em km/h
point.latitude double Latitude
point.longitude double Longitude

Pedágio

Calcular Pedágio

curl --location --request POST 'https://api.iroute.itrackbrasil.com.br/api/toll' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br' \
--data-raw '{"routingId":"6047748690bbab74a0744847","routeId":0,"vehicleTypeId":2,"points":[{"lat":-23.576264891599898,"lng":-46.444125663773974},{"lat":-23.576149,"lng":-46.444193},{"lat":-23.575375,"lng":-46.444676},...'
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/toll',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br'
  },
  body: JSON.stringfy(
    {
      "routingId": "6047748690bbab74a0744847",
      "routeId": 0,
      "vehicleTypeId": 2,
      "points": [
          {
              "lat": -23.576264891599898,
              "lng": -46.444125663773974
          },
          {
              "lat": -23.576149,
              "lng": -46.444193
          },
          {
              "lat": -23.575375,
              "lng": -46.444676
          },
          ...
      ]
    }
  )

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

A requisição retornará um JSON conforme o exemplo abaixo

{
            "responseJsonString": {
                "legs": [
                    {
                        "tolls": [
                            {
                                "id": "529",
                                "name": "Pedágio - Itaúna",
                                "address": "MG 050 - Km 81",
                                "concession": "Nascentes Das Gerais",
                                "coordinates": {
                                    "latitude": -20.0395849,
                                    "longitude": -44.5332458
                                },
                                "serviceTypes": [
                                    {
                                        "serviceId": "353",
                                        "name": "Via Facil"
                                    },
                                    {
                                        "serviceId": "31310500810000103",
                                        "name": "ANTTCODE"
                                    }
                                ],
                                "price": 38.4
                            },
                            {
                                "id": "525",
                                "name": "Pedágio - Córrego das Colheres",
                                "address": "MG 050 - Km 140,5",
                                "concession": "Nascentes Das Gerais",
                                "coordinates": {
                                    "latitude": -20.1934029,
                                    "longitude": -44.9976883
                                },
                                "serviceTypes": [
                                    {
                                        "serviceId": "363",
                                        "name": "Via Facil"
                                    },
                                    {
                                        "serviceId": "31310501405000103",
                                        "name": "ANTTCODE"
                                    }
                                ],
                                "price": 38.4
                            }
                        ],
                        "legTotalCost": 76.8
                    }
                ],
                "totalCost": 76.8
            },
            "id": 31221,
            "routeId": 0,
            "createdAt": "2021-03-23T12:35:29.000Z",
            "updatedAt": "2021-03-23T12:35:29.000Z",
            "routingId": 3075933
        }

Requisição HTTP

POST https://api.iroute.itrackbrasil.com.br/api/toll

Corpo da requisição

Parâmetro Formato Descrição
routingId string ID da roteirização
routeId integer ID da rota
vehicleTypeId integer ID do tipo de veículo. Veja a tabela Tipos de veículo
points array Lista de coordenadas. Essa lista de coordenadas deve ser extraída do serviço Buscar a viagem da rota
points.lat double latitude
points.lng double longitude

Tipos de veículo

ID Eixos Descrição
1 1 Moto
2 2 Carro
3 3 Carro com três eixos simples
4 4 Carro com quatro eixos simples
5 2 Ônibus com dois eixos duplos
6 3 Ônibus com três eixos duplos
7 2 Caminhão com dois eixos duplos
8 3 Caminhão com três eixos duplos
9 4 Caminhão com quatro eixos duplos
10 5 Caminhão com cinco eixos duplos
11 6 Caminhão com seis eixos duplos
12 7 Caminhão com sete eixos duplos
13 8 Caminhão com oito eixos duplos
14 9 Caminhão com nove eixos duplos
15 4 Ônibus com quatro eixos duplos
16 5 Ônibus com cinco eixos duplos

Corpo da resposta

A tabela corresponde as praças de pegádio. O caminho do JSON é .responseJsonString.legs[].tolls

Parâmetro Formato Descrição
id string ID da praça de pedágio
name string Nome da praça de pedágio
address string Endereço da praça de pedágio
concession string Concessionária da praça de pedágio
coordinates.latitude double Latitude da praça de pedágio
coordinates.longitude double Longitude da praça de pedágio
serviceTypes[].serviceId string ID do serviço de passagem automática
serviceTypes[].name string Nome do serviço de passagem automática
price double Preço do pedágio

Integração iTrack

Enviar todas as cargas para iTrack

curl --location --request POST 'https://api.iroute.itrackbrasil.com.br/api/routings/6047748690bbab74a0744847/itrack/UserCarga' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br'
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/routings/6047748690bbab74a0744847/itrack/UserCarga',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br'
  }
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Requisição HTTP

POST https://api.iroute.itrackbrasil.com.br/api/routings/<routingId>/itrack/UserCarga

O serviço retorna o status 200 e sem conteúdo de resposta.

Enviar apenas as cargas de uma rota específica para iTrack

curl --location --request POST 'https://api.iroute.itrackbrasil.com.br/api/routings/6047748690bbab74a0744847/0/itrack/UserCarga' \
--header 'X-Token: yourtoken' \
--header 'X-User-Email: youremail@itrackbrasil.com.br'
var request = require('request');
var options = {
  'method': 'POST',
  'url': 'https://api.iroute.itrackbrasil.com.br/api/routings/6047748690bbab74a0744847/0/itrack/UserCarga',
  'headers': {
    'X-Token': 'yourtoken',
    'X-User-Email': 'youremail@itrackbrasil.com.br'
  }
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Requisição HTTP

POST https://api.iroute.itrackbrasil.com.br/api/routings/<routingId>/<routeId>/itrack/UserCarga

O serviço retorna o status 200 e sem conteúdo de resposta.

Erros

Codigo do Erro Descrição
400 Request incorreta -- Problemas na requisição. Valide os parâmetros e tente novamente
401 Não autorizado -- Token inválido - expirado ou incorreto
404 Não encontrado -- O endpoint solicitado não foi encontrado
502 Erro ao resolver DNS -- Serviço está passando por alguma atualização
500 Erro interno do servidor -- Algum problema fora do nosso controle. Tente novamente
503 Serviço indisponível -- Serviço fora do ar para alguma manutenção ou problema de infraestrutura