An API that edits the settings of the policy required to issue the One Click Multi DRM license.
Note
The following are the precautions for editing policies:
- If you edit the policy during its use with the site activated, the license issuance playback may be affected.
- If possible, we recommend you edit the policy after turning the site off.
Requests
PUT https://multi-drm.apigw.ntruss.com/api/v1/{policyId}
Request headers
Header name | Requirement status | Description |
---|---|---|
x-ncp-apigw-timestamp | YES | This is the number of milliseconds that have elapsed since January 1, 1970 00:00:00 (UTC) If the time difference compared to the API Gateway server is 5 minutes or longer, then the request is considered invalid x-ncp-apigw-timestamp:{Timestamp} |
x-ncp-iam-access-key | YES | Value of access key ID issued in the NAVER Cloud Platform portalx-ncp-iam-access-key:{Sub Account Access Key} |
x-ncp-apigw-signature-v2 | YES | Signature encrypted with the access key ID value and secret keyx-ncp-apigw-signature-v2:{API Gateway Signature} |
Content-Type | YES | Specifies the request body content type as application/jsonContent-Type: application/json |
x-ncp-region_code | YES | Region code (KR) |
Request body
Field name | Type | Requirement status | Restriction | Description | |
---|---|---|---|---|---|
policyName | String | Y | |||
persistent | Boolean | Y | Default: false | Offline license storage status true: maintain license, false: remove license after playback (streaming) |
|
rentalDuration | Integer | Y | Default: 0 0-2,147,483,647 |
Settings for using offline rental scenario ("persistent: true" must be set when using the option) Valid period of the license from the download to the first playback time (unit: second(s)) |
|
playbackDuration | Integer | Y | Default value: 0 0-2,147,483,647 |
Valid period of the license after the first playback (unit: second(s)) | |
drmPolicyConfig | Object[Array] | Y | Detailed policy setting by drm type | ||
drmPolicyConfig{}.wideVine | Object | N | Widevine's policy | ||
drmPolicyConfig{}.wideVine{}.useYn | Boolean | N | Whether to apply Widevine's policy settings | ||
drmPolicyConfig{}.wideVine{}.securityLevel | Integer | N | 1:SW_SECURE_CRYPTO 2:SW_SECURE_DECODE 3:HW_SECURE_CRYPTO 4:HW_SECURE_DECODE 5:HW_SECURE_ALL |
Widevine security level setting for the track 1:SW_SECURE_CRYPTO 2:SW_SECURE_DECODE 3:HW_SECURE_CRYPTO 4:HW_SECURE_DECODE If set to 5:HW_SECURE_ALL - 5, playback is only available on Widevine L1 device |
|
drmPolicyConfig{}.wideVine{}.hdcp | String | N | HDCP_NONE HDCP_V1 HDCP_V2 HDCP_V2_1 HDCP_V2_2 HDCP_NO_DIGITAL_OUTPUT |
Digital output security (HDCP) level setting input value: 1 of "HDCP_NONE," "HDCP_V1," "HDCP_V2," "HDCP_V2_1," "HDCP_V2_2," and "HDCP_NO_DIGITAL_OUTPUT" | |
drmPolicyConfig{}.wideVine{}.cgms | String | N | CGMS_NONE COPY_FREE COPY_ONCE COPY_NEVER |
Analog output security (CGMS-A) level setting - input value: 1 of "CGMS_NONE," "COPY_FREE," "COPY_ONCE," and "COPY_NEVER," | |
drmPolicyConfig{}.wideVine{}.disableAnalogOutputYn | Boolean | N | Whether analog output is allowed (false: analog output allowed) | ||
drmPolicyConfig{}.wideVine{}.hdcpSrmRule | String | N | HDCP_SRM_RULE_NONE CURRENT_SRM |
If the HDCP device cannot process the system renewability message (SRM), sets the track's playback status. CURRENT_SRM: Playback of the track not available on devices where the latest SRM cannot be applied. Input value: 1 of "HDCP_SRM_RULE_NONE" and "CURRENT_SRM" |
|
drmPolicyConfig{}.wideVine{}.deviceRevocation | Boolean | N | Whether license issuance is allowed for revoked Android devices (withdrawn from Widevine's support targets) (default value: issuance not allowed) | ||
drmConfig{}.playReady | Object | N | PlayReady's policy | ||
drmConfig{}.playReady{}.useYn | Boolean | N | Whether to apply PlayReady's policy settings | ||
drmConfig{}.playReady{}.securityLevel | Integer | N | 150 2000 3000 |
PlayReady security level for the track (150, 2000, 3000). When hardware DRM is applied, set to 3000. | |
drmConfig{}.playReady{}.digitalVideoProtectionLevel | Integer | N | 100 250 270 300 301 |
Security level setting for digital video output (100, 250, 270, 300, 301) | |
drmConfig{}.playReady{}.analogVideoProtectionLevel | Integer | N | 100 150 200 201 |
Security level setting for analog video output (100, 150, 200, 201) | |
drmConfig{}.playReady{}.digitalAudioProtectionLevel | Integer | N | 100 250 300 301 |
Security level setting for digital audio output (100, 250, 300, 301) | |
drmConfig{}.playReady{}.hdcpUseYn | Boolean | N | Sets whether type 1 (HDCP V2.2 and above) is required when HDCP is applied according to OPL settings. (when set to "true," HDCP 2.2 or above is required) | ||
drmConfig{}.fairPlay | Object | N | FairPlay Streaming's policy | ||
drmConfig{}.fairPlay{}.useYn | Boolean | Y | Whether to apply FairPlay Streaming's policy settings | ||
drmConfig{}.fairPlay{}.hdcpEnforcement | String | N | -1 (HDCP not applied) 0 (HDCP Type 0 (regardless of version)) 1 (HDCP Type 1 (2.2 or above required)) |
HDCP application status and HDCP version for the track -1: HDCP not applied 0: HDCP Type 0 (regardless of version) 1: HDCP Type 1 (2.2 or above required) |
|
drmConfig{}.fairPlay{}.allowAirPlay | Boolean | N | Whether to allow AirPlay | ||
drmConfig{}.fairPlay{}.allowAvAdaptor | Boolean | N | Whether to allow output through digital AV adapter |
Response
Field name | Type | Requirement status | Restriction | Description |
---|---|---|---|---|
policyName | String | Y | ||
policyStatus | String | Y | CREATING READY DELETED UPDATING |
Policy status |
policyId | Integer | Y | default Policy : 0 | Created PolicyId |
policyCreatedTime | Timestamp | N | Policy created time | |
policyUpdateTime | Timestamp | N | Policy setting change time | |
persistent | Boolean | Y | Default: false | Offline license storage status true: maintain license, false: remove license after playback (streaming) |
rentalDuration | Integer | Y | Default: 0 0-2,147,483,647 |
Settings for using offline rental scenario ("persistent: true" must be set when using the option) Valid period of the license from the download to the first playback time (unit: second(s)) |
playbackDuration | Integer | Y | Default value: 0 0-2,147,483,647 |
Valid period of the license after the first playback (unit: second(s)) |
drmPolicyConfig | Object[Array] | Y | Detailed policy setting by drm type | |
drmPolicyConfig{}.wideVine | Object | N | Widevine's policy | |
drmPolicyConfig{}.wideVine{}.useYn | Boolean | N | Whether to apply Widevine's policy settings | |
drmPolicyConfig{}.wideVine{}.securityLevel | Integer | N | 1:SW_SECURE_CRYPTO 2:SW_SECURE_DECODE 3:HW_SECURE_CRYPTO 4:HW_SECURE_DECODE 5:HW_SECURE_ALL |
Widevine security level setting for the track 1:SW_SECURE_CRYPTO 2:SW_SECURE_DECODE 3:HW_SECURE_CRYPTO 4:HW_SECURE_DECODE If set to 5:HW_SECURE_ALL - 5, playback is only available on Widevine L1 device |
drmPolicyConfig{}.wideVine{}.hdcp | String | N | HDCP_NONE HDCP_V1 HDCP_V2 HDCP_V2_1 HDCP_V2_2 HDCP_NO_DIGITAL_OUTPUT |
Digital output security (HDCP) level setting input value: 1 of "HDCP_NONE," "HDCP_V1," "HDCP_V2," "HDCP_V2_1," "HDCP_V2_2," and "HDCP_NO_DIGITAL_OUTPUT" |
drmPolicyConfig{}.wideVine{}.cgms | String | N | CGMS_NONE COPY_FREE COPY_ONCE COPY_NEVER |
Analog output security (CGMS-A) level setting - input value: 1 of "CGMS_NONE," "COPY_FREE," "COPY_ONCE," and "COPY_NEVER," |
drmPolicyConfig{}.wideVine{}.disableAnalogOutputYn | Boolean | N | Whether analog output is allowed (false: analog output allowed) | |
drmPolicyConfig{}.wideVine{}.hdcpSrmRule | String | N | HDCP_SRM_RULE_NONE CURRENT_SRM |
If the HDCP device cannot process the system renewability message (SRM), sets the track's playback status. CURRENT_SRM: Playback of the track not available on devices where the latest SRM cannot be applied. Input value: 1 of "HDCP_SRM_RULE_NONE" and "CURRENT_SRM" |
drmPolicyConfig{}.wideVine{}.deviceRevocation | Boolean | N | Whether license issuance is allowed for revoked Android devices (withdrawn from Widevine's support targets) (default value: issuance not allowed) | |
drmConfig{}.playReady | Object | N | PlayReady's policy | |
drmConfig{}.playReady{}.useYn | Boolean | N | Whether to apply PlayReady's policy settings | |
drmConfig{}.playReady{}.securityLevel | Integer | N | 150 2000 3000 |
PlayReady security level for the track 150, 2000, 3000 When hardware DRM is applied, set to 3000. |
drmConfig{}.playReady{}.digitalVideoProtectionLevel | Integer | N | 100 250 270 300 301 |
Security level setting for digital video output (100, 250, 270, 300, 301) |
drmConfig{}.playReady{}.analogVideoProtectionLevel | Integer | N | 100 150 200 201 |
Security level setting for analog video output (100, 150, 200, 201) |
drmConfig{}.playReady{}.digitalAudioProtectionLevel | Integer | N | 100 250 300 301 |
Security level setting for digital audio output (100, 250, 300, 301) |
drmConfig{}.playReady{}.hdcpUseYn | Boolean | N | Sets whether type 1 (HDCP V2.2 and above) is required when HDCP is applied according to OPL settings (when set to "true," HDCP 2.2 or above is required) |
|
drmConfig{}.fairPlay | Object | N | FairPlay Streaming's policy | |
drmConfig{}.fairPlay{}.useYn | Boolean | Y | Whether to apply FairPlay Streaming's policy settings | |
drmConfig{}.fairPlay{}.hdcpEnforcement | String | N | -1 (HDCP not applied) 0 (HDCP Type 0 (regardless of version)) 1 (HDCP Type 1 (2.2 or above required)) |
HDCP application status and HDCP version for the track -1: HDCP not applied 0: HDCP Type 0 (regardless of version) 1: HDCP Type 1 (2.2 or above required) |
drmConfig{}.fairPlay{}.allowAirPlay | Boolean | N | Whether to allow AirPlay | |
drmConfig{}.fairPlay{}.allowAvAdaptor | Boolean | N | Whether to allow output through digital AV adapter |
Examples
Request example
PUT /api/v1/policy/1
HOST: multi-drm.apigw.ntruss.com
Content-Type: application/json
x-ncp-apigw-timestamp:1521787414578
x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
x-ncp-region_code:KR
{
"drmPolicyConfig": {
"fairplay": {
"useYn": false
},
"playready": {
"analogVideoProtectionLevel": "100",
"digitalAudioProtectionLevel": "100",
"digitalVideoProtectionLevel": "100",
"hdcpUseYn": true,
"securityLevel": "150",
"useYn": true
},
"widevine": {
"cgms": "CGMS_NONE",
"deviceRevocation": true,
"disableAnalogOutputYn": true,
"hdcp": "HDCP_NONE",
"hdcpSrmRule": "HDCP_SRM_RULE_NONE",
"securityLevel": "1",
"useYn": true
}
},
"persistent": true,
"playbackDuration": 0,
"policyName": "mySamplePolicy",
"rentalDuration": 0
}
Response example
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 20 Nov 2023 19:53:32 GMT
Content-Type: application/json;charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4
{
"success": true,
"content": {
"policyId": 123,
"policyName": "mySamplePolicy",
"policyStatus": "UPDATING",
"policyCreatedTime": 1700480181622,
"policyUpdateTime": 1700480181634,
"persistent": true,
"rentalDuration": 0,
"playbackDuration": 0,
"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": false
}
}
}
}