Skip to content

DRM Blacklist Management Guide

DoveRunner Multi-DRM service provides DRM Blacklist Management feature that allows OTT platforms to block issuance of DRM licenses to users or client devices suspected of piracy or unauthorized content use. Customers can register, view, and update the IDs of users or devices to be blocked via HTTP API or the Blacklist Management section of the DoveRunner Console web UI.

sequenceDiagram
    participant A as OTT User
(Client Device) participant B as OTT Platform participant C as DoveRunner Server A ->> C: Request DRM License (Non-blacklisted) C ->> C: Verify License Token C ->> A: Issue DRM License A ->> A: Play Content opt Blocking via Blacklist B ->> C: Register illegal user or device ID C ->> C: Store the ID in Blacklist DB A ->> C: Request DRM License (Blacklisted) C ->> C: Verify Token and Check Blacklist C -->> A: Deny License Issuance A -->> A: Cannot Play Content end

You can register, view, and change the status of a blocked user ID or device ID on the Blacklist Management screen of DoveRunner Console.

After logging in to DoveRunner Console, go to Multi DRM > Blacklist Management > User Blacklist menu, and you can manage the blacklist for user ID on the following screen.

User Blacklist Management

On the User Blacklist screen, you can apply various search criteria to view the user IDs and current status of blacklisted users.

Click the Register button on the User Blacklist screen to go to the Register User ID screen as shown below.

Register User ID

If you are entering multiple IDs, you can add entries with the + button above the Register button, and reduce entries by clicking the trash can button to the right of each entry.

You can change the status (blocked or unblocked) for each blacklisted user ID. By checking the checkbox to the left of the corresponding entry in the list, the Change Status button will switch to Block or Unblock depending on the current status, and clicking it will change the block status of the selected target.

After logging in to DoveRunner Console, go to Multi DRM > Blacklist Management > Device Blacklist menu and you can manage the blacklist for device ID on the following screen.

Device Blacklist Management

On the Device Blacklist screen, you can apply various search criteria to view the device ID, DRM type, and current status of blacklisted devices.

Click the Register button on the Device Blacklist screen to go to the Device ID Registration screen as shown below.

Register Device ID

For each item you want to register, select the DRM type that corresponds to the device ID and enter the value of the device ID you want to block. If you enter multiple IDs, you can add entries with the + button above the Register button, and reduce entries by clicking the trash can button to the right of each entry.

You can change the status (blocked or unblocked) for each blacklisted device ID. By checking the checkbox to the left of the corresponding entry in the list, the Change Status button will switch to Block or Unblock depending on the current status, and clicking it will change the block status of the selected target.

In addition to the Console UI, the DRM Blacklist feature can also be managed via HTTP API. If you need an automated integration with your system, please refer to the guide below to implement an API-based integration.

DoveRunner Service API uses JSON Web Token(JWT) for secure transmission of information.

You can create and test the token using an online JWT tool or a server-side programming language.

Service API JWT Specification

The token should be signed using an account-specific secret key with HMAC SHA256(HS256) algorithm. Please create a ticket on Helpdesk to get your Service API Key and the account seq value used in the token payload.

As shown on the above image, an encoded JWT token has the following format:

base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + HS256 signature value

The token uses json payload data as below example:

{
"sub" : "PallyConAPI",
"aud" : "INKA",
"iss" : "PallyCon",
"account_id" : "Your DoveRunner account ID",
"account_seq": "Your DoveRunner account SEQ",
"exp": 1583191411
}
KeyRequiredValue
subYFixed value as PallyConAPI
audYFixed value as INKA
issYFixed value as PallyCon
account_idYYour account ID of DoveRunner service
account_seqYYour DoveRunner account’s SEQ (can be requested via Helpdesk ticket)
expNExpiration date of the token (type: date number)

SEQ is a key value used to index key data in DoveRunner service API.

Blacklist APIs commonly require the following request data.

NameTypeDescription
AuthorizationHeader / StringJWT token for API authentication. Added to HTTP headers.
api_codeURL Param / StringCode to separate APIs by functionality. Added as a URL parameter.

When calling the DoveRunner Service API, you’ll get one of the HTTP status codes listed below.

HTTP Status CodeDescription
401JWT Token specification is incorrect or the user information cannot be found
403Do not have permission for the called API
200HTTP communication success

When the HTTP status code is 200 (HTTP communication success), you’ll get the below response data in JSON format.

KeyTypeValue
error_codeString0000: Success / other numbers: failure
error_messageStringShows the error message on failed request
dataJSONResult of the successful API request

This API retrieves a list of blacklisted user IDs.

ParameterFormatRequiredDescription
user_idStringNSpecific user ID to retrieve the data
status_codeStringNStatus code (BL000: Blocked, BL001: Unblocked) Default: all
fromStringNStart date of lookup period (format: YYYY-MM-DD) By date of registration (GMT)
toStringNEnd date of lookup period (format: YYYY-MM-DD) By date of registration (GMT)
time_zoneStringNSet the time zone used for search (format: +/-hh:mm) default: +00:00
page_unitIntNNumber of search result (default:25, max: 1000)
page_indexIntNIndex of result page when the results are more than page_unit
  • Example Request
