This event is configured per classification on an Agent Configuration card, not as a broadcast subscription. It is delivered only to the webhook a classification card points to. Set it up under Configuring Security Delivery Agents by enabling Advanced mode and choosing a webhook as the custom action for a classification.
When It Fires
The event fires once per investigation, when the agent completes and reaches a classification, for any classification whose policy has a webhook custom action configured. The event type (schema) is:Request Headers
Every delivery includes these headers. Use them to verify authenticity before trusting the body.Verifying the Signature
The signature covers the timestamp and the exact raw request body:signing_key is the secret shown once when the webhook was created, unless you supplied your own signing token override when setting bearer-token credentials, in which case it is that token.
1
Read the raw body
Compute the signature over the unparsed request body bytes, before any JSON deserialization.
2
Recompute
Concatenate the
X-CF-Timestamp value, a literal ., and the raw body. HMAC-SHA256 it with your signing key and Base64-encode the result.3
Compare in constant time
Compare your value to
X-CF-Signature using a constant-time comparison. Reject on mismatch.4
Check the timestamp
Reject the request if
X-CF-Timestamp is more than 5 minutes from current time, to limit replay.Payload
The body is JSON with camelCase fields:Fields
Testing
Use the Send test action on the webhook in Developers to deliver a synthetic event. Test deliveries carryX-CF-Test: true and use sample data. They are signed identically to live events, so you can validate your verification code end to end.
Troubleshooting
Questions about the agent investigation webhook? Contact us at support@contraforce.com.