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:
POST https://<server>/useractivityvault/v1/useractivity/appStart
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/appEnd
Body:
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackStart
Content type: live-event
{
...
"metadata": {
"deviceType": "<device_type>",
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackStop
Content type: live-event
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackPause
Content type: live-event
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackResume
Content type: live-event
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackSkipAhead
Content type: live-event
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackSkipBack
Content type: live-event
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/playbackHeartbeat
Content type: live-event
{
...
"metadata": {
"appSessionId": "<UUID>|<GUID>",
"playbackSessionId": "<UUID>|<GUID>",
"contentSource": ["IPTV"|"OTT"|"Blend"],
"contentType": "live-event",
"editorialId": "<editorial_ID_of_event>",
"technicalId": "<technical_ID_of_event>",
"channelEditorialId": "<editorial_ID_of channel>",
"channelTechnicalId": "<technical_ID_of_channel>"
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/adWatched
Body:
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/adDeliverd
Body:
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/adSkipped
Body:
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/scheduleRecording
Body:
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/unscheduleRecording
Body:
{
...
"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:
POST https://<server>/useractivityvault/v1/useractivity/watch
Body:
{
...
"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"
}
...
}