동적 광고 삽입 API를 사용하면 DAI VOD 스트림을 요청하고 추적할 수 있습니다. HLS 및 DASH 스트림이 지원됩니다.
서비스: dai.google.com
stream 메서드의 경로는 https://dai.google.com를 기준으로 합니다.
메서드: 스트림
| 메서드 | |
|---|---|
stream | 
    
      POST /ondemand/v1/hls/content/{content-source}/vid/{video-id}/stream
      지정된 콘텐츠 소스 및 동영상 ID의 HLS DAI 스트림을 만듭니다. 
 지정된 콘텐츠 소스 및 동영상 ID의 DASH DAI 스트림을 만듭니다.  | 
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: DCLKDAI key="<api-key>"  | 
  
경로 매개변수
| 매개변수 | |
|---|---|
content-source | 
    
      string스트림의 CMS ID입니다.  | 
video-id | 
    
      string스트림의 동영상 ID입니다.  | 
요청 본문
요청 본문은 application/x-www-form-urlencoded 유형이며 다음 매개변수를 포함합니다.
| 매개변수 | ||
|---|---|---|
dai-ssb | 
    선택사항 | 서버 측 비콘 스트림을 만들려면   | 
  
| DFP 타겟팅 매개변수 | 선택사항 | 추가 타겟팅 매개변수 | 
| 스트림 매개변수 재정의 | 선택사항 | 스트림 생성 매개변수의 기본값을 재정의합니다. | 
| HMAC 인증 | 선택사항 | HMAC 기반 토큰을 사용하여 인증합니다. | 
응답 본문
성공하면 응답 본문에 새 Stream가 포함됩니다. 서버 측 비콘 스트림의 경우 이 Stream에는 stream_id 및 stream_manifest 필드만 포함됩니다.
Open Measurement
Verifications 필드에는 서버 측 비콘 스트림이 아닌 Open Measurement 확인에 관한 정보가 포함됩니다.
Verifications에는 서드 파티 측정 코드로 광고 재생을 확인하는 데 필요한 리소스와 메타데이터를 나열하는 Verification 요소가 하나 이상 포함됩니다.
JavaScriptResource만 지원됩니다. 자세한 내용은 IAB Tech Lab 및 VAST 4.1 사양을 참고하세요.
방법: 미디어 인증
재생 중에 광고 미디어 식별자가 발견되면 즉시 stream 엔드포인트의 media_verification_url를 사용하여 요청합니다. 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입니다. - URL 형식이 잘못되었거나 만료되어 요청에서 미디어를 확인할 수 없는 경우 
HTTP/1.1 404 Not Found HTTP/1.1 404 Not Found: 이 ID에 대한 이전 인증 요청이 승인된 경우HTTP/1.1 409 Conflict: 현재 다른 요청에서 이미 핑을 전송하고 있는 경우
광고 미디어 ID (HLS)
광고 미디어 식별자는 '사용자 정의 텍스트 정보' 프레임용으로 예약된 키 TXXX를 사용하여 HLS 타임스탬프 메타데이터로 인코딩됩니다. 프레임의 콘텐츠는 암호화되지 않으며 항상 "google_" 텍스트로 시작합니다.
프레임의 전체 텍스트 콘텐츠는 각 광고 인증 요청의 media_verification_url에 추가되어야 합니다.
광고 미디어 ID (DASH)
광고 미디어 식별자는 DASH의 EventStream 요소를 사용하여 매니페스트에 삽입됩니다.
각 EventStream의 스키마 ID URI는 urn:google:dai:2018입니다.
“google_”로 시작하는 광고 미디어 ID가 포함된 messageData 속성이 있는 이벤트가 포함됩니다.  messageData 속성의 전체 콘텐츠는 각 광고 인증 요청의 media_verification_url에 추가되어야 합니다.
응답 데이터
스트림
스트림은 새로 만든 스트림의 모든 리소스 목록을 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(지원 중단됨) HLS 마스터 재생목록 URL입니다. stream_manifest를 사용합니다. HLS만 해당합니다.  | 
    stream_manifest | 
    string스트림의 매니페스트입니다. HLS의 마스터 재생목록 및 DASH의 MPD에 해당합니다. 서버 측 비콘 스트림을 만들 때 응답에 표시되는 'stream_id' 외의 유일한 필드입니다.  | 
    media_verification_url | 
    string미디어 인증 URL  | 
    apple_tv | 
    object(AppleTV)AppleTV 기기에 관한 선택사항 정보입니다. 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)]광고 목록입니다. 비어 있으면 생략됩니다.  | 
