Quais são os parâmetros da Planning API?

Conheça todos os parâmetros disponíveis na Planning API, com descrição e exemplos práticos.

Os parâmetros obrigatórios estão denotados com "*". Segue abaixo, o grupo de parâmetros disponíveis na Planning API:

Veremos com detalhes e exemplos cada uma deles:

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"

Os seguintes perfis estão disponíveis:

  • BRAZIL37, CHILE37, ARGENTINA37, COLOMBIA37, MEXICO37: Perfil para problemas grandes, distribuindo as rotas entre veículos aos invés de criar mais de uma rota por veículo. Começa a alocação pelos veículos de maior capacidade.
  • BRAZIL46 CHILE46, ARGENTINA46, COLOMBIA46, MEXICO46: 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 depot e em outras lojas durante a rota para realizar as entregas. Útil em casos de uso de last mile, onde o veículo ira partir do centro de distribuição e realizar coletas em lojas durante o percurso.

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. Exemplo:

"startDate": 1583492400000,

depots*

O parâmetro depots é um array de objetos, onde cada objeto representará 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.

  • name - Texto único do nome do depósito. 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 depot pertence. Devem ser únicos e devem ter o mesmo nome declarado em Logistic Zones.
    "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 Depot ou Site ao qual ela se aplica.

  • name - Texto do nome da regra logística. Usado para referenciar em Depots e Sites.

  • siteLoadingFixedTime - Número inteiro com o tempo fixo de carregamento em segundos.

  • siteUnloadingFixedTime - Número inteiro com o tempo fixo de descarregamento em segundos.

  • unloadingPositionInRoute - 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á executado 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á executado em qualquer posição na rota para a entrega.

  • loadingPositionInRoute - Posição na rota para o carregamento. Valores possíveis: [INDIFFERENT, FIRST, LAST, ALONE].

    "logisticConstraints": [
        {
            "name": "Regras-Depot",
            "siteLoadingFixedTime": 1200
        },
        {
            "name": "Regras-Entrega-Rápida",
            "siteUnloadingFixedTime": 300,
            "unloadingPositionInRoute": "FIRST"
        }
  ],

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.

  • name - Texto único com o tipo de veículo. Usado para ser referenciado em Vehicles.

  • maxVolume - Valor numérico (double) com o volume máximo suportado pelo veículo.

  • maxWeight - Valor numérico (double) com o peso máximo suportado pelo veículo.

  • size - Valor numérico (integer) com o tamanho do veículo.

Abaixo um exemplo com os parâmetros obrigatórios:

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

Os seguintes parâmetros são 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.

  • compartmentsAccessMode - Texto com o modo de acesso ao compartimento de carga do veículo. Valores permitidos: [ALL_COMPARTMENTS, REAR_ACCESS]

  • compartmentConfigurations - Array com as características do compartimento de carga. Necessário definir o compartmentsAccessMode.

    • name - Texto único com o nome do compartimento.

    • type - Texto com o tipo do compartimento Valores possíveis: [FIXED, VARIABLE].

    • maximumCapacity- Número decimal com a capacidade máxima do compartimento.
    • minimumCapacity - (Opcional) Número decimal com a capacidade mínima do compartimento. Obrigatório quando type é VARIABLE e opcional quando type é FIXED.

    • increment -  (Opcional) Número decimal com o incremento da capacidade do compartimento. Obrigatório quando type é VARIABLE e opcional quando type é FIXED.
    • loadingRule - Texto com a regra considerada para o carregamento do compartimento. Valores possíveis: [NONE, IDENTICAL_PACKAGINGS, SINGLE_OPERATION, IDENTICAL_PRODUCTS, IDENTICAL_SITE_PRODUCTS].

    • 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 serão aceitos aqui. Para saber mais consultar: 2.2. Parâmetros da requisição

O exemplo abaixo mostra como descrever características de dois veículos diferentes: o primeiro uma “Moto” e o segundo um “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,
        "characteristics": null,
        "compartmentsAccessMode": "REAR_ACCESS",
        "compartmentConfigurations": [
            {
                "name": "compartimentoMoto",
                "compartments": [
                    {
                        "name": "bau_moto",
                        "type": "FIXED",
                        "maximumCapacity": 1000,
                        "loadingRule": "NONE",
                        "allowedPackagings": [
                            "Carga_Resistente"
                        ]
                    }
                ]
            }
        ],
        "trip": {
            "calculationMode": "THE_FASTEST",
            "crossedBorders": {
                "level": "CITY"
            },
            "toll": {
                "vehicleType": "MOTORCYCLE"
            }
        }
    },
    {
        "name": "Carro",
        "maxWeight": 400,
        "maxVolume": 100,
        "size": 30,
        "maxSitesNumber": 24,
        "characteristics": null,
        "compartmentsAccessMode": "REAR_ACCESS",
        "compartmentConfigurations": [
            {
                "name": "compartimentoCarro",
                "compartments": [
                    {
                        "name": "porta_malas",
                        "type": "FIXED",
                        "maximumCapacity": 1000,
                        "loadingRule": "NONE",
                        "allowedPackagings": [
                            "Carga_fragil"
                        ]
                    }
                ]
            }
        ],
        "trip": {
            "calculationMode": "THE_FASTEST",
            "crossedBorders": {
                "level": "CITY"
            },
            "toll": {
                "vehicleType": "CAR"
            }
        }
    }
],

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õe 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.

