⚠️

Atenção

O pedido é enviado para alocação imediatamente após a requisição.

Requisição

Substitua as variáveis e use esta consulta:

mutation {
  createOrder(input: {
    paymentMethod: ID_CENTRO_CUSTO
    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"
      }
      dimensions: {
        width: LARGURA_1
        height: ALTURA_1
        length: COMPRIMENTO_1
        weight: PESO_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"
      }
      dimensions: {
        width: LARGURA_2
        height: ALTURA_2
        length: COMPRIMENTO_2
        weight: PESO_2
      }
      instructions: "INSTRUCOES_ENTREGA_2"
    }]
  }) {
    success
    orders {
      pk
      pricing {
        totalCm
      }
      packages {
        pickupWaypoint {
          index
          eta
          legDistance
        }
        waypoint {
          index
          eta
          legDistance
        }
      }
    }
    errors {
      field
      message
    }
  }
}

Argumentos

NomeTipoDescriçãoExemplo
paymentMethodIntIdentificador do centro de custo.4657596
pickupsPickupPonto de coleta.
packagesList(Package)Lista de pontos de entrega.

📘

Identificador do centro de custo

Veja aqui como obter o id.

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.
dimensionsDimensionsDimensões do pacote.
instructionsStringInstruções de entrega."Entregar pacote na portaria."

Recipient

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

Dimensions

⚠️

Atenção

Apesar de a API não bloquear as requisições, a soma das dimensões dos pacotes do pedido deve respeitar as seguintes limitações para caber no baú do motoboy:

  • Altura máxima: 32 cm
  • Largura máxima: 44 cm
  • Comprimento máximo: 42 cm
  • Peso máximo: 20 kg
NomeTipoDescriçãoExemplo
widthIntLargura do pacote em centímetros.10
heightIntAltura do pacote em centímetros.15
lengthIntComprimento do pacote em centímetros.20
weightIntPeso do pacote em gramas.100

Exemplo

Pedido com um único ponto de entrega

mutation {
  createOrder(
    input: {
      paymentMethod: 4665540
      pickups: [
        {
          address: {
            address: "Alameda Santos, 2400 - Jardim Paulista, São Paulo - SP, Brasil"
            complement: "8o andar"
          }
          instructions: "Retirar pacote na portaria."
        }
      ]
      packages: [
        {
          pickupIndex: 0
          recipient: { name: "Engenharia Reversa Corp", phone: "1122819603" }
          address: {
            address: "Alameda Santos, 2444 - Jardim Paulista, São Paulo - SP, Brasil"
            complement: "Sala 1"
          }
          dimensions: { width: 10, height: 10, length: 10, weight: 10 }
          instructions: "Entregar pacote."
        }
      ]
    }
  ) {
    success
    orders {
      pk
      pricing {
        totalCm
      }
      packages {
        pickupWaypoint {
          index
          eta
          legDistance
        }
        waypoint {
          index
          eta
          legDistance
        }
      }
    }
    errors {
      field
      message
    }
  }
}

Pedido com dois pontos de entrega

mutation {
  createOrder(
    input: {
      paymentMethod: 4665540
      pickups: [
        {
          address: {
            address: "R. Curupaiti, 513 - Padre Eustáquio, Belo Horizonte - MG, 30730-130"
            complement: "Apto 302"
          }
          instructions: "Retirar pacote com Marcela."
        }
      ]
      packages: [
        {
          pickupIndex: 0
          recipient: { name: "Porteiro", phone: "1122819603" }
          address: {
            address: "R. Mantena, 290 - Ouro Preto, Belo Horizonte - MG, 31310-430"
            complement: "Sala 1"
          }
          dimensions: { width: 10, height: 10, length: 10, weight: 10 }
          instructions: "Entregar pacote na portaria."
        }
        {
          pickupIndex: 0
          recipient: { name: "Maria", phone: "1122819603" }
          address: {
            address: "R. Maj. Lage, 84 - Ouro Preto, Belo Horizonte - MG, 31310-200"
            complement: "Sem."
          }
          dimensions: { width: 10, height: 10, length: 10, weight: 10 }
          instructions: "Entregar pacote para Maria."
        }
      ]
    }
  ) {
    success
    orders {
      pk
      pricing {
        totalCm
      }
      packages {
        pickupWaypoint {
          index
          eta
          legDistance
        }
        waypoint {
          index
          eta
          legDistance
        }
      }
    }
    errors {
      field
      message
    }
  }
}

Resposta

Campos

NomeTipoDescrição
successBoolInforma se o pedido foi criado com sucesso.
pricing.totalCmFloatPreço da corrida.
ordersOrderDetalhes do pedido criado.
errorsList(Error)Descrição dos erros.

Order

NomeTipoDescrição
pkIntIdentificador interno do pedido.
packagesList(Package)Informações sobre os pontos da corrida.

Package

NomeTipoDescrição
pickupWaypointWaypointInformações do ponto de coleta.
waypointWaypointInformações do ponto de entrega.

Waypoint

NomeTipoDescrição
indexIntOrdem em que o ponto será visitado na rota.
etaLongTempo estimado de chegada ao ponto.
legDistanceIntDistância em metros do ponto de coleta até este ponto.

Error

NomeTipoDescrição
fieldStringNome do argumento com erro.
messageStringMensagem de erro.

Exemplos

Sucesso

Pedido com um único ponto de entrega

{
   "data":{
      "createOrder":{
         "success":true,
         "orders":[
            {
               "pk":47984141,
               "pricing":{
                  "totalCm":"14.90"
               },
               "packages":[
                  {
                     "pickupWaypoint":{
                        "index":0,
                        "eta":1708021555,
                        "legDistance":0
                     },
                     "waypoint":{
                        "index":1,
                        "eta":1708022261,
                        "legDistance":50
                     }
                  }
               ]
            }
         ],
         "errors":[
            
         ]
      }
   }
}

Pedido com dois pontos de entrega

{
   "data":{
      "createOrder":{
         "success":true,
         "orders":[
            {
               "pk":48059670,
               "pricing":{
                  "totalCm":"23.59"
               },
               "packages":[
                  {
                     "pickupWaypoint":{
                        "index":0,
                        "eta":1708949529,
                        "legDistance":0
                     },
                     "waypoint":{
                        "index":1,
                        "eta":1708951145,
                        "legDistance":7108
                     }
                  },
                  {
                     "pickupWaypoint":{
                        "index":0,
                        "eta":1708949529,
                        "legDistance":0
                     },
                     "waypoint":{
                        "index":2,
                        "eta":1708951920,
                        "legDistance":596
                     }
                  }
               ]
            }
         ],
         "errors":[
            
         ]
      }
   }
}

Erros

Centro de custo não informado

{
   "data":{
      "createOrder":{
         "success":false,
         "orders":[
            
         ],
         "errors":[
            {
               "field":null,
               "message":"O produto Presto chegou ao fim. Você pode falar com a gente para começar a usar outro serviço da Loggi."
            }
         ]
      }
   }
}

APIKey ou email inválidos

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

Erro genérico

❗️

Esta mensagem de erro é retornada em vários casos:

  1. centro de custo não existe;
  2. centro de custo não tem limite suficiente;
  3. rota com cidades diferentes.
{
   "data":{
      "createOrder":{
         "success":false,
         "orders":[
            
         ],
         "errors":[
            {
               "field":null,
               "message":"Pre-authorization failed."
            }
         ]
      }
   }
}