Примеры работы с записями и реестрами

Все URL написаны относительно URL BE MDM. Если BE находится на http://localhost:8082/universe-backend, то /api/v2/draft/upsert соответствует http://localhost:8082/universe-backend/api/v2/draft/upsert.

В каждом запросе должен присутствовать заголовок Authorization, в котором передается токен авторизации (см. Получение токена авторизации).

Также см. Примеры работы с черновиками.

В примере имеется реестр (системное имя реестра - reg_test) со следующими простыми атрибутами:

Системное имя

Отображаемое имя

Тип

Системное имя типа

name

Наименование

Строка

String

quantity

Количество

Целочисленный

Integer

price

Цена

Численный

Number

date

Дата

Дата

Date

is_active

Активный

Логический

Boolean

В примере имеется справочник (системное имя справочника - lookup_test) со следующими простыми атрибутами:

Системное имя

Отображаемое имя

Тип

Системное имя типа

name

Наименование

Строка

String

quantity

Количество

Целочисленный

Integer

price

Цена

Численный

Number

date

Дата

Дата

Date

is_active

Активный

Логический

Boolean

Кодовый атрибут (является уникальным и неизменяемым после создания записи):

Системное имя

Отображаемое имя

Тип

Системное имя типа

article_number

Артикул

Строка

String

Создание записи реестра с черновиком:

  1. Создайте черновик для новой записи реестра.

  2. Запомните draftId созданного черновика.

  3. Сохраните новую запись реестра в черновик.

  4. Запомните etalonId созданной записи.

  5. Опубликуйте черновик записи реестра.

Создание записи реестра без черновика (публикация сразу):

  1. Сохраните новую запись реестра в черновик с draftId = 0.

  2. Запомните etalonId созданной записи.

Изменение записи реестра с черновиком:

  1. Используйте etalonId записи, полученный ранее.

  2. Создайте черновик для изменения записи реестра .

  3. Запомните draftID черновика.

  4. Получите версию записи реестра из черновика.

  5. Сохраните измененную запись реестра в черновик.

  6. Опубликуйте черновик с измененной записью реестра.

Изменение записи реестра без черновика (публикация сразу):

  1. Используйте etalonId записи, полученный ранее.

  2. Получите опубликованную запись реестра по etalonId.

  3. Сохраните измененную запись реестра в черновик с draftId = 0.

Удаление записи реестра:

  1. Используйте etalonId записи, полученный ранее.

  2. Удалите запись реестра

Создание записи справочника с черновиком:

  1. Создайте черновик для новой записи справочника.

  2. Запомните draftId черновика.

  3. Создайте запись справочника в черновике.

  4. Запомните etalonId созданной записи.

  5. Опубликуйте черновик новой записи справочника.

Создание записи справочника без черновика (публикация сразу):

  1. Создайте запись справочника в черновике с draftId = 0 .

  2. Запомните etalonId созданной записи.

Изменение записи справочника с черновиком:

  1. Используйте etalonId записи, полученный ранее.

  2. Создайте черновик записи справочника для изменения.

  3. Запомните draftID черновика.

  4. Получите запись справочника по etalonId с нужным draftId.

  5. Сохраните измененную запись справочника в черновике.

  6. Опубликуйте черновик измененной записи справочника.

Изменение записи справочника без черновика (публикация сразу):

  1. Используйте etalonId записи, полученный ранее.

  2. Получите запись справочника по etalonId с draftId = 0.

  3. Сохраните измененную запись справочника в черновике с draftId = 0.

Удаление записи справочника:

  1. Используйте etalonId записи, полученный ранее.

  2. Удалите запись справочника

Авторизация

Получение токена авторизации

POST:

/api/v2/core/authentication/login

Тело запроса:

{
    "userName": "admin",
    "password": "admin",
    "locale": "ru"
}

Ответ:

{
    "details": { //Список ошибок, если есть, присутствует во всех результатах
        "info": [],
        "warning": [],
        "error": []
    },
    "token": "7dc491c5-312e-4e2f-8491-c5312e9e2fb2", //Нужный нам токен
    "rights": [],
    "userInfo": {
        "createdAt": "2023-08-16T11:20:03.296237Z",
        "updatedAt": null,
        "createdBy": null,
        "updatedBy": null,
        "login": "admin",
        "firstName": "Admin",
        "middleName": null,
        "lastName": "Root",
        "fullName": "Admin  Root",
        "admin": true,
        "active": true,
        "email": "mail@example.com",
        "locale": "ru",
        "tags": [],
        "roles": [
            "ADMIN"
        ],
        "delegatedRoles": [],
        "rolesData": [
            {
                "createdAt": null,
                "updatedAt": null,
                "createdBy": null,
                "updatedBy": null,
                "name": "ADMIN",
                "displayName": "Администратор",
                "type": "SYSTEM",
                "rights": [],
                "securityLabels": [],
                "properties": []
            }
        ],
        "securityLabels": [],
        "properties": [],
        "external": false,
        "securityDataSource": "UNIDATA",
        "emailNotification": false
    },
    "forcePasswordChange": false,
    "tokenTTL": 1800,
    "buildVersion": "app.version.app.svn_revision.app.build_number app.build_date",
    "forceLicenseChange": null
}

Реестры и справочники

Создание черновика модели данных

POST:

/api/v2/draft/upsert

Тело запроса:

{
    "type": "data-model", //"data-model" - черновик модели данных
    "subjectId": "default", //Так как модель одна, то default
    "description": "Черновик от 16.08.2023 14:31:52", //Опциональный комментарий/описание к черновику
    "tags": [],
    "parameters": {}
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "data-model",
        "subjectId": "default",
        "description": "Черновик от 16.08.2023 14:31:52",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": null,
        "draftId": 2, //ID черновика, нужно запомнить, чтобы производить изменения модели в этом черновике
        "parentDraftId": null,
        "editionsCount": 0,
        "createDate": "2023-08-16T11:31:52.277Z",
        "updateDate": null,
        "tags": [],
        "state": "RUNNING" //CREATED - черновик создан, но с ним еще не работали. RUNNING - ведется работа с черновиком
    }
}

Создание реестра

POST:

/api/v2/data/model/register-entities/upsert

Тело запроса:

{
    "draftId": 2, //ID черновика в рамках которого создаем реестр. Для создания сразу опубликованного реестра ставим 0
    "registerEntity": {
        "name": "reg_test",
        "displayName": "Тестовый реестр",
        "description": "Тестовый реестр для документации",
        "hasData": false,
        "isPublished": false,
        "groupName": "",
        "version": "",
        "dashboardVisible": false,
        "validityPeriod": null,
        "externalIdGenerationStrategy": null,
        "mergeSettings": null,
        "simpleAttributes": [
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": true,
                "nullable": false,
                "searchable": true,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "String",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "name",
                "displayName": "Наименование",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 1,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": true,
                "searchable": false,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Integer",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "quantity",
                "displayName": "Количество",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 3,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": true,
                "searchable": true,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Boolean",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "is_active",
                "displayName": "Активный",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 4,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": true,
                "searchable": false,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Date",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "date",
                "displayName": "Дата",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 5,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": true,
                "searchable": true,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Number",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "rate",
                "displayName": "Цена",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 2,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            }
        ],
        "complexAttributes": [],
        "arrayAttributes": [],
        "relations": [],
        "attributeGroups": [],
        "customProperties": []
    }
}

