Webhooks - Eventos e Configurações
Webhooks - Investidor
Para que os eventos ocorridos com o seu perfil (ex.: documentos que foram assinados) sejam informados à você, existem Webhooks que são chamados no momento em que tais eventos ocorrem.
Quando um evento acontece, o sistema envia uma requisição HTTP POST para todos os webhooks configurados contendo as informações relativas ao evento e links HATEOAS que auxiliam na navegação da sua API pelos outros recursos que se relacionam com o tipo de evento.
Nossos webhooks contam com um mecanismo de retry, portanto tentamos durante duas horas ou até recebermos o HTTP status 200 OK
Sua API deve respeitar o princípio de idempotência, pois em casos raros o webhook poderá ser entregue mais de uma vez.
Autenticação
Token de Autenticação
Você pode definir um header, um tipo de token e o valor desse token para a autenticação.
Por exemplo:
Authorization: Bearer 6062949f-d17e-4e4d-b359-b3926544e2cc
Validação do Payload
Quando você define um token de autenticação, a Monkey faz uso dele para a geração de um hash de assinatura do payload. Esse hash é enviado em cada requisição no header X-Hub-Signature.
A Monkey utiliza HMAC Base64-encoded digest para calcular o hash, você pode utilizar o mesmo mecanismo para gerar e validar o token.
Ex:
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class XHubHeaderUtils {
public static boolean isValid(String secret, String payload, String xHubSignature)
throws InvalidKeyException, NoSuchAlgorithmException {
String digest = "HmacSHA256";
Mac mac = Mac.getInstance(digest);
mac.init(new SecretKeySpec(secret.getBytes(), digest));
String computedHash = new String(Base64.getEncoder().encode(mac.doFinal(payload.getBytes())));
return MessageDigest.isEqual(computedHash.getBytes(StandardCharsets.UTF_8),
xHubSignature.getBytes(StandardCharsets.UTF_8));
}
}def isValid(secret, payload, verify):
import hmac
import hashlib
import base64
hashBytes = hmac.new(secret, msg=payload, digestmod=hashlib.sha256).digest()
base64Hash = base64.b64encode(hashBytes)
return hmac.compare_digest(verify, base64Hash)using System;
using System.Text;
using System.Security.Cryptography;
public static class XHubHeaderUtils {
public static bool isValid(string secret, string payload, string xHubSignature)
{
byte[] bytes = Encoding.UTF8.GetBytes(secret);
HMAC hmac = new HMACSHA256(bytes);
bytes = Encoding.UTF8.GetBytes(payload);
String hash = Convert.ToBase64String(hmac.ComputeHash(bytes));
return CryptographicOperations.FixedTimeEquals(Convert.FromBase64String(hash), Convert.FromBase64String(xHubSignature));
}
}Restrição de IPs
Você pode restringir as requisições utilizando os IPs da Monkey.
Homologação: 34.192.48.76 e 34.192.8.231
Produção: 34.194.174.23 e 23.21.183.94
Configuração de Webhook
Para receber estas requisições, você deve configurar um webhook, para isso acesse a plataforma e vá em Configurações -> Webhooks -> Configurar
Eventos
Evento | Tipo (Cadastro) | Tipo (Busca) | Descrição |
|---|---|---|---|
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
|
Updated 9 months ago