Dynamic Ad Insertion VOD API

Dynamic Ad Insertion API позволяет запрашивать и отслеживать потоки видео по запросу с динамической вставкой объявлений. Поддерживаются потоки HLS и DASH.

Сервис: dai.google.com

Путь метода stream указан относительно https://dai.google.com.

Метод: stream

Методы
stream POST /ondemand/v1/hls/content/{content-source}/vid/{video-id}/stream

Создает поток HLS с динамической вставкой объявлений для заданного источника контента и идентификатора видео.

POST /ondemand/v1/dash/content/{content-source}/vid/{video-id}/stream

Создает поток DASH с динамической вставкой объявлений для заданного источника контента и идентификатора видео.

HTTP-запрос

POST https://dai.google.com/ondemand/v1/hls/content/{content-source}/vid/{video-id}/stream

POST https://dai.google.com/ondemand/v1/dash/content/{content-source}/vid/{video-id}/stream

Заголовок запроса

Параметры
api‑key string

Ключ API, предоставленный при создании трансляции, должен быть действительным для сети издателя.

Вместо тела запроса ключ API можно передать в заголовке HTTP Authorization в следующем формате:

Authorization: DCLKDAI key="<api-key>"

Параметры пути

Параметры
content-source string

Идентификатор потока в CMS.

video-id string

Идентификатор видео в трансляции.

Тело запроса

Тело запроса имеет тип application/x-www-form-urlencoded и содержит следующие параметры:

Параметры
dai-ssb Необязательно

Установите значение true, чтобы создать поток с передачей сигналов на стороне сервера. Значение по умолчанию – false. Отслеживание потока по умолчанию инициируется клиентом и запрашивается на стороне сервера.

Параметры таргетинга DFP Необязательно Дополнительные параметры таргетинга.
Переопределение параметров трансляции Необязательно Переопределять значения по умолчанию для параметров создания трансляции.
Аутентификация HMAC Необязательно Аутентификация с помощью токена HMAC.

Тело ответа

Если запрос выполнен успешно, то тело ответа содержит новый экземпляр Stream. Для потоков с маяками на стороне сервера этот объект Stream содержит только поля stream_id и stream_manifest.

Open Measurement

Поле Verifications содержит информацию для проверки Open Measurement в потоках, где не используются веб-маяки на стороне сервера. Verifications содержит один или несколько элементов Verification, в которых перечислены ресурсы и метаданные, необходимые для проверки воспроизведения креатива с помощью стороннего кода отслеживания. Поддерживается только JavaScriptResource. Дополнительную информацию можно найти на сайте IAB Tech Lab и в спецификации VAST 4.1.

Метод: проверка медиаконтента

Обнаружив идентификатор медиафайла объявления во время воспроизведения, сразу же отправьте запрос, используя media_verification_url из конечной точки stream. media_verification_url – абсолютный путь. Запросы на проверку медиаконтента не требуются для потоков с маяками на стороне сервера, где сервер инициирует проверку медиаконтента.

Запросы к конечной точке media verification идемпотентны.

Методы
media verification GET {media_verification_url}/{ad_media_id}

Уведомляет API о событии проверки медиаконтента.

HTTP-запрос

GET {media-verification-url}/{ad-media-id}

Тело ответа

media verification возвращает следующие ответы:

  • HTTP/1.1 204 No Content, если проверка медиаконтента прошла успешно и все пинги отправлены.
  • HTTP/1.1 404 Not Found, если запрос не может проверить медиаконтент из-за неправильного форматирования URL или истечения срока действия.
  • HTTP/1.1 404 Not Found, если предыдущий запрос на подтверждение для этого идентификатора был выполнен успешно.
  • HTTP/1.1 409 Conflict, если в это время пинги отправляются по другому запросу.

Идентификаторы мультимедийных объектов объявлений (HLS)

Идентификаторы рекламных медиафайлов будут закодированы в метаданных HLS с метками времени с помощью ключа TXXX, зарезервированного для фреймов с текстовой информацией, заданной пользователем. Содержимое фрейма не будет зашифровано и всегда будет начинаться с текста "google_".