광고
광고는 스트림의 광고를 설명합니다. 여기에는 광고 시점의 광고 위치, 광고 길이, 일부 선택적 메타데이터가 포함됩니다.| 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선택사항인 광고 ID입니다.  | 
    creative_id | 
    string선택사항인 광고 소재 ID입니다.  | 
    creative_ad_id | 
    string선택사항인 광고 소재 광고 ID입니다.  | 
    deal_id | 
    string거래 ID(선택사항)  | 
    clickthrough_url | 
    string클릭연결 URL(선택사항)  | 
    icons | 
    [object(Icon)]아이콘 목록입니다. 비어 있으면 생략됩니다.  | 
    wrappers | 
    [object(Wrapper)]래퍼 목록입니다. 비어 있으면 생략됩니다.  | 
    events | 
    [object(Event)]광고의 이벤트 목록입니다.  | 
    verifications | 
    [object(Verification)]광고 소재 재생을 확인하기 위해 서드 파티 측정 코드를 실행하는 데 필요한 리소스와 메타데이터를 나열하는 선택적 Open Measurement 확인 항목입니다.  | 
    universal_ad_id | 
    object(UniversalAdID)선택사항인 범용 광고 ID입니다.  | 
    companions | 
    [object(Companion)]이 광고와 함께 표시될 수 있는 선택적 컴패니언입니다.  | 
    interactive_file | 
    object(InteractiveFile)광고 재생 중에 표시되어야 하는 양방향 광고 소재(SIMID)(선택사항)  | 
    skip_metadata | 
    object(SkipMetadata)건너뛸 수 있는 광고의 선택적 메타데이터입니다. 이 속성이 설정되면 광고를 건너뛸 수 있음을 나타내며 건너뛰기 UI 및 추적 이벤트를 처리하는 방법에 관한 안내가 포함됩니다.  | 
    extensions | 
    stringVAST의 모든 <Extension> 노드 목록(선택사항)  | 
이벤트
이벤트에는 이벤트 유형과 이벤트의 프레젠테이션 시간이 포함됩니다.| JSON 표현 | 
|---|
{ "time": number, "type": string, }  | 
| 필드 | |
|---|---|
    time | 
    number이 이벤트의 프레젠테이션 시간입니다.  | 
    type | 
    string이 이벤트의 유형입니다.  | 
부제목
자막은 동영상 스트림의 부속 자막 트랙을 설명합니다. TTML 및 WebVTT라는 두 가지 자막 형식을 저장합니다. TTMLPath 속성에는 TTML 사이드카 파일의 URL이 포함되며 WebVTTPath 속성에는 WebVTT 사이드카 파일의 URL이 포함됩니다.| JSON 표현 | 
|---|
{
  "language": string,
  "language_name": string,
  "ttml": string,
  "webvtt": string,
} | 
| 필드 | |
|---|---|
    language | 
    string'en' 또는 'de'와 같은 언어 코드입니다.  | 
    language_name | 
    string언어의 설명 이름입니다. 동일한 언어에 여러 세트가 있는 경우 특정 자막 세트를 구분합니다.  | 
    ttml | 
    stringTTML 사이드카 파일의 URL(선택사항)입니다.  | 
    webvtt | 
    stringWebVTT 사이드카 파일의 URL(선택사항)  | 
