Event API

2026-10-16

Введение в функцию

Event API — это сервис активных уведомлений синхронизации FlightHub для отправки бизнес-событий на сторонние платформы в режиме реального времени. При использовании Event API обратите внимание на следующее:

    • Необходимо проверять поле x-dji-signature в заголовке полученного запроса сервиса. Подпись рассчитывается с использованием HMAC-SHA256 на основе токена организации, который используется для проверки подлинности источника запроса.
  • Можно настроить правила уведомлений, выбрать типы событий для подписки и указать подписку на данные для всех проектов или отдельных проектов.
  • Конечная точка приема поддерживает протоколы HTTP и HTTPS.
  • FlightHub 2 отправляет уведомления о событиях с использованием фиксированного IP-адреса. Серверы в разных регионах используют разные IP-адреса. Для локальной версии FlightHub конкретный IP-адрес зависит от вашего сервера.
Страна/регионIP
Сервер ЕС + глобальный сервер18.198.174.64
3.64.50.113
3.71.214.14
63.177.169.61
52.3.45.199
52.55.215.248
52.73.49.179
34.237.190.206
34.237.182.49
34.228.131.169

Настройка правил уведомлений

Управление правилами

Список правил отображает следующую информацию:

  • Название правила: Задается пользователем, до 60 символов
  • Адрес отправки: URL конечной точки (HTTP/HTTPS)
  • Область данных: Все проекты или выбранные проекты
  • Подписанные события: Список выбранных типов событий
  • Состояние: Включено/Отключено
  • Действия: Редактировать, удалить

Настройка области данных

  • Все проекты: Автоматически включает все будущие проекты.
  • Выбранные проекты: Каждый проект может быть связан только с одним пользовательским правилом (за исключением правила «Все проекты»). Уже выбранные проекты будут отображаться неактивными.

Примечание: Если в организации уже существует правило «Все проекты», создание нового правила для выбранных проектов вызовет предупреждение о двойной отправке событий.

Аудит журнала доставки

EventAPI предоставляет статистику журналов доставки за 7 дней, включая:

  • Процент успешных: Отображается в процентах. Ответ 200 считается успешным.
  • Общее количество событий: Количество событий за последние 7 дней
  • Количество ошибок: Общее количество неудачных отправок за 7 дней

Журналы за последние 7 дней можно скачать в формате CSV. Хранятся только данные за этот период.

Типы отправляемых событий

Уведомление о синхронизации файлов

{
  "id": "e3b0c442-73fc-1c14-9afb-f17e2fa6826a", // Универсальный уникальный идентификатор (UUID) сообщения о событии
  "type": "file_sync_success", // Тип события: уведомление о синхронизации файла
  "created_at": 1767875288, // Временная метка отправки события (секунды)
  "data": {
    "task_id": "sync_task_10001", // Универсальный уникальный идентификатор задачи синхронизации
    "organization_id": "org_123456_xxxxxx", // ID организации
    "project_id": "proj_789012_xxxxxx", // ID проекта файла
    "file_id": "file_345678_xxxxxx", // ID файла в FlightHub
    "file_type": "application/pdf", // Тип файла (маршрут точек, запись полёта, модель или медиафайл)
    "file_external_key": "customer_storage/2026/01/report_09.pdf", // Ключ объекта (путь хранения) файла в стороннем хранилище
    "file_bytes_size": 1048576, // Размер файла (байты)
    "fh2_file_path": "/project_docs/report/report_09.pdf", // Исходный логический путь файла в DJI FlightHub 2
   }
}

Получение списка предупреждений ИИ и снимков