Ответ

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draftId": 2
}

Получение реестра

GET:

/api/v2/data/model/register-entities/reg_test?draftId=2
  • reg_test - системное имя искомого реестра.

  • draftId - черновик, в котором ищем реестр, для поиска опубликованной версии реестра ставим draftId=0.

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "registerEntity": {
        "simpleAttributes": [
            {
                "name": "name",
                "displayName": "Наименование",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "rights": {
                    "createdAt": null,
                    "updatedAt": null,
                    "createdBy": null,
                    "updatedBy": null,
                    "securedResource": {
                        "id": "DATA:reg_test.name",
                        "name": null,
                        "displayName": null,
                        "type": null,
                        "category": null,
                        "parent": null,
                        "children": null
                    },
                    "rights": [
                        "READ",
                        "DELETE",
                        "CREATE",
                        "UPDATE"
                    ]
                },
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ],
                "nullable": false,
                "unique": false,
                "searchable": true,
                "simpleDataType": "String",
                "displayable": true,
                "mainDisplayable": true,
                "generationStrategy": null,
                "enumDataType": "",
                "lookupEntityType": "",
                "lookupEntityCodeAttributeType": null,
                "lookupEntityDisplayAttributes": [],
                "lookupIsHierarchical": false,
                "lookupMaxHierarchyLevel": 0,
                "dictionaryDataType": "",
                "lookupEntitySearchAttributes": [],
                "useAttributeNameForDisplay": false,
                "linkDataType": "",
                "valueId": null,
                "defaultUnitId": null,
                "order": 1,
                "searchMorphologically": false,
                "searchCaseInsensitive": false
            },
            {
                "name": "quantity",
                "displayName": "Количество",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "rights": {
                    "createdAt": null,
                    "updatedAt": null,
                    "createdBy": null,
                    "updatedBy": null,
                    "securedResource": {
                        "id": "DATA:reg_test.quantity",
                        "name": null,
                        "displayName": null,
                        "type": null,
                        "category": null,
                        "parent": null,
                        "children": null
                    },
                    "rights": [
                        "READ",
                        "DELETE",
                        "CREATE",
                        "UPDATE"
                    ]
                },
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ],
                "nullable": true,
                "unique": false,
                "searchable": false,
                "simpleDataType": "Integer",
                "displayable": true,
                "mainDisplayable": false,
                "generationStrategy": null,
                "enumDataType": "",
                "lookupEntityType": "",
                "lookupEntityCodeAttributeType": null,
                "lookupEntityDisplayAttributes": [],
                "lookupIsHierarchical": false,
                "lookupMaxHierarchyLevel": 0,
                "dictionaryDataType": "",
                "lookupEntitySearchAttributes": [],
                "useAttributeNameForDisplay": false,
                "linkDataType": "",
                "valueId": null,
                "defaultUnitId": null,
                "order": 3,
                "searchMorphologically": false,
                "searchCaseInsensitive": false
            },
            {
                "name": "is_active",
                "displayName": "Активный",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "rights": {
                    "createdAt": null,
                    "updatedAt": null,
                    "createdBy": null,
                    "updatedBy": null,
                    "securedResource": {
                        "id": "DATA:reg_test.is_active",
                        "name": null,
                        "displayName": null,
                        "type": null,
                        "category": null,
                        "parent": null,
                        "children": null
                    },
                    "rights": [
                        "READ",
                        "DELETE",
                        "CREATE",
                        "UPDATE"
                    ]
                },
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ],
                "nullable": true,
                "unique": false,
                "searchable": true,
                "simpleDataType": "Boolean",
                "displayable": true,
                "mainDisplayable": false,
                "generationStrategy": null,
                "enumDataType": "",
                "lookupEntityType": "",
                "lookupEntityCodeAttributeType": null,
                "lookupEntityDisplayAttributes": [],
                "lookupIsHierarchical": false,
                "lookupMaxHierarchyLevel": 0,
                "dictionaryDataType": "",
                "lookupEntitySearchAttributes": [],
                "useAttributeNameForDisplay": false,
                "linkDataType": "",
                "valueId": null,
                "defaultUnitId": null,
                "order": 4,
                "searchMorphologically": false,
                "searchCaseInsensitive": false
            },
            {
                "name": "date",
                "displayName": "Дата",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "rights": {
                    "createdAt": null,
                    "updatedAt": null,
                    "createdBy": null,
                    "updatedBy": null,
                    "securedResource": {
                        "id": "DATA:reg_test.date",
                        "name": null,
                        "displayName": null,
                        "type": null,
                        "category": null,
                        "parent": null,
                        "children": null
                    },
                    "rights": [
                        "READ",
                        "DELETE",
                        "CREATE",
                        "UPDATE"
                    ]
                },
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ],
                "nullable": true,
                "unique": false,
                "searchable": false,
                "simpleDataType": "Date",
                "displayable": true,
                "mainDisplayable": false,
                "generationStrategy": null,
                "enumDataType": "",
                "lookupEntityType": "",
                "lookupEntityCodeAttributeType": null,
                "lookupEntityDisplayAttributes": [],
                "lookupIsHierarchical": false,
                "lookupMaxHierarchyLevel": 0,
                "dictionaryDataType": "",
                "lookupEntitySearchAttributes": [],
                "useAttributeNameForDisplay": false,
                "linkDataType": "",
                "valueId": null,
                "defaultUnitId": null,
                "order": 5,
                "searchMorphologically": false,
                "searchCaseInsensitive": false
            },
            {
                "name": "rate",
                "displayName": "Цена",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "rights": {
                    "createdAt": null,
                    "updatedAt": null,
                    "createdBy": null,
                    "updatedBy": null,
                    "securedResource": {
                        "id": "DATA:reg_test.rate",
                        "name": null,
                        "displayName": null,
                        "type": null,
                        "category": null,
                        "parent": null,
                        "children": null
                    },
                    "rights": [
                        "READ",
                        "DELETE",
                        "CREATE",
                        "UPDATE"
                    ]
                },
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ],
                "nullable": true,
                "unique": false,
                "searchable": true,
                "simpleDataType": "Number",
                "displayable": true,
                "mainDisplayable": false,
                "generationStrategy": null,
                "enumDataType": "",
                "lookupEntityType": "",
                "lookupEntityCodeAttributeType": null,
                "lookupEntityDisplayAttributes": [],
                "lookupIsHierarchical": false,
                "lookupMaxHierarchyLevel": 0,
                "dictionaryDataType": "",
                "lookupEntitySearchAttributes": [],
                "useAttributeNameForDisplay": false,
                "linkDataType": "",
                "valueId": null,
                "defaultUnitId": null,
                "order": 2,
                "searchMorphologically": false,
                "searchCaseInsensitive": false
            }
        ],
        "arrayAttributes": [],
        "entityDependency": null,
        "customProperties": [],
        "name": "reg_test",
        "displayName": "Тестовый реестр",
        "description": "Тестовый реестр для документации",
        "order": 0,
        "version": "1",
        "complexAttributes": [],
        "hasData": false,
        "modelName": null,
        "relations": [],
        "mergeSettings": null,
        "attributeGroups": [],
        "relationGroups": [],
        "flyweight": false,
        "validityPeriod": null,
        "externalIdGenerationStrategy": null,
        "hierarchical": false,
        "maxHierarchyLevel": 0,
        "dashboardVisible": false
    }
}

