⌂ > ⎘ Открытый REST API

/event : События в реальном времени🔗

GET /event: Получение событий в реальном времени🔗

Совет

Данный запрос устарел. Вместо него рекомендуется использовать эндпойнт:

POST /archive_events

Подробнее см. /archive_events : Данные о событиях в архиве.

Доступно во всех типах лицензий.

Предупреждение

Доступно в Macroscop версии 2.1 и выше.

Важно

Во всех примерах указан локальный хост (localhost). При отправке реальных запросов замените его на адрес и порт сервера, на который отправляете запрос.

Примечание

Доступно получение ответа в формате JSON.

События можно получать в режиме реального времени в виде непрерывного («бесконечного») HTTP-соединения.

Примечание

При чтении полученного ответа необходимо учитывать, что информация передаётся с использованием следующих механизмов:

  • Chunked transfer encoding для передачи динамически формируемого тела ответа. Ввиду "бесконечности" запроса невозможно предугадать точный размер тела ответа, в связи с чем ответ передаётся с заголовком "Transfer-encoded: chunked".

  • Newline delimited JSON streaming для разделения передаваемых объектов. Разделение объектов в этом механизме осуществляется переводом следующего объекта на новую строку вместо использования символьных разделителей.

Для получения «бесконечного» потока событий системы используется запрос к ресурсу event.

Пример запроса🔗

Пример запроса данных в формате JSON:

GET http://localhost:8080/event?login=root&password=&responsetype=json

Дополнительные параметры запроса🔗

Параметр

Значение по умолчанию

Описание

channelid

—

Уникальный идентификатор канала. Может быть получен при выполнении запроса Получение конфигурации системы. Опциональный параметр

filter

—

Уникальный идентификатор события. Может быть получен при выполнении запроса Получение списка всех зарегистрированных событий. Опциональный параметр

responsetype

xml

Формат представления возвращаемых данных. Если не указан в запросе, используется значение по умолчанию. Опциональный параметр. Допустимые значения: xml, json

mode

—

Флаг указания серверу генерировать отладочные сообщения при применении значения demo. Опциональный параметр

Примеры ответа на запрос🔗

Пример фрагмента ответа на запрос в формате JSON:

{
    "EventId" : "eb0bb455-b85f-4ac4-851f-f30a11797579",
    "Timestamp" : "19.10.2022 09:58:55",
    "BinaryTimestamp" : "5249703721781162729",
    "ZonedTimestamp" : "19.10.2022 09:58:55.377 +05:00",
    "EventDescription" : "Начало движения",
    "IsAlarmEvent" : "False",
    "ChannelId" : "e0391a80-c921-4ffc-9a69-107fcf28e34e",
    "ChannelName" : "Камера 3",
    "Comment" : "",
    "EventType" : "Info",
    "InitiatorName" : "System"
}
{
    "EventId" : "e4b1f78d-35d6-4092-9fd8-72e66de82e01",
    "Timestamp" : "19.10.2022 09:59:11",
    "BinaryTimestamp" : "5249703721937844932",
    "ZonedTimestamp" : "19.10.2022 09:59:11.045 +05:00",
    "EventDescription" : "Окончание движения",
    "IsAlarmEvent" : "False",
    "ChannelId" : "e0391a80-c921-4ffc-9a69-107fcf28e34e",
    "ChannelName" : "Камера 3",
    "Comment" : "",
    "EventType" : "Info",
    "InitiatorName" : "System"
}

Пример фрагмента ответа с событием Обнаружено падение:

{
    "InitiatorName" : "ExternalEvent",
    "EventId" : "919f7bf5-aea4-4bc1-8f55-e0271c7ad620",
    "EventType" : "Info",
    "IsAlarmEvent" : "False",
    "ChannelId" : "e59cd3e2-873b-4543-a0a0-3f0ed3800c5a",
    "ChannelName" : "Камера 1",
    "Comment" : "",
    "Timestamp" : "07.08.2025 08:38:51",
    "BinaryTimestamp" : "5250587545742944440",
    "ZonedTimestamp" : "07.08.2025 08:38:51.555 +05:00",
    "EventDescription" : "Обнаружено падение",
    "ZoneId" : "d05df0ea-2d04-45ab-95f1-0183d3a4f9e4",
    "Left" : "0,4277643859386444",
    "Top" : "0,41011327505111694",
    "Width" : "0,16975590586662292",
    "Height" : "0,1275453269481659"
}

Примеры запросов и ответов с дополнительными параметрами🔗

Параметры запроса filter и channelid применяются в случаях, когда необходимо получить события только определённого типа и/или с определённого канала. Оба параметра могут быть использованы в одном запросе одновременно, но каждый параметр при этом может иметь только одно значение.

Пример корректного запроса:

GET http://localhost:8080/event?login=root&password=&channelid=e0391a80-c921-4ffc-9a69-107fcf28e34e&filter=00000000-0000-0000-0000-000000000033&responsetype=json

Пример некорректного запроса:

GET http://localhost:8080/event?login=root&password=&channelid=e0391a80-c921-4ffc-9a69-107fcf28e34e&filter=00000000-0000-0000-0000-000000000033,e4b1f78d-35d6-4092-9fd8-72e66de82e01&responsetype=json