GET /api/v2/drm/blacklist/user/{siteId}?api_code=UA013001100&user_id=testUser&from=2024-04-15&to=2024-04-17&page_index=1&page_unit=10&site_id=DEMO&status_code=BL000&time_zone=%2B09%3A00 HTTP/1.1
Authorization: Bearer valid_token
Content-Type: application/json;charset=UTF-8
Host: service.pallycon.com
NameTypeDescription
black_listJson ArrayList of user IDs
user_idStringUser ID registered in the blacklist
status_codeStringStatus code (BL000: Blocked, BL001: Unblocked)
reg_dateStringRegistration date (GMT)
update_dateStringUpdated date (GMT)
  • Example Response
{
"black_list" : [
{
"user_id" : "test",
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
{
"user_id" : "test",
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
],
total_count : 2,
error_code: "0000",
error_message: "Success."
}

This API registers a user ID in the Blacklist.

{
"user_id_list" : [
"test", "test2"
]
}
ParameterFormatRequiredDescription
user_id_listString ArrayYList of user ID to register in Blacklist
{
"error_code" : "0000",
"error_message" : "Success"
}

This API changes the block/unblock status of a blacklisted user ID.

{
"user_id_list" : [
"test", "test2"
],
"status_code" : "BL000"
}
ParameterFormatRequiredDescription
user_id_listString ArrayYList of user ID to update status
status_codeStringYStatus to apply (BL000: Blocked, BL001: Unblocked)
{
"error_code" : "0000",
"error_message" : "Success"
}

This API retrieves a list of blacklisted device IDs.

ParameterFormatRequiredDescription
device_idStringNDevice ID to retrieve
status_codeStringNStatus code (BL000: Blocked, BL001: Unblocked) Default: all
fromStringNStart date of lookup period (format: YYYY-MM-DD) By date of registration (GMT)
toStringNEnd date of lookup period (format: YYYY-MM-DD) By date of registration (GMT)
time_zoneStringNSet the time zone used for search (format: +/-hh:mm) default: +00:00
page_unitIntNNumber of search result (default:25, max: 1000)
page_indexIntNIndex of result page when the results are more than page_unit
  • Example Request
GET /api/v2/drm/blacklist/device/{siteId}?api_code=UA013002100&device_id=device1&from=2024-04-15&to=2024-04-17&page_index=1&page_unit=10&site_id=DEMO&status_code=BL000&time_zone=%2B09%3A00&dr HTTP/1.1
Authorization: Bearer valid_token
Content-Type: application/json;charset=UTF-8
Host: service.pallycon.com
NameFormatDescription
black_listJson ArrayList of retrieved devices
device_idStringDevice ID registered in blacklist
drm_typeStringDRM type of the device (widevine / playready / fairplay / ncg)
status_codeStringStatus code (BL000: Blocked, BL001: Unblocked)
reg_dateStringRegistration date (GMT)
update_dateStringUpdated date (GMT)
  • Example Response
{
"black_list" : [
{
"device_id" : "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type" : "widevine",
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
{
"device_id" : "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type" : "widevine"
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
],
total_count : 2,
error_code: "0000",
error_message: "Success."
}

This API registers device ID(s) in the blacklist.

{
"device_id_list": [
{
"device_id": "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type": "widevine"
},
{
"device_id": "59fe7cf3e07c42e8a5de6",
"drm_type": "playready"
}
]
}
ParameterFormatRequiredDescription
device_idStringYDevice ID to register in Blacklist
drm_typeStringYDRM type of the device (playready / widevine / fairplay / ncg)
{
"error_code" : "0000",
"error_message" : "Success"
}

This API changes the block/unblock status of blacklisted device ID(s).

{
"device_id_list": [
{
"device_id": "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type": "widevine"
},
{
"device_id": "59fe7cf3e07c42e8a5de6",
"drm_type": "playready"
}
],
"status_code": "BL000"
}
ParameterFormatRequiredDescription
device_id_listJson ArrayYList of device ID to update status
device_idStringYDevice ID to change status
drm_typeStringYDRM type of the device (playready / widevine / fairplay / ncg)
status_codeStringYStatus to apply (BL000: Blocked, BL001: Unblocked)
{
"error_code" : "0000",
"error_message" : "Success"
}
Error CodeMessage
A9048Fail to Insert User IDs In Black List.
A9049Request Spec About Black List API Is Invalid.
A9050User ID Already Exists In Black List.
A9051Fail to Get User IDs From Black List.
A9052Fail to Delete User IDs In Black List.
A9053Fail to Insert Device IDs In Black List.
A9054Device ID Already Exists In Black List.
A9055Fail to Get Device IDs From Black List.
A9056Fail to Delete Device IDs In Black List.