Получение списка реестров/справочников

GET:

/api/v2/data/model/entity-groups?draftId=2

draftId - черновик, в котором ищем, для поиска опубликованных версий реестров/справочников ставим draftId=0

Ответ:

{
    "name": "ROOT",
    "displayName": "Корневая группа",
    "parentName": null,
    "type": "group",
    "children": [
        {
            "name": "reg_test",
            "displayName": "Тестовый реестр",
            "parentName": "ROOT",
            "type": "register",
            "leaf": true
        }
    ],
    "leaf": false
}

Создание справочника

POST:

/api/v2/data/model/lookup-entities/upsert

Тело запроса:

{
    "draftId": 2,
    "lookupEntity": {
        "hierarchical": false,
        "name": "lookup_test",
        "displayName": "Тестовый справочник",
        "description": "Тестовый справочник для документации",
        "hasData": false,
        "isPublished": false,
        "groupName": "",
        "version": "",
        "dashboardVisible": false,
        "validityPeriod": null,
        "codeAttribute": {
            "displayable": true,
            "mainDisplayable": false,
            "nullable": false,
            "searchable": true,
            "searchCaseInsensitive": false,
            "searchMorphologically": false,
            "simpleDataType": "String",
            "unique": true,
            "name": "article_number",
            "displayName": "Артикул",
            "description": "",
            "readOnly": false,
            "hidden": false,
            "order": 0,
            "generationStrategy": null,
            "customProperties": [
                {
                    "name": "DATACARD_ATTRIBUTE_TYPE",
                    "value": "default"
                },
                {
                    "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                    "value": "default"
                }
            ]
        },
        "externalIdGenerationStrategy": null,
        "mergeSettings": null,
        "simpleAttributes": [
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": true,
                "nullable": false,
                "searchable": true,
                "searchCaseInsensitive": true,
                "searchMorphologically": true,
                "simpleDataType": "String",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "name",
                "displayName": "Наименование",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 1,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": true,
                "searchable": false,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Date",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "date",
                "displayName": "Дата",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 2,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": false,
                "searchable": true,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Boolean",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "is_active",
                "displayName": "Активный",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 3,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": false,
                "searchable": true,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Integer",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "quantity",
                "displayName": "Количество",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 4,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            },
            {
                "dictionaryDataType": "",
                "defaultUnitId": null,
                "displayable": true,
                "enumDataType": "",
                "linkDataType": "",
                "lookupEntityCodeAttributeType": "",
                "lookupEntityDisplayAttributes": [],
                "lookupEntitySearchAttributes": [],
                "lookupEntityType": "",
                "lookupIsHierarchical": false,
                "mainDisplayable": false,
                "nullable": true,
                "searchable": true,
                "searchCaseInsensitive": false,
                "searchMorphologically": false,
                "simpleDataType": "Number",
                "valueId": null,
                "unique": false,
                "useAttributeNameForDisplay": false,
                "name": "rate",
                "displayName": "Цена",
                "description": "",
                "readOnly": false,
                "hidden": false,
                "order": 5,
                "customProperties": [
                    {
                        "name": "DATACARD_ATTRIBUTE_TYPE",
                        "value": "default"
                    },
                    {
                        "name": "DATACARD_ATTRIBUTE_PREVIEW_TYPE",
                        "value": "default"
                    }
                ]
            }
        ],
        "aliasCodeAttributes": [],
        "arrayAttributes": [],
        "attributeGroups": [],
        "customProperties": []
    }
}

Ответ

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draftId": 2
}

Получение черновика модели данных

POST:

/api/v2/draft/drafts

Тело запроса:

{
    "query": {
        "type": "data-model", //Черновики модели данных
        "draftId": 2 //Искомый черновик
    },
    "offset": 0,
    "limit": 100
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "drafts": [
        {
            "type": "data-model",
            "subjectId": "default",
            "description": "Черновик от 16.08.2023 14:31:52",
            "owner": "admin",
            "ownerFullName": "Admin  Root",
            "createdBy": "admin",
            "updatedBy": "admin",
            "draftId": 2,
            "parentDraftId": null,
            "editionsCount": 3,
            "createDate": "2023-08-16T11:31:52.278647Z",
            "updateDate": "2023-08-16T11:51:08.953977Z",
            "tags": [],
            "state": "RUNNING"
        }
    ],
    "totalCount": 1
}

Публикация черновика

POST:

/api/v2/draft/publish

Тело запроса:

{
    "draftId": 2, //ID публикуемого черновика
    "force": false, //Принудительная публикация
    "delete": true //Удаление черновика после публикации
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "data-model",
        "subjectId": "default",
        "description": "Черновик от 16.08.2023 14:31:52",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": "admin",
        "draftId": 2,
        "parentDraftId": null,
        "editionsCount": 3,
        "createDate": "2023-08-16T11:31:52.278647Z",
        "updateDate": "2023-08-16T11:51:08.953977Z",
        "tags": [],
        "state": "PUBLISHED"
    }
}

Записи реестра

POST:

/api/v2/draft/upsert

Тело запроса:

{
  "type": "record", //Провайдер для записей - тип черновика
  "subjectId": "", //Еще нет объекта, поэтому нет ID записи
  "description": "example draft to add record to entity", //Опциональное описание черновика
    "parameters": { //Параметры для привязки черновика к нужному реестру
      "namespace" : "register", //Пространство имен реестров
      "entity-name" : "reg_test" //Название реестра
    }
}

Ответ:

{
  "details": {
    "info": [],
    "warning": [],
    "error": []
  },
  "draft": {
    "type": "record",
    "subjectId": "",
    "description": "example draft to add record to entity",
    "owner": "admin",
    "ownerFullName": "Admin  Root",
    "createdBy": "admin",
    "updatedBy": null,
    "draftId": 3, //ID черновика, который нужно запомнить для работы с ним
    "parentDraftId": null,
    "editionsCount": 0,
    "createDate": "2023-07-17T11:05:20.678+03:00",
    "updateDate": null,
    "tags": [
      "namespace:register",
      "entity-name:reg_test"
    ],
    "state": "CREATED" //Создан
  }
}

Сохранение новой записи реестра в черновик

POST:

