本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
下列各節說明 MediaTailor 發出用來描述具有廣告決策伺服器 (ADS) 之事件的日誌。hese 是AdDecisionServerInteractions
日誌。
AdDecisionServerInteractions 事件
在 MediaTailor 與廣告決策伺服器 (ADS) 互動期間,會發出下列事件。
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 |
VAST Ad 包含多個Linear 元素。 |
ERROR_VAST_MULTIPLE_TRACKING_EVENTS |
VAST Ad 包含多個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 |
ADS 請求或回應在為 VOD 播放清單填入間質時段時遇到問題。不會插入任何廣告。 |
INTERSTITIAL_VOD_SUCCESS |
MediaTailor 成功填入 VOD 播放清單的間質可用。 |
MAKING_ADS_REQUEST |
MediaTailor 正在向 ADS 請求廣告。 |
MODIFIED_TARGET_URL |
MediaTailor 已修改傳出目標 URL。 |
NON_AD_MARKER_FOUND |
MediaTailor 在資訊清單中找到不可操作的廣告標記。 |
RAW_ADS_RESPONSE |
MediaTailor 收到原始 ADS 回應。 |
REDIRECTED_VAST_RESPONSE |
MediaTailor 在遵循 VAST 重新導向之後收到 VAST 回應。 |
VAST_REDIRECT |
VAST 廣告回應包含重新導向。 |
VAST_RESPONSE |
MediaTailor 收到 VAST 回應。 |
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 |
ADS 請求或回應在為 VOD 範本建立以時間為基礎的可用計畫時遇到問題。不會插入任何廣告。 |
WARNING_NO_ADVERTISEMENTS |
MediaTailor 在填入可用時遇到問題。未插入任何廣告。 |
WARNING_URL_VARIABLE_SUBSTITUTION_FAILED |
MediaTailor 無法取代 ADS URL 中的動態變數。檢查 URL 組態。 |
WARNING_VPAID_AD_DROPPED |
VPAID 廣告因缺少板塊而捨棄,或工作階段使用伺服器端報告。 |
ADS 日誌描述
本節描述 ADS 日誌描述的結構和內容。若要在 JSON 編輯器中自行探索,請使用位於 ADS 日誌 JSON 結構描述 的清單。
ADS 日誌中的每個事件都包含 CloudWatch Logs 產生的標準欄位。如需詳細資訊,請參閱使用 CloudWatch Logs 洞察分析日誌資料。
ADS 日誌屬性
本節描述 ADS 日誌的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adsRequestUrl |
string | false | 由 MediaTailor 提出之 ADS 請求的完整 URL。 |
avail |
類型 時段 的物件 | false | MediaTailor 填入廣告之時段的相關資訊。目前,對於 FILLED_AVAIL 事件類型,這是 MediaTailor 第一次遇到時段時建立的計劃。最終填入時段的方式可能與此計劃不同,取決於內容播放的方式。 |
awsAccountId |
string | true | 用於工作階段之 MediaTailor 組態的 AWS 帳戶 ID。 |
customerId |
string | true | AWS 帳戶 ID 的雜湊版本,可用來關聯多個日誌項目。 |
eventDescription |
string | true | 觸發此日誌訊息之事件的簡短描述,由 MediaTailor 服務提供。根據預設,這是空的。範例:Got VAST response 。 |
eventTimestamp |
string | true | 事件的日期和時間。 |
eventType |
string | true | 觸發此日誌訊息之事件的程式碼。範例:VAST_RESPONSE 。 |
originId |
string | true | 來自 MediaTailor 組態的組態名稱。這不同於視訊內容來源,此來源也是組態的一部分。 |
requestHeaders |
類型 requestheaders 的陣列 | false | MediaTailor 隨附於 ADS 請求的標頭。通常,日誌會在請求 ADS 失敗時包含這些項目,以協助疑難排解。 |
requestId |
string | true | MediaTailor 請求 ID,可用來將同一個請求的多個日誌項目建立關聯。 |
sessionId |
string | true | MediaTailor 指派給玩家工作階段的唯一數字識別符。玩家對工作階段提出的所有請求都有相同的工作階段 ID。範例:e039fd39-09f0-46b2-aca9-9871cc116cde 。 |
sessionType |
string (legal values: [DASH, HLS]) | true | 玩家的串流類型。 |
vastAd |
類型 vastAd 的物件 | false | 從 VAST 回應剖析之單一廣告的相關資訊。 |
vastResponse |
類型 vastResponse 的物件 | false | MediaTailor 從 ADS 收到之 VAST 回應的相關資訊。 |
vodCreativeOffsets |
類型 vodCreativeOffsets 的物件 | false | 指出資訊清單中時間位移的映射,其中 MediaTailor 將根據 VMAP 回應插入時段。 |
vodVastResponseTimeOffset |
number | false | VOD 廣告插入的 VMAP 特定時間位移。 |
adContent
本節描述 ADS 日誌 adContent 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adPlaylistUris |
類型 adPlaylistUris 的物件 | false | 從變體的原始資訊清單映射到變體的廣告資訊清單。對於 DASH,這包含單一項目,因為所有變體都是以單一 DASH 資訊清單表示。 |
adPlaylistUris
本節描述 ADS 日誌 adPlaylistUris 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
<any string> |
string | false | 特定變體的廣告資訊清單 URL。 |
時段
本節描述 ADS 日誌時段的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
availId |
string | true | 此時段的唯一識別符。對於 HLS,這是時段開始的媒體序號。對於 DASH,這是期間 ID。 |
creativeAds |
類型 creativeAd 的陣列 | true | MediaTailor 插入時段的廣告。 |
fillRate |
number | true | 廣告填補時段持續時間的比率,從 0.0 (表示 0%) 到 1.0 (表示 100%)。 |
filledDuration |
number | true | 插入時段的所有廣告的持續時間總和。 |
numAds |
number | true | MediaTailor 插入時段的廣告數量。 |
originAvailDuration |
number | true | 在來自原始伺服器的內容串流中指定的時段持續時間 (CUE_OUT 或 SCTE )。 |
skippedAds |
類型 skippedAd 的陣列 | false | MediaTailor 基於 TRANSCODE_IN_PROGRESS 和 TRANSCODE_ERROR 等原因而未插入的廣告。 |
slateAd |
類型 slateAd 的物件 | true | 場記板廣告的相關資訊,MediaTailor 用來填補時段中任何未填滿的區段。 |
creativeAd
本節描述 ADS 日誌 creativeAd 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adContent |
類型 adContent 的物件 | true | 所插入廣告內容的相關資訊。 |
creativeUniqueId |
string | true | 廣告的唯一識別符,用做轉碼的金鑰。這是 VAST 回應中製作的 ID 欄位 (若有的話)。否則,它是廣告的 Mezzanine URL。 |
trackingEvents |
類型 trackingEvents 的物件 | true | 廣告的各種追蹤事件的追蹤信標 URL。金鑰為事件名稱,而值為信標 URL 的清單。 |
transcodedAdDuration |
number | true | 廣告的持續時間,從轉碼資產開始計算。 |
uri |
string | true | 廣告的 Mezzanine 版本 URL,這是轉碼器的輸入。 |
vastDuration |
number | true | 廣告的持續時間,從 VAST 回應剖析而來。 |
requestheaders
本節描述 ADS 日誌 requestheaders 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
name |
string | true | 標頭的名稱。 |
value |
string | true | 標頭的值。 |
skippedAd
本節描述 ADS 日誌 skippedAd 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adMezzanineUrl |
string | true | 所略過廣告的 Mezzanine URL。 |
creativeUniqueId |
string | true | 廣告的唯一識別符,用做轉碼的金鑰。這是 VAST 回應中製作的 ID 欄位 (若有的話)。否則,它是廣告的 Mezzanine URL。 |
skippedReason |
string | true | 指出為何未插入廣告的代碼。範例:TRANSCODE_IN_PROGRESS 。 |
transcodedAdDuration |
number | false | 廣告的持續時間,從轉碼資產開始計算。 |
vastDuration |
number | true | 廣告的持續時間,從 VAST 回應剖析而來。 |
slateAd
本節描述 ADS 日誌 slateAd 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adContent |
類型 adContent 的物件 | true | 所插入廣告內容的相關資訊。 |
creativeUniqueId |
string | true | 廣告的唯一識別符,用做轉碼的金鑰。這是 VAST 回應中製作的 ID 欄位 (若有的話)。否則,它是廣告的 Mezzanine URL。 |
transcodedAdDuration |
number | true | 廣告的持續時間,從轉碼資產開始計算。 |
uri |
string | true | 廣告的 Mezzanine 版本 URL,這是轉碼器的輸入。 |
trackingEvents
本節描述 ADS 日誌 trackingEvents 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
<any string> |
類型 string 的陣列 | false | 所指定追蹤事件 (印象、完成等) 的信標 URL 清單 |
vastAd
本節描述 ADS 日誌 vastAd 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adSystem |
string | true | VAST 回應中 AdSystem 標籤的值。 |
adTitle |
string | true | VAST 回應中可供廣告使用的媒體檔案。 |
creativeAdId |
string | true | VAST 回應中 Creative 標籤的 adId 屬性值。 |
creativeId |
string | true | VAST 回應中 Creative 標籤的 id 屬性值。 |
duration |
number | true | 廣告的大約持續時間,以 VAST 回應之 linear 元素中的 duration 標籤為基礎。 |
trackingEvents |
類型 trackingEvents 的物件 | true | 廣告的各種追蹤事件的追蹤信標 URL。金鑰為事件名稱,而值為信標 URL 的清單。 |
vastAdId |
string | true | VAST 回應中 Ad 標籤的 id 屬性值 |
vastAdTagUri |
string | false | 廣告的 VMAP 特定重新導向 URI。 |
vastMediaFiles |
類型 vastMediaFile 的陣列 | true | VAST 回應中廣告的可用媒體檔案清單。 |
vastMediaFile
本節描述 ADS 日誌 vastMediaFile 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
apiFramework |
string | true | 管理媒體檔案所需的 API 架構。範例:VPAID 。 |
bitrate |
number | true | 媒體檔案的位元速率。 |
delivery |
string | true | 用於媒體檔案的通訊協定,設定為漸進式或串流。 |
height |
number | true | 媒體檔案的像素高度。 |
id |
string | true | MediaFile 標籤的 id 屬性值。 |
type |
string | true | 媒體檔案的 MIME 類型,取自 MediaFile 標籤的 type 屬性。 |
uri |
string | true | 廣告的 Mezzanine 版本 URL,這是轉碼器的輸入。 |
width |
number | true | 媒體檔案的像素寬度。 |
vastResponse
本節描述 ADS 日誌 vastResponse 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
errors |
類型 string 的陣列 | true | VAST 回應中從 Error 標籤剖析的錯誤 URL。 |
vastAds |
類型 vastAd 的陣列 | true | 從 VAST 回應剖析的廣告。 |
version |
string | true | VAST 規格版本,從回應中 VAST 標籤的 version 屬性剖析而來。 |
vodCreativeOffsets
本節描述 ADS 日誌 vodCreativeOffsets 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
<any string> |
類型 vodCreativeOffset 的陣列 | false | 從資訊清單中的時間位映射到目前要插入的廣告清單。 |
vodCreativeOffset
本節描述 ADS 日誌 vodCreativeOffset 的屬性。
屬性 | Type | 必要 | 描述 |
---|---|---|---|
adContent |
類型 adContent 的物件 | true | 所插入廣告內容的相關資訊。 |
creativeUniqueId |
string | true | 廣告的唯一識別符,用做轉碼的金鑰。這是 VAST 回應中製作的 ID 欄位 (若有的話)。否則,它是廣告的 Mezzanine URL。 |
trackingEvents |
類型 trackingEvents 的物件 | true | 廣告的各種追蹤事件的追蹤信標 URL。金鑰為事件名稱,而值為信標 URL 的清單。 |
transcodedAdDuration |
number | true | 廣告的持續時間,從轉碼資產開始計算。 |
uri |
string | true | 廣告的 Mezzanine 版本 URL,這是轉碼器的輸入。 |
vastDuration |
number | true | 廣告的持續時間,從 VAST 回應剖析而來。 |
ADS 日誌 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." }, "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." } }, "__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" } ], "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" ] } } } } }