The webhook plugin sends an HTTP request when the endpoint status changes.
{
"url": "https://example.com/link-events",
"resource_id": "resource-123",
"secret": "shared-secret",
"headers": {
"Authorization": "Bearer my-token",
"X-Custom": "custom-value"
}
}urlis required and must usehttporhttps.resource_idis required and identifies the external resource tied to the webhook. Link derives the election key fromresource_id, so endpoints configured with the sameresource_idcompete for the same activation lock. Only one Link instance will activate the endpoint for a givenresource_id.secretis required, stored encrypted, and used to sign webhook requests.headersis optional and contains extra headers injected in the request.
The plugin sends a POST request to url with a JSON body:
{
"endpoint_id": "vip-...",
"resource_id": "resource-123",
"plugin": "webhook",
"status": "ACTIVATED"
}Requests include these Link headers:
X-Link-Webhook-Resource-ID: theresource_idfrom the plugin config. Consumers can use it to derive the webhook key before reading the request body.X-Link-Webhook-Timestamp: Unix timestamp in seconds.X-Link-Webhook-Signature: hex-encoded HMAC-SHA256 of"<timestamp>.<body>".