/api/v2/data/atomic

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "draftId": 3, //ID черновика, который мы создали для этой записи, если значение 0, то запись будет сразу опубликована
            "dataRecord": { //Данные записи
                "etalonId": "", //Запись новая, поэтому у нее еще нет ID эталонной записи
                "externalId": {
                    "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc", //Уникальный внешний ID, по нему можно будет обновлять запись. Создается пользователем API. Строковок значение, например, "reg_test_123"
                    "sourceSystem": "universe" //Система источник, от имени которой вносится запись, вместе с внешним ID образует ключ. Обязательное поле
                },
                "displayName": "",
                "entityName": "reg_test", //Системное имя реестра
                "version": "",
                "modified": false,
                "validFrom": "1900-01-01T00:00:00.000Z", //Начало периода актуальности. Опционально, можно оставить пустым для использования периода по умолчанию
                "validTo": "2500-12-31T23:59:59.999Z", //Конец периода актуальности. Опционально, можно оставить пустым для использования периода по умолчанию
                "createDate": "",
                "updateDate": "",
                "simpleAttributes": [ //Список простых атрибутов
                    { //Строковый атрибут "name"
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "Какое-то наименование", //Значение атрибута
                        "type": "String", //Тип атрибута, здесь "Строковый"
                        "name": "name", //Системное имя атрибута, здесь "name"
                        "hidden": false //Для скрытых атрибутов
                    },
                    { //Численный атрибут "rate"
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 1234.56,
                        "type": "Number", //Тип атрибута, здесь "Численный"
                        "name": "rate",
                        "hidden": false
                    },
                    { //Целочисленный атрибут "quantity"
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 987,
                        "type": "Integer", //Тип атрибута, здесь "Целочисленный"
                        "name": "quantity",
                        "hidden": false
                    },
                    { //Логический атрибут "is_active"
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": true,
                        "type": "Boolean", //Тип атрибута, здесь "Логический"
                        "name": "is_active",
                        "hidden": false
                    },
                    { //Атрибут "date" типа Дата
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "2023-08-16",
                        "type": "Date", //Тип атрибута, здесь "Дата"
                        "name": "date",
                        "hidden": false
                    }
                ],
                "complexAttributes": [],
                "arrayAttributes": [],
                "codeAttributes": []
            }
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": null,
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 0,
                        "status": "ACTIVE",
                        "createDate": null,
                        "updateDate": null,
                        "createdBy": null,
                        "updatedBy": null
                    }
                ],
                "entityName": "reg_test",
                "lsn": {
                    "lsn": null,
                    "shard": 9
                },
                "node": 0,
                "createDate": "2023-08-16T12:13:25.54Z",
                "updateDate": "2023-08-16T12:13:25.54Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": false,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-16"
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 987
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": true
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 1234.56
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [],
                "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "reg_test",
                "namespace": "register",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": null,
                "createDate": "2023-08-16T12:13:25.540Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T12:13:25.540Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": false
            },
            "relationsResult": {
                "details": {
                    "info": [],
                    "warning": [],
                    "error": []
                },
                "etalonId": null,
                "etalonRelations": null
            }
        },
        "org.unidata.mdm.rest.v2.dq.data": null
    }
}

Получение черновика записи реестра

POST:

/api/v2/draft/drafts

Тело запроса:

{
    "query": {
        "type": "record",
        "draftId": 3
    },
    "offset": 0,
    "limit": 100
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "drafts": [
        {
            "type": "record",
            "subjectId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
            "description": "Черновик от 16.08.2023 15:11:21",
            "owner": "admin",
            "ownerFullName": "Admin  Root",
            "createdBy": "admin",
            "updatedBy": "admin",
            "draftId": 3,
            "parentDraftId": null,
            "editionsCount": 1,
            "createDate": "2023-08-16T12:11:21.849982Z",
            "updateDate": "2023-08-16T12:13:25.540263Z",
            "tags": [
                "entity-name:reg_test",
                "namespace:register",
                "record-external-id:0379a510-3c2e-11ee-bb05-b3c44289bffc\u001freg_test\u001funiverse",
                "operation-code:UPSERT_DATA"
            ],
            "state": "RUNNING"
        }
    ],
    "totalCount": 1
}

Публикация черновика записи реестра

POST:

/api/v2/draft/publish

Тело запроса:

{
    "draftId": 3, //ID публикуемого черновика
    "force": false, //Принудительная публикация
    "delete": true //Удаление черновика после публикации
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "record",
        "subjectId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
        "description": "Черновик от 16.08.2023 15:11:21",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": "admin",
        "draftId": 3,
        "parentDraftId": null,
        "editionsCount": 1,
        "createDate": "2023-08-16T12:11:21.849982Z",
        "updateDate": "2023-08-16T12:13:25.540263Z",
        "tags": [
            "entity-name:reg_test",
            "namespace:register",
            "record-external-id:0379a510-3c2e-11ee-bb05-b3c44289bffc\u001freg_test\u001funiverse",
            "operation-code:UPSERT_DATA"
        ],
        "state": "PUBLISHED" //Опубликован
    }
}

Получение опубликованной записи реестра по etalonId

POST:

http://localhost:8082/universe-backend/api/v2/data/atomic/get

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
            "entityName": "reg_test",
            "draftId": 0, //Опубликованная версия
            "timelineDate": "1900-01-01T00:00:00.000Z"
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": {
            "results": []
        },
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 1,
                        "status": "ACTIVE",
                        "createDate": "2023-08-16T12:13:25.542Z",
                        "updateDate": null,
                        "createdBy": "admin",
                        "updatedBy": null
                    }
                ],
                "entityName": "reg_test",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "node": 0,
                "createDate": "2023-08-16T12:13:25.542Z",
                "updateDate": "2023-08-16T12:13:25.543Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": true,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-16"
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 987
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": true
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 1234.56
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [],
                "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "reg_test",
                "namespace": "register",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "createDate": "2023-08-16T12:13:25.542Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T12:13:25.543Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": true
            },
            "origins": null,
            "vistory": null
        },
        "org.unidata.mdm.rest.v2.dq.data": {
            "results": []
        }
    }
}

Создание черновика для изменения записи реестра

POST:

/api/v2/draft/upsert

Тело запроса:

{
    "type": "record",
    "subjectId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76", //etalonId записи, которую хотим изменить
    "description": "Черновик от 16.08.2023 15:27:02",
    "tags": [
        "entity-name:reg_test",
        "namespace:register"
    ],
    "parameters": {
        "entity-name": "reg_test"
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "record",
        "subjectId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
        "description": "Черновик от 16.08.2023 15:27:02",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": null,
        "draftId": 4,
        "parentDraftId": null,
        "editionsCount": 0,
        "createDate": "2023-08-16T12:27:02.764Z",
        "updateDate": null,
        "tags": [
            "entity-name:reg_test",
            "namespace:register"
        ],
        "state": "CREATED"
    }
}

Получение версии записи реестра из черновика

Для получения опубликованной версии ставим draftId=0.

Запись - это объект org.unidata.mdm.rest.v2.data в ответе.