{
  "id": "e3b0c442-98fc-1c14-9afb-f17e2fa6826a" , // UUID сообщения о событии
  "type": "ai_alert_record", // Тип события: записи AI-обнаружения
  "created_at": 1767875288, // Временная метка отправки события (секунды)
  "data": {
    "alert_uuid": "e3b0c442-98fc-1c14-9afb-f17e2fa6826a", // UUID записей предупреждений
    "algorithm_source": 100002, // // ID источника алгоритма. Значения перечисления следующие:
                                   // 0: Официальный интеллектуальный алгоритм DJI
                                   // 1: Обнаружение людей, транспортных средств и лодок DJI в видимом свете
                                   // 2: Инфракрасное обнаружение людей, транспортных средств и лодок DJI
                                   // 3: Инфракрасное обнаружение температуры DJI
                                   // 255: Сторонние алгоритмы AI-inside на борту воздушного судна
                                   // 100001: Сторонние облачные алгоритмы AI-LINK
                                   // 100002: Мультимодальное обнаружение объектов DJI
    "drone_sn": "1581F6XXXXXX00A6XXXX", // Серийный номер воздушного судна, выполняющего задачу
    "file_id": 123456, // ID связанного исходного медиафайла
    "file_url": "https://file-storage.djicdn.com/example/path/image.jpg?auth_key=xxxx", // Ссылка для скачивания исходного изображения (содержит параметры аутентификации)
    "flight_id": "f17e2fa6-826a-48c5-a89a-fffe4093xxxx", // Связанный ID полёта
    "gateway_sn": "6QCDL8XXXXXX02XXXX", // SN связанного устройства док-станции/шлюза
    "interval_seconds": 0, // Интервал или продолжительность предупреждения (секунды). По умолчанию 0 для необлачных алгоритмов
    "labels": [
      "lights"// Метка/тип обнаруженного объекта
    ],
    "location": {
      "altitude": 80.5, // Высота в момент срабатывания предупреждения (метры)
      "latitude": 22.123456, // Широта в момент срабатывания предупреждения. Для бортовых алгоритмов это GPS-координата центра поля зрения камеры в момент предупреждения. Для облачных алгоритмов это позиция воздушного судна.
      "longitude": 113.123456, // Долгота в момент срабатывания предупреждения. Для бортовых алгоритмов это GPS-координата центра поля зрения камеры в момент предупреждения. Для облачных алгоритмов это позиция воздушного судна.
    },
    "project_id": "fe2400a5-5a74-4cb5-8374-548b7eaxxxxx", // UUID связанного проекта
    "task_name": "FlyToTask_Inspect_ZoneA", // Название связанной полётной задачи
    "thumbnail_url": "https://oss-cn-hangzhou.aliyuncs.com/example/thumbnail.jpeg?Expires=1767961676&Signature=xxxx", // Ссылка для скачивания миниатюры (включает подпись и срок действия)
    "timestamp": 1767875275677, // Временная метка AI-обнаружения (миллисекунды)
  }
}

Уведомление о прогрессе выполнения триггерного рабочего процесса

Используется для отправки прогресса выполнения узлов рабочего процесса автоматического назначения (рабочий процесс реагирования на инциденты), позволяя сторонним системам в реальном времени синхронизировать состояние задач, терминальные состояния и маркировки ложной тревоги.

{
  "event_type": "alert_workflow_progress",         // Тип события: прогресс выполнения триггерного рабочего процесса
  "event_id": "e3b0c442-73fc-1c14-9afb-f17e2fa6826a", // Уникальный идентификатор сообщения события (UUID)
  "org_id": "org_123456_xxxxxx",                   // Идентификатор организации, к которой относится это событие
  "project_id": "proj_789012_xxxxxx",              // Идентификатор проекта, к которому относится это событие (необязательно)
  "created_at": 1767875288,                        // Метка времени отправки события (в секундах)
  "data": {
    "incident_id": "incident_2026062900001",       // Идентификатор события оповещения
    "workflow_uuid": "wf_uuid_xxxxxxxxxxxx",       // UUID рабочего процесса
    "drone_sn": "1581F5BKD2380030XXXXX",           // Серийный номер рабочего дрона
    "node_type": "command_task",                   // Тип узла: command_task (задача FlyTo) / device_actions (действия устройства)
    "status": 1,                                   // Код состояния текущего узла, зависит от node_type; перечисления ниже:
                                                   // node_type = "command_task" (узел задачи FlyTo):
                                                   //   0: Ожидание           (не терминальное)
                                                   //   1: Выполняется        (не терминальное)
                                                   //   2: Успешно            (терминальное)
                                                   //   3: Ручное вмешательство (терминальное)
                                                   //   4: Ошибка выполнения  (терминальное)
                                                   // node_type = "device_actions" (узел действий устройства):
                                                   //   0: Успешно             (терминальное)
                                                   //   1: Частично успешно    (терминальное)
                                                   //   2: Не удалось          (терминальное)
                                                   //   3: В процессе          (не терминальное)
                                                   //   4: Ручное вмешательство (терминальное)
    "is_false_alarm": false,                       // Отмечено ли как ложная тревога (фактическое значение возвращается только в терминальном состоянии; в не-терминальном всегда false)
    "flight_id": "task_uuid_xxxxxxxxxxxx"          // UUID текущей execution_task
  }
}

Уведомление о загрузке медиафайлов

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "media_file_uploaded",
  "created_at": 1767875288,
  "data": {
    "organization_id": "org_123456_xxxxxx",
    "project_id": "proj_789012_xxxxxx",
    "file_id": "file_345678_xxxxxx",
    "file_name": "DJI_20260108_120000_0001.JPG",
    "file_type": "image/jpeg",
    "file_size": 10485760,
    "device_sn": "1581F6XXXXXX00A6XXXX",
    "flight_id": "f17e2fa6-826a-48c5-a89a-fffe4093xxxx"
  }
}

Уведомление о загрузке и обновлении файла маршрута полета

{
  "type": "wayline_file_uploaded",
  "org_id": "1024dd05-34ce-46b6-a872-cb32b8c98f64",
  "project_id": "38535b47-b972-4663-b1ce-5bd5a29224a4",
  "created_at": 1769414678,
  "data": {
    "id": "testcda7-c97d-4bf6-8f8f-b490b9b18401", // ID полётного маршрута
    "name": "New waypoint route (2)",           // Название полётного маршрута
    "object_key": "1testd05-34ce-46b6-a872-cb32b8c98f64/test9b47-b972-4663-b1ce-5bd5test24a4/e5testb3-2cf8-49af-b49b-64test0032c7/New waypoint route (2).kmz", // Ключ объектного хранилища полётного маршрута
    "type": 5 // Тип файла. 5 обозначает полётный маршрут
  }
}