Весь текстовый контент фрейма должен быть добавлен к media_verification_url для каждого запроса на проверку объявления.

Идентификаторы мультимедийных объектов объявлений (DASH)

Идентификаторы рекламных медиафайлов будут вставляться в манифест с помощью элемента EventStream DASH.

Каждый элемент EventStream будет иметь идентификатор схемы URI urn:google:dai:2018. Они будут содержать события с атрибутом messageData, содержащим идентификатор мультимедийного объекта объявления, начинающийся с "google_". Все содержимое атрибута messageData должно быть добавлено к media_verification_url для каждого запроса проверки объявления.

Данные ответа

Поток

Stream используется для отображения списка всех ресурсов для вновь созданного потока в формате JSON .
JSON-представление
{
  "stream_id": string,
  "total_duration": number,
  "content_duration": number,
  "valid_for": string,
  "valid_until": string,
  "subtitles": [object(Subtitle)],
  "hls_master_playlist": string,
  "stream_manifest": string,
  "media_verification_url": string,
  "apple_tv": object(AppleTV),
  "ad_breaks": [object(AdBreak)],
}
Поля
stream_id string

Идентификатор потока.
total_duration number

Продолжительность трансляции в секундах.
content_duration number

Продолжительность контента без рекламы в секундах.
valid_for string

Продолжительность трансляции в формате "00h00m00s".
valid_until string

Дата, до которой действителен поток, в формате RFC 3339.
subtitles [object(Subtitle)]

Список субтитров. Если значение не указано, оно опускается. Только HLS.
hls_master_playlist string

URL главного плейлиста HLS (УСТАРЕЛО). Используйте stream_manifest. Только HLS.
stream_manifest string

Манифест трансляции. Соответствует главному плейлисту в HLS и MPD в DASH. Это единственное поле, помимо stream_id, которое присутствует в ответе при создании потока с передачей сигналов на стороне сервера.
media_verification_url string

URL подтверждения медиаконтента.
apple_tv object(AppleTV)

Необязательная информация, относящаяся к устройствам Apple TV. Только HLS.
ad_breaks [object(AdBreak)]

Список рекламных пауз. Если значение не указано, оно опускается.

AppleTV

AppleTV содержит информацию, относящуюся к устройствам Apple TV.
JSON-представление
{
  "interstitials_url": string,
}
Поля
interstitials_url string

URL межстраничных объявлений.

AdBreak

AdBreak описывает одну рекламную паузу в трансляции. Он содержит позицию, продолжительность, тип (в начале, середине или конце видео) и список объявлений.
JSON-представление
{
  "type": string,
  "start": number,
  "duration": number,
  "ads": [object(Ad)],
}
Поля
type string

Допустимые типы рекламных пауз: mid, pre и post.
start number

Позиция в потоке, в которой начинается рекламная пауза (в секундах).
duration number

Продолжительность рекламной паузы в секундах.
ads [object(Ad)]

Список объявлений. Если значение не указано, оно опускается.
Ad – объявление в потоке. Он содержит позицию объявления в рекламной паузе, продолжительность объявления и некоторые необязательные метаданные.
JSON-представление
{
  "seq": number,
  "start": number,
  "duration": number,
  "title": string,
  "description": string,
  "advertiser": string,
  "ad_system": string,
  "ad_id": string,
  "creative_id": string,
  "creative_ad_id": string,
  "deal_id": string,
  "clickthrough_url": string,
  "icons": [object(Icon)],
  "wrappers": [object(Wrapper)],
  "events": [object(Event)],
  "verifications": [object(Verification)],
  "universal_ad_id": object(UniversalAdID),
  "companions": [object(Companion)],
  "interactive_file": object(InteractiveFile),
  "skip_metadata": object(SkipMetadata),
  "extensions": [],
}
Поля
seq number

Позиция объявления в рекламной паузе.
start number

Позиция в потоке, на которой начинается объявление (в секундах).
duration number

Продолжительность объявления в секундах.
title string

Необязательный заголовок объявления.
description string

Описание объявления (необязательно).
advertiser string