POST:

/api/v2/data/atomic/get

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
            "entityName": "reg_test",
            "draftId": 4,
            "timelineDate": "1900-01-01T00:00:00.000Z"
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": {
            "results": []
        },
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 1,
                        "status": "ACTIVE",
                        "createDate": "2023-08-16T12:13:25.542Z",
                        "updateDate": null,
                        "createdBy": "admin",
                        "updatedBy": null
                    }
                ],
                "entityName": "reg_test",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "node": 0,
                "createDate": "2023-08-16T12:13:25.542Z",
                "updateDate": "2023-08-16T12:13:25.543Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": true,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-16"
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 987
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": true
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 1234.56
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [],
                "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "reg_test",
                "namespace": "register",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "createDate": "2023-08-16T12:13:25.542Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T12:13:25.543Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": true
            },
            "origins": null,
            "vistory": null
        },
        "org.unidata.mdm.rest.v2.dq.data": {
            "results": []
        }
    }
}

Сохранение измененной записи реестра в черновик

Если поставить draftId=0, то запись будет сразу опубликована без черновика.

Чтобы не менять значение атрибута и не очищать его, требуется вставить их значения из существующей версии.

Изменение записи - это полная перезапись записи по etalonId или комбинации externalId и sourceSystem из сохранения новой записи в черновик.

Для комментариев к полям также см.:ref:Сохранение новой записи в черновик <#сохранение-новой-записи-в-черновик>.

POST:

/api/v2/data/atomic

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "draftId": 4,
            "dataRecord": {
                "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                "displayName": "",
                "entityName": "reg_test",
                "namespace": "register",
                "version": "0",
                "modified": false,
                "validFrom": "1900-01-01T00:00:00.000Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "createDate": "2023-08-16T12:13:25.542Z",
                "updateDate": "2023-08-16T12:13:25.543Z",
                "status": "ACTIVE",
                "simpleAttributes": [
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "Какое-то измененное наименование",
                        "type": "String",
                        "name": "name",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "2023-08-17",
                        "type": "Date",
                        "name": "date",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 123,
                        "type": "Integer",
                        "name": "quantity",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": false,
                        "type": "Boolean",
                        "name": "is_active",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 9876.43,
                        "type": "Number",
                        "name": "rate",
                        "hidden": false
                    }
                ],
                "complexAttributes": [],
                "arrayAttributes": [],
                "codeAttributes": []
            }
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": null,
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 1,
                        "status": "ACTIVE",
                        "createDate": "2023-08-16T12:13:25.542Z",
                        "updateDate": null,
                        "createdBy": "admin",
                        "updatedBy": null
                    }
                ],
                "entityName": "reg_test",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "node": 0,
                "createDate": "2023-08-16T12:13:25.542Z",
                "updateDate": "2023-08-16T12:31:10.835Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": true,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то измененное наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-17"
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 123
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": false
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 9876.43
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [],
                "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "reg_test",
                "namespace": "register",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "createDate": "2023-08-16T12:13:25.542Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T12:31:10.835Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": true
            },
            "relationsResult": {
                "details": {
                    "info": [],
                    "warning": [],
                    "error": []
                },
                "etalonId": null,
                "etalonRelations": null
            }
        },
        "org.unidata.mdm.rest.v2.dq.data": null
    }
}

Публикация черновика с измененной записью реестра

POST:

/api/v2/draft/publish

Тело запроса:

{
    "draftId": 4,
    "force": false,
    "delete": true
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "record",
        "subjectId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
        "description": "Черновик от 16.08.2023 15:27:02",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": "admin",
        "draftId": 4,
        "parentDraftId": null,
        "editionsCount": 1,
        "createDate": "2023-08-16T12:27:02.765353Z",
        "updateDate": "2023-08-16T12:31:10.835374Z",
        "tags": [
            "entity-name:reg_test",
            "namespace:register",
            "record-external-id:0379a510-3c2e-11ee-bb05-b3c44289bffc\u001freg_test\u001funiverse",
            "operation-code:UPSERT_DATA"
        ],
        "state": "PUBLISHED"
    }
}

Удаление записи реестра

DELETE:

/api/v2/data/records/delete/reg_test/4d25f80f-3c2e-11ee-bc14-393b8ca6fb76?wipe=false&inactivateEtalon=true

Запрос выше для логического удаления записи с деактивацией эталона - дефолтное поведение.

  • reg_test - системное имя реестра, из которого удаляем.

  • 4d25f80f-3c2e-11ee-bc14-393b8ca6fb76 - etalonId удаляемой записи.

  • wipe - false - логическое удаление, можно восстановить. true - физическое удаление.

  • inactivateEtalon - деактивация эталона записи. Возвращает версию записи перед удалением.

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "recordKeys": {
        "etalonKey": {
            "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
            "status": "ACTIVE"
        },
        "originKeys": [
            {
                "externalId": {
                    "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
                    "sourceSystem": "universe"
                },
                "enrichment": false,
                "revision": 2,
                "status": "ACTIVE",
                "createDate": "2023-08-16T12:13:25.542Z",
                "updateDate": null,
                "createdBy": "admin",
                "updatedBy": null
            }
        ],
        "entityName": "reg_test",
        "lsn": {
            "lsn": 1,
            "shard": 9
        },
        "node": 0,
        "createDate": "2023-08-16T12:13:25.542Z",
        "updateDate": "2023-08-16T12:31:10.838Z",
        "createdBy": "admin",
        "updatedBy": "admin",
        "active": true,
        "published": true,
        "parent": null,
        "children": []
    },
    "key": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76"
}

Получение логически удаленной записи

POST:

/api/v2/data/atomic/get

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
            "entityName": "reg_test",
            "draftId": 0,
            "timelineDate": "1900-01-01T00:00:00.000Z"
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": {
            "results": []
        },
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                    "status": "INACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 2,
                        "status": "ACTIVE",
                        "createDate": "2023-08-16T12:13:25.542Z",
                        "updateDate": null,
                        "createdBy": "admin",
                        "updatedBy": null
                    }
                ],
                "entityName": "reg_test",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "node": 0,
                "createDate": "2023-08-16T12:13:25.542Z",
                "updateDate": "2023-08-16T12:35:47.033Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": false,
                "published": true,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то измененное наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-17"
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 123
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": false
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 9876.43
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [],
                "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "reg_test",
                "namespace": "register",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "INACTIVE",
                "lsn": {
                    "lsn": 1,
                    "shard": 9
                },
                "createDate": "2023-08-16T12:13:25.542Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T12:35:47.033Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": true
            },
            "origins": null,
            "vistory": null
        },
        "org.unidata.mdm.rest.v2.dq.data": {
            "results": []
        }
    }
}

Вставка записей в справочник

Создание черновика для новой записи справочника

POST:

/api/v2/draft/upsert

Тело запроса:

{
  "type": "record", //Провайдер для записей
  "subjectId": "", //Еще нет объекта
  "description": "example draft to add record to reference set",
    "parameters": {
      "namespace" : "lookup", //Пространство имен реестров
      "entity-name" : "lookup_test" //Название реестра
    }
}

