Журнал изменений сущностей (changes)

Обзор

Предоставляет данные из журнала изменений сущностей доменного центра на основании указанных условий поиска.

При каждом создании, модификации или удалении ряда сущностей, информация об операции фиксируется в журнале изменений. Это происходит только для сущностей-дескрипторов, отмеченных в спецификации как обслуживаемых доменным центром.

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

Например, можно искать все изменения за интервал времени, либо все изменения по конкретному объекту.

Запросы

HTTP verb Endpoint Описание

GET

/rest/v1/journal/changes

Получение данных из журнала

Получение данных из журнала

Запрос

Table 1. Параметры запроса
Имя Тип Описание

params

object

Условия поиска в журнале изменений. Поля объекта условий.

filter

object

Фильтр по значениям полей обнаруженных записей журнала.

mask

str

Список полей для вывода. Доступные поля для выдачи: cmdtype, dtutc, modifierid, modifiername, objtype, objid, fields, obj.

Для маскировки полей объекта (значения поля obj), их можно указывать во flat-формате, например: obj.id,obj.name,obj.opts.

offset

int

Смещение в списке ресурсов, подлежащих выдаче. Это дополнительное смещение относительно смещения в условиях поиска.

limit

int

Максимальное количество ресурсов в списке. Это дополнительное ограничение относительно ограничения в условиях поиска

order

array<object|str>

Порядок сортировки ресурсов в списке.

flat

bool

Преобразование в плоский вид составных полей. Применяется к содержанию объекта – значению поля obj.

Table 2. Поля объекта условий поиска
Имя Тип Описание

dtstart

str

Дата и время начала интервала.

В формате RFC3339 в UTC, например 2019-11-01T08:37:56Z. Подходят и другие форматы значения, они автоматически приводятся к требуемому.

dtstop

str

Дата и время начала интервала.

В формате RFC3339 в UTC, например 2019-11-01T08:37:56Z. Подходят и другие форматы значения, они автоматически приводятся к требуемому.

cmdtype

str

Фильтр на тип операции:

  • "create" – объект создан;

  • "update" – объект изменен;

  • "delete" – объект удален.

objtype

str

Фильтр на тип сущности. Например "user" или "ivrscript".

Применяется совместно с одним из условий objid и objkey.

objid

str

Фильтр на идентификатор объекта.

Для сущностей, имеющих идентификатор.

Применяется совместно с условием objtype. Не может применяться совместно с objkey.

objkey

str

Фильтр на ключевое поле объекта.

Для сущностей, не имеющих идентификатор.

Применяется совместно с условием objtype. Не может применяться совместно с objkey.

offset

int

Смещение при выдаче данных из БД.

limit

int

Ограничение количества выдаваемых данных из БД.

Пример запроса
GET /rest/v1/journal/changes?params={"objtype":"user","objid":"3063e0ff-2ce8-2f4e-f5e0-00241dd9a031"} HTTP/1.1

Ответ

Table 3. Поля объекта условий поиска
Имя Описание

cmdtype

Тип операции с объектом. Варианты значений:

  • "create" – объект создан;

  • "update" – объект изменен;

  • "delete" – объект удален.

dtutc

Дата-время проведения операции. Формат RFC3339 в UTC.

modifierid

Идентификатор учетной записи пользователя, от имени которой произведена операция.

modifiername

Имя учетной записи пользователя, от имени которой произведена операция. Фиксируется на момент проведения операции.

objtype

Тип сущности. Например "user" или "ivrscript".

objid

Идентификатор или ключевое поле сущности.

fields

Строка с названиями полей объекта, в которых изменены значения. Поля перечислены через запятую. Значения композитных полей по ключам первого уровня указываются во flat-режиме, например opts.roles.

Поле присутствует только в объектах операций "update".

obj

Полное содержание объекта, аналогичное выдаче объекта через API.

Для операций

  • "create" и "update" – приведено значение объекта после операции.

  • "delete" – приведено значение объекта до операции.

Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
  {
    "cmdtype": "update",
    "dtutc": "2019-11-01T06:35:03.343Z",
    "modifierid": "71374fef-42f1-4e49-2069-faab905d4be2",
    "modifiername": "Administrator",
    "objtype": "user",
    "objid": "3063e0ff-2ce8-2f4e-f5e0-00241dd9a031",
    "fields": "name,opts.roles",
    "obj": {
      "id": "3063e0ff-2ce8-2f4e-f5e0-00241dd9a031",
      "login": "ivanov",
      "name": "Ivanov Alexey",
      "pwd": "*****",
      "timezone": "default",
      "opts": {
        "roles": ["admin"]
      },
      "ext": {
        "a": "1",
        "b": "asdfasdf",
        "c": 555.2,
        "d": 10,
        "e": {
          "x": 1,
          "y": "2",
          "z": false
        },
        "ct": "2019-08-01T07:02:01.52Z",
        "lwt": "2019-11-01T06:35:03.31Z"
      }
    }
  },
  {
    "cmdtype": "update",
    "dtutc": "2019-08-01T07:02:15.951Z",
    "modifierid": "71374fef-42f1-4e49-2069-faab905d4be2",
    "modifiername": "Administrator",
    "objtype": "user",
    "objid": "3063e0ff-2ce8-2f4e-f5e0-00241dd9a031",
    "fields": "opts.roles",
    "obj": {
      "id": "3063e0ff-2ce8-2f4e-f5e0-00241dd9a031",
      "login": "ivanov",
      "name": "Ivanov A",
      "pwd": "*****",
      "timezone": "default",
      "opts": {
        "roles": ["user"]
      },
      "ext": {
        "a": "1",
        "b": "asdfasdf",
        "c": 555.2,
        "d": 10,
        "e": {
          "x": 1,
          "y": "2",
          "z": false
        },
        "ct": "2019-08-01T07:02:01.52Z",
        "lwt": "2019-08-01T07:02:15.95Z"
      }
    }
  },
  {
    "cmdtype": "create",
    "dtutc": "2019-08-01T07:02:01.530Z",
    "modifierid": "71374fef-42f1-4e49-2069-faab905d4be2",
    "modifiername": "Administrator",
    "objtype": "user",
    "objid": "3063e0ff-2ce8-2f4e-f5e0-00241dd9a031",
    "obj": {
      "id": "3063e0ff-2ce8-2f4e-f5e0-00241dd9a031",
      "login": "ivanov",
      "name": "Ivanov A",
      "pwd": "*****",
      "timezone": "default",
      "opts": {},
      "ext": {
        "a": "1",
        "b": "asdfasdf",
        "c": 555.2,
        "d": 10,
        "e": {
          "x": 1,
          "y": "2",
          "z": false
        },
        "ct": "2019-08-01T07:02:01.52Z",
        "lwt": "2019-08-01T07:02:01.52Z"
      }
    }
  }
]

См. также