O objeto routing é o objeto que deverá ser enviado via requisição POST, para dar início a criação da roteirização.
{
"name": "Nome da roteirização",
"site": siteId,
"data": {
"versionProfile": {
"type": "default"
},
"opts": {
"traffic_type": "moderate",
"real_distances": true
},
"constraints": {},
"locations": [],
"depots": [],
"vehicles": []
}
}
O campo "versionProfile" serve para dizer ao sistema qual o foco do algoritmo ao otimizar as rotas, e possui os seguintes "types":
- "shorten_distance": Reduzir a soma da distância total das rotas
- "shorten_distance_B1": Reduzir a soma das distâncias entre as paradas e o trecho de ida até o primeiro serviço
- "shorten_distance_B2": Reduzir a soma das distâncias entre as paradas e o trecho de volta após o último serviço
- "shorten_distance_B3": Reduzir a soma das distâncias entre as paradas e desconsiderar os trechos de ida e volta
- "default": Reduzir a quantidade total de veículos
Já o campo "traffic_type" diz respeito ao tráfego:
- "none": Cadastrado - Velocidades cadastradas nos veículos
- "veryLight": - Desconsidera trânsito (velocidade das vias)
- "light": Rápida - Considera trânsito leve (finais de semana)
- "moderate": Moderado - Considera trânsito moderado (dias da semana)
- "heavy": Lenta - Considera trânsito pesado (dias chuvosos/vésperas de feriado)
Agora você deve popular a propriedade "constraints". Ela é um objeto conforme SCHEMA a seguir Constraints:
{
"delivery_window_daily": {
"enabled": false
},
"delivery_sequence": {
"enabled": false
},
"delivery_priority": {
"enabled": false
},
"delivery_prohibited_vehicles": {
"enabled": false
},
"delivery_exclusive_vehicles": {
"enabled": false
},
"delivery_region": {
"enabled": false
},
"vehicle_breaks": {
"enabled": false
},
"vehicle_maximum_stops": {
"enabled": false
},
"vehicle_maximum_services": {
"enabled": false
},
"vehicle_minimum_filling": {
"enabled": false
},
"vehicle_maximum_filling": {
"enabled": false
},
"vehicle_maximum_travel_time": {
"enabled": false
},
"vehicle_maximum_travel_distance": {
"enabled": false
},
"vehicle_maximum_distance_between_stops": {
"enabled": false
},
"skills": {
"enabled": false
},
"do_not_return_to_depot": {
"enabled": false
},
"consolidate_locations": {
"enabled": false
},
"regions": {
"enabled": false
}
}
Agora você deve popular a propriedade "locations". Ela é um Array de objetos conforme SCHEMA a seguir Locations:
{
"code": "000000000000",
"name": "Cliente 01",
"type": "service",
"service_type": "delivery",
"loads": [],
"address": {
"route": "Rua marilia, 40 - Jardim Paulista, São Paulo - SP, 01420-020, Brazil",
"geocode": {
"lat": -23.5653804,
"lng": -46.6543860,
"source": "google.api.key"
}
},
"geocode_status": "found",
"constraints": {
"skills":[],
"region":"",
"window_daily": [
{
"start_time": "1970-02-01T11:00:00.000Z",
"end_time": "1970-02-01T23:00:00.000Z"
}
]
}
}
Agora você deve popular a propriedade "depots". Ela é um Array de objetos conforme SCHEMA a seguir Depots:
{
"code": "00",
"name": "ROUT01",
"type": "depot",
"constraints": {
"window_daily": [
{
"start_time": "1970-01-01T09:00:00.000Z",
"end_time": "1970-01-01T22:00:00.000Z"
}
]
},
"address": {
"geocode": {
"lat": -23.5653804,
"lng": -46.6543860,
},
"_id": "63ff6f3d2b04d33736f48861",
"country": "Brasil",
"route": "Rua Marilia",
"street_number": "40",
"neighborhood": "Jardim Paulista",
"city": "São Paulo",
"state": "São Paulo",
"postal_code": "07111-080",
"formatted_address": "R. Marilia, 40 - Jardim Paulista, São Paulo - SP, 000000-000, Brasil"
}
}
Agora você deve popular a propriedade "vehicles". Ela é um Array de objetos conforme SCHEMA a seguir Vehicles:
{
"constraints": {
"skills": [],
"fleet_size": 1,
"minimum_filling": [
60,
60,
60,
60,
60,
60
],
"maximum_filling": [
100,
100,
100,
100,
100,
100
],
"maximum_stops": 10,
"maximum_services": 99999,
"maximum_travel_time": 8,
"maximum_travel_distance": 10000,
"maximum_distance_between_stops": 10,
"breaks": [
{
"type": "break",
"service_time": 60,
"constraints": {
"window_daily": [
{
"start_time": "1970-01-01T14:00:00.000Z",
"end_time": "1970-01-01T16:00:00.000Z"
}
]
},
"name": "Lunch"
}
]
},
"leg_option": "roundtrip",
"capacities": [
13000,
50,
100000,
100000,
100000,
100000
],
"quantity_axle": 3,
"type": "Truck",
"name": "Truck",
"fuel_type": {
"name": "diesel"
}
}
Guia de SCHEMAS necessarios:
O objeto routing deve ficar como no exemplo. Agora, o objeto já está pronto para ser enviado. Para isso, faça uma requisição do tipo POST para https://company.routeasy.com.br/routings/go . Como resposta 200 a sua requisição, será recebido o mesmo objeto routing com um campo id.