Planning

Lista de Parâmetros

Parâmetros obrigatórios estão denotados com “*”, os demais são opcionais. A lista dos parâmetros estão descritos separados pelos grupos que eles pertencem:

startDate

O parâmetro startDate indica a data e horário de início a ser considerado para todo cálculo do problema logístico.

É um parâmetro obrigatório e deve estar no formato timestamp em milissegundos. Exemplo:

"startDate": 1583492400000

depots*

O parâmetro depots é um array de objetos, onde cada objeto representa um depósito ou centro de distribuição. Pode ser também uma loja física de onde o produto sairá para a entrega.

Os depots serão referenciados nas operações como origem do produto para entrega, ou como destino, caso seja uma operação de coleta.

Na requisição é possível definir um ou mais depots para atender as operações. 

Abaixo os parâmetros disponíveis em depots:

  • name – Texto único do nome do depósito. Usado para referenciar em Operations e identificá-lo no resultado.
  • coordinates – Coordenadas geográficas em graus decimais da latitude e longitude:
    • latitude – Valor numérico em graus decimais. Deve estar entre -90.0 e 90.0. Exemplo: -23.6987.
    • longitude – Valor numérico em graus decimais. Deve estar entre -180.0 e 180.0. Exemplo: -45.7347.
  • logisticConstraints – Texto com referência ao nome da logisticConstraint.
  • logisticZones – (Opcional) Array com os nomes das zonas logísticas nos quais o depot pertence. Devem ser únicos e devem ter o mesmo nome declarado em logisticZones.
"depots": [
        {
            "name": "MG - BELO HORIZONTE DEPÓSITO",
            "coordinates": {
                "latitude": -19.9251768,
                "longitude": -43.9509008
            },
            "logisticConstraints": "DEFAULT",
            "logisticZones": ["bh"]
        },
        {
            "name": "BH - Loja 1",
            "coordinates": {
                "latitude": -19.8849981,
                "longitude": -44.0089124
            },
            "logisticConstraints": "DEFAULT",
            "logisticZones": ["bh"]
        }
]

logisticConstraints*

O parâmetro logisticConstraints é um array de objetos, onde cada objeto representará um grupo de regras logísticas para serem consideradas no planejamento e otimização, como tempo de carga e descarga por exemplo.

Cada regra logística deverá ser associada aos depots ou site ao qual ela se aplica.

  • name – Texto do nome da regra logística. Usado para referenciar em depots e sites.
  • siteLoadingFixedTime – (Opcional) Número inteiro com o tempo fixo de carregamento em segundos.
  • siteUnloadingFixedTime – (Opcional) Número inteiro com o tempo fixo de descarregamento em segundos.
  • loadingMaxSize – (Opcional) Número inteiro com o tamanho máximo do veículo permitido para realizar o carregamento no local. Usado para pontos onde há restrição de acesso para veículos grandes, por exemplo. O tamanho do veículo é definido no parâmetro size em vehicleTypes.
  • unloadingMaxSize – (Opcional) Número inteiro com o tamanho máximo do veículo permitido para realizar o descarregamento no local. Usado para pontos onde há restrição de acesso para veículos grandes, por exemplo. O tamanho do veículo é definido no parâmetro size em vehicleTypes.
  • unloadingPositionInRoute – (Opcional) Posição na rota para o descarregamento. Valores possíveis: [INDIFFERENT, FIRST, LAST, ALONE].
    • Exemplo 1: Se um site estiver com a regra de "unloadingPositionInRoute": "FIRST", a operação deste site será executado em primeiro na rota para realizar a entrega.
    • Exemplo 2: Se um site estiver com a regra de "unloadingPositionInRoute"": "LAST", a operação deste site será executado em último na rota para realizar a entrega.
    • Exemplo 3: Se um site estiver com a regra de "unloadingPositionInRoute"": "ALONE", a operação deste site será executada sozinho, com uma rota exclusiva para realizar a entrega.
    • Exemplo 4: Se um site estiver com a regra de "unloadingPositionInRoute"": "INDIFFERENT", a operação deste site será executada em qualquer posição na rota para a entrega.
  • loadingPositionInRoute – (Opcional) Posição na rota para o carregamento. Valores possíveis: [INDIFFERENT, FIRST, LAST, ALONE].