Os seguintes parâmetros são 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. É possível definir mais de uma janela horária. 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: 1511901826456.

    • end - Horário de fim que se encerrará a jornada de trabalho. Formato timestamp: 1511904661038.

Abaixo um exemplo com os parâmetros obrigatórios:

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

Os seguintes parâmetros são 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 Logistic Zones.

Abaixo um exemplo com todos os parâmetros opcionais:

"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.

O exemplo abaixo 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 os 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. 

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 representará um local em que deverá ser realizado 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 Logistic Zones.

Abaixo um exemplo com todo os parâmetros:

"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"
]
},
{
"name": "125478438",
"coordinates": {
"latitude": -26.4832718,
"longitude": -49.0567523
},
"logisticConstraints": "DEFAULT",
"logisticZones": [
"jaragua"
]
}
]

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.

Os seguintes parâmetros são 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. É possível definir mais de uma janela horária. Parâmetros obrigatórios:

    • start - Horário de início que o cliente atua na operação. Formato timestamp: 1511901826456.

    • end - Horário de fim que o cliente atua na operação. Formato timestamp: 1511904661038.

  • depotSite - Depot de origem para a operação. Usado para identificar de qual depot o produto será embarcado no veículo até a entrega. No caso de operação de coleta, o depot onde será descarregado o produto.

  • id - Texto único com o identificador da operação. Normalmente é a ordem de serviço ou algum id de fácil identificação em outros sistemas.

  • 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 os parâmetros obrigatórios:

"operations": [
    {
        "customerSite": "MERCADO02GLICERIO",
        "depotSite": "DEPOSITO01",
        "type": "DELIVERY",
        "customerTimeWindows": [
            {
                "start": 1583499600000.
                "end": 1583506800000                
            },
            {
                "start": 1583510400000.
                "end": 1583528400000
            }
        ],
        "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
    }
]

Os seguintes parâmetros são 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 de 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 siteLoadingFixedTime de 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 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 aparecerá como Unloading):

    • start - Horário de início que o depot atua na operação. Formato timestamp: 1511901826456.

    • end - Horário de fim que o depot atua na operação. Formato timestamp: 1511904661038.

  • group - Texto com o grupo de operações. Usado para agrupar operações de uma mesma localidade de forma manualAs operações que possuem 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 irá realizar a operação de forma pré-definida. Com isso, a Planning API irá 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.

  • priority - Número inteiro da prioridade da operação. Usado para definir a prioridade na carga, e não na sequência de entrega.

  • quantity - Número decimal com a quantidade da operação. Apenas para descrição, não interfere no peso ou volume da operação, ou no modo em que a operação é processada.

O exemplo abaixo apresenta 2 operações de entrega para serem realizadas no intervalo das 10:00 até as 12:00 da manhã (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 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 atendidos pelo "preAllocatedVehicleName": "VUC01".

"operations": [
    {
        "customerSite": "MERCADO01MOOCA",
        "depotSite": "DEPOSITO01",
        "preAllocatedVehicleName": "VUC01",
        "priority": 20,
        "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 assocido aos depots, sites e vehices para definir a relação entre eles.

Por exemplo, caso seja definido uma zona logística para um veículo, ele irá atender apenas aos sites que pertençam a 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]

Abaixo um 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 de utilização:

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

tripsProfile*

Trip Profile é 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 irá influenciar na roteirização.

Recomendável utilizar sempre o “MAPLINK”, pois ele contém os mapas mais atualizados.

"tripsProfile": "MAPLINK"

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 retornada. Todos os parâmetros aceitos pela Trip API serão aceitos aqui. Para saber mais consultar:

Caso o parâmetro já tenho sido declarado em vehicleTypes, será considerado os parâmetros definidos ali para cada tipo de veículo.

Abaixo um exemplo de utilização:

"trip": {
"calculationMode": "THE_FASTEST"
}

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. Abaixo um exemplo de utilização:

"calculationMode": "THE_FASTEST"

restrictionZones

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

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

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

Abaixo um exemplo de utilização:

 "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"
]