Необязательный рекламный идентификатор.
ad_system string

Необязательный атрибут.
ad_id string

Необязательный идентификатор объявления.
creative_id string

Необязательный идентификатор креатива.
creative_ad_id string

Необязательный идентификатор объявления креатива.
deal_id string

Необязательный идентификатор сделки.
clickthrough_url string

Необязательный URL перехода по клику.
icons [object(Icon)]

Список значков. Если он пуст, то не показывается.
wrappers [object(Wrapper)]

Список контейнеров. Если значение не указано, оно опускается.
events [object(Event)]

Список событий в объявлении.
verifications [object(Verification)]

Необязательные записи Open Measurement, в которых перечислены ресурсы и метаданные, необходимые для выполнения стороннего кода отслеживания, чтобы проверить воспроизведение креатива.
universal_ad_id object(UniversalAdID)

Необязательный универсальный идентификатор объявления.
companions [object(Companion)]

Необязательные сопутствующие креативы, которые могут показываться вместе с этим объявлением.
interactive_file object(InteractiveFile)

Необязательный интерактивный креатив (SIMID), который должен показываться во время воспроизведения объявления.
skip_metadata object(SkipMetadata)

Необязательные метаданные для объявлений с возможностью пропуска. Если этот элемент задан, то объявление можно пропустить. В нем также содержатся инструкции по работе с интерфейсом пропуска и событием отслеживания.
extensions string

Необязательный список всех узлов <Extension> в VAST.

Событие

Событие содержит тип события и время его показа.
JSON-представление
{
  "time": number,
  "type": string,
}
Поля
time number

Время проведения мероприятия.
type string

Тип события.

Подзаголовок

Subtitle – это дополнительная дорожка субтитров для видеопотока. В нем хранятся субтитры двух форматов: TTML и WebVTT. Атрибут TTMLPath содержит URL файла TTML, а атрибут WebVTTPath – URL файла WebVTT.
JSON-представление
{
  "language": string,
  "language_name": string,
  "ttml": string,
  "webvtt": string,
}
Поля
language string

Код языка, например "ru" или "en".
language_name string

Описательное название языка. Позволяет различать наборы субтитров, если для одного языка их несколько.
ttml string

Необязательный URL файла метаданных TTML.
webvtt string

Необязательный URL файла метаданных WebVTT.

SkipMetadata

SkipMetadata предоставляет информацию, необходимую клиентам для обработки событий пропуска объявлений с возможностью пропуска.
JSON-представление
{
  "offset": number,
  "tracking_url": string,
}
Поля
offset number

Смещение указывает, через сколько секунд после начала объявления проигрыватель должен показать кнопку пропуска. Если в шаблоне VAST не указано значение, то этот параметр опускается.
tracking_url string

TrackingURL содержит URL, на который должен отправляться запрос ping при пропуске объявления.

Значок

Объект Icon содержит информацию о значке VAST.
JSON-представление
{
  "click_data": object(ClickData),
  "creative_type": string,
  "click_fallback_images": [object(FallbackImage)],
  "height": int32,
  "width": int32,
  "resource": string,
  "type": string,
  "x_position": string,
  "y_position": string,
  "program": string,
  "alt_text": string,
}
Поля
click_data object(ClickData)

creative_type string

click_fallback_images [object(FallbackImage)]

height int32

width int32

resource string

type string

x_position string

y_position string

program string

alt_text string

ClickData

ClickData содержит информацию о переходе по значку.
JSON-представление
{
  "url": string,
}
Поля
url string

FallbackImage

FallbackImage содержит информацию о резервном изображении VAST.
JSON-представление
{
  "creative_type": string,
  "height": int32,
  "width": int32,
  "resource": string,
  "alt_text": string,
}
Поля
creative_type string

height int32

width int32

resource string

alt_text string

Wrapper

Контейнер содержит информацию о контейнере объявления. Если идентификатор сделки отсутствует, он не включается в отчет.
JSON-представление
{
  "system": string,
  "ad_id": string,
  "creative_id": string,
  "creative_ad_id": string,
  "deal_id": string,
}
Поля
system string

