SmartCARE API for End-User Devices
Introduction
SmartLabs SmartCARE — a software solution for monitoring the quality of services in IPTV and OTT networks. The SmartCARE solution uses a client-server architecture that includes a SmartCARE server and software components embedded in the operator’s IPTV or OTT platform.
SmartCARE can be integrated with any IPTV / OTT platform and has deep integration with SmartTUBE Service Delivery Platform.
SmartCARE clients are various equipment and systems involved in the IPTV/OTT services implementation. One of such clients are an end-user devices of the following types:
Devices with SmartTUBE app installed:
- TV set-top boxes (Linux / Android based STBs);
- Android / iOS smartphones and tablets;
- Smart TV (Samsung, LG, Android TV);
- Web browser
Other devices:
- Any 3rd-party STBs, devices or applications capable of transmitting data using the SmartCARE API.
Baselines
Interaction Between End-User Devices and SmartCARE
The collection of data on the end-user devices’ status and subscriber actions is performed through the analysis of SmartCARE API requests, proxied by the streaming servers (HTTP servers) to the SmartCARE server. Simplified interaction scheme is as follows:
Interaction between SmartCARE and end-user devices
Client data is received by the SmartCARE Server implementing the following interface: accept the request → create or update a session (data object in the SmartCARE database, see the description below) → create a minute aggregate (another one data object in the SmartCARE database) → save to DB.
Session Concept
The session is the period of interaction between the end-user device and the streaming server, limited to the following events:
Session start:
- start playing a TV channel in Live mode,
- activation of the TimeShift or Pause Live function while watching a TV channel,
- start playing a VoD content.
Session end:
- session termination with the start of a new one (for example, when switching to another channel or VoD content);
- session termination by timeout (for example, in case of sudden and long-term STB power outage);
- STB goes into standby mode.
CSI — Client Session Identifier
CSI is a unique identifier of the client session generated by the end-user device and passed to the SmartCARE with API calls. It represents a string containing the UID, device type and time on the device, separated by the “#” character and converted to hex.
A new CSI is generated under the following conditions:
- Start of New Content Unit: When a new content unit (a channel or movie) begins playback.
- Completion of Rewind: Following the user’s completion of rewinding.
- Resume after Pause: When playback is resumed after a pause.
- Initiation of New Program: When a user initiates the playback of a new program.
- Playback Position Change: If the user selects to play a program from a different position, utilizing options “Play from the Beginning” or “Play from Saved Position” when switching on a live stream.
- Playback Resumption from Standby: When playback is reactivated after the system has been in standby mode.
Please note that if playback stops and subsequently resumes for any reason, this is not classified as a new session, and a new CSI will not be generated in such instances.
UID — Unique Device Identifier
Each device at the stage of registration on the SmartTUBE SDP server is assigned a unique identifier — UID. The UID generation rules are as follows:
- Linux based STB — unique MAC address of the STB;
- Android STB — unique serial number of the device;
- Android mobile application — unique deviceID of the device;
- iOS mobile application — unique UID automatically generated at the moment of the app installation/re-installation;
- Smart TV — unique UID automatically generated at the moment of the app installation/re-installation;
- Web application — unique UID automatically generated at the moment of the app installation/re-installation (stored in the web-browser cookie). If the cookie has been deleted, the UID will be regenerated.
Interaction interface
End-user devices send data on various events, states and operational parameters to streaming servers via API method care using HTTP(S) GET or POST requests. The type of the protocol (HTTP or HTTPS) depends on the server settings.
Method Invocation
The syntax of an API method call using GET is as follows:
http://<hostname:port>/care?e=<value>&<argument1>=<value>&<argument2>=<value>&…
where
- <hostname:port> — streaming server address and port;
- e — event type on the end-user device, required argument for all API requests;
- <argument> — statistical parameter sent with the event. Each event has individual set of parameters described below;
- <value> — value of the statistical parameter;.
API call example:
Copy Code Bash (Unix Shell) |
http://fe01.some.tv:5216/care?e=KEEPALIVE&ste=LSA&cpu=23&mem=82&ip=10.100.97.162&fr=25000&bfu=0&btr=2200748&pdc=2278667&dec=13&pdec=18&ufc=1&csi=30303a31613a64303a33303a35373a396523616c626973383030302331353330373330373332&san=1797109658 |
Return Value Processing
If successful, the method returns only the HTTP response header “HTTP/1.1 200 OK” without any informative data.
Method Call Parameters
Depending on the event type, a different set of statistical parameters can be sent in the API request. Accordingly, a description of the parameters sent in requests can be found in the following sections of this Guide.
Common Parameters for all Events
All events should include the following API method call parameters:
API parameter |
Type |
Description |
e |
string |
Event type |
csi |
string |
Client session ID, required argument for all API requests. Generated at the time of the attempt to start playback. It is a string containing the UID, device type and time on the device, separated by the “#” character and converted to hex. |
ts |
string |
The time the event occurred (not the time it was sent or received by the Collector), in ms. The ISO 8601 format with time zone is used (e.g. 20230711T154956.201+0300). |
Session Start
Streaming enabling and start of streaming or error.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=SESSION_START |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
ste |
String |
Result of starting the stream / keep alive status:
|
+ |
+ |
+ |
+ |
+ |
error |
String |
Description of the stream start error (code):
|
|||||
dt |
String |
Device type |
+ |
+ |
+ |
+ |
+ |
ver |
String |
Client application / firmware version |
+ |
+ |
+ |
+ |
+ |
idc |
String |
Channel ID or content ID (movie name, local file name, YouTUBE content ID, etc.) |
+ |
+ |
+ |
+ |
+ |
url |
String |
URL of the content playlist/manifest |
+ |
+ |
+ |
+ |
+ |
idp |
Integer |
TV program ID (if the Live TV or DVR stream is played) |
+ |
+ |
+ |
+ |
+ |
btr |
Integer |
Average bitrate calculated by the video PES packet |
N/A |
N/A |
N/A |
N/A |
+ |
pbr |
Integer |
The bandwidth required for the current streams (total, in bit/sec). It takes into account the playback rate. |
+ |
+ |
+ |
+ |
+ |
dbr |
Integer |
Download bitrate |
N/A |
+ |
+ |
+ |
+ |
abr |
Integer |
Available bitrates |
+ |
+ |
+ |
+ |
+ |
bdr |
Integer |
Buffer size (sec) |
+ |
+ |
+ |
N/A |
? |
idpStart |
Unixtime |
Program start date (timestamp) |
+ |
+ |
+ |
N/A |
+ |
idpEnd |
Unixtime |
Program end date (timestamp) |
+ |
+ |
+ |
N/A |
+ |
fr |
Integer |
Number of frames (not fields) per second multiplied by 1000. For example, 24 fps is recorded as 24000 |
N/A |
N/A |
+ |
N/A |
+ |
ibr |
Integer |
NOT USED: Not sent by devices. Incoming stream bitrate |
– |
– |
– |
– |
– |
bfu |
Integer |
Loading buffer occupancy (%) |
|||||
cfg |
String |
Player configuration parameters |
+ |
Platform |
||||||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
mem |
Integer |
Memory usage at the time of session generation (%) |
Chrome |
+ |
N/A |
+ |
iOS |
Roadmap |
cpu |
Integer |
CPU usage at the time of session generation (%) |
N/A |
+ |
N/A |
+ |
N/A |
Roadmap |
wlan |
Integer |
Wi-Fi signal level at the time of session generation |
Roadmap |
Roadmap |
Roadmap |
Roadmap |
N/A |
Roadmap |
rid |
String |
MAC address of the STB or UID of the Android device |
Roadmap |
Roadmap |
Roadmap |
Roadmap |
N/A |
Roadmap |
ip |
String |
IP address of the client device |
Roadmap |
Roadmap |
Roadmap |
Roadmap |
N/A |
Roadmap |
api |
String |
The version of the API used by the client application. Depending on the value, SmartCARE determines whether the session should be plotted on the graph based on client or server data. |
+ |
+ |
+ |
App Startup
The application startup (load) duration.
API Request Parameter |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
||
e=APP_START |
Event type |
|||||
values |
Application startup (load) duration, in ms. |
Keep Alive
Message on connection activity maintaining and stream playback status sent by the end-user device to the streaming server during stream playback (usually every 5 minutes). This event is sent at intervals specified by parameter keepAliveInterval in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=KEEP_ALIVE |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
+ |
mem |
Integer |
Client device memory usage (%) |
Chrome |
+ |
N/A |
+ |
N/A |
Roadmap |
cpu |
Integer |
Client device CPU usage (%) |
N/A |
+ |
N/A |
+ |
N/A |
Roadmap |
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
ste |
String |
Result of starting the stream / keep alive status:
|
+ |
+ |
+ |
+ |
+ |
btr |
Integer |
Average bitrate calculated by the video PES packet, in bit/sec. |
N/A |
N/A |
N/A |
N/A |
+ |
bfu |
Integer |
Loading buffer occupancy (%). The ratio of the time of viewing the content by the subscriber to the time of its buffering. |
+ |
+ |
+ |
N/A |
Roadmap |
ibr |
Integer |
NOT USED: Not sent by devices. Incoming stream bitrate, in bit/sec. |
– |
– |
– |
– |
– |
mnft |
Double |
Amount of time it took to download and parse the manifest, in seconds. |
+ |
+ |
Roadmap |
N/A |
+ |
drmt |
Double |
Amount of time it took to download the first DRM key, in seconds. |
+ |
N/A |
Roadmap |
N/A |
+ |
msd |
Double |
Presentation’s max segment duration, in seconds. |
+ |
+ |
N/A |
N/A |
+ |
ll |
Double |
Time between the frame display on the screen and its output to the air by the head-end, in seconds. |
+ |
+ |
N/A |
N/A |
Roadmap |
ebw |
Integer |
Current estimated network bandwidth, in bit/sec. |
+ |
+ |
+ |
N/A |
+ |
lct |
Double |
Time spent on license requests during this session, in seconds. |
+ |
N/A |
Roadmap |
N/A |
+ |
ldl |
Double |
Time it took for the video element to have enough data to begin playback, in seconds. This is measured from the time the player’s load() function is called to the time the ‘loadeddata’ event is fired by the media element. |
+ |
+ |
N/A |
N/A |
+ |
bft |
Double |
Total time spent in a buffering state, in seconds. |
+ |
+ |
+ |
N/A |
+ |
pdc |
Integer |
Number of frames played |
+ |
+ |
+ |
N/A |
+ |
dec |
Integer |
Number of frames with errors |
+ (non-zero value) |
+ |
+ |
N/A |
Roadmap |
pdec |
Integer |
Number of frames with decoding errors |
+ (non-zero value) |
N/A |
+ |
N/A |
Roadmap |
ufc |
Integer |
Number of loading buffer underrun events (client application STVID_DATA_UNDERFLOW_EVT event) |
+ |
+ |
+ |
N/A |
+ |
pgmajfault |
Integer |
Number of memory page access errors. Note: this parameter is also sent by the device along with the VIRTUAL_MEMORY event (with the values parameter). |
N/A |
N/A |
N/A |
N/A |
Roadmap |
fr |
Integer |
Number of frames (not fields) per second multiplied by 1000. For example, 24 fps is recorded as 24000. |
N/A |
N/A |
+ |
N/A |
+ |
pbr |
Integer |
The bandwidth required for the current streams (total, in bit/sec). It takes into account the playback rate. |
|||||
dbr |
Integer |
Downloading bitrate, in bit/sec. |
|||||
abr |
Array of integers |
Available bitrates, in bit/sec. |
|||||
bdr |
Integer |
Buffer duration, in bit/sec. |
Playlist Loaded
An event that reports the completion of a playlist load.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=PLAYLIST_LOADED |
String |
Event type |
+ |
+ |
+ |
||
d |
Integer |
Playlist loading duration, ms. |
+ |
||||
s |
Integer |
Playlist size, bytes. |
+ |
||||
url |
String |
Playlist URL (optional). The value is passed if only the sendPlaylistUrl flag is set to true in the configuration file setup.json of the SmartTUBE app. |
+ |
Chunk Loaded
An event that reports the completion of a chunk load.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=CHUNK_LOADED |
String |
Event type |
+ |
+ |
+ |
||
d |
Integer |
Chunk loading duration, ms. |
+ |
+ |
+ |
||
s |
Integer |
Chunk size, bytes. |
+ |
+ |
+ |
||
bs |
Integer |
Buffer size at the moment of chunk loading started, ms. |
+ |
+ |
+ |
||
br |
Integer |
Chunk bitrate, bit/s (optional). The value is taken from the playlist. |
+ |
+ |
+ |
||
av |
String |
Chunk type: audio, video, sub, other. |
+ |
+ |
+ |
||
ebr |
Integer |
Current estimated network bandwidth, bit/s. |
+ |
+ |
+ |
||
url |
String |
Chunk URL (optional). The value is passed if only the sendChunkUrl flag is set to true in the configuration file setup.json of the SmartTUBE app. |
+ |
+ |
+ |
||
bs_stat |
Array |
Buffer statistics for av=video, in a format: [ { ts: <event occurrence timestamp (UTC without TZ)>, bs: <Buffer size, in msec> }, { ts: .., bs: .. }, … ] |
+ |
+ |
+ |
Chunk Loading Error
An event that reports an error when loading a chunk.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=CHUNK_ERROR |
String |
Event type |
+ |
||||
error |
String |
Error code |
+ |
||||
msg |
String |
Error message |
+ |
||||
url |
String |
Chunk URL |
+ |
Bitrate Changed
Switching to a stream (variant) with a different bitrate.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=BITRATE_CHANGE |
String |
Event type |
|||||
values |
Integer |
New bitrate of content viewing, bit/s |
Join Time
The time between a subscriber pressing a button on the remote control (not releasing the button) and the start of playback.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=JOIN_TIME |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
values |
Integer |
The time between a subscriber pressing a button on the remote control (not releasing the button) and the start of playback, in ms. |
+ |
+ |
+ |
+ |
+ |
Parameters that directly affect the start time of the stream |
|||||||
mnft |
Double |
Amount of time it took to download and parse the manifest, in seconds. |
+ |
+ |
+ |
Roadmap |
N/A |
drmt |
Double |
Amount of time it took to download the first DRM key, in seconds. |
+ |
N/A |
Roadmap |
N/A |
+ |
lct |
Double |
Time spent on license requests during this session, in seconds. |
+ |
N/A |
Roadmap |
N/A |
+ |
ldl |
Double |
Time it took for the video element to have enough data to begin playback, in seconds. This is measured from the time the player’s load() function is called to the time the ‘loadeddata’ event is fired by the media element. |
+ |
+ |
N/A |
N/A |
+ |
Reference parameters |
|||||||
dt |
String |
Device type |
+ |
+ |
+ |
+ |
+ |
bfu |
Integer |
Loading buffer occupancy (%). The ratio of the time of viewing the content by the subscriber to the time of its buffering. For the JOIN_TIME event, this parameter should be equal to 100%, since playback has not started yet. |
+ |
+ |
+ |
N/A |
Roadmap |
ibr |
Integer |
NOT USED: Not sent by devices. Incoming stream bitrate, in bit/sec. |
– |
– |
– |
– |
– |
msd |
Double |
Presentation’s max segment duration: The duration of the longest segment described in the first loaded MPEG-DASH playlist at the moment of session start. |
+ |
+ |
N/A |
N/A |
+ |
ll |
Double |
Time between the frame display on the screen and its output to the air by the head-end, in seconds. |
+ |
+ |
N/A |
N/A |
Roadmap |
bft |
Double |
Total time spent in a buffering state, in seconds. |
+ |
+ |
+ |
N/A |
+ |
ebw |
Double |
Current estimated network bandwidth, in bit/sec. |
+ |
+ |
+ |
N/A |
+ |
pdc |
Integer |
Number of frames played |
+ |
+ |
+ |
N/A |
+ |
pdec |
Integer |
Number of frames with decoding errors |
+ (non-zero value) |
+ |
+ |
N/A |
Roadmap |
pbr |
Integer |
The bandwidth required for the current streams (total, in bit/sec). It takes into account the playback rate. |
|||||
abr |
Array of integers |
Available bitrates, in bit/sec. |
|||||
bdr |
Integer |
Buffer size, in sec. |
|||||
btr |
Integer |
Average bitrate calculated by the video PES packet, in bit/sec. |
|||||
dbr |
Integer |
Downloading bitrate, in bit/sec. |
|||||
dec |
Integer |
Number of frames with errors |
+ (non-zero value) |
+ |
+ |
N/A |
Roadmap |
ufc |
Integer |
Number of loading buffer underrun events (client application STVID_DATA_UNDERFLOW_EVT event). For the JOIN_TIME event, this parameter should be equal to 1. |
+ |
+ |
+ |
N/A |
+ |
fr |
Integer |
Number of frames (not fields) per second multiplied by 1000. For example, 24 fps is recorded as 24000. |
|||||
url |
String |
URL of the content playlist/manifest |
+ |
+ |
+ |
+ |
+ |
Buffer Underruns
For SmartTUBE apps for large-screen devices (JUNG-based apps) from version 8.2 onwards, this event has been replaced by the e=FREEZE event. |
Starting or completion of stream buffering.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=BUF_UNDERRUNS |
String |
Event type |
|||||
values |
Integer |
Duration of stream buffering, msec. A value of 0 indicates the start of buffering. |
Load Buffer Size
Information on the load buffer state. This event is sent at intervals specified by parameters bufsizeCheckInterval and bufsizePercentsDiff in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
e=BUF_SIZE |
String |
Event type |
duration |
Float |
Duration of content available in buffer, in sec. |
vid.usage |
Integer |
Percentage of video injector buffer utilization |
aud.usage |
Integer |
Percentage of audio injector buffer utilization |
sub.usage |
Integer |
Percentage of subtitle injector buffer utilization |
inj.usage |
Integer |
Percentage of internal injector buffer utilization |
Playback Freeze
This event allows you to distinguish between three states in which streaming delay or image freezing occur:
- Pre-buffering — buffering before starting a channel or movie;
- Waiting for data by the HTMLMediaElement
- Buffer underrun — the moment the buffer is zeroed, i.e. there is no content left in the buffer.
API parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=FREEZE |
string |
Event type |
|||||
type |
string |
State in which streaming delay or image freezing occured:
|
|||||
d |
Integer |
Duration of a freeze, in ms. |
|||||
bs |
Integer |
Buffer size at the moment of event occurrence, in ms. |
Program Change
TV program change on the channel being viewed.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=PROGRAM_CHANGED |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
idc |
Integer |
Channel ID or content ID (movie name, local file name, YouTUBE content ID, etc.) |
+ |
+ |
+ |
+ |
+ |
idp |
Integer |
TV program ID (if the Live TV or DVR stream is played) |
+ |
+ |
+ |
+ |
+ |
idpStart |
Unixtime |
Program start date (timestamp) |
+ |
+ |
+ |
N/A |
+ |
idpEnd |
Unixtime |
Program end date (timestamp) |
+ |
+ |
+ |
N/A |
+ |
CPU Load
The abnormal surge of the end-user device’s CPU usage.
This event is sent at intervals specified by parameters cpuCheckInterval and cpuPercentsDiff in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=CPU_LOAD |
String |
Event type |
|||||
values |
Integer |
CPU usage value (%) |
Wi-Fi Strength
The abnormal surge of the Wi-Fi signal level on the subscriber device (only for STB with Wi-Fi module).
This event is sent at intervals specified by parameters wifiCheckInterval and wifiPercentsDiff in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=WIFI_STRENGTH |
String |
Event type |
|||||
values |
Integer |
Wi-Fi signal level change (%) |
Memory Usage
The abnormal surge of the subscriber device memory usage.
This event is sent at intervals specified by parameters memCheckInterval and memPercentsDiff in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=MEMORY |
String |
Event type |
|||||
values |
Integer |
Amount of RAM used (%) |
Standby Mode
The session goes into standby mode. This mode is activated when there is no action from the STB remote control for a certain time, as well as when the STB is turned off using the “Standby” button.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=STANDBY |
String |
Event type |
|||||
values |
String |
Standby mode. Allowable values:
|
Internet Connection Loss
Internet connection loss. The connection is checked every minute by the ping [SmartTUBE server host address] command.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=INTERNET_LOST |
String |
Event type |
|||||
values |
Integer |
Duration of the Internet connection absence, msec. The data is sent by the device after the connection on the current network interface appears. |
Authentication Attempt
Attempt to authorize the end-user device on the SmartTUBE server. The event determined by the SmartTUBE End-User Device API request /authorize? to the SmartTUBE server when a device is switching on. An event counts for any result.
Features:
- SmartTUBE v4. If an Internet connection is established, the authorization request is sent immediately; if not, after the connection is established.
- SmartTUBE v5 and later. The following condition is added to the logic described above: authorization is performed by a token that has its own expiration period. When it ends (backend setting), the reauthorization is performed.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=AUTH |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
san |
String |
Service account ID on the SmartTUBE SDP platform |
+ |
+ |
+ |
+ |
+ |
values |
String |
The result of the device authorization on the SmartTUBE server. Allowable values: SUCCESS, ERROR. |
+ |
+ |
+ |
+ |
+ |
ver |
String |
Client application / firmware version |
+ |
+ |
+ |
+ |
+ |
fver |
String |
Firmware version (for STB only) |
N/A |
+ |
|||
locationId |
Integer |
ID of the client device location (region ID in the SmartTUBE DB) |
+ |
+ |
+ |
+ |
+ |
dtId |
Integer |
ID of the device type (in the SmartTUBE DB) |
+ |
+ |
+ |
+ |
+ |
reason |
Integer |
Authorization type. Allowable values:
|
|||||
ip |
string |
IP address from which authorization was performed |
Playback Events
Playback events (play, stop, pause or rewind).
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=PLAYER_STATUS |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
values |
String |
Type of signal to the client application player. Acceptable values: play, stop, pause, rewind. |
+ |
+ |
+ |
+ |
+ |
date |
Unixtime |
Rewind start time. |
+ |
+ |
+ |
+ |
+ |
diff |
Integer |
Rewind duration, in sec. |
+ |
+ |
+ |
+ |
+ |
direction |
String |
Direction of playback. Acceptable values: fwd (forward), bwd (backward) |
+ |
+ |
+ |
N/A |
+ |
Virtual Memory
Spike in the number of RAM page access errors (with 2-fold acceleration) for the period between checks (for 1 minute by default). When this event occurs, the device often slows down or freezes.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=VIRTUAL_MEMORY |
String |
Event type |
|||||
values |
Integer |
Number of memory page access errors. Note: this parameter is also sent by the device along with the KEEP_ALIVE event (with the pgmajfault parameter). |
UI Page
Tracking user navigation through menu sections in the app’s UI.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=USER_ACTION_PAGE |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
values |
String |
Menu item path. For example: /main/tv/epg/player |
+ |
+ |
+ |
+ |
+ |
date |
Unixtime |
Event occurrence time |
+ |
+ |
+ |
+ |
+ |
Remote Control Keypress
Button presses on the remote control / keyboard.
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=USER_ACTION_KEYPRESS |
String |
Event type |
+ |
+ |
+ |
+ |
||
date |
Unixtime |
Event datetime |
+ |
+ |
+ |
+ |
N/A |
Roadmap |
values |
String |
Button / key code |
Storage Statistics
Total size and amount of free space for critical storage directories:
- cache
- data
- persistent
- sdcard
- storage/emulated/0
This event is sent at intervals specified by parameter storageCheckInterval in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=STORAGE_STATS |
String |
Event type |
+ |
|||||
cache.bytes_free |
Integer |
Free space available in the cache directory, in bytes. |
||||||
cache.bytes_total |
Integer |
Total space of the cache directory, in bytes. |
||||||
persistent.bytes_free |
Integer |
Free space available in the persistent directory, in bytes. |
||||||
persistent.bytes_total |
Integer |
Total space of the persistent directory, in bytes. |
||||||
sdcard.bytes_free |
Integer |
Free space available in the sdcard directory, in bytes. |
||||||
sdcard.bytes_total |
Integer |
Total space of the sdcard directory, in bytes. |
||||||
storage%2Femulated%2F0.bytes_free |
Integer |
Free space available in the storage/emulated/0 directory, in bytes. |
||||||
storage%2Femulated%2F0 |
Integer |
Total space of the storage/emulated/0 directory, in bytes. |
||||||
data.bytes_free |
Integer |
Free space available in the data directory, in bytes. |
Roadmap |
Roadmap |
Roadmap |
Roadmap |
N/A |
Roadmap |
data.bytes_total |
Integer |
Total space of the data directory, in bytes. |
N/A |
N/A |
N/A |
+ |
N/A |
Roadmap |
Memory Utilization Threshold
The memory and CPU utilization exceeded one of the following thresholds on the STB:
- Memory Normal Level (default threshold – 60%)
- Memory Critical Level (default threshold – 75%)
- Memory Blocker Level (default threshold – 80%)
- CPU Critical Level (default threshold – 80%)
The default STB behavior when these thresholds are exceeded is as follows:
- Memory Normal Level exceeded — the CPU monitoring timer or reboot timer resets to 60 and 5 seconds respectively.
- Memory Critical Level exceeded — in standby mode, the reboot timer starts; in the other mode, the reboot timer starts when the STB goes into standby mode.
- Memory Blocker Level exceeded — in standby mode, the STB reboots immediately; in other mode, the STB reboots immediately when the CPU utilization level exceeds CPU Critical Level.
This event is sent at intervals specified by parameter memThresholdCheckInterval in the configuration file setup.json of SmartTUBE app.
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=MEMORY_THRESHOLD |
String |
Event type |
||||||
values |
String |
The memory and CPU utilization exceeded one of the thresholds described above (for STBs only). Allowable values:
|
Reboot
STB reboot at low free memory level and high CPU utilization:
- Memory Critical Level (default threshold — 75%) exceeded — the STB reboots in the standby mode;
- Memory Blocker Level (default threshold — 80%) exceeded — in standby mode, the STB reboots immediately; in other mode, the STB reboots immediately when the CPU utilization level exceeds CPU Critical Level (default threshold — 80%).
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=REBOOT |
String |
Event type |
||||||
values |
String |
STB reboot at low free memory level and high CPU utilization, see description above. Allowable values:
|
User Sent a Report
The user sent the device log by pressing the Send Report button in the client application. Typically, it is located in the Home screen > Settings > System > Support > Support menu.
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=SEND_REPORT |
String |
Event type |
||||||
value |
Integer |
The reason the user sent the report, which he/she selected in the dialog box. Allowable values:
|
||||||
valueString |
String |
The reason the user sent the report, which he/she selected in the dialog box. Allowable values:
|
Performing a Test Script
This event notifies about the execution of test scenarios on the end-user device. For more details, see here.
API Request Parameter |
Type |
Description |
Platform |
|||||
Web |
Samsung Smart TV |
LG Smart TV |
Android TV |
iOS |
Android |
|||
e=RUN_TEST |
String |
Event type |
+ |
|||||
value |
String |
Test execution state: start — start of the test; end — end of test. |
+ |
|||||
name |
String |
Name of a file with the test script |
+ |
|||||
testid |
String |
ID of the test execution. Represents the start or end time of the test, in ms. The ISO 8601 format with time zone is used (e.g. 20230711T154956.201%2B0300). IMPORTANT: testid must be passed with each event triggered by the test script. |
+ |
Change Log
SmartCARE 8.3
- New event CHUNK_ERROR supported
- The san parameter is now required for the Authentication Attempt (?e=AUTH) event only
SmartCARE 8.2
- New events FREEZE, PLAYLIST_LOADED, CHUNK_LOADED supported
- The AUTH event supports the values and reason parameters
SmartCARE 8.2
- New events FREEZE and CHUNK_LOADED supported
SmartCARE 6.5.0
- New event MEMORY_THRESHOLD supported
SmartCARE 6.4.10
- New event STORAGE_STATS supported
SmartCARE 6.4.7
- New event VIRTUAL_MEMORY supported