View a markdown version of this page

AWS Elemental MediaTailor ADS 日志、描述和事件类型 - AWS Elemental MediaTailor

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Elemental MediaTailor ADS 日志、描述和事件类型

以下各节描述了为描述广告决策服务器 (ADS) 的事件而 MediaTailor 发出的日志。这些是AdDecisionServerInteractions日志。

AdDecisionServerInteractions events

在与广告决策服务器 (ADS) MediaTailor 互动期间,会发出以下事件。

Log 说明
AD_MARKER_FOUND MediaTailor 在清单中找到了广告标记。
BEACON_FIRED 已发射跟踪信标来报告广告事件。在服务器端报告模式(默认)下,会 MediaTailor 触发信标。在客户端报告模式下,回放设备会发射信标。
EMPTY_VAST_RESPONSE ADS 返回了一个空的 VAST 响应,其中包含零个广告。
EMPTY_VMAP_RESPONSE ADS 返回了一个空的 VMAP 响应。
ERROR_ADS_INVALID_RESPONSE ADS 返回的状态码不是 200。
ERROR_ADS_IO MediaTailor 尝试与 ADS 通信时遇到错误。
ERROR_ADS_RESPONSE_PARSE MediaTailor 解析 ADS 响应时遇到错误。
ERROR_ADS_RESPONSE_UNKNOWN_ROOT_ELEMENT ADS 响应包含无效的根元素。
ERROR_ADS_TIMEOUT 向 ADS 发出的 MediaTailor 请求超时。
ERROR_DISALLOWED_HOST 不允许使用 ADS 主机。
ERROR_FIRING_BEACON_FAILED MediaTailor 发射追踪信标失败。
ERROR_PERSONALIZATION_DISABLED 此会话中已禁用广告插入。
ERROR_UNKNOWN MediaTailor 在 ADS 请求期间遇到了未知错误。
ERROR_UNKNOWN_HOST ADS 主机未知。
ERROR_VAST_INVALID_MEDIA_FILE VAST Ad 有一个无效或缺失的MediaFile元素。
ERROR_VAST_INVALID_VAST_AD_TAG_URI VAST 响应包含无效内容VASTAdTagURI
ERROR_VAST_MISSING_CREATIVES VAST Ad 包含零个或多个Creatives元素。只需要一个Creatives元素。
ERROR_VAST_MISSING_IMPRESSION VAST Ad 包含零个Impression元素。至少需要一个Impression元素。
ERROR_VAST_MISSING_MEDIAFILES VAST Ad 包含零个或多个MediaFiles元素。只需要一个MediaFiles元素。
ERROR_VAST_MISSING_OVERLAYS MediaTailor 没有收到来自广告服务器的任何非线性广告素材。
ERROR_VAST_MULTIPLE_LINEAR VAS Ad T 包含多个Linear元素。
ERROR_VAST_MULTIPLE_TRACKING_EVENTS VAS Ad T 包含多个TrackingEvents元素。
ERROR_VAST_REDIRECT_EMPTY_RESPONSE VAST 重定向请求返回的响应为空。
ERROR_VAST_REDIRECT_FAILED VAST 重定向请求遇到了错误。
ERROR_VAST_REDIRECT_MULTIPLE_VAST VAST 重定向请求返回了多个广告。
FILLED_AVAIL MediaTailor 成功填补了空缺。
FILLED_OVERLAY_AVAIL MediaTailor 成功填充了叠加层。
INTERSTITIAL_VOD_FAILURE 在填写 VOD 播放列表的插页式广告时,ADS 请求或响应遇到了问题。不会插入任何广告。
INTERSTITIAL_VOD_SUCCESS MediaTailor 已成功填充 VOD 播放列表的插页式广告。
MAKING_ADS_REQUEST MediaTailor 正在向 ADS 请求广告。
MODIFIED_TARGET_URL MediaTailor 修改了出站目标 URL。
NON_AD_MARKER_FOUND MediaTailor 在清单中发现了一个不可操作的广告标记。
PRE_ADS_REQUEST_FUNCTION_COMPLETED 广告前请求挂钩中的单个功能已完成。这是一种选择加入的事件类型。
PRE_ADS_REQUEST_FUNCTION_ERROR 广告前请求挂钩中的单个功能失败。
PRE_ADS_REQUEST_HOOK_ERROR 广告前请求挂钩执行失败。
PRE_ADS_REQUEST_HOOK_SUMMARY 广告前请求挂钩执行摘要,包括成功或错误状态。这是一种选择加入的事件类型。
RAW_ADS_RESPONSE MediaTailor 收到了原始的 ADS 响应。
REDIRECTED_VAST_RESPONSE MediaTailor 在关注 VAST 重定向后收到了 VAST 响应。
VAST_REDIRECT VAST 广告响应包含重定向。
VAST_RESPONSE MediaTailor 收到了一个巨大的回应。
VOD_TIME_BASED_AVAIL_PLAN_SUCCESS MediaTailor 成功为 VOD 模板创建了基于时间的使用计划。
VOD_TIME_BASED_AVAIL_PLAN_VAST_RESPONSE_FOR_OFFSET MediaTailor 正在为 VOD 模板创建基于时间的使用计划。 MediaTailor 收到了针对时间偏移的 VAST 响应。
VOD_TIME_BASED_AVAIL_PLAN_WARNING_NO_ADVERTISEMENTS 在为 VOD 模板创建基于时间的可用计划时,ADS 请求或响应遇到了问题。不会插入任何广告。
WARNING_NO_ADVERTISEMENTS MediaTailor 填写空缺时遇到了问题。未插入任何广告。
WARNING_URL_VARIABLE_SUBSTITUTION_FAILED MediaTailor 无法替换 ADS 网址中的动态变量。检查网址配置。
WARNING_VPAID_AD_DROPPED VPAID 广告因缺少名单而被丢弃,或者会话使用服务器端报告。

ADS 日志描述

此部分描述了 ADS 日志描述的结构和内容。要在 JSON 编辑器中自行探究,请使用 广告日志 JSON 架构 上的列表。

ADS 日志中的每个事件都包含日志生成的 CloudWatch 标准字段。有关信息,请参阅使用日志见解分析 CloudWatch 日志数据

ADS 日志属性

此部分描述了 ADS 日志的属性。

