Player Types Reference
Tracks
LuraTracks
| Parameter | Type | Description |
|---|---|---|
video | List<LuraTrack.Video> | Video tracks of current media |
audio | List<LuraTrack.Audio> | Audio tracks of current media |
caption | List<LuraTrack.Text> | Text tracks of current media |
viewgrid | List<LuraTrack.ViewGrid> | View grid tracks of current media |
@Serializable
data class LuraTracks(
val video: List<LuraTrack.Video> = emptyList(),
val audio: List<LuraTrack.Audio> = emptyList(),
val caption: List<LuraTrack.Text> = emptyList(),
val viewgrid: List<LuraTrack.ViewGrid> = emptyList(),
)
LuraTrack.Video
| Parameter | Type | Description |
|---|---|---|
id | String? | ID of track |
width | Int? | Width of video track |
height | Int? | Height of video track |
bitrate | Int? | Bitrate of video track |
language | String? | Language of video track |
frameRate | Float | Frame rate of video track |
active | Boolean | Whether the video track is selected |
isCurrent | Boolean | Whether this is the current video track |
@Serializable
data class Video(
val id: String? = null,
val width: Int? = null,
val height: Int? = null,
val bitrate: Int? = null,
val language: String? = "",
val frameRate: Float = 30.0f,
var active: Boolean = false,
var isCurrent: Boolean = false,
) : LuraTrack
LuraTrack.Audio
| Parameter | Type | Description |
|---|---|---|
id | String? | ID of track |
bitrate | Int? | Bitrate of audio track |
language | String? | Language of audio track |
channels | Int? | Channel count of audio track |
active | Boolean | Whether the audio track is selected |
label | String? | Display label of audio track |
@Serializable
data class Audio(
val id: String? = null,
val bitrate: Int? = null,
val language: String? = "",
val channels: Int? = null,
var active: Boolean = false,
val label: String? = null,
) : LuraTrack
LuraTrack.Text
| Parameter | Type | Description |
|---|---|---|
id | String? | ID of track |
language | String? | Language of text track |
active | Boolean | Whether the text track is selected |
label | String? | Display label of text track |
@Serializable
data class Text(
val id: String? = null,
val language: String? = "Off",
var active: Boolean = false,
val label: String? = null,
) : LuraTrack
LuraTrack.ViewGrid
| Parameter | Type | Description |
|---|---|---|
gridId | String | Identifier of the view grid |
audioLanguage | String | Audio language associated with the grid |
left | Float | Left position of the grid |
top | Float | Top position of the grid |
width | Float | Width of the grid |
height | Float | Height of the grid |
active | Boolean | Whether the view grid is selected |
isComposite | Boolean | Whether the grid is composite |
tsPlayAt | Long? | Timestamp to play at |
@Serializable
data class ViewGrid(
val gridId: String,
val audioLanguage: String = "",
val left: Float,
val top: Float,
val width: Float,
val height: Float,
var active: Boolean = false,
val isComposite: Boolean = false,
val tsPlayAt: Long? = null,
) : LuraTrack
Configuration
LuraConfiguration
| Parameter | Type | Description |
|---|---|---|
name | String? | Configuration name |
lura | Lura? | Credentials for Lura backend |
controls | LuraControlsConfiguration | Controls configuration |
analytics | LuraAnalyticsConfiguration? | Analytics configuration |
content | LuraContent? | Content configuration |
offlinePlayback | LuraOfflineConfiguration? | Offline playback configuration |
cast | LuraCastConfiguration? | Cast configuration |
ads | LuraAdsConfiguration? | Ads configuration |
plugins | LuraPluginsConfigurations? | Plugin configurations |
license | LuraLicense? | Player license |
debug | Boolean? | Debug mode |
playerOpsKey | String? | Player operations key for remote logging |
initialization | LuraInitializationConfiguration? | Initialization configuration |
teasers | LuraTeaserConfiguration? | Teaser configuration |
highlights | LuraHighlightsConfiguration? | Highlights configuration |
concurrency | LuraConcurrencyConfiguration? | Concurrency configuration |
latency | LuraLatencyConfiguration? | Latency configuration |
nxs | LuraNxsConfiguration? | NXS request configuration |
system | LuraSystemConfiguration? | System metadata from configuration response |
@Serializable
data class LuraConfiguration(
val name: String? = null,
val lura: Lura? = null,
val controls: LuraControlsConfiguration = LuraControlsConfiguration(),
val analytics: LuraAnalyticsConfiguration? = null,
val content: LuraContent? = null,
val offlinePlayback: LuraOfflineConfiguration? = null,
val cast: LuraCastConfiguration? = null,
val ads: LuraAdsConfiguration? = null,
val plugins: LuraPluginsConfigurations? = null,
val license: LuraLicense? = null,
val debug: Boolean? = false,
val playerOpsKey: String? = null,
val initialization: LuraInitializationConfiguration? = null,
val teasers: LuraTeaserConfiguration? = null,
val highlights: LuraHighlightsConfiguration? = null,
val concurrency: LuraConcurrencyConfiguration? = null,
val latency: LuraLatencyConfiguration? = null,
val nxs: LuraNxsConfiguration? = null,
val system: LuraSystemConfiguration? = null,
)
Lura
| Parameter | Type | Description |
|---|---|---|
appKey | String? | Lura configuration app key |
assetId | String? | Lura asset ID |
token | String? | Lura token |
@Serializable
data class Lura internal constructor(
val appKey: String? = null,
var assetId: String? = null,
val token: String? = null,
) {
constructor(assetId: String, appKey: String) : this(
appKey = appKey,
assetId = assetId,
token = null
)
constructor(token: String) : this(
appKey = null,
assetId = null,
token = token
)
}
LuraControlsConfiguration
| Parameter | Type | Description |
|---|---|---|
autoplay | Boolean | Whether autoplay is enabled |
enabled | Boolean | Whether controls are enabled |
muted | Boolean | Whether the player is muted |
volume | Double | Volume value |
layout | String | Controls layout |
loop | Boolean | Whether loop is enabled |
mediaSession | LuraMediaSessionConfiguration? | MediaSession configuration |
@Serializable
data class LuraControlsConfiguration(
val autoplay: Boolean = false,
val enabled: Boolean = true,
val muted: Boolean = false,
val volume: Double = 0.9,
val layout: String = "default",
val loop: Boolean = false,
val mediaSession: LuraMediaSessionConfiguration? = null,
)
LuraMediaSessionConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether MediaSession is enabled |
@Serializable
data class LuraMediaSessionConfiguration(
val enabled: Boolean = false,
)
LuraLicense
| Parameter | Type | Description |
|---|---|---|
licenseKey | String? | License key |
url | String? | License URL |
data | String? | License data |
@Serializable
data class LuraLicense(
val licenseKey: String? = null,
val url: String? = null,
val data: String? = null,
)
LuraSystemConfiguration
| Parameter | Type | Description |
|---|---|---|
ts | Double? | Unix timestamp in seconds when the configuration was produced |
@Serializable
data class LuraSystemConfiguration(
val ts: Double? = null,
)
LuraConcurrencyConfiguration
| Parameter | Type | Description |
|---|---|---|
accountId | String? | Concurrency account ID |
deviceId | String? | Device ID |
enabled | Boolean? | Whether concurrency limiting is enabled |
max | Int? | Maximum concurrent streams |
@Serializable
data class LuraConcurrencyConfiguration(
val accountId: String? = null,
val deviceId: String? = null,
val enabled: Boolean? = null,
val max: Int? = null,
)
LuraTeaserConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether teasers are enabled |
mode | String? | Teaser mode |
media | List<LuraMedia>? | Teaser media list |
@Serializable
data class LuraTeaserConfiguration(
val enabled: Boolean = false,
val mode: String? = null,
val media: List<LuraMedia>? = null,
)
LuraNxsConfiguration
| Parameter | Type | Description |
|---|---|---|
host | String? | Override host for NXS service requests |
@Serializable
data class LuraNxsConfiguration(
val host: String? = null,
)
Content & Media
LuraContent
| Parameter | Type | Description |
|---|---|---|
media | List<LuraMedia>? | List of media for content |
lowLatencyMedia | List<LuraMedia>? | Optional low-latency media for live content |
preferredDRMSystems | List<String>? | Preferred DRM systems |
id | String? | Content ID |
title | String? | Content title |
description | String? | Content description |
language | String? | Content language |
type | LuraVideoType? | Video type |
annotations | List<LuraAnnotation>? | Content annotations |
startAt | Double | Start position in seconds |
aspectRatio | String? | Aspect ratio in W:H format |
dvr | LuraDVR? | DVR configuration |
@Serializable
data class LuraContent(
var media: List<LuraMedia>? = null,
var lowLatencyMedia: List<LuraMedia>? = null,
val preferredDRMSystems: List<String>? = null,
val id: String? = null,
val title: String? = null,
val description: String? = null,
val language: String? = null,
val type: LuraVideoType? = null,
val annotations: List<LuraAnnotation>? = null,
var startAt: Double = 0.0,
var aspectRatio: String? = null,
val dvr: LuraDVR? = null,
)
LuraMedia
| Parameter | Type | Description |
|---|---|---|
type | String | Media MIME type |
url | String | Media URL |
licenseUrl | String? | DRM license URL |
height | Int | Media height |
width | Int | Media width |
language | String? | Media language |
@Serializable
data class LuraMedia(
val type: String,
val url: String,
val licenseUrl: String? = null,
val height: Int = 0,
val width: Int = 0,
val language: String? = null,
)
LuraVideoType
| Case | Value |
|---|---|
LIVE | "LIVE" |
VOD | "VOD" |
LINEAR | "LINEAR" |
NONE | "NONE" |
@Serializable(with = LuraVideTypeSerializer::class)
enum class LuraVideoType(val type: String) {
LIVE("LIVE"),
VOD("VOD"),
LINEAR("LINEAR"),
NONE("NONE");
}
LuraAnnotation
| Parameter | Type | Description |
|---|---|---|
start | Double | Starting time of the annotation in seconds |
end | Double | Ending time of the annotation in seconds |
type | String | Type of the annotation (e.g. intro, outro) |
label | String? | Label for the annotation |
@Serializable
data class LuraAnnotation(
val start: Double = 0.0,
val end: Double = 0.0,
val type: String = "",
val label: String? = null,
)
LuraDVR
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether DVR is enabled for the live stream |
mode | LuraDVRMode? | DVR activation mode |
availabilityWindow | Double? | DVR availability window duration in seconds |
@Serializable
data class LuraDVR(
val enabled: Boolean = false,
val mode: LuraDVRMode? = null,
val availabilityWindow: Double? = null,
)
LuraDVRMode
| Case | Value |
|---|---|
EVENT | "event" |
WINDOW | "window" |
@Serializable
enum class LuraDVRMode {
@SerialName("event") EVENT,
@SerialName("window") WINDOW,
}
LuraTrickPlayInformation
| Parameter | Type | Description |
|---|---|---|
width | Int | Width of trick play image |
height | Int | Height of trick play image |
rows | Int? | Number of rows in sprite sheet |
columns | Int? | Number of columns in sprite sheet |
duration | Int? | Duration per thumbnail |
@Serializable
data class LuraTrickPlayInformation(
val width: Int,
val height: Int,
val rows: Int? = null,
val columns: Int? = null,
val duration: Int? = null,
)
LuraOfflineConfiguration
| Parameter | Type | Description |
|---|---|---|
resolution | LuraOfflineVideoResolution | Resolution of video rendition |
playWhenAvailable | Boolean | Play from local storage when available |
@Serializable
data class LuraOfflineConfiguration(
val resolution: LuraOfflineVideoResolution = LuraOfflineVideoResolution.HD,
val playWhenAvailable: Boolean = false,
)
Cast
LuraCastConfiguration
| Parameter | Type | Description |
|---|---|---|
chromecast | LuraChromecastConfiguration | Chromecast configuration |
@Serializable
data class LuraCastConfiguration(
val chromecast: LuraChromecastConfiguration = LuraChromecastConfiguration(),
)
LuraChromecastConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether Chromecast is enabled |
appId | String? | Chromecast receiver app ID |
@Serializable
data class LuraChromecastConfiguration(
val enabled: Boolean = false,
val appId: String? = null,
)
Initialization
LuraInitializationConfiguration
| Parameter | Type | Description |
|---|---|---|
video | LuraVideoInitializationConfiguration? | Video initialization settings |
caption | LuraCaptionInitializationConfiguration? | Caption initialization settings |
audio | LuraAudioInitializationConfiguration? | Audio initialization settings |
@Serializable
data class LuraInitializationConfiguration(
val video: LuraVideoInitializationConfiguration? = null,
val caption: LuraCaptionInitializationConfiguration? = null,
val audio: LuraAudioInitializationConfiguration? = null,
)
LuraVideoInitializationConfiguration
| Parameter | Type | Description |
|---|---|---|
abrEnabled | Boolean | Whether adaptive bitrate is enabled |
preferredBitrate | Long? | Preferred initial bitrate |
latencyMode | LuraLatencyMode? | Initial latency mode |
@Serializable
data class LuraVideoInitializationConfiguration(
val abrEnabled: Boolean = true,
val preferredBitrate: Long? = null,
val latencyMode: LuraLatencyMode? = null,
)
LuraCaptionInitializationConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether captions are enabled at start |
preferredLanguage | String? | Preferred caption language |
@Serializable
data class LuraCaptionInitializationConfiguration(
val enabled: Boolean = false,
val preferredLanguage: String? = null,
)
LuraAudioInitializationConfiguration
| Parameter | Type | Description |
|---|---|---|
preferredLanguage | String? | Preferred audio language |
@Serializable
data class LuraAudioInitializationConfiguration(
val preferredLanguage: String? = null,
)
Latency
LuraLatencyConfiguration
| Parameter | Type | Description |
|---|---|---|
allowedModes | LuraLatencyAllowedModes? | Allowed latency modes |
@Serializable
data class LuraLatencyConfiguration(
val allowedModes: LuraLatencyAllowedModes? = null,
)
LuraLatencyAllowedModes
| Field | Type | Description |
|---|---|---|
low | Boolean? | Whether low-latency mode may be exposed. Defaults to true. |
@Serializable
data class LuraLatencyAllowedModes(
val low: Boolean = true,
)
LuraLatencyMode
| Value | Description |
|---|---|
DEFAULT | Default latency mode ("def"). |
LOW_LATENCY | Low latency mode ("low"). |
@Serializable
enum class LuraLatencyMode(val value: String) {
@SerialName("def") DEFAULT("def"),
@SerialName("low") LOW_LATENCY("low"),
}
Highlights
LuraHighlightsConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether highlights are enabled |
url | String? | Highlights feed URL |
refreshPeriod | Int | Refresh period in seconds |
autoSwitch | LuraAutoSwitch? | Auto-switch configuration |
mode | LuraHighlightsMode | Highlights display mode |
@Serializable
data class LuraHighlightsConfiguration(
val enabled: Boolean = false,
val url: String? = null,
val refreshPeriod: Int = 0,
val autoSwitch: LuraAutoSwitch? = null,
val mode: LuraHighlightsMode = LuraHighlightsMode.SIDE_BY_SIDE,
)
LuraHighlightsMode
| Case | Value |
|---|---|
CONTENT_REPLACE | "content-replace" |
SIDE_BY_SIDE | "side-by-side" |
@Serializable
enum class LuraHighlightsMode {
@SerialName("content-replace") CONTENT_REPLACE,
@SerialName("side-by-side") SIDE_BY_SIDE,
}
LuraHighlight
| Parameter | Type | Description |
|---|---|---|
id | String | Highlight identifier |
mode | LuraHighlightsMode | Display mode |
active | Boolean | Whether the highlight is active |
time | Long | Highlight time in milliseconds |
description | String | Highlight description |
title | String | Highlight title |
poster | String? | Poster image URL |
@Serializable
data class LuraHighlight(
val id: String,
val mode: LuraHighlightsMode = LuraHighlightsMode.SIDE_BY_SIDE,
val active: Boolean = false,
val time: Long = 0,
val description: String = "",
val title: String = "",
val poster: String? = null,
)
Playlist
LuraPlaylistConfiguration
| Parameter | Type | Description |
|---|---|---|
lura | Lura? | Lura credentials |
startingIndex | Int | Index of the first playlist item |
repeat | Boolean | Whether the playlist repeats |
items | List<LuraConfiguration> | Playlist items |
autoSwitch | LuraAutoSwitch? | Auto-switch configuration |
nextPage | String? | URL for the next playlist page |
layout | String | Playlist layout |
ads | LuraPlaylistAds? | Playlist ads configuration |
slideAnimation | LuraSlideAnimation? | Slide animation configuration |
nxs | LuraNxsConfiguration? | NXS request configuration |
@Serializable
data class LuraPlaylistConfiguration(
val lura: Lura? = null,
val startingIndex: Int = 0,
val repeat: Boolean = false,
var items: List<LuraConfiguration> = emptyList(),
val autoSwitch: LuraAutoSwitch? = null,
val nextPage: String? = null,
val layout: String = "default",
val ads: LuraPlaylistAds? = null,
val slideAnimation: LuraSlideAnimation? = null,
val nxs: LuraNxsConfiguration? = null,
)
LuraAutoSwitch
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether auto-switch is enabled |
duration | Double | Auto-switch duration in seconds |
@Serializable
data class LuraAutoSwitch(
val enabled: Boolean = false,
val duration: Double = 0.0,
)
LuraSlideAnimation
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean? | Whether slide animation is enabled |
duration | Double | Animation duration in seconds |
@Serializable
data class LuraSlideAnimation(
val enabled: Boolean?,
val duration: Double,
)
LuraPlaylistAds
| Parameter | Type | Description |
|---|---|---|
criteria | LuraPlaylistAdsCriteria? | Ads insertion criteria |
time | Double? | Time-based ads threshold in seconds |
count | Int? | Count-based ads threshold |
macros | Map<String, Any?>? | Ad macros |
@Serializable
data class LuraPlaylistAds(
val criteria: LuraPlaylistAdsCriteria? = null,
val time: Double? = null,
val count: Int? = null,
val macros: Map<String, Any?>? = null,
)
LuraPlaylistAdsCriteria
| Case | Value |
|---|---|
TIME | "time" |
COUNT | "count" |
@Serializable
enum class LuraPlaylistAdsCriteria {
@SerialName("time") TIME,
@SerialName("count") COUNT,
}
Ads Configuration
LuraAdsConfiguration
| Parameter | Type | Description |
|---|---|---|
macros | Map<String, Any?>? | Ad macros |
pluginTimeout | Double? | Plugin timeout in seconds |
clientSide | LuraClientSideConfiguration? | Client-side ad configuration |
serverSide | LuraServerSideConfiguration? | Server-side ad configuration |
nonLinear | LuraNonLinearConfiguration? | Non-linear ad configuration |
sgai | LuraSgaiConfiguration? | SGAI configuration |
policy | LuraAdsPolicyConfiguration | Ads policy configuration |
@Serializable
data class LuraAdsConfiguration(
val macros: Map<String, Any?>? = null,
val pluginTimeout: Double? = null,
val clientSide: LuraClientSideConfiguration? = null,
val serverSide: LuraServerSideConfiguration? = null,
val nonLinear: LuraNonLinearConfiguration? = null,
val sgai: LuraSgaiConfiguration? = null,
val policy: LuraAdsPolicyConfiguration = LuraAdsPolicyConfiguration(),
)
LuraClientSideConfiguration
| Parameter | Type | Description |
|---|---|---|
provider | String? | Ad provider name |
freewheel | LuraFreewheelConfiguration? | FreeWheel configuration |
gam | LuraGamConfiguration? | GAM configuration |
generic | LuraGenericConfiguration? | Generic VAST/VMAP configuration |
@Serializable
data class LuraClientSideConfiguration(
val provider: String? = "NA",
val freewheel: LuraFreewheelConfiguration? = null,
val gam: LuraGamConfiguration? = null,
val generic: LuraGenericConfiguration? = null,
)
LuraServerSideConfiguration
| Parameter | Type | Description |
|---|---|---|
provider | String? | Ad provider name |
gam | LuraGamConfiguration? | GAM server-side configuration |
@Serializable
data class LuraServerSideConfiguration(
val provider: String? = "NA",
val gam: LuraGamConfiguration? = null,
)
LuraNonLinearConfiguration
| Parameter | Type | Description |
|---|---|---|
pause | NonLinearPauseConfiguration? | Pause ad configuration |
@Serializable
data class LuraNonLinearConfiguration(
val pause: NonLinearPauseConfiguration? = null,
)
NonLinearPauseConfiguration
| Parameter | Type | Description |
|---|---|---|
provider | String? | Pause ad provider |
generic | NonLinearPauseGenericConfiguration? | Generic pause ad configuration |
@Serializable
data class NonLinearPauseConfiguration(
val provider: String? = "Generic",
val generic: NonLinearPauseGenericConfiguration? = null,
)
NonLinearPauseGenericConfiguration
| Parameter | Type | Description |
|---|---|---|
url | String? | Ad creative URL |
xPosition | LuraXPosition? | Horizontal position |
yPosition | LuraYPosition? | Vertical position |
backgroundOpacity | Float? | Background opacity |
slideAnimation | NonLinearSlideAnimationConfiguration? | Slide animation settings |
padding | NonLinearPaddingConfiguration? | Padding settings |
@Serializable
data class NonLinearPauseGenericConfiguration(
val url: String? = null,
val xPosition: LuraXPosition? = null,
val yPosition: LuraYPosition? = null,
val backgroundOpacity: Float? = 0.4f,
val slideAnimation: NonLinearSlideAnimationConfiguration? = null,
val padding: NonLinearPaddingConfiguration? = null,
)
NonLinearSlideAnimationConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean? | Whether slide animation is enabled |
direction | LuraSlideDirections? | Slide direction |
duration | Double? | Animation duration in seconds |
@Serializable
data class NonLinearSlideAnimationConfiguration(
val enabled: Boolean? = false,
val direction: LuraSlideDirections? = null,
val duration: Double? = null,
)
NonLinearPaddingConfiguration
| Parameter | Type | Description |
|---|---|---|
top | String? | Top padding |
bottom | String? | Bottom padding |
left | String? | Left padding |
right | String? | Right padding |
@Serializable
data class NonLinearPaddingConfiguration(
val top: String? = null,
val bottom: String? = null,
val left: String? = null,
val right: String? = null,
)
LuraGamConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether GAM is enabled |
adTagUrl | String? | Client-side ad tag URL |
apiKey | String? | API key |
cmsId | String? | CMS ID for DAI VOD |
custParams | String? | Custom parameters |
customAssetKey | String? | Custom asset key for pod serving |
assetKey | String? | Asset key for DAI live |
liveStreamPrefetchSeconds | Int? | Live stream prefetch seconds |
macros | Map<String, Any?>? | Ad macros |
mode | String? | GAM mode |
networkCode | String? | Network code for pod serving |
videoID | String? | Video ID for DAI VOD |
streamFormat | String? | Stream format |
adTagParameters | Map<String, Any?> | Ad tag parameters |
@Serializable
data class LuraGamConfiguration(
val enabled: Boolean = false,
val adTagUrl: String? = null,
val apiKey: String? = null,
val cmsId: String? = null,
val custParams: String? = null,
val customAssetKey: String? = null,
val assetKey: String? = null,
val liveStreamPrefetchSeconds: Int? = null,
val macros: Map<String, Any?>? = null,
val mode: String? = null,
val networkCode: String? = null,
val videoID: String? = null,
val streamFormat: String? = null,
val adTagParameters: Map<String, Any?> = mapOf(),
)
LuraFreewheelConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether FreeWheel is enabled |
companion | String? | Companion ad configuration |
custom | Map<String, Any?>? | Custom parameters |
flags | String? | FreeWheel flags |
networkId | String? | Network ID |
profileId | String? | Profile ID |
serverURL | String? | Server URL |
siteSectionId | String? | Site section ID |
videoAssetId | String? | Video asset ID |
@Serializable
data class LuraFreewheelConfiguration(
val enabled: Boolean,
val companion: String? = null,
val custom: Map<String, Any?>? = null,
val flags: String? = null,
val networkId: String? = null,
val profileId: String? = null,
val serverURL: String? = null,
val siteSectionId: String? = null,
val videoAssetId: String? = null,
)
LuraGenericConfiguration
| Parameter | Type | Description |
|---|---|---|
breaks | List<LuraGenericBreak> | Ad break definitions |
macros | Map<String, Any?>? | Ad macros |
@Serializable
data class LuraGenericConfiguration(
val breaks: List<LuraGenericBreak> = emptyList(),
val macros: Map<String, Any?>? = null,
)
LuraGenericBreak
| Parameter | Type | Description |
|---|---|---|
offset | String? | Break offset (start, end, HH:mm, HH:mm:ss, or HH:mm:ss.SSS) |
url | String | VAST or VMAP URL |
@Serializable
data class LuraGenericBreak(
val offset: String? = null,
val url: String = "",
)
LuraSgaiConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean? | Whether SGAI is enabled |
assetId | String? | SGAI asset ID |
linear | LuraSgaiLinearConfiguration? | Linear SGAI configuration |
nonLinear | LuraSgaiNonLinearConfiguration? | Non-linear SGAI configuration |
@Serializable
data class LuraSgaiConfiguration(
val enabled: Boolean? = null,
val assetId: String? = null,
val linear: LuraSgaiLinearConfiguration? = null,
val nonLinear: LuraSgaiNonLinearConfiguration? = null,
)
LuraSgaiLinearConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean? | Whether linear SGAI is enabled |
defaultAdDuration | Double? | Default ad duration in seconds |
@Serializable
data class LuraSgaiLinearConfiguration(
val enabled: Boolean? = null,
val defaultAdDuration: Double? = null,
)
LuraSgaiNonLinearConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean? | Whether non-linear SGAI is enabled |
endpoint | String? | Non-linear SGAI endpoint |
@Serializable
data class LuraSgaiNonLinearConfiguration(
val enabled: Boolean? = null,
val endpoint: String? = null,
)
LuraAdsPolicyConfiguration
| Parameter | Type | Description |
|---|---|---|
skipMode | LuraAdsSkipMode | Ad skip mode |
cooldown | Double | Cooldown between ads in seconds |
pauseAdCooldown | Double | Cooldown between pause ads in seconds |
@Serializable
data class LuraAdsPolicyConfiguration(
val skipMode: LuraAdsSkipMode = LuraAdsSkipMode.POD,
val cooldown: Double = 15.0,
val pauseAdCooldown: Double = 0.0,
)
LuraAdsSkipMode
| Case | Value |
|---|---|
AD | "ad" |
POD | "pod" |
@Serializable
enum class LuraAdsSkipMode {
@SerialName("ad") AD,
@SerialName("pod") POD,
}
Ads
LuraAdBreak
| Parameter | Type | Description |
|---|---|---|
id | String | Ad break identifier |
offset | Double | Start time of the ad break in seconds |
ads | List<LuraAd> | Ads in the ad break |
watched | Boolean | Whether the ad break has been watched |
totalAds | Int | Number of ads in the ad break |
breakDuration | Double | Duration of the ad break in seconds |
origin | String | Origin of the ad break |
stitcher | String? | Stitcher of the ad break |
@Serializable
class LuraAdBreak(
val id: String,
var offset: Double,
val ads: List<LuraAd>,
val watched: Boolean,
val totalAds: Int,
val breakDuration: Double,
val origin: String,
val stitcher: String?,
)
LuraAd
| Parameter | Type | Description |
|---|---|---|
duration | Double | Duration of the ad in seconds |
skipOffset | Double | Skip offset in seconds |
title | String? | Title of the ad |
description | String? | Description of the ad |
companions | List<LuraAdCompanion>? | Companion ads |
icons | List<LuraAdIcon>? | Ad icons |
interactiveFiles | List<LuraInteractiveFile>? | Interactive creative files |
callToActionItems | List<LuraCallToActionItem>? | Call-to-action items |
isClickable | Boolean | Whether the ad has a click-through URL |
@Serializable
class LuraAd(
var duration: Double,
var skipOffset: Double,
val title: String?,
val description: String?,
val companions: List<LuraAdCompanion>?,
val icons: List<LuraAdIcon>?,
val interactiveFiles: List<LuraInteractiveFile>?,
val callToActionItems: List<LuraCallToActionItem>?,
val isClickable: Boolean,
)
LuraAdIcon
| Parameter | Type | Description |
|---|---|---|
program | String? | Program represented in the icon |
width | String? | Pixel width of the icon |
height | String? | Pixel height of the icon |
xPosition | String? | X-coordinate relative to the ad display area |
yPosition | String? | Y-coordinate relative to the ad display area |
duration | Double? | Display duration in seconds |
offset | String? | Delay before display in seconds |
apiFramework | String? | API framework for the icon resource |
pxRatio | String? | Pixel ratio for the icon |
clicks | LuraAdClicks? | Icon click data |
type | String? | Resource type |
creativeType | String? | MIME type of the creative |
data | String? | Creative data (URL or HTML) |
@Serializable
data class LuraAdIcon(
val program: String? = null,
val width: String? = null,
val height: String? = null,
val xPosition: String? = null,
val yPosition: String? = null,
val duration: Double? = null,
val offset: String? = null,
val apiFramework: String? = null,
val pxRatio: String? = null,
val clicks: LuraAdClicks? = null,
val type: String? = null,
val creativeType: String? = null,
val data: String? = null,
)
LuraAdClicks
| Parameter | Type | Description |
|---|---|---|
clickThrough | String? | Click-through URI |
clickTracking | List<LuraAdClickTracking>? | Click tracking URLs |
@Serializable
data class LuraAdClicks(
val clickThrough: String? = null,
val clickTracking: List<LuraAdClickTracking>? = null,
)
LuraAdClickTracking
| Parameter | Type | Description |
|---|---|---|
id | String? | Click identifier |
url | String? | Tracking resource URI |
@Serializable
data class LuraAdClickTracking(
val id: String? = null,
val url: String? = null,
)
LuraAdCompanion
| Parameter | Type | Description |
|---|---|---|
id | String? | An optional identifier for the creative. |
apiFramework | String? | The API necessary to communicate with the creative if available. |
width | String? | The pixel width of the placement slot for which the creative is intended. |
height | String? | The pixel height of the placement slot for which the creative is intended. |
assetWidth | String? | The pixel width of the creative. |
assetHeight | String? | The pixel height of the creative. |
expandedWidth | String? | The maximum pixel width of the creative in its expanded state. |
expandedHeight | String? | The maximum pixel height of the creative in its expanded state. |
adSlotId | String? | Used to identify desiredplacement on a publisher’spage. Values to be used should be discussed between publishers and advertisers |
pxratio | String? | The pixel ratio for which the companion creative is intended. The pixel ratio is the ratio of physical pixels on the device to the device-independent pixels. An ad intended for display on a device with a pixel ratio that is twice that of a standard 1:1 pixel ratio would use the value "2." Default value is "1." |
renderingMode | String? | Used to indicate when and where to use this companion ad. Values can be “default” or “end-card” or “concurrent”. If this field is empty or not given, “default” will be used. |
altText | String? | A string to describe the creative when an ad viewer mouses over the ad. |
clickThrough | String? | A URI to the advertiser’s page that should open when the viewer clicks the companion ad. |
clickTracking | List<String>? | A URI to a tracking resource file used to track a companion clickthrough |
type | String? | Resource type of the creative |
creativeType | String? | Mime type of the creative |
data | String? | Data of the creative, URL for static and iframe resources, html code snippet for html resource. Check the type field for the resource type |
tracking | List<LuraAdCompanionTracking>? | racking events of the companion |
@Serializable
data class LuraAdCompanion(
val id: String? = null,
val apiFramework: String? = null,
val width: String? = null,
val height: String? = null,
val assetWidth: String? = null,
val assetHeight: String? = null,
val expandedWidth: String? = null,
val expandedHeight: String? = null,
val adSlotId: String? = null,
val pxratio: String? = null,
val renderingMode: String? = null,
val altText: String? = null,
val clickThrough: String? = null,
val clickTracking: List<String>? = null,
val type: String? = null,
val creativeType: String? = null,
val data: String? = null,
val tracking: List<LuraAdCompanionTracking>? = null,
)
LuraAdCompanionTracking
| Parameter | Type | Description |
|---|---|---|
type | String? | Tracking event type |
url | String? | Tracking resource URI |
offset | String? | Offset for progress trackings |
@Serializable
data class LuraAdCompanionTracking(
val type: String?,
val url: String?,
val offset: String? = null,
)
LuraInteractiveFile
| Parameter | Type | Description |
|---|---|---|
apiFramework | String? | API framework |
type | String? | MIME type |
url | String? | Resource URI |
variableDuration | Boolean? | Whether duration can be extended by user interaction |
@Serializable
data class LuraInteractiveFile(
val apiFramework: String? = null,
val type: String? = null,
val url: String? = null,
val variableDuration: Boolean? = null,
)
LuraCallToActionItem
| Parameter | Type | Description |
|---|---|---|
id | String? | CTA identifier |
label | String? | Button label |
buttonVariant | Int? | Custom button variant key |
action | Int? | Action tag |
data | String? | Action data |
start | Int? | Start time in seconds (-1 for beginning) |
end | Int? | End time in seconds (-1 for end of ad) |
@Serializable
data class LuraCallToActionItem(
val id: String? = null,
var label: String? = null,
val buttonVariant: Int? = null,
var action: Int? = null,
val data: String? = null,
val start: Int? = null,
val end: Int? = null,
)
Plugins
LuraPluginsConfigurations
| Parameter | Type | Description |
|---|---|---|
adobeMediaAnalytics | AdobeMediaAnalyticsConfiguration? | Adobe Media Analytics configuration |
comscore | ComscoreConfiguration? | Comscore configuration |
conviva | ConvivaConfiguration? | Conviva configuration |
nielsen | NielsenConfiguration? | Nielsen configuration |
openMeasurement | OpenMeasurementConfiguration? | Open Measurement configuration |
pal | PalConfiguration? | PAL configuration |
moat | MoatConfiguration? | Moat configuration |
@Serializable
data class LuraPluginsConfigurations(
val adobeMediaAnalytics: AdobeMediaAnalyticsConfiguration? = null,
val comscore: ComscoreConfiguration? = null,
val conviva: ConvivaConfiguration? = null,
val nielsen: NielsenConfiguration? = null,
val openMeasurement: OpenMeasurementConfiguration? = null,
val pal: PalConfiguration? = null,
val moat: MoatConfiguration? = null,
)
AdobeMediaAnalyticsConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
appId | String | Adobe app ID |
griffonUrl | String? | Griffon URL |
metadata | Map<String, Any?>? | Custom metadata |
contentInfo | AdobeContentInfo? | Content info |
@Serializable
data class AdobeMediaAnalyticsConfiguration(
override var enabled: Boolean = true,
val appId: String = "",
val griffonUrl: String? = null,
val metadata: Map<String, Any?>? = null,
val contentInfo: AdobeContentInfo? = null,
) : PluginConfiguration()
AdobeContentInfo
| Parameter | Type | Description |
|---|---|---|
name | String | Content name |
id | String | Content ID |
length | Double | Content length |
streamType | String | Stream type |
mediaType | String | Media type |
@Serializable
data class AdobeContentInfo(
val name: String,
val id: String,
val length: Double,
val streamType: String,
val mediaType: String,
)
ComscoreConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
appName | String | Application name |
publisherId | String | Publisher ID |
publisherSecret | String | Publisher secret |
autoUpdateMode | Int | Auto-update mode |
autoUpdateInterval | Int | Auto-update interval |
userHasConsent | Boolean? | Whether user has given consent |
brandname | String | Brand name |
implementationId | String | Implementation ID |
projectId | String | Project ID |
metadata | Map<String, Any?>? | Custom metadata |
@Serializable
data class ComscoreConfiguration(
override var enabled: Boolean = true,
val appName: String = "",
val publisherId: String = "",
val publisherSecret: String = "",
val autoUpdateMode: Int = 0,
val autoUpdateInterval: Int = 20500,
val userHasConsent: Boolean? = null,
val brandname: String = "",
val implementationId: String = "",
val projectId: String = "",
val metadata: Map<String, Any?>? = null,
) : PluginConfiguration()
ConvivaConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
customerKey | String | Conviva customer key |
gatewayUrl | String | Gateway URL (test only) |
viewerId | String? | Viewer identifier |
playerName | String? | Player name |
contentInfo | Map<String, Any?>? | Content metadata |
deviceMetadata | Map<String, Any?>? | Device metadata |
@Serializable
data class ConvivaConfiguration(
override var enabled: Boolean = true,
var customerKey: String = "",
var gatewayUrl: String = "",
var viewerId: String? = null,
var playerName: String? = null,
val contentInfo: Map<String, Any?>? = null,
val deviceMetadata: Map<String, Any?>? = null,
) : PluginConfiguration()
NielsenConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
appId | String? | Nielsen app ID |
sfCode | String? | SF code |
initialization | Map<String, Any?>? | Initialization parameters |
metadata | Map<String, Any?>? | Custom metadata |
@Serializable
data class NielsenConfiguration(
override var enabled: Boolean = true,
val appId: String? = null,
val sfCode: String? = null,
val initialization: Map<String, Any?>? = null,
val metadata: Map<String, Any?>? = null,
) : PluginConfiguration()
OpenMeasurementConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
@Serializable
data class OpenMeasurementConfiguration(
override var enabled: Boolean = true,
) : PluginConfiguration()
PalConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
ppid | String? | Publisher provided identifier |
descriptionUrl | String | Description URL for the ad server |
skippablesSupported | Boolean | Whether skippable ads are supported |
forceLimitedAds | Boolean | Force limited ads regardless of TCF |
disableLimitedAdsStorage | Boolean | Disable limited ads storage |
disableFirstPartyIdentifiers | Boolean | Disable first-party identifiers |
directedForChildOrUnknownAge | Boolean | Directed for child or unknown age |
@Serializable
data class PalConfiguration(
override var enabled: Boolean = true,
val ppid: String? = null,
val descriptionUrl: String = "",
val skippablesSupported: Boolean = true,
val forceLimitedAds: Boolean = false,
val disableLimitedAdsStorage: Boolean = false,
val disableFirstPartyIdentifiers: Boolean = false,
val directedForChildOrUnknownAge: Boolean = false,
) : PluginConfiguration()
MoatConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether the plugin is enabled |
partnerCode | String | Moat partner code |
@Serializable
data class MoatConfiguration(
override var enabled: Boolean = true,
val partnerCode: String = "",
) : PluginConfiguration()
Analytics
LuraAnalyticsConfiguration
| Parameter | Type | Description |
|---|---|---|
enabled | Boolean | Whether analytics is enabled |
host | String? | Analytics server endpoint URL |
apiKey | String? | API key for authentication |
period | Double | Payload sending period in seconds |
app | App? | Application information |
session | Session? | Session information |
@Serializable
data class LuraAnalyticsConfiguration(
override var enabled: Boolean = true,
val host: String? = null,
val apiKey: String? = null,
val period: Double = 10.0,
val app: App? = null,
val session: Session? = null,
) : PluginConfiguration()
App
| Parameter | Type | Description |
|---|---|---|
id | String | Application identifier |
name | String | Application name |
version | String | Application version |
@Serializable
data class App(
val id: String,
val name: String,
val version: String,
)
Session
| Parameter | Type | Description |
|---|---|---|
data | String | Session data |
userId | String | User identifier |
@Serializable
data class Session(
val data: String,
val userId: String,
)
Events
LuraEventListener
typealias LuraEventListener = FlowCollector<LuraEvent>
LuraOfflineEventListener
typealias LuraOfflineEventListener = FlowCollector<LuraOfflineEvent>
LuraEvent
| Parameter | Type | Description |
|---|---|---|
name | String? | Event name |
type | LuraEventType | Event type |
data | EventData? | Event payload |
@Serializable
data class LuraEvent(
var name: String? = null,
val type: LuraEventType,
val data: EventData? = null,
)
LuraEventData.RateChanged
| Parameter | Type | Description |
|---|---|---|
playbackRate | Float | Current playback rate |
@Serializable
data class RateChanged(val playbackRate: Float) : LuraEventData()
LuraEventData.DurationChanged
| Parameter | Type | Description |
|---|---|---|
duration | Double | Duration in seconds |
@Serializable
data class DurationChanged(val duration: Double) : LuraEventData()
LuraEventData.TrickPlayData
| Parameter | Type | Description |
|---|---|---|
time | Double | Time position in seconds |
width | Int | Image width |
height | Int | Image height |
imageData | String | Base64 image data |
rows | Int | Sprite sheet rows |
columns | Int | Sprite sheet columns |
offset | List<Int> | Offset within sprite sheet |
@Serializable
data class TrickPlayData(
val time: Double,
val width: Int,
val height: Int,
val imageData: String,
val rows: Int = 1,
val columns: Int = 1,
val offset: List<Int> = listOf(0, 0),
) : LuraEventData()
LuraEventData.TimeUpdate
| Parameter | Type | Description |
|---|---|---|
contentTime | Double | Content time in seconds (excluding server-side ads) |
duration | Double | Content duration in seconds |
annotations | List<LuraAnnotation>? | Active annotations |
ad | Ad? | Current ad progress data |
type | LuraType | Current playback type |
highlight | Highlight? | Current highlight progress data |
@Serializable
data class TimeUpdate(
val contentTime: Double = 0.0,
val duration: Double = 0.0,
var annotations: List<LuraAnnotation>? = null,
var ad: Ad? = null,
var type: LuraType = LuraType.Content,
var highlight: Highlight? = null,
) : LuraEventData()
Ad
| Parameter | Type | Description |
|---|---|---|
id | String | Ad identifier |
totalAds | Int | Total ads in the break |
adPosition | Int | Position of the current ad |
breakDuration | Double | Ad break duration in seconds |
adDuration | Double | Current ad duration in seconds |
timeInAd | Double | Time elapsed in current ad in seconds |
timeInBreak | Double | Time elapsed in ad break in seconds |
skipOffset | Double | Skip offset in seconds |
isClickable | Boolean | Whether the ad is clickable |
@Serializable
data class Ad(
val id: String = "",
val totalAds: Int = 0,
val adPosition: Int = -1,
val breakDuration: Double = 0.0,
val adDuration: Double = 0.0,
val timeInAd: Double = 0.0,
val timeInBreak: Double = 0.0,
val skipOffset: Double = 0.0,
val isClickable: Boolean = false,
)
Highlight
| Parameter | Type | Description |
|---|---|---|
id | String | Highlight identifier |
position | Int | Highlight position |
duration | Double | Highlight duration in seconds |
currentTime | Double | Current time within highlight in seconds |
totalCount | Int | Total highlight count |
videoRightFraction | Float | Video right fraction |
videoTopFraction | Float | Video top fraction |
@Serializable
data class Highlight(
val id: String = "",
val position: Int = 0,
val duration: Double = 0.0,
val currentTime: Double = 0.0,
val totalCount: Int = 0,
val videoRightFraction: Float = 0f,
val videoTopFraction: Float = 0f,
)
LuraEventData.InterstitialsData
| Parameter | Type | Description |
|---|---|---|
breaks | List<LuraAdBreak> | Scheduled ad breaks |
@Serializable
data class InterstitialsData(val breaks: List<LuraAdBreak>) : LuraEventData()
LuraEventData.Error
| Parameter | Type | Description |
|---|---|---|
type | String | Error type |
message | String? | Error message |
errorCode | String? | Error code |
@Serializable
data class Error(
val type: String = "",
var message: String? = null,
var errorCode: String? = null,
) : LuraEventData()
LuraEventData.VolumeChanged
| Parameter | Type | Description |
|---|---|---|
volume | Float | Current volume |
@Serializable
data class VolumeChanged(val volume: Float) : LuraEventData()
LuraEventData.MuteChanged
| Parameter | Type | Description |
|---|---|---|
muted | Boolean | Whether the player is muted |
@Serializable
data class MuteChanged(val muted: Boolean) : LuraEventData()
LuraEventData.VideoMetadata
| Parameter | Type | Description |
|---|---|---|
metadata | LuraVideoMetadata | Video metadata |
@Serializable
data class VideoMetadata(val metadata: LuraVideoMetadata) : LuraEventData()
LuraEventData.TrackChanged
| Parameter | Type | Description |
|---|---|---|
track | LuraTrack.Video | LuraTrack.Audio | LuraTrack.Text | LuraTrack.ViewGrid | Changed track |
trackType | String | Track type (audio, caption, video, or viewgrid) |
@Serializable
data class TrackChanged(val track: LuraTrack) : LuraEventData()
LuraEventData.AvailabilityWindow
| Parameter | Type | Description |
|---|---|---|
id | String | Availability window identifier |
start | Double | Start time in seconds |
end | Double | End time in seconds |
@Serializable
data class AvailabilityWindow(
val id: String,
val start: Double,
var end: Double,
) : LuraEventData()
LuraEventData.TimedMetadata
| Parameter | Type | Description |
|---|---|---|
data | Map<String, String> | Timed metadata key-value pairs |
@Serializable
data class TimedMetadata(val data: Map<String, String>) : LuraEventData()
LuraEventData.DashTimedMetadata
| Parameter | Type | Description |
|---|---|---|
event | String | Event name |
detail | Detail | Event detail |
@Serializable
data class DashTimedMetadata(val event: String, val detail: Detail) : LuraEventData()
Detail
| Parameter | Type | Description |
|---|---|---|
schemeIdUri | String | Scheme ID URI |
eventElement | String | Event element |
startTime | Double | Start time in seconds |
@Serializable
data class Detail(
val schemeIdUri: String,
val eventElement: String,
val startTime: Double,
)
LuraEventData.ShowCaption
| Parameter | Type | Description |
|---|---|---|
text | String | Caption text |
@Serializable
data class ShowCaption(val text: String = "") : LuraEventData()
LuraEventData.BufferChanged
| Parameter | Type | Description |
|---|---|---|
start | Double | Buffer start in seconds |
end | Double | Buffer end in seconds |
@Serializable
data class BufferChanged(val start: Double, val end: Double) : LuraEventData()
LuraEventData.CustomDataChanged
| Parameter | Type | Description |
|---|---|---|
key | String | Custom data key |
value | String? | Custom data value |
@Serializable
data class CustomDataChanged(val key: String, val value: String? = null) : LuraEventData()
LuraEventData.EventNotifiedData
| Parameter | Type | Description |
|---|---|---|
type | NotifiableEventType | Notifiable event type |
payload | String? | Event payload |
@Serializable
data class EventNotifiedData(
val type: NotifiableEventType,
val payload: String? = null,
) : LuraEventData()
LuraEventData.ScreenState
| Parameter | Type | Description |
|---|---|---|
state | LuraScreenState | Current screen state |
@Serializable
data class ScreenState(val state: LuraScreenState) : LuraEventData()
LuraEventData.Warning
| Parameter | Type | Description |
|---|---|---|
message | String? | Warning message |
errorCode | Int? | Warning error code |
@Serializable
data class Warning(val message: String?, val errorCode: Int?) : LuraEventData()
LuraEventData.PlaylistData
| Parameter | Type | Description |
|---|---|---|
item | LuraConfiguration | Current playlist item |
index | Int | Current playlist index |
@Serializable
data class PlaylistData(val item: LuraConfiguration, val index: Int) : LuraEventData()
LuraEventData.AutoSwitchCounterData
| Parameter | Type | Description |
|---|---|---|
item | LuraConfiguration? | Next playlist item |
index | Int | Next playlist index |
remaining | Double | Remaining time in seconds |
@Serializable
data class AutoSwitchCounterData(
val item: LuraConfiguration?,
val index: Int,
val remaining: Double,
) : LuraEventData()
LuraEventData.LuraEngagementData
| Parameter | Type | Description |
|---|---|---|
id | String? | Engagement identifier |
count | Int? | Engagement count |
histogram | List<Int>? | Engagement histogram |
@Serializable
data class LuraEngagementData(
val id: String? = null,
val count: Int? = null,
val histogram: List<Int>? = null,
) : LuraEventData()
LuraEventData.NonLinearMarkersData
| Parameter | Type | Description |
|---|---|---|
markers | List<SgaiMarker> | SGAI timeline markers |
@Serializable
data class NonLinearMarkersData(val markers: List<SgaiMarker>) : LuraEventData()
SgaiMarker
| Parameter | Type | Description |
|---|---|---|
id | String | Marker identifier |
offset | Double | Offset in seconds |
type | String | Marker type |
duration | Long | Duration in milliseconds |
@Serializable
data class SgaiMarker(
val id: String,
val offset: Double,
val type: String = "non_linear",
val duration: Long = 30000L,
) : LuraEventData()
LuraEventData.NonLinearProgressData
| Parameter | Type | Description |
|---|---|---|
adId | String | Active non-linear ad ID |
time | Double | Current time in seconds |
duration | Double | Ad duration in seconds |
@Serializable
data class NonLinearProgressData(
val adId: String,
val time: Double,
val duration: Double,
) : LuraEventData()
LuraEventData.HighlightAutoSwitchCounterData
| Parameter | Type | Description |
|---|---|---|
remaining | Double | Remaining auto-switch time in seconds |
@Serializable
data class HighlightAutoSwitchCounterData(val remaining: Double) : LuraEventData()
LuraEventData.HighlightLoadedGrid
| Parameter | Type | Description |
|---|---|---|
mode | String | Grid mode |
viewportWidth | Int | Viewport width |
viewportHeight | Int | Viewport height |
content | HighlightLoadedGridSlot | Content slot |
highlight | HighlightLoadedGridSlot | Highlight slot |
@Serializable
data class HighlightLoadedGrid(
val mode: String,
val viewportWidth: Int,
val viewportHeight: Int,
val content: HighlightLoadedGridSlot,
val highlight: HighlightLoadedGridSlot,
)
HighlightLoadedGridSlot
| Parameter | Type | Description |
|---|---|---|
videoWidth | Int | Video width |
videoHeight | Int | Video height |
relativeX | Float | Relative X position |
relativeY | Float | Relative Y position |
relativeWidth | Float | Relative width |
relativeHeight | Float | Relative height |
@Serializable
data class HighlightLoadedGridSlot(
val videoWidth: Int,
val videoHeight: Int,
val relativeX: Float,
val relativeY: Float,
val relativeWidth: Float,
val relativeHeight: Float,
)
LuraEventData.HighlightLoadedData
| Parameter | Type | Description |
|---|---|---|
highlight | LuraHighlight | Loaded highlight |
grid | HighlightLoadedGrid? | Grid layout data |
@Serializable
data class HighlightLoadedData(
val highlight: LuraHighlight,
val grid: HighlightLoadedGrid? = null,
) : LuraEventData()
LuraEventData.LatencyModeChanged
| Parameter | Type | Description |
|---|---|---|
latencyMode | LuraLatencyMode | Active latency mode |
availability | Availability | Available latency modes |
@Serializable
data class LatencyModeChanged(
val latencyMode: LuraLatencyMode,
val availability: Availability,
) : LuraEventData()
Availability
| Parameter | Type | Description |
|---|---|---|
def | Boolean | Whether default latency mode is available |
low | Boolean | Whether low-latency mode is available |
@Serializable
data class Availability(
@SerialName("def") val def: Boolean,
@SerialName("low") val low: Boolean,
)
Metadata
LuraVideoMetadata
| Parameter | Type | Description |
|---|---|---|
eventId | String? | Event identifier |
title | String? | Video title |
description | String? | Video description |
tsStart | String? | Start timestamp |
tsEnd | String? | End timestamp |
dvrAvailability | String? | DVR availability flag |
customMetadata | Map<String, Any?>? | Custom metadata fields |
@Serializable
data class LuraVideoMetadata(
val eventId: String? = null,
val title: String? = null,
val description: String? = null,
val tsStart: String? = null,
val tsEnd: String? = null,
val dvrAvailability: String? = null,
val customMetadata: Map<String, Any?>? = null,
)
Enums & Constants
LuraType
| Case | Description |
|---|---|
None | Current video part is unavailable |
Ad | Current video part is an ad |
Slate | Current video part is a slate |
Content | Current video part is content |
Highlight | Current video part is a highlight |
enum class LuraType {
None, Ad, Slate, Content, Highlight,
}
LuraScreenState
| Case | Value |
|---|---|
FULLSCREEN | "FULLSCREEN" |
PICTURE_IN_PICTURE | "PICTURE_IN_PICTURE" |
WINDOWED | "WINDOWED" |
@Serializable
enum class LuraScreenState {
@SerialName("FULLSCREEN") FULLSCREEN,
@SerialName("PICTURE_IN_PICTURE") PICTURE_IN_PICTURE,
@SerialName("WINDOWED") WINDOWED,
}
NotifiableEventType
| Case | Value |
|---|---|
CLICK | "CLICK" |
CTA_CLICK | "CTA_CLICK" |
ACTIVITY | "ACTIVITY" |
BACK_CLICK | "BACK_CLICK" |
enum class NotifiableEventType(val type: String) {
CLICK("CLICK"),
CTA_CLICK("CTA_CLICK"),
ACTIVITY("ACTIVITY"),
BACK_CLICK("BACK_CLICK"),
}
LuraCastTargets
| Case | Value |
|---|---|
CHROMECAST | "chromecast" |
enum class LuraCastTargets {
CHROMECAST,
}
LuraMimeType
| Case | MIME type |
|---|---|
HLS | application/x-mpegurl |
DASH | application/dash+xml |
MP4 | video/mp4 |
IMAGE_BIF | image/bif |
IMAGE | image/ |
enum class LuraMimeType(val type: String) {
HLS("application/x-mpegurl"),
DASH("application/dash+xml"),
MP4("video/mp4"),
IMAGE_BIF("image/bif"),
IMAGE("image/"),
}
LuraXPosition
| Case | Value |
|---|---|
Left | "left" |
Right | "right" |
Center | "center" |
@Serializable
enum class LuraXPosition {
@SerialName("left") Left,
@SerialName("right") Right,
@SerialName("center") Center,
}
LuraYPosition
| Case | Value |
|---|---|
Top | "top" |
Bottom | "bottom" |
Center | "center" |
@Serializable
enum class LuraYPosition {
@SerialName("top") Top,
@SerialName("bottom") Bottom,
@SerialName("center") Center,
}
LuraSlideDirections
| Case | Value |
|---|---|
Left | "left" |
Right | "right" |
Up | "up" |
Down | "down" |
@Serializable
enum class LuraSlideDirections {
@SerialName("left") Left,
@SerialName("right") Right,
@SerialName("up") Up,
@SerialName("down") Down,
}