Управление связями активов¶
В этой статье:
Совет
Описание модели управления связями активов см. по ссылке
Создание / Обновление связей¶
Endpoint: POST /v1/dg/data/relations/upsert
Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/assets/upsert
Тело запроса: UpsertRelationsRequestRO
Название |
Тип |
Обязательный |
Описание |
---|---|---|---|
typeName |
String |
Да |
Системное название типа актива левого конца |
etalonId |
String |
Нет |
Идентификатор эталонной записи актива левого конца |
lsn |
Long |
Нет |
Порядковый номер эталонной записи актива левого конца |
externalId |
AssetExternalIdRO |
Нет |
Внешний идентификатор исходной записи актива левого конца |
parentDraftId |
Long |
Нет |
Идентификатор родительского черновика (черновика актива, являющегося левым концом связи) |
relations |
RelationRecordRO[] |
Да |
Список связей для вставки/обновления |
Важные примечания:
Запрос должен содержать хотя бы один из способов идентификации актива левого конца (etalonId, lsn, externalId).
Если в запросе указан идентификатор черновика-родителя (parentDraftId), то параметр draftId из модели RelationRecordRO может быть пустым. Для создаваемых/обновляемых в запросе связей соответствующие черновики создадутся автоматически.
Связь RelationRecordRO должна иметь один из способов идентификации правого конца связи (toEtalonId, toLsn, toExternalId). Тип связи (relationType) является обязательным.
Ответ: UpsertRelationsResultRO
Название |
Тип |
Описание |
---|---|---|
etalons |
EtalonRelationRO[] |
Список созданных/обновленных записей связей активов |
Пример¶
POST /v1/dg/data/relations/upsert
REQUEST_BODY:
{
"typeName": "database",
"etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
"parentDraftId": 13,
"relations": [
{
"relationType": "include",
"toEtalonId": "dab1fa92-baa5-11ec-b055-4fb2ec1632f9",
"toTypeName": "tables"
}
]
}
Результат: В результате выполнения запроса будет создана связь типа include в режиме черновика от актива типа database с идентификатором эталонной записи 23451fc2-ac26-11ec-9124-b5e9fc06bdf9 к активу типа tables c идентификатором эталонной записи dab1fa92-baa5-11ec-b055-4fb2ec1632f9.
Получение связи по идентификатору эталонной записи¶
Endpoint: GET /v1/dg/data/relations/{name}/{id}
. Отвечает за получение эталонных связей по идентификатору эталонной записи и по типу связи.
Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/relations/get_4
Параметры запроса:
Название |
Тип |
Расположение |
Обязательный |
Описание |
---|---|---|---|---|
name |
String |
Path |
Да |
Тип связи |
id |
String |
Path |
Да |
Идентификатор эталонной записи связи |
draftId |
Long |
Query |
Нет |
Идентификатор черновика связи. Если не указан, будет возвращена опубликованная версия связи |
Ответ: GetRelationResultRO
Название |
Тип |
Описание |
---|---|---|
relationKeys |
RelationKeysRO |
Ключи эталонной записи связи |
etalonRelation |
EtalonRelationRO |
Эталонная запись связи |
Пример¶
GET /v1/dg/data/relations/include/092ad86d-93b1-11ec-a4d3-b336588c82b2
Результат: В результате выполнения запроса будет возвращена эталонная запись связи типа include c идентификатором 092ad86d-93b1-11ec-a4d3-b336588c82b2.
Получение списка связей для актива¶
Endpoint: POST /v1/dg/data/relations
. Отвечает за получение списка эталонных связей для актива с возможностью фильтрации.
Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/relations/get_3
Тело запроса: GetRelationsRequestRO
Название |
Тип |
Обязательный |
Описание |
---|---|---|---|
typeName |
String |
Да |
Системное название типа актива |
etalonId |
String |
Нет |
Идентификатор эталонной записи актива |
lsn |
Long |
Нет |
Порядковый номер эталонной записи актива |
externalId |
AssetExternalIdRO |
Нет |
Внешний идентификатор исходной записи актива |
parentDraftId |
Long |
Нет |
Идентификатор черновика актива |
relationTypes |
String[] |
Нет |
Фильтр для типов связей. Если пуст, вернутся все связи |
toTypeNames |
String[] |
Нет |
Фильтр для правых концов связей. Если пуст, вернутся все связи |
fetchAll |
Boolean |
Нет |
Если true, вернутся все связи без учета фильтрации |
includeInactive |
Boolean |
Нет |
Флаг, отвечающий за фильтрацию по статусам связей. Если includeInactive = true, вернутся все связи, включая логически удаленные. |
count |
Integer |
Да |
Количество связей на странице |
page |
Integer |
Нет |
Номер страницы связей |
Важные примечания:
Запрос должен содержать хотя бы один из способов идентификации актива (etalonId, lsn, externalId).
При получении связей актива в режиме черновика доступно получение только по etalonId - идентификатору эталонной записи.
Ответ: GetRelationsResultRO
Название |
Тип |
Описание |
---|---|---|
relations |
EtalonRelationRO[] |
Список эталонных связей |
totalCount |
Integer |
Общее количество связей, удовлетворяющих запросу |
Примеры¶
Получение списка всех связей актива:
POST /v1/dg/data/relations REQUEST_BODY: { "typeName": "database", "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9", "fetchAll": true, "count": 5 }
Результат: В результате выполнения запроса будут возвращены активные эталонные записи связей актива типа database с идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9. Количество связей в ответе = 5.
Получение связей в режиме черновика с фильтрацией:
POST /v1/dg/data/relations REQUEST_BODY: { "typeName": "database", "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9", "parentDraftId": 13, "relationTypes": ["include"], "toTypeNames": ["tables"], "count": 5 }
Результат: В результате выполнения запроса будут возвращены эталонные записи связей, относящиеся к черновику 13 актива типа database с идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9, которые имеют тип связи - include и тип актива правого конца - tables.
Удаление связи по идентификатору эталонной записи¶
Endpoint: DELETE /v1/dg/data/relations/delete/{name}/{id}
Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/relations/delete_2
Параметры запроса:
Название |
Тип |
Расположение |
Обязательный |
Описание |
---|---|---|---|---|
name |
String |
Path |
Да |
Типа связи |
id |
String |
Path |
Да |
Идентификатор эталонной записи связи |
draftId |
Long |
Query |
Нет |
Идентификатор черновика связи. Если указан, удаление актива будет выполняться в режиме черновика |
wipe |
Boolean |
Query |
Нет |
Флаг-идентификатор типа удаления. Если wipe = true, запись будет удалена физически. Значение по умолчанию: wipe = false - логическое удаление |
Примечание
При удалении связи в режиме черновика доступно только логическое удаление
Ответ: DeleteRelationResultRO
Название |
Тип |
Описание |
---|---|---|
relationKeys |
RelationKeysRO |
Ключи удаленной эталонной записи связи |
Пример¶
DELETE /v1/dg/data/relations/delete/include/092ad86d-93b1-11ec-a4d3-b336588c82b2
QUERY_PARAMS:
{
wipe: true
}
Результат: В результате выполнения запроса будет физически удалена эталонная запись связи типа Include c идентификатором 092ad86d-93b1-11ec-a4d3-b336588c82b2.
Удаление нескольких связей¶
Endpoint: DELETE /v1/dg/data/relations/delete
Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/relations/delete_3
Тело запроса: DeleteRelationsRequestRO
Название |
Тип |
Обязательный |
Описание |
---|---|---|---|
parentDraftId |
Long |
Нет |
Идентификатор черновика родительского актива |
deletes |
RelationDeleteWrapperRO[] |
Да |
Список связей для удаления |
Примечание
При удалении связи в режиме черновика доступно только логическое удаление эталонной записи
Ответ: DeleteRelationsResultRO
Название |
Тип |
Описание |
---|---|---|
relationsKeys |
RelationKeysRO[] |
Ключи удаленных эталонных записей связей |
Пример¶
DELETE /v1/dg/data/relations/delete
REQUEST_BODY:
{
"deletes": [
{
"etalonId": "092ad86d-93b1-11ec-a4d3-b336588c82b2",
"relationType": "include",
"wipe": true
},
{
"etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
"relationType": "contains",
"wipe": true
}
]
}
Результат: В результате выполнения запроса будет физически удалена связь типа Include c идентификатором 092ad86d-93b1-11ec-a4d3-b336588c82b2 и связь типа Contains c идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9.