> For the complete documentation index, see [llms.txt](https://docs.scorepositivo.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scorepositivo.com.br/notificacao-webhook.md).

# Notificação - Webhook

## Cadastro de Webhook

Para utilização do recurso de notificações através de Webhook o cliente deverá fornecer à plataforma Score Positivo um endpoint HTTP. Seguem as especificações:

* **Método**: POST
* **Formato/Content-Type:** application/json
* &#x20;**Autenticação**: Para garantir a segurança e a autenticidade das mensagens enviadas via webhook, utilizamos um mecanismo de assinatura digital baseado em **HMAC-SHA256**.&#x20;
  * Chave secreta (**secret**): Fornecer à plataforma ScorePositivo um token alfanumérico de 32 caracteres. Essa chave é usada tanto para **gerar** quanto para **validar** assinaturas.
  * Antes de enviar um webhook, o payload (conteúdo em JSON) é assinado com a secret. O hash é calculado usando o algoritmo:

    ```
    hash_hmac('sha256', payloadJson, secret)
    ```
  * O valor gerado é enviado no **header** da requisição:

    ```
    Signature: <hash_gerado>
    ```
  * O cliente também deverá realizar o mesmo cálculo hash e deverá comparar com o valor enviado header `Signature`. Se os valores não coincidirem, a requisição deverá ser rejeitada.

## Regras de entrega

Segue abaixo as regras implementadas pelo Webhook para entrega das notificações:

#### Sucesso&#xD;

* A entrega é confirmada quando o código de retorno da requisição HTTP for 200.

#### Falha

* Será contabilizado como um erro na entrega qualquer retorno diferente de 200;
* Em caso de registro de falha na tentativa de entrega, mais duas tentativas serão  \
  realizadas totalizando 3 tentativas no máximo.;
* O tempo entre cada nova tentativa de entrega após um registro de erro é de 30  \
  segundos.;
* Qualquer tentativa de entrega que não obtiver uma resposta no tempo de 5  \
  segundos será considerada um erro.