Ответ:

{
  "details": {
    "info": [],
    "warning": [],
    "error": []
  },
  "draft": {
    "type": "record",
    "subjectId": "",
    "description": "example draft to add record to reference set",
    "owner": "admin",
    "ownerFullName": "Admin  Root",
    "createdBy": "admin",
    "updatedBy": null,
    "draftId": 5,
    "parentDraftId": null,
    "editionsCount": 0,
    "createDate": "2023-07-17T11:05:20.678+03:00",
    "updateDate": null,
    "tags": [
      "namespace:lookup",
      "entity-name:lookup_test"
    ],
    "state": "CREATED"
  }
}

Создание записи справочника в черновике

Если draftId = 0, то запись сразу публикуется.

См. Сохранение новой записи реестра в черновик для комментариев к полям.

Кодовый атрибут уникален и не изменяется после сохранения.

POST:

/api/v2/data/atomic

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "draftId": 5,
            "dataRecord": {
                "etalonId": "",
                "externalId": {
                    "externalId": "0e460f30-3c40-11ee-9ad3-6df0a9cf14b3",
                    "sourceSystem": "universe"
                },
                "displayName": "",
                "entityName": "lookup_test",
                "version": "",
                "modified": false,
                "validFrom": "1900-01-01T00:00:00.000Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "createDate": "",
                "updateDate": "",
                "simpleAttributes": [
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "Какое-то наименование",
                        "type": "String",
                        "name": "name",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "2023-08-16",
                        "type": "Date",
                        "name": "date",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": true,
                        "type": "Boolean",
                        "name": "is_active",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 123,
                        "type": "Integer",
                        "name": "quantity",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 456.78,
                        "type": "Number",
                        "name": "rate",
                        "hidden": false
                    }
                ],
                "complexAttributes": [],
                "arrayAttributes": [],
                "codeAttributes": [ //Кодовые атрибуты
                    { //Кодовый атрибут "article_number" типа Строка
                        "value": "art123", //Значение атрибута
                        "type": "String", //Тип "Строка"
                        "name": "article_number", //Системное имя атрибута
                        "hidden": false
                    }
                ]
            }
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": null,
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0e460f30-3c40-11ee-9ad3-6df0a9cf14b3",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 0,
                        "status": "ACTIVE",
                        "createDate": null,
                        "updateDate": null,
                        "createdBy": null,
                        "updatedBy": null
                    }
                ],
                "entityName": "lookup_test",
                "lsn": {
                    "lsn": null,
                    "shard": 0
                },
                "node": 0,
                "createDate": "2023-08-16T14:21:32.459Z",
                "updateDate": "2023-08-16T14:21:32.459Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": false,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-16"
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": true
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 123
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 456.78
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [
                    {
                        "name": "article_number",
                        "type": "String",
                        "value": "art123",
                        "supplementary": []
                    }
                ],
                "etalonId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "lookup_test",
                "namespace": "lookup",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": null,
                "createDate": "2023-08-16T14:21:32.459Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T14:21:32.459Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": false
            },
            "relationsResult": {
                "details": {
                    "info": [],
                    "warning": [],
                    "error": []
                },
                "etalonId": null,
                "etalonRelations": null
            }
        },
        "org.unidata.mdm.rest.v2.dq.data": null
    }
}

Публикация черновика новой записи справочника

POST:

/api/v2/draft/publish

Тело запроса:

{
    "draftId": 5,
    "force": false,
    "delete": true
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "record",
        "subjectId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
        "description": "Черновик от 16.08.2023 17:20:30",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": "admin",
        "draftId": 5,
        "parentDraftId": null,
        "editionsCount": 1,
        "createDate": "2023-08-16T14:20:30.862543Z",
        "updateDate": "2023-08-16T14:21:32.45892Z",
        "tags": [
            "entity-name:lookup_test",
            "record-external-id:0e460f30-3c40-11ee-9ad3-6df0a9cf14b3\u001flookup_test\u001funiverse",
            "operation-code:UPSERT_DATA",
            "namespace:lookup"
        ],
        "state": "PUBLISHED"
    }
}

Изменение записи справочника

Получение записи справочника по etalonId

POST:

/api/v2/data/atomic/get

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "etalonId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
            "entityName": "lookup_test",
            "draftId": 0, //0 - опубликованная запись или ID черновика записи
            "timelineDate": "1900-01-01T00:00:00.000Z"
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": {
            "results": []
        },
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0e460f30-3c40-11ee-9ad3-6df0a9cf14b3",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 1,
                        "status": "ACTIVE",
                        "createDate": "2023-08-16T14:21:32.461Z",
                        "updateDate": null,
                        "createdBy": "admin",
                        "updatedBy": null
                    }
                ],
                "entityName": "lookup_test",
                "lsn": {
                    "lsn": 1,
                    "shard": 0
                },
                "node": 0,
                "createDate": "2023-08-16T14:21:32.461Z",
                "updateDate": "2023-08-16T14:21:32.462Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": true,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-16"
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": true
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 123
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 456.78
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [
                    {
                        "name": "article_number",
                        "type": "String",
                        "value": "art123",
                        "supplementary": []
                    }
                ],
                "etalonId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "lookup_test",
                "namespace": "lookup",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": {
                    "lsn": 1,
                    "shard": 0
                },
                "createDate": "2023-08-16T14:21:32.461Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T14:21:32.462Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": true
            },
            "origins": null,
            "vistory": null
        },
        "org.unidata.mdm.rest.v2.dq.data": {
            "results": []
        }
    }
}

Создание черновика записи справочника для изменения

POST:

/api/v2/draft/upsert

Тело запроса:

{
    "type": "record",
    "subjectId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
    "description": "Черновик от 16.08.2023 17:29:00",
    "tags": [
        "entity-name:lookup_test",
        "namespace:lookup"
    ],
    "parameters": {
        "entity-name": "lookup_test"
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "record",
        "subjectId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
        "description": "Черновик от 16.08.2023 17:29:00",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": null,
        "draftId": 6,
        "parentDraftId": null,
        "editionsCount": 0,
        "createDate": "2023-08-16T14:29:00.012Z",
        "updateDate": null,
        "tags": [
            "entity-name:lookup_test",
            "namespace:lookup"
        ],
        "state": "CREATED"
    }
}

Сохранение измененной записи справочника в черновике

Кодовый атрибут изменить нельзя.

Если поставить draftId=0, то запись будет сразу опубликована без черновика.

Чтобы не менять значение атрибута и не очищать его, требуется вставить их значения из существующей версии.

Изменение записи - это полная перезапись записи по etalonId или комбинации externalId и sourceSystem из запроса сохранения новой записи в черновик.

Для комментариев к полям см. Сохранение новой записи в черновик.

POST:

/api/v2/data/atomic

Тело запроса:

