SecurityFlow Кабинет лицензий , откроется в новой вкладке

Документация / Руководство администратора / Интеграции

Уведомления

Обновлено 20 октября 2026

Core отправляет уведомления одним способом - HTTP-запросом POST с телом JSON на заданный адрес. Чтобы получать уведомления на почту, в Telegram или Slack, примите вебхук своим сервисом или ботом и перешлите сообщение из поля text.

Раздел: "Глобальные настройки" → "Уведомления", вкладки "Настройки", "Уведомления о смене статуса" и "Расписание уведомлений". Нужна роль с правом "Глобальные настройки": "Просмотр" для чтения, "Изменение" для правки.

Интеграция

Интеграция задаёт получателя: адрес, заголовок авторизации и область действия. Вкладка "Настройки" → "Создать интеграцию уведомлений".

Поле Что задаёт По умолчанию
"Название" имя интеграции -
"URL уведомлений" адрес получателя -
"Заголовок авторизации" имя HTTP-заголовка, например Authorization пусто
"Значение заголовка авторизации" значение заголовка, например Bearer <токен>; хранится зашифрованным пусто
"Проверять SSL" проверка TLS-сертификата получателя включено
"Уведомление об импортированных уязвимостях" событие после обработки отчёта выключено
"Уведомление о завершении валидации" события после работы автовалидатора выключено
область действия продукты или ассеты, по уязвимостям которых отправляются события -
активность включить или выключить интеграцию включена

Без области действия событий нет

События об уязвимостях отправляются, только если уязвимости попадают в область действия интеграции. Интеграция без области получает лишь проверочное сообщение, а расписания по ней присылают нулевой результат. Для всех продуктов выберите "Глобально".

"Проверить соединение" отправляет проверочное сообщение и показывает "Код ответа:" получателя и итог "Подключено" или "Не подключено". Через API: POST /api/v1/notifications/credentials/<id>/test/.

Видимость и правка интеграции зависят от области видимости роли: Объекты с собственной областью действия.

Как отправляется запрос

  • Метод POST, заголовок Content-Type: application/json, плюс заголовок авторизации интеграции.
  • Параметры строки запроса из "URL уведомлений" дублируются в тело как поля JSON. Так можно передать получателю, например, chat_id.
  • Таймаут - 10 секунд. Повторов нет: неудачная отправка только пишется в журнал Core.
  • Текст в поле text - на английском языке, со ссылками на "Внешний URL приложения".

События

event_name Когда отправляется Что включает
status_changed статус уязвимостей изменён вручную или автоматикой и совпал с правилом на вкладке "Уведомления о смене статуса" правило уведомления о смене статуса
findings_imported отчёт обработан, в нём есть уязвимости из области действия "Уведомление об импортированных уязвимостях"
validator_finished автовалидатор изменил уязвимости из области действия "Уведомление о завершении валидации"
import_validator_finished автовалидатор закончил разбор импорта в продукте из области действия "Уведомление о завершении валидации"
schedule_filter по расписанию с сохранённым фильтром уязвимостей расписание на вкладке "Расписание уведомлений"
test_credentials нажата "Проверить соединение" -

Уведомления о смене статуса

Вкладка "Уведомления о смене статуса" → "Создать уведомление". Правило срабатывает, если совпали все условия:

Поле Что задаёт
"Вебхук" интеграция-получатель
"Было" исходный статус или "Любой"
"Стало" новый статус или "Любой"
"Как изменено" "Как угодно", "Автоматически" или "Вручную"
порог минимальное число уязвимостей в одной смене статуса; 0 - любое
"Передавать детали об уязвимостях" и "Поля" добавить в текст список уязвимостей с выбранными полями

Массовая смена статуса из разных исходных статусов отправляет отдельное уведомление на каждый исходный статус.

Пример тела:

{
  "text": "3 Finding(s) has (have) changed its status from Unverified to Verified by Manual",
  "event_name": "status_changed",
  "affected_findings_count": 3,
  "old_status": "Unverified",
  "new_status": "Verified",
  "changed_by": "Manual",
  "objects_ids": [101, 102, 107],
  "objects_url": "https://core.example.ru/findings",
  "user_id": 4,
  "user_name": "ivanov"
}

Статусы в теле - английские имена: Resolved, Unverified, Verified, Assigned, Rejected, Risk Accepted Temporarily, Risk Accepted Permanently. Способ смены: Anyone, Automation, Manual.

Тела других событий

event_name Поля
findings_imported text, event_name, user_id, user_name, data - список с продуктом: поля продукта, affected_findings_ids, affected_findings_count, scanner, assets
validator_finished text, event_name, data - список продуктов с affected_findings_ids и affected_findings_count
import_validator_finished text, event_name, data - продукт с affected_findings_ids, affected_findings_count, scanner
schedule_filter text, event_name, affected_findings_count, schedule_link и параметры фильтра
test_credentials text, event_name

Расписание уведомлений

Расписание присылает число уязвимостей по сохранённому фильтру. Создайте его из списка уязвимостей: настройте фильтры и нажмите "Создать уведомление для текущих фильтров".

Поле Что задаёт
"Название" имя расписания
"Вебхук" интеграция-получатель
расписание крон или готовый вариант "Повтор"; "Установить вручную" - ввод крона
"Активно" включено ли расписание
"Передавать детали об уязвимостях" и "Поля" добавить список уязвимостей
  • Крон в Core записывается в нестандартном порядке: минута час день_недели день_месяца месяц. Пример: 0 9 1-5 * * - в 09:00 по будням. Время - UTC.
  • Расписание считает уязвимости в продуктах, доступных его создателю, и в области действия интеграции.
  • Текст содержит число уязвимостей, ссылку на список с этим фильтром и ссылку на отключение расписания.
  • Расписание удаляется вместе с пользователем, который его создал.

Детали уязвимостей

В правилах и расписаниях можно выбрать поля уязвимостей для текста: id, name, severity, scanner, description, current_sla_level, file_path, line, vulnerable_url, dependency, branch, repository, docker_image, domain, host, cloud_account, custom_field. Core добавляет их в text списком в разметке Markdown.

Проверка

  1. Создайте интеграцию с областью "Глобально" и нажмите "Проверить соединение": получатель вернул код 2xx, статус "Подключено".
  2. Создайте правило смены статуса "Было" - "Любой", "Стало" - "Отклонено".
  3. Отклоните тестовую уязвимость: получатель принял status_changed.

Ограничения

  • Один канал доставки - HTTP POST.
  • Повторной отправки нет, очереди недоставленных сообщений нет.
  • Тексты уведомлений не переводятся.