Управление активами

В этой статье:

Совет

Описание модели управления активами см. по ссылке

Создание/обновление актива

Endpoint: POST /v1/dg/data/assets/upsert.

Swagger (пример ссылки, куда необходимо подставить свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/assets/upsert.

Параметры запроса (UpsertAssetRequestRO):

Название

Тип

Обязательный

Описание

asset

AssetRecordRO

Да

Исходная запись актива

draftId

Long

Нет

Идентификатор черновика, в рамках которого выполняется создание/обновление актива. Если не указан или draftId = 0, сохранение/обновление выполнится напрямую без механизма черновиков

etalonId

String

Нет

Идентификатор эталонной записи актива. (Может быть использован только для при обновлении существующей записи актива)

externalId

AssetExternalIdRO

Нет

Внешний идентификатор исходной записи актива. Является обязательным полем при создании нового актива

lsn

Long

Нет

Порядковый номер эталонной записи актива. (Может быть использован только для при обновлении существующей записи актива)

operationType

OperationTypeRO

Нет

Идентификатор операции, во время которой была создана эталонная запись Direct - Запись создана напрямую Cascade - Запись создана каскадно, во время выполнения другого действия Copy - Запись создана в результате копирования Reapply - Запись создана во время выполнения правил обогащения Значение по умолчанию - Direct

typeName

String

Да

Системное название типа актива

Параметры ответа (UpsertAssetResultRO):

Название

Тип

Описание

etalon

EtalonAssetRO

Эталонная запись актива

keys

AssetKeysRO

Ключи эталонной записи актива

Пример создания нового актива

POST /v1/dg/data/assets/upsert
REQUEST_BODY:
{

    "typeName": "database",
    "externalId": {
        "externalId": "id1",
        "sourceSystem": "universe"
    },
    "asset": {
        "simpleAttributes": [
            {
               "name": "name",
               "value": "База данных Postgres",
               "type": "String"
           }
        ]
    }
}

Результат: в системе будет создан новый актив типа database от имени системы-источника universe с внешним идентификатором id1 и атрибутом name с заполненным значением "База данных Postgres".

Пример обновления актива

POST /v1/dg/data/assets/upsert
REQUEST_BODY:
{
    "typeName": "database",
    "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
    "draftId": 11,
    "asset": {
        "simpleAttributes": [
            {
                "name": "name",
                "value": "База данных MongoDB",
                "type": "String"
            }
        ]
    }
}

Результат: в системе будет обновлен новый актив типа database в режиме черновика от имени стандартной системы-источника universe с атрибутом name и заполненным значением "База данных MongoDB".

Пример добавления новой исходной записи для эталона

POST /v1/dg/data/assets/upsert
REQUEST_BODY:
{
    "typeName": "database",
    "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
    "externalId": {
        "externalId": "id2",
        "sourceSystem": "someSourceSystem"
    },
    "draftId": 12,
    "asset": {
        "simpleAttributes": [
            {
                "name": "host",
                "value": "localhost",
                "type": "String"
            },
            {
                "name": "port",
                "value": "5432",
                "type": "Integer"
            }
        ]
    }
}

Результат: в системе будет обновлен эталонный актив с идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9 типа database в режиме черновика. К нему будет добавлена/обновлена исходная запись от имени системы-источника someSourceSystem с внешним идентификатором id2 с атрибутами host и port, равными localhost и 5432 соответственно. Эталонная запись будет пересчитана с учетом всех исходных записей, из которых она состоит, с помощью алгоритма BVT.

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

Endpoint: GET /v1/dg/data/assets/{name}/{id}

Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/assets/get.

Параметры запроса (GetAssetRequestRO):

Название

Тип

Расположение

Обязательный

Описание

name

String

Path

Да

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

id

String

Path

Да

Идентификатор эталонной записи актива

draftId

Long

Query

Нет

Идентификатор черновика актива. Если не указан, будет возвращена опубликованная версия актива

Параметры ответа (GetAssetResultRO):

Название

Тип

Описание

keys

AssetKeysRO

Ключи эталонной записи актива

etalon

EtalonAssetRO

Эталонная запись актива

Пример

GET /v1/dg/data/assets/database/23451fc2-ac26-11ec-9124-b5e9fc06bdf9

Результат: В результате выполнения запроса будет возвращена эталонная запись актива типа database c идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9.

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

Endpoint: POST /v1/dg/data/assets.

Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/assets/get_1.

Параметры запроса (GetAssetRequestRO):

Название

Тип

Обязательный

Описание

typeName

String

Да

Системное название типа актива

etalonId

String

Нет

Идентификатор эталонной записи актива

lsn

Long

Нет

Порядковый номер эталонной записи актива

externalId

AssetExternalIdRO

Нет

Внешний идентификатор исходной записи актива

draftId

Long

Нет

Идентификатор черновика актива

Примечание

При получении эталонной записи актива в режиме черновика доступно получение только по etalonId - идентификатору эталонной записи.

Параметры ответа (GetAssetResultRO):

Название

Тип

Описание

keys

AssetKeysRO

Ключи эталонной записи актива

etalon

EtalonAssetRO

Эталонная запись актива

Пример получения эталонной записи по идентификатору исходной записи

POST /v1/dg/data/assets
REQUEST_BODY:
{
    "typeName": "database",
    "externalId": {
        "externalId": "id1",
        "sourceSystem": "universe"
    }
}

Результат: В результате выполнения запроса будет возвращена эталонная запись актива типа database, содержащая исходную запись c идентификатором id1 и системой-источником universe.

Пример получения эталонной записи актива по идентификатору исходной записи

POST /v1/dg/data/assets
REQUEST_BODY:
{
    "typeName": "database",
    "externalId": {
        "externalId": "id1",
        "sourceSystem": "universe"
    }
}

Результат: В результате выполнения запроса будет возвращена эталонная запись актива типа database, содержащая исходную запись c идентификатором id1 и системой-источником universe.

Пример получения эталонной записи актива по порядковому номеру

POST /v1/dg/data/assets
REQUEST_BODY:
{
    "typeName": "database",
    "lsn": 100
}

Результат: В результате выполнения запроса будет возвращена эталонная запись актива типа database, имеющая порядковый номер 100.

Удаление актива по идентификатору эталонной записи

Endpoint: DELETE /v1/dg/data/assets/delete/{name}/{id}

Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/assets/delete.

Параметры запроса (DeleteAssetRequestRO):

Название

Тип

Расположение

Обязательный

Описание

name

String

Path

Да

Системное название типа актива

id

String

Path

Да

Идентификатор эталонной записи актива

draftId

Long

Query

Нет

Идентификатор черновика актива. Если указан, удаление актива будет выполняться в режиме черновика

wipe

Boolean

Query

Нет

Флаг-идентификатор типа удаления. Если wipe = true, запись будет удалена физически. Значение по умолчанию: wipe = false - логическое удаление

Примечание

При удалении актива в режиме черновика доступно только логическое удаление.

Параметры ответа (DeleteAssetResultRO):

Название

Тип

Описание

keys

AssetKeysRO

Ключи удаленной эталонной записи актива

Пример

DELETE /v1/dg/data/assets/delete/database/23451fc2-ac26-11ec-9124-b5e9fc06bdf9
QUERY_PARAMS:
{
    wipe: true
}

Результат: В результате выполнения запроса будет физически удалена эталонная запись актива типа database c идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9.

Удаление актива по расширенному запросу

Endpoint: DELETE /v1/dg/data/assets/delete

Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/assets/delete_1.

Параметры запроса (DeleteAssetRequestRO):

Название

Тип

Обязательный

Описание

Название

Тип

Обязательный

Описание

typeName

String

Да

Системное название типа актива

etalonId

String

Нет

Идентификатор эталонной записи актива

lsn

Long

Нет

Порядковый номер эталонной записи актива

externalId

AssetExternalIdRO

Нет

Внешний идентификатор исходной записи актива

draftId

Long

Нет

Идентификатор черновика актива

data

AssetRecordRO

Нет

Исходная запись актива. Позволяет применять изменения к активу при выполнении логического удаления

inactivateEtalon

Boolean

Нет

Флаг-индикатор логического удаления эталонной записи

inactivateOrigin

Boolean

Нет

Флаг-индикатор логического удаления исходной записи

wipe

Boolean

Нет

Флаг-индикатор физического удаления записи актива

Важные примечания:

  • Запрос должен содержать хотя бы один из способов идентификации актива (etalonId, lsn, externalId).

  • При удалении актива в режиме черновика доступно только логическое удаление эталонной записи (inactivateEtalon).

  • Запрос должен иметь один и только один активный флаг типа удаления (inactivateEtalon, inactivateOrigin, wipe).

Параметры ответа (DeleteAssetResultRO):

Название

Тип

Описание

keys

AssetKeysRO

Ключи удаленной эталонной записи актива

Примеры

  • Логическое удаление эталонной записи с применением изменений:

    DELETE /v1/dg/data/assets/delete
    REQUEST_BODY:
    {
        "typeName": "database",
        "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
        "draftId": 13,
        "inactivateEtalon": true,
        "data": {
            "simpleAttributes": [
                {
                    "name": "host",
                    "value": "localhost",
                    "type": "String"
                },
                {
                    "name": "port",
                    "value": "15432",
                    "type": "Integer"
                }
            ]
        }
    }
    

Результат: В результате выполнения запроса будет логически удалена эталонная запись актива типа database c идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9 в режиме черновика. Перед удалением к записи применятся изменения атрибутов host и port.

  • Логическое удаление исходной записи из эталона:

    DELETE /v1/dg/data/assets/delete
    REQUEST_BODY:
    {
        "typeName": "database",
        "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
        "externalId": {
            "externalId": "id2",
            "sourceSystem": "someSourceSystem"
        },
        "inactivateOrigin": true
    }
    

Результат: В результате выполнения запроса будет логически удалена исходная запись (externalId = id2, sourceSystem = someSourceSystem) эталонного актива типа database c идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9.

  • Физическое удаление актива по порядковому номеру:

    DELETE /v1/dg/data/assets/delete
    REQUEST_BODY:
    {
        "typeName": "database",
        "lsn": 100,
        "wipe": true
    }
    

Результат: В результате выполнения запроса будет физически удалена эталонная запись актива типа database c порядковым номером 100.