Skip to main content
Em vez de você perguntar de minuto em minuto se algo mudou, o Pictor chama o seu endereço quando o fato acontece. Você escolhe quais tipos quer receber; a lista completa está no catálogo de eventos. O caso que costuma pagar a integração sozinho: assine device.no_frame e o seu sistema de chamados abre a ordem de serviço sem ninguém digitar nada.

Antes de escrever código

O endereço que recebe os eventos é cadastrado por um administrador da conta no console, em Configurações › Webhooks. Ao criar, o console mostra um segredo — ele aparece uma única vez e é com ele que você confere a assinatura de cada entrega. Se perder, gere outro. Requisitos do endereço:
  • https:// (sem TLS o cadastro é recusado);
  • alcançável pela internet;
  • responde em até 10 segundos.

O que chega

Um POST com corpo JSON e cinco cabeçalhos: O corpo:
version é do tipo, não do envelope. Campo novo dentro de data é acrescentado sem mudar a versão — então ignore o que não conhece em vez de recusar o corpo.

Conferir a assinatura

O cabeçalho tem esta forma:
O que é assinado é "{t}.{corpo cru}" — o carimbo está dentro do que a assinatura cobre. Assine sobre os bytes recebidos, nunca sobre o JSON reserializado: a menor diferença de espaço ou de ordem de chave produz outro resumo.
Recuse o que chegar fora da janela de 300 segundos. Sem essa checagem, uma entrega capturada hoje continua válida amanhã, e a assinatura deixa de proteger contra reenvio.

Durante uma troca de segredo

Ao girar o segredo você escolhe uma janela de graça. Dentro dela, cada entrega leva duas v1= no mesmo cabeçalho: uma do segredo novo, outra do anterior. Aceite se qualquer uma casar — é o que permite publicar a nova configuração do seu lado sem perder um evento. O laço acima já faz isso.

Não processar duas vezes

A entrega é pelo menos uma vez. Uma reentrega depois de erro, uma resposta sua que demorou demais, um clique em reenviar no console — nos três casos o mesmo evento chega de novo, com o mesmo Pictor-Event-Id.
Guarde o identificador e descarte o repetido:

O que a sua resposta significa

A espera cresce a cada tentativa — 30 segundos, 2 minutos, 8 minutos, 30 minutos, 2 horas, 6 horas, 12 horas — até 8 tentativas. Isso dá cerca de 21 horas de tolerância para o seu endereço voltar.
Um endereço que falha muito é desligado. Depois de 20 entregas seguidas que terminaram em falha, o endpoint é desativado e para de receber. O motivo fica visível no console, e reativar zera a contagem.
Responda rápido e trabalhe depois. O tempo limite é de 10 segundos: se você processar dentro da requisição, uma lentidão sua vira reentrega nossa, e a reentrega chega enquanto o primeiro processamento ainda está rodando.

Conferir sem esperar um evento real

No console, cada endpoint tem um botão de enviar teste. Ele dispara um webhook.test só para aquele endereço, pela mesma fila e com a mesma assinatura de qualquer outro evento — se o teste chega e confere, o caminho inteiro está de pé. Cada tentativa fica registrada, com o corpo enviado, o código que você devolveu e um trecho da sua resposta. É por aí que se descobre que o 401 era relógio fora de hora, e não segredo errado.

Ler o catálogo pelo código

A resposta traz cada tipo com status, version e a lista de campos de data. Tipos com status igual a planned já podem ser assinados: o nome e o formato estão fechados, e no dia em que o emissor entrar no ar o seu receptor recebe sem mudar nada.