Skip to main content
Skip table of contents

QOE/QOS metrics

Common fields

The following fields must be included in every request body:

  • accountId – the account ID

  • userId – must be an empty string

  • deviceId – the device ID

  • key – must be an empty string

  • name – the activity name

  • timestamp – the activity timestamp in <YYYY>-<MM>-<DD>T<hh>:<mm>:<ss>Z format

These fields are not included in the examples in the following table.

Activity name

Trigger

Description

Required data fields

Notes

Examples

playback_metrics

To be reported back at a consistent interval, this can be configured by clients. 

We recommend recording this activity every 300 seconds.

Metrics as supplied by the player and reported back via the client.  

appSessionId
sessionId
contentSource
editorialId
playbackSessionId
playbackProgress
selectedBitrate 
contentType 
availableBitrates
bytesDownloaded
downloadBitRate
downloadBitrateAverage
bufferedDuration
streamBitrate
droppedVideoFrames
totalVideoFrames
uri

Request:

CODE
POST https://<server>/useractivityvault/v1/useractivity/playback_metrics

Content type: live-event

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "live-event",
    "editorialId": "<editorial_channel_ID>",
    "technicalId": "<technical_channel_ID>",
    "programmeId": "<programme_ID>",
    "playbackProgress": <seconds_from_start_of_event>,
    <list_of_metrics_from_player>
  }
  ...
}

Note that for the live-event content type, you need to specify:

  • editorialId – the editorial channel ID

  • technicalId – the technical channel ID

  • programmeId – the programme ID

Content type: live-stcu-event

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "live-stcu-event",
    "editorialId": "<editorial_ID_of_the_event>",
    "playbackProgress": <seconds_from_start_of_event>,
    <list_of_metrics_from_player>
  }
  ...
}

Note that for the live-stcu-event content type, you need to specify:

  • editorialId – the editorial ID of the event

Content type: start-over

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "start-over",
    "editorialId": "<editorial_ID_of_the_event>",
    "playbackProgress": <seconds_from_start_of_event>,
    <list_of_metrics_from_player>
  }
  ...
}

Note that for the start-over content type, you need to specify:

  • editorialId – the editorial ID of the event

Content type: ltcu

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "vod-ed",
    "editorialId": "<editorial_content_ID>",
    "playbackProgress": <seconds_from_start_of_event>,
    <list_of_metrics_from_player>
  }
  ...
}

Note that for the ltcu content type, you need to specify:

  • editorialId – the editorial content ID

Content type: npvr-event 

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "npvr-event",
    "editorialId": "<content_ID>",
    "playbackProgress": <seconds_from_start_of_event>,
    <list_of_metrics_from_player>
  }
  ...
}  

Note that for the npvr-event content type, you need to specify:

  • editorialId – the content ID

Content type: vod-ed

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "vod-ed",
    "editorialId": "<editorial_content_ID>",
    "playbackProgress": <seconds_from_start_of_event>,
    <list_of_metrics_from_player>
  }
  ...
}

Note that for the vod-ed content type, you need to specify:

  • editorialId – the editorial content ID

playerError

Log client side errors as required.

Where required, useful to capture basic error information that relates to the user experience.

appSessionId
playbackSessionId
editorialId
errorCode
errorMsg
playerTypeversion
deviceId
accountId
userId

Not to be used for logging or debugging. Use sparingly where the error will have impacted the user and would provide value for reporting. 

Note that appError is identical to playerError except for the name.

Request:

JSON
POST https://<server>/useractivityvault/v1/useractivity/playerError

Content type: live-event

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "live-event",
    "editorialId": "<editorial_channel_ID>",
    "technicalId": "<technical_channel_ID>",
    "programmeId": "<programme_ID>",
    "errorCode": "<error_code>",
    "errorMsg": "<error_message>",
    "playerTypeVersion": "<player_type_version>"
  }
  ...
}

Note that for the live-event content type, you need to specify:

  • editorialId – the editorial channel ID

  • technicalId – the technical channel ID

  • programmeId – the programme ID

Content type: live-stcu-event

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "live-stcu-event",
    "editorialId": "<editorial_ID_of_the_event>",
    "errorCode": "<error_code>",
    "errorMsg": "<error_message>",
    "playerTypeVersion": "<player_type_version>"
  }
  ...
}

Note that for the live-stcu-event content type, you need to specify:

  • editorialId – the editorial ID of the event

Content type: start-over

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "start-over",
    "editorialId": "<editorial_ID_of_the_event>",
    "errorCode": "<error_code>",
    "errorMsg": "<error_message>",
    "playerTypeVersion": "<player_type_version>"
  }
  ...
}

Note that for the start-over content type, you need to specify:

  • editorialId – the editorial ID of the event

Content type: ltcu

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "vod-ed",
    "editorialId": "<editorial_content_ID>",
    "errorCode": "<error_code>",
    "errorMsg": "<error_message>",
    "playerTypeVersion": "<player_type_version>"
  }
  ...
}

Note that for the ltcu content type, you need to specify:

  • editorialId – the editorial content ID

Content type: npvr-event 

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "npvr-event",
    "editorialId": "<content_ID>",
    "errorCode": "<error_code>",
    "errorMsg": "<error_message>",
    "playerTypeVersion": "<player_type_version>"
  }
  ...
}

Note that for the npvr-event content type, you need to specify:

  • editorialId – the content ID

Content type: vod-ed

JSON
{
  ...
  "metadata": {
    "appSessionId": "<UUID>|<GUID>",
    "playbackSessionId": "<UUID>|<GUID>",
    "contentSource": ["IPTV"|"OTT"|"Blend"],
    "contentType": "vod-ed",
    "editorialId": "<editorial_content_ID>",
    "errorCode": "<error_code>",
    "errorMsg": "<error_message>",
    "playerTypeVersion": "<player_type_version>"
  }
  ...
}

Note that for the vod-ed content type, you need to specify:

  • editorialId – the editorial content ID

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.