Webhook Exporter
The Webhook exporter will collect the data and send it via an HTTP POST request to the specified endpoint.
Everytime the FlushInterval
or MaxEventInMemory
is reached, a new call is performed.
If for some reason the call failed, we will keep the data in memory and retry to add the next time we reach FlushInterval
or MaxEventInMemory
.
Configuration example
ffclient.Config{
// ...
DataExporter: ffclient.DataExporter{
// ...
Exporter: &webhookexporter.Exporter{
EndpointURL: " https://webhook.url/",
Secret: "secret-for-signing",
Meta: map[string]string{
"extraInfo": "info",
},
Headers: map[string][]string{
"Authorization": {"Bearer auth_token"},
},
},
},
// ...
}
Configuration fields
Field | Description |
---|---|
EndpointURL | EndpointURL of your webhook |
Secret | (optional) Secret used to sign your request body and fill the X-Hub-Signature-256 header.See signature section for more details. |
Meta | (optional) Add all the information you want to see in your request. |
Headers | (optional) List of Headers to send to the endpoint |
Webhook format
If you have configured a webhook, a POST
request will be sent to the EndpointURL
with a body in this format:
{
"meta": {
"hostname": "server01",
// ...
},
"events": [
{
"kind": "feature",
"contextKind": "anonymousUser",
"userKey": "14613538188334553206",
"creationDate": 1618909178,
"key": "test-flag",
"variation": "Default",
"value": false,
"default": false,
"source": "SERVER"
},
// ...
]
}
Signature
This header X-Hub-Signature-256
is sent if the webhook is configured with a secret
.
This is the HMAC hex digest of the request body, and is generated using the SHA-256 hash function and the secret as the HMAC key.
The recommendation is to always use the Secret
and on your API/webhook always verify the signature key to be sure that you don't get into a man-in-the-middle attack.