Activity name
Trigger
Description
Required data fields
Notes
Examples
appStart
Client session creation
When app starts up
appSessionId
deviceId
activityDateTime
accountId
userId
appSessionId
is created when application is started, persisted until application closed by user or due to inactivity.
In mobile, a session begins when the app is opened (in the foreground) and ends when it goes into the background and no events occur within a predetermined time window, dependent on the measurement provider. Note that because of the typical multitasking nature of mobile users, events that occur within the predetermined window count towards the current session.
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/appStart
JSON
{
...
"metadata": {
"appSessionId": "<UUID/GUID>",
"activityDateTime": "…. (UTC)"
}
...
}
appEnd
Client session tear down
When app is shut down or times out due to inactivity
appSessionId
deviceId
accountId
userId
activityDateTime
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/appEnd
Body:
JSON
{
...
"metadata": {
"appSessionId": "<UUID/GUID>",
"activityDateTime": "…. (UTC)"
}
...
}
playbackStart
Start of playback
appSessionId
playbackSessionId
editorialId
deviceId
accountId
userId
contentSource
contentType
railId
depth
templateId
technicalId
programmeId
seriesId
deeplinkId
deviceType
Zero position event
The playbackSession
needs to be associated with the playback event.
playbackSessionId
– generated when playback starts.
Do not use playbackStart
when playback is resumed after playbackPause
.
Use playbackResume
instead.
Request:
JSON
POST https://<server>/useractivityvault/v1/useractivity/playbackStart
Content type: live-event
JSON
{
...
"metadata": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_channel_ID>",
"technicalId": "<technical_channel_ID>",
"programmeId": "<programme_ID>",
"seriesId": "<series_ID_if_available>",
"position": <seconds_since_event_start_time>,
"templateId": "<template_ID>",
"railId": "<rail_ID>",
"depth": "<depth>",
"deeplinkId": "<deeplink_ID>"
}
...
}
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": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-stcu-event",
"editorialId": "<editorialId_of_the_event",
"seriesId": "<series_ID_if_available>",
"position": <seconds_since_event_start_time>,
"templateId": "<template_ID>",
"railId": "<rail_ID>",
"depth": "<depth>",
"deeplinkId": "<deeplink_ID>"
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
Content type: start-over
JSON
{
...
"metadata": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "start-over",
"editorialId": "<editorial_ID_of_the_event>",
"seriesId": "<series_ID_if_available>",
"position": <seconds_since_event_start_time>,
"templateId": "<template_ID>",
"railId": "<rail_ID>",
"depth": "<depth>",
"deeplinkId": "<deeplink_ID>"
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"seriesId": "<series_ID_if_available>",
"position": <seconds_since_event_start_time>,
"templateId": "<template_ID>",
"railId": "<rail_ID>",
"depth": "<depth>",
"deeplinkId": "<deeplink_ID>"
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "<content_ID>",
"seriesId": "<series_ID_if_available>",
"position": <seconds_since_event_start_time>,
"templateId": "<template_ID>",
"railId": "<rail_ID>",
"depth": "<depth>",
"deeplinkId": "<deeplink_ID>"
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"seriesId": "<series_ID_if_available>",
"position": <seconds_since_event_start_time>,
"templateId": "<template_ID>",
"railId": "<rail_ID>",
"depth": "<depth>",
"deeplinkId": "<deeplink_ID>"
}
...
}
Note that for the vod-ed
content type, you need to specify:
playbackStop
User stops playback either with stop action or browsing away from playout
appSessionId
playbackSessionId
position
editorialId
contentSource
contentType
deviceId
accountId
userId
Request:
JSON
POST https://<server>/useractivityvault/v1/useractivity/playbackStop
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>",
"position": <seconds_since_event_start_time>
}
...
}
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "contentId",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the vod-ed
content type, you need to specify:
playbackPause
User pauses playout
appSessionId
playbackSessionId
position
editorialId
contentSource
contentType
deviceId
accountId
userId
Do not use playbackStart
when playback is resumed after playbackPause
.
Use playbackResume
instead.
Request:
JSON
POST https://<server>/useractivityvault/v1/useractivity/playbackPause
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>",
"position": <seconds_since_event_start_time>
}
...
}
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "contentId",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the vod-ed
content type, you need to specify:
playbackResume
User resumes playout after pausing
appSessionId
playbackSessionId
position
editorialId
contentSource
contentType
deviceId
accountId
userId
Do not use playbackStart
when playback is resumed after playbackPause
.
Use playbackResume
instead.
Request:
JSON
POST https://<server>/useractivityvault/v1/useractivity/playbackResume
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>",
"position": <seconds_since_event_start_time>
}
...
}
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "contentId",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the vod-ed
content type, you need to specify:
playbackSkipAhead
Fast forward or drag timeline forward
Covering fast forward or skip, allowing the tracking of the start point and the endpoint when playback resumes
appSessionId
playbackSessionId
startPosition
stopPosistion
editorialId
contentSource
contentType
deviceId
accountId
userId
startPosition
– when the skip is triggered
stopPosition
– when playback is resumed
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/playbackSkipAhead
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>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
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>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
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>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "contentId",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the vod-ed
content type, you need to specify:
playbackSkipBack
Rewind or drag timeline backward
Covering rewind or skip back, allowing the tracking of the start point and the endpoint when playback resumes
appSessionId
playbackSessionId
startPosition
stopPosistion
editorialId
contentSource
contentType
deviceId
accountId
userId
startPosition
– when the skip is triggered
stopPosition
– when playback is resumed
Request:
JSON
POST https://<server>/useractivityvault/v1/useractivity/playbackSkipBack
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>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
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>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
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>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "contentId",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"startPosition": <seconds_since_event_start_time>,
"stopPosition": <seconds_since_event_start_time>
}
...
}
Note that for the vod-ed
content type, you need to specify:
playbackHeartbeat
Created regularly to indicate that the user is watching a stream of content without interacting with the client.
We recommend recording this activity every 60 seconds .
Heartbeat/playout time
Used to track playout at a granular level. This data is not recorded for operational use only used for reporting.
appSessionId
playbackSessionId
position
editorialId
contentType
deviceId
accountId
userId
If the player metrics are reported regularly with a matching session ID, we can use those for the streaming indicator.
Do not report playbackHeartbeat
if you report playback_metrics
.
See playback_metrics
in QOE/QOS metrics .
Request:
JSON
POST https://<server>/useractivityvault/v1/useractivity/playbackHeartbeat
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>",
"position": <seconds_since_event_start_time>
}
...
}
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the live-stcu-event
content type, you need to specify:
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>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the start-over
content type, you need to specify:
Content type: ltcu
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the ltcu
content type, you need to specify:
Content type: npvr-event
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "npvr-event",
"editorialId": "contentId",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the npvr-event
content type, you need to specify:
Content type: vod-ed
JSON
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "vod-ed",
"editorialId": "<editorial_content_ID>",
"position": <seconds_since_event_start_time>
}
...
}
Note that for the vod-ed
content type, you need to specify:
adWatched
Completion of viewing a delivered advert
For ad tracking, allows the client to capture data on the adverts watched by the user.
appSessionId
playbackSessionId
adID
trackingAssetId
adSupplier
deviceId
accountId
userId
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/adWatched
Body:
JSON
{
...
"metadata": {
"contentSource": "IPTV",
"contentType": ["live-event"|"vod-ed"|"live-stcu-event"|"start-over"|"npvr-event"|"D2G"],
"recordingId": "ABC_1234",
"appSessionId": "<UUID>",
"playbackSessionId" : "<UUID>",
"adID": "<UUID>",
"trackingAssetId": "<UUID>",
"adSupplier": "<name>"
}
...
}
adDelivered
Ad delivered in a stream
Capture adverts that are delivered. Useful for reference if the user skips the ad.
appSessionId
playbackSessionId
adID
trackingAssetId
adSupplier
deviceId
accountId
userId
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/adDeliverd
Body:
JSON
{
...
"metadata": {
"contentSource": "IPTV",
"contentType": ["live-event"|"vod-ed"|"live-stcu-event"|"start-over"|"npvr-event"|"D2G"],
"recordingId": "ABC_1234",
"appSessionId": "<UUID>",
"playbackSessionId": "<UUID>",
"adID": "<UUID>",
"trackingAssetId": "<UUID>",
"adSupplier": "<name>"
...
}
adSkipped
Skipping adverts where allowed.
Capture the action of skipping an ad where allowed.
appSessionId
playbackSessionId
adID
trackingAssetId
adSupplier
deviceId
accountId
userId
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/adSkipped
Body:
JSON
{
...
"metadata": {
"contentSource": "IPTV",
"contentType": ["live-event"|"vod-ed"|"live-stcu-event"|"start-over"|"npvr-event"|"D2G"],
"recordingId": "ABC_1234",
"appSessionId": "<UUID>",
"playbackSessionId": "<UUID>",
"adID": "<UUID>",
"trackingAssetId": "<UUID>",
"adSupplier": "<name>"
...
}
scheduleRecording
User triggers a recording to be created in OPF.
appSessionId
playbackSessionId
editorialId
seriesLink
seriesId
deviceId
accountId
userId
technicalId
programmeId
seriesId
deeplinkId
deviceType
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/scheduleRecording
Body:
JSON
{
...
"metadata": {
"contentSource": "IPTV",
"contentType": ["live-event"|"live-stcu-event"],
"recordingId": "ABC_1234",
"appSessionId": "<UUID>",
"playbackSessionId": "<UUID>",
"seriesLink": "<UUID>",
"seriesId": "<UUID>",
"editorialId" : "GLOBAL_20711",
"technicalId": "jkn193887",
"programmeId": "010928",
"seriesId": "298940",
"deeplinkId": "DeepL_20711",
"deviceType": "ios"
...
}
unscheduleRecording
User triggers a scheduled recording to be cancelled.
appSessionId
playbackSessionId
editorialId
seriesLink
seriesId
deviceId
accountId
userId
technicalId
programmeId
seriesId
deeplinkId
deviceType
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/unscheduleRecording
Body:
JSON
{
...
"metadata": {
"contentSource": "IPTV",
"contentType": ["live-event"|"live-stcu-event"],
"recordingId": "ABC_1234",
"appSessionId": "<UUID>",
"playbackSessionId": "<UUID>",
"seriesLink": "<UUID>",
"seriesId": "<UUID>",
"editorialId" : "GLOBAL_20711",
"technicalId": "jkn193887",
"programmeId": "010928",
"seriesId": "298940",
"deeplinkId": "DeepL_20711",
"deviceType": "ios"
...
}
watch
Created when the user clicks the play option on content.
Current activity that is reported on first playback.
appSessionId
playbackSessionId
Position
editorialId
contentType
railId
templateId
deviceId
accountId
userId
Deprecated – retained for backward compatibility.
Request:
CODE
POST https://<server>/useractivityvault/v1/useractivity/watch
Body:
JSON
{
...
"metadata": {
"contentSource": "IPTV",
"contentType": ["live-event"|"vod-ed"|"live-stcu-event"|"start-over"|"npvr-event"|"D2G"],
"recordingId": "ABC_1234",
"playbackSessionId": "<UUID>",
"appSessionId": "<UUID>",
"position": 789,
"railId": "<UUID>",
"templateId": "<UUID>",
"contentId": "GLOBAL_20711"
}
...
}