Модуль пакетных операций с записями

Запуск пакетной операции

POST-запрос /v2/bulk-operations/execute

Пример тела запроса запуска операции со списком активом:

{
    "bulkOperationId": "com.universe.dg.bulk.modify.assets[operation]",
    "content": {
        "payload": {
            "modify-ownership-request-fragment-v1": {
                "upsertOwners": ["my_user", "new_admin"],
                "deleteOwners": [],
                "clearBeforeUpsert": false
            },
            "modify-tags-request-fragment-v1": {
                "upsertTags": ["new_tag_1"],
                "deleteTags": ["old_tag"],
                "clearBeforeUpsert": false
            },
            "modify-business-roles-request-fragment-v1": {
                "typeName": "test2",
                "modifications": [{
                        "businessRole": "first",
                        "upsertUsernames": [],
                        "clearBeforeUpsert": false
                    }, {
                        "businessRole": "wwww",
                        "upsertUsernames": ["my_user", "new_admin"],
                        "deleteUsernames": ["admin"],
                        "clearBeforeUpsert": false
                    }
                ]
            }
        },
        "assets": [{
                "etalonId": "aab1b9ee-95e8-11ef-a033-df68c0379356",
                "typeName": "test2"
            }
        ]
    }
}

Пример тела запроса запуска операции с поисковым запросом:

{
    "bulkOperationId": "com.universe.dg.bulk.modify.assets[operation]",
    "content": {
        "assetSearch": {
            "payload": {
                "org.unidata.mdm.rest.v2.dq.data": {
                    "setNames": [],
                    "ruleNames": [],
                    "functionNames": [],
                    "message": null,
                    "severity": null,
                    "category": null,
                    "totalScore": 0,
                    "matchAll": false,
                    "negate": false
                },
                "com.unidata.dg.rest.v1.business.roles": {
                    "businessRoles": [],
                    "availableByRoles": false
                },
                "org.unidata.dg.rest.v1.data": {
                    "drafts": false,
                    "countOnly": false,
                    "totalCount": true,
                    "returnFields": ["$etalon_id", "$type_name"],
                    "searchFields": ["$etalon_id", "$display_name", "$external_keys", "$ownership.username", "$tags", "$data_labels", "$business_role_assignments"],
                    "entity": "",
                    "searchDataType": "ASSET",
                    "returnAllFields": false,
                    "searchAllFields": false,
                    "hierarchical": false,
                    "supplementary": [],
                    "fetchAll": true,
                    "page": 1,
                    "count": 28,
                    "sortFields": [],
                    "formFields": [{
                            "name": "$etalon_id",
                            "type": "STRING",
                            "searchType": "EXACT",
                            "inverted": true,
                            "values": []
                        }
                    ]
                }
            }
        },
        "payload": {
            "modify-tags-request-fragment-v1": {
                "upsertTags": ["tag"],
                "clearBeforeUpsert": false
            }
        }
    }
}

Также на backend есть поддержка одновременного изменения владельцев и тегов для активов различных типов, также и бизнес-ролей для активов одного типа.