Para enviar um conjunto de pedidos para serem roteirizados através do Gestão de Pedidos, você precisa enviar uma requisição HTTP do tipo POST para https://company.routeasy.com.br/orders/import passando a api_key Verifique se o plano contratado possui acesso ao módulo Gestão de Pedidos
A api_key é a chave que você receberá da equipe RoutEasy..
Schema do objeto Orders
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
orders | Array | Todas as informações dos pedidos devem vir dentro deste array | Sim |
orders.site | String | ID de Filial | Não ¹ |
orders.service_type | String | Tipo de serviço (delivery/pickup) | Não (Default: "delivery") |
orders.location | Object | Dados referentes ao cliente | Sim |
orders.location.headquarter_code | String | Código agregador do cliente | Não |
orders.location.code | String | Código do cliente | Sim |
orders.location.name | String | Nome do cliente | Sim |
orders.location.address | Object | Dados referentes a localização do cliente | Sim |
orders.location.address.route | String | Logradouro | Sim |
orders.location.address.street_number | String | Número | Sim |
orders.location.address.neighborhood | String | Bairro | Sim |
orders.location.address.city | String | Cidade | Sim |
orders.location.address.state | String | Estado | Sim |
orders.location.address.country | String | País | Não |
orders.location.address.postal_code | String | Postal Code | Não |
orders.location.address.additional_info | String | Complemento | Não |
orders.location.address.geocode | Object | Objeto de Geolocalização | Não |
orders.location.address.geocode.lat | Float | Latitude | Não |
orders.location.address.geocode.lng | Float | Longitude | Não |
orders.location.phone | String | Telefone do cliente | Não |
orders.location.email | String | E-mail do cliente | Não |
orders.location.customer_profile | String | Campo contendo o ID do perfil de cliente | Não |
orders.additional_info | Array de strings | Observação 1, Observação 2, Observação 3, | Não |
orders.location.additional_info (delivery info) | String | Observações | Não |
orders.location.additional_info_1 (delivery info) | String | Inf. Adicionais 1 | Não |
orders.location.additional_info_2 (delivery info) | String | Inf. Adicionais 2 | Não |
orders.constraints | Objeto | Restrições Operacionais | Não |
orders.constraints.priority ² | Number | Prioridade para o atendimento do cliente | Não (Default: 0) |
orders.constraints.sequence | Number | Prioridade na sequência de atendimento do cliente | Não (Default: 0) |
orders.constraints.skills | Array de Strings | Array de Strings contendo características | Não |
orders.constraints.region | String | Região/Cluster do Pedido | Não |
orders.constraints.prohibited_vehicles | Array de Strings | Array de Strings de IDs de veículos proibidos | Não |
orders.constraints.window_daily | Array de Objetos | Array contendo as janelas de atendimento | Não |
orders.constraints.window_daily.start_time | String | Horário de início da janela de atendimento | Não |
orders.constraints.window_daily.end_time | String | Horário de término da janela de atendimento | Não |
orders.loads ³ | Array de Numbers | Capacidades | Não |
orders.items | Array de Objects | Conjunto de Itens contidos no pedido | Não |
orders.items.code | String | Código do item no pedido | Não |
orders.items.name | String | Nome do item no pedido | Não |
orders.items.qty | Number | Quantidade do item no pedido | Não |
orders.invoice_number | String | Nota Fiscal | Não |
orders.order_number | String | Número do Pedido | Sim |
orders.shipment_number | String | Número da Remessa | Não |
orders.service_time | Number | Tempo de atendimento (em minutos) | Não |
orders.schedule_date | Array | Intervalos de data permitidos para realização do atendimento ao cliente | Não |
orders.schedule_date.start_date | Timestamp | Data mínima para chegada no cliente | Não |
orders.schedule_date.end_date | Timestamp | Data máxima para chegada no cliente | Não |
Obs.:
[1]: O campo site só é obrigatório quando a company possui mais de uma filial cadastrada. Caso haja apenas uma, o envio será feito para a única filial existente.
[2] A priority define o nível de importância para o atendimento de um cliente em relação aos demais. Caso as restrições operacionais impeçam que o algoritmo atenda a totalidade dos clientes, os serviços que possuírem maior prioridade terão maiores chances de serem programados em rota do que clientes com baixa prioridade.
[2] O sequence define o nível de importância de um cliente em ser atendido antes dos demais clientes em uma mesma rota. Clientes com maior prioridade no sequenciamento serão programados pelo algoritmo para serem atendidos sempre antes de realizar o atendimento de clientes com menor prioridade, mesmo que seja necessário elevar a distância total da rota para respeitar essa restrição. Clientes que possuem a mesma sequence na rota terão a sua sequência de atendimento definida em razão de outras restrições e da busca pela redução da quilometragem total da rota.
[3]: O loads é um array de capacidades. O index[0] é o peso em quilo (kg) e o index[1] é o volume em metros cúbicos (m³). Os demais indexes são usados apenas em casos de multicapacidade.
[4] O formato tanto do start_time quanto do end_time da window_daily deve estar no formato "1970-01-01T10:00:00.000-0300" para horários com o fuso no horário de Brasília, sendo que o início em 1970-01-01 é para window_daily no dia "atual" da roteirização. Caso deseje colocar uma window_daily para dias futuros basta mudar o valor do dia na data (ex. 1970-01-02T10:00:00.000-0300 para uma janela no dia seguinte). E o -0300 ao final indica o fuso horário para o horário de Brasilia (GMT -03:00). Caso queira utilizar UTC no fuso, basta colocar o Z ao final, porém é necessário ajustar o horário (ex. "1970-01-01T10:00:00.000Z" para uma window_daily as 7:00 do horário de Brasilia).