"logisticConstraints": [
        {
            "name": "Regras-Depot",
            "siteLoadingFixedTime": 1200,
            "loadingMaxSize": 30
        },
        {
            "name": "Regras-Entrega-Rápida",
            "siteUnloadingFixedTime": 300,
            "unloadingPositionInRoute": "FIRST",
            "unloadingMaxSize": 30
        }
],

vehicleTypes*

O parâmetro vehicleTypes é um array de objetos, onde cada objeto representará um tipo de veículo. Tipos de veículos são as características dos veículos que serão usados no planejamento, como peso e volume suportados, por exemplo.

A API verificará a capacidade dos veículos para distribuir os pesos e volumes dos produtos de cada operação para a melhor otimização logística.

Parâmetros Obrigatórios

  • name – Texto único com o tipo de veículo. Usado para ser referenciado em vehicles.
  • maxVolume – Número (double) com o volume máximo suportado pelo veículo.
  • maxWeight – Número (double) com o peso máximo suportado pelo veículo.
  • size – Número inteiro que representa o tamanho do veículo.

Exemplo com parâmetros obrigatórios

"vehicleTypes": [
        {
            "name": "VUC",
            "maxVolume": 20,
            "maxWeight": 1200,
            "size": 1
        },
        {
            "name": "3/4",
            "maxVolume": 30,
            "maxWeight": 1500,
            "size": 1
        }
],

Parâmetros Opcionais

  • characteristics – Texto livre para descrever características do veículo.
  • maxSitesNumber – Número inteiro com a quantidade máxima de sites que o veículo visitará por rota.
  • minAvaibleCapacityForCollection – Número inteiro entre 0 e 100, que indica qual a porcentagem mínima de capacidade disponível o veículo deve ter para iniciar as atividades de coleta. Por exemplo, se for 0, as coletas podem ser feitas a qualquer momento durante a rota. Se for 100, as coletas só serão realizadas com o veículo completamente vazio. O valor padrão é 100.
  • compartmentsAccessMode – Texto com o modo de acesso ao compartimento de carga do veículo. Valores permitidos:
    •  ALL_COMPARTMENTS – Indica possível acesso a todos os compartimentos;
    •  REAR_ACCESS – Acesso apenas ao compartimento traseiro do veículo;
  • compartmentConfigurations – Array com as características do compartimento de carga.
    • name – (Obrigatório) Texto único com o nome do compartimento;
    • loadingRule – (Obrigatório) Número inteiro com a regra considerada para o carregamento do compartimento. Valores possíveis:
      • NONESem regra definida;
      • IDENTICAL_PACKAGINGSCompartimento só aceitará produtos que sejam do mesmo package;
      • SINGLE_OPERATION – Compartimento poderá ser usado apenas em uma única operação por rota;
      • IDENTICAL_PRODUCTSCompartimento só aceitará um tipo de produto;
      • IDENTICAL_SITE_PRODUCTS – Compartimento só aceitará um tipo de produto e que seja do mesmo site;
    • maximumCapacity – (Obrigatório) Número decimal com a capacidade máxima do compartimento em volume.
    • increment – Número decimal com o incremento da capacidade do compartimento.
    • allowedPackagings – Array com os nomes dos pacotes permitidos a serem carregados no compartimento. Deve ser único em um tipo de compartimento.
  • trip – Indica que além da ordenação dos pontos logísticos, a rota também deve ser retornada.  Todos os parâmetros aceitos pela Trip API são aceitos aqui.

Exemplo com parâmetros opcionais

Este exemplo mostra como descrever características de dois veículos diferentes: o primeiro uma moto "Moto" e o segundo um carro "Carro". A "Moto" possui capacidade de carga menor porém em seu compartimento pode carregar pacotes de nome "Carga_Resistente". "Carro" possui capacidade de carga maior, mas só pode carregar pacotes de nome "Carga_fragil".

Assim podemos detalhar que tipo de pacote/produto um veículo pode carregar e o outro não.