{
    "payload": {
        "org.unidata.mdm.rest.v2.data": {
            "draftId": 6,
            "dataRecord": {
                "etalonId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                "displayName": "",
                "entityName": "lookup_test",
                "namespace": "lookup",
                "version": "0",
                "modified": false,
                "validFrom": "1900-01-01T00:00:00.000Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "createDate": "2023-08-16T14:21:32.461Z",
                "updateDate": "2023-08-16T14:21:32.462Z",
                "status": "ACTIVE",
                "simpleAttributes": [
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "Какое-то новое наименование",
                        "type": "String",
                        "name": "name",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": "2023-08-17",
                        "type": "Date",
                        "name": "date",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": false,
                        "type": "Boolean",
                        "name": "is_active",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 987,
                        "type": "Integer",
                        "name": "quantity",
                        "hidden": false
                    },
                    {
                        "targetEtalonId": null,
                        "valueId": "",
                        "unitId": "",
                        "displayValue": null,
                        "value": 123.45,
                        "type": "Number",
                        "name": "rate",
                        "hidden": false
                    }
                ],
                "complexAttributes": [],
                "arrayAttributes": [],
                "codeAttributes": [
                    {
                        "value": "art123",
                        "supplementary": [],
                        "type": "String",
                        "name": "article_number",
                        "hidden": false
                    }
                ]
            }
        }
    }
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "payload": {
        "org.unidata.mdm.rest.v2.matching.data": null,
        "org.unidata.mdm.rest.v2.data": {
            "details": {
                "info": [],
                "warning": [],
                "error": []
            },
            "recordKeys": {
                "etalonKey": {
                    "id": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                    "status": "ACTIVE"
                },
                "originKeys": [
                    {
                        "externalId": {
                            "externalId": "0e460f30-3c40-11ee-9ad3-6df0a9cf14b3",
                            "sourceSystem": "universe"
                        },
                        "enrichment": false,
                        "revision": 1,
                        "status": "ACTIVE",
                        "createDate": "2023-08-16T14:21:32.461Z",
                        "updateDate": null,
                        "createdBy": "admin",
                        "updatedBy": null
                    }
                ],
                "entityName": "lookup_test",
                "lsn": {
                    "lsn": 1,
                    "shard": 0
                },
                "node": 0,
                "createDate": "2023-08-16T14:21:32.461Z",
                "updateDate": "2023-08-16T14:31:27.344Z",
                "createdBy": "admin",
                "updatedBy": "admin",
                "active": true,
                "published": true,
                "parent": null,
                "children": []
            },
            "etalon": {
                "simpleAttributes": [
                    {
                        "name": "name",
                        "type": "String",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "Какое-то новое наименование"
                    },
                    {
                        "name": "date",
                        "type": "Date",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": "2023-08-17"
                    },
                    {
                        "name": "is_active",
                        "type": "Boolean",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": false
                    },
                    {
                        "name": "quantity",
                        "type": "Integer",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 987
                    },
                    {
                        "name": "rate",
                        "type": "Number",
                        "displayValue": null,
                        "targetEtalonId": null,
                        "valueId": null,
                        "unitId": null,
                        "value": 123.45
                    }
                ],
                "arrayAttributes": [],
                "complexAttributes": [],
                "codeAttributes": [
                    {
                        "name": "article_number",
                        "type": "String",
                        "value": "art123",
                        "supplementary": []
                    }
                ],
                "etalonId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
                "modified": false,
                "version": 0,
                "entityName": "lookup_test",
                "namespace": "lookup",
                "validFrom": "1900-01-01T00:00:00Z",
                "validTo": "2500-12-31T23:59:59.999Z",
                "status": "ACTIVE",
                "lsn": {
                    "lsn": 1,
                    "shard": 0
                },
                "createDate": "2023-08-16T14:21:32.461Z",
                "createdBy": "admin",
                "updateDate": "2023-08-16T14:31:27.344Z",
                "updatedBy": "admin",
                "rights": null,
                "operationType": "DIRECT",
                "diffToDraft": null,
                "published": true
            },
            "relationsResult": {
                "details": {
                    "info": [],
                    "warning": [],
                    "error": []
                },
                "etalonId": null,
                "etalonRelations": null
            }
        },
        "org.unidata.mdm.rest.v2.dq.data": null
    }
}

Публикация черновика измененной записи справочника

POST:

/api/v2/draft/publish

Тело запроса:

{
    "draftId": 6,
    "force": false,
    "delete": true
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "draft": {
        "type": "record",
        "subjectId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
        "description": "Черновик от 16.08.2023 17:29:00",
        "owner": "admin",
        "ownerFullName": "Admin  Root",
        "createdBy": "admin",
        "updatedBy": "admin",
        "draftId": 6,
        "parentDraftId": null,
        "editionsCount": 1,
        "createDate": "2023-08-16T14:29:00.01399Z",
        "updateDate": "2023-08-16T14:31:27.344691Z",
        "tags": [
            "entity-name:lookup_test",
            "record-external-id:0e460f30-3c40-11ee-9ad3-6df0a9cf14b3\u001flookup_test\u001funiverse",
            "operation-code:UPSERT_DATA",
            "namespace:lookup"
        ],
        "state": "PUBLISHED"
    }
}

Удаление записи справочника

DELETE:

/api/v2/data/records/delete/lookup_test/32e70bd8-3c40-11ee-bc14-393b8ca6fb76?wipe=false&inactivateEtalon=true

Запрос выше для логического удаления записи с деактивацией эталона - дефолтное поведение.

  • lookup_test - системное имя реестра, из которого удаляем.

  • 32e70bd8-3c40-11ee-bc14-393b8ca6fb76 - etalonId удаляемой записи.

  • wipe - false - логическое удаление, можно восстановить. true - физическое удаление.

  • inactivateEtalon - деактивация эталона записи. Возвращает версию записи перед удалением.

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "recordKeys": {
        "etalonKey": {
            "id": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
            "status": "ACTIVE"
        },
        "originKeys": [
            {
                "externalId": {
                    "externalId": "0e460f30-3c40-11ee-9ad3-6df0a9cf14b3",
                    "sourceSystem": "universe"
                },
                "enrichment": false,
                "revision": 2,
                "status": "ACTIVE",
                "createDate": "2023-08-16T14:21:32.461Z",
                "updateDate": null,
                "createdBy": "admin",
                "updatedBy": null
            }
        ],
        "entityName": "lookup_test",
        "lsn": {
            "lsn": 1,
            "shard": 0
        },
        "node": 0,
        "createDate": "2023-08-16T14:21:32.461Z",
        "updateDate": "2023-08-16T14:31:27.347Z",
        "createdBy": "admin",
        "updatedBy": "admin",
        "active": true,
        "published": true,
        "parent": null,
        "children": []
    },
    "key": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76"
}

В теле запроса указывается draftId = 0.

Удаление черновика

POST:

/api/v2/draft/remove

Тело запроса:

{
    "type": "record",
    "entityId": "",
    "draftId": 8
}

Ответ:

{
    "details": {
        "info": [],
        "warning": [],
        "error": []
    },
    "success": true
}

