Pular para o conteúdo principal
O MyPilotIndex informa um parceiro sobre os grants dele por webhook. Existem dois eventos: grant.revoked, quando um grant termina, e ping, quando você pede um teste. O MyPilotIndex define a URL do seu webhook (só https) e o secret de assinatura dela quando aprova você. O secret começa com whsec_ e é mostrado uma única vez.

Entrega

Cada evento é um POST do evento em JSON (Content-Type: application/json). Responda com qualquer 2xx em até 10 segundos. Cabeçalhos, no esquema Standard Webhooks:

Verificando a assinatura

A chave é o conteúdo em base64 do seu secret depois do prefixo whsec_. Calcule o HMAC sobre os bytes exatos que você recebeu, não sobre um corpo serializado de novo, compare em tempo constante e recuse um timestamp que esteja a mais de cinco minutos do seu relógio.

grant.revoked

reason é pilot (o piloto desconectou você em Configurações), operator (o MyPilotIndex revogou o grant) ou account_deleted (o piloto apagou a conta, então o grant não aparece mais em nenhuma lista). Quando receber esse evento, apague o que você guarda do MyPilotIndex sobre esse piloto, como o acordo de dados exige. A partir desse momento, toda chamada que indica o grant responde 404.

Novas tentativas

Um 5xx, um 408, um 429, um redirecionamento (nunca seguido), um timeout ou uma falha de conexão gera novas tentativas com intervalos crescentes por cerca de um dia, doze tentativas no total, com o mesmo webhook-id e um timestamp e uma assinatura novos. Um 4xx que não seja 408 nem 429 é tratado como recusa e não gera nova tentativa. A exceção é o grant.revoked com o motivo account_deleted: o grant dele sai de todas as listas junto com a conta, então não pode ser reconciliado depois. Ele é reenviado dentro da mesma janela diante de qualquer resposta que não seja 2xx, inclusive um 4xx. Confirme o recebimento com um 2xx assim que tiver processado o evento, mesmo que você não guarde nada sobre esse piloto. Se você perdeu outros eventos, reconcilie com GET /v1/partner/grants?status=revoked&changed_since=<time>.

Testes

POST /v1/partner/webhooks/test coloca na fila um ping assinado para a URL do seu webhook e responde 202 antes da entrega. O evento ping tem um objeto data vazio. Se não houver URL de webhook (https) ou secret registrados, a resposta é 409 com o motivo webhook_not_configured.