Webhook
Atualizações nos tópicos de monitoramento serão notificadas por meio do envio de webhooks. Para tanto, é necessário, por meio da equipe do suporte, configurar um endereço do endpoint por onde vamos notificar as atualizações e também uma signature_key que será utilizada para assinar a requisição. Vale ressaltar que todos os envios de webhook serão feitos para um único endpoint.
Por questões de segurança, todas as requisições de Webhook serão somente realizadas em endpoints servidos por HTTPS.
Assinatura
Exemplo de cálculo de assinatura em Python
hmac_obj = hmac.new(signature_key.encode('utf-8'), (url + method + payload).encode('utf-8'), hashlib.sha1)
return hmac_obj.hexdigest()
Para garantir que a requisição recebida no endpoint do webhook parte dos nossos servidores, uma assinatura HMAC é enviada no Header Signature, de maneira semelhante ao processo de autenticação.
Após realizar o cálculo do valor esperado da assinatura do lado do servidor, é necessário comparar a assinatura calculada com a enviada. Caso as assinaturas sejam compatíveis, isso significa que a requisição partiu dos nossos servidores e que é confiável.
Webhook de Atualização de Evento
Request Body
{
"person_type" : "natural_person",
"account_type" : "natural_person_account",
"person_id" : "22f5d028-0ce7-46f7-9b63-e7e38171b485",
"account_id" : "e49ac344-f941-4668-9afb-a52ce4e5754a",
"monitoring_topic" : "OFAC",
"event" : "entered"
}
Abaixo está o significado de cada campo:
Nome | Tipo | Descrição |
---|---|---|
person_type | string | Tipo de pessoa (natural_person ou legal_person). |
account_type | string | Tipo de conta (natural_person_account ou legal_person_account). |
person_id | strin | Identificador único da pessoa, passado na requisição de criação. |
account_id | string | Identificador único da conta, passado na requisição de criação. |
monitoring_topic | string | Tópico monitorado em que ocorreu a mudança. |
event | string | Tipo de evento ocorrido, como "entered" (entrada) ou "exited" (saída) para os tópicos de listas restritivas. |
A requisição de atualização do tópico de monitoramento possui o formato acima e notifica a mudança no status de um dos tópico de monitoramento dentro da conta. O método utilizado é um PUT e o endereço do endpoint pode conter também o id do evento, de acordo com a necessidade do cliente. É importante ressaltar que o corpo da requisição é enviado como texto codificado em UTF-8.
Retentativas
A notificação é considerada realizada quando recebe como resposta um HTTP Status 200. Caso as notificações falhem, serão feitas 7 retentativas, com os seguintes intervalos, até que um 200 seja retornado ou as tentativas terminem:
- 10 segundos
- 40 segundos
- 160 segundos
- 640 segundos
- 2560 segundos
- 10240 segundos
- 40960 segundos