"vehicleTypes": [
    {
        "name": "Moto",
        "maxWeight": 100,
        "maxVolume": 50,
        "size": 30,
        "maxSitesNumber": 24,
        "minAvaibleCapacityForCollection": 0, 
        "characteristics": null,
        "compartmentsAccessMode": "REAR_ACCESS",
        "compartmentConfigurations": [
            {
                "name": "compartimentoMoto",
                "compartments": [
                    {
                        "name": "bau_moto",        
                        "maximumCapacity": 1000,
                        "loadingRule": "NONE",
                        "allowedPackagings": [
                            "Carga_Resistente"
                        ]
                    }
                ]
            }
        ],
        "trip": {
            "calculationMode": "THE_FASTEST",
            "toll": {
                "vehicleType": "MOTORCYCLE"
            }
        }
    },
    {
        "name": "Carro",
        "maxWeight": 400,
        "maxVolume": 100,
        "size": 30,
        "maxSitesNumber": 24,
        "minAvaibleCapacityForCollection": 0, 
        "characteristics": null,
        "compartmentsAccessMode": "REAR_ACCESS",
        "compartmentConfigurations": [
            {
                "name": "compartimentoCarro",
                "compartments": [
                    {
                        "name": "porta_malas",                       
                        "maximumCapacity": 1000,
                        "loadingRule": "NONE",
                        "allowedPackagings": [
                            "Carga_fragil"
                        ]
                    }
                ]
            }
        ],
        "trip": {
            "calculationMode": "THE_FASTEST",
            "toll": {
                "vehicleType": "MOTORCYCLE"
            }
        }
    }
],

vehicles*

O parâmetro vehicles é um array de objetos, onde cada objeto representará um veículo disponível para realizar as atividades das operações, que compõem a frota para atender o planejamento logístico.

Em cada objeto em vehicles será definido o local de origem e retorno e também o horário disponível para realizar as operações.

Parâmetros Obrigatórios

  • name – Texto único com o nome do veículo. Usado para ser referenciado em operations e para identificação do veículo que irá executar a rota.
  • vehicleType – Texto com o tipo de veículo declarado em vehicleTypes.
  • legislationProfile – Texto com o perfil de legislação, declarado em legislationProfiles.
  • availablePeriods – Descreve características da jornada de trabalho disponível do motorista do veículo. Há parâmetros obrigatórios e opcionais. Os obrigatórios são:
    • start – Horário de início que se iniciará a jornada de trabalho. Formato timestamp em milissegundos. Exemplo: 1511901826456.
    • end  – Horário de fim que se encerrará a jornada de trabalho. Formato timestamp em milissegundos. Exemplo: 1511904661038.

Exemplo com parâmetros obrigatórios

"vehicles": [
    {
        "name": "VUC_1",
        "vehicleType": "VUC",
        "legislationProfile": "DEFAULT",
        "availablePeriods": [
            {
                "timeWindow": {
                    "start": 1513753200000,
                    "end": 1513796400000
                }
            }
        ]
    }


],

Parâmetros Opcionais

  • availablePeriods – Descreve características da jornada de trabalho disponível do motorista do veículo. Os parâmetros opcionais são:
    • departureSite – Texto com o local de partida do veículo no início da rota. Se não declarado a Planning API decidirá o depot de início.
    • arrivalSite – Texto com o local de retorno do veículo no final da rota. Se não declarado, a Planning API decidirá qual o último site da última operação para finalizar a rota.
    • maxRoutesNumber – Número inteiro com a quantidade de rotas máximas para o período disponível. Por exemplo, se "maxRoutesNumber": 1, o veículo executará todas as operações na mesma rota.
  • legislationProfile – Texto com o perfil de legislação, declarado em legislationProfiles.
  • logisticZones – Array com os nomes das zonas logísticas em que o veículo poderá realizar as operações. Devem ser únicos e devem ter o mesmo nome declarado em logisticZones

Exemplo com parâmetros opcionais

Este exemplo mostra dois produtos, do mesmo tipo, que estão associados a pacotes diferentes. Podemos usar o parâmetro packagings para posteriormente associar ao tipo de veículo que irá transportar o produto.

"vehicles": [
    {
        "name": "154",
        "vehicleType": "Moto",
        "legislationProfile": "DEFAULT",
        "availablePeriods": [
            {
                "timeWindow": {
                    "start": 1611057600000,
                    "end": 1611082800000
                },
                "departureSite": "maam2",
                "arrivalSite": "maam2",
                "maxRoutesNumber": 1
            }
        ]
        "logisticZones": ["CE - ZONA LESTE","CE - ZONA SUL"]
    },
    {
        "name": "150",
        "vehicleType": "Carro",
        "legislationProfile": "DEFAULT",
        "availablePeriods": [
            {
                "timeWindow": {
                    "start": 1611057600000,
                    "end": 1611082800000
                },
                "departureSite": "fkebvlkbvgrvg",
                "arrivalSite": "ufwevidevgre",
                "maxRoutesNumber": 1
            }
        ],
        "logisticZones": ["CE - ZONA NORTE","CE - ZONA OESTE"]
    }
]

