REST-сервис модуля работы с данными¶
Модуль предназначен для работы с данными: записями реестров и их связями, группами реестров и справочниками, а также с восстановлением записей или периодов актуальности и пр.
Работа со связями реестров¶
Поиск и фильтрация связей¶
POST-запрос v2/data/relations/filtered-relations/
принимает данные для поиска связей, а также search-запрос для фильтрации.
Если
filter: null
, то на основе данных из запроса к openSearch будет выполнен запрос по умолчанию на получение максимум 50000 записей - записей всех периодов (не только актуальных в текущий момент).Если
filter
указан, то осуществляется поиск связей в openSearch:
Если поиск по запросу
filter
ничего не дал, то в ответе вернется пустой массив связей.Если поиск по запросу
filter
нашел связи, то актуальное состояние данных связей будет получено из БД и вернется в ответе на запрос.Если в
formFields
не указано поле$relation_name
, то данное поле будет добавлено со значением поляrelationName
из запроса.Если флаг
fetchByToSide = false
и вformFields
не указано поле$etalon_id_from
, то данное поле будет добавлено со значением поляrecordEtalonId
из запроса.Если флаг
fetchByToSide = true
и вformFields
не указано поле$etalon_id_to
, то данное поле будет добавлено со значением поляrecordEtalonId
из запроса.Фильтрация и пагинация работают для связей типа Ссылка, если
reduceReferences = true
. В ответе на запрос вернутся только связи-победители (поскольку они индексируются, их можно получать через запрос к openSearch).
Если
reduceReferences = false
, то вернутся все связи-ссылки из БД.
Пример запроса:
{
"relationName":"m2m", /*Имя связи*/
"recordEtalonId":"8acfa51c-6450-11ef-8ad2-adc3f4be364b", /*etalonId записи from, если fetchByToSide == false; etalonId записи to, если fetchByToSide == true;*/
"fetchByToSide": false, /*Если true, то поле recordEtalonId интерпретируется как etalon записи to, from иначе*/
"draftId": 0,
"lud":null, /*Last update date*/
"useHistoricStatuses": false,
"reduceReferences": false, /*Если true, то отображается только победившая связь ссылка, иначе отображаются все*/
"filter": { /*Запрос фильтрации и пагинации*/
"searchDataType": "RELATION", /*Обязательно RELATION*/
"entity": "rst", /*Имя реестра*/
"count": 2, /*Количество записей на странице*/
"page": 3, /*Номер страницы*/
"totalCount": true, /*Возвращать ли общее количество найденных записей*/
"facets": null, /*Специальные флаги. inactive_only - искать только логически удаленные записи. un_ranged выставляется если в formFields есть поиск по $from или $to*/
"sortFields":[], /*Сортировка возвращаемых связей*/
"text": null,
"formFields": [ /*Параметры фильтрации*/
{
"name": "$etalon_id_from",
"type": "STRING",
"searchType": "EXACT",
"inverted": false,
"value": "8acfa51c-6450-11ef-8ad2-adc3f4be364b"
},
{
"name": "$relation_name",
"type": "STRING",
"searchType": "EXACT",
"inverted": false,
"value": "m2m"
}
],
"searchFields": [],
"formGroups": [],
"returnFields": ["$etalon_id"], /*Не используется. Заполняется на BE.*/
"searchAfter": null, /*Не используется*/
"countOnly": false,
"returnAllFields": false,
"defaultSort": false,
"fetchAll": false,
"source": false,
"sayt": false,
"negative": false
"asOf": "2024-09-04T08:44:51.845Z"
}
}
Пример ответа:
{
"details": {
"info": [],
"warning": [],
"error": []
},
"relations": {
"relationName": [] /*Массив связей удовлетворяющих фильтру*/
},
"totalCount": 0 /*Общее количество связей*/
}