Skip to main content
Um webhook é uma forma de recebimento de informações quando ocorre um dado evento. Neste caso, quando uma solicitação sofrer uma alteração do seu estado, a Machine irá acionar uma URL informada pela central com determinadas informações sobre a solicitação que sofreu a mudança. O nosso webhook do tipo status envia eventos nos seguintes momentos: quando uma solicitação muda de status, quando o condutor sinaliza que chegou ao local e quando uma parada é confirmada. As informações enviadas vão variar conforme o estado da solicitação. Por exemplo, enquanto a solicitação não foi aceita, nenhum dado associado ao aceite será enviado, entretanto, quando ela for aceita, as informações associadas ao aceite serão enviadas. O nosso webhook do tipo posição envia, em lote e a cada 10 segundos, a posição dos condutores que estão com solicitações aceitas (A), em andamento (E) ou em espera (S).
ℹ️ Limite de cadastro: é possível cadastrar até 5 webhooks por tipo, para cada combinação de central, empresa e responsável.
⚠️ Atenção: Os antigos formatos dos Webhooks de Status e Posição serão deprecados. A central deve cadastrar novamente os webhooks para utilizar os novos formatos.

(Novo) Webhook de Posição

O Webhook de Posição envia a posição dos condutores que estão com solicitações em espera (S), em andamento (E) ou aceitas (A). O envio é feito em lote: a cada 10 segundos a Machine agrupa a posição mais recente de cada condutor e faz uma requisição POST na URL cadastrada.

Exemplo do Payload

Campos do envelope

Campos de cada item de data

As duas datas do payload

O payload carrega dois relógios diferentes:
  • datetime (envelope) -> quando a Machine montou e enviou o lote.
  • timestamp (item) -> quando a posição foi gerada pelo condutor. É o campo a usar para ordenar posições e calcular a idade da leitura.

Variação conforme o responsável do webhook

Como consumir

  • Deduplique por event_id. Uma janela com mais de 500 posições é dividida em várias requisições, cada uma com o seu próprio event_id e o mesmo datetime.
  • Um item por condutor e solicitação por janela. Dentro dos 10 segundos, só a posição mais recente de cada par condutor/solicitação é enviada. Um condutor com duas solicitações ativas gera dois itens.
  • Não há reenvio. Se a sua URL responder erro ou não responder, o lote não é reentregue — a janela seguinte já traz uma posição mais nova.
  • Posições antigas não são entregues. Uma leitura com mais de 15 segundos é descartada, para que você nunca receba uma posição que já não representa o condutor.
  • Trate campos desconhecidos com tolerância. Campos novos podem ser acrescentados ao item sem aviso.

(Novo) Webhook de Status

O Webhook de Status é acionado sempre que uma solicitação passa por uma mudança de estado (ex.: aceita, em andamento, finalizada, cancelada), quando o condutor indica chegada ao local ou quando uma parada é confirmada.

Exemplo do Payload

Exemplo de apresentação do status_label

Enum de Status

Como usar

  • status_code: valor curto do status
  • status_label: valor descritivo do status
  • Extensibilidade: se a Machine adicionar novos status no futuro, basta incluir novos pares para codes/label

Campos

  • links.request -> acesso aos detalhes da solicitação
  • links.enterprise -> (opcional) referência à empresa
  • links.driver -> (opcional) referência ao condutor

Webhook de Mensagens

O Webhook de Mensagens é acionado sempre que ocorre o recebimento de mensagens relacionadas a uma central. Ele possibilita à central receber as mensagens enviadas pelo condutor e empresa nas conversas com a central, garantindo histórico e rastreabilidade da comunicação. As mensagens da conversa entre condutor e passageiro durante a corrida não passam por ele: são entregues pelo Webhook de Mensagens da Corrida.

Exemplo do Payload

Campos

Enum type_code


Webhook de Mensagens da Corrida

O Webhook de Mensagens da Corrida é acionado sempre que o condutor ou o passageiro envia uma mensagem no chat de uma corrida. É um tipo próprio de webhook, mensagens_corrida: quem já recebe o Webhook de Mensagens continua recebendo só as conversas da central, e passa a receber a conversa da corrida apenas se cadastrar este tipo. As mensagens de uma mesma corrida chegam na ordem em que foram escritas, uma requisição por mensagem. Apenas a central cadastra este tipo; o cadastro não está disponível para usuários de empresa.

Exemplo do Payload

Campos

Enum sender_type

Enum type_code


(DEPRECADO) Webhook de Posição

O webhook de posição realiza o envio de posição de condutores, a cada 15s, que estão com solicitações em espera (S), em andamento (E) ou aceitas (A). Caso a central configuração e de corrida sejam a mesma, a central receberá o evento do webhook apenas uma vez.

(DEPRECADO) Webhook de Mudança de Status

Um webhook é uma forma de recebimento de informações quando ocorre um dado evento. Neste caso, quando uma corrida sofrer uma alteração do seu estado, quando uma parada for confirmada ou quando o condutor indicar que chegou ao local, a Machine irá acionar uma URL informada pela central com determinadas informações. Este é um mecanismo prático para receber dados da Machine. Caso a central configuração e de corrida sejam a mesma, a central receberá o evento do webhook apenas uma vez.

Assinatura de validação do Webhook

A assinatura de validação do webhook tem como objetivo garantir a integridade e a autenticação da mensagem. Os campos de assinatura, contidos no HEADER, seguem o padrão HMAC-SHA-512. O campo Signature-V2 é composto pelos elementos enviados no webhook, a função de hash SHA-512 e a chave da API. No webhook de posição, a Signature-V2 é calculada sobre o corpo inteiro da requisição — o envelope com o array data —, e não sobre cada posição. É importante observar que o campo Signature está atualmente obsoleto, sendo substituído pelo Signature-V2; no entanto, ele é construído com base nos dados recebidos no webhook, a função de hash SHA-512 e a chave privada previamente informada.