products*

O parâmetro products é um array de objetos, onde cada objeto representará um produto a ser transportados pelos veículos. Cada produto deverá ser associado a uma operação.

Também é possível definir pacotes, ou packagings, para associar os produtos a um tipo de veículo específico.

Abaixo os parâmetros disponíveis em products:

  • name – Texto único com o nome do produto. Usado para ser referenciado em operations.
  • type – (Opcional) Texto com a descrição do tipo do produto. Usado para identificação de grupos e categorias.
  • packagings – (Opcional) Array com os nomes dos pacotes associados ao produto. 

Exemplo

Este exemplo mostra dois produtos, de mesmo tipo, que estão associados a pacotes diferentes. Podemos usar o parâmetro packagings para posteriormente associar ao tipo de veículo que irá transportar o produto.

"products": [
        {
            "name": "Vidro",
            "type": "Bebidas",
            "packagings": ["Carga_fragil"]
        },
        {
            "name": "Lata",
            "type": "Bebidas",
            "packagings": ["Carga_Resistente"]
        }
]

legislationProfiles*

O parâmetro legislationProfiles é um array de objetos, onde cada objeto representará um perfil de legislação. Cada perfil de legislação definirá as características da jornada de trabalho do motorista, como por exemplo o tempo de direção contínua e hora para intervalo de almoço.

Pode ser criado um ou mais perfis de legislação conforme características da operação, por exemplo, para viagens de mais de um dia.

São referenciados em vehicles para definir qual perfil se aplica ao veículo/motorista.

Abaixo a lista de parâmetros disponíveis em legislationProfiles:

  • name – Texto único com o nome do perfil da legislação. Usado para ser referenciado em vehicles.
  • maxContinuousDrivingTime – (Opcional) Número inteiro com o tempo máximo em segundos de direção contínua.
  • drivingPauseDuration – (Opcional) Número inteiro com o tempo em segundos de pausa para direção. Se aplica após a soma atingida do valor de maxContinuousDrivingTime. Pode ser usado para criar intervalos de almoço ou descanso. No resultado é apresentado como atividade denominada "PAUSE".
  • maxContinuousWorkingTime – (Opcional) Número inteiro com o tempo máximo em segundos de trabalho contínuo. Considera-se workingTime todo o tempo gasto nas atividades de "LOADING"; "DRIVING"; "DELIVERY"; "COLLECTION"; "WAITING".
  • workingPauseDuration – (Opcional) Número inteiro com o tempo em segundos de pausa do trabalho. Considera-se como trabalho as atividades de "LOADING"; "DRIVING"; "DELIVERY"; "COLLECTION"; "WAITING". Esse parâmetro é utilizado em viagens de vários dias em que se aplicará o tempo que o motorista irá descansar ao final do turno do trabalho.

Exemplo

O exemplo abaixo demonstra um perfil de legislação para viagens de múltiplos dias.

  • Em maxContinuousDrivingTime é definido o valor de 3 horas e 45 minutos de direção contínua.
  • Em drivingPauseDuration é definido 1 hora para o intervalo de almoço.
  • Em maxContinuousWorkingTime é definido turno de 8 horas de trabalho.
  • Em workingPauseDuration é definido 15 horas de descanso para iniciar o trabalho no próximo dia.

Assim, o motorista trabalhará as horas de direção e entregas, irá fazer 1 hora de pausa para o almoço, continuará as entregas no período da tarde e ao totalizar 8 horas trabalhadas, descansará 15 horas para iniciar a nova jornada no dia seguinte.

"legislationProfiles": [
    {
        "name": "perfil",
        "maxContinuousDrivingTime": 13500,
        "drivingPauseDuration": 3600,
        "maxContinuousWorkingTime": 28800,
        "workingPauseDuration": 54000
    }
]

sites*

O parâmetro sites é um array de objetos, onde cada objeto representa um local em que deverá ser realizada uma operação de entrega ou de coleta. Devem ser referenciados em operations, para associar o local com a operação.

