Criar rota (com pedidos novos ou existentes)

Cria uma rota agrupando pedidos — pode incluir pedidos novos e/ou pedidos que já existem na Abbiamo. Atribui motorista e ordem de paradas.

No guia

Uso no produto: TMS — app em rota.

Header obrigatório. Toda chamada exige o header x-abbiamo-seller-group-key. Preencha-o no canto superior direito desta página ou veja como obter a sua chave.

Rate limit: 300 requisições por minuto por chave. Acima disso a API retorna HTTP 429.

Só pedidos existentes? Use POST /v2/routes. Esse outro endpoint é purpose-built pra roteirizar pedidos que já estão na Abbiamo: payload enxuto (order_ids + warehouse de partida), sem precisar reenviar endereço, cliente ou nota fiscal.

Este aqui (/v2/orders/route) faz sentido quando você cria os pedidos junto com a rota na mesma chamada — ou quando mistura pedidos novos e existentes no mesmo array. O campo already_exists na resposta indica, pra cada pedido, se ele já existia ou foi criado agora.

Este endpoint cria uma rota agrupando múltiplos pedidos. Uma rota é um conjunto de pedidos atribuídos a um motorista, com ordem de paradas definida.

O campo driver_document é opcional — quando a rota é enviada sem driver_document, o sistema cria uma rota ociosa, sem transportadora nem motorista atribuídos, que pode ser atribuída depois pelo dashboard.

Pedidos de devolução (type: RETURN). Para pedidos do tipo RETURN, informe source_address (o endereço do cliente onde o motorista vai coletar o pacote) no lugar de destination_address. Internamente o sistema usa esse endereço como destino do pedido.

O campo type assume DELIVERY por padrão quando não informado.

Como pedidos existentes são tratados

  • O campo already_exists na resposta indica, pra cada pedido, se ele já existia no sistema no momento da requisição.
  • Se um ou mais pedidos já existem no sistema, há dois desfechos possíveis:
    • São roteirizáveis (status em CREATED, FAILED, RETURNED, etc.) — entram na rota junto com os novos.
    • Não são roteirizáveis (já estão em rota, já foram entregues, etc.) — a requisição retorna erro.

Este endpoint não edita pedidos. Se um ou mais pedidos já existem no sistema com endereço diferente do enviado na requisição, o pedido antigo (com o endereço antigo) é agrupado na rota — o endereço novo é ignorado.

Outras observações

  • driver_document, quando informado, precisa ser de um motorista atribuído a pelo menos uma das filiais dos pedidos da rota.
POST
/v2/orders/route

Authorization

sellerGroupKey
x-abbiamo-seller-group-key<token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v2/orders/route" \  -H "Content-Type: application/json" \  -d '{    "orders": [      {        "seller_identifier": "123",        "order_number": "136411776",        "volumes": [          {            "items": [              {                "name": "Exemplo 1"              }            ]          }        ],        "customer": {          "name": "Joao Guilherme"        },        "destination_address": {          "zip_code": "01412100",          "state": "RJ",          "city": "Rio de Janeiro",          "neighborhood": "Ipanema",          "street": "Rua Conde de Bonfim",          "street_number": "10"        }      },      {        "seller_identifier": "123",        "order_number": "136411777",        "volumes": [          {            "items": [              {                "name": "Exemplo 2"              }            ]          }        ],        "customer": {          "name": "Eduardo Dantas"        },        "destination_address": {          "zip_code": "22071060",          "state": "RJ",          "city": "Rio de Janeiro",          "neighborhood": "Copacabana",          "street": "Rua Saint Roman",          "street_number": "83"        }      }    ],    "route": {      "start": {        "type": "WAREHOUSE_SELLER_IDENTIFIER",        "value": "123"      },      "end": {        "type": "WAREHOUSE_SELLER_IDENTIFIER",        "value": "123"      },      "cost": 1200    }  }'
"{\n  \"status\": \"success\",\n  \"route\": {\n  \t\"id\": \"1d1dfa9c-4fe2-4315-9d65-ec0e8f95d239\",\n    \"cost\": 1200,\n  },\n  \"orders\": [\n    {\n      \"id\": \"30c24480-8e45-4afa-af35-0231b460e9ed\",\n      \"order_number\": \"136411776\",\n      \"tracking\": \"abc123#\",\n      \"already_exists\": true,\n  \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=abc123#\",\n  \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/abc123#\"\n    },\n    {\n      \"id\": \"96bed76f-4453-4dea-addc-521d9476b513\",\n      \"order_number\": \"136411777\",\n    \t\"tracking\": \"def456!\",\n      \"already_exists\": true,\n  \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=def456!\",\n  \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/def456!\"\n    },\n    {\n      \"id\": \"164f51fb-92c2-4041-8a7d-3aa87c82352e\",\n      \"order_number\": \"136411778\",\n    \t\"tracking\": \"ghi789=\",\n      \"already_exists\": false,\n  \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=ghi789=\",\n  \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/ghi789=\"\n    },\n    {\n      \"id\": \"1a72e4d8-d2cc-4a2d-ba2c-b5c91181a8e2\",\n      \"order_number\": \"136411779\",\n    \t\"tracking\": \"jkl101_\",\n      \"already_exists\": false,\n  \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=jkl101_\",\n  \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/jkl101_\"\n    }\n  ]\n}"

{
  "statusCode": "400",
  "message": [
    "order_number must be a string",
    "volumes must contain at least 1 elements",
    "volumes must be an array",
    "customer must be a non-empty object",
    "customer must be an object",
    "destination_address must be a non-empty object",
    "destination_address must be an object"
  ],
  "error": "Bad Request"
}

Nesta página