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:
- Nome da rua
- Número
- Bairro
- Cidade
- Estado
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": "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
}
]
})
};
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
routingIdda 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 |