Também podem ser referenciados em vehicles para definir o local de partida e retorno do motorista.

A cada objeto em sites também pode ser associado uma regra logística para definir por exemplo o tempo gasto para carga e descarga no local.

Abaixo os parâmetros disponíveis em sites:

  • name – Texto único do nome do site. Usado para referenciar em operations e identificar no resultado.
  • coordinates – Coordenadas geográficas em graus decimais da latitude e longitude:
    • latitude – Valor numérico em graus decimais. Deve estar entre -90.0 e 90.0. Exemplo: -23.6987.
    • longitude – Valor numérico em graus decimais. Deve estar entre -180.0 e 180.0. Exemplo: -45.7347.
  • logisticConstraints – Texto com referência ao nome da logisticConstraint.
  • logisticZones – (Opcional) Array com os nomes das zonas logísticas nos quais o site pertence. Devem ser únicos e devem ter o mesmo nome declarado em logisticZones

Exemplo

"sites": [
    {
        "name": "204498250",
        "coordinates": {
            "latitude": -26.2186024,
            "longitude": -48.6656953
        },
        "logisticConstraints": "DEFAULT",
        "logisticZones": ["joinville"]           
    },
    {
        "name": "616188578",
        "coordinates": {
            "latitude": -26.2408157,
            "longitude": -49.3971109
        },
        "logisticConstraints": "DEFAULT",
        "logisticZones": ["sbs"]  
    }
] 

operations*

O parâmetro operations é um array de objetos, onde cada objeto representará uma operação a ser resolvida no planejamento logístico. Cada objeto irá conter as características da operação, como o tipo (entrega ou coleta), janela horária do cliente, peso e volume da entrega, entre outros.

É recomendado ter por requisição até no máximo 200 operações para um melhor desempenho da API.

Parâmetros Obrigatórios

  • customerSite – Texto com o nome do site, local da operação.
  • customerTimeWindows – Janela de horário que o cliente poderá receber a operação:
    • start – Horário de início que o cliente atua na operação. Formato timestamp em milissegundos: 1511901826456.
    • end – Horário de fim que o cliente atua na operação. Formato timestamp em milissegundos: 1511904661038.
  • depotSiteDepósito de origem para a operação. Usado para identificar de qual depósito o produto será embarcado no veículo até a entrega. No caso de operação de coleta, o depósito onde será descarregado o produto.
  • id – Texto único com o identificador da operação.
  • product – Texto único com o nome do produto. Deve estar declarado em products.
  • type – Tipo da operação, de entrega do produto ou coleta do produto. Deve ser um dos seguintes tipos: [COLLECTION, DELIVERY].
  • volume – Número decimal com o volume do produto que será entregue/coletado na operação. É importante estar na mesma unidade em que foi utilizado em vehicleTypes. Por exemplo, metros cúbicos.
  • weight – Número decimal com o peso do produto que será entregue/coletado na operação. É importante estar na mesma unidade em que foi utilizado em vehicleTypes. Por exemplo,  quilogramas.

Exemplo com parâmetros obrigatórios

"operations": [
    {
        "customerSite": "MERCADO02GLICERIO",
        "depotSite": "DEPOSITO01",
        "type": "DELIVERY",
        "customerTimeWindows": [
            {
                "end": 1583506800000,
                "start": 1583499600000
            }
        ],
        "id": "NUMORDEM30",
        "product": "HD_DIVERSOS",
        "volume": 1,
        "weight": 0.15
    },
    {
        "customerSite": "MERCADO10SCAETANO",
        "depotSite": "DEPOSITO01",
        "type": "DELIVERY",
        "customerTimeWindows": [
            {
                "end": 1583528400000,
                "start": 1583492400000
            }
        ],
        "id": "NUMORDEM27",
        "product": "HD_DIVERSOS",
        "volume": 1,
        "weight": 0.15
    }
]

