Skip to main content
POST
Envie um evento de entrega
Envie uma atualização quando o estado da entrega mudar. A Onbeef usa esses eventos para manter o rastreamento sincronizado.

Autenticação

Os endpoints de logística não usam o Bearer token OAuth. Eles são autenticados por três headers HTTP, validados a cada requisição:
string (uuid)
required
Identificador da sua aplicação de logística (UUID v4).
string
required
UUID do merchant na plataforma Onbeef (entre 36 e 100 caracteres).
string
required
Assinatura HMAC-SHA256 (hex, 64 caracteres) do corpo cru da requisição. A chave é o client_secret fornecido no provisionamento da sua integração de logística. Não use o client_secret OAuth do merchant: são credenciais diferentes.
A assinatura é calculada sobre o corpo exato enviado. Gere o JSON, calcule o HMAC-SHA256 desse mesmo texto e só então envie a requisição. Qualquer diferença de formatação invalida a assinatura.

Corpo da requisição

O corpo da requisição deve ser enviado como application/json.
string (uuid)
required
Identificador único da entrega, gerado pelo seu serviço de logística.
string (uuid)
required
Identificador do pedido, gerado pela Onbeef. Associa o evento de entrega ao pedido correto na plataforma.
string
required
Identificador legível do pedido exibido na interface da Onbeef.
object
required
Informações sobre o merchant associado ao pedido. Contém id (uuid) e name (string).
object
required
Detalhes do evento atual da entrega. Contém:
  • type (string): Tipo do evento. Veja Tipos de evento abaixo.
  • message (string): Descrição legível do evento.
  • datetime (string, date-time): Timestamp ISO 8601 de quando o evento ocorreu.
  • rejectionInfo (object, opcional): Presente quando type é REJECTED, com um campo reason.
string
required
Nome do cliente que receberá a entrega.
object
Informações do veículo: type, container, containerSize, instruction.
object
Informações de preço da entrega: price (value, currency), pricingList, additionalPricePercentual.
object
Dados de tempo estimado de chegada: pickupEtaInMinutes, pickupEtaDatetime, deliveryEtaInMinutes, deliveryEtaDatetime, maxDeliveryTime, entre outros.
object
Informações do entregador: id (uuid), name, pictureURL, phone.
object
Localização em tempo real do entregador: latitude, longitude, lastAddress.
string (uri)
URL externa do seu serviço de logística para acompanhamento em tempo real.
array of strings (uuid)
IDs adicionais de pedidos do mesmo merchant na mesma rota (mesmo deliveryId).
Este endpoint não valida os campos do corpo com um schema estrito. Envie o payload completo conforme descrito acima; campos ausentes usados pelo processamento podem causar erro no servidor.

Resposta

204: Sem conteúdo

O evento foi recebido e processado com sucesso. Nenhum corpo de resposta é retornado.

400: Requisição inválida

Um dos headers X-App-Id, X-App-MerchantId ou X-App-Signature está ausente ou malformado.

401: Não autorizado

O X-App-Id ou o X-App-MerchantId não foi reconhecido, a integração não está ativa, ou a assinatura X-App-Signature não confere.

404: Não encontrado

Nenhum pedido foi encontrado com o orderId informado para este merchant. Corpo: { "title": "Order not found", "status": 404 }.

429: Limite de requisições

A rota aceita até 120 requisições por minuto por endereço IP, num limite compartilhado com POST /v1/logistics/confirmationCode. Acima disso, a API responde { "title": "Too Many Requests", "status": 429 }. Aguarde e reenvie. Veja Limite de requisições.

Tipos de evento

O campo event.type sinaliza o estágio atual da entrega. Dois valores transicionam o status do pedido na Onbeef: Os demais valores (por exemplo, PENDING, REJECTED, CANCELLED, e outros estados de retirada/atribuição) são registrados para rastreamento, mas não alteram o status do pedido. Para REJECTED, inclua event.rejectionInfo.reason.

Exemplo de requisição

Este endpoint é chamado pela sua integração de logística atuando como remetente de webhook. Não é um endpoint de polling: seu sistema envia atualizações à Onbeef a cada mudança de status da entrega.