Este servicio será el encargado de notificarte todas las actividades de tus cuentas.
Una notificación puede tratarse de una creación o de una modificación de una actividad. Para determinar de qué caso se trata podrás leer el campo type
, el cual puede tener alguno de estos valores:
ACTIVITY_CREATED
: La notificación se trata de la creación de una nueva actividad.ACTIVITY_UPDATED
: La notificación se trata de la modificación de una actividad. Las actividades pueden cambiar su estado de PENDING
a APPROVED
o de PENDING
a REJECTED
.Junto con la notificación enviaremos un conjunto de headers HTTP que te servirán para verificar la autenticidad de la misma.
Los headers HTTP que enviamos son:
x-api-key
: este header te permitirá identificar qué api-secret
tenés que usar en el caso que se hayan configurado múltiples pares de api-key
y api-secret
.
x-signature
: este header contiene la firma digital que deberás verificar para asegurar la integridad del request. Si la firma no coincide, deberás rechazar el pedido.
x-timestamp
: este header contiene el momento en el que se firmó el pedido en formato unix-epoch para que puedas corroborar que la firma no expiró.
x-endpoint
: el endpoint al que se realiza el request. Usa este header para regenerar la firma a validar, compararlo con el endpoint de tu servicio y verificar que coinciden.
La firma digital es un código HMAC-SHA256 que se construye utilizando él api-secret
y una serie de bytes que está compuesta por la concatenación del timestamp, endpoint y request body codificados en UTF-8.
El siguiente es un pseudo-código para verificar que la firma digital de un request sea legítima:
requestSignature = request.headers['x-signature']
signatureData = encode(request.headers['x-timestamp'] + request.headers['x-endpoint'] + request.body , 'UTF-8')
clientApiSecretDecoded = base64.b64decode(apiSecret)
recreatedSignature = hmac(clientApiSecretDecoded, signatureData, 'SHA256')
validSignature = requestSignature == 'hmac-sha256 ' + recreatedSignature
api-secret
tenés que usar en el caso que se hayan configurado múltiples pares de api-key
y api-secret
timestamp + endpoint + body
) que deberás verificar para asegurar la integridad del request.Si la firma no coincide, deberás rechazar el pedido.