Управление активами¶
В этой статье:
Совет
Описание модели управления активами см. по ссылке
Создание / Обновление актива¶
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
Параметры запроса:
Название |
Тип |
Расположение |
Обязательный |
Описание |
---|---|---|---|---|
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
Параметры запроса:
Название |
Тип |
Расположение |
Обязательный |
Описание |
---|---|---|---|---|
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.