Уведомление о завершении реконструкции модели

{
  "type": "model_post_reconstruction",
  "org_id": "105ddd05-34ce-46b6-a872-cb32b8c98f64",
  "project_id": "38559b47-b972-4663-b1ce-5bd5a29224a4",
  "created_at": 1769414678,
  "data": {
    "id": "2e12cda7-c97d-4bf6-8f8f-btest9b18401", // ID модели
    "name": "xx Model",                      // Название модели
    "object_key": "105ddd05-34ce-46b6-a872-cb32b8c98f64/38559b47-b972-4663-b1ce-5bd5a29224a4/etestbb3-2cf8-49af-b49b-64b1610032c7/Model", // Ключ объектного хранилища модели
    "type": 8//8: 2D-модель, 9: 3D-модель
  }
}

Уведомление об аномальном выходе из режима возврата домой

{
  "id": "9ab96be1-0231-4b2c-9892-2221188c323b",
  "type": "device_exit_return_home",
  "created_at": 1769400986,
  "data": {
    "action": 1,
    "event_type": "device_exit_return_home",
    "notify_type": "device_exit_return_home",
    "organization_uuid": "8test46f-2cd5-476b-9f33-415c98de11a5",
    "project_uuid": "8test9a5-d2ba-423d-a03e-e3b323c40810",
    "reason": null, // Причина аномального выхода из RTH: "2": "Ошибка инициализации дерева поведения"; "3": "Окружён препятствиями"; "4": "Сработало ограничение полёта"; "5": "Препятствие слишком близко"; "6": "Нет сигнала GPS"; "7": "Флаги вывода позиции GPS и VIO имеют значение false"; "8": "Большая ошибка позиционирования между фузией GPS и VIO"
    "sn": "158TESTGD24BK0010114" // SN воздушного судна, у которого произошёл аномальный выход из RTH
  }
}

Уведомление о добавлении/редактировании аннотации организации

{
  "created_at": 1772803375,
  "data": {
    "count": 1,
    "download_url": "/openapi/v0.1/map/data-sync/files/33711783-bf96-440d-baa2-0e71afa1d485/f7356cd3-53de-4318-955f-306cbcc60ca2/0",
    "format": "kml-gz",
    "geometry_types": [
      "polygon"
    ],
    "sync_id": "annotation-f7356cd3-53de-4318-955f-306cbcc60ca2",
    "sync_type": 0
  },
  "id": "5df19eca-65cf-4975-a942-09fdcfd7bdf9",
  "org_id": "105ddd05-34ce-46b6-a872-cb32b8c98f64",
  "project_id": "33711783-bf96-440d-baa2-0e71afa1d485",
  "type": "map_geo_elements_update"
}

Отправка обновления адреса RTSP

{
  "converter_name": "Example Converter",
  "converter_id": "29f4f54b-93af-4fd3-aed6-bd3d768082e9",
  "sn": "SN1234567890",
  "camera_index": "89-0-0",
  "device_callsign": "DRONE-01",
  "url": "rtsp://192.168.1.10:554/live/stream",
  "username": "rtsp_user",
  "password": "rtsp_password"
}

FlightHub Mapping API — Прогресс реконструкции модели

{
    "msg_type": "model_reconstruction_percent_change", // Тип сообщения, model_reconstruction_percent_change=Реконструкция модели, model_zip_change=Сжатие модели
    "resource_uuid": "7417bac3-00a4-4e07-b078-233c77e3fdf9",
    "model_uuid": "3d33643c-de0d-4070-b155-8cf791e662e2",
    "model_status": 14, // Статус реконструкции, 9=Сжатие модели, 12=Ожидание ресурсов, 13=Не удалось получить ресурсы, 14=Реконструкция выполняется, 15=Реконструкция успешна, 16=Реконструкция отменена
    "model_size": 37353992,
    "reconstruction_progress": 100, // Прогресс реконструкции, 0-100
    "error_code": 0, // Код ошибки реконструкции
    "zip_status": 2, // Статус сжатия, 1=Сжатие выполняется, 2=Сжатие завершено, 3=Ошибка сжатия
    "zip_progress": 100, // Прогресс сжатия 0-100
    "zip_file_key": "https://test-file-storage.djicdn.com/5a6f9d4b-2a38-4b4b-86f9-3a678da0bf4a/open_reconstruction/7417bac3-00a4-4e07-b078-233c77e3fdf9/3D/3d33643c-de0d-4070-b155-8cf791e662e2.zip?auth_key=1767942603-0-0-150d3c28868e91dd2446aef97c26de85", // Адрес загрузки сжатого выходного файла
}
Last Updated: