logo
logo

Docs Webhook Overview Presença no Webhook

Presença

O mecanismo de presença do webhook é baseado em heartbeats. Nossos servidores fazem requests periódicas para a geração de eventos de heartbeat que são processados e agregados para definir a presença para um merchant.

Ao habilitar o webhook, as requests de presença começarão no próximo ciclo de heartbeats (em até 30 segundos). Existem dois tipos de requests de heartbeat: requests por aplicativo e requests por merchant para controle fino de presença.

Para as integrações que não tem controle fino de presença temos a configuração para realizar uma única request de heartbeat periódica para o aplicativo, fazendo com que todos os merchants da aplicação fiquem online.

Nesse caso, requests com resposta 202 Accepted fazem com que a mensagem de heartbeat seja gerada, e qualquer outra resposta faz com que o heartbeat não seja gerado. O response body será ignorado.

Na prática, hoje isso significa que todos os merchants com scope order da integração ficarão abertos na listagem (desde que dentro das outras regras para aparecer na listagem).

  • Exemplo de body da request:
{
    "code":"KEEPALIVE",
    "fullCode":"KEEPALIVE",
    "id":"a38ba215-f949-4b2c-982a-0582a9d0c10e"
}
curl --location 'http://localhost:8080/webhook' \
--header 'X-IFood-Signature: 6c0a429606266905349388ebc1eb12b8b98524dddd6b4bdc41c4b67591075b4c' \
--header 'Content-Type: application/json' \
--data '{
    "code":"KEEPALIVE",
    "fullCode":"KEEPALIVE",
    "id":"a38ba215-f949-4b2c-982a-0582a9d0c10e"
}'

Tentamos manter certa compatibilidade com os eventos de pedido enviados hoje, enviando apenas informações que possam ser relevantes para a integração.

Para as integrações que tem controle fino de presença, temos a configuração para realizar requests de heartbeat para todos os merchants da integração. Nesse caso, para evitar fazer uma request para cada merchant que pode ser custoso para integrações com acesso a muitos merchants, cada request representa uma parte dos merchants que a integração tem acesso. É possível controlar o valor máximo de merchants a ser verificados em uma request (hoje o mínimo é de 1 merchant e máximo 1000).

Além de 202 accepted para a resposta, esperamos os merchants "online" no corpo da resposta. Os heartbeats serão gerados apenas para esses merchants da resposta.

  • Exemplo de body da request:
{
    "code":"KEEPALIVE",
    "fullCode":"KEEPALIVE",
    "id":"a38ba215-f949-4b2c-982a-0582a9d0c10e",
    "merchantIds": ["cad65e8f-6fc6-438a-b159-e64a902a6b9a", "438a5e8f-6fc6-438a-b159-e64a902a6879"]
}
  • Response: apenas os merchants "online"
{
   "merchantIds": ["cad65e8f-6fc6-438a-b159-e64a902a6b9a"]
}
curl --location 'http://localhost:8080/webhook' \
--header 'X-IFood-Signature: dc900bca38c8b6f908ea688a24604fa581921d1211da4211e4f5e139732c2ff1' \
--header 'Content-Type: application/json' \
--data '{
    "code":"KEEPALIVE",
    "fullCode":"KEEPALIVE",
    "id":"a38ba215-f949-4b2c-982a-0582a9d0c10e",
    "merchantIds": ["cad65e8f-6fc6-438a-b159-e64a902a6b9a", "438a5e8f-6fc6-438a-b159-e64a902a6879"]
}'

Tentamos manter certa compatibilidade com os eventos de pedido enviados hoje, enviando apenas informações que possam ser relevantes para a integração.