--- title: "Edit policy" slug: "drm-policy-update" tags: ["Click Multi DRM", "Media"] updated: 2026-09-17T10:12:33Z published: 2026-09-17T10:12:33Z canonical: "api.ncloud-docs.com/drm-policy-update" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Edit policy Available in Classic and VPC Edit a DRM policy. Note To edit a policy currently applied to a site, disable the site first. Editing a policy while the site is enabled may affect license issuance and playback. ## Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | PUT | /api/v1/policy/{policyId} | ### Request headers For information about the headers common to all One Click Multi DRM APIs, see [One Click Multi DRM request headers](/docs/en/one-click-multi-drm-api-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). ### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `policyId` | Integer | Required | DRM policy ID - See [Get policy list](/docs/en/drm-policy-list) | ### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `policyName` | String | Required | Policy name - Enter 3-20 characters using a combination of English letters, numbers, and special character "_". | | `persistent` | Boolean | Required | Whether to save offline licenses - `true` \| `false` (default) - `true`: Keep the license. - `false`: Remove the license after playback (streaming). - Must be set to `true` when using `rentalDuration` (offline rental scenario). | | `rentalDuration` | Integer | Required | Validity period (seconds) during which content must be played for the first time after obtaining an offline license - 0-2,147,483,647 (default: 0) - Configure when using an offline rental scenario. | | `playbackDuration` | Integer | Required | License validity period (seconds) from the initial playback start time of the content - 0-2,147,483,647 (default: 0) | | `drmPolicyConfig` | Object | Required | Policy settings by DRM type | | `drmPolicyConfig.widevine` | Object | Required | Widevine type policy | | `drmPolicyConfig.widevine.useYn` | Boolean | Required | Widevine policy usage - `true` \| `false` - `true`: Enable - `false`: Disable | | `drmPolicyConfig.widevine.securityLevel` | Integer | Optional | Widevine security level value - `1` (default) \| `2` \| `3` \| `4` \| `5` - `1`: SW_SECURE_CRYPTO - `2`: SW_SECURE_DECODE - `3`: HW_SECURE_CRYPTO - `4`: HW_SECURE_DECODE - `5`: HW_SECURE_ALL (playable only on Widevine L1 devices) - Higher numbers indicate a higher level of security. | | `drmPolicyConfig.widevine.hdcp` | String | Optional | Security (HDCP) level for digital output - `HDCP_NONE` (default) \| `HDCP_V1` \| `HDCP_V2` \| `HDCP_V2_1` \| `HDCP_V2_2` \| `HDCP_NO_DIGITAL_OUTPUT` - Higher versions indicate a higher level of security. | | `drmPolicyConfig.widevine.cgms` | String | Optional | Security (CGMS-A) level for analog output - `CGMS_NONE` (default) \| `COPY_FREE` \| `COPY_ONCE` \| `COPY_NEVER` | | `drmPolicyConfig.widevine.disableAnalogOutputYn` | Boolean | Optional | Whether analog output is blocked - `true` \| `false` (default) - `true`: Block - `false`: Allow | | `drmPolicyConfig.widevine.hdcpSrmRule` | String | Optional | Whether content can be played when an HDCP device fails to process System Renewability Message (SRM) - `HDCP_SRM_RULE_NONE` (default) \| `CURRENT_SRM` - `HDCP_SRM_RULE_NONE`: Play the track. - `CURRENT_SRM`: The track can't be played. | | `drmPolicyConfig.widevine.deviceRevocation` | Boolean | Optional | Whether to allow license issuance for revoked (withdrawn from Widevine support) Android devices - `true` \| `false` (default) - `true`: Allow - `false`: Not allow | | `drmPolicyConfig.playready` | Object | Required | PlayReady type policy | | `drmPolicyConfig.playready.useYn` | Boolean | Required | PlayReady policy usage - `true` \| `false` - `true`: Enable - `false`: Disable | | `drmPolicyConfig.playready.securityLevel` | Integer | Optional | PlayReady security level value - `150` (default) \| `2000` \| `3000` - Set to `3000` when applying hardware DRM. - Higher numbers indicate a higher level of security. | | `drmPolicyConfig.playready.digitalVideoProtectionLevel` | Integer | Optional | Security level for digital video output - `100` (default) \| `250` \| `270` \| `300` \| `301` - Higher numbers indicate a higher level of security. | | `drmPolicyConfig.playready.analogVideoProtectionLevel` | Integer | Optional | Security level for analog video output - `100` (default) \| `150` \| `200` \| `201` - Higher numbers indicate a higher level of security. | | `drmPolicyConfig.playready.digitalAudioProtectionLevel` | Integer | Optional | Security level for digital audio output - `100` (default) \| `250` \| `300` \| `301` - Higher numbers indicate a higher level of security. | | `drmPolicyConfig.playready.hdcpUseYn` | Boolean | Optional | Whether to require Type 1 (HDCP V2.2 or later) when HDCP is applied according to output protection level (OPL) settings - `true` \| `false` (default) - `true`: Type 1 (HDCP 2.2 or later) required - `false`: HDCP not required - When set to `true`, only devices supporting HDCP 2.2 or later can play content. | | `drmPolicyConfig.fairplay` | Object | Required | FairPlay Streaming type policy | | `drmPolicyConfig.fairplay.useYn` | Boolean | Required | FairPlay Streaming policy usage - `true` \| `false` - `true`: Enable - `false`: Disable | | `drmPolicyConfig.fairplay.hdcpEnforcement` | String | Optional | Whether HDCP is applied and HDCP version - `-1` (default) \| `0` \| `1` - `-1`: HDCP not applied - `0`: HDCP Type 0 (regardless of version) - `1`: HDCP Type 1 (2.2 or later required) | | `drmPolicyConfig.fairplay.allowAirPlay` | Boolean | Optional | Whether to allow AirPlay - `true` (default) \| `false` - `true`: Allow - `false`: Not allow | | `drmPolicyConfig.fairplay.allowAvAdaptor` | Boolean | Optional | Whether output is permitted via digital AV adapter - `true` (default) \| `false` - `true`: Allow - `false`: Not allow | ### Request example The request example is as follows: ``` curl --location --request PUT 'https://multi-drm.apigw.ntruss.com/api/v1/policy/82' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'Content-Type: application/json' \ --header 'x-ncp-region_code: KR' \ --data '{ "policyName": "myPolicy", "persistent": true, "rentalDuration": 10, "playbackDuration": 10, "drmPolicyConfig": { "widevine": { "useYn": true, "securityLevel": 1, "hdcp": "HDCP_NONE", "cgms": "CGMS_NONE", "disableAnalogOutputYn": true, "hdcpSrmRule": "HDCP_SRM_RULE_NONE", "deviceRevocation": true }, "playready": { "useYn": true, "securityLevel": 150, "digitalVideoProtectionLevel": 100, "analogVideoProtectionLevel": 100, "digitalAudioProtectionLevel": 100, "hdcpUseYn": true }, "fairplay": { "useYn": true, "hdcpEnforcement": -1, "allowAirPlay": true, "allowAvAdaptor": true } } }' ``` ## Response This section describes the response format. ### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `success` | Boolean | - | API processing result - `true` \| `false` - `true`: Succeeded - `false`: Failed | | `content` | Object | - | Policy information | | `content.disabled` | Boolean | - | Whether Sub Account is disabled - `true` \| `false` - `true`: Disabled - `false`: Enabled | | `content.policyId` | Integer | - | DRM policy ID - `0`: Basic | | `content.policyName` | String | - | Policy name | | `content.policyStatus` | String | - | Policy status - `CREATED` \| `CREATING` \| `READY` \| `DELETED` \| `UPDATING` - `CREATED`: Creation completed - `CREATING`: Creating - `READY`: Available - `DELETED`: Deletion completed - `UPDATING`: Updating | | `content.policyCreatedTime` | Integer | - | Policy creation date and time (millisecond) - Unix timestamp format | | `content.policyUpdateTime` | Integer | - | Policy modification date and time (millisecond) - Unix timestamp format | | `content.persistent` | Boolean | - | Whether to save the license offline - `true` \| `false` - `true`: Keep the license. - `false`: Remove the license after playback (streaming). | | `content.rentalDuration` | Integer | - | Validity period (second) after offline license acquisition during which content must be played for the first time | | `content.playbackDuration` | Integer | - | License validity period (seconds) from the initial playback start time of the content | | `content.drmPolicyConfig` | Object | - | Policy settings by DRM type | | `content.drmPolicyConfig.wideVine` | Object | - | Widevine type policy | | `content.drmPolicyConfig.wideVine.useYn` | Boolean | - | Widevine policy usage - `true` \| `false` - `true`: Enable - `false`: Disable | | `content.drmPolicyConfig.wideVine.securityLevel` | Integer | - | Widevine security level value - `1` \| `2` \| `3` \| `4` \| `5` - `1`: SW_SECURE_CRYPTO - `2`: SW_SECURE_DECODE - `3`: HW_SECURE_CRYPTO - `4`: HW_SECURE_DECODE - `5`: HW_SECURE_ALL (playable only on Widevine L1 devices) - Higher numbers indicate a higher level of security. | | `content.drmPolicyConfig.wideVine.hdcp` | String | - | Security (HDCP) level for digital output - `HDCP_NONE` \| `HDCP_V1` \| `HDCP_V2` \| `HDCP_V2_1` \| `HDCP_V2_2` \| `HDCP_NO_DIGITAL_OUTPUT` - Higher versions indicate a higher level of security. | | `content.drmPolicyConfig.wideVine.cgms` | String | - | Security (CGMS-A) level for analog output - `CGMS_NONE` \| `COPY_FREE` \| `COPY_ONCE` \| `COPY_NEVER` | | `content.drmPolicyConfig.wideVine.disableAnalogOutputYn` | Boolean | - | Whether analog output is blocked - `true` \| `false` - `true`: Block - `false`: Allow | | `content.drmPolicyConfig.wideVine.hdcpSrmRule` | String | - | Whether content can be played when an HDCP device fails to process System Renewability Message (SRM) - `HDCP_SRM_RULE_NONE` \| `CURRENT_SRM` - `HDCP_SRM_RULE_NONE`: Play the track. - `CURRENT_SRM`: The track can't be played. | | `content.drmPolicyConfig.wideVine.deviceRevocation` | Boolean | - | Whether to allow license issuance for revoked (withdrawn from Widevine support) Android devices - `true` \| `false` - `true`: Allow - `false`: Not allow | | `content.drmPolicyConfig.playReady` | Object | - | PlayReady type policy | | `content.drmPolicyConfig.playReady.useYn` | Boolean | - | PlayReady policy usage - `true` \| `false` - `true`: Enable - `false`: Disable | | `content.drmPolicyConfig.playReady.securityLevel` | Integer | - | PlayReady security level value - `150` \| `2000` \| `3000` - Set to `3000` when applying hardware DRM. - Higher numbers indicate a higher level of security. | | `content.drmPolicyConfig.playReady.digitalVideoProtectionLevel` | Integer | - | Security level for digital video output - `100` \| `250` \| `270` \| `300` \| `301` - Higher numbers indicate a higher level of security. | | `content.drmPolicyConfig.playReady.analogVideoProtectionLevel` | Integer | - | Security level for analog video output - `100` \| `150` \| `200` \| `201` - Higher numbers indicate a higher level of security. | | `content.drmPolicyConfig.playReady.digitalAudioProtectionLevel` | Integer | - | Security level for digital audio output - `100` \| `250` \| `300` \| `301` - Higher numbers indicate a higher level of security. | | `content.drmPolicyConfig.playReady.hdcpUseYn` | Boolean | - | Whether to require Type 1 (HDCP V2.2 or later) when HDCP is applied according to output protection level (OPL) settings - `true` \| `false` - `true`: Type 1 (HDCP 2.2 or later) required - `false`: HDCP not required - When set to `true`, only devices supporting HDCP 2.2 or later can play content. | | `content.drmPolicyConfig.fairPlay` | Object | - | FairPlay Streaming type policy | | `content.drmPolicyConfig.fairPlay.useYn` | Boolean | - | FairPlay Streaming policy usage - `true` \| `false` - `true`: Enable - `false`: Disable | | `content.drmPolicyConfig.fairPlay.hdcpEnforcement` | String | - | Whether HDCP is applied and HDCP version - `-1` \| `0` \| `1` - `-1`: HDCP not applied - `0`: HDCP Type 0 (regardless of version) - `1`: HDCP Type 1 (2.2 or later required) | | `content.drmPolicyConfig.fairPlay.allowAirPlay` | Boolean | - | Whether to allow AirPlay - `true` \| `false` - `true`: Allow - `false`: Not allow | | `content.drmPolicyConfig.fairPlay.allowAvAdaptor` | Boolean | - | Whether output is permitted via digital AV adapter - `true` \| `false` - `true`: Allow - `false`: Not allow | ### Response status codes For information about the HTTP status codes common to all One Click Multi DRM APIs, see [One Click Multi DRM response status codes](/docs/en/one-click-multi-drm-api-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). ### Response example The response example is as follows: ``` { "success": true, "content": { "disabled": false, "policyId": 82, "policyName": "myPolicy", "policyStatus": "CREATED", "policyCreatedTime": 1757896403844, "policyUpdateTime": 1757897494407, "persistent": true, "rentalDuration": 10, "playbackDuration": 10, "drmPolicyConfig": { "wideVine": { "useYn": true, "securityLevel": 1, "hdcp": "HDCP_NONE", "cgms": "CGMS_NONE", "disableAnalogOutputYn": true, "hdcpSrmRule": "HDCP_SRM_RULE_NONE", "deviceRevocation": true }, "playReady": { "useYn": true, "securityLevel": 150, "digitalVideoProtectionLevel": 100, "analogVideoProtectionLevel": 100, "digitalAudioProtectionLevel": 100, "hdcpUseYn": true }, "fairPlay": { "useYn": true, "hdcpEnforcement": -1, "allowAirPlay": true, "allowAvAdaptor": true } } } } ```