⚠️

Atenção

Para não ter diferenças de preço entre a estimativa e a criação do pedido, é necessário passar os mesmos endereços nas duas requisições.

Requisição

Substitua as variáveis e use esta consulta:

query {
  estimateCreateOrder(
    pickups: [
      {
        address: {
          address: "ENDERECO_COLETA"
          complement: "COMPLEMENTO_COLETA"
        }
        instructions: "INSTRUCOES_COLETA"
      }
    ]
    packages: [
      {
        pickupIndex: 0
        recipient: { name: "NOME_DESTINATARIO_1", phone: "FONE_DESTINATARIO_1" }
        address: {
          address: "ENDERECO_ENTREGA_1"
          complement: "COMPLEMENTO_ENTREGA_1"
        }
        instructions: "INSTRUCOES_ENTREGA_1"
      }
      {
        pickupIndex: 0
        recipient: { name: "NOME_DESTINATARIO_2", phone: "FONE_DESTINATARIO_2" }
        address: {
          address: "ENDERECO_ENTREGA_2"
          complement: "COMPLEMENTO_ENTREGA_2"
        }
        instructions: "INSTRUCOES_ENTREGA_2"
      }
    ]
  ) {
    totalEstimate {
      totalCost
      totalEta
      totalDistance
    }
    packagesWithErrors {
      originalIndex
      error
      resolvedAddress
    }
  }
}

Argumentos

NomeTipoDescrição
pickupsPickupPonto de coleta.
packagesList(Package)Lista de pontos de entrega.

Pickup

⚠️

Atenção

A API só aceita um único ponto de coleta.

NomeTipoDescriçãoExemplo
addressAddressEndereço de coleta.
instructionsStringInstruções de coleta."Retirar pacote com Jorge"

Address

⚠️

Atenção

Sempre informe o endereço mais completo possível. Inclua rua, número, bairro, cidade, estado, CEP e complemento. Mais informações aqui.

NomeTipoDescriçãoExemplo
addressStringEndereço completo."Av. Paulista, 100 - Bela Vista, São Paulo - SP, Brasil"
complementStringComplemento do endereço."Apto 302"

Package

⚠️

Atenção

A API não bloqueia, mas não é recomendado criar um pedido com mais de 20 pontos de entrega.

NomeTipoDescriçãoExemplo
pickupIndexIntCampo fixo. Sempre enviar 0.0
recipientRecipientDestinatário.
addressAddressPonto de entrega.
instructionsStringInstruções de entrega."Entregar pacote na portaria."

Recipient

NomeTipoDescriçãoExemplo
nameStringNome."Maria Júlia"
emailStringE-mail."[email protected]"
phoneStringNúmero celular."31996412605"

Exemplo

Pedido com um único ponto de entrega

query {
  estimateCreateOrder(
    pickups: [
      {
        address: {
          address: "Rua Curupaiti, 513, Padre Eustáquio, Belo Horizonte"
          complement: "8o andar"
        }
        instructions: "Retirar pedido com Jorge"
      }
    ]
    packages: [
      {
        pickupIndex: 0
        recipient: { name: "Engenharia Reversa Corp", phone: "1122819603" }
        address: {
          address: "R. Rio Grande do Sul, 499 - Centro, Belo Horizonte - MG, 30180-916"
          complement: "Apto 133"
        }
        instructions: "Entregar pedido para Spinoza"
      }
    ]
  ) {
    totalEstimate {
      totalCost
      totalEta
      totalDistance
    }
    packagesWithErrors {
      originalIndex
      error
      resolvedAddress
    }
  }
}

Pedido com dois pontos de entrega

query {
  estimateCreateOrder(
    pickups: [
      {
        address: {
          address: "Rua Curupaiti, 513, Padre Eustáquio, Belo Horizonte"
          complement: "8o andar"
        }
        instructions: "Retirar pedido com Jorge"
      }
    ]
    packages: [
      {
        pickupIndex: 0
        recipient: { name: "Engenharia Reversa Corp", phone: "1122819603" }
        address: {
          address: "R. Rio Grande do Sul, 499 - Centro, Belo Horizonte - MG, 30180-916"
          complement: "Apto 133"
        }
        instructions: "Entregar pedido para Spinoza"
      }
      {
        pickupIndex: 0
        recipient: { name: "Engenharia Reversa Corp", phone: "1122819603" }
        address: {
          address: "Rua Mantena, 290, Ouro Preto, Belo Horizonte"
          complement: "Apto 200"
        }
        instructions: "Entregar pedido para Spinoza"
      }
    ]
  ) {
    totalEstimate {
      totalCost
      totalEta
      totalDistance
    }
    packagesWithErrors {
      originalIndex
      error
      resolvedAddress
    }
  }
}

Resposta

Campos

NomeTipoDescrição
totalEstimateTotalEstimateEstimativa do pedido.
packagesWithErrors List<PackageError>Lista de pacotes com erro

TotalEstimate

NomeTipoDescrição
totalCostStringCusto total do pedido.
totalEtaFloatTempo total estimado da rota de entrega.
totalDistanceFloatDistância total (em quilômetros) a ser percorrida na rota.

PackageError

NomeTipoDescrição
originalIndexIntOrdem do endereço na requisição.
errorStringMensagem de erro.
resolvedAddressStringEndereço resolvido pela API.

Exemplos

Sucesso

{
    "data": {
        "estimateCreateOrder": {
            "totalEstimate": {
                "totalCost": "15.19",
                "totalEta": 1329.0,
                "totalDistance": 4.81
            },
            "packagesWithErrors": []
        }
    }
}

Erros

APIKey ou email inválidos

{
    "errors": [
        {
            "message": "You must be logged in",
            "locations": [
                {
                    "line": 2,
                    "column": 3
                }
            ],
            "path": [
                "estimateCreateOrder"
            ]
        }
    ],
    "data": {
        "estimateCreateOrder": null
    }
}

Rota com cidades diferentes

{
    "data": {
        "estimateCreateOrder": {
            "totalEstimate": null,
            "packagesWithErrors": [
                {
                    "originalIndex": 1,
                    "error": "Local fora da área de cobertura para a cidade São Paulo",
                    "resolvedAddress": "R. Maj. Lage, 84 - Ouro Preto, Belo Horizonte - MG, 31310-200, Brazil"
                }
            ]
        }
    }
}