属性 Type 必需 描述
adsRequestUrl 字符串 false 由发出的 ADS 请求的完整网址 MediaTailor。
avail 效用 类型的对象 false 有关 MediaTailor 充斥着广告的优惠的信息。目前,对于FILLED_AVAIL事件类型,这是它首次遇到可用性 MediaTailor 时创建的计划。最终填充效用的方式可能与此计划有所不同,具体取决于内容的播放方式。
awsAccountId 字符串 true 用于会话的 MediaTailor 配置的 AWS 账户 ID。
customerId 字符串 true AWS 账户 ID 的哈希版本,可用于关联多个日志条目。
eventDescription 字符串 true MediaTailor 服务提供的对触发此日志消息的事件的简短描述。默认情况下,这为空。示例:Got VAST response
eventTimestamp 字符串 true 事件的日期和时间。
eventType 字符串 true 已触发此日志消息的事件的代码。示例:VAST_RESPONSE
errorType 字符串 false 结构化错误分类。演讲PRE_ADS_REQUEST_HOOK_ERRORPRE_ADS_REQUEST_FUNCTION_ERROR活动. 值:INTERNAL_ERRORSYNTAX_ERRORRESOURCE_LIMIT_ERRORRESTRICTION_ERRORTIMEOUT_ERRORVALIDATION_ERROR
cause 字符串 false 描述特定故障的错误详细信息字符串。演讲PRE_ADS_REQUEST_HOOK_ERRORPRE_ADS_REQUEST_FUNCTION_ERROR活动.
eventId 字符串 false 每次挂钩调用的唯一标识符。使用此字段将钩子级别和函数级事件关联起来,以实现相同的执行。仅出现在函数事件中。
executionTimeMs 整数 false 执行时间(以毫秒为单位)。仅出现在函数事件中。
functionId 字符串 false 函数的标识符。在挂机事件中,这是在挂机上配置的函数。在函数事件中,这是执行器中的单个函数。仅出现在函数事件中。
functionType 字符串 false 函数的类型:CUSTOM_OUTPUTHTTP_REQUESTSEQUENTIAL_EXECUTOR、或CONCURRENT_EXECUTOR。仅出现在函数级事件上。
http object false HTTP 请求和响应的详细信息。仅在函数级事件上显示,仅适用于HTTP_REQUEST函数。包含request(网址、方法、标头、正文)responseTimeMsresponse(状态码、标头、正文)truncated和(当请求或响应正文被截断以适应日志事件大小限制时为 true)。
input object false Before-values 输出表达式所针对的变量。仅出现在函数级事件上。
output object false 函数生成的值。仅在PRE_ADS_REQUEST_FUNCTION_COMPLETED活动中出现。
status 字符串 false 挂钩执行结果:SUCCESSERROR。仅在PRE_ADS_REQUEST_HOOK_SUMMARY活动中出现。
originId 字符串 true 配置中的 MediaTailor 配置名称。这与视频内容源不同,它也是配置的一部分。
prefetchScheduleName 字符串 false 与此广告事件关联的预取时间表的名称。
requestHeaders requestheaders 类型的数组 false ADS 请求 MediaTailor 中包含的标头。通常,当对 ADS 的请求失败时,日志会包含这些内容以帮助进行问题排查。
requestId 字符串 true MediaTailor 请求 ID,可用于关联同一个请求的多个日志条目。
sessionId 字符串 true MediaTailor 分配给玩家会话的唯一数字标识符。玩家为会话提出的所有请求都具有相同的会话 ID。示例:e039fd39-09f0-46b2-aca9-9871cc116cde
sessionType 字符串(合法值:[DASH, HLS]) true 玩家流类型。
vastAd vastAd 类型的对象 false 有关从 VAST 响应中解析的单个广告的信息。
vastResponse vastResponse 类型的对象 false 有关从 ADS MediaTailor 收到的 VAST 响应的信息。
vodCreativeOffsets vod CreativeOffsets 类型的对象 false 根据 VMAP 响应,表示清单中的时间偏移 MediaTailor 将插入可用位置的地图。
vodVastResponseTimeOffset 数字 false VOD 广告插入的 VMAP 特定时间偏差。

adContent

此部分描述了 ADS 日志 adContent 的属性。

ADS 日志 adContent 属性
属性 Type 必需 说明
adPlaylistUris 广告 PlaylistUris 类型的对象 false 从变体的原始清单到变体的广告清单的映射。对于 DASH,这包含一个条目,因为所有变体都在一个 DASH 清单中表示。

广告 PlaylistUris

本节介绍了 ADS 日志广告的属性PlaylistUris。

ADS 日志和PlaylistUris 属性
属性 Type 必需 描述
<any string> 字符串 false 特定变体的广告清单的 URL。

效用

此部分描述了 ADS 日志效用的属性。

ADS 日志效用属性
属性 Type 必需 描述
availId 字符串 true 此效用的唯一标识符。对于 HLS,这是效用在其中开始的媒体序列号。对于 DASH,这是周期 ID。
creativeAds creativeAd 类型的数组 true MediaTailor 插入广告的广告。
fillRate 数字 true 广告填充效用持续时间(从 0.0(对于 0%)到 1.0(对于 100%))的速率。
filledDuration 数字 true 所有插入到效用中的广告的持续时间的总和。
numAds 数字 true 在广告中 MediaTailor 插入的广告数量。
originAvailDuration 数字 true 来源(CUE_OUTSCTE)中的内容流指定的效用的持续时间。
skippedAds skippedAd 类型的数组 false 由于TRANSCODE_IN_PROGRESS和之类的原因, MediaTailor 未插入的广告TRANSCODE_ERROR

有关跳过广告的原因列表,请参阅跳过广告疑难解答

slateAd slateAd 类型的对象 true 有关 slate 广告的信息,该广告 MediaTailor 用于填充可用区中任何未填充的细分。

creativeAd

此部分描述了 ADS 日志 creativeAd 的属性。

ADS 日志 creativeAd 属性
属性 Type 必需 说明
adContent adContent 类型的对象 true 有关已插入广告的内容的信息。
creativeUniqueId 字符串 true 广告的唯一标识符,用作转码的密钥。这是 VAST 响应中广告素材的 ID 字段(如果可用)。否则,它是广告的 Mezzanine URL。
trackingEvents trackingEvents 类型的对象 true 广告的各种跟踪事件的跟踪信标 URL。密钥为事件名称,值为信标 URL 的列表。
transcodedAdDuration 数字 true 从转码资产计算的广告持续时间。
uri 字符串 true Mezzanine 广告的 URL,这是转码器的输入。
vastDuration 数字 true 广告的持续时间(从 VAST 响应解析)。

requestheaders

此部分描述了 ADS 日志 requestheaders 的属性。

ADS 日志 requestheaders 属性
属性 Type 必需 描述
name 字符串 true 标头的名称。
value 字符串 true 标头的值。

skippedAd

此部分描述了 ADS 日志 skippedAd 的属性。