Получение периодов записей

GET:

/api/v2/data/records/lookup_test/timeline/32e70bd8-3c40-11ee-bc14-393b8ca6fb76?draftId=6
  • lookup_test - системное имя реестра/справочника.

  • 32e70bd8-3c40-11ee-bc14-393b8ca6fb76 - etalonId записи.

  • draftId - ID черновика записи или 0 для получения опубликованной версии.

Ответ:

{
    "timeline": {
        "etalonId": "32e70bd8-3c40-11ee-bc14-393b8ca6fb76",
        "timeline": [
            {
                "dateFrom": "1900-01-01T00:00:00Z",
                "dateTo": "2500-12-31T23:59:59.999Z",
                "active": true,
                "contributors": [
                    {
                        "originId": "7c1d91cb-3c40-11ee-bc14-393b8ca6fb76",
                        "version": 0,
                        "sourceSystem": "universe",
                        "status": "ACTIVE",
                        "owner": "lookup_test"
                    }
                ]
            }
        ]
    }
}

Пакетная вставка записей

POST:

v2/data/records/upsert/bulk

Тело запроса:

{
 "upserts": [ // Список вставляемых записей
   {
     "draftId": 0, //ID черновика, который мы создали для этой записи, если значение 0, то запись будет сразу опубликована
     "dataRecord": { //Данные записи
       "simpleAttributes": [ //Список простых атрибутов
         { //Строковый атрибут "name"
           "targetEtalonId": null,
           "valueId": "",
           "unitId": "",
           "displayValue": null,
           "value": "Какое-то наименование", //Значение атрибута
           "type": "String", //Тип атрибута, здесь "Строковый"
           "name": "name",  //Системное имя атрибута, здесь "name"
           "hidden": false //Для скрытых атрибутов
         },
         { //Численный атрибут "rate"
           "targetEtalonId": null,
           "valueId": "",
           "unitId": "",
           "displayValue": null,
           "value": 1234.56,
           "type": "Number", //Тип атрибута, здесь "Численный"
           "name": "rate",
           "hidden": false
         },
         { //Целочисленный атрибут "quantity"
           "targetEtalonId": null,
           "valueId": "",
           "unitId": "",
           "displayValue": null,
           "value": 987,
           "type": "Integer", //Тип атрибута, здесь "Целочисленный"
           "name": "quantity",
           "hidden": false
         },
         { //Логический атрибут "is_active"
           "targetEtalonId": null,
           "valueId": "",
           "unitId": "",
           "displayValue": null,
           "value": true,
           "type": "Boolean", //Тип атрибута, здесь "Логический"
           "name": "is_active",
           "hidden": false
         },
         { //Атрибут "date" типа Дата
           "targetEtalonId": null,
           "valueId": "",
           "unitId": "",
           "displayValue": null,
           "value": "2023-08-16",
           "type": "Date", //Тип атрибута, здесь "Дата"
           "name": "date",
           "hidden": false
         }
       ],
       "complexAttributes": [],
       "arrayAttributes": [],
       "etalonId": "", //Запись новая, поэтому у нее еще нет ID эталонной записи
       "entityName": "reg_test",  //Системное имя реестра
       "codeAttributes": [],
       "validFrom": "1900-01-01T00:00:00.000Z",//Начало периода актуальности. Опционально, можно оставить пустым для использования периода по умолчанию
       "validTo": "2500-12-31T23:59:59.999Z",//Конец периода актуальности. Опционально, можно оставить пустым для использования периода по умолчанию
       "externalId": {
         "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc", //Уникальный внешний ID, по нему можно будет обновлять запись. Создается пользователем API. Строковок значение, например, "reg_test_123"
         "sourceSystem": "universe"  //Система источник, от имени которой вносится запись, вместе с внешним ID образует ключ. Обязательное поле
       },
       "lsn":{
         "lsn": 1,
         "shard": 9
       }
     }
   }
 ],
 "abortOnFailure": true // Прерывать всю пакетную вставку при возникновении ошибки
}

Ответ:

{
 "results": [
   {
     "details": {
       "info": [],
       "warning": [],
       "error": []
     },
     "recordKeys": {
       "etalonKey": {
         "id": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
         "status": "ACTIVE"
       },
       "originKeys": [
         {
           "externalId": {
             "externalId": "0379a510-3c2e-11ee-bb05-b3c44289bffc",
             "sourceSystem": "universe"
           },
           "enrichment": false,
           "revision": 0,
           "status": "ACTIVE",
           "createDate": "2024-08-01T12:13:20.622Z",
           "updateDate": null,
           "createdBy": null,
           "updatedBy": null
         }
       ],
       "entityName": "reg_test",
       "lsn": {
         "lsn": 1,
         "shard": 9
       },
       "node": 0,
       "createDate": "2024-08-01T12:13:20.622Z",
       "updateDate": "2024-08-01T12:58:45.401Z",
       "createdBy": "admin",
       "updatedBy": "admin",
       "active": true,
       "published": false,
       "parent": null,
       "children": []
     },
     "etalon": {
       "simpleAttributes": [
         {
           "name": "name",
           "type": "String",
           "displayValue": null,
           "targetEtalonId": null,
           "valueId": null,
           "unitId": null,
           "value": "Какое-то наименование"
         },
         {
           "name": "date",
           "type": "Date",
           "displayValue": null,
           "targetEtalonId": null,
           "valueId": null,
           "unitId": null,
           "value": "2023-08-16"
         },
         {
           "name": "quantity",
           "type": "Integer",
           "displayValue": null,
           "targetEtalonId": null,
           "valueId": null,
           "unitId": null,
           "value": 987
         },
         {
           "name": "is_active",
           "type": "Boolean",
           "displayValue": null,
           "targetEtalonId": null,
           "valueId": null,
           "unitId": null,
           "value": true
         },
         {
           "name": "rate",
           "type": "Number",
           "displayValue": null,
           "targetEtalonId": null,
           "valueId": null,
           "unitId": null,
           "value": 1234.56
         }
       ],
       "arrayAttributes": [],
       "complexAttributes": [],
       "codeAttributes": [],
       "etalonId": "4d25f80f-3c2e-11ee-bc14-393b8ca6fb76",
       "modified": false,
       "version": 0,
       "entityName": "reg_test",
       "namespace": "register",
       "validFrom": "1900-01-01T00:00:00Z",
       "validTo": "2500-12-31T23:59:59.999Z",
       "status": "ACTIVE",
       "lsn": {
         "lsn": 1,
         "shard": 9
       },
       "createDate": "2024-08-01T12:13:20.622Z",
       "createdBy": "admin",
       "updateDate": "2024-08-01T12:58:45.401Z",
       "updatedBy": "admin",
       "rights": null,
       "operationType": "DIRECT",
       "diffToDraft": null,
       "published": true
     },
     "relationsResult": {
       "details": {
         "info": [],
         "warning": [],
         "error": []
       },
       "etalonId": null,
       "etalonRelations": null
     }
   }
 ]
}