При добавлении к запросу параметра mode=demo система начнёт генерировать виртуальные события с типом события «Обнаружен автономер». Такие события не сохраняются в журнал событий системы, не ассоциируются с какой-либо камерой и не несут какой-либо действительной информации. Этот параметр может быть полезен для изучения, тестирования и отладки механизмов получения и чтения событий.

Пример запроса виртуальных событий в формате JSON:

GET http://localhost:8080/event?login=root&password=&mode=demo&responsetype=json

Пример виртуального события в формате JSON:

{
    "EventId" : "c9d6d086-c965-4cf8-aef6-85b3894e3a4a",
    "Timestamp" : "19.10.2022 10:24:02",
    "BinaryTimestamp" : "5249703736847974593",
    "ZonedTimestamp" : "19.10.2022 10:24:02.058 +05:00",
    "EventDescription" : "Обнаружен автономер",
    "IsAlarmEvent" : "False",
    "ChannelId" : "00000000-0000-0000-0000-000000000000",
    "ChannelName" : "",
    "Comment" : "",
    "EventType" : "Info",
    "InitiatorName" : "System",
    "IsIdentified" : "False",
    "plateText" : "",
    "Speed" : "0",
    "Reliability" : "0",
    "Left" : "0",
    "Top" : "0",
    "lastName" : "",
    "firstName" : "",
    "patronymic" : "",
    "carbrand" : "",
    "carcolor" : "",
    "additionalInfo" : "",
    "groups" : "",
    "direction" : ["Unknown"],
    "ExternalId" : "",
    "ExternalOwnerId" : "",
    "Width" : "0",
    "Height" : "0",
    "Numberplate" : ""
}

В случае полного или временного отсутствия событий, соответствующих отправленному запросу, система будет возвращать в ответ KeepAlive сообщения для сохранения установленного соединения активным. Сообщение такого типа будет отображаться в потоке даже если в запросе был задан фильтр по типу события.

Пример KeepAlive сообщения в формате JSON:

{
    "EventId" : "e9e7a69c-7ee2-3fee-a530-9f8a88124fcc",
    "Timestamp" : "19.10.2022 09:59:19",
    "BinaryTimestamp" : "5249703722021050198",
    "ZonedTimestamp" : "19.10.2022 09:59:19.366 +05:00",
    "EventDescription" : "",
    "IsAlarmEvent" : "False",
    "ChannelId" : "00000000-0000-0000-0000-000000000000",
    "ChannelName" : "",
    "Comment" : "KeepAlive",
    "EventType" : "Info",
    "InitiatorName" : "System"
}

В результате работы некоторых модулей аналитики системой регистрируются координаты обнаруженного на кадре объекта (например, координаты лица для модулей Распознавание лиц). При запросе событий такого типа, в теле ответа передаются относительные координаты рамки объекта в виде позиции на кадре левой верхней точки рамки (Top, Left), а также её ширины и высоты (Width, Height).

Отсчёт координат осуществляется от левого верхнего угла кадра.

Пример ответа с координатами объекта:

{
    "InitiatorName" : "ExternalEvent",
    "EventId" : "427f1cc3-2c2f-4f50-8865-56ae99c3610d",
    "EventType" : "Info",
    "IsAlarmEvent" : "False",
    "ChannelId" : "89402bc1-2ca3-4aa2-ac06-6c5d8470f1fa",
    "ChannelName" : "Камера 1",
    "Comment" : "",
    "Timestamp" : "22.08.2023 04:44:05",
    "BinaryTimestamp" : "5249968780880794756",
    "ZonedTimestamp" : "22.08.2023 04:44:05.340 +05:00",
    "EventDescription" : "Обнаружено лицо (Модуль распознавания лиц)",
    "FaceId" : "5821fc2b-c9d2-4d72-aa85-6ffe114b7fec",
    "IsIdentified" : "False",
    "lastName" : "",
    "firstName" : "",
    "patronymic" : "",
    "groups" : "",
    "additionalInfo" : "",
    "Left" : "0,1947916597127915",
    "Top" : "0,06250000000000006",
    "Width" : "0,5624999999999999",
    "Height" : "0,9374999999999999",
    "Similarity" : "0",
    "Age" : "25",
    "Gender" : "Male",
    "ExternalId" : "",
    "TemperatureDegreesCelsius" : "0",
    "ImageBytes" : "",
    "Emotion" : "Neutral",
    "EmotionConfidence" : "0,8842294216156006",
    "IsFaceCovered" : "False",
    "IsRotated" : "False",
    "TrajectoryId" : "da758802-6ee6-401f-b13f-b67d969a07c9"
}

Для сортировки по времени возникновения события каждый объект имеет временную метку, представленную в теле ответа одновременно в трёх форматах:

  • Timestamp - дата и время сервера в формате UTC без учёта часового пояса сервера;

  • ZonedTimestamp - дата и время сервера в формате UTC с указанием часового пояса сервера;

  • BinaryTimestamp - дата и время сервера в бинарном представлении (метод DateTime.ToBinary).

Примечание

Бинарное представление временной метки имеет наибольшие точность и удобство интеграции, но осложняет задачу чтения временной метки человеком. Для преобразования бинарного представления даты и времени в формат UTC используйте метод DateTime.FromBinary.