ADS 日志 skippedAd 属性
属性 Type 必需 描述
adMezzanineUrl 字符串 true 跳过的广告的 Mezzanine URL。
creativeUniqueId 字符串 true 广告的唯一标识符,用作转码的密钥。这是 VAST 响应中广告素材的 ID 字段(如果可用)。否则,它是广告的 Mezzanine URL。
skippedReason 字符串 true 用于指示未插入广告的原因的代码。示例:TRANSCODE_IN_PROGRESS

有关跳过广告的原因列表,请参阅跳过广告疑难解答

transcodedAdDuration 数字 false 从转码资产计算的广告持续时间。
vastDuration 数字 true 广告的持续时间(从 VAST 响应解析)。

slateAd

此部分描述了 ADS 日志 slateAd 的属性。

ADS 日志 slateAd 属性
属性 Type 必需 说明
adContent adContent 类型的对象 true 有关已插入广告的内容的信息。
creativeUniqueId 字符串 true 广告的唯一标识符,用作转码的密钥。这是 VAST 响应中广告素材的 ID 字段(如果可用)。否则,它是广告的 Mezzanine URL。
transcodedAdDuration 数字 true 从转码资产计算的广告持续时间。
uri 字符串 true Mezzanine 广告的 URL,这是转码器的输入。

trackingEvents

此部分描述了 ADS 日志 trackingEvents 的属性。

ADS 日志 trackingEvents 属性
属性 Type 必需 说明
<any string> 字符串类型的数组 false 指定跟踪事件(展示、完成等)的信标 URL 的列表

vastAd

此部分描述了 ADS 日志 vastAd 的属性。

ADS 日志 vastAd 属性
属性 Type 必需 描述
adSystem 字符串 true VAST 响应中 AdSystem 标签的值。
adTitle 字符串 true VAST 响应中对广告可用的媒体文件。
creativeAdId 字符串 true VAST 响应中 Creative 标签的 adId 属性的值。
creativeId 字符串 true VAST 响应中 Creative 标签的 id 属性的值。
duration 数字 true 广告的大致持续时间,基于 VAST 响应中 linear 元素的 duration 标签。
trackingEvents trackingEvents 类型的对象 true 广告的各种跟踪事件的跟踪信标 URL。密钥为事件名称,值为信标 URL 的列表。
vastAdId 字符串 true VAST 响应中 Ad 标签的 id 属性的值。
vastAdTagUri 字符串 false 广告的 VMAP-specific 重定向 URI。
vastMediaFiles 巨大的 MediaFile 类型的数组 true VAST 响应中对广告可用的媒体文件的列表。

巨大的 MediaFile

本节介绍了 ADS 日志的属性 vast MediaFile。

ADS 记录大量MediaFile 房产
属性 Type 必需 描述
apiFramework 字符串 true 管理媒体文件所需的 API 框架。示例:VPAID
bitrate 数字 true 媒体文件的比特率。
delivery 字符串 true 用于媒体文件的协议,设置为渐进式或流式传输。
height 数字 true 媒体文件的像素高度。
id 字符串 true MediaFile 标签的 id 属性的值。
type 字符串 true 媒体文件的 MIME 类型,取自 MediaFile 标签的 type 属性。
uri 字符串 true Mezzanine 广告的 URL,这是转码器的输入。
width 数字 true 媒体文件的像素宽度。

vastResponse

此部分描述了 ADS 日志 vastResponse 的属性。

ADS 日志 vastResponse 属性
属性 Type 必需 说明
errors 字符串类型的数组 true 从 VAST 响应中的 Error 标签解析的错误 URL。
vastAds vastAd 类型的数组 true 从 VAST 响应解析的广告。
version 字符串 true VAST 规范版本(从响应中 VAST 标签的 version 属性解析)。

vod CreativeOffsets

本节介绍了 ADS 日志 vod CreativeOffsets 的属性。

ADS 日志 vod 属性 CreativeOffsets
属性 Type 必需 说明
<any string> vod CreativeOffset 类型的数组 false 从清单中的时间偏差到此时要插入的广告列表的映射。

vod CreativeOffset

本节介绍了 ADS 日志 vod CreativeOffset 的属性。

ADS 日志 vod 属性 CreativeOffset
属性 Type 必需 说明
adContent adContent 类型的对象 true 有关已插入广告的内容的信息。
creativeUniqueId 字符串 true 广告的唯一标识符,用作转码的密钥。这是 VAST 响应中广告素材的 ID 字段(如果可用)。否则,它是广告的 Mezzanine URL。
trackingEvents trackingEvents 类型的对象 true 广告的各种跟踪事件的跟踪信标 URL。密钥为事件名称,值为信标 URL 的列表。
transcodedAdDuration 数字 true 从转码资产计算的广告持续时间。
uri 字符串 true Mezzanine 广告的 URL,这是转码器的输入。
vastDuration 数字 true 广告的持续时间(从 VAST 响应解析)。

广告日志 JSON 架构

下面列出了 AWS Elemental MediaTailor ADS 日志的 JSON 架构。

