# Updates an existing data group Updates an existing data group by its unique identifier. ## Endpoint `PUT /endpointdlp/api/data-classification/data-group/data-group-details/{dataGroupId}` ## Request URL `https://{server-hostname}:8383/endpointdlp/api/data-classification/data-group/data-group-details/{dataGroupId}` ## Scope `EndpointDLP.UPDATE` ## Header `Authorization: d92d4xxxxxxxxxxxxx15f52` ## Request Parameters ### Request Headers | Parameter | Type | Required | Value | |---|---|---|---| | Accept | string | Mandatory | `application/dataGroupDetail.v1+json` | | Content-Type | string | Mandatory | `application/dataGroupDetail.v1+json` | ### Path Parameters | Parameter | Type | Required | Description | |---|---|---|---| | dataGroupId | string | Mandatory | Unique identifier of the data group. Fetch from [Get All Data Groups](https://www.manageengine.com/products/desktop-central/help/api/onpremise/edlp-get-all-data-groups.html) | ### Request Body `application/json` - JSON object - **dataGroupDetail** — JSON object — Mandatory - Data group detail wrapper ## Sample Request ```curl curl --request PUT \ --url https://appdomain/endpointdlp/api/data-classification/data-group/data-group-details/{dataGroupId} \ --header 'Accept: application/dataGroupDetail.v1+json' \ --header 'Authorization: d92d4xxxxxxxxxxxxx15f52' \ --header 'Content-Type: application/dataGroupDetail.v1+json' \ --data '{"dataGroupDetail":{"dataGroupId":"602","lastModifiedTime":"1776085156095","creationTime":"1776085156095","lastModifiedUser":"john.doe","dataRuleDetails":[{"dataRuleId":"11","noOfOccurrence":"2"}],"dataGroupDescription":"Updated group for PII rules","dataGroupName":"PII Data Group Updated","createdUser":"john.doe","dataRuleSummaryBeanList":[{"regexSubRuleBean":{"dictionaryWordList":[],"regexValueList":["\\d{3}-\\d{2}-\\d{4}"]},"keywordSubRuleBean":null,"dataRuleId":"1000602","noOfOccurrence":"2","extensionList":null,"dataRuleName":"SSN Detection Rule","fingerprintSubRuleBean":null,"subRuleTypeId":1},{"regexSubRuleBean":null,"keywordSubRuleBean":{"fileDetailBean":{"fileName":"confidential-keywords.txt","fileLocation":"/dlp/refdata/uploads/confidential-keywords.txt"},"caseSensitive":false},"dataRuleId":"1000603","noOfOccurrence":"1","extensionList":null,"dataRuleName":"Confidential Keyword Rule","fingerprintSubRuleBean":null,"subRuleTypeId":2},{"regexSubRuleBean":null,"keywordSubRuleBean":null,"dataRuleId":"1000604","noOfOccurrence":"1","extensionList":null,"dataRuleName":"Source Code Fingerprint Rule","fingerprintSubRuleBean":{"fileDetailBean":{"fileName":"source-code-template.docx","fileLocation":"/dlp/refdata/uploads/source-code-template.docx"}},"subRuleTypeId":3}]}}' ``` ## Sample Request Body Update an existing data group containing one rule of each sub-rule type (regex, keyword, fingerprint). For keyword/fingerprint rules, `fileName` and `fileLocation` come from the Upload Reference File API response. ```json { "dataGroupDetail": { "dataGroupId": "602", "lastModifiedTime": "1776085156095", "creationTime": "1776085156095", "lastModifiedUser": "john.doe", "dataRuleDetails": [ { "dataRuleId": "11", "noOfOccurrence": "2" } ], "dataGroupDescription": "Updated group for PII rules", "dataGroupName": "PII Data Group Updated", "createdUser": "john.doe", "dataRuleSummaryBeanList": [ { "regexSubRuleBean": { "dictionaryWordList": [], "regexValueList": [ "\\d{3}-\\d{2}-\\d{4}" ] }, "keywordSubRuleBean": null, "dataRuleId": "1000602", "noOfOccurrence": "2", "extensionList": null, "dataRuleName": "SSN Detection Rule", "fingerprintSubRuleBean": null, "subRuleTypeId": 1 }, { "regexSubRuleBean": null, "keywordSubRuleBean": { "fileDetailBean": { "fileName": "confidential-keywords.txt", "fileLocation": "/dlp/refdata/uploads/confidential-keywords.txt" }, "caseSensitive": false }, "dataRuleId": "1000603", "noOfOccurrence": "1", "extensionList": null, "dataRuleName": "Confidential Keyword Rule", "fingerprintSubRuleBean": null, "subRuleTypeId": 2 }, { "regexSubRuleBean": null, "keywordSubRuleBean": null, "dataRuleId": "1000604", "noOfOccurrence": "1", "extensionList": null, "dataRuleName": "Source Code Fingerprint Rule", "fingerprintSubRuleBean": { "fileDetailBean": { "fileName": "source-code-template.docx", "fileLocation": "/dlp/refdata/uploads/source-code-template.docx" } }, "subRuleTypeId": 3 } ] } } ``` ## Response Parameters ### HTTP Code 200 Response body: `application/json` - JSON object - **dataGroupDetail** — JSON object - Data group detail wrapper ### HTTP Code 400 Response body: `application/json` | Parameter | Type | Description | |---|---|---| | errorCode | string | Validation error code. Common value: `INTERNAL_ERROR` when the new data group/rule name already exists | | errorMessage | string | Validation failure message indicating the duplicate name | ### HTTP Code 401 Response body: `application/json` | Parameter | Type | Description | |---|---|---| | errorCode | long | Unauthorized error code returned when authentication credentials are missing, expired, or invalid (authentication=required) | | errorMsg | string | Authentication failure reason | ### HTTP Code 500 Response body: `application/json` | Parameter | Type | Description | |---|---|---| | errorCode | string | Internal error code returned when updating a data group fails | | errorMessage | string | Failure message describing why the data group could not be updated | ## Possible Response Codes | HTTP Code | |---| | 200 | | 400 | | 401 | | 500 | ## Sample Response: HTTP 200 Successful data group update containing one rule of each sub-rule type (regex, keyword, fingerprint). ```json { "dataGroupDetail": { "dataGroupId": "602", "createdUserId": "101", "lastModifiedTime": "1776087387580", "creationTime": "1776087387580", "dataGroupDescription": "Updated group for PII rules", "dataRuleSummaryBeanList": [ { "regexSubRuleBean": { "dictionaryWordList": [], "regexValueList": [ "\\d{3}-\\d{2}-\\d{4}" ] }, "keywordSubRuleBean": null, "dataRuleId": "1000602", "noOfOccurrence": "2", "dataRuleDescription": null, "extensionList": null, "dataRuleName": "SSN Detection Rule", "dataRuleType": null, "fingerprintSubRuleBean": null, "subRuleTypeId": 1 }, { "regexSubRuleBean": null, "keywordSubRuleBean": { "fileDetailBean": { "fileName": "confidential-keywords.txt", "fileLocation": "/dlp/refdata/uploads/confidential-keywords.txt" }, "caseSensitive": false }, "dataRuleId": "1000603", "noOfOccurrence": "1", "dataRuleDescription": null, "extensionList": null, "dataRuleName": "Confidential Keyword Rule", "dataRuleType": null, "fingerprintSubRuleBean": null, "subRuleTypeId": 2 }, { "regexSubRuleBean": null, "keywordSubRuleBean": null, "dataRuleId": "1000604", "noOfOccurrence": "1", "dataRuleDescription": null, "extensionList": null, "dataRuleName": "Source Code Fingerprint Rule", "dataRuleType": null, "fingerprintSubRuleBean": { "fileDetailBean": { "fileName": "source-code-template.docx", "fileLocation": "/dlp/refdata/uploads/source-code-template.docx" } }, "subRuleTypeId": 3 } ], "labelId": "0", "lastModifiedUserId": "101", "customerId": "5001", "lastModifiedUser": "john.doe", "dataRuleDetails": [ { "dataRuleId": "11", "noOfOccurrence": "2" } ], "dataGroupName": "PII Data Group Updated", "createdUser": "john.doe" } } ``` ## Sample Response: HTTP 400 Data group name already exists. ```json { "errorMessage": "This Rule Name already exist", "errorCode": "INTERNAL_ERROR" } ``` ## Sample Response: HTTP 401 User unauthorized. ```json { "errorMessage": "Unauthorized access", "errorCode": "UAC_UNAUTHORIZED" } ``` ## Sample Response: HTTP 500 Internal server error. ```json { "errorMessage": "Exception occurred while updating DataGroup", "errorCode": "INTERNAL_ERROR" } ``` ## Rate Limit **Duration:** 1 minute | **Threshold:** 30 | **Lock period:** 5 minutes Duration - Time window for the threshold. Threshold - Number of API calls allowed within the specified duration. Lock Period - Wait time before consecutive API requests.