/Methods/GetArchivedEvents

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC > События и сообщения >

/Methods/GetArchivedEvents

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

HTTP: POST /Methods/GetArchivedEvents

Запрос

{
  "sessionId": 123456789,
  "archiveId": 0,
  "startTime": 1709990000000,
  "endTime": 1710000000000,
  "inverse": false,
  "maxRecs": 100,
  "timeout": 60,
  "fullPath": "Объекты.Объект 1.Оборудование 1",
  "fields": [
    {"name": "EventId"},
    {"name": "Time"},
    {"name": "Message"},
    {"name": "Severity"},
    {"name": "Acked"}
  ],
  "filter": [
    "Active=true",
    "Severity <= 100 or Severity >= 900"
  ]
}

Следующую страницу запрашивают с точным continuationPoint из предыдущего ответа:

{
  "sessionId": 123456789,
  "archiveId": 0,
  "startTime": 1709990000000,
  "endTime": 1710000000000,
  "maxRecs": 100,
  "timeout": 60,
  "continuationPoint": "AQAAAAAAAAABAAAAAAAAAAAAAAA=",
  "fields": [
    {"name": "EventId"},
    {"name": "Time"},
    {"name": "Message"}
  ]
}

Поля запроса

Поле

Тип

Обязательное

По умолчанию

Описание

sessionId

integer

условно

Нужен, если сессия не передана заголовком Session-Id

archiveId

integer

нет

0

Архив событий; 0 выбирает первый настроенный архив, если архив не удалось определить по itemId

startTime

integer

нет

0

Начало диапазона, Unix time в миллисекундах; 0 снимает нижнюю границу

endTime

integer

нет

конец архива

Конец диапазона, Unix time в миллисекундах

inverse

boolean

нет

false

Читать в обратном направлении; внутренние границы диапазона меняются местами

maxRecs

integer

нет

200

Максимальное число записей в ответе; 0 также заменяется на 200

maxSize

integer

нет

Устаревшее поле: текущий обработчик его не читает

timeout

integer

нет

60

Максимальное синхронное ожидание ответа архива, секунд

continuationPoint

string

нет

пусто

Непрозрачная Base64-строка из предыдущего ответа

fullPath

string

нет

""

Предпочтительный фильтр по объекту и его потомкам

itemId

integer

нет

0

Устаревшая совместимая адресация; также используется для выбора архива объекта

path

string

нет

""

Уточнение пути при адресации через itemId

fields

array

да

Поля, значения которых нужно вернуть в каждой записи

fields[].name

string

да

""

Имя поля архива; именно оно используется при формировании ответа

fields[].id

integer

нет

0

Сохраняется в запросе, но при сериализации ответа не используется

fields[].type

string

нет

""

Сохраняется в запросе, но не преобразует возвращаемое значение

fields[].typeHash

integer

нет

0

Сохраняется в запросе, но сейчас не используется

filter

array of string

нет

[]

Дополнительные DSL-условия; элементы объединяются логическим AND

Для совместимости 64-битные числовые поля, включая время и идентификаторы, принимают также строки с десятичным числом. В новых клиентах следует передавать JSON-числа.

Объектная форма continuationPoint с полями time, eventId и alarmId также распознаётся, но является внутренним совместимым форматом. Клиенту следует хранить и возвращать непрозрачную строку без разбора.

Ответ с записями

{
  "continuationPoint": "AQAAAAAAAAABAAAAAAAAAAAAAAA=",
  "recs": [
    ["12A5EDFFFFFF", 1709999000000, "Превышение уставки", 100, false],
    ["13A5EDABABAB", 1709999100000, "Авария насоса", 950, false]
  ],
  "hasMore": true,
  "serverTime": 1710000000123,
  "code": 0
}

Если записей нет, continuationPoint и recs отсутствуют:

{
  "hasMore": false,
  "serverTime": 1710000000123,
  "code": 0
}

Поля ответа

Поле

Тип

Условие

Описание

continuationPoint

string

есть записи

Непрозрачная позиция последней возвращённой записи

recs

array of array

есть записи

Записи архива; значения идут в порядке запрошенных fields

hasMore

boolean

всегда

true, если размер страницы достиг maxRecs

serverTime

integer

обработчик завершился

Время сервера, Unix time в миллисекундах

code

integer

всегда

Общий результат архивного запроса

Поведение и ограничения

При archiveId: 0 и ненулевом itemId обработчик пытается выбрать архив объекта. fullPath влияет на фильтрацию записей, но сам по себе не выбирает архив; для объекта в нестандартном архиве передавайте archiveId явно.

Если выбранный архив не найден, возвращается OpcUa_BadNoData.

Запрос передаётся асинхронному обработчику архива, но HTTP-вызов ждёт семафор не дольше timeout. Нулевое или отрицательное значение приводит к OpcUa_BadTimeout без ожидания.

Диапазон maxRecs не проверяется. Передавайте положительное значение или 0 для серверного значения 200; отрицательные значения не являются поддержанным режимом.

Ошибка разбора фильтра возвращается корневым code. Элементы filter должны быть строками.

hasMore вычисляется как число записей >= maxRecs. Поэтому значение true не гарантирует, что после точки продолжения действительно есть ещё одна запись; клиент должен продолжать чтение до ответа с hasMore: false.

Точка продолжения зависит от времени, типа обновления, идентификатора тревоги и времени активации. Не создавайте и не изменяйте её самостоятельно.

maxSize, fields[].id, fields[].type и fields[].typeHash не влияют на текущую сериализацию ответа.