{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "http://amazon.com/elemental/midas/mms/adsLogSchema.json", "type": "object", "title": "AWS Elemental MediaTailor ADS Log JSON Schema", "required": [ "eventType", "eventTimestamp", "requestId", "sessionType", "eventDescription", "awsAccountId", "customerId", "originId", "sessionId" ], "additionalProperties": false, "properties": { "eventType": { "$id": "#/properties/eventType", "type": "string", "description": "The code for the event that triggered this log message. Example: <code>VAST_RESPONSE</code>.", "examples": [ "FILLED_AVAIL" ] }, "eventTimestamp": { "$id": "#/properties/eventTimestamp", "type": "string", "description": "The date and time of the event.", "examples": [ "1970-01-01T00:00:00Z" ], "format": "date-time" }, "requestId": { "$id": "#/properties/requestId", "type": "string", "description": "The MediaTailor request ID, which you can use to correlate multiple log entries for the same request.", "examples": [ "c7c7ae8c-a61e-44e0-8efd-7723995337a1" ], "pattern": "^(.*)$" }, "sessionType": { "$id": "#/properties/sessionType", "type": "string", "enum": [ "HLS", "DASH" ], "description": "The player's stream type." }, "eventDescription": { "$id": "#/properties/eventDescription", "type": "string", "description": "A short description of the event that triggered this log message, provided by the MediaTailor service. By default, this is empty. Example: <code>Got VAST response</code>.", "default": "", "examples": [ "Got VAST response" ], "pattern": "^(.*)$" }, "awsAccountId": { "$id": "#/properties/awsAccountId", "type": "string", "description": "The AWS account ID for the MediaTailor configuration that was used for the session." }, "customerId": { "$id": "#/properties/customerId", "type": "string", "description": "The hashed version of the AWS account ID, which you can use to correlate multiple log entries.", "pattern": "^(.*)$" }, "originId": { "$id": "#/properties/originId", "type": "string", "description": "The configuration name from the MediaTailor configuration. This is different from the video content source, which is also part of the configuration.", "examples": [ "external-canary-dash-serverside-reporting-onebox" ], "pattern": "^(.*)$" }, "sessionId": { "$id": "#/properties/sessionId", "type": "string", "description": "The unique numeric identifier that MediaTailor assigned to the player session. All requests that a player makes for a session have the same session ID. Example: <code>e039fd39-09f0-46b2-aca9-9871cc116cde</code>.", "examples": [ "120b9873-c007-40c8-b3db-0f1bd194970b" ], "pattern": "^(.*)$" }, "avail": { "$id": "#/properties/avail", "type": "object", "title": "avail", "description": "Information about an avail that MediaTailor fills with ads. Currently, for the <code>FILLED_AVAIL</code> event type, this is the plan created by MediaTailor when it first encounters the avail. How the avail is eventually filled may vary from this plan, depending on how the content plays out. ", "required": [ "creativeAds", "originAvailDuration", "filledDuration", "fillRate", "driftMillisecondsAtAvailStart", "numAds", "slateAd", "availId" ], "additionalProperties": false, "properties": { "originAvailDuration": { "$id": "#/properties/avail/originAvailDuration", "type": "number", "description": "The duration of the avail as specified in the content stream from the origin (<code>CUE_OUT</code> or <code>SCTE</code>)." }, "filledDuration": { "$id": "#/properties/avail/filledDuration", "type": "number", "description": "The sum of the durations of all the ads inserted into the avail." }, "fillRate": { "$id": "#/properties/avail/fillRate", "type": "number", "description": "The rate at which the ads fill the avail duration, from 0.0 (for 0%) to 1.0 (for 100%)." }, "driftMillisecondsAtAvailStart": { "$id": "#/properties/avail/driftMillisecondsAtAvailStart", "type": "number", "description": "The cumulative drift at the beginning of this avail. A positive value implies that we are moving away from the live edge, a negative value implies that we are moving towards the live edge." }, "creativeAds": { "$id": "#/properties/avail/creativeAds", "type": "array", "description": "The ads that MediaTailor inserted into the avail.", "items": { "type": "object", "title": "creativeAd", "description": "Information about a single inserted ad.", "required": [ "uri", "creativeUniqueId", "adSystem", "adContent", "trackingEvents", "vastDuration", "transcodedAdDuration" ], "additionalProperties": false, "properties": { "uri": { "$ref": "#/definitions/adMezzanineUri" }, "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" }, "adSystem": { "$ref": "#/definitions/adSystem" }, "adContent": { "$ref": "#/definitions/adContent" }, "trackingEvents": { "$ref": "#/definitions/trackingEvents" }, "vastDuration": { "$ref": "#/definitions/vastDuration" }, "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" } } } }, "numAds": { "$id": "#/properties/avail/numAds", "type": "number", "description": "The number of ads that MediaTailor inserted into the avail." }, "slateAd": { "$id": "#/properties/avail/slateAd", "type": ["object", "null"], "title": "slateAd", "description": "Information about the slate ad, which MediaTailor uses to fill any unfilled segments in the avail.", "additionalProperties": false, "required": [ "uri", "creativeUniqueId", "adContent", "transcodedAdDuration" ], "properties": { "uri": { "$ref": "#/definitions/adMezzanineUri" }, "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" }, "adContent": { "$ref": "#/definitions/adContent" }, "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" } } }, "availId": { "$id": "#/properties/avail/availId", "type": "string", "description": "The unique identifier for this avail. For HLS, this is the media sequence number where the avail begins. For DASH, this is the period ID." }, "skippedAds": { "$id": "#/properties/avail/skippedAds", "type": "array", "description": "The ads that MediaTailor didn't insert, for reasons like <code>TRANSCODE_IN_PROGRESS</code> and <code>TRANSCODE_ERROR</code>.", "items": { "type": "object", "title": "skippedAd", "description": "Information about a single skipped ad.", "required": [ "creativeUniqueId", "adMezzanineUrl", "skippedReason", "vastDuration" ], "additionalProperties": false, "properties": { "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" }, "adMezzanineUrl": { "type": "string", "description": "The mezzanine URL of the skipped ad." }, "skippedReason": { "type": "string", "description": "The code that indicates why the ad wasn't inserted. Example: <code>TRANSCODE_IN_PROGRESS</code>." }, "vastDuration": { "$ref": "#/definitions/vastDuration" }, "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" }, "targetVariant": { "type": "object", "title": "targetVariant", "description": "The target variant of the source content. This key is present when an ad wasn't inserted due to the source content containing a variant that could not match to any variants present in this ad.", "required": [ "mediaProtocol", "mediaType", "bitrate", "mediaResolution", "codecs" ], "additionalProperties": false, "properties": { "mediaProtocol": { "type": "string", "description": "The media protocol of this variant, such as HLS.", "enum": [ "HLS", "DASH" ] }, "mediaType": { "type": "array", "description": "The media type of this variant, such as VIDEO.", "items": { "type": "string", "enum": [ "VIDEO", "AUDIO", "SUBTITLES", "TRICK_PLAY" ], "description": "Media type, such as VIDEO." } }, "bitrate": { "$ref": "#/definitions/bitrate" }, "mediaResolution": { "type": "object", "title": "mediaResolution", "description": "The media resolution of this variant.", "required": [ "width", "height" ], "additionalProperties": false, "properties": { "width": { "$ref": "#/definitions/width" }, "height": { "$ref": "#/definitions/height" } } }, "codecs": { "type": "array", "description": "The codecs of this variant.", "items": { "type": "string", "description": "Codec, such as avc1." } } } } } } }, "adBreakTrackingEvents": { "$id": "#properties/avail/adBreakTrackingEvents", "type": "object", "title": "adBreakTrackingEvents", "description": "VMAP/ad break tracking events and corresponding URL", "properties": { "items": { "$ref": "#/definitions/adBreakTrackingEvents" } } } } }, "vastResponse": { "$id": "#/properties/vastResponse", "type": "object", "title": "vastResponse", "description": "Information about the VAST response that MediaTailor received from the ADS.", "required": [ "version", "vastAds", "errors", "nonLinearAdsList" ], "additionalProperties": false, "properties": { "version": { "$id": "#/properties/vastResponse/version", "type": "string", "description": "The VAST specification version, parsed from the <code>version</code> attribute of the <code>VAST</code> tag in the response.", "examples": [ "3.0" ], "pattern": "^(.*)$" }, "vastAds": { "$id": "#/properties/vastResponse/vastAds", "type": "array", "description": "The ads parsed from the VAST response.", "items": { "$ref": "#/definitions/vastAd" } }, "errors": { "$id": "#/properties/vastResponse/errors", "type": "array", "description": "The error URLs parsed from the <code>Error</code> tags in the VAST response.", "items": { "type": "string", "description": "A single error URL." } }, "nonLinearAdsList": { "$id": "#/properties/vastResponse/nonLinearAds", "type": "array", "description": "A list of NonLinearAds as they are read from the VAST response.", "items": { "$ref": "#/definitions/nonLinearAds" } } } }, "vastAd": { "$ref": "#/definitions/vastAd" }, "vodVastResponseTimeOffset": { "$id": "#/properties/vodVastResponseTimeOffset", "type": "number", "description": "The VMAP specific time offset for VOD ad insertion.", "examples": [ 5.0 ] }, "vodCreativeOffsets": { "$id": "#/properties/vodCreativeOffsets", "type": "object", "title": "vodCreativeOffsets", "description": "A map that indicates the time offsets in the manifest where MediaTailor will insert avails, based on the VMAP response.", "additionalProperties": { "type": "array", "$id": "#/properties/vodCreativeOffsets/entry", "description": "A mapping from a time offset in the manifest to a list of ads to insert at this time.", "items": { "type": "object", "$id": "#/properties/vodCreativeOffsets/entry/items", "title": "vodCreativeOffset", "description": "The list of ads to insert at the specified time offset.", "additionalProperties": false, "required": [ "uri", "creativeUniqueId", "vastDuration", "transcodedAdDuration", "adContent", "trackingEvents" ], "properties": { "uri": { "$ref": "#/definitions/adMezzanineUri" }, "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" }, "vastDuration": { "$ref": "#/definitions/vastDuration" }, "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" }, "adContent": { "$ref": "#/definitions/adContent" }, "trackingEvents": { "$ref": "#/definitions/trackingEvents" } } } } }, "adsRequestUrl": { "$id": "#/properties/adsRequestUrl", "type": "string", "description": "The full URL of the ADS request made by MediaTailor." }, "adMarkers": { "$id": "#/properties/adMarkers", "type": "string", "description": "Found Ad Marker in the Manifest." }, "segmentationUpid": { "$id": "#/properties/segmentationUpid", "type": "string", "description": "Value of segmentation upid parsed from ad markers in manifest." }, "segmentationTypeId": { "$id": "#/properties/segmentationTypeId", "type": "integer", "description": "Value of segmentation typeId parsed from ad markers in manifest." }, "requestHeaders": { "$id": "#/properties/requestHeaders", "type": "array", "description": "The headers that MediaTailor included with the ADS request. Typically, the logs include these when a request to the ADS fails, to help with troubleshooting.", "items": { "type": "object", "title": "requestheaders", "description": "The name and value for a single header included in the ADS request.", "required": [ "name", "value" ], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "The name of the header." }, "value": { "type": "string", "description": "The value of the header." } } } }, "originalTargetUrl": { "$id": "#/properties/originalTargetUrl", "type": "string", "description": "The old URL to which MediaTailor was going to make a request." }, "prefetchScheduleName": { "$id": "#/properties/prefetchScheduleName", "type": "string", "description": "The name of the prefetch schedule associated with this ad event.", "examples": [ "PrefetchScheduleName" ], "pattern": "^(.*)$" }, "updatedTargetUrl": { "$id": "#/properties/updatedTargetUrl", "type": "string", "description": "The new URL to which MediaTailor is making a request." }, "rawAdsResponse": { "$id": "#/properties/rawAdsResponse", "type": "string", "description": "Paginated ADS response as it's exactly returned to MediaTailor." }, "rawAdsResponseIndex": { "$id": "#/properties/rawAdsResponseIndex", "type": "integer", "description": "Integer value denoting this rawAdsResponse's index into the full ADS response. This value is used to order the paginated messages for this ADS response." }, "eventId": { "$id": "#/properties/eventId", "type": "string", "description": "Unique identifier per hook invocation. Use this field to correlate hook-level and function-level events for the same execution.", "examples": [ "5dc6f040-0f72-4e8c-a64e-25eeef62708c" ] }, "functionId": { "$id": "#/properties/functionId", "type": "string", "description": "The identifier of the function. On hook events, this is the function configured on the hook. On function events, this is the individual function within the executor.", "examples": [ "my_first_function" ] }, "functionType": { "$id": "#/properties/functionType", "type": "string", "enum": [ "CUSTOM_OUTPUT", "HTTP_REQUEST", "SEQUENTIAL_EXECUTOR", "CONCURRENT_EXECUTOR" ], "description": "The type of function." }, "executionTimeMs": { "$id": "#/properties/executionTimeMs", "type": "integer", "description": "Execution time in milliseconds." }, "status": { "$id": "#/properties/status", "type": "string", "enum": [ "SUCCESS", "ERROR" ], "description": "Hook execution outcome. Present on HOOK_SUMMARY events only." }, "errorType": { "$id": "#/properties/errorType", "type": "string", "enum": [ "INTERNAL_ERROR", "SYNTAX_ERROR", "RESOURCE_LIMIT_ERROR", "RESTRICTION_ERROR", "TIMEOUT_ERROR", "VALIDATION_ERROR" ], "description": "Structured error classification. Present on error events only." }, "cause": { "$id": "#/properties/cause", "type": "string", "description": "Error detail string describing the specific failure." }, "input": { "$id": "#/properties/input", "type": "object", "description": "Before-values of variables targeted by output expressions." }, "output": { "$id": "#/properties/output", "type": "object", "description": "Values produced by the function. Present on FUNCTION_COMPLETED events only." }, "http": { "$id": "#/properties/http", "type": "object", "description": "HTTP request and response details for HTTP_REQUEST functions.", "properties": { "request": { "type": "object", "description": "The HTTP request details.", "properties": { "url": { "type": "string", "description": "The request URL." }, "method": { "type": "string", "description": "The HTTP method." }, "headers": { "type": "array", "description": "The request headers.", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } }, "body": { "type": ["string", "null"], "description": "The request body." } } }, "responseTimeMs": { "type": ["integer", "null"], "description": "HTTP response time in milliseconds." }, "response": { "type": ["object", "null"], "description": "The HTTP response details. Null when the server was never reached.", "properties": { "statusCode": { "type": ["integer", "null"], "description": "The HTTP status code. Null when the server was never reached." }, "headers": { "type": ["array", "null"], "description": "The response headers.", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } }, "body": { "type": ["string", "null"], "description": "The response body." } } }, "truncated": { "type": "boolean", "description": "True when request or response body was truncated to fit within log event size limits." } } } }, "__COMMENT_oneOf": "The oneOf section defines subtypes for our events. Subtypes can have different rules, including which fields are required. For more information, see https://json-schema.org/understanding-json-schema/reference/combining.html#oneof ", "oneOf": [ { "$ref": "#/definitions/eventAdMarkersFound" }, { "$ref": "#/definitions/eventNonAdMarkerFound" }, { "$ref": "#/definitions/eventMakingAdsRequest" }, { "$ref": "#/definitions/eventModifiedTargetUrl" }, { "$ref": "#/definitions/eventRawAdsResponse" }, { "$ref": "#/definitions/eventVastResponse" }, { "$ref": "#/definitions/eventFilledAvail" }, { "$ref": "#/definitions/eventFilledOverlayAvail" }, { "$ref": "#/definitions/eventErrorFiringBeaconFailed" }, { "$ref": "#/definitions/eventWarningNoAdvertisements" }, { "$ref": "#/definitions/eventUnknownHost" }, { "$ref": "#/definitions/eventErrorAdsTimeout" }, { "$ref": "#/definitions/eventErrorVastMissingOverlays" }, { "$ref": "#/definitions/eventPlannedAvail" }, { "$ref": "#/definitions/eventEmptyVastResponse" }, { "$ref": "#/definitions/eventEmptyVmapResponse" }, { "$ref": "#/definitions/eventErrorUnknown" }, { "$ref": "#/definitions/eventVastRedirect" }, { "$ref": "#/definitions/eventRedirectedVastResponse" }, { "$ref": "#/definitions/eventErrorAdsMissingImpression" }, { "$ref": "#/definitions/eventErrorAdsResponseParse" }, { "$ref": "#/definitions/eventErrorAdsInvalidResponse" }, { "$ref": "#/definitions/eventErrorDisallowedHost"}, { "$ref": "#/definitions/eventPersonalizationDisabled"}, { "$ref": "#/definitions/eventWarningDynamicVariableSubFailed"}, { "$ref": "#/definitions/eventVodTimeBasedAvailPlanVastResponseForOffset" }, { "$ref": "#/definitions/eventVodTimeBasedAvailPlanSuccess" }, { "$ref": "#/definitions/eventPreAdsRequestHookSummary" }, { "$ref": "#/definitions/eventPreAdsRequestHookError" }, { "$ref": "#/definitions/eventPreAdsRequestFunctionCompleted" }, { "$ref": "#/definitions/eventPreAdsRequestFunctionError" } ], "definitions": { "eventAdMarkersFound": { "$id": "#/definitions/eventAdMarkersFound", "required": [ "eventType", "adMarkers" ], "properties": { "eventType": { "type": "string", "const": "AD_MARKER_FOUND" } } }, "eventNonAdMarkerFound": { "$id": "#/definitions/eventNonAdMarkerFound", "required": [ "eventType", "adMarkers" ], "properties": { "eventType": { "type": "string", "const": "NON_AD_MARKER_FOUND" } } }, "eventMakingAdsRequest": { "$id": "#/definitions/eventMakingAdsRequest", "required": [ "eventType", "adsRequestUrl" ], "properties": { "eventType": { "type": "string", "const": "MAKING_ADS_REQUEST" } } }, "eventModifiedTargetUrl": { "$id": "#/definitions/eventModifiedTargetUrl", "required": [ "eventType", "originalTargetUrl", "updatedTargetUrl" ], "properties": { "eventType": { "type": "string", "const": "MODIFIED_TARGET_URL" } } }, "eventRawAdsResponse": { "$id": "#/definitions/eventRawAdsResponse", "required": [ "eventType", "rawAdsResponse", "rawAdsResponseIndex" ], "properties": { "eventType": { "type": "string", "const": "RAW_ADS_RESPONSE" } } }, "eventVastResponse": { "$id": "#/definitions/eventVastResponse", "_comment": "NOTE: the vastResponse property should ideally be marked as a required field for this event, but unfortunately, in the case of an empty vast response, we currently emit an EMPTY_VAST_RESPONSE followed by a VAST_RESPONSE, and the vastResponse property is not present in the latter. We need to fix this so that we don't emit both of those events in the empty response case, and update this schema to flag vastResponse as required for VAST_RESPONSE.", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "VAST_RESPONSE" } } }, "eventFilledAvail": { "$id": "#/definitions/eventFilledAvail", "required": [ "eventType", "avail" ], "properties": { "eventType": { "type": "string", "const": "FILLED_AVAIL" } } }, "eventFilledOverlayAvail": { "$id": "#/definitions/eventFilledOverlayAvail", "required": [ "eventType", "avail" ], "properties": { "eventType": { "type": "string", "const": "FILLED_OVERLAY_AVAIL" } } }, "eventErrorVastMissingOverlays": { "$id": "#/definitions/eventErrorVastMissingOverlays", "required": [ "eventType", "adsRequestUrl", "requestHeaders" ], "properties": { "eventType": { "type": "string", "const": "ERROR_VAST_MISSING_OVERLAYS" } } }, "eventErrorFiringBeaconFailed": { "$id": "#/definitions/eventErrorFiringBeaconFailed", "required": [ "eventType", "error", "beaconInfo" ], "properties": { "eventType": { "type": "string", "const": "ERROR_FIRING_BEACON_FAILED" } } }, "eventWarningNoAdvertisements": { "$id": "#/definitions/eventWarningNoAdvertisements", "required": [ "eventType" ], "_comment": "We should really have a more descriptive error field for these events", "properties": { "eventType": { "type": "string", "const": "WARNING_NO_ADVERTISEMENTS" } } }, "eventUnknownHost": { "$id": "#/definitions/eventUnknownHost", "required": [ "eventType", "requestHeaders" ], "properties": { "eventType": { "type": "string", "const": "ERROR_UNKNOWN_HOST" } } }, "eventErrorAdsTimeout": { "$id": "#/definitions/eventErrorAdsTimeout", "required": [ "eventType", "adsRequestUrl", "requestHeaders" ], "properties": { "eventType": { "type": "string", "const": "ERROR_ADS_TIMEOUT" } } }, "eventPlannedAvail": { "$id": "#/definitions/eventPlannedAvail", "required": [ "eventType" ], "_comment": "TODO: Flesh this out as we implement it", "properties": { "eventType": { "type": "string", "const": "PLANNED_AVAIL" } } }, "eventEmptyVastResponse": { "$id": "#/definitions/eventEmptyVastResponse", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "EMPTY_VAST_RESPONSE" } } }, "eventEmptyVmapResponse": { "$id": "#/definitions/eventEmptyVmapResponse", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "EMPTY_VMAP_RESPONSE" } } }, "eventErrorUnknown": { "$id": "#/definitions/eventErrorUnknown", "required": [ "eventType" ], "_comment": "TODO: we should have a field for the exception message or something", "properties": { "eventType": { "type": "string", "const": "ERROR_UNKNOWN" } } }, "eventVastRedirect": { "$id": "#/definitions/eventVastRedirect", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "VAST_REDIRECT" } } }, "eventRedirectedVastResponse": { "$id": "#/definitions/eventRedirectedVastResponse", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "REDIRECTED_VAST_RESPONSE" } }, "_comment": "NOTE that the property vastResponse is not required because empty vast responses do not contain a vastResponse." }, "eventErrorAdsResponseParse": { "$id": "#/definitions/eventErrorAdsResponseParse", "required": [ "eventType" ], "_comment": "We should have a field with an error message here", "properties": { "eventType": { "type": "string", "const": "ERROR_ADS_RESPONSE_PARSE" } } }, "eventErrorAdsInvalidResponse": { "$id": "#/definitions/eventErrorAdsInvalidResponse", "required": [ "eventType", "additionalInfo" ], "properties": { "eventType": { "type": "string", "const": "ERROR_ADS_INVALID_RESPONSE" } } }, "eventErrorAdsMissingImpression": { "$id": "#/definitions/eventErrorAdsMissingImpression", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "ERROR_VAST_MISSING_IMPRESSION" } } }, "eventErrorDisallowedHost": { "$id": "#/definitions/eventErrorDisallowedHost", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "ERROR_DISALLOWED_HOST" } } }, "eventPersonalizationDisabled": { "$id": "#/definitions/eventPersonalizationDisabled", "required": [ "eventType" ], "properties": { "eventType": { "type": "string", "const": "ERROR_PERSONALIZATION_DISABLED" } } }, "eventWarningDynamicVariableSubFailed": { "$id": "#/definitions/eventWarningDynamicVariableSubFailed", "required": [ "eventType", "adsRequestUrl" ], "properties": { "eventType": { "type": "string", "const": "WARNING_URL_VARIABLE_SUBSTITUTION_FAILED" } } }, "eventVodTimeBasedAvailPlanVastResponseForOffset": { "$id": "#/definitions/eventVodTimeBasedAvailPlanVastResponseForOffset", "required": [ "eventType", "vastResponse" ], "properties": { "eventType": { "type": "string", "const": "VOD_TIME_BASED_AVAIL_PLAN_VAST_RESPONSE_FOR_OFFSET" } } }, "eventVodTimeBasedAvailPlanSuccess": { "$id": "#/definitions/eventVodTimeBasedAvailPlanSuccess", "required": [ "eventType", "vodCreativeOffsets" ], "properties": { "eventType": { "type": "string", "const": "VOD_TIME_BASED_AVAIL_PLAN_SUCCESS" } } }, "creativeUniqueId": { "type": "string", "description": "The unique identifier for the ad, used as a key for transcoding. This is the ID field for the creative in the VAST response, if available. Otherwise, it's the mezzanine URL of the ad. " }, "adSystem": { "type": "string", "description": "The value of the <code>AdSystem</code> tag in the VAST response. " }, "vastDuration": { "type": "number", "description": "The duration of the ad, as parsed from the VAST response." }, "transcodedAdDuration": { "type": "number", "description": "The duration of the ad, calculated from the transcoded asset." }, "adContent": { "$id": "#/properties/adContent", "type": ["object", "null"], "title": "adContent", "description": "Information about the content of the inserted ad.", "additionalProperties": false, "properties": { "adPlaylistUris": { "$id": "#/properties/adContent/adPlaylistUris", "type": "object", "title": "adPlaylistUris", "description": "The mapping from the origin manifest for a variant to the ad manifest for the variant. For DASH, this contains a single entry, because all variants are represented in a single DASH manifest. ", "additionalProperties": { "$id": "#/properties/adContent/adPlaylistUris/adPlaylistUri", "type": "string", "description": "The URL of the ad manifest for the specific variant." } } } }, "adMezzanineUri": { "type": "string", "description": "The URL of the mezzanine version of the ad, which is the input to the transcoder." }, "bitrate": { "type": "integer", "examples": [ 533 ], "description": "The bitrate." }, "width": { "type": "integer", "examples": [ 1280 ], "description": "Width in pixels." }, "height": { "type": "integer", "examples": [ 720 ], "description": "Height in pixels." }, "trackingEvents": { "type": "object", "title": "trackingEvents", "description": "The tracking beacon URLs for the various tracking events for the ad. The keys are the event names, and the values are a list of beacon URLs.", "additionalProperties": { "type": "array", "description": "The list of beacon URLs for the specified tracking event (impression, complete, and so on)", "items": { "type": "string", "description": "The beacon URLs for this tracking event." } } }, "nonLinearAds": { "$id": "#/properties/nonLinearAds", "type": "object", "title": "nonLinearAds", "description": "A NonLinearAds as it appears in the VAST response.", "required": [ "nonLinearAdList", "nonLinearTrackingEvents" ], "properties": { "nonLinearAdList": { "type": "array", "description": "List of non linear ads as they exist within one NonLinearAds.", "items": { "type": "object", "title": "nonLinearAdList", "description": "List of NonLinearAd as they are parsed from its parent NonLinearAds.", "properties": { "nonLinearAdId": { "type": "string", "description": "Ad ID of this non linear ad." }, "nonLinearAdSystem": { "type": "string", "description": "Ad system of this non linear ad's parent Inline ad." }, "nonLinearAdTitle": { "type": "string", "description": "Ad title of this non linear ad's parent Inline ad." }, "nonLinearCreativeId": { "type": "string", "description": "Creative ID of this non linear ad's parent Creative ad." }, "nonLinearCreativeAdId": { "type": "string", "description": "Creative ad ID of this non linear ad." }, "nonLinearCreativeSequence": { "type": "string", "description": "Creative sequence of this non linear ad." }, "nonLinearWidth": { "type": "string", "description": "Width of this non linear ad." }, "nonLinearHeight": { "type": "string", "description": "Height of this non linear ad." }, "nonLinearExpandedWidth": { "type": "string", "description": "Expanded width of this non linear ad." }, "nonLinearExpandedHeight": { "type": "string", "description": "Expanded height of this non linear ad." }, "nonLinearScalable": { "type": "boolean", "description": "Boolean denoting if this non linear ad is scalable." }, "nonLinearMaintainAspectRatio": { "type": "boolean", "description": "Boolean denoting if aspect ratio should be maintained for this non linear ad." }, "nonLinearMinSuggestedDuration": { "type": "string", "description": "Min suggested duration for this non linear ad." }, "nonLinearApiFramework": { "type": "string", "description": "API framework for this non linear ad's parent Inline ad." }, "nonLinearStaticResource": { "type": "string", "description": "Static resource for this non linear ad." }, "nonLinearStaticResourceCreativeType": { "type": "string", "description": "Static Resource creative type for this non linear ad." }, "nonLinearIFrameResource": { "type": "string", "description": "I-Frame resource for this non linear ad." }, "nonLinearHtmlResource": { "type": "string", "description": "HTML resource for this non linear ad." }, "nonLinearAdParameters": { "type": "string", "description": "Ad parameters for this non linear ad." }, "nonLinearClickThrough": { "type": "string", "description": "Click Through data for this non linear ad." }, "nonLinearClickTracking": { "type": "string", "description": "Click Tracking data for this non linear ad." }, "nonLinearClickTrackingId": { "type": "string", "description": "Click Tracking ID for this non linear ad." } } } }, "nonLinearTrackingEvents": { "$ref": "#/definitions/trackingEvents" }, "extensions": { "$id": "#/properties/nonLinearAds/extensions", "type": "array", "description": "Extensions that exist for this NonLinearAds.", "items": { "$id": "#/properties/nonLinearAds/extensions/items", "type": "object", "title": "Extensions", "description": "Extensions found in non linear ads", "additionalProperties": false, "properties": { "extensionType": { "$id": "#/properties/nonLinearAds/extensions/extensionType", "type": "string", "description": "The value of the extension type attribute of the <code>Extensions</code> tag.", "examples": [ "FreeWheel" ] }, "extensionContent": { "$id": "#/properties/nonLinearAds/extensions/extensionContent", "type": "string", "description": "The extension content attribute of the <code>Extensions</code> tag.", "examples": [ "progressive" ] } } } } } }, "adBreakTrackingEvents": { "$id": "#/properites/adBreakTrackingEvents", "type": "object", "title": "adBreakTrackingEvents", "description": "These are all VMAP ad break tracking events.", "additionalProperties": { "type": "array", "description": "VMAP/ad break tracking events and corresponding URL", "items": { "type": "string", "description": "The beacon URLs for this tracking event." } } }, "vastAd": { "$id": "#/properties/vastAd", "type": "object", "title": "vastAd", "description": "Information about a single ad parsed from the VAST response.", "required": [ "vastAdId", "adSystem", "adTitle", "creativeId", "creativeAdId", "duration", "vastMediaFiles", "trackingEvents" ], "additionalProperties": false, "properties": { "vastAdId": { "$id": "#/properties/vastAd/vastAdId", "type": "string", "description": "The value of the id attribute of the <code>Ad</code> tag in the VAST response", "examples": [ "ad1" ] }, "adSystem": {"$ref": "#/definitions/adSystem" } , "adTitle": { "$id": "#/properties/vastAd/adTitle", "type": "string", "description": "The media files that are available for the ad in the VAST response.", "examples": [ "External NCA1C1L1 LinearInlineSkippable" ] }, "creativeId": { "$id": "#/properties/vastAd/creativeId", "type": "string", "description": "The value of the id attribute of the <code>Creative</code> tag in the VAST response.", "examples": [ "creative1" ] }, "creativeAdId": { "$id": "#/properties/vastAd/creativeAdId", "type": "string", "description": "The value of the adId attribute of the <code>Creative</code> tag in the VAST response." }, "duration": { "$id": "#/properties/vastAd/duration", "type": "number", "description": "The approximate duration of the ad, based on the <code>duration</code> tag in the <code>linear</code> element of the VAST response.", "examples": [ 30, 30.0 ] }, "vastMediaFiles": { "$id": "#/properties/vastAd/vastMediaFiles", "type": "array", "description": "The list of available media files for the ad in the VAST response.", "items": { "$id": "#/properties/vastAd/vastMediaFiles/items", "type": "object", "title": "vastMediaFile", "description": "Information about a media file for the ad.", "required": [ "uri", "id", "delivery", "type", "apiFramework", "width", "height", "bitrate" ], "additionalProperties": false, "properties": { "uri": { "$ref": "#/definitions/adMezzanineUri" }, "id": { "$id": "#/properties/vastAd/vastMediaFiles/items/properties/id", "type": "string", "description": "The value of the id attribute of the <code>MediaFile</code> tag.", "examples": [ "GDFP" ] }, "delivery": { "$id": "#/properties/vastAd/vastMediaFiles/items/properties/delivery", "type": "string", "description": "The protocol used for the media file, set to either progressive or streaming.", "examples": [ "progressive" ] }, "type": { "$id": "#/properties/vastAd/vastMediaFiles/items/properties/type", "type": "string", "description": "The MIME type of the media file, taken from the type attribute of the <code>MediaFile</code> tag.", "examples": [ "video/mp4" ] }, "apiFramework": { "$id": "#/properties/vastAd/vastMediaFiles/items/properties/apiFramework", "type": "string", "description": "The API framework needed to manage the media file. Example: <code>VPAID</code>." }, "width": { "$ref": "#/definitions/width" }, "height": { "$ref": "#/definitions/height" }, "bitrate": { "$ref": "#/definitions/bitrate" } } } }, "trackingEvents": { "$ref": "#/definitions/trackingEvents" }, "vastAdTagUri": { "$id": "#/properties/vastAd/vastAdTagUri", "type": "string", "description": "The VMAP-specific redirect URI for an ad.", "examples": [ "https://ads.redirect.com/redirect1" ] } } }, "eventPreAdsRequestHookSummary": { "$id": "#/definitions/eventPreAdsRequestHookSummary", "required": [ "eventType", "eventId", "functionId", "executionTimeMs", "status" ], "properties": { "eventType": { "type": "string", "const": "PRE_ADS_REQUEST_HOOK_SUMMARY" } } }, "eventPreAdsRequestHookError": { "$id": "#/definitions/eventPreAdsRequestHookError", "required": [ "eventType", "eventId", "functionId", "executionTimeMs", "errorType", "cause" ], "properties": { "eventType": { "type": "string", "const": "PRE_ADS_REQUEST_HOOK_ERROR" } } }, "eventPreAdsRequestFunctionCompleted": { "$id": "#/definitions/eventPreAdsRequestFunctionCompleted", "required": [ "eventType", "eventId", "functionId", "functionType", "executionTimeMs" ], "properties": { "eventType": { "type": "string", "const": "PRE_ADS_REQUEST_FUNCTION_COMPLETED" } } }, "eventPreAdsRequestFunctionError": { "$id": "#/definitions/eventPreAdsRequestFunctionError", "required": [ "eventType", "eventId", "functionId", "functionType", "executionTimeMs", "errorType", "cause" ], "properties": { "eventType": { "type": "string", "const": "PRE_ADS_REQUEST_FUNCTION_ERROR" } } } } }