CustomHTTPConnector · HMAC-SHA256 · constant-time compare
Each monitored product posts structured error payloads to POST /webhook/{source_name}. Every request carries an X-Pehredaar-Signature header — sha256 HMAC over the raw body, verified with hmac.compare_digest so signature checking is constant-time. Per-source field maps use dot-notation to pull error.type, error.message, error.route, error.method, and error.status_code out of whatever shape the product sends.
The connector refuses to start when a source is configured with an empty secret and allow_unauthenticated set to false. An unauthenticated ingest endpoint that silently accepts anything is a backdoor, not a convenience, so the daemon fails loudly at boot instead of quietly accepting forged events.
