Create policy
- Print
- PDF
Create policy
- Print
- PDF
Article summary
Did you find this summary helpful?
Thank you for your feedback
An API that creates the policy required to issue the One Click Multi DRM license.
Note
- Through the policy detail settings, you can apply playback and security level policies to the DRM license according to the DRM type.
- Through the policy detail settings, you can set policies regarding playback, such as "persistent" status configuration.
- For content whose tracks are divided according to resolutions, the playback policy is applied the same for all tracks.
- Currently, the One Click Multi DRM product only supports single key license. We plan to support multi-track licenses in the future.
- For detailed policy options regarding playbacks provided by the One Click Multi DRM product, see Pallycon playback policy's detailed options.
- For detailed policy options regarding the security provided by the One Click Multi DRM product, see Pallycon security policy's detailed options.
- The detailed policy settings provided by the One Click Multi DRM product supports the same options provided by Pallycon DRM.
For details on the supported security level according to the DRM type, check the support status of the individual terminal device.
Requests
POST https://multi-drm.apigw.ntruss.com/api/v1/policy
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_SEURE_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
POST /api/v1/policy
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
# case 1. set all drmType
{
"drmPolicyConfig": {
"fairplay": {
"allowAirPlay": true,
"allowAvAdaptor": true,
"hdcpEnforcement": "-1",
"useYn": true
},
"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
}
POST /api/v1/policy
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
# case 2. set drm policy without fairPlay
{
"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
### case 1.
{
"success": true,
"content": {
"policyId": 122,
"policyName": "mySamplePolicy",
"policyStatus": "CREATED",
"policyCreatedTime": 1700479924517,
"policyUpdateTime": 1700479924526,
"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": true,
"hdcpEnforcement": -1,
"allowAirPlay": true,
"allowAvAdaptor": true
}
}
}
}
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
### case 2.
{
"success": true,
"content": {
"policyId": 123,
"policyName": "mySamplePolicy",
"policyStatus": "CREATED",
"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
}
}
}
}
Was this article helpful?