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