Parâmetros Opcionais

  • customerHandlingDuration – Número inteiro com o tempo em segundos que será gasto no cliente para realizar a operação. Para operações de coleta ("COLLECTION"), utilizar o parâmetro siteLoadingFixedTime  em logisticConstraints.
  • depotHandlingDuration – Número inteiro com o tempo em segundos que será gasto no depot para realizar a operação. Para operações de coleta ("COLLECTION"), utilizar o parâmetro siteUnloadingFixedTime  em logisticConstraints.
  • depotTimeWindows – Janela de horário do depósito em que a operação deve ocorrer. Por exemplo, se for uma operação com atividade de "DELIVERY", o produto será carregado no veículo dentro do depósito neste intervalo de horário (na resposta da API, a atividade aparecerá como "LOADING"). Se for uma operação com atividade de "COLLECTION", o produto chegará no depósito neste intervalo de horário (na resposta da API, a atividade aparecerá como "UNLOADING"):
    • start – Horário de início que o depot atua na operação. Formato timestamp em milissegundos: 1511901826456.
    • end – Horário de fim que o depot atua na operação. Formato timestamp em milissegundos: 1511904661038.
  • group – Texto com o grupo de operações. Usado para agrupar operações de uma mesma localidade de forma manual. As operações que possuírem o mesmo valor serão executadas juntas. Por exemplo, operações em diferentes lojas que ficam em um mesmo shopping.
  • preAllocatedVehicleName – Texto com o nome do veículo que realizará a operação de forma pré-definida. Com isso a Planning API alocará esse veículo associado para colocar a operação em sua rota. Utilize esse parâmetro para exemplos em que um motorista favorito deverá atender um cliente ou um veículo específico precisa realizar a operação.
  • quantity – Número decimal com a quantidade da operação. Apenas para descrição, não interfere no modo em que a operação é processada.

Exemplo com parâmetros opcionais

Este exemplo apresenta 2 operações de entrega para serem realizadas no intervalo das 10:00 até as 12:00 (customerTimeWindows). A operação no MERCADO01MOOCA possui o depotTimeWindows definido para realizar o carregamento no depósito entre 11:00 e 12:00 com duração de 10 minutos (depotHandlingDuration).

Devido a esta característica, o caminhão só sairá do depósito às 11:10 para realizar as duas operações e terá até 12:00 para realizar as duas operações.

Ambas operações são do mesmo "group": "A" e serão atendidas pelo "preAllocatedVehicleName": "VUC01".

"operations": [
    {
        "customerSite": "MERCADO01MOOCA",
        "depotSite": "DEPOSITO01",
        "preAllocatedVehicleName": "VUC01",
        "type": "DELIVERY",
        "customerTimeWindows": [
            {
                "start": 1583499600000,
                "end": 1583506800000
            }
        ],
        "depotTimeWindows": [
            {
                "start": 1583503200000,
                "end": 1583506800000
            }
        ],
        "depotHandlingDuration": 600,
        "id": "NUMORDEM25",
        "product": "HD_DIVERSOS",
        "volume": 12,
        "weight": 1,
        "quantity": 10,
        "group": "A"
    },
    {
        "customerSite": "MERCADO02GLICERIO",
        "depotSite": "DEPOSITO01",
        "preAllocatedVehicleName": "VUC01",
        "type": "DELIVERY",
        "customerTimeWindows": [
            {
                "start": 1583499600000,
                "end": 1583506800000
            }
        ],
        "customerHandlingDuration": 300,
        "id": "NUMORDEM30",
        "product": "HD_DIVERSOS",
        "volume": 1,
        "weight": 0.15,
        "group": "A"
    }
],

logisticZones

O parâmetro logisticZones é um array de objetos, onde cada objeto representará uma zona logística que poderá ser associado aos depots, sites e vehicles para definir a relação entre eles.

Por exemplo, caso seja definida uma zona logística para um veículo, ele irá atender apenas aos sites que pertencem à mesma zona logística.

Abaixo os parâmetros disponíveis em logisticZones:

  • name – Texto do nome da zona logística. Usado para referenciar em depots, vehicles e sites.
  • zonePriority– Prioridade da zona. Influenciará qual zona logística será atendida primeiro. Valores possíveis: [PRIORITARY, SECUNDARY]

Exemplo

"logisticZones": [
        {
            "name": "blumenau",
            "zonePriority": "PRIORITARY"
        },
        {
            "name": "jaragua",
            "zonePriority": "PRIORITARY"
        },
        {
            "name": "joinville",
            "zonePriority": "PRIORITARY"
        }
    ]
}

callback

O parâmetro callback é um objeto que contém os dados do webhook que será utilizado para receber os eventos do cálculo do problema.

Assim não será necessário consultar o status do problema para verificar se o mesmo foi processado. A API irá notificar o webhook quando a solução estiver disponível para consulta.