Идентификатор рекламной системы.
ad_id string

Идентификатор объявления, используемый для объявления-контейнера.
creative_id string

Идентификатор креатива, используемый для контейнера объявлений.
creative_ad_id string

Идентификатор объявления креатива, используемый для контейнера объявлений.
deal_id string

Необязательный идентификатор сделки для объявления-контейнера.

Проверка

Элемент Verification содержит информацию для Open Measurement, которая позволяет сторонним сервисам проверять видимость и другие показатели. В настоящее время поддерживаются только ресурсы JavaScript. Подробную информацию можно найти на странице https://iabtechlab.com/standards/open-measurement-sdk/.
JSON-представление
{
  "vendor": string,
  "java_script_resources": [object(JavaScriptResource)],
  "tracking_events": [object(TrackingEvent)],
  "parameters": string,
}
Поля
vendor string

Поставщик услуг по проверке.
java_script_resources [object(JavaScriptResource)]

Список ресурсов JavaScript для проверки.
tracking_events [object(TrackingEvent)]

Список событий отслеживания для проверки.
parameters string

Непрозрачная строка, передаваемая в код подтверждения начальной загрузки.

JavaScriptResource

JavaScriptResource содержит информацию для проверки с помощью JavaScript.
JSON-представление
{
  "script_url": string,
  "api_framework": string,
  "browser_optional": boolean,
}
Поля
script_url string

URI для полезной нагрузки JavaScript.
api_framework string

APIFramework – название фреймворка, который выполняет код подтверждения.
browser_optional boolean

Можно ли запустить этот скрипт вне браузера.

TrackingEvent

TrackingEvent содержит URL, на которые клиент должен отправлять запросы ping в определенных ситуациях.
JSON-представление
{
  "event": string,
  "uri": string,
}
Поля
event string

Тип события отслеживания.
uri string

Событие отслеживания, которое нужно зарегистрировать.

UniversalAdID

UniversalAdID используется для передачи уникального идентификатора креатива, который поддерживается в разных рекламных системах.
JSON-представление
{
  "id_value": string,
  "id_registry": string,
}
Поля
id_value string

Универсальный идентификатор выбранного креатива для объявления.
id_registry string

Строка, которая используется для идентификации URL сайта реестра, где регистрируется универсальный идентификатор объявления выбранного креатива.

Companion

Элемент Companion содержит информацию о сопутствующих объявлениях, которые могут показываться вместе с основным.
JSON-представление
{
  "click_data": object(ClickData),
  "creative_type": string,
  "height": int32,
  "width": int32,
  "resource": string,
  "type": string,
  "ad_slot_id": string,
  "api_framework": string,
  "tracking_events": [object(TrackingEvent)],
}
Поля
click_data object(ClickData)

Данные о кликах по сопутствующему креативу.
creative_type string

Атрибут CreativeType в узле <StaticResource> в VAST, если это сопутствующее объявление статического типа.
height int32

Высота сопутствующего креатива в пикселях.
width int32

Ширина сопутствующего креатива в пикселях.
resource string

Для статических и iframe-креативов это URL, который будет загружен и показан. Для сопутствующих креативов HTML это будет фрагмент кода HTML, который должен показываться в качестве сопутствующего креатива.
type string

Тип сопутствующего креатива. Это может быть статический креатив, iframe или HTML.
ad_slot_id string

Идентификатор рекламного места для этого сопутствующего креатива.
api_framework string

Фреймворк API для этого сопутствующего креатива.
tracking_events [object(TrackingEvent)]

Список событий отслеживания для этого сопутствующего креатива.

InteractiveFile

InteractiveFile содержит информацию об интерактивном креативе (например, SIMID), который должен показываться во время воспроизведения объявления.
JSON-представление
{
  "resource": string,
  "type": string,
  "variable_duration": boolean,
  "ad_parameters": string,
}
Поля
resource string

URL интерактивного креатива.
type string

MIME-тип файла, предоставленного в качестве ресурса.
variable_duration boolean

Может ли креатив запрашивать продление длительности.
ad_parameters string

Значение узла <AdParameters> в VAST.