Interfejs Dynamic Ad Insertion API umożliwia żądanie i śledzenie strumieni wideo na żądanie (VOD) z dynamicznym wstawianiem reklam. Obsługiwane są strumienie HLS i DASH.
Usługa: dai.google.com
Ścieżka metody stream jest względna do https://dai.google.com
Metoda: strumień
| Metody | |
|---|---|
stream |
POST /ondemand/v1/hls/content/{content-source}/vid/{video-id}/stream
Tworzy strumień HLS DAI dla danego źródła treści i identyfikatora filmu.
Tworzy strumień DASH DAI dla danego źródła treści i identyfikatora filmu. |
Żądanie 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
Nagłówek żądania
| Parametry | |
|---|---|
api‑key |
stringKlucz interfejsu API podany podczas tworzenia strumienia musi być prawidłowy w przypadku sieci wydawcy. Zamiast podawać go w treści żądania, możesz przekazać klucz interfejsu API w nagłówku HTTP Authorization w takim formacie: Authorization: DCLKDAI key="<api-key>" |
Parametry ścieżki
| Parametry | |
|---|---|
content-source |
stringIdentyfikator CMS strumienia. |
video-id |
stringIdentyfikator filmu strumienia. |
Treść żądania
Treść żądania ma typ application/x-www-form-urlencoded i zawiera te parametry:
| Parametry | ||
|---|---|---|
dai-ssb |
Opcjonalny | Ustaw na |
| Parametry kierowania DFP | Opcjonalny | Dodatkowe parametry kierowania. |
| Zastępowanie parametrów strumienia | Opcjonalny | Zastępowanie domyślnych wartości parametru tworzenia strumienia. |
| Uwierzytelnianie HMAC | Opcjonalny | Uwierzytelnianie za pomocą tokena opartego na HMAC. |
Treść odpowiedzi
Jeśli operacja się powiedzie, treść odpowiedzi będzie zawierać nowy obiekt Stream. W przypadku strumieni z beaconami po stronie serwera pole Stream zawiera tylko pola stream_id i stream_manifest.
Open Measurement
Pole Verifications zawiera informacje o weryfikacji Open Measurement w przypadku strumieni danych, które nie korzystają z beaconów po stronie serwera.
Verifications zawiera co najmniej 1 element Verification, który zawiera listę zasobów
i metadanych, których potrzebujesz do weryfikacji odtwarzania kreacji za pomocą kodu pomiarowego innej firmy.
Obsługiwana jest tylko wartość JavaScriptResource. Więcej informacji znajdziesz w IAB Tech Lab i specyfikacji VAST 4.1.
Metoda: weryfikacja mediów
Gdy podczas odtwarzania pojawi się identyfikator mediów reklamy, natychmiast wyślij żądanie za pomocą media_verification_url z urządzenia końcowego stream. media_verification_url to ścieżka bezwzględna.
W przypadku strumieniowania z beaconami po stronie serwera, gdzie weryfikację multimediów inicjuje serwer, nie trzeba wysyłać próśb o weryfikację multimediów.
Żądania wysyłane do punktu końcowego media verification są idempotentne.
| Metody | |
|---|---|
media verification |
GET {media_verification_url}/{ad_media_id}
powiadamia interfejs API o zdarzeniu weryfikacji mediów; |
Żądanie HTTP
GET {media-verification-url}/{ad-media-id}
Treść odpowiedzi
media verificationzwraca te odpowiedzi:
HTTP/1.1 204 No Contentjeśli weryfikacja mediów się powiedzie i wszystkie pingi zostaną wysłane.HTTP/1.1 404 Not Found, jeśli nie można zweryfikować mediów z powodu nieprawidłowego formatowania lub wygaśnięcia adresu URL.HTTP/1.1 404 Not Found, jeśli poprzednia prośba o weryfikację tego dokumentu została zrealizowana;HTTP/1.1 409 Conflictjeśli w tym samym czasie jest już wysyłana inna prośba.
Identyfikatory mediów reklamowych (HLS)
Identyfikatory multimediów reklamowych zostaną zakodowane w metadanych HLS z użyciem klucza TXXX zarezerwowanego dla klatek „zdefiniowanych przez użytkownika informacji tekstowych”. Zawartość ramki będzie niezaszyfrowana i zawsze rozpocznie się od tekstu "google_".
Cały tekst w ramce powinien zostać dołączony do parametru media_verification_url w przypadku każdego żądania weryfikacji reklamy.
Identyfikatory mediów reklamy (DASH)
Identyfikatory multimediów reklamy zostaną wstawione do pliku manifestu za pomocą elementu EventStream w DASH.
Każdy element EventStream będzie mieć identyfikator URI schematu o postaci urn:google:dai:2018.
Będą one zawierać zdarzenia z atrybutem messageData, w którym podany jest identyfikator reklamy zawierający ciąg znaków zaczynający się od “google_”. Cała zawartość atrybutu messageData powinna zostać dołączona do parametru media_verification_url w przypadku każdego żądania weryfikacji reklamy.
Dane odpowiedzi
Strumień
Strumień służy do renderowania listy wszystkich zasobów nowo utworzonego strumienia w formacie JSON .| Zapis 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)],
} |
| Pola | |
|---|---|
stream_id |
stringIdentyfikator strumienia. |
total_duration |
numberCzas trwania strumienia w sekundach. |
content_duration |
numberCzas trwania treści bez reklam (w sekundach). |
valid_for |
stringCzas trwania strumienia jest prawidłowy w formacie „00h00m00s”. |
valid_until |
stringData ważności strumienia w formacie RFC 3339. |
subtitles |
[object(Subtitle)]Lista napisów. Jeśli jest puste, pomiń. Tylko HLS. |
hls_master_playlist |
string(WYCOFANE) URL listy odtwarzania głównej HLS. Użyj pliku stream_manifest. Tylko HLS. |
stream_manifest |
stringPlik manifestu strumienia. Odpowiada głównej playlistzie w HLS i MPD w DASH. To jedyne pole oprócz pola „stream_id”, które jest obecne w odpowiedzi podczas tworzenia strumienia z beaconem po stronie serwera. |
media_verification_url |
stringURL weryfikacji mediów |
apple_tv |
object(AppleTV)Opcjonalne informacje dotyczące urządzeń Apple TV. Tylko HLS. |
ad_breaks |
[object(AdBreak)]Lista przerw na reklamę. Jeśli jest puste, pomiń. |
AppleTV
AppleTV zawiera informacje dotyczące urządzeń Apple TV.| Zapis JSON |
|---|
{
"interstitials_url": string,
} |
| Pola | |
|---|---|
interstitials_url |
stringAdres URL kreacji interstii. |
AdBreak
AdBreak opisuje pojedynczą przerwę na reklamę w strumieniu. Zawiera on pozycję, czas trwania, typ (w trakcie, przed lub po) oraz listę reklam.| Zapis JSON |
|---|
{ "type": string, "start": number, "duration": number, "ads": [object(Ad)], } |
| Pola | |
|---|---|
type |
stringDozwolone typy przerw to: w środku, przed i po. |
start |
numberPozycja w strumieniu, w której zaczyna się przerwa (w sekundach). |
duration |
numberCzas trwania przerwy na reklamę (w sekundach). |
ads |
[object(Ad)]Lista reklam. Jeśli jest puste, pomiń. |
Reklama
Reklama – opis reklamy w strumieniu. Zawiera on pozycję reklamy w przerwie, czas trwania reklamy i niektóre opcjonalne metadane.| Zapis 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": [],
} |
| Pola | |
|---|---|
seq |
numberPozycja reklamy w przerwie. |
start |
numberPozycja w strumieniu, w której rozpoczyna się reklama (w sekundach). |
duration |
numberCzas trwania reklamy w sekundach. |
title |
stringOpcjonalny tytuł reklamy. |
description |
stringOpcjonalny opis reklamy. |
advertiser |
stringOpcjonalny identyfikator reklamodawcy. |
ad_system |
stringOpcjonalny system reklamowy. |
ad_id |
stringOpcjonalny identyfikator reklamy. |
creative_id |
stringIdentyfikator kreacji (opcjonalnie). |
creative_ad_id |
stringOpcjonalny identyfikator reklamy powiązanej z kreacją. |
deal_id |
stringOpcjonalny identyfikator umowy. |
clickthrough_url |
stringOpcjonalny docelowy URL |
icons |
[object(Icon)]Lista ikon, pomijana, jeśli jest pusta. |
wrappers |
[object(Wrapper)]Lista Wrappers. Jeśli jest puste, pomiń. |
events |
[object(Event)]Lista zdarzeń w reklamie |
verifications |
[object(Verification)]Opcjonalne wpisy weryfikacji Open Measurement, które zawierają listę zasobów i metadanych wymaganych do wykonania kodu pomiarowego firmy zewnętrznej w celu weryfikacji odtwarzania kreacji. |
universal_ad_id |
object(UniversalAdID)Opcjonalny uniwersalny identyfikator reklamy. |
companions |
[object(Companion)]Opcjonalne kreacje towarzyszące, które mogą być wyświetlane razem z tą reklamą. |
interactive_file |
object(InteractiveFile)Opcjonalna interaktywna kreacja (SIMID), która powinna być wyświetlana podczas odtwarzania reklamy. |
skip_metadata |
object(SkipMetadata)Opcjonalne metadane w przypadku reklam możliwych do pominięcia. Jeśli jest ustawiona, oznacza to, że reklama jest możliwa do pominięcia i zawiera instrukcje dotyczące obsługi interfejsu pominięcia oraz zdarzenia śledzenia. |
extensions |
stringOpcjonalna lista wszystkich węzłów <Extension> w pliku VAST. |
Zdarzenie
Zdarzenie zawiera typ zdarzenia i czas jego wyświetlania.| Zapis JSON |
|---|
{ "time": number, "type": string, } |
| Pola | |
|---|---|
time |
numberCzas prezentacji tego wydarzenia. |
type |
stringTyp tego zdarzenia. |
Podtytuł
Napisy – opisują ścieżkę z napisami do filmu. Przechowuje ona 2 formaty napisów: TTML i WebVTT. Atrybut TTMLPath zawiera adres URL pliku TTML, a atrybut WebVTTPath zawiera adres URL pliku dodatkowego WebVTT.| Zapis JSON |
|---|
{
"language": string,
"language_name": string,
"ttml": string,
"webvtt": string,
} |
| Pola | |
|---|---|
language |
stringKod języka, np. 'pl' lub 'en'. |
language_name |
stringNazwa opisowa języka. pozwala odróżnić konkretny zestaw napisów, jeśli w przypadku tego samego języka istnieje ich więcej; |
ttml |
stringOpcjonalny URL do pliku pomocniczego TTML. |
webvtt |
stringOpcjonalny URL do pliku pomocniczego WebVTT. |
SkipMetadata
SkipMetadata zawiera informacje potrzebne klientom do obsługi zdarzeń pominięcia w przypadku reklam możliwych do pominięcia.| Zapis JSON |
|---|
{
"offset": number,
"tracking_url": string,
} |
| Pola | |
|---|---|
offset |
numberOpóźnienie wskazuje czas w sekundach, przez jaki odtwarzacz powinien czekać na renderowanie przycisku pomijania. Pomijany, jeśli nie został podany w pliku VAST. |
tracking_url |
stringTrackingURL zawiera adres URL, pod który należy wysłać ping w przypadku zdarzenia pominięcia. |
Ikona
Ikona zawiera informacje o ikonie VAST.| Zapis 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, } |
| Pola | |
|---|---|
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 zawiera informacje o kliknięciu ikony.| Zapis JSON |
|---|
{
"url": string,
} |
| Pola | |
|---|---|
url |
string |
FallbackImage
FallbackImage zawiera informacje o zastępczym obrazie VAST.| Zapis JSON |
|---|
{ "creative_type": string, "height": int32, "width": int32, "resource": string, "alt_text": string, } |
| Pola | |
|---|---|
creative_type |
string |
height |
int32 |
width |
int32 |
resource |
string |
alt_text |
string |
Wrapper
Element wrapper zawiera informacje o reklamie typu wrapper. Nie zawiera identyfikatora oferty, jeśli nie istnieje.| Zapis JSON |
|---|
{
"system": string,
"ad_id": string,
"creative_id": string,
"creative_ad_id": string,
"deal_id": string,
} |
| Pola | |
|---|---|
system |
stringIdentyfikator systemu reklamowego. |
ad_id |
stringIdentyfikator reklamy używany w reklamie opakowującej. |
creative_id |
stringIdentyfikator kreacji użytej w reklamie w ramce. |
creative_ad_id |
stringIdentyfikator reklamy kreacji użytej w reklamie z kodem towarzyszącym |
deal_id |
stringOpcjonalny identyfikator umowy dla reklamy opakowującej. |
Weryfikacja
Weryfikacja zawiera informacje dotyczące Open Measurement, które ułatwiają pomiar widoczności i weryfikację przez zewnętrznych dostawców. Obecnie obsługiwane są tylko zasoby JavaScript. Informacje znajdziesz na stronie https://iabtechlab.com/standards/open-measurement-sdk/| Zapis JSON |
|---|
{
"vendor": string,
"java_script_resources": [object(JavaScriptResource)],
"tracking_events": [object(TrackingEvent)],
"parameters": string,
} |
| Pola | |
|---|---|
vendor |
stringDostawca systemu weryfikacji. |
java_script_resources |
[object(JavaScriptResource)]Lista zasobów JavaScript do weryfikacji. |
tracking_events |
[object(TrackingEvent)]Lista zdarzeń śledzenia służących do weryfikacji |
parameters |
stringNieprzezroczysty ciąg znaków przekazany do kodu weryfikacyjnego bootstrapa. |
JavaScriptResource
JavaScriptResource zawiera informacje do weryfikacji za pomocą kodu JavaScript.| Zapis JSON |
|---|
{
"script_url": string,
"api_framework": string,
"browser_optional": boolean,
} |
| Pola | |
|---|---|
script_url |
stringIdentyfikator URI ładunku JavaScript. |
api_framework |
stringAPIFramework to nazwa platformy wideo, która wykonuje kod weryfikacyjny. |
browser_optional |
booleanCzy skrypt można uruchomić poza przeglądarką. |
TrackingEvent
TrackingEvent zawiera adresy URL, które w określonych sytuacjach powinny być pingowane przez klienta.| Zapis JSON |
|---|
{
"event": string,
"uri": string,
} |
| Pola | |
|---|---|
event |
stringTyp zdarzenia śledzenia. |
uri |
stringZdarzenie śledzenia, które ma być pingowane. |
UniversalAdID
UniversalAdID służy do podawania unikalnego identyfikatora kreacji, który jest utrzymywany w różnych systemach reklamowych.| Zapis JSON |
|---|
{ "id_value": string, "id_registry": string, } |
| Pola | |
|---|---|
id_value |
stringUniwersalny identyfikator reklamy wybranej kreacji. |
id_registry |
stringCiąg znaków służący do identyfikacji adresu URL witryny rejestru, w której katalogowany jest uniwersalny identyfikator reklamy wybranej kreacji. |
Reklama towarzysząca
Element towarzyszący zawiera informacje o reklamach towarzyszących, które mogą wyświetlać się razem z reklamą.| Zapis 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)], } |
| Pola | |
|---|---|
click_data |
object(ClickData)Dane o kliknięciach tej kreacji towarzyszącej. |
creative_type |
stringAtrybut CreativeType w węźle <StaticResource> w pliku VAST, jeśli jest to kreacja towarzysząca typu static. |
height |
int32Wysokość tego elementu w pikselach. |
width |
int32Szerokość tego elementu w pikselach. |
resource |
stringW przypadku elementów towarzyszących statycznych i iframe będzie to adres URL, który ma być wczytywany i wyświetlany. W przypadku elementów towarzyszących w formacie HTML będzie to fragment kodu HTML, który powinien być wyświetlany jako element towarzyszący. |
type |
stringTyp tego elementu towarzyszącego. Może być statyczny, iframe lub HTML. |
ad_slot_id |
stringIdentyfikator slotu dla tego urządzenia towarzyszącego. |
api_framework |
stringPlatforma interfejsu API dla tego urządzenia. |
tracking_events |
[object(TrackingEvent)]Lista zdarzeń śledzenia dla tego urządzenia towarzyszącego. |
InteractiveFile
Plik InteractiveFile zawiera informacje o interaktywnych kreacjach (np. identyfikator SIMID), które powinny być wyświetlane podczas odtwarzania reklamy.| Zapis JSON |
|---|
{ "resource": string, "type": string, "variable_duration": boolean, "ad_parameters": string, } |
| Pola | |
|---|---|
resource |
stringAdres URL interaktywnej kreacji. |
type |
stringTyp MIME pliku podawanego jako zasób. |
variable_duration |
booleanCzy ta kreacja może poprosić o przedłużenie czasu trwania. |
ad_parameters |
stringWartość węzła <AdParameters> w pliku VAST. |