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 /*Общее количество связей*/
}