# V3 Update Policy

## Updates a policy. Cannot be used for creation.

> Update the policy (name, type, contentTypes, scopes) and also the dictionaries for a policy.\
> Warning: If you send empty list of dictionaries during the update operation, then all the\
> dictionaries for this policy are deleted and policy is automatically disabled.\
> Note: The policy should already exist.<br>

```json
{"openapi":"3.0.1","info":{"title":"Agent API","version":"25.8.1"},"servers":[{"url":"youragentURL.symphony.com/agent"}],"paths":{"/v3/dlp/policies/{policyId}/update":{"post":{"tags":["DLP Policies and Dictionary Management"],"summary":"Updates a policy. Cannot be used for creation.","description":"Update the policy (name, type, contentTypes, scopes) and also the dictionaries for a policy.\nWarning: If you send empty list of dictionaries during the update operation, then all the\ndictionaries for this policy are deleted and policy is automatically disabled.\nNote: The policy should already exist.\n","parameters":[{"name":"sessionToken","in":"header","description":"Session authentication token.","required":true,"schema":{"type":"string"}},{"name":"keyManagerToken","in":"header","description":"Key Manager authentication token.","schema":{"type":"string"}},{"name":"policyId","in":"path","description":"Unique dictionary identifier.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V3DLPPolicyRequest"}}},"required":true},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V3DLPPolicyResponse"}}}},"400":{"description":"Client error, see response body for further details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized: Session tokens invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden: Caller lacks necessary entitlement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error, see response body for further details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"V3DLPPolicyRequest":{"required":["appliesTo","name","scopes"],"type":"object","properties":{"name":{"type":"string","description":"Unique name of a policy, max 30 characters. Cannot be empty. All the leading and trailing blank spaces are trimmed.\n"},"scopes":{"type":"array","description":"List of communication scopes. Possible values are \"Internal\" (for Internal conversations) or \"External\" (for External conversations).\nYou can apply both scopes if you set it to [\"Internal\", \"External\"].\n","items":{"type":"string"}},"appliesTo":{"type":"array","items":{"$ref":"#/components/schemas/V3DLPPolicyAppliesTo"}}},"description":"Request to be used to get policies."},"V3DLPPolicyAppliesTo":{"required":["action","dataType","rules"],"type":"object","properties":{"dataType":{"type":"string","description":"The list of data types that policy should apply to. Can't be empty.\nCan be [\"Messages\",\"RoomMeta\", \"SignalMeta\", \"FileContent\", \"FileMeta\"].\n"},"action":{"type":"string","description":"Action to be taken on violation detection.\nCan be [\"Block\", \"Warn\", \"LogOnly\"]. The default is \"LogOnly\".\n"},"rules":{"type":"array","items":{"$ref":"#/components/schemas/V3DLPRule"}}}},"V3DLPRule":{"required":["name","type"],"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Type of a rule used by policy. Can be [\"UNKNOWN\", \"TEXT_MATCH\", \"FILE_EXTENSION\", \"FILE_SIZE\", \"FILE_PASSWORD\", \"FILE_CLASSIFIER\"]."},"name":{"type":"string","description":"Name for rule."},"textMatchConfig":{"$ref":"#/components/schemas/V3DLPTextMatchConfig"},"fileSizeConfig":{"$ref":"#/components/schemas/V3DLPFileSizeConfig"},"fileExtensionConfig":{"$ref":"#/components/schemas/V3DLPFileExtensionConfig"},"filePasswordConfig":{"$ref":"#/components/schemas/V3DLPFilePasswordConfig"},"fileClassifierConfig":{"$ref":"#/components/schemas/V3DLPFileClassifierConfig"}},"description":"A Rule defines the actual matching specification for policies. It holds a type and a configuration\nfor the rule, these properties should be used to build the corresponding matching implementation.\nOnly one of the configuration property should be set [textMatchConfig, fileSizeConfig, fileExtensionConfig, filePasswordConfig, fileClassifierConfig].\n"},"V3DLPTextMatchConfig":{"type":"object","required":["dictionaries","applicableFileTypes"],"properties":{"dictionaries":{"type":"array","items":{"$ref":"#/components/schemas/V3DLPDictionaryMeta"}},"countUniqueOccurrences":{"type":"integer","format":"int32"},"applicableFileTypes":{"type":"array","description":"File types must be applied only for rule type \"FileContent\", otherwise must be empty.\nCan be [\"PDF\", \"WORD\", \"EXCEL\", \"POWERPOINT\", \"ZIP\", \"CSV\", \"TXT\"].\n","items":{"type":"string"}}},"description":"This is a configuration that can be used to match text or regex.\nConfiguration that can be used by a rule. This is a configuration that can be used to match text or regex.\nThis configuration also corresponds to V2 TextMatch/RegexMatch of dictionaries.\n"},"V3DLPDictionaryMeta":{"required":["dictId","name","version"],"type":"object","properties":{"dictId":{"type":"string"},"version":{"type":"string"},"name":{"type":"string"}},"description":"Identity of a dictionary."},"V3DLPFileSizeConfig":{"type":"object","properties":{"sizeLimit":{"type":"integer","format":"int32"}},"description":"File size config defines maximum allowed size of file. Default max size limit is 20 MB."},"V3DLPFileExtensionConfig":{"required":["allowLists","blockLists"],"type":"object","properties":{"allowLists":{"type":"array","description":"File extensions that are allowed.","items":{"type":"string"}},"blockLists":{"type":"array","description":"File extensions that are blocked.","items":{"type":"string"}}},"description":"Extension detection config for allowed and blocked types of file extensions."},"V3DLPFilePasswordConfig":{"required":["applicableFileTypes","matchCriteria"],"type":"object","properties":{"applicableFileTypes":{"type":"array","description":"File types that can be applied. Can be [\"PDF\", \"WORD\", \"EXCEL\", \"POWERPOINT\", \"ZIP\", \"CSV\", \"TXT\"].","items":{"type":"string"}},"matchCriteria":{"type":"string","description":"Based on the criteria, whether a file is password protected or not means a match.\nCan be [\"PASSWORD_PROTECTED\", \"NOT_PASSWORD_PROTECTED\"]. The default is \"NOT_PASSWORD_PROTECTED\".\n"}},"description":"Password protected detection config for files that are password protected or not."},"V3DLPFileClassifierConfig":{"required":["applicableFileTypes","classifiers"],"type":"object","properties":{"classifiers":{"type":"object","additionalProperties":{"type":"string"},"description":"Classifier is defined as a Key and its Value: e.g.: \"classification\": \"Internal\".\nName and value can contain UTF-8 characters. Neither the name nor value cannot be left empty.\nMaximum 30 characters for the name and value, case insensitive.\nIf files contains k-v pairs in the classifers map, it means a match. Maximum 30 classifiers per policy.\n"},"applicableFileTypes":{"type":"array","description":"File types that can be applied. Can be [\"PDF\", \"WORD\", \"EXCEL\", \"POWERPOINT\", \"ZIP\", \"CSV\", \"TXT\"].","items":{"type":"string"}}}},"V3DLPPolicyResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/V3DLPPolicy"}},"description":"Policy Response."},"V3DLPPolicy":{"type":"object","required":["appliesTo"],"properties":{"id":{"type":"string","description":"Unique identifier for policy."},"policyId":{"type":"string","description":"Policy Id."},"version":{"type":"string","description":"The version of the policy, in format \"major.minor\". Initial value will set by backend as \"3.0\" when created.\nWhenever the policy version needs to be changed, the minor version by 1 unless minor == 999,\nthen the major version is increased by 1 until it reaches 999.\n"},"name":{"type":"string","description":"Unique name of policy, max 30 characters. Cannot be empty. All the leading and trailing blank spaces are trimmed.\n"},"creatorId":{"type":"integer","description":"Numeric userId of the creator.","format":"int64"},"scopes":{"type":"array","description":"List of communication scopes. Possible values are \"Internal\" (for Internal conversations) or \"External\" (for External conversations).\nYou can apply both scopes if you set it to [\"Internal\", \"External\"].\n","items":{"type":"string"}},"appliesTo":{"type":"array","items":{"$ref":"#/components/schemas/V3DLPPolicyAppliesTo"}},"active":{"type":"boolean","description":"Indicate whether the policy is active or not."},"deleted":{"type":"boolean","description":"Indicate whether the policy is deleted or not."},"creationDate":{"type":"integer","description":"Creation time of the policy in milliseconds elapsed as of epoch time.","format":"int64"},"lastUpdatedDate":{"type":"integer","description":"Recent update time of the policy in milliseconds elapsed as of epoch time.","format":"int64"},"lastDisabledDate":{"type":"integer","description":"Recent disable time of the policy in milliseconds elapsed as of epoch time.","format":"int64"},"systemPolicy":{"type":"boolean"}},"description":"A policy is the main entity of V3 policy/rule system. It is responsible to define rules and add scope constraints to the engine.\n"},"Error":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}
```

> #### 🚧 Important
>
> Do not use this endpoint to create new policies. Use [Create Policy](https://rest-api.symphony.com/main/dlp-dictionary-and-policy-management/v3-policy-management-endpoints/v3-create-policy).

> #### ❗️ Warning
>
> Updating a policy requires to send a whole data that was used for creation a policy with modification to be applied. There is no partial update for this endpoint.

> #### 🚧 Required Permissions
>
> Calling this endpoint requires a Service User Account set with the Expression Filter Policy Management role. For more information about Service User accounts and their roles, see the [Symphony Administration Guide](https://symphony.direct/).
>
> See [Bot Permissions](https://docs.developers.symphony.com/building-bots-on-symphony/configuration/bot-permissions) for a list of roles and associated privileges.
