Viewer Based Analytics
You can pass the userId
in otp to have viewer based analytics. This parameter will be used to provide user-specific information such as
- Identifying password sharing based on access duration
- Folder-wise tracking of video usage
- Tracking source of attempted piracy
- Understanding watch patterns better for your videos
Selecting an identifierβ
The userId can be the original primary key from your existing database. Its length must not exceed 36 characters and can only contain alphanumeric and allowed characters( -
hyphens and _
underscores). We recommend using something that you can easily retrieve from your database. You should not use identifiable information such as email or phone number.
The following extra information will be added to the POST object send to the OTP generation API.
{
"userId":"XXXXXX",
}
Sample Codeβ
The sample videoID is 1234567890
and the API Secret Key is a1b2c3d4e5
. The user id for OTP is set to test id in the sample code.
The sample code only passes the OTP user id as parameter.
- CURL
- NODE
- PHP
- C#
- Python
- Ruby
curl -X POST \
https://dev.vdocipher.com/api/videos/1234567890/otp \
-H 'Accept: application/json' \
-H 'Authorization: Apisecret a1b2c3d4e5' \
-H 'Content-Type: application/json' \
-d '{
"ttl":300,
"userId":"a12v-b34s-cef3"
}'
var request = require('request');
var options = {
method: 'POST',
url: 'https://dev.vdocipher.com/api/videos/1234567890/otp',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Apisecret a1b2c3d4e5',
},
body: {ttl: 300, userId: 'a12v-b34s-cef3'},
json: true,
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://dev.vdocipher.com/api/videos/1234567890/otp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
"ttl" => 300,
"userId" => "a12v-b34s-cef3,
]),
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
"Authorization: Apisecret a1b2c3d4e5",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var client = new RestClient("https://dev.vdocipher.com/api/videos/1234567890/otp");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Apisecret a1b2c3d4e5");
request.AddParameter("undefined", "{\n\t\"ttl\":300,\n\t\"userId\":a12v-b34s-cef3\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import requests
import json
url = "https://dev.vdocipher.com/api/videos/1234567890/otp"
payload = json.dumps({'ttl': 300,'userId': "a12v-b34s-cef3})
headers = {
'Authorization': "Apisecret a1b2c3d4e5",
'Content-Type': "application/json",
'Accept': "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'json'
require 'net/http'
url = URI("https://dev.vdocipher.com/api/videos/1234567890/otp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Apisecret a1b2c3d4e5'
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request.body = ({:ttl => 300, :userId => "a12v-b34s-cef3"}).to_json
response = http.request(request)
puts response.read_body