Webhooks в CRM: подпись HMAC, идемпотентность и ретраи

Публичный HTTP-endpoint должен проверять подпись тела запроса общим секретом (HMAC-SHA256 и т.п.) и отклонять запросы вне окна timestamp, если провайдер это поддерживает.
Обработчик должен быть идемпотентным: повторная доставка того же event_id не создаёт второй лид — храните обработанные ID в быстром хранилище с TTL.
- [OWASP API Security Top 10 (2023)](https://owasp.org/API-Security/editions/2023/en/0x11-t10/) — Риски API, включая аутентификацию и SSRF.
---
## Эксплуатация
Отвечайте 2xx только после успешной записи в очередь или БД; если бизнес-логика упала — контролируемый 5xx заставит провайдера повторить доставку по backoff.
Логируйте сырое тело и заголовки с маскировкой PII — это спасает при разборе инцидентов с «почему не создалась сделка».