Os seguintes parâmetros são necessários:

  • url – URL com o endereço que irá receber o callback.
  • user – (Opcional) Texto com o nome do usuário caso o endpoint precisar de autenticação.
  • password – (Opcional) Texto com a senha caso o endpoint precisar de autenticação.

Exemplo

"callback": {
    "password": "nome_usuario",
    "url": "https://enqkbfcos3dhgchuikd.webhook.net",
    "user": "senha"
},

Para mais detalhes, veja: Como receber o estado atual do problema via webhook?


optimizationProfile*

O parâmetro optimizationProfile indica qual perfil de otimização a Planning API usará para processar os dados.  Cada perfil de otimização possui características que serão consideradas para otimizar o problema logístico, sendo cada perfil indicado para um cenário específico.

Exemplo

"optimizationProfile": "BRAZIL46"

Perfis de otimização disponíveis

BRAZIL37: Perfil para problemas grandes, distribuindo as rotas entre veículos ao invés de criar mais de uma rota por veículo. Começa a alocação pelos veículos de maior capacidade.

BRAZIL46: Perfil para problemas menores, construção inicial com mais de 10 locais por rota e tratamento de diversas janelas de atendimento diferentes.

BRAZIL_AVG_LOAD_RATE : Perfil usado para multiple vehicle routing problem (VRP) e tem como característica atender as prioridades das operações e com os critérios de valorização que destacam a capacidade de carga média em volume/peso para os veículos.

BRAZIL_VRP_PICKUP: Perfil usado para multiple vehicle routing problem (VRP). Para casos que precisam realizar rotas permitindo coleta de produtos no depósito  e em outras lojas durante a rota para realizar as entregas. Útil em casos de uso de last mile, onde o veículo irá partir do centro de distribuição e fazer coletas em lojas durante o percurso.


tripsProfile*

tripsProfile é um parâmetro obrigatório na requisição da Planning API para que o cálculo do planejamento logístico considere as características de circulação pelo sistema viário que influenciará na roteirização.

Os valores possíveis são:

  • MAPLINKBR – Para rotas localizadas no Brasil;
  • MAPLINK – Para rotas localizadas pela América Latina;
  • LINEAR – Com esse perfil, o processamento é significativamente mais rápido, mas perde-se precisão, pois o cálculo será feito com base na distância linear (euclidiana) entre os pontos, sem considerar as vias. Recomendado apenas para problemas com pontos distantes entre si.

Exemplo

"tripsProfile": "MAPLINKBR"

trip

O parâmetro trip é um objeto e indica que além da ordenação dos pontos logísticos, as coordenadas que compõem a rota também deverão ser retornadas.  Todos os parâmetros aceitos pela Trip API são aceitos aqui.
Caso o parâmetro já tenha sido declarado em vehicleTypes, será considerado os parâmetros definidos ali para cada tipo de veículo.

Exemplo

"trip": {
    "calculationMode": "THE_FASTEST",
    "crossedBorders": {
        "level": "CITY"
    },
    "toll": {
        "vehicleType": "TRUCK_WITH_TWO_DOUBLE_AXLES"
    }
}

calculationMode

O parâmetro calculationMode indica o modo de cálculo que deverá ser considerado para o planejamento da rota. Existem duas opções disponíveis:

  • THE_FASTEST – Retorna o planejamento considerando o caminho mais rápido. (Maior velocidade média)
  • THE_SHORTEST – Retorna o planejamento considerando o caminho com menor quilometragem.

Caso o parâmetro não seja informado, o valor THE_FASTEST será considerado.

Exemplo

"calculationMode": "THE_FASTEST",

restrictionZones

O parâmetro restrictionZones é um array que contém as áreas de restrição que deverão ser consideradas na solução do problema logístico.

As áreas de restrição devem ser previamente cadastradas através da Restriction Zones API e utilizadas como argumento no parâmetro restrictionZones. Assim as rotas desviarão dessas áreas.

Se houver algum ponto de parada dentro da área de restrição, a Planning API atenderá o ponto de parada pelo caminho que houver menor sobreposição com a área de restrição.

Exemplo

"restrictionZones": [
        "SP_BR381_90_km_Alt_Esq_5_3_Cen_5_45_Dir_5_6",
        "SP_BR381_87_km_Alt_Esq_6_7_Cen_6_7_Dir_6_7"
]