SkipMetadata
SkipMetadata는 클라이언트가 건너뛸 수 있는 광고의 건너뛰기 이벤트를 처리하는 데 필요한 정보를 제공합니다.| JSON 표현 | 
|---|
{
  "offset": number,
  "tracking_url": string,
} | 
| 필드 | |
|---|---|
    offset | 
    number오프셋은 플레이어가 건너뛰기 버튼을 렌더링하기 위해 광고에서 기다려야 하는 시간(초)을 나타냅니다. VAST에 제공되지 않은 경우 생략됩니다.  | 
    tracking_url | 
    stringTrackingURL에는 건너뛰기 이벤트에서 핑해야 하는 URL이 포함됩니다.  | 
아이콘
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 | 
래퍼
래퍼에는 래퍼 광고에 관한 정보가 포함됩니다. 거래 ID가 없는 경우 거래 ID는 포함되지 않습니다.| JSON 표현 | 
|---|
{
  "system": string,
  "ad_id": string,
  "creative_id": string,
  "creative_ad_id": string,
  "deal_id": string,
} | 
| 필드 | |
|---|---|
    system | 
    string광고 시스템 식별자입니다.  | 
    ad_id | 
    string래퍼 광고에 사용되는 광고 ID입니다.  | 
    creative_id | 
    string래퍼 광고에 사용된 광고 소재 ID입니다.  | 
    creative_ad_id | 
    string래퍼 광고에 사용된 광고 소재 광고 ID입니다.  | 
    deal_id | 
    string래퍼 광고의 거래 ID(선택사항)  | 
인증
인증에는 서드 파티 조회가능성 및 인증 측정을 용이하게 하는 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에는 JavaScript를 통한 인증에 관한 정보가 포함됩니다.| JSON 표현 | 
|---|
{
  "script_url": string,
  "api_framework": string,
  "browser_optional": boolean,
} | 
| 필드 | |
|---|---|
    script_url | 
    stringJavaScript 페이로드의 URI입니다.  | 
    api_framework | 
    stringAPIFramework는 인증 코드를 실행하는 동영상 프레임워크의 이름입니다.  | 
    browser_optional | 
    boolean이 스크립트를 브라우저 외부에서 실행할 수 있는지 여부입니다.  | 
TrackingEvent
TrackingEvent에는 특정 상황에서 클라이언트가 핑해야 하는 URL이 포함됩니다.| JSON 표현 | 
|---|
{
  "event": string,
  "uri": string,
} | 
| 필드 | |
|---|---|
    event | 
    string추적 이벤트의 유형입니다.  | 
    uri | 
    string핑할 추적 이벤트입니다.  | 
UniversalAdID
UniversalAdID는 광고 시스템 전반에서 유지되는 고유한 광고 소재 식별자를 제공하는 데 사용됩니다.| JSON 표현 | 
|---|
{ "id_value": string, "id_registry": string, }  | 
| 필드 | |
|---|---|
    id_value | 
    string광고에 대해 선택된 광고 소재의 범용 광고 ID입니다.  | 
    id_registry | 
    string선택한 광고 소재의 범용 광고 ID가 카탈로그화된 등록처 웹사이트의 URL을 식별하는 데 사용되는 문자열입니다.  | 
컴패니언
컴패니언에는 광고와 함께 표시될 수 있는 컴패니언 광고에 관한 정보가 포함됩니다.| 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정적 유형의 컴패니언인 경우 VAST의 <StaticResource> 노드에 있는 CreativeType 속성  | 
    height | 
    int32이 컴패니언의 높이(픽셀)입니다.  | 
    width | 
    int32이 컴패니언의 너비(픽셀)입니다.  | 
    resource | 
    string정적 및 iframe 컴패니언의 경우 로드되고 표시될 URL입니다. HTML 컴패니언의 경우 컴패니언으로 표시되어야 하는 HTML 스니펫입니다.  | 
    type | 
    string이 컴패니언의 유형입니다. 정적, iframe 또는 HTML일 수 있습니다.  | 
    ad_slot_id | 
    string이 컴패니언의 슬롯 ID입니다.  | 
    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 | 
    stringVAST의 <AdParameters> 노드 값입니다.  |