Edit policy

Prev Next

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.

Request path parameters

You can use the following path parameters with your request:

Field Type Required Description
policyId Integer Required DRM policy ID

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 to 20 characters using a combination of English letters, numbers, and the 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 response status codes common to all One Click Multi DRM APIs, see One Click Multi DRM response status codes.

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
            }
        }
    }
}