# TARGETPICK 타겟픽

**Targetpick은 고도화된 광고 시스템을 통해 광고주와 퍼블리셔 모두에게 높은 효율을 제공하는 성과형 광고 플랫폼입니다.**

TARGETPICK(타겟픽), TARGETPICK VIDEO(타겟픽 비디오) 두 개의 독립된 플랫폼으로 다양한 광고 상품을 통한 수익화 모델을 제공합니다.

다양한 광고주의 캠페인 운영을 통해 평균 90%이상의 안정적인 Fill-Rate와 Audience 타겟팅을 활용한 높은 효율로 퍼블리셔에게 고수익을 제공합니다.

### 바로가기

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>타겟픽 개발자센터</strong></td><td>타겟픽 개발자센터로 이동합니다.</td><td><a href="/files/YTDKDJ3zAMmEkIYNAYCB">/files/YTDKDJ3zAMmEkIYNAYCB</a></td><td></td><td><a href="https://targetpick.io">https://targetpick.io</a></td></tr><tr><td>CJ <strong>메조미디어 홈페이지</strong> </td><td>CJ 메조미디어 홈페이지로 이동합니다.</td><td><a href="/files/Il4h3XWGuHrUyP8SRQKE">/files/Il4h3XWGuHrUyP8SRQKE</a></td><td></td><td><a href="https://www.mezzomedia.co.kr">https://www.mezzomedia.co.kr</a></td></tr></tbody></table>


# Android SDK

Targetpick Banner Android SDK 연동 가이드 입니다.


# 기본 설정(미디에이션 미포함)

Android SDK 기본 설정을 위한 가이드 입니다.

## 1. Sample Project

Android Studio Version

{% embed url="<https://bitbucket.org/mezzomediaadtech/android-v3-studio_version>" %}

```
git clone https://mezzomedia_adtech@bitbucket.org/mezzomediaadtech/android-v3-studio_version.git
```

## 2. 라이브러리 추가

<figure><img src="/files/oFGH1J5QjlJotzBO1rIT" alt=""><figcaption></figcaption></figure>

## 3. Gradle 설정

### - build.gradle

* 프로젝트 영역

<pre class="language-java"><code class="lang-java"><strong>allprojects {
</strong>    repositories {
        mavenCentral()
    }
}
</code></pre>

* 프로젝트 영역

{% code fullWidth="false" %}

```java
dependencies {
    implementation files('libs/manlibray.jar')
}
```

{% endcode %}

## 4. 매니페스트 퍼미션 설정

### - Permission

* 네트워크 사용

{% code title="Network permission" overflow="wrap" lineNumbers="true" %}

```java
<!-- 권한 : NetworkInterface 목적 : IP 주소 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 권한 : ConnectivityManager 목적 : 통신 연결이 Mobile or Wifi 여부 파악 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

{% endcode %}

* 단말기 정보( TelephonyManager의 망 사업자의 MNC, MCC ) 사용

{% code title="Telephony permission" lineNumbers="true" %}

```java
<!-- 권한 : Telephony DataNetworkType Type SDK version 24 이상 목적 : Mobile network: 2G, 3G, LET, 5G 등 -->
<uses-permission android:name="android.permission.READ_BASIC_PHONE_STATE" />
<!-- 권한 : Telephony Network Type SDK version 23 이하 목적 : Mobile network: 2G, 3G, LET, 5G 등 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
```

{% endcode %}

* 광고 ID

{% code title="Uses permission" lineNumbers="true" %}

```java
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
```

{% endcode %}

### - Application

* android:configChanges 설정 - 연속된 onCreate 호출로 자원 낭비 방지 값 설정 (테스트앱 기준)
* http 트래킹 및 이미지 로드 옵션 - android:usesCleartextTraffic=”true” 삽입

{% code title="application" lineNumbers="true" %}

```java
<application
    android:usesCleartextTraffic="true"...>
    <activity
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"...>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />...
        </intent-filter>
    </activity>
</application>
```

{% endcode %}

## 5. 공통 코드

### - 광고 설정의 데이터 구성 클래스

* 객체 선언

{% code title="데이터 초기화" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

* 필수 값 세팅

{% code title="데이터 필수 값" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="143"></th><th width="131"></th><th width="298"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td><p>광고 타입</p><p>AdConfig.API_BANNER</p><p>AdConfig.API_INTER</p><p>AdConfig.API_ENDING</p><p>AdConfig.API_MOVIE</p></td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

* 앱 사용자 나이 레벨 세팅

{% code title="데이터 앱 사용자 나이" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="217"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

* 퍼미션 사용 여부 - 매니페스트 파일에 정의한 READ\_PHONE\_STATE, READ\_BASIC\_PHONE\_STATE의 사용 여부를 코드에 세팅

{% code title="데이터 퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="234"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

### - 광고 요청

* 광고 요청을 위한 객체 선언

{% code title="배너, 동영상" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManView;
AdManView bannerView = new AdManView(context);
```

{% endcode %}

{% code title="전면배너(팝업)" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManPage;
AdManPage bannerView = new AdManPage(context);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th width="126"></th><th width="265"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>context</td><td>Context</td><td>activity Context값 사용</td><td><br></td></tr></tbody></table>

* 광고 요청 시 세팅한 데이터 및 리스너 등록

<pre class="language-java" data-title="데이타 및 리스너 등록" data-line-numbers><code class="lang-java">import com.mmc.man.AdListener;
 
bannerView.setData(adData, new AdListener() {
    //광고 호출 성공 및 광고 소진 (정상 결과값)
    @Override
    public void onAdSuccessCode(Object v, String id, final String type, final String status, final String jsonDataString) {
    }
    //광고 호출 실패 에러
    @Override
    public void onAdFailCode(Object v, String id, String type, String status, String jsonDataString) {
    }
    //광고 호출 실패 에러(웹뷰 에러)
    @Override
    public void onAdErrorCode(Object v, String id, String type, String status, String failingUrl) {
    }
    //광고에서 발생하는 이벤트
    @Override
    public void onAdEvent(Object v, String id, String type, String status, String jsonDataString) {
    }
    // 광고 퍼미션(위치) 설정 요청 이벤트 - 사용자 단말기 설정 페이지에 있는 앱 권한을 받기 위한 이벤트입니다.
    @Override
<strong>    public void onPermissionSetting(Object v, String id) {
</strong>  
    }
});
</code></pre>

<table data-header-hidden><thead><tr><th width="168"></th><th width="94"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>jsonDataString</td><td>string</td><td>광고 세부 정보 (미사용)</td><td><br></td></tr><tr><td>status</td><td>string</td><td>성공여부</td><td>AdResponseCode.Status.SUCCESS  // 성공</td></tr><tr><td>type</td><td>string</td><td>광고 타입 </td><td><p>AdResponseCode.Type.HOUSE //무료 광고</p><p>AdResponseCode.Type.GUARANTEE //유료 광고</p></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr></tbody></table>

* 광고 실패 결과

  <table data-header-hidden><thead><tr><th width="130"></th><th width="97"></th><th width="187"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>type</td><td>string</td><td>광고 에러 타입</td><td><p>//전반적인 에러</p><p>AdResponseCode.Type.ERROR </p><p></p><p>//단말기 네트워크 에러</p><p>AdResponseCode.Type.DEVICE_NETWORK_ERROR</p><p></p><p>//광고 소재 랜더링 에러</p><p>AdResponseCode.Type. DEVICE_RENDERING_TIMEOUT</p><p></p><p>//필수값여부 에러</p><p>AdResponseCode.Type. DEVICE_SETTING_ERROR </p><p></p><p>//앱 백그라운드에서 호출 시 에러</p><p>AdResponseCode.Type. APP_LIFECYCLE_BACK </p></td></tr><tr><td>status</td><td>string</td><td>광고 에러 상세 코드</td><td><p>// 광고소진</p><p>AdResponseCode.Status.NOAD </p><p></p><p>// 네트워크 지연으로 인한 타임아웃</p><p>AdResponseCode.Status.TIMEOUT </p><p></p><p>// 잘못된 소재로 인한 파싱 에러</p><p>AdResponseCode.Status.ERROR_PARSING </p><p></p><p>// 중복 호출 에러</p><p>AdResponseCode.Status.DUPLICATIONCALL </p><p></p><p>// ssl 오류 webview error</p><p>AdResponseCode.Status.ERROR_SSL_EXFIRED </p><p></p><p>// 미지원 브라우져</p><p>AdResponseCode.Status.ERROR_NOTSUPPORT_BROWSER </p><p></p><p>// 미지원 안드로이드 버전</p><p>AdResponseCode.Status.ERROR_NOTSUPPORT_ANDROID </p><p></p><p>AdResponseCode.Status.NEEDSYNC // 요청 싱크에러</p><p></p><p>// 소재 레더링 지연 에러</p><p>AdResponseCode.Status.DEVICE_RENDERING_TIMEOUT </p><p></p><p>// 매체 광고 데이타 객체 잘못된 세팅</p><p>AdResponseCode.Status.DEVICE_SETTING_ERROR </p></td></tr><tr><td>jsonDataString</td><td>string</td><td>광고 세부 정보 (미사용)</td><td><br></td></tr></tbody></table>
* android webview 에러 결과

{% code title="Webveiw 에러" lineNumbers="true" %}

```java
onAdErrorCode(v, id, type, status, failingUrl)
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="129"></th><th width="88"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>type</td><td>string</td><td>ERROR_* 값에 해당하는 오류 코드입니다.</td><td>( WebViewClient 참고 ) onReceivedError error code</td></tr><tr><td>status</td><td>string</td><td>오류를 설명하는 문자열입니다.</td><td>( WebViewClient 참고 ) onReceivedError description code</td></tr><tr><td>failingUrl</td><td>string</td><td>로드에 실패한 URL입니다.</td><td>( WebViewClient 참고 ) onReceivedError failingUrl code</td></tr></tbody></table>

* 이벤트 코드&#x20;

{% code title="이벤트" lineNumbers="true" %}

```java
onAdEvent(v, id, type, status, jsonDataString)
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="131"></th><th width="85"></th><th width="240"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>type</td><td>string</td><td>광고 이벤트 타입</td><td><p>//광고 클릭 이벤트</p><p>AdEvent.Type.CLICK    <br></p><p>//광고 닫기 이벤트</p><p>AdEvent.Type.CLOSE</p><p></p><p>//동영상 노출 이벤트<br>AdEvent.Type.IMP        <br></p><p>//동영상 스킵 이벤트</p><p>AdEvent.Type.SKIP       <br></p><p>//동영상 q1 이벤트</p><p>AdEvent.Type.START      <br></p><p>//동영상 q2 이벤트</p><p>AdEvent.Type.FIRSTQ      <br></p><p>//동영상 q3 이벤트</p><p>AdEvent.Type.MIDQ    <br></p><p>//동영상 q4 이벤트</p><p>AdEvent.Type.THIRDQ    <br></p><p>//동영상 q5 이벤트</p><p>AdEvent.Type.COMPLETE    <br></p><p>//동영상 종료 이벤트</p><p>AdEvent.Type.ENDED   </p></td></tr><tr><td>status</td><td>string</td><td>광고 에러 상세 코드 (미사용)</td><td><br></td></tr><tr><td>jsonDataString</td><td>string</td><td>광고 세부 정보 (미사용)</td><td><br></td></tr></tbody></table>

* 광고 요청 메서드(최종) - 메인 쓰레드 접근을 위한 핸들러 전달

{% code title="" lineNumbers="true" %}

```java
bannerView.request(new Handler());
```

{% endcode %}

## 6. AdConfig 설명

<table data-header-hidden><thead><tr><th width="298"></th><th></th><th width="197"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.SDK_VERSION</td><td>String</td><td>sdk version</td><td><br></td></tr><tr><td>AdConfig.SDK_RELEASEDATE</td><td>String</td><td>sdk 배포 일자</td><td><br></td></tr><tr><td>AdConfig.API_BANNER</td><td>String</td><td>apiMode 띠배너</td><td><br></td></tr><tr><td>AdConfig.API_INTER</td><td>String</td><td>apiMode 전면배너</td><td><br></td></tr><tr><td>AdConfig.API_ENDING</td><td>String</td><td>apiMode 종료배너</td><td><br></td></tr><tr><td>AdConfig.API_MOVIE</td><td>String</td><td>apiMode 영상</td><td><br></td></tr></tbody></table>


# 기본 설정

Android SDK 기본 설정을 위한 가이드 입니다.

## 1. 라이브러리 추가

미디에이션 진행 여부에 따라 라이브러리를 기본/미디에이션 중 선택하여 진행

### - 라이브러리(기본) 다운로드

{% embed url="<https://bitbucket.org/mezzomediaadtech/android-v3-studio_version>" %}

```
git clone https://mezzomedia_adtech@bitbucket.org/mezzomediaadtech/android-v3-studio_version.git
```

<figure><img src="/files/oFGH1J5QjlJotzBO1rIT" alt=""><figcaption></figcaption></figure>

### - 라이브러리( 미디에이션 ) 다운로드&#x20;

build.gradle에 아래와 같이 추가하면 mezzo android sdk 다운로드

```
dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'io.github.mezzo-platform:mezzo-sdk:3.1.1'
}
```

<figure><img src="/files/EkNAkN5IZyVsrFx09T9y" alt="" width="309"><figcaption></figcaption></figure>

## 2. Gradle 설정

### - build.gradle

* 프로젝트 영역

<pre class="language-java"><code class="lang-java"><strong>allprojects {
</strong>    repositories {
        mavenCentral()
    }
}
</code></pre>

* 프로젝트 영역

{% code fullWidth="false" %}

```java
dependencies {
    implementation files('libs/manlibray.jar')
}
```

{% endcode %}

## 3. 매니페스트 퍼미션 설정

### - Permission

* 네트워크 사용

{% code title="Network permission" overflow="wrap" lineNumbers="true" %}

```java
<!-- 권한 : NetworkInterface 목적 : IP 주소 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 권한 : ConnectivityManager 목적 : 통신 연결이 Mobile or Wifi 여부 파악 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

{% endcode %}

* 단말기 정보( TelephonyManager의 망 사업자의 MNC, MCC ) 사용

{% code title="Telephony permission" lineNumbers="true" %}

```java
<!-- 권한 : Telephony DataNetworkType Type SDK version 24 이상 목적 : Mobile network: 2G, 3G, LET, 5G 등 -->
<uses-permission android:name="android.permission.READ_BASIC_PHONE_STATE" />
<!-- 권한 : Telephony Network Type SDK version 23 이하 목적 : Mobile network: 2G, 3G, LET, 5G 등 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
```

{% endcode %}

* 광고 ID

{% code title="Uses permission" lineNumbers="true" %}

```java
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
```

{% endcode %}

### - Application

* android:configChanges 설정 - 연속된 onCreate 호출로 자원 낭비 방지 값 설정 (테스트앱 기준)
* http 트래킹 및 이미지 로드 옵션 - android:usesCleartextTraffic=”true” 삽입

{% code title="application" lineNumbers="true" %}

```java
<application
    android:usesCleartextTraffic="true"...>
    <activity
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"...>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />...
        </intent-filter>
    </activity>
</application>
```

{% endcode %}

## 4. 공통 코드

### - 광고 설정의 데이터 구성 클래스

* 객체 선언

{% code title="데이터 초기화" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

* 필수 값 세팅

{% code title="데이터 필수 값" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="143"></th><th width="131">Text</th><th width="298">Text</th><th>Text</th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td><p>광고 타입</p><p>AdConfig.API_BANNER</p><p>AdConfig.API_INTER</p><p>AdConfig.API_ENDING</p><p>AdConfig.API_MOVIE</p></td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

* 앱 사용자 나이 레벨 세팅

{% code title="데이터 앱 사용자 나이" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="217"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

* 퍼미션 사용 여부 - 매니페스트 파일에 정의한 READ\_PHONE\_STATE, READ\_BASIC\_PHONE\_STATE의 사용 여부를 코드에 세팅

{% code title="데이터 퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="234"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

### - 광고 요청

* 광고 요청을 위한 객체 선언

{% code title="배너, 동영상" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManView;
AdManView bannerView = new AdManView(context);
```

{% endcode %}

{% code title="전면배너(팝업)" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManPage;
AdManPage bannerView = new AdManPage(context);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th width="126"></th><th width="265"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>context</td><td>Context</td><td>activity Context값 사용</td><td><br></td></tr></tbody></table>

* 광고 요청 시 세팅한 데이터 및 리스너 등록

<pre class="language-java" data-title="데이타 및 리스너 등록" data-line-numbers><code class="lang-java">import com.mmc.man.AdListener;
 
bannerView.setData(adData, new AdListener() {
    //광고 호출 성공 및 광고 소진 (정상 결과값)
    @Override
    public void onAdSuccessCode(Object v, String id, final String type, final String status, final String jsonDataString) {
    }
    //광고 호출 실패 에러
    @Override
    public void onAdFailCode(Object v, String id, String type, String status, String jsonDataString) {
    }
    //광고 호출 실패 에러(웹뷰 에러)
    @Override
    public void onAdErrorCode(Object v, String id, String type, String status, String failingUrl) {
    }
    //광고에서 발생하는 이벤트
    @Override
    public void onAdEvent(Object v, String id, String type, String status, String jsonDataString) {
    }
    // 광고 퍼미션(위치) 설정 요청 이벤트 - 사용자 단말기 설정 페이지에 있는 앱 권한을 받기 위한 이벤트입니다.
    @Override
<strong>    public void onPermissionSetting(Object v, String id) {
</strong>  
    }
});
</code></pre>

<table data-header-hidden><thead><tr><th width="168"></th><th width="94"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>jsonDataString</td><td>string</td><td>광고 세부 정보 (미사용)</td><td><br></td></tr><tr><td>status</td><td>string</td><td>성공여부</td><td>AdResponseCode.Status.SUCCESS  // 성공</td></tr><tr><td>type</td><td>string</td><td>광고 타입 </td><td><p>AdResponseCode.Type.HOUSE //무료 광고</p><p>AdResponseCode.Type.GUARANTEE //유료 광고</p></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr></tbody></table>

* 광고 실패 결과

  <table data-header-hidden><thead><tr><th width="130"></th><th width="97"></th><th width="187"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>type</td><td>string</td><td>광고 에러 타입</td><td><p>//전반적인 에러</p><p>AdResponseCode.Type.ERROR </p><p></p><p>//단말기 네트워크 에러</p><p>AdResponseCode.Type.DEVICE_NETWORK_ERROR</p><p></p><p>//광고 소재 랜더링 에러</p><p>AdResponseCode.Type. DEVICE_RENDERING_TIMEOUT</p><p></p><p>//필수값여부 에러</p><p>AdResponseCode.Type. DEVICE_SETTING_ERROR </p><p></p><p>//앱 백그라운드에서 호출 시 에러</p><p>AdResponseCode.Type. APP_LIFECYCLE_BACK </p></td></tr><tr><td>status</td><td>string</td><td>광고 에러 상세 코드</td><td><p>// 광고소진</p><p>AdResponseCode.Status.NOAD </p><p></p><p>// 네트워크 지연으로 인한 타임아웃</p><p>AdResponseCode.Status.TIMEOUT </p><p></p><p>// 잘못된 소재로 인한 파싱 에러</p><p>AdResponseCode.Status.ERROR_PARSING </p><p></p><p>// 중복 호출 에러</p><p>AdResponseCode.Status.DUPLICATIONCALL </p><p></p><p>// ssl 오류 webview error</p><p>AdResponseCode.Status.ERROR_SSL_EXFIRED </p><p></p><p>// 미지원 브라우져</p><p>AdResponseCode.Status.ERROR_NOTSUPPORT_BROWSER </p><p></p><p>// 미지원 안드로이드 버전</p><p>AdResponseCode.Status.ERROR_NOTSUPPORT_ANDROID </p><p></p><p>AdResponseCode.Status.NEEDSYNC // 요청 싱크에러</p><p></p><p>// 소재 레더링 지연 에러</p><p>AdResponseCode.Status.DEVICE_RENDERING_TIMEOUT </p><p></p><p>// 매체 광고 데이타 객체 잘못된 세팅</p><p>AdResponseCode.Status.DEVICE_SETTING_ERROR </p></td></tr><tr><td>jsonDataString</td><td>string</td><td>광고 세부 정보 (미사용)</td><td><br></td></tr></tbody></table>
* android webview 에러 결과

{% code title="Webveiw 에러" lineNumbers="true" %}

```java
onAdErrorCode(v, id, type, status, failingUrl)
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="129"></th><th width="88"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>type</td><td>string</td><td>ERROR_* 값에 해당하는 오류 코드입니다.</td><td>( WebViewClient 참고 ) onReceivedError error code</td></tr><tr><td>status</td><td>string</td><td>오류를 설명하는 문자열입니다.</td><td>( WebViewClient 참고 ) onReceivedError description code</td></tr><tr><td>failingUrl</td><td>string</td><td>로드에 실패한 URL입니다.</td><td>( WebViewClient 참고 ) onReceivedError failingUrl code</td></tr></tbody></table>

* 이벤트 코드&#x20;

{% code title="이벤트" lineNumbers="true" %}

```java
onAdEvent(v, id, type, status, jsonDataString)
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="131"></th><th width="85"></th><th width="240"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>v</td><td>object</td><td>광고 요청 객체를 리턴</td><td><br></td></tr><tr><td>id</td><td>string</td><td>매체 광고요청 시 사용된 고유id</td><td><br></td></tr><tr><td>type</td><td>string</td><td>광고 이벤트 타입</td><td><p>//광고 클릭 이벤트</p><p>AdEvent.Type.CLICK    <br></p><p>//광고 닫기 이벤트</p><p>AdEvent.Type.CLOSE</p><p></p><p>//동영상 노출 이벤트<br>AdEvent.Type.IMP        <br></p><p>//동영상 스킵 이벤트</p><p>AdEvent.Type.SKIP       <br></p><p>//동영상 q1 이벤트</p><p>AdEvent.Type.START      <br></p><p>//동영상 q2 이벤트</p><p>AdEvent.Type.FIRSTQ      <br></p><p>//동영상 q3 이벤트</p><p>AdEvent.Type.MIDQ    <br></p><p>//동영상 q4 이벤트</p><p>AdEvent.Type.THIRDQ    <br></p><p>//동영상 q5 이벤트</p><p>AdEvent.Type.COMPLETE    <br></p><p>//동영상 종료 이벤트</p><p>AdEvent.Type.ENDED   </p></td></tr><tr><td>status</td><td>string</td><td>광고 에러 상세 코드 (미사용)</td><td><br></td></tr><tr><td>jsonDataString</td><td>string</td><td>광고 세부 정보 (미사용)</td><td><br></td></tr></tbody></table>

* 광고 요청 메서드(최종) - 메인 쓰레드 접근을 위한 핸들러 전달

{% code title="" lineNumbers="true" %}

```java
bannerView.request(new Handler());
```

{% endcode %}

## 5. AdConfig 설명

<table data-header-hidden><thead><tr><th width="298"></th><th></th><th width="197"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.SDK_VERSION</td><td>String</td><td>sdk version</td><td><br></td></tr><tr><td>AdConfig.SDK_RELEASEDATE</td><td>String</td><td>sdk 배포 일자</td><td><br></td></tr><tr><td>AdConfig.API_BANNER</td><td>String</td><td>apiMode 띠배너</td><td><br></td></tr><tr><td>AdConfig.API_INTER</td><td>String</td><td>apiMode 전면배너</td><td><br></td></tr><tr><td>AdConfig.API_ENDING</td><td>String</td><td>apiMode 종료배너</td><td><br></td></tr><tr><td>AdConfig.API_MOVIE</td><td>String</td><td>apiMode 영상</td><td><br></td></tr></tbody></table>


# 띠 배너

Bar 형태의 일반적인 띠 배너 광고 적용을 위한 가이드 입니다. 사이즈는 종류에 따라 다를 수 있습니다.

## 1.매체 광고 레이아웃

* XML

{% code title="레이아웃" lineNumbers="true" %}

```java
<RelativeLayout
    android:id="@+id/bannerArea"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal" >
</RelativeLayout>
```

{% endcode %}

* Code

{% code title="레이아웃 객체 ID 설정" lineNumbers="true" %}

```java
ViewGroup bannerArea = findViewById(R.id.bannerArea);
```

{% endcode %}

## 2.광고 데이터&#x20;

{% code title="데이터 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

{% code title="광고 데이터 필수 값 세팅" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="205"></th><th width="143"></th><th width="292"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td>광고 타입 : AdConfig.API_BANNER</td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

{% code title="앱사용자 나이 레벨" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="258"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

{% code title="퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="246"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

## 3.광고 요청&#x20;

{% code title="요청 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManView;
AdManView bannerView = new AdManView(context);
```

{% endcode %}

{% code title="요청 객체에 데이터 및 리스너 연결" lineNumbers="true" %}

```java
bannerView.setData(adData, new AdListener(){...});
```

{% endcode %}

* 광고 객체에 매체 광고 레이아웃 추가

{% code title="레이아웃 추가 메서드" lineNumbers="true" %}

```java
bannerView.addBannerView(bannerArea);
```

{% endcode %}

* 최종 요청 메서드

{% code title="광고 요청 메서드" lineNumbers="true" %}

```java
bannerView.request(new Handler());
```

{% endcode %}

* 유저한테 안보이는 구간에서는 필히 리소스 해제 필요

{% code title="광고 리소스 해제 메서드" lineNumbers="true" %}

```java
if (bannerView != null) {
    bannerView.onDestroy();
}
```

{% endcode %}

[좋아요](https://wiki.cjenm.com/pages/viewpage.action?pageId=188876422)처음으로 좋아하는 사람이 돼볼까요?


# 전면 배너(전체 화면)

전체 화면 전면 배너 적용을 위한 가이드 입니다.

## 1.광고 데이터&#x20;

{% code title="데이터 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

{% code title="광고 데이터 필수 값 세팅" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="150"></th><th width="122"></th><th width="281"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td>광고 타입 : AdConfig.API_INTER</td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

{% code title="앱사용자 나이 레벨" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="258"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

{% code title="퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="246"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

## 2.광고 요청&#x20;

{% code title="요청 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManPage;  
AdManPage interView = new AdManPage(Context c);
```

{% endcode %}

{% code title="요청 객체에 데이터 및 리스너 연결" lineNumbers="true" %}

```java
interView.setData(adData, new AdListener(){...});
```

{% endcode %}

* 최종 요청 메서드

{% code title="광고 요청 메서드" lineNumbers="true" %}

```java
interView.request(new Handler());
```

{% endcode %}

* 유저한테 안보이는 구간에서는 필히 리소스 해제 필요

{% code title="광고 리소스 해제 메서드" lineNumbers="true" %}

```java
if (interView != null) {    
    interView.onDestroy();
}
```

{% endcode %}

[좋아요](https://wiki.cjenm.com/pages/viewpage.action?pageId=188876422)처음으로 좋아하는 사람이 돼볼까요?


# 전면 배너(팝업)

팝업 전면 배너 적용을 위한 가이드 입니다.

## 1.광고 데이터

{% code title="데이터 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

{% code title="광고 데이터 필수 값 세팅" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="150"></th><th width="122"></th><th width="281"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td>광고 타입 : AdConfig.API_INTER</td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

{% code title="앱사용자 나이 레벨" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="258"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

{% code title="퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="246"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

{% code title="팝업 사용 여부" lineNumbers="true" %}

```java
adData.setPopup(AdConfig.USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="237"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td>etc</td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

## 2.광고 요청&#x20;

{% code title="요청 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManPage;  
AdManPage interView = new AdManPage(Context c);
```

{% endcode %}

{% code title="요청 객체에 데이터 및 리스너 연결" lineNumbers="true" %}

```java
interView.setData(adData, new AdListener(){...});
```

{% endcode %}

* 최종 요청 메서드

{% code title="광고 요청 메서드" lineNumbers="true" %}

```java
interView.request(new Handler());
```

{% endcode %}

* 유저한테 안보이는 구간에서는 필히 리소스 해제 필요

{% code title="광고 리소스 해제 메서드" lineNumbers="true" %}

```java
if (interView != null) {    
    interView.onDestroy();
}
```

{% endcode %}

[좋아요](https://wiki.cjenm.com/pages/viewpage.action?pageId=188876422)처음으로 좋아하는 사람이 돼볼까요?


# 동영상

Targetpick Video 광고 적용을 위한 가이드 입니다.

## 1.매체 광고 레이아웃

* XML

{% code title="레이아웃" lineNumbers="true" %}

```java
<RelativeLayout
    android:id="@+id/movieArea"
    android:layout_width="200dp"
    android:layout_height="355dp"
    android:orientation="horizontal" >
</RelativeLayout>
```

{% endcode %}

* Code

{% code title="레이아웃 객체 ID 설정" lineNumbers="true" %}

```java
ViewGroup movieArea = findViewById(R.id.movieArea);
```

{% endcode %}

## 2.광고 데이터&#x20;

{% code title="데이터 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

{% code title="광고 데이터 필수 값 세팅" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="205"></th><th width="143"></th><th width="292"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td>광고 타입 : AdConfig.API_MOVIE</td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

{% code title="광고 트래킹 데이터 필수 값 세팅" lineNumbers="true" %}

```java
adData.movie(autoPlay, autoReplay, clickFullArea, muted, soundBtnShow, clickBtnShow, skipBtnShow);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="228"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>autoPlay</td><td>string</td><td>자동 플레이</td><td><br></td></tr><tr><td>autoReplay</td><td>string</td><td>자동 리플레이 설정</td><td><br></td></tr><tr><td>clickFullArea</td><td>string</td><td>화면 전체 클릭 설정 여부</td><td><br></td></tr><tr><td>muted</td><td>string</td><td>음소거로 시작할지 여부</td><td><br></td></tr><tr><td>soundBtnShow</td><td>string</td><td>음소거 버튼 노출 여부</td><td><br></td></tr><tr><td>clickBtnShow</td><td>string</td><td>광고더보기 버튼 노출 여부</td><td><br></td></tr><tr><td>skipBtnShow</td><td>string</td><td>스킵버튼 노출 여부</td><td><br></td></tr></tbody></table>

<table data-header-hidden><thead><tr><th width="238"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>typ</strong>e</td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

{% code title="앱사용자 나이 레벨" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="258"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

{% code title="퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="246"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

## 3.광고 요청&#x20;

{% code title="요청 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManView;  
AdManView movieView = new AdManView(Context c);
```

{% endcode %}

{% code title="요청 객체에 데이터 및 리스너 연결" lineNumbers="true" %}

```java
movieView.setData(adData, new AdListener(){...});
```

{% endcode %}

* 광고 객체에 매체 광고 레이아웃 추가

{% code title="레이아웃 추가 메서드" lineNumbers="true" %}

```java
movieView.addBannerView(movieArea);
```

{% endcode %}

* 최종 요청 메서드

{% code title="광고 요청 메서드" lineNumbers="true" %}

```java
movieView.request(new Handler());
```

{% endcode %}

* 유저한테 안보이는 구간에서는 필히 리소스 해제 필요

{% code title="광고 리소스 해제 메서드" lineNumbers="true" %}

```java
if (movieView != null) {    
    movieView.onDestroy();
}
```

{% endcode %}

[좋아요](https://wiki.cjenm.com/pages/viewpage.action?pageId=188876422)처음으로 좋아하는 사람이 돼볼까요?


# 스플래시

스플래시 화면에 광고 적용을 하기 위한 가이드 입니다.

## 1.매체 광고 레이아웃

* XML

{% code title="레이아웃" lineNumbers="true" %}

```java
<RelativeLayout
    android:layout_gravity="bottom"
    android:id="@+id/splashArea"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:orientation="horizontal" >
</RelativeLayout>
```

{% endcode %}

* Code

{% code title="레이아웃 객체 ID 설정" lineNumbers="true" %}

```java
ViewGroup splashArea = findViewById(R.id.splashArea);
```

{% endcode %}

## 2.광고 데이터&#x20;

{% code title="데이터 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.data.AdData;
AdData adData = new AdData();
```

{% endcode %}

{% code title="광고 데이터 필수 값 세팅" lineNumbers="true" %}

```java
adData.major(id, apiMode, publisher, media, section, storeUrl, appId, appName, adWidth, adHeight);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="205"></th><th width="143"></th><th width="292"></th><th></th></tr></thead><tbody><tr><td><strong>parameter</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>id</td><td>string</td><td>매체에서 사용할 광고 영역의 고유 id</td><td><br></td></tr><tr><td>apiMode</td><td>string</td><td>광고 타입 : AdConfig.API_INTER</td><td><br></td></tr><tr><td>publisher</td><td>int</td><td>퍼블리셔 코드</td><td><br></td></tr><tr><td>media</td><td>int</td><td>미디어 코드</td><td><br></td></tr><tr><td>section</td><td>int</td><td>섹션 코드</td><td><br></td></tr><tr><td>storeUrl</td><td>string</td><td>스토어 url</td><td><br></td></tr><tr><td>appId</td><td>string</td><td>패키지명</td><td><br></td></tr><tr><td>appName</td><td>string</td><td>앱 명</td><td><br></td></tr><tr><td>adWidth</td><td>int</td><td>노출되는 광고 영역 넓이 사이즈</td><td><br></td></tr><tr><td>adHeight</td><td>int</td><td>노출되는 광고 영역 높이 사이즈 </td><td><br></td></tr></tbody></table>

{% code title="앱사용자 나이 레벨" lineNumbers="true" %}

```java
adData.setUserAgeLevel(0);
```

{% endcode %}

<table data-header-hidden><thead><tr><th></th><th></th><th width="258"></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>0</td><td>int</td><td>어린이 (만13세 미만)</td><td><br></td></tr><tr><td>1</td><td>int</td><td>청소년, 성인 (만13세 이상)</td><td><br></td></tr><tr><td>-1</td><td>int</td><td>알 수 없음</td><td><br></td></tr></tbody></table>

{% code title="퍼미션 사용 여부" lineNumbers="true" %}

```java
adData.isPermission(AdConfig.NOT_USED);
```

{% endcode %}

<table data-header-hidden><thead><tr><th width="246"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>value</strong></td><td><strong>type</strong></td><td><strong>contents</strong></td><td><strong>etc</strong></td></tr><tr><td>AdConfig.USED</td><td>String</td><td>사용</td><td><br></td></tr><tr><td>AdConfig.NOT_USED</td><td>String</td><td>미사용</td><td><br></td></tr></tbody></table>

## 3.광고 요청&#x20;

{% code title="요청 객체 선언" lineNumbers="true" %}

```java
import com.mmc.man.view.AdManView;  
AdManView splashAd = new AdManView(Context c);
```

{% endcode %}

{% code title="요청 객체에 데이터 및 리스너 연결" lineNumbers="true" %}

```java
splashAd.setData(adData, new AdListener(){...});
```

{% endcode %}

* 광고 객체에 매체 광고 레이아웃 추가

{% code title="레이아웃 추가 메서드" lineNumbers="true" %}

```java
splashAd.addBannerView(splashArea);
```

{% endcode %}

* 최종 요청 메서드

{% code title="광고 요청 메서드" lineNumbers="true" %}

```java
splashAd.request(new Handler());
```

{% endcode %}

* 유저한테 안보이는 구간에서는 필히 리소스 해제 필요

{% code title="광고 리소스 해제 메서드" lineNumbers="true" %}

```java
if (splashAd != null) {    
    splashAd.onDestroy();
}
```

{% endcode %}

[좋아요](https://wiki.cjenm.com/pages/viewpage.action?pageId=188876422)처음으로 좋아하는 사람이 돼볼까요?


# 미디에이션

CJ 메조미디어에서 지원하고 있는 SDK 미디에이션에 대한 가이드입니다.

## 1. 적용 절차

1. 미디에이션 적용은 CJ 메조미디어 담당자와 협의 후 진행 가능합니다.
2. 미디에이션 적용된 버전의 SDK 다운로드를 해야하며, 경로는 아래와 같습니다.
3. 하단 Build.gradle 정보에서 사용하고자하는 플랫폼의  SDK를 추가 해주세요.

{% hint style="warning" %}
참고 사항

* SDK 미디에이션은 Android를 대상으로 진행 가능합니다.
* 미디에이션은 CJ 메조미디어 SDK와 함께 사용되어야 합니다. (단독 사용 불가)
  {% endhint %}

## 2. 지원 플랫폼 정보

지원하고 있는 미디에이션 플랫폼 리스트로 추후 업데이트 될 수 있습니다.\
각 플랫폼 별 상세 값은 하단 Build.gradle 정보 참고하여 진행하시면 됩니다.

| 지원 플랫폼명     | Build.gradle 내 플랫폼 정보 | 적용 일자   |
| ----------- | --------------------- | ------- |
| Kakao AdFit | kakao                 | 2025.03 |

## 3. Build.gradle 정보

### 1) Build.gradle(상위/Project Level)

아래 내용을 참고하여 사용하고자 하는 플랫폼의 SDK를 설정합니다.

{% code lineNumbers="true" %}

```
allprojects {
    repositories {
        google()
        mavenCentral()
        //kakao
        maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
    }
}
```

{% endcode %}

### 2) Build.gradle (앱 내부/App Level)

아래 내용을 참고하여 사용하고자 하는 플랫폼의 SDK를 설정합니다.

{% code lineNumbers="true" %}

```
dependencies {
    //kakao
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "com.google.android.gms:play-services-ads-identifier:$play_service_version"
 
    implementation "com.kakao.adfit:ads-base:$adfit_version"
}
```

{% endcode %}


# 1. Kakao AdFit

CJ 메조미디어 지원 미디에이션 플랫폼 중 Kakao AdFit 에 대한 상세 가이드 입니다.

## 1. Kakao AdFit 연동 정보

<table><thead><tr><th width="214">Build.gradle 내 플랫폼 정보</th><th>연동 가이드</th></tr></thead><tbody><tr><td>kakao</td><td><a href="https://github.com/adfit/adfit-android-sdk/">https://github.com/adfit/adfit-android-sdk/</a></td></tr></tbody></table>

{% hint style="warning" %}
Kakao AdFit 최신 버전 사용

1. AdFit 가이드 내 버전 정보를 확인해 주세요.
2. 확인한 최신 버전을 하단 Build.gradle(App Level) 내 각각의version에 입력해 주세요.
   * $kotlin\_version
   * $play\_service\_version
   * $adfit\_version
     {% endhint %}

## 2. Build.gradle 정보

### 1) Build.gradle(Project Level/상위)

아래 내용을 참고하여 사용하고자 하는 플랫폼의 SDK를 설정합니다.

{% code lineNumbers="true" %}

```
allprojects {
    repositories {
        google()
        mavenCentral()
        //kakao
        maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
    }
}
```

{% endcode %}

### 2) Build.gradle (App Level/앱 내부)

아래 내용을 참고하여 사용하고자 하는 플랫폼의 SDK를 설정합니다.

{% code lineNumbers="true" %}

```
dependencies {
    //kakao
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "com.google.android.gms:play-services-ads-identifier:$play_service_version"
 
    implementation "com.kakao.adfit:ads-base:$adfit_version"
}
```

{% endcode %}


# iOS SDK

Targetpick Banner iOS SDK 연동 가이드 입니다.


# 기본 설정

iOS SDK 기본 설정을 위한 가이드 입니다.

## 1. Sample Project

Object-C Sample Project

{% embed url="<https://bitbucket.org/mezzomediaadtech/ios-v300-objectivec/src/master/>" %}

```
git clone https://mezzomedia_adtech@bitbucket.org/mezzomediaadtech/ios-v300-objectivec.git
```

Swift Sample Project

{% embed url="<https://bitbucket.org/mezzomediaadtech/ios-v300-swift/src/master/>" %}

```
git clone https://mezzomedia_adtech@bitbucket.org/mezzomediaadtech/ios-v300-swift.git
```

## 2. SDK 광고의 구성

<table><thead><tr><th width="197">구분</th><th>샘플</th><th>설명</th></tr></thead><tbody><tr><td>띠 배너</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/banner.png" alt=""></td><td>일반적인 바(Bar) 형태의 배너입니다.<br>대부분 하단에 위치하지만, 퍼블리셔의 조정에 따라 상단 또는 중간에도 게재할 수 있습니다.</td></tr><tr><td>전면 배너</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/interstitial.png" alt=""></td><td>전면에 광고가 게시되며, 퍼블리셔의 조정에 따라 노출 영역을 조정할 수 있습니다.</td></tr><tr><td>동영상</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/video.png" alt=""></td><td>동영상 콘텐츠 재생 전 Instream 형태 또는 지면에 포함되어 Outstream 형태로 재생되는 동영상 광고입니다.</td></tr><tr><td>전면확장</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/interstitial_expand.png" alt=""></td><td>전면에 광고가 게시되며, 남은 영역에는 좌측상단 1pixel 기준의 색상이 채워집니다.</td></tr><tr><td>전면동영상</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/interstitial_video.png" alt=""></td><td>전면에 광고가 게시되며, 배너의 하단에는 동영상광고가 함께 재생됩니다.</td></tr><tr><td>네이티브 피드</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/native_feed.png" alt=""></td><td>다양한 요소(애셋)들로 이루어진 광고입니다.<br>전면에 광고가 게시되며, 동영상과 이미지가 포함되어 있습니다.<br>퍼블리셔가 각 요소(애셋)들로 광고 형태를 조합해서 게시할 수 있습니다.(별도 문의)</td></tr><tr><td>네이티브 피드 배너</td><td><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/native_feed_banner.png" alt=""></td><td>다양한 요소(애셋)들로 이루어진 광고입니다.<br>바(Bar) 형태로 광고가 게시되며, 동영상과 이미지가 포함되어 있습니다.<br>퍼블리셔가 각 요소(애셋)들로 광고 형태를 조합해서 게시할 수 있습니다.(별도 문의)</td></tr><tr><td>카운트다운 배너</td><td><img src="https://docs.meba.kr/s-plus/sdk/android_v3/images/countdown.png" alt=""></td><td>라이브커머스 / 주요 경기 등 카운트다운을 통해 시각적으로 방송 시작을 강조하는 배너입니다.<br>카운트다운 영역은 퍼블리셔의 조정이 불필요합니다.</td></tr><tr><td>디데이 카운트다운 배너</td><td><img src="https://docs.meba.kr/s-plus/sdk/android_v3/images/dday.png" alt=""></td><td>카운트다운 배너와 동일하지만 ‘D-DAY’ 표현이 추가된 배너입니다.</td></tr></tbody></table>

## 3. 지원 상품(사이즈)

<table><thead><tr><th width="205">상품 구분</th><th>사이즈</th></tr></thead><tbody><tr><td>띠배너</td><td>300x50 ㅣ 320x50 ㅣ 320x100 ㅣ 640x240 ㅣ 640x100 ㅣ 728x90</td></tr><tr><td>전면배너</td><td>640x960 ㅣ 320X480 ㅣ 480x320 ㅣ 1024x768 ㅣ 750x1200 ㅣ 768x1024</td></tr><tr><td>종료배너</td><td>640x960 ㅣ 750x1200</td></tr><tr><td>정사각형 및 직사각형</td><td>200x200 ㅣ 240x400 ㅣ 240x240 ㅣ 250x250 ㅣ 250x360 ㅣ 300x250 ㅣ 336x280 ㅣ 150x150 ㅣ 580x400</td></tr><tr><td>스카이스크래퍼</td><td>120x600 ㅣ 160x600 ㅣ 300x600 ㅣ 300x1050</td></tr><tr><td>리더보드</td><td>468x60 ㅣ 728x90 ㅣ 930x180 ㅣ 970x90 ㅣ 970x250 ㅣ 980x120</td></tr><tr><td>네이티브 피드</td><td>640x960</td></tr><tr><td>네이티브 피드 배너</td><td>320x100 ㅣ 320x50</td></tr><tr><td>카운트다운 배너   </td><td>640x960 ㅣ 320x100 ㅣ 320x50</td></tr><tr><td>디데이 카운트다운 배너</td><td>3640x960 ㅣ 300x200 ㅣ 320x100 ㅣ 320x50</td></tr><tr><td>동영상 엔드카드   </td><td>-</td></tr><tr><td>플레이어블(MRAID)   </td><td>320x100 ㅣ 320x50 ㅣ 640x960</td></tr></tbody></table>

## 4. SDK Library 구성

* **헤더 파일**

<table><thead><tr><th width="304">헤더 파일명</th><th>설명</th></tr></thead><tbody><tr><td>LibADPlus-Swift.h</td><td>Objective-C용 앱을 위한 BridgeHeader파일입니다.</td></tr><tr><td>LibADPlus.h</td><td>Library버전이 정의된 Header파일입니다.</td></tr></tbody></table>

* **라이브러리 파일**

<table><thead><tr><th width="305">라이브러리 파일명</th><th>설명</th></tr></thead><tbody><tr><td>LibADPlus.xcframework</td><td>TARGETPICK 광고 라이브러리</td></tr><tr><td>OMSDK_Cjnet.xcframework</td><td>LibADPlus내의 일부 기능을 위한 라이브러리입니다.</td></tr></tbody></table>

* **샘플 구성(Object-c)**

```
SDK 샘플 프로젝트가 포함 되어 있습니다.
라이브러리 경로 : ADPlusSampleObjc/ADPlusSampleObjc/Lib/…
```

* **샘플 구성(Swift)**

```
SDK 샘플 프로젝트가 포함 되어 있습니다.
라이브러리 경로 : ADPlusSampleSwift/ADPlusSampleSwift/Lib/…
```

## 5. SDK 연동시 주의사항 <a href="#caution" id="caution"></a>

{% hint style="info" %}
IOS 9 ATS(App Transport Security) 기능 사용 관련\
IOS9 이상에서는 ATS(App Transport Security) 기능이 제공됩니다.\
ATS기능 활성화 시, HTTP 방식이 제한되므로, 정상적인 TARGETPICK 광고가 노출되지 않습니다.
{% endhint %}

> info.plist 파일에 아래의 항목을 추가 적용하여 사용 바랍니다.\
> 앱의 info.plist파일에 마우스 오른쪽 버튼을 눌러 ‘Open As > Source Code’로 해당파일 편집모드로 들어간 후, 아래 코드를 삽입합니다.

{% code lineNumbers="true" %}

```java
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitararyLoads</key>
  <true/>
</dict>
```

{% endcode %}

{% hint style="info" %}
백그라운드에서 사용 승인을 위한 코드입니다.\
추가하지않을경우 TestFlight업로드시 App Store Connect Operation ERROR ITMS-90771에러가 나타납니다.
{% endhint %}

{% code lineNumbers="true" %}

```java
<key>BGTaskSchedulerPermittedIdentifiers</key>
 <array>
  <string>com.mezzo.LibADPlus</string>
  <string>com.iabtechlab.OMSDK-Cjnet</string>
 </array>
```

{% endcode %}

## 6. SKAdNetwork ID(iOS Only)

**SKAdNetwork 란**

{% hint style="info" %}
SKAdNetwork 란\
SKAdNetwork(SKAN)는 Apple에서 제공하는 개인 정보 보호 방식의 어트리뷰션 프레임워크입니다.\
이는 사용자의 개인정보를 침해하지 않고도 앱 인스톨(전환), 캠페인의 전환율을 측정할 수 있게합니다.\
SKAdNetwork와 관련해서 보다 자세한 내용은 Apple의 공식 문서를 참고해주세요.\
\
\[참고] <https://developer.apple.com/documentation/storekit/skadnetwork>
{% endhint %}

#### **퍼블리셔의 SKAdNetwork ID 적용방법**

> CJ MezzoMedia와 제휴된 매체는 CJ Mezzomedia를 포함, 연동된 Adnetwork 업체의 SKAdNetwork ID를 아래와 같이 Info.plist에 추가해야 합니다.

{% hint style="info" %}

1. Xcode project에서 Info.plist 파일을 불러옵니다.
2. Root directory에서 property 키를 선택하고, 오른쪽 +를 클릭하여 새로운 property 키를 만듭니다.
3. SKAdNetworkItems로 키를 입력합니다.
4. Array 타입을 선택합니다.
5. Array에 Dictionary를 추가합니다.
6. Dictionary에 각 SKAdNetwork 항목을 추가합니다.
7. 각 항목의 키는 SKAdNetworkIdentifier이며, 값은 개별 광고네트워크의 SKAdNetwork ID입니다.&#x20;
   {% endhint %}

해당 필드에 대한 자세한 항목은 Apple의 공식문서를 참고해주세요.

{% embed url="<https://developer.apple.com/documentation/storekit/skadnetwork/configuring_the_participating_apps>" %}

**SKAdNetwork ID 목록(마지막 업데이트: 2021/04/12)**

{% hint style="info" %}
현재 CJ Mezzomedia와 연동된 AdNetwork의 ID 목록입니다.
{% endhint %}

{% code lineNumbers="true" %}

```java
<key>SKAdNetworkItems</key>
<array>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>feyaarzu9v.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>xxxxxxxxxx.skadnetwork</string>
    </dict>
</array>
```

{% endcode %}

## 7. Library 추가(Swift 샘플 기준) <a href="#importlibrary" id="importlibrary"></a>

<img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/v3/dragtodrop.png" alt="" height="100%" width="100%">

프로젝트내에 라이브러리가 위치할 폴더를 생성하고\
해당 폴더에 라이브러리를 Drag and Drop합니다.\
(예시 이미지에서는 Sample Project와 동일하게 Lib폴더에 추가하였습니다.)

<img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/v3/addpreview.png" alt="" height="100%" width="100%">

Added folders는 “Create groups”를 선택\
적용할 Target앱을 선택후 “Finish”를 선택하면 프로젝트에 라이브러리 추가됩니다.

<div align="left"><img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/v3/addfinish.png" alt="" width="375"></div>

프로젝트에 파일이 추가되었습니다.<br>

<img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/v3/embedoption.png" alt="" height="100%" width="100%">

Project 선택 -> Target 선택 -> General탭 선택-> “Frameworks,Libraries, and Embedded Content” 항목으로 이동합니다. 추가한 두개의 Library의 Embed option을 “Do Not Embed”에서 “Embed & Sign”으로 변경합니다.

<img src="https://docs.meba.kr/s-plus/sdk/ios_v300/images/v3/selectfolderpath.png" alt="" height="100%" width="100%">

Project 선택 -> Target 선택 -> Build Settings탭 선택 -> Search Paths 항목으로 이동합니다.\
“Framework Search Paths”,”Header Search Paths”,”Library Search Paths”에 각각 추가한 라이브러리의 경로를 입력합니다.\
Sample Project의 경우 ADPlusSampleSwift/ADPlusSampleSwift/Lib 로 되어있어 “$(PROJECT\_DIR)/$(PROJECT\_NAME)/Lib”로 추가함으로써 라이브러리 사용환경을 완료합니다.

## 8. Import 예시 <a href="#importexample" id="importexample"></a>

* Swift

{% code lineNumbers="true" %}

```java
import LibADPlus
```

{% endcode %}

* Objective-C

{% code lineNumbers="true" %}

```java
#import <LibADPlus/LibADPlus-Swift.h>
```

{% endcode %}

<br>

\
\ <br>


# 띠 배너

띠 배너 적용을 위한 연동 가이드 입니다.

## 1. **띠배너 삽입**

* 띠형태의 배너 광고물로 정의한 위치에 노출됩니다.
* TARGETPICK 광고 정책으로 정해져 있는 320x50, 320x100 사이즈입니다.

{% hint style="info" %}
아래와 같은 띠 또는 전면 형태의 배너 노출
{% endhint %}

<div align="left"><figure><img src="/files/6VSW07dFuVzlYxzQKTxc" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/Gq4hR3rnQPTTBHZF0Kr8" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/UqAgnZwdjhljqJ2cwcRV" alt="" width="229"><figcaption></figcaption></figure></div>

## **2. 띠배너 연동 방식**

{% hint style="info" %}
아래의 Sample code는 Swift 기준
{% endhint %}

{% code lineNumbers="true" %}

```java
@IBOutlet var banner:ADMZBannerView!
```

{% endcode %}

{% hint style="info" %}
BannerView 광고 객체 설정(필수 세팅)
{% endhint %}

{% code lineNumbers="true" %}

```swift
//Model
let model = ADMZBannerModel(withPublisherID: 102,
    withMediaID: 202,
    withSectionID: 804231,
    withBannerSize: .init(width: 414.0, height: 40.0),
    withKeywordParameter: "KeywordTargeting",
    withOtherParameter: "BannerAdditionalParameters",
    withMediaAgeLevel: .over13Age,
    withAppID:"appID",
    withAppName: "appName",
    withStoreURL: "StoreURL",
    withSMS: true,
    withTel: true,
    withCalendar: true,
    withStorePicture: true,
    withInlineVideo: true,
    withBannerType:.Strip)        
banner?.updateModel(value: model)  
```

{% endcode %}

{% hint style="info" %}
배너광고 이용자 정보 입력 – (선택 세팅)&#x20;
{% endhint %}

{% code lineNumbers="true" %}

```swift
//유저 정보 설정
model.setUserInfo(withGenderType: .Male,
                          withAge: 15,
                          withUserID: "mezzomedia",                          
                          withEmail: "mezzo@mezzomedia.co.kr",
                          withUserLocationAgree: false)                  
```

{% endcode %}

## **3. 이벤트 구현**

{% hint style="info" %}
Handler 발생에 따른 이벤트 구현
{% endhint %}

{% code lineNumbers="true" %}

```swift
banner?.setFailHandler(value: { code in
    //Fail event 발생시 code 변수에 실패코드가 나타납니다.
})

banner?.setSuccessHandler(value: { code in
    //Success event 발생시 code 변수에 해당코드가 나타납니다.
})

banner?.setOtherHandler(value: { code in
    //배너 선택, 로고 선택등의 이벤트가 발생시 code 변수에 이벤트코드가 나타납니다.
})
```

{% endcode %}

## **4. 띠배너 광고 시작**

{% code lineNumbers="true" %}

```swift
// 띠배너 광고 시작.
banner?.startBanner()
```

{% endcode %}

## **5. 띠배너 광고 종료**

{% code lineNumbers="true" %}

```swift
// 띠배너 광고 종료
banner?.stopBanner()
```

{% endcode %}

## **6. 코드 설명**

| 코드                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 설명                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>let model = ADMZBannerModel(withPublisherID: 102,<br>     withMediaID: 202,<br>     withSectionID: 804231,<br>     withBannerSize: .init(width: 414.0, height: 40.0),<br>     withKeywordParameter: “KeywordTargeting”,<br>     withOtherParameter: “BannerAdditionalParameters”,<br>     withMediaAgeLevel: .over13Age,<br>     withAppID:”appID”,<br>     withAppName: “appName”,<br>     withStoreURL: “StoreURL”,<br>     withSMS: true,<br>     withTel: true,<br>     withCalendar: true,<br>     withStorePicture: true,<br>     withInlineVideo: true,<br>     withBannerType:.Strip)</p> | <p>요청할 정보를 가지고있는 모델을 생성합니다.<br>- PublisherID : 발급받은 publisherID<br>- MediaID : 발급받은 mediaID<br>- SectionID : 발급받은 sectionID<br>- BannerSize : 배너 사이즈<br>- KeywordParameter : 키워드 파라미터<br>- otherParam: 기타 파라미터<br>- ageLvType: 사용자 연령 대분류<br>- Appid: 앱 ID<br>- AppName: 앱 이름<br>- StoreURL: 앱스토어 URL<br>- SMS: 문자 사용 여부<br>- Tel: 전화번호 사용 여부<br>- Calendar: 캘린더 추가 여부<br>- StorePicture: 스토어 이미지 사용 여부<br>- InlineVideo: 인라인 비디오 사용 여부<br>- BannerType: 배너 광고 유형(.Strip : 띠배너, .Front: 전면광고)</p> |
| <p>model.setUserInfo(withGenderType: .Male,<br>     withAge: 15,<br>     withUserID: “mezzomedia”,<br>     withEmail: “<mezzo@mezzomedia.co.kr>”,<br>     withUserLocationAgree: false)</p>                                                                                                                                                                                                                                                                                                                                                                                                          | <p>사용자 정보를 입력합니다(선택사항)<br>- Gender: 성별<br>- Age: 나이<br>- UserID: 사용자 아이디<br>- UserEmail: 사용자 이메일<br>- UserLocationAgree: 위치정보 사용동의여부</p>                                                                                                                                                                                                                                                                                                                                                          |
| banner?.startBanner()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 광고요청을 시작합니다                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| <p>banner?.setFailHandler(value: { code in<br>               })<br><br>banner?.setSuccessHandler(value: { code in<br>               })<br><br>banner?.setOtherHandler(value: { code in<br>               })</p>                                                                                                                                                                                                                                                                                                                                                                                      | <p>- 이벤트를 전달하는 코드입니다.<br>FailHandler : 실패시 실패코드를 code 변수로 리턴합니다.<br>SuccessHandler : 성공시 성공코드를 code 변수로 리턴합니다.<br>OtherHandler : 성공 실패 외의 이벤트코드를 code 변수로 리턴합니다.<br>(ex: 광고 선택, 로고 선택 등)</p>                                                                                                                                                                                                                                                                                                      |


# 전면 배너

전면 배너 적용을 위한 연동 가이드 입니다.

## 1. **전면배너 삽입**

* 전면 형태의 배너 광고물이 노출됩니다.
* 전면 배너의 종류로는 전면 확장, 전면 팝업(배경 투명, 배경 회색), 전면 동영상이 있습니다.

{% hint style="info" %}
아래와 같은 전면 형태의 배너 노출
{% endhint %}

<div align="left"><figure><img src="/files/v6XiFF54TmZAnTTKOtkZ" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/GwmwFZWFaF117K7fugf3" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/aLM9qcfwgPlRwyDVi3eC" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/y3jjU4iyOZSWbchYSedq" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/iJIBrGeNsUDMwDMuhrK6" alt="" width="153"><figcaption></figcaption></figure></div>

## **2. 전면 광고 연동**

{% hint style="info" %}
Interstitial 광고 객체 설정 (필수 세팅)
{% endhint %}

{% code lineNumbers="true" %}

```swift
//Model
let model = ADMZInterstitialModel(withPublisherID: 100,
    withMediaID: 200,
    withSectionID: 804313,
    withKeywordParameter: "KeywordTargeting",
    withOtherParameter: "BannerAdditionalParameters",
    withMediaAgeLevel: .under13Age,
    withAppID:"appID",
    withAppName: "appName",
    withStoreURL: "StoreURL",
    withSMS: true,
    withTel: true,
    withCalendar: true,
    withStorePicture: true,
    withInlineVideo: true,
    withPopupType: .FullSize)
```

{% endcode %}

{% hint style="info" %}
전면광고 이용자 정보 입력(선택 세팅)
{% endhint %}

{% code lineNumbers="true" %}

```swift
// 유저 정보 세팅                                          
model.setUserInfo(withGenderType: .Male,
    withAge: 15,
    withUserID: "mezzomedia",
    withEmail: "mezzo@mezzomedia.co.kr",
    withUserLocationAgree: false)
```

{% endcode %}

{% hint style="info" %}
전면 광고 요청 시작 및 이벤트 Handler설정&#x20;
{% endhint %}

{% code lineNumbers="true" %}

```swift
// 전면 광고 요청 시작 및 이벤트 Handler설정
ADMZInterstitialLoader.presentAd(fromViewController:self,withModel: model,withSuccessHandler: { code in
}, withFailedHandler: { code in
}, withOtherEventHandler: { code in
})       
```

{% endcode %}

## **3. 코드 설명**

| 코드                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 설명                                                                                                                                                                                                                                                                                                                                                                                                                    |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>let model = ADMZInterstitialModel(withPublisherID: 100,<br>     withMediaID: 200,<br>     withSectionID: 804313,<br>     withKeywordParameter: “KeywordTargeting”,<br>     withOtherParameter: “BannerAdditionalParameters”,<br>     withMediaAgeLevel: .under13Age,<br>     withAppID:”appID”,<br>     withAppName: “appName”,<br>     withStoreURL: “StoreURL”,<br>     withSMS: true,<br>     withTel: true,<br>     withCalendar: true,<br>     withStorePicture: true,<br>     withInlineVideo: true,<br>     withPopupType: .FullSize)</p> | <p>요청할 정보를 가지고있는 모델을 생성합니다.<br>- PublisherID: 퍼블리셔 ID<br>- MediaID: 미디어 ID<br>- SectionID: 섹션 ID<br>- KeywordParameter: 검색어<br>- OtherParameter: 기타 파라미터<br>- MediaAgeLevel: 사용자 연령대<br>- AppID: 앱 ID<br>- AppName: 앱 이름<br>- StoreURL: 앱스토어 URL<br>- SMS: 문자 사용 여부<br>- Tel: 전화번호 사용 여부<br>- Calendar: 캘린더 저장 사용 여부<br>- StorePicture: 스토어 이미지 사용 여부<br>- InlineVideo: 인라인 비디오 사용 여부<br>- PopupType: 전면 광고 팝업 타입</p> |
| <p>ADMZInterstitialLoader.presentAd(fromViewController:self,<br>    withModel: model,<br>    withSuccessHandler: { code in<br>               },<br>     withFailedHandler: { code in<br>               },<br>     withOtherEventHandler: { code in<br>               })</p>                                                                                                                                                                                                                                                                         | <p>전면 팝업광고 요청을 시작합니다.<br>- fromViewController : 성공시 팝업으로 올라올 Target ViewController<br>(null일경우 현재 최상단의 ViewController를 체크후 해당 ViewController위에 Popup으로 띄웁니다.)<br>- Model: 요청정보를 설정한 ADMZInterstitialModel<br>- SuccessHandler : 성공시 성공코드를 code 변수로 리턴합니다.<br>- FailHandler : 실패시 실패코드를 code 변수로 리턴합니다.<br>- OtherHandler : 성공 실패 외의 이벤트코드를 code 변수로 리턴합니다.<br>(ex: 광고 선택, 로고 선택 등)</p>                                |


# 동영상

Targetpick Video 광고 적용을 위한 가이드 입니다.

## 1. **동영상 광고**

* 영상 형태의 동영상 광고물이 노출됩니다.
* 동영상 광고의 종류로는 가로 동영상, 세로 동영상, 정사각 동영상이 있습니다.

{% hint style="info" %}
아래와 같은 영상 형태로 광고 노출
{% endhint %}

<div align="left"><figure><img src="/files/OS0mH5g4tBhS5p4vtL8J" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/FG5ydDPRpjI4pfforvWH" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/sMSIcw0n2oEJm1cJRCwR" alt="" width="188"><figcaption></figcaption></figure></div>

## **2. 동영상 광고 연동**

{% code lineNumbers="true" %}

```swift
@IBOutlet var videoView:ADMZVideoView!
```

{% endcode %}

{% hint style="info" %}
VideoView 광고 객체 설정(필수 세팅)
{% endhint %}

{% code lineNumbers="true" %}

```swift
  let model = ADMZVideoModel(withPublisherID:102,
      withMediaID: 202,
      withSectionID: 804408,
      withVideoSize: .init(width: 320, height: 480),
      withKeywordParameter: "KeywordTargeting",
      withOtherParameter: "BannerAdditionalParameters",
      withMediaAgeLevel: .unknownType,
      withAppID: "appID",
      withAppName: "appName",
      withStoreURL: "StoreURL",
      withSMS: true,
      withTel: true,
      withCalendar: true,
      withStorePicture: true,
      withAutoPlay: true,
      withAutoReplay: true,
      withMuteOption: true,
      withClickFull: true,
      withClickButtonShow: true,
      withSkipButtonShow: true,
      withClickVideoArea: true,
      withCloseButtonShow: true,
      withSoundButtonShow: true,
      withInlineVideo: true)
```

{% endcode %}

{% hint style="info" %}
Video 요청 Model 이용자 정보 입력 – (선택 세팅)
{% endhint %}

{% code lineNumbers="true" %}

```swift
// 유저 정보 설정
model.setUserInfo(withGenderType: .Male,
                          withAge: 15,
                          withUserID: "mezzomedia",
                          withEmail: "mezzo@mezzomedia.co.kr",
                          withUserLocationAgree: false)
```

{% endcode %}

## **3. 동영상 광고 시작**&#x20;

{% hint style="info" %}
동영상광고 시작
{% endhint %}

{% code lineNumbers="true" %}

```swift
// 동영상 광고 시작.
videoView?.startVideo()
```

{% endcode %}

{% hint style="info" %}
Handler 발생에 따른 이벤트 구현
{% endhint %}

{% code lineNumbers="true" %}

```swift
videoView?.setFailHandler(value: { code in
    //Fail event 발생시 code 변수에 실패코드가 나타납니다.
})
videoView?.setSuccessHandler(value: { code in
    //Success event 발생시 code 변수에 해당코드가 나타납니다.
})
videoView?.setOtherHandler(value: { code in
    //비디오 선택, 로고 선택등의 이벤트가 발생시 code 변수에 이벤트코드가 나타납니다.
})
```

{% endcode %}

## **4. 코드 설명**

| 코드                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 설명                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>let model = ADMZVideoModel(withPublisherID:102,<br>     withMediaID: 202,<br>     withSectionID: 804408,<br>     withVideoSize: .init(width: 320, height: 480),<br>     withKeywordParameter: “KeywordTargeting”,<br>     withOtherParameter: “BannerAdditionalParameters”,<br>     withMediaAgeLevel: .unknownType,<br>     withAppID: “appID”,<br>     withAppName: “appName”,<br>     withStoreURL: “StoreURL”,<br>     withSMS: true,<br>     withTel: true,<br>     withCalendar: true,<br>     withStorePicture: true,<br>     withAutoPlay: true,<br>     withAutoReplay: true,<br>     withMuteOption: true,<br>     withClickFull: true,<br>     withClickButtonShow: true,<br>     withSkipButtonShow: true,<br>     withClickVideoArea: true,<br>     withCloseButtonShow: true,<br>     withSoundButtonShow: true,<br>     withInlineVideo: true)</p> | <p>요청할 정보를 가지고있는 모델을 생성합니다<br>- pubId: 광고 퍼블리셔 ID<br>- mediaId: 미디어 ID<br>- sectionId: 섹션 ID<br>- videoSize: 영상 사이즈<br>- keywordParam: 키워드 파라미터<br>- otherParam: 다른 파라미터<br>- ageLvType: 미디어 연령 등급<br>- appid: 앱 ID<br>- appName: 앱 이름<br>- storeURL: 스토어 URL<br>- isSMS: 문자 사용 여부<br>- isTel: 전화번호 사용 여부<br>- isCalendar: 캘린더<br>- isStorePicture: 스토어 이미지 사용 여부<br>- isAutoPlay: 자동 재생<br>- isAutoReplay: 자동 반복<br>- isMuteOption: 음소거 옵션<br>- isClickFull: 전체 화면<br>- isClickButtonShow: 버튼 표시<br>- isSkipButtonshow: 스킵 버튼 표시<br>- isClickVideoArea: 영상 영역 클릭<br>- isVideoCloseButtonShow: 영상 닫기 버튼 표시<br>- isSoundButtonShow: 소리 버튼 표시<br>- isInlineVideo: 인라인 비디오 사용 여부</p> |
| <p>model.setUserInfo(withGenderType: .Male,<br>     withAge: 15,<br>     withUserID: “mezzomedia”,<br>     withEmail: “<mezzo@mezzomedia.co.kr>”,<br>     withUserLocationAgree: false)</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | <p>사용자 정보를 입력합니다(선택사항)<br>- Gender: 성별<br>- Age: 나이<br>- UserID: 사용자 아이디<br>- UserEmail: 사용자 이메일<br>- UserLocationAgree: 위치정보 사용동의여부</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| videoView?.startVideo()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 광고요청을 시작합니다                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| <p>videoView?.setFailHandler(value: { code in<br>               })<br><br>videoView?.setSuccessHandler(value: { code in<br>               })<br><br>videoView?.setOtherHandler(value: { code in<br>               })</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | <p>- 이벤트를 전달하는 코드입니다.<br>FailHandler : 실패시 실패코드를 code 변수로 리턴합니다.<br>SuccessHandler : 성공시 성공코드를 code 변수로 리턴합니다.<br>OtherHandler : 성공 실패 외의 이벤트코드를 code 변수로 리턴합니다.<br>(ex: 광고 선택, 로고 선택 등)</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

## 5. 광고 에러 코드 및 Callback 메세지 <a href="#errorcode" id="errorcode"></a>

<table><thead><tr><th width="113">code</th><th width="198">이름</th><th>설명</th></tr></thead><tbody><tr><td>200</td><td>AdSuccess</td><td>성공</td></tr><tr><td>201</td><td>AdClick</td><td>광고 클릭</td></tr><tr><td>202</td><td>AdClose</td><td>광고 닫기</td></tr><tr><td>301</td><td>VideoAdStart</td><td>비디오 광고 시작</td></tr><tr><td>302</td><td>VideoAdSkip</td><td>비디오 광고 Skip</td></tr><tr><td>303</td><td>AdDidImpression</td><td>비디오 노출시작</td></tr><tr><td>304</td><td>VideoAdFirstQ</td><td>비디오 1/4 재생</td></tr><tr><td>305</td><td>VideoAdMidQ</td><td>비디오 1/2 재생</td></tr><tr><td>306</td><td>VideoAdThirdQ</td><td>비디오 3/4 재생</td></tr><tr><td>309</td><td>VideoAdComplete</td><td>비디오 광고 재생완료</td></tr><tr><td>404</td><td>AdNotError</td><td>광고 없음 (No Ads)</td></tr><tr><td>405</td><td>AdPassbackError</td><td>Sync 모드 필요 (패스백)</td></tr><tr><td>408</td><td>AdTimeoutError</td><td>Timeout</td></tr><tr><td>415</td><td>AdParsingError</td><td>Parsing Error</td></tr><tr><td>498</td><td>AdDuplicateError</td><td>Duplicate Request Error</td></tr><tr><td>499</td><td>AdError</td><td>Error</td></tr><tr><td>501</td><td>BrowserError</td><td>Browser Error</td></tr><tr><td>-2001</td><td>AdNotExistError</td><td>Webview 페이지 경로 Error</td></tr><tr><td>-3001</td><td>AdAppStoreUrlError</td><td>매체측 앱 스토어 URL</td></tr><tr><td>-3002</td><td>AdIDError</td><td>광고 솔루션에서 발급 한 사업자/미디어/섹션 코드 미존재</td></tr><tr><td>-3003</td><td>AdTargetAreaError</td><td>광고 영역 크기 에러</td></tr><tr><td>-3004</td><td>AdVideoOptError</td><td>비디오 옵션 에러</td></tr><tr><td>-3005</td><td>AdUserAgeLevelError</td><td>User Age Level 에러</td></tr><tr><td>-5002</td><td>AdReloadTimeError</td><td>광고 재호출(Reload) 에러</td></tr><tr><td>-6002</td><td>AdNetworkError</td><td>네트워크 에러</td></tr><tr><td>-8001</td><td>AdFileError</td><td>광고물 파일 형식 에러</td></tr><tr><td>-9001</td><td>AdCreativeError</td><td>광고물 요청 실패 (Timeout)</td></tr><tr><td>-9995</td><td>AdModelError</td><td>요청한 모델의 Cast Type과 View의 타입이 일치하지않는 경우</td></tr></tbody></table>


# Java Script(Web)

Mobile Web, PC Web에 Targetpick 적용을 위한 Java Script 연동 가이드 입니다.


# 배너

Targetpick 띠 배너, 전면 배너, 전면 동영상 광고를 적용하기 위한 스크립트 가이드 입니다.

## 지원 상품(사이즈) <a href="#product_size" id="product_size"></a>

<table><thead><tr><th width="194">상품 구분</th><th>사이즈</th></tr></thead><tbody><tr><td>띠배너</td><td>300x50 ㅣ 320x50 ㅣ 320x100 ㅣ 640x240 ㅣ 640x100 ㅣ 728x90</td></tr><tr><td>전면배너</td><td>640x960 ㅣ 320X480 ㅣ 480x320 ㅣ 1024x768 ㅣ 750x1200 ㅣ 768x1024</td></tr><tr><td>종료배너</td><td>640x960 ㅣ 750x1200</td></tr><tr><td>정사각형 및 직사각형</td><td>200x200 ㅣ 240x400 ㅣ 240x240 ㅣ 250x250 ㅣ 250x360 ㅣ 300x250 ㅣ 336x280 ㅣ 150x150 ㅣ 580x400</td></tr><tr><td>스카이스크래퍼</td><td>120x600 ㅣ 160x600 ㅣ 300x600 ㅣ 300x1050</td></tr><tr><td>리더보드</td><td>468x60 ㅣ 728x90 ㅣ 930x180 ㅣ 970x90 ㅣ 970x250 ㅣ 980x120</td></tr><tr><td>네이티브 피드</td><td>640x960</td></tr><tr><td>네이티브 피드 배너</td><td>320x100 ㅣ 320x50</td></tr><tr><td>스플래시</td><td>1200x1000</td></tr></tbody></table>

**Sample Project**

{% embed url="<https://docs.meba.kr/s-plus/sample_v300/banner>" %}

## Script 동작 환경

### Script 추가

{% hint style="info" %}
TARGETPICK 광고를 추가하고 구동하기 위한 광고 스크립트를 추가합니다.

( 아래 코드와 같이 사용하셔야 내부적인 업데이트 진행 시 편리하게 이용하실 수 있습니다. )
{% endhint %}

```html
<script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
```

### 광고 옵션 설정

#### **옵션**

<table><thead><tr><th width="131">함수</th><th width="110">옵션</th><th width="125">설명</th><th width="73">상품</th><th width="74">기본값</th><th width="87">필수</th><th>값</th></tr></thead><tbody><tr><td>mezzoAd</td><td>targetId</td><td>광고 노출영역 ID</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAd</td><td>adid</td><td>adid 전송</td><td>전체</td><td>null</td><td>hybrid app일 경우 Y</td><td>실제 ADID/IDFA를 전달<br>예)<br>Android :<br>158d87c5-add4-4646-b366-f39b5950dde1<br>iOS :<br>4A80248C-1BFC-4C9C-A643-B3B389043A20</td></tr><tr><td>mezzoAd</td><td>publisher</td><td>퍼블리셔 코드</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAd</td><td>media</td><td>미디어 코드</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAd</td><td>section</td><td>섹션 코드</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAd</td><td>uAgeLevel</td><td>User 나이 레벨</td><td>전체</td><td> </td><td>N</td><td>0: 만 13세 이하<br>1: 만 13세 이상</td></tr><tr><td>mezzoAd</td><td>keyword</td><td>키워드 값 전달</td><td>전체</td><td> </td><td>N</td><td>키워드값을 전달<br>구분자는 ^로 사용<br>구분자를 포함한 전체 문자열 인코딩(encodeURIComponent)</td></tr><tr><td>mezzoAd</td><td>closeBtn</td><td>닫기버튼 노출 여부</td><td>전면배너<br>전면동영상</td><td>true</td><td>N</td><td>true : 노출<br>false : 비노출</td></tr><tr><td>mezzoAd</td><td>closeBtnLocation</td><td>닫기버튼 위치</td><td>전면배너</td><td>3</td><td>N</td><td>1 : 상단 좌측<br>2 : 상단 중앙<br>3 : 상단 우측<br>4 : 중앙 좌측<br>5 : 중앙 우측<br>6 : 하단 좌측<br>7 : 하단 중앙<br>8 : 하단 우측</td></tr></tbody></table>

{% hint style="info" %}
&#x20;해당 옵션은 CJ 메조미디어 스크립트 내부에서 광고를 호출하는 방법에 대한 옵션입니다.
{% endhint %}

## 광고페이지 구성

### 소스코드

```html
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
    </head>
    <body>
        <div id="banner_test">
            <!-- AD Area -->
        </div>
    
        <script type="text/javascript" charset="utf-8">
            mezzoAd({
                targetId: 'banner_test',
                adid: '',
                publisher: 'publisher_code',
                media: 'media_code',
                section: 'section_code',
                uAgeLevel: '1',
                keyword: '',
                closeBtn: true,
                closeBtnLocation: 3,
                callbacks: {
                    success: function (type, status, data) {
                        console.log(
                            '[SUCCESS] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    fail: function (type, status, data) {
                        console.log(
                            '[FAIL] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    event: function (type, status, data) {
                        console.log(
                            '[EVENT] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    }          
                }
            });
        </script>
    </body>
</html>
```

### Callback 정의 <a href="#callback" id="callback"></a>

| Callback | type      | status | 설명                    | 상품               |
| -------- | --------- | ------ | --------------------- | ---------------- |
| success  | guarantee | 200    | 광고 성공 (보장형)           | 띠배너, 전면배너, 전면동영상 |
| success  | house     | 200    | 광고 성공 (하우스)           | 띠배너, 전면배너, 전면동영상 |
| fail     | noad      | 404    | 광고없음                  | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 408    | 요청 Timeout            | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 415    | AJAX Parsing 에러       | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 498    | 중복 호출 에러              | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 499    | 에러                    | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 501    | 지원하지 않는 브라우저          | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 502    | 지원하지 않는 단말기 (iOS)     | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 503    | 지원하지 않는 단말기 (Android) | 띠배너, 전면배너, 전면동영상 |
| event    | adclick   | 200    | 광고 클릭                 | 띠배너, 전면배너, 전면동영상 |
| event    | close     | 200    | 닫기 버튼 클릭              | 전면배너, 전면동영상      |
| event    | start     | 200    | 영상 시작                 | 전면동영상            |
| event    | imp       | 200    | 영상 노출                 | 전면동영상            |
| event    | firstQ    | 200    | 영상 1/4 재생             | 전면동영상            |
| event    | midQ      | 200    | 영상 2/4 재생             | 전면동영상            |
| event    | thirdQ    | 200    | 영상 3/4 재생             | 전면동영상            |
| event    | complete  | 200    | 영상 종료                 | 전면동영상            |

#### 문의 <a href="#inquire" id="inquire"></a>

| 구분              | 부서        | 이름    | 이메일                     | 전화번호         |
| --------------- | --------- | ----- | ----------------------- | ------------ |
| 제휴 문의           | 크로스미디어사업팀 | 김정혁 님 | <jeonghyeok.kim@cj.net> | 02-6484-3856 |
| ID발급 및 광고 세팅 문의 | 크로스미디어사업팀 | 김미현 님 | <mihyun.kim2@cj.net>    | 02-6484-3076 |


# 동영상

Targetpick 동영상 광고를 적용하기 위한 스크립트 가이드 입니다.

동영상 Script의 경우, 기본적인 동영상 광고 구동을 위한 예시 코드로 작성되어 있습니다. 각 매체별 디자인 특성에 맞도록 UI를 고려하시어 작업을 진행하시기 바랍니다.

## Script 동작 환경

### **Script 추가**

{% hint style="info" %}
동영상(TARGETPICK VIDEO) 광고를 추가하고 구동하기 위한 광고 스크립트를 추가합니다.\
( 아래 코드와 같이 사용하셔야 내부적인 업데이트 진행 시 편리하게 이용하실 수 있습니다. )
{% endhint %}

```
<script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
```

### 광고 옵션 설정

#### **옵션**

| Option        | 설명                                  | 기본값                         | 필수               | 값                                                                                                                                   |
| ------------- | ----------------------------------- | --------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| targetId      | 광고 노출영역 ID                          |                             | Y                | 광고가 노출될 영역 ID                                                                                                                       |
| elementMode   | 광고 영상을 삽입하는 영역에 대한 옵션               | INJECTION                   | Y                | <p>INJECTION : video 영역(video tag)에 광고를 삽입하는 모드<br>OVERLAY : video 영역이 아닌 영역에 광고를 삽입하는 경우</p>                                       |
| adid          | adid 전송                             | null                        | hybrid app일 경우 Y | <p>실제 ADID/IDFA를 전달<br>예)<br>Android :<br>158d87c5-add4-4646-b366-f39b5950dde1<br>iOS :<br>4A80248C-1BFC-4C9C-A643-B3B389043A20</p> |
| publisher     | 발급 받으신 퍼블리셔 코드(Publisher\_Code)를 입력 | null                        | Y                | 발급 받으신 Publisher Code                                                                                                               |
| media         | 발급 받으신 미디어 코드(Media\_Code)를 입력      | null                        | Y                | 발급 받으신 Media Code                                                                                                                   |
| section       | 발급 받으신 섹션 코드(Section\_Code)를 입력     | null                        | Y                | 발급 받으신 Section Code                                                                                                                 |
| uAgeLevel     | User 나이 레벨                          | null                        | N                | <p>0: 만 13세 이하<br>1: 만 13세 이상</p>                                                                                                   |
| keyword       | 키워드 값 전달                            | null                        | N                | <p>키워드값을 전달<br>구분자는 ^로 사용<br>구분자를 포함한 전체 문자열 인코딩(encodeURIComponent)</p>                                                            |
| autoPlay      | 광고 영상을 자동으로 재생                      | true                        |                  | <p>true : 자동으로 재생<br>false : 재생 버튼을 누른 후 재생</p>                                                                                     |
| autoReplay    | 광고 영상이 종료된 후 자동으로 다시 재생             | false                       |                  | <p>true : 종료 후 다시 재생<br>false : 광고 영상 종료</p>                                                                                        |
| clickFullArea | 광고를 클릭하여 광고 상세 정보 페이지로 랜딩되는 영역을 설정  | false                       |                  | <p>true : 영상 전체 영역에서 클릭 가능<br>false : 광고 정보 더보기 버튼만 클릭 가능</p>                                                                       |
| muted         | 광고 영상을 음소거 상태로 재생                   | <p>null<br>(미지정 시 true)</p> |                  | <p>true : Mute 상태로 재생<br>false : Unmute 상태로 재생</p>                                                                                  |
| viewability   | 페이지 스크롤시 광고영역이 20% 이하로 보이면 광고 영상 정지 | <p>null<br>(미지정 시 true)</p> |                  | <p>true : 스크롤시 광고영상 정지<br>false : 스크롤시 광고영상 계속 재생</p>                                                                               |
| soundBtn      | 사운드를 제어할 수 있는 버튼                    | <p>null<br>(미지정 시 true)</p> |                  | <p>true : 사운드 버튼 보여줌<br>false : 사운드 버튼 보이지 않음</p>                                                                                   |
| clickBtn      | 광고 정보 더보기 버튼                        | true                        |                  | <p>true : 광고정보 더보기 버튼 보여줌<br>false : 광고정보 더보기 버튼 보이지 않음</p>                                                                         |
| skipBtn       | 광고 건너뛰기 버튼                          | true                        |                  | <p>true : 스킵 버튼 보여줌<br>false : 스킵 버튼 보이지 않음</p>                                                                                     |
| closeBtn      | 닫기 버튼으로 광고영역을 지움                    | false                       |                  | <p>true : 닫기 버튼 보여줌<br>false : 닫기 버튼 보이지 않음</p>                                                                                     |
| postClick     | 광고 클릭 이후 발생되는 이벤트                   | 2                           |                  | 0 : 광고 일시 정지                                                                                                                        |
|               |                                     |                             |                  | 1 : 광고 계속 재생                                                                                                                        |
|               |                                     |                             |                  | 2 : 광고 일시 정지 후 포커싱되면 자동 재생                                                                                                          |
|               |                                     |                             |                  | 3 : 광고 끝내기                                                                                                                          |
| setArea       | 광고소재 높이에 따라 자동으로 채우기                | false                       |                  | OVERLAY 모드 전용이며 INJECTION 모드에서는 false로 지정                                                                                           |

### 광고 페이지 구성

#### **소스코드**

```html
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
    </head>
    <body>
        <div id="movie_overlay"></div>

        <video id="movie_injection"></video>

        <script type="text/javascript" charset="utf-8">
            mezzoAd({
                targetId: 'movie_injection',
                elementMode: 'INJECTION',
                adid: '',
                publisher: 'publisher_code',
                media: 'media_code',
                section: 'section_code',
                uAgeLevel: '1',
                keyword: '',
                autoPlay: true,
                autoReplay: false,
                clickFullArea: false,
                clickBtn: true,
                viewability: true,
                muted: true,                    
                soundBtn: true,
                skipBtn: true,
                closeBtn: false,       
                setArea: false,
                postClick: 2,
                callbacks: {
                    success: function (type, status, data) {
                        console.log(
                            '[SUCCESS] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    fail: function (type, status, data) {
                        console.log(
                            '[FAIL] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    event: function (type, status, data) {
                        console.log(
                            '[EVENT] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    }          
                }
            });
        </script>
    </body>
</html>    
```

### 화면 구성 <a href="#screen" id="screen"></a>

{% hint style="info" %}
INJECTION 모드와 OVERLAY 모드시 Target 영역이 다릅니다.
{% endhint %}

* INJECTION 모드 : 아래 그림의 1번 위치(video tag 영역)에 광고 영상이 로드\
  현재 1번에 로드된 영상은 video tag에서 광고영상이 종료된 후 재생될 본영상
* OVERLAY 모드 : 아래 그림의 2번 위치(별도의 영역)에 광고 영상이 로드

<figure><img src="/files/lzQy6UB8qtPA26azYOWZ" alt=""><figcaption></figcaption></figure>

#### Callback 정의 <a href="#callback" id="callback"></a>

<table><thead><tr><th>Callback</th><th>type</th><th width="116">status</th><th>설명</th></tr></thead><tbody><tr><td>success</td><td>guarantee</td><td>200</td><td>광고 성공(보장형)</td></tr><tr><td>success</td><td>house</td><td>200</td><td>광고 성공(하우스)</td></tr><tr><td>fail</td><td>noad</td><td>404</td><td>광고없음</td></tr><tr><td>fail</td><td>error</td><td>408</td><td>요청 Timeout</td></tr><tr><td>fail</td><td>error</td><td>415</td><td>Ajax Parsing 에러</td></tr><tr><td>fail</td><td>error</td><td>498</td><td>중복 호출 에러</td></tr><tr><td>fail</td><td>error</td><td>499</td><td>에러</td></tr><tr><td>fail</td><td>error</td><td>501</td><td>지원하지 않는 브라우저</td></tr><tr><td>fail</td><td>error</td><td>502</td><td>지원하지 않는 단말기 (iOS)</td></tr><tr><td>fail</td><td>error</td><td>503</td><td>지원하지 않는 단말기 (Android)</td></tr><tr><td>event</td><td>adclick</td><td>200</td><td>광고 클릭</td></tr><tr><td>event</td><td>close</td><td>200</td><td>닫기 버튼 클릭</td></tr><tr><td>event</td><td>skip</td><td>200</td><td>SKIP 버튼 클릭</td></tr><tr><td>event</td><td>start</td><td>200</td><td>영상 시작</td></tr><tr><td>event</td><td>imp</td><td>200</td><td>영상 노출</td></tr><tr><td>event</td><td>firstQ</td><td>200</td><td>영상 1/4 재생</td></tr><tr><td>event</td><td>midQ</td><td>200</td><td>영상 2/4 재생</td></tr><tr><td>event</td><td>thirdQ</td><td>200</td><td>영상 3/4 재생</td></tr><tr><td>event</td><td>complete</td><td>200</td><td>영상 종료</td></tr><tr><td>event</td><td>objhide</td><td>200</td><td>INJECTION 방식일 때, 매체 video tag 숨김</td></tr><tr><td>event</td><td>objshow</td><td>200</td><td>INJECTION 방식일 때, 매체 video tag 보여줌</td></tr><tr><td>event</td><td>ended</td><td>200</td><td>광고 종료 ( 광고 후 원본 영상 재생 등 추가 작업시 해당 type 을 이용하여 처리 )</td></tr><tr><td>event</td><td>endcard_start</td><td>200</td><td>엔드카드 시작</td></tr><tr><td>event</td><td>endcard_imp</td><td>200</td><td>엔드카드 노출</td></tr><tr><td>event</td><td>endcard_click</td><td>200</td><td>엔드카드 클릭</td></tr><tr><td>event</td><td>endcard_close</td><td>200</td><td>엔드카드 닫기 버튼 클릭</td></tr></tbody></table>

### 정책 <a href="#policy" id="policy"></a>

{% hint style="info" %}
브라우져 정책에 따라 강제로 제어될 수 있습니다.
{% endhint %}

* Autoplay Policy
  * Google Chrome 또는 Safari(version 11 이상)의 경우, User의 Action이 없는 자동 재생(Autoplay)을 제한하고 있습니다.
  * Mute를 설정하시지 않고, 자동 재생(Autoplay)을 하실 경우, 아래의 브라우져 정책에 따라 광고 영상을 재생하지 못하는 경우가 발생할 수 있습니다.
  * 이때, TARGETPICK VIDEO 스크립트에서는 사운드를 Mute한 상태로 재생을 다시 시도합니다.
  * 따라서, 브라우져 정책에 따라 사운드가 Mute된 상태의 광고가 보여질 수 있습니다.
  * c.f ) <https://developers.google.com/web/updates/2017/09/autoplay-policy-changes>
  * c.f ) <https://blog.google/products/chrome/improving-autoplay-chrome/>
* 삼성브라우져
  * 삼성브라우져(4.4.2 이하)에서 일부 기능이 동작하지 않을 수 있습니다.

{% embed url="<https://docs.meba.kr/s-plus/sample_v300/video>" %}

#### 문의 <a href="#inquire" id="inquire"></a>

| 구분              | 부서        | 이름    | 이메일                     | 전화번호         |
| --------------- | --------- | ----- | ----------------------- | ------------ |
| 제휴 문의           | 크로스미디어사업팀 | 김정혁 님 | <jeonghyeok.kim@cj.net> | 02-6484-3856 |
| ID발급 및 광고 세팅 문의 | 크로스미디어사업팀 | 김미현 님 | <mihyun.kim2@cj.net>    | 02-6484-3076 |


# Java Script(Hybrid)

Native App의 Webview를 통해 Java Script를 적용하는 경우 연동 가이드 입니다.


# 배너

Targetpick 띠 배너, 전면 배너, 전면 동영상 광고 상품을 Script를 통해 하이브리드 형식으로 구현하기 위한 가이드 입니다.

지원 상품(사이즈)

<table><thead><tr><th width="194">상품 구분</th><th>사이즈</th></tr></thead><tbody><tr><td>띠배너</td><td>300x50 ㅣ 320x50 ㅣ 320x100 ㅣ 640x240 ㅣ 640x100 ㅣ 728x90</td></tr><tr><td>전면배너</td><td>640x960 ㅣ 320X480 ㅣ 480x320 ㅣ 1024x768 ㅣ 750x1200 ㅣ 768x1024</td></tr><tr><td>종료배너</td><td>640x960 ㅣ 750x1200</td></tr><tr><td>정사각형 및 직사각형</td><td>200x200 ㅣ 240x400 ㅣ 240x240 ㅣ 250x250 ㅣ 250x360 ㅣ 300x250 ㅣ 336x280 ㅣ 150x150 ㅣ 580x400</td></tr><tr><td>스카이스크래퍼</td><td>120x600 ㅣ 160x600 ㅣ 300x600 ㅣ 300x1050</td></tr><tr><td>리더보드</td><td>468x60 ㅣ 728x90 ㅣ 930x180 ㅣ 970x90 ㅣ 970x250 ㅣ 980x120</td></tr><tr><td>네이티브 피드</td><td>640x960</td></tr><tr><td>네이티브 피드 배너</td><td>320x100 ㅣ 320x50</td></tr><tr><td>스플래시</td><td>1200x1000</td></tr></tbody></table>

**Sample Project**

{% embed url="<https://docs.meba.kr/s-plus/sample_v300/banner>" %}

## Script 동작 환경

### Script 추가

{% hint style="info" %}
TARGETPICK 광고를 추가하고 구동하기 위한 광고 스크립트를 추가합니다.

( 아래 코드와 같이 사용하셔야 내부적인 업데이트 진행 시 편리하게 이용하실 수 있습니다. )
{% endhint %}

```html
<script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
```

## 하이브리드 앱 <a href="#callback" id="callback"></a>

{% hint style="info" %}
네이티브 앱 환경에서 웹뷰를 이용하여 광고 스크립트를 연동하는 경우 앱/단말기 옵션을 추가합니다.
{% endhint %}

### 옵션

<table><thead><tr><th width="157">함수</th><th width="111">옵션</th><th>설명</th><th>상품</th><th width="80">기본값</th><th width="76">필수</th><th>값</th></tr></thead><tbody><tr><td>mezzoAdApp</td><td>publisher</td><td>퍼블리셔 코드</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAdApp</td><td>media</td><td>미디어 코드</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAdApp</td><td>section</td><td>섹션 코드</td><td>전체</td><td> </td><td>Y</td><td> </td></tr><tr><td>mezzoAdApp</td><td>uAgeLevel</td><td>User 나이 레벨</td><td>전체</td><td> </td><td>N</td><td>0: 만 13세 이하<br>1: 만 13세 이상</td></tr><tr><td>mezzoAdApp</td><td>keyword</td><td>키워드 값 전달</td><td>전체</td><td> </td><td>N</td><td>키워드값을 전달<br>구분자는 ^로 사용<br>구분자를 포함한 전체 문자열 인코딩(encodeURIComponent)</td></tr><tr><td>mezzoAdApp</td><td>closeBtn</td><td>닫기버튼 노출 여부</td><td>전면배너<br>전면동영상</td><td>true</td><td>N</td><td>true : 노출<br>false : 비노출</td></tr><tr><td>mezzoAdApp</td><td>closeBtnLocation</td><td>닫기버튼 위치</td><td>전면배너</td><td>3</td><td>N</td><td>1 : 상단 좌측<br>2 : 상단 중앙<br>3 : 상단 우측<br>4 : 중앙 좌측<br>5 : 중앙 우측<br>6 : 하단 좌측<br>7 : 하단 중앙<br>8 : 하단 우측</td></tr><tr><td>mezzoAdApp</td><td>adid</td><td>adid 전송</td><td>전체</td><td> </td><td>Y</td><td>단말기 ADID/IDFA 전달<br>예)<br>Android :<br>158d87c5-add4-4646-b366-f39b5950dde1<br>iOS :<br>4A80248C-1BFC-4C9C-A643-B3B389043A20</td></tr><tr><td>mezzoAdApp</td><td>appId</td><td>앱 ID</td><td>전체</td><td> </td><td>Y</td><td>예)<br>Android : com.mezzomedia.app<br>iOS: id1234</td></tr><tr><td>mezzoAdApp</td><td>appVersion</td><td>앱 버전</td><td>전체</td><td> </td><td>Y</td><td>예) 1.0.0</td></tr><tr><td>mezzoAdApp</td><td>appName</td><td>앱 명칭</td><td>전체</td><td> </td><td>Y</td><td>예) mezzomediaapp</td></tr><tr><td>mezzoAdApp</td><td>appStoreUrl</td><td>앱 스토어 URL</td><td>전체</td><td> </td><td>Y</td><td>예)<br>Android: https://play.google.com/…<br>iOS: https://apps.apple.com/…</td></tr><tr><td>mezzoAdApp</td><td>manufacturer</td><td>제조사</td><td>전체</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>model</td><td>단말기 모델명</td><td>전체</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>networkType</td><td>네트워크 타입</td><td>전체</td><td> </td><td>N</td><td><a href="#code"><code>코드 참조</code></a></td></tr><tr><td>mezzoAdApp</td><td>mcc</td><td>모바일 국가 코드</td><td>전체</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>mnc</td><td>모바일 네트워크 코드</td><td>전체</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>carrier</td><td>통신사 명</td><td>전체</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>language</td><td>단말기 언어</td><td>전체</td><td> </td><td>N</td><td><a href="https://ko.wikipedia.org/wiki/ISO_639-1_%EC%BD%94%EB%93%9C_%EB%AA%A9%EB%A1%9D">ISO 639-1</a> 형식의 두자리 언어코드</td></tr><tr><td>mezzoAdApp</td><td>country</td><td>국가 코드</td><td>전체</td><td> </td><td>N</td><td><a href="https://ko.wikipedia.org/wiki/ISO_3166-1_alpha-3">ISO 3166-1 alpha-3</a> 형식의 세자리 국가코드</td></tr><tr><td>mezzoAdApp</td><td>skadn</td><td>SKAdNetwork 코드</td><td>전체</td><td> </td><td>N<br>(iOS : Y)</td><td>코드가 여러개일시 구분자 ^로 사용<br>예) feyaarzu9v.skadnetwork^…^…</td></tr></tbody></table>

### **샘플코드**

```html
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
    </head>
    <body>
        <div id="banner_test">
            <!-- AD Area -->
        </div>
    
        <script type="text/javascript" charset="utf-8">
            mezzoAdApp({
                targetId: 'banner_test',
                publisher: 'publisher_code',
                media: 'media_code',
                section: 'section_code',
                uAgeLevel: '1',
                keyword: '',
                closeBtn: true,
                closeBtnLocation: 3,
                adid: '',                
                appId: 'com.mezzomedia.app',
                appVersion: '1.0.0',
                appName: 'mezzomediaapp',
                appStoreUrl: '',
                manufacturer: '',
                model: '',
                networkType: '',
                mcc: '',
                mnc: '',
                carrier: '',
                language: 'ko',
                country: 'KOR',
                skadn: '',
                callbacks: {
                    success: function (type, status, data) {
                        console.log(
                            '[SUCCESS] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    fail: function (type, status, data) {
                        console.log(
                            '[FAIL] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    event: function (type, status, data) {
                        console.log(
                            '[EVENT] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    }          
                }
            });
        </script>
    </body>
</html>
```

### Callback 정의 <a href="#callback" id="callback"></a>

| Callback | type      | status | 설명                    | 상품               |
| -------- | --------- | ------ | --------------------- | ---------------- |
| success  | guarantee | 200    | 광고 성공 (보장형)           | 띠배너, 전면배너, 전면동영상 |
| success  | house     | 200    | 광고 성공 (하우스)           | 띠배너, 전면배너, 전면동영상 |
| fail     | noad      | 404    | 광고없음                  | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 400    | 요청 에러                 | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 408    | 요청 Timeout            | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 415    | AJAX Parsing 에러       | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 498    | 중복 호출 에러              | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 499    | 에러                    | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 501    | 지원하지 않는 브라우저          | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 502    | 지원하지 않는 단말기 (iOS)     | 띠배너, 전면배너, 전면동영상 |
| fail     | error     | 503    | 지원하지 않는 단말기 (Android) | 띠배너, 전면배너, 전면동영상 |
| event    | adclick   | 200    | 광고 클릭                 | 띠배너, 전면배너, 전면동영상 |
| event    | close     | 200    | 닫기 버튼 클릭              | 전면배너, 전면동영상      |
| event    | start     | 200    | 영상 시작                 | 전면동영상            |
| event    | imp       | 200    | 영상 노출                 | 전면동영상            |
| event    | firstQ    | 200    | 영상 1/4 재생             | 전면동영상            |
| event    | midQ      | 200    | 영상 2/4 재생             | 전면동영상            |
| event    | thirdQ    | 200    | 영상 3/4 재생             | 전면동영상            |
| event    | complete  | 200    | 영상 종료                 | 전면동영상            |

### 코드 정의 <a href="#code" id="code"></a>

#### networkType code

<table><thead><tr><th>Code</th><th width="267">Android</th><th>iOS</th></tr></thead><tbody><tr><td>Unknown</td><td>0</td><td>0</td></tr><tr><td>Internet</td><td>1</td><td>1</td></tr><tr><td>WIFI</td><td>2</td><td>2</td></tr><tr><td>Cellular Network - 2G</td><td>4, 7, 11</td><td>4</td></tr><tr><td>Cellular Network - 3G</td><td>3, 5, 6, 8, 9, 10, 12, 14, 15</td><td>5</td></tr><tr><td>Cellular Network - 4G</td><td>13</td><td>6</td></tr><tr><td>Cellular Network - 5G</td><td>20</td><td>7</td></tr><tr><td>Cellular Network - Unknown Generation</td><td>0</td><td>3</td></tr></tbody></table>

[샘플 페이지 이동](https://docs.meba.kr/s-plus/sample_v300/banner/index.html)

#### 문의 <a href="#inquire" id="inquire"></a>

| 구분              | 부서        | 이름    | 이메일                     | 전화번호         |
| --------------- | --------- | ----- | ----------------------- | ------------ |
| 제휴 문의           | 크로스미디어사업팀 | 김정혁 님 | <jeonghyeok.kim@cj.net> | 02-6484-3856 |
| ID발급 및 광고 세팅 문의 | 크로스미디어사업팀 | 김미현 님 | <mihyun.kim2@cj.net>    | 02-6484-3076 |


# 동영상

Targetpick 동영상 광고 상품을 Script를 통해 하이브리드 형식으로 구현하기 위한 가이드 입니다.

동영상 Script의 경우, 기본적인 동영상 광고 구동을 위한 예시 코드로 작성되어 있습니다. 각 매체별 디자인 특성에 맞도록 UI를 고려하시어 작업을 진행하시기 바랍니다.

## Script 동작 환경

### **Script 추가**

{% hint style="info" %}
동영상(TARGETPICK VIDEO) 광고를 추가하고 구동하기 위한 광고 스크립트를 추가합니다.\
( 아래 코드와 같이 사용하셔야 내부적인 업데이트 진행 시 편리하게 이용하실 수 있습니다. )
{% endhint %}

```html
<script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
```

### **옵션**

<table data-full-width="false"><thead><tr><th width="149">함수</th><th width="147">Option</th><th width="147">설명</th><th>기본값</th><th>필수</th><th>값</th></tr></thead><tbody><tr><td>mezzoAdApp</td><td>targetId</td><td>광고 노출영역 ID</td><td> </td><td>Y</td><td>광고가 노출될 영역 ID</td></tr><tr><td>mezzoAdApp</td><td>elementMode</td><td>광고 영상을 삽입하는 영역에 대한 옵션</td><td>INJECTION</td><td>Y</td><td>INJECTION : video 영역(video tag)에 광고를 삽입하는 모드<br>OVERLAY : video 영역이 아닌 영역에 광고를 삽입하는 경우</td></tr><tr><td>mezzoAdApp</td><td>publisher</td><td>발급 받으신 퍼블리셔 코드(Publisher_Code)를 입력</td><td>null</td><td>Y</td><td>발급 받으신 Publisher Code</td></tr><tr><td>mezzoAdApp</td><td>media</td><td>발급 받으신 미디어 코드(Media_Code)를 입력</td><td>null</td><td>Y</td><td>발급 받으신 Media Code</td></tr><tr><td>mezzoAdApp</td><td>section</td><td>발급 받으신 섹션 코드(Section_Code)를 입력</td><td>null</td><td>Y</td><td>발급 받으신 Section Code</td></tr><tr><td>mezzoAdApp</td><td>uAgeLevel</td><td>User 나이 레벨</td><td>null</td><td>N</td><td>0: 만 13세 이하<br>1: 만 13세 이상</td></tr><tr><td>mezzoAdApp</td><td>keyword</td><td>키워드 값 전달</td><td>null</td><td>N</td><td>키워드값을 전달<br>구분자는 ^로 사용<br>구분자를 포함한 전체 문자열 인코딩(encodeURIComponent)</td></tr><tr><td>mezzoAdApp</td><td>autoPlay</td><td>광고 영상을 자동으로 재생</td><td>true</td><td> </td><td>true : 자동으로 재생<br>false : 재생 버튼을 누른 후 재생</td></tr><tr><td>mezzoAdApp</td><td>autoReplay</td><td>광고 영상이 종료된 후 자동으로 다시 재생</td><td>false</td><td> </td><td>true : 종료 후 다시 재생<br>false : 광고 영상 종료</td></tr><tr><td>mezzoAdApp</td><td>clickFullArea</td><td>광고를 클릭하여 광고 상세 정보 페이지로 랜딩되는 영역을 설정</td><td>false</td><td> </td><td>true : 영상 전체 영역에서 클릭 가능<br>false : 광고 정보 더보기 버튼만 클릭 가능</td></tr><tr><td>mezzoAdApp</td><td>muted</td><td>광고 영상을 음소거 상태로 재생</td><td>null<br>(미지정 시 true)</td><td> </td><td>true : Mute 상태로 재생<br>false : Unmute 상태로 재생</td></tr><tr><td>mezzoAdApp</td><td>viewability</td><td>페이지 스크롤시 광고영역이 20% 이하로 보이면 광고 영상 정지</td><td>null<br>(미지정 시 true)</td><td> </td><td>true : 스크롤시 광고영상 정지<br>false : 스크롤시 광고영상 계속 재생</td></tr><tr><td>mezzoAdApp</td><td>soundBtn</td><td>사운드를 제어할 수 있는 버튼</td><td>null<br>(미지정 시 true)</td><td> </td><td>true : 사운드 버튼 보여줌<br>false : 사운드 버튼 보이지 않음</td></tr><tr><td>mezzoAdApp</td><td>clickBtn</td><td>광고 정보 더보기 버튼</td><td>true</td><td> </td><td>true : 광고정보 더보기 버튼 보여줌<br>false : 광고정보 더보기 버튼 보이지 않음</td></tr><tr><td>mezzoAdApp</td><td>skipBtn</td><td>광고 건너뛰기 버튼</td><td>true</td><td> </td><td>true : 스킵 버튼 보여줌<br>false : 스킵 버튼 보이지 않음</td></tr><tr><td>mezzoAdApp</td><td>closeBtn</td><td>닫기 버튼으로 광고영역을 지움</td><td>false</td><td> </td><td>true : 닫기 버튼 보여줌<br>false : 닫기 버튼 보이지 않음</td></tr><tr><td>mezzoAdApp</td><td>postClick</td><td>광고 클릭 이후 발생되는 이벤트</td><td>2</td><td> </td><td>0 : 광고 일시 정지<br>1 : 광고 계속 재생<br>2 : 광고 일시 정지 후 포커싱되면 자동 재생<br>3: 광고 끝내기</td></tr><tr><td>mezzoAdApp</td><td>setArea</td><td>광고소재 높이에 따라 자동으로 채우기</td><td>false</td><td> </td><td>OVERLAY 모드 전용이며 INJECTION 모드에서는 false로 지정</td></tr><tr><td>mezzoAdApp</td><td>adid</td><td>ADID</td><td> </td><td>Y</td><td>단말기 ADID/IDFA 전달<br>예)<br>Android :<br>158d87c5-add4-4646-b366-f39b5950dde1<br>iOS :<br>4A80248C-1BFC-4C9C-A643-B3B389043A20</td></tr><tr><td>mezzoAdApp</td><td>appId</td><td>앱 ID</td><td> </td><td>Y</td><td>예)<br>Android : com.mezzomedia.app<br>iOS: id1234</td></tr><tr><td>mezzoAdApp</td><td>appVersion</td><td>앱 버전</td><td> </td><td>Y</td><td>예) 1.0.0</td></tr><tr><td>mezzoAdApp</td><td>appName</td><td>앱 명칭</td><td> </td><td>Y</td><td>예) mezzomediaapp</td></tr><tr><td>mezzoAdApp</td><td>appStoreUrl</td><td>앱 스토어 URL</td><td> </td><td>Y</td><td>예)<br>Android: https://play.google.com/…<br>iOS: https://apps.apple.com/…</td></tr><tr><td>mezzoAdApp</td><td>manufacturer</td><td>제조사</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>model</td><td>단말기 모델명</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>networkType</td><td>네트워크 타입</td><td> </td><td>N</td><td><a href="#code"><code>코드참조</code></a></td></tr><tr><td>mezzoAdApp</td><td>mcc</td><td>모바일 국가 코드</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>mnc</td><td>모바일 네트워크 코드</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>carrier</td><td>통신사 명</td><td> </td><td>N</td><td> </td></tr><tr><td>mezzoAdApp</td><td>language</td><td>단말기 언어</td><td> </td><td>N</td><td><a href="https://ko.wikipedia.org/wiki/ISO_639-1_%EC%BD%94%EB%93%9C_%EB%AA%A9%EB%A1%9D">ISO 639-1</a> 형식의 두자리 언어코드</td></tr><tr><td>mezzoAdApp</td><td>country</td><td>국가 코드</td><td> </td><td>N</td><td><a href="https://ko.wikipedia.org/wiki/ISO_3166-1_alpha-3">ISO 3166-1 alpha-3</a> 형식의 세자리 국가코드</td></tr><tr><td>mezzoAdApp</td><td>skadn</td><td>SKAdNetwork 코드</td><td> </td><td>N<br>(iOS : Y)</td><td>코드가 여러개일시 구분자 ^로 사용<br>예) feyaarzu9v.skadnetwork^…^…</td></tr></tbody></table>

### **샘플코드**

{% code lineNumbers="true" %}

```html
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://advimg.ad-mapps.com/sdk/js/ver/3.0.0/ad_script.min.js" charset="utf-8"></script>
    </head>
    <body>
        <div id="movie_overlay"></div>

        <video id="movie_injection"></video>

        <script type="text/javascript" charset="utf-8">
            mezzoAdApp({
                targetId: 'movie_injection',
                elementMode: 'INJECTION',                
                publisher: 'publisher_code',
                media: 'media_code',
                section: 'section_code',
                uAgeLevel: '1',
                keyword: '',
                autoPlay: true,
                autoReplay: false,
                clickFullArea: false,
                clickBtn: true,
                viewability: true,
                muted: true,                    
                soundBtn: true,
                skipBtn: true,
                closeBtn: false,       
                setArea: false,
                postClick: 2,
                adid: '',
                appId: 'com.mezzomedia.app',
                appVersion: '1.0.0',
                appName: 'mezzomediaapp',
                appStoreUrl: '',
                manufacturer: '',
                model: '',
                networkType: '',
                mcc: '',
                mnc: '',
                carrier: '',
                language: 'ko',
                country: 'KOR',
                skadn: '',
                callbacks: {
                    success: function (type, status, data) {
                        console.log(
                            '[SUCCESS] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    fail: function (type, status, data) {
                        console.log(
                            '[FAIL] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    },
                    event: function (type, status, data) {
                        console.log(
                            '[EVENT] type : ' + type + ' status : ' + status + ' data : ' + JSON.stringify(data)
                        );
                    }          
                }
            });
        </script>
    </body>
</html>    
```

{% endcode %}

### 화면 구성 <a href="#screen" id="screen"></a>

{% hint style="info" %}
INJECTION 모드와 OVERLAY 모드시 Target 영역이 다릅니다.
{% endhint %}

* INJECTION 모드 : 아래 그림의 1번 위치(video tag 영역)에 광고 영상이 로드\
  현재 1번에 로드된 영상은 video tag에서 광고영상이 종료된 후 재생될 본영상
* OVERLAY 모드 : 아래 그림의 2번 위치(별도의 영역)에 광고 영상이 로드

<figure><img src="/files/lzQy6UB8qtPA26azYOWZ" alt=""><figcaption></figcaption></figure>

#### Callback 정의 <a href="#callback" id="callback"></a>

<table><thead><tr><th>Callback</th><th>type</th><th width="116">status</th><th>설명</th></tr></thead><tbody><tr><td>success</td><td>guarantee</td><td>200</td><td>광고 성공(보장형)</td></tr><tr><td>success</td><td>house</td><td>200</td><td>광고 성공(하우스)</td></tr><tr><td>fail</td><td>noad</td><td>404</td><td>광고없음</td></tr><tr><td>fail</td><td>error</td><td>408</td><td>요청 Timeout</td></tr><tr><td>fail</td><td>error</td><td>415</td><td>Ajax Parsing 에러</td></tr><tr><td>fail</td><td>error</td><td>498</td><td>중복 호출 에러</td></tr><tr><td>fail</td><td>error</td><td>499</td><td>에러</td></tr><tr><td>fail</td><td>error</td><td>501</td><td>지원하지 않는 브라우저</td></tr><tr><td>fail</td><td>error</td><td>502</td><td>지원하지 않는 단말기 (iOS)</td></tr><tr><td>fail</td><td>error</td><td>503</td><td>지원하지 않는 단말기 (Android)</td></tr><tr><td>event</td><td>adclick</td><td>200</td><td>광고 클릭</td></tr><tr><td>event</td><td>close</td><td>200</td><td>닫기 버튼 클릭</td></tr><tr><td>event</td><td>skip</td><td>200</td><td>SKIP 버튼 클릭</td></tr><tr><td>event</td><td>start</td><td>200</td><td>영상 시작</td></tr><tr><td>event</td><td>imp</td><td>200</td><td>영상 노출</td></tr><tr><td>event</td><td>firstQ</td><td>200</td><td>영상 1/4 재생</td></tr><tr><td>event</td><td>midQ</td><td>200</td><td>영상 2/4 재생</td></tr><tr><td>event</td><td>thirdQ</td><td>200</td><td>영상 3/4 재생</td></tr><tr><td>event</td><td>complete</td><td>200</td><td>영상 종료</td></tr><tr><td>event</td><td>objhide</td><td>200</td><td>INJECTION 방식일 때, 매체 video tag 숨김</td></tr><tr><td>event</td><td>objshow</td><td>200</td><td>INJECTION 방식일 때, 매체 video tag 보여줌</td></tr><tr><td>event</td><td>ended</td><td>200</td><td>광고 종료 ( 광고 후 원본 영상 재생 등 추가 작업시 해당 type 을 이용하여 처리 )</td></tr><tr><td>event</td><td>endcard_start</td><td>200</td><td>엔드카드 시작</td></tr><tr><td>event</td><td>endcard_imp</td><td>200</td><td>엔드카드 노출</td></tr><tr><td>event</td><td>endcard_click</td><td>200</td><td>엔드카드 클릭</td></tr><tr><td>event</td><td>endcard_close</td><td>200</td><td>엔드카드 닫기 버튼 클릭</td></tr></tbody></table>

### 정책 <a href="#policy" id="policy"></a>

{% hint style="info" %}
브라우져 정책에 따라 강제로 제어될 수 있습니다.
{% endhint %}

* Autoplay Policy
  * Google Chrome 또는 Safari(version 11 이상)의 경우, User의 Action이 없는 자동 재생(Autoplay)을 제한하고 있습니다.
  * Mute를 설정하시지 않고, 자동 재생(Autoplay)을 하실 경우, 아래의 브라우져 정책에 따라 광고 영상을 재생하지 못하는 경우가 발생할 수 있습니다.
  * 이때, TARGETPICK VIDEO 스크립트에서는 사운드를 Mute한 상태로 재생을 다시 시도합니다.
  * 따라서, 브라우져 정책에 따라 사운드가 Mute된 상태의 광고가 보여질 수 있습니다.
  * c.f ) <https://developers.google.com/web/updates/2017/09/autoplay-policy-changes>
  * c.f ) <https://blog.google/products/chrome/improving-autoplay-chrome/>
* 삼성브라우져
  * 삼성브라우저(4.4.2 이하)에서 일부 기능이 동작하지 않을 수 있습니다.

{% embed url="<https://docs.meba.kr/s-plus/sample_v300/video>" %}

### 코드 정의 <a href="#code" id="code"></a>

<table><thead><tr><th width="354">Code</th><th width="234">Android</th><th>iOS</th></tr></thead><tbody><tr><td>Unknown</td><td>0</td><td>0</td></tr><tr><td>Internet</td><td>1</td><td>1</td></tr><tr><td>WIFI</td><td>2</td><td>2</td></tr><tr><td>Cellular Network - 2G</td><td>4, 7, 11</td><td>4</td></tr><tr><td>Cellular Network - 3G</td><td>3, 5, 6, 8, 9, 10, 12, 14, 15</td><td>5</td></tr><tr><td>Cellular Network - 4G</td><td>13</td><td>6</td></tr><tr><td>Cellular Network - 5G</td><td>20</td><td>7</td></tr><tr><td>Cellular Network - Unknown Generation</td><td>0</td><td>3</td></tr></tbody></table>

#### 문의 <a href="#inquire" id="inquire"></a>

| 구분              | 부서        | 이름    | 이메일                     | 전화번호         |
| --------------- | --------- | ----- | ----------------------- | ------------ |
| 제휴 문의           | 크로스미디어사업팀 | 김정혁 님 | <jeonghyeok.kim@cj.net> | 02-6484-3856 |
| ID발급 및 광고 세팅 문의 | 크로스미디어사업팀 | 김미현 님 | <mihyun.kim2@cj.net>    | 02-6484-3076 |


# 매체 연동 API

SDK나 Script가 아닌 매체와 API를 직접 연동하는 경우 가이드 입니다.


# 공통(배너/비디오/네이티브/CTV동영상 포함)

Targetpick 배너 광고 적용을 위한 API 가이드 입니다.

{% hint style="info" %}
파라미터 필수 구분

* MUST: 거래 상 반드시 추가되어야 하는 필수 값으로 제외 시 응답하지 않을 수 있습니다.
* SHOULD: 필수(MUST)는 아니지만 추천하는 값으로 응답률 상승에 도움줄 수 있습니다.
* MAY: 선택 값입니다.
  {% endhint %}

## Request

HTTP POST 방식으로 아래 정의된 객체를 작성해 TARGETPICK 인터페이스를 호출합니다.

### 도메인 정보

| 구분  | URL                       |
| --- | ------------------------- |
| 테스트 | <https://ssp-stg.mman.kr> |
| 상용  | <https://ssp.mman.kr>     |

```
{domain}/ssp.mezzo/?pub={publisher}&media={media}&section={section}&used_type=api
```

### 쿼리 파라미터

<table><thead><tr><th width="128">필드</th><th width="102">유형</th><th width="114">필수</th><th>설명</th></tr></thead><tbody><tr><td>pub</td><td>integer</td><td>MUST</td><td>사업자번호 (광고솔루션에서 발급)</td></tr><tr><td>media</td><td>integer</td><td>MUST</td><td>미디어번호 (광고솔루션에서 발급)</td></tr><tr><td>section</td><td>integer</td><td>MUST</td><td>섹션번호 (광고솔루션에서 발급)</td></tr><tr><td>used_type</td><td>string</td><td>MUST</td><td>api</td></tr></tbody></table>

### Body

<table><thead><tr><th width="127">필드</th><th width="103">유형</th><th width="119">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MAY</td><td><p>광고요청시 Client에서 고유코드를 생성하여 관리</p><p>(universally unique identifier, UUID)</p></td></tr><tr><td>device</td><td>object</td><td>MUST</td><td>단말기 정보</td></tr><tr><td>geo</td><td>object</td><td>MUST</td><td>지역 정보</td></tr><tr><td>app</td><td>object</td><td>MUST <br>(App일 경우)</td><td>앱 정보</td></tr><tr><td>site</td><td>object</td><td>MUST <br>(Web일 경우)</td><td>사이트 정보</td></tr><tr><td>ad</td><td>object</td><td>MUST</td><td>광고 정보</td></tr><tr><td>user</td><td>object</td><td>SHOULD</td><td>사용자 정보</td></tr><tr><td>ext</td><td>object</td><td>MAY</td><td>확장 영역</td></tr></tbody></table>

### Device

<table><thead><tr><th width="130">필드</th><th width="102">유형</th><th width="121">필수</th><th>설명</th></tr></thead><tbody><tr><td>adid</td><td>string</td><td>SHOULD</td><td>Android: Google AdvertiseID<br>iOS: IDFA</td></tr><tr><td>sid</td><td>string</td><td>MAY</td><td>공유한 sid</td></tr><tr><td>puid</td><td>string</td><td>MAY</td><td>공유한 puid</td></tr><tr><td>os_type</td><td>integer</td><td>MUST</td><td><p>1: PC</p><p>2: iOS</p><p>3: Android</p></td></tr><tr><td>os_name</td><td>string</td><td>MUST</td><td>디바이스 OS명<br>ex) Android, iPad, iPhone..</td></tr><tr><td>manufacturer</td><td>string</td><td>SHOULD</td><td>디바이스 제조사</td></tr><tr><td>model</td><td>string</td><td>SHOULD</td><td>디바이스 모델명</td></tr><tr><td>os_ver</td><td>string</td><td>MUST</td><td>디바이스 OS버전<br>ex) 7.0, 8.0</td></tr><tr><td>network_type</td><td>integer</td><td>SHOULD</td><td><a href="#undefined-2"><code>code</code></a> 코드정의를 참고하세요.</td></tr><tr><td>carrier</td><td>string</td><td>SHOULD</td><td>디바이스 통신사명</td></tr><tr><td>w</td><td>integer</td><td>MUST</td><td>디바이스 가로사이즈</td></tr><tr><td>h</td><td>integer</td><td>MUST</td><td>디바이스 세로사이즈</td></tr><tr><td>densty</td><td>string</td><td>MAY</td><td>해상도</td></tr><tr><td>orientation</td><td>integer</td><td>MAY</td><td><a href="#undefined-2"><code>code</code></a> 코드정의를 참고하세요.</td></tr><tr><td>language</td><td>string</td><td>SHOULD</td><td>디바이스 언어코드<br>ex) ko, en…</td></tr><tr><td>mcc</td><td>integer</td><td>SHOULD</td><td>USIM 국가코드</td></tr><tr><td>mnc</td><td>integer</td><td>SHOULD</td><td>USIM 통신사코드</td></tr><tr><td>skadn</td><td>string</td><td>MUST<br>(ios)</td><td>skadn값</td></tr><tr><td><mark style="color:red;"><strong>ua</strong></mark></td><td>string</td><td>MUST</td><td>요청한 사용자의 user-agent</td></tr><tr><td><mark style="color:red;"><strong>ip</strong></mark></td><td>string</td><td>MUST</td><td>요청한 사용자의 ip</td></tr></tbody></table>

{% hint style="danger" %}

* UA(User Agent)의 경우, AD Exchange 거래를 위한 조건으로 <mark style="color:red;">**반드시 필수 제공**</mark>해주셔야 합니다.
* IP의 경우, <mark style="color:red;">**Private IP(가상IP)가 아닌 Public IP 기준으로 전달**</mark>주셔야 합니다.\
  공유기, 회사 내부망에 할당된 IP가 그대로 전달 될 경우 광고 거래가 제한적일 수 있습니다.
* IP를 Device 내 적용 불가할 경우에는 Header X-Forwarded-For에 전달해주시면 됩니다.
  {% endhint %}

### Geo

<table><thead><tr><th width="129">필드</th><th width="108">유형</th><th width="156">필수</th><th>설명</th></tr></thead><tbody><tr><td>country</td><td>string</td><td>MUST</td><td>국가 코드 (KOR)</td></tr></tbody></table>

### App

<table><thead><tr><th width="134">필드</th><th width="105">유형</th><th width="149">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MUST</td><td>앱패키지명</td></tr><tr><td>ver</td><td>string</td><td>MUST</td><td>앱버전</td></tr><tr><td>name</td><td>string</td><td>MUST</td><td>앱명</td></tr><tr><td>store_url</td><td>string</td><td>MUST</td><td>스토어url</td></tr><tr><td>content</td><td>object</td><td>SHOULD</td><td><a href="#content"><code>Content</code></a> CTV 동영상 연동 메타 정보</td></tr></tbody></table>

### Site

<table><thead><tr><th width="138">필드</th><th width="100">유형</th><th width="150">필수</th><th>설명</th></tr></thead><tbody><tr><td>domain</td><td>string</td><td>MUST</td><td>page domain</td></tr><tr><td>page_url</td><td>string</td><td>MUST</td><td>지면 url</td></tr><tr><td>content</td><td>obejct</td><td>SHOULD</td><td><a href="#content"><code>Content</code></a> CTV 동영상 연동 메타 정보</td></tr></tbody></table>

### AD

<table><thead><tr><th width="145">필드</th><th width="95">유형</th><th width="152">필수</th><th>설명</th></tr></thead><tbody><tr><td>section</td><td>integer</td><td>MUST</td><td>섹션번호 (광고솔루션에서 발급)</td></tr><tr><td>w</td><td>integer</td><td>MUST</td><td>광고영역 넓이</td></tr><tr><td>h</td><td>integer</td><td>MUST</td><td>광고영역 높이</td></tr><tr><td>assets</td><td>string</td><td>MUST<br>(Native 연동 시)</td><td><p>Native assets 상품 사용 시 필수</p><ul><li><p>IAB 가이드 참고</p><ul><li><a href="https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf"><code>native version: 1.2인 경우</code></a></li><li><a href="https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-Native-Ads-Specification-1-1_2016.pdf"><code>native version: 1.2 이하인 경우</code></a> </li></ul></li></ul></td></tr><tr><td>minduration</td><td>string</td><td>MUST<br>(Video 연동 시)</td><td>동영상 최소 시간 (초 단위로  입력)</td></tr><tr><td>maxduration</td><td>string</td><td>MUST<br>(Video 연동 시)</td><td>동영상 최대 시간 (초 단위로  입력)</td></tr></tbody></table>

### User

<table><thead><tr><th width="146">필드</th><th width="99">유형</th><th width="110">필수</th><th>설명</th></tr></thead><tbody><tr><td>age_level</td><td>integer</td><td>MUST</td><td>나이 레벨<br>0: 어린이(만 13세 미만)<br>1: 성인 청소년(만 13세 이상)<br>-1: 알 수 없음</td></tr></tbody></table>

### **Content**

**CTV 동영상 상품에 대한 광고 요청시 필요한 정보**

<table><thead><tr><th width="147">필드</th><th width="104">유형</th><th width="110">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MUST</td><td>프로그램 ID</td></tr><tr><td>title</td><td>string</td><td>SHOULD</td><td>프로그램 명</td></tr><tr><td>episode</td><td>interger</td><td>SHOULD</td><td>에피소드 번호</td></tr><tr><td>genre</td><td>string</td><td>SHOULD</td><td>프로그램 장르</td></tr><tr><td>channel</td><td>object</td><td>MUST</td><td><a href="#channel"><code>Channel</code></a> CTV 동영상 연동 채널 정보</td></tr></tbody></table>

### **Channel**

**CTV 동영상 상품에 대한 광고 요청시 필요한 정보**

<table><thead><tr><th width="147">필드</th><th width="105">유형</th><th width="112">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MUST</td><td>채널 ID</td></tr><tr><td>name</td><td>string</td><td>SHOULD</td><td>채널 명</td></tr></tbody></table>

### **Request 예제**

<http://ssp.mman.kr/ssp.mezzo/?pub={pub}&media={media}&section={section}&used_type=api>

```json
{
    "device": {
        "adid": "52e49a4b-e10f-497d-96ac-af561abd0339",
        "sid": "4a34bafc-6aa2-4c51-8d32-099376261a41",
        "puid": "c1a380fc-42f5-4751-9393-52ec57533bf0",
        "os_type": 3,
        "os_name": "Android",
        "os_ver": "12",
        "manufacturer": "samsung",
        "model": "SM-G977N",
        "carrier": "-",
        "w": 1080,
        "h": 2050,
        "densty": "420",
        "orientation": 1,
        "language": "ko",
        "ua":"Mozilla/5.0 (Linux; Android 13; SM-S908N Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36",
        "ip":"11.111.111.11"
    },
    "geo": {
        "country": "KOR"
    },
    -- app 지면은 app object, web 지면은 site object
    "app": {
        "id": "com.mezzomedia.adman.app",
        "ver": "1.0",
        "name": "이것이 테스트",
        "store_url": "https://play.google.com/store/apps/details?id=com.mz.mezzomediaapp"
        -- CTV 동영상 상품 추가필드--
        "content" : { 
            "id": "1",
            "title": "1 program",
            "episode": 1,
            "genre": "pop",
            "channel": {
                "id": "2",
                "nmae": "2 channel"
            }
        }
    },
    "ad": { 
        "section": 12345,
        "w": 1080,
        "h": 131
    },
    "user": {
        "age_level": 1
    },
    "ext": {}
}
```

## Response

TARGETPICK 는 아래 정의된 JSON 객체를 응답합니다.

### Response

| 필드      | 유형           | 필수   | 설명                                      |
| ------- | ------------ | ---- | --------------------------------------- |
| id      | string       | MAY  | 광고고유아이디                                 |
| cur     | string       | MAY  | 통화 “KRW”                                |
| seatbid | object array | MUST | [`seatbid object`](#seatbid-object)  참고 |
| ext     | object       | MAY  | 확장영역(미사용)                               |

### **Seatbid object**

| 필드   | 유형           | 필수   | 설명                              |
| ---- | ------------ | ---- | ------------------------------- |
| bid  | object array | MUST | [`bid object`](#bid-object)  참고 |
| seat | string       | MAY  | mezzomedia                      |
| ext  | object       | MAY  | 확장영역(미사용)                       |

### Bid object

<table><thead><tr><th width="100">필드</th><th width="100">유형</th><th width="100">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MAY</td><td>광고 고유 아이디</td></tr><tr><td>impid</td><td>string</td><td>MAY</td><td>광고 고유 아이디</td></tr><tr><td>cid</td><td>string</td><td>MAY</td><td>캠페인 넘버</td></tr><tr><td>crid</td><td>string</td><td>MAY</td><td>소재 아이디</td></tr><tr><td>adm</td><td>string</td><td>MUST</td><td><ol><li><p>배너</p><ul><li>product_attr: 1, 2, 6, 7, 8, 12</li><li>html을 웹뷰에 처리</li></ul></li><li><p>비디오(VAST)</p><ul><li>product_attr: 4 </li><li><a href="/pages/XzHYJx1Z1x2WvNRQqQ99"><code>비디오가이드</code></a> 참고</li></ul></li><li><p>네이티브 </p><ul><li>product_attr: 10, product_no: 67</li><li>adm 내부 string을 json 변형 후<br>ext>privacy>icon은 아이콘으로 처리, ext>privacy>click은 아이콘 클릭 처리 필요</li><li><p>IAB 가이드 참고</p><ul><li><a href="https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf"><code>native version: 1.2인 경우</code></a></li><li><a href="https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-Native-Ads-Specification-1-1_2016.pdf"><code>native version: 1.2 이하인 경우</code></a> </li></ul></li></ul></li></ol></td></tr><tr><td>price</td><td>float</td><td>MAY</td><td>단가</td></tr><tr><td>w</td><td>integer</td><td>MAY</td><td>소재 넓이</td></tr><tr><td>h</td><td>integer</td><td>MAY</td><td>소재 높이</td></tr><tr><td>ext</td><td>object</td><td>MUST</td><td>확장영역</td></tr></tbody></table>

### Bid object > Ext

<table><thead><tr><th width="187">필드</th><th width="123">유형</th><th width="100">필수</th><th>설명</th></tr></thead><tbody><tr><td>ad_type</td><td>integer</td><td>MAY</td><td>과금 형태</td></tr><tr><td>bg_color</td><td>string</td><td>MAY</td><td>백그라운드 색상</td></tr><tr><td>close_location</td><td>integer</td><td>MAY</td><td>close btn위치</td></tr><tr><td>end_datetime</td><td>integer</td><td>MAY</td><td>소재 허용 시간</td></tr><tr><td>eventtrackers</td><td>object</td><td>MAY</td><td><a href="#eventtrackers-object"><code>eventtrackers object</code></a> 참고</td></tr><tr><td>logo_location</td><td>integer</td><td>MAY</td><td>logo 위치</td></tr><tr><td>product_attr</td><td>integer</td><td>MAY</td><td>상품 중 분류</td></tr><tr><td>product_no</td><td>integer</td><td>MAY</td><td>상품 소 분류</td></tr><tr><td>response_time</td><td>integer</td><td>MAY</td><td>응답 후 랜더링 타임아웃 시간</td></tr><tr><td>viewability</td><td>object</td><td>SHOULD</td><td>viewability object 참고</td></tr></tbody></table>

### Eventtrackers object

<table><thead><tr><th width="176">필드</th><th width="159">유형</th><th width="73">필수</th><th>설명</th></tr></thead><tbody><tr><td>event</td><td>integer</td><td>MAY</td><td><p>1 노출: 노출 시 포함된 url 호출 필요</p><p>5 클릭(랜딩 페이지): 별도 작업 불필요</p><p>6 클릭: 클릭 시 포함된 url 호출 필요</p></td></tr><tr><td>method</td><td>integer</td><td>MAY</td><td>1: img tag<br>2: js</td></tr><tr><td>url</td><td>string</td><td>MAY</td><td>트래킹</td></tr></tbody></table>

{% hint style="info" %}
event 필드가  없거나 한 개 또는 복수 개 (1+5, 1+6)로 응답할 수 있습니다.

* event가 없음: adm으로 모든 노출/클릭 처리가  가능한 경우에는 해당 값이 없습니다.
* "event": 1: 외부 DSP 중 nurl, burl만 사용하여 imptracking 발생하지 않을 경우 전달합니다. 광고 노출 시 eventtrackers > url을 처리해야 하며,  미발생 시 노출 집계되지 않습니다.
* "event": 5: html 내부에 clicktracking 포함되어 있어 별도의 처리없이도 클릭 집계됩니다.
* "event": 6: 외부 DSP 중 html 내 clicktracking 포함하지 않을 경우 전달됩니다. 클릭 발생 시 eventtrackers > url을 처리해야 하며,  발생하지 않을 경우 클릭 집계되지 않습니다.
  {% endhint %}

### **Viewability object**

| 필드         | 유형      | 필수     | 설명    |
| ---------- | ------- | ------ | ----- |
| impression | string  | SHOULD | 트래킹   |
| time       | integer | SHOULD | 노출 시간 |

{% hint style="info" %}
Viewability 내 impression은 노출 트래킹과 별개이며 time에 맞추어 처리하면 됩니다.
{% endhint %}

### **Response 예제 (JSON)**

```json

{
    "id": "1dfe1833-fdfe-4639-a04e-7ff29f9a4b8d$1233855558",
    "seatbid": [
        {
            "bid": [
                {
                    "id": "",
                    "impid": "",
                    "price": 0,
                    "adm": "...",
                    "cid": "21281",
                    "crid": "5379_12350",
                    "w": 1920,
                    "h": 1080,
                    "ext": {
                        "ad_type": 4,
                        "bg_color": "#ffffff",
                        "close_location": 0,
                        "end_datetime": 1753973999,
                        "eventtrackers": [],
                        "logo_location": 0,
                        "mobileweb_type": 0,
                        "product_attr": 4,
                        "product_no": 4,
                        "response_time": 0,
                        "rotatetime": 0,
                        "viewability": {
                            "impression": "",
                            "time": 2000
                        }
                    }
                }
            ],
            "seat": "mezzomedia",
            "ext": { 
            //미사용(응답문에 포함은 되나, API 사용 시 무시)
                "verification": [
                    {
                        "javascriptresource": {
                            "apiframework": "omid",
                            "url": "https://s3-us-west-2.amazonaws.com/omsdk-files/compliance-js/omid-validation-verification-script-v1.js"
                        },
                        "vendor": "iabtechlab.com-omid",
                        "verificationparameters": "iabtechlab-mezzomedia"
                    }
                ]
            }
        }
    ],
    "cur": "KRW",
    "ext": {
    //미사용(응답문에 포함은 되나, API 사용 시 무시)
        "verification": [
            {
                "javascriptresource": {
                    "apiframework": "omid",
                    "url": "https://s3-us-west-2.amazonaws.com/omsdk-files/compliance-js/omid-validation-verification-script-v1.js"
                },
                "vendor": "iabtechlab.com-omid",
                "verificationparameters": "iabtechlab-mezzomedia"
            }
        ]
    }
}
```

## 코드 정의

### **광고코드**

<table><thead><tr><th width="157">필드</th><th width="185.79998779296875">코드</th><th>설명</th></tr></thead><tbody><tr><td>product_attr</td><td>1<br>2<br>4<br>6<br>7<br>8<br>10<br>12</td><td>띠배너<br>전면/종료배너<br>동영상<br>정사각형 및 직사각형<br>스카이스크래퍼<br>리더보드<br>Native<br>Splash</td></tr><tr><td>product_no</td><td>112<br>111<br>110<br>109<br>108<br>107<br>106<br>101<br>100<br>98<br>97<br>96<br>93<br>92<br>91<br>90<br>89<br>88<br>87<br>86<br>85<br>84<br>83<br>82<br>81<br>79<br>78<br>77<br>76<br>75<br>73<br>71<br>70<br>69<br>68<br>67<br>65<br>64<br>63<br>62<br>61<br>60<br>55<br>54<br>52<br>51<br>49<br>48<br>47<br>45<br>44<br>41<br>40<br>39<br>38<br>37<br>36<br>35<br>34<br>33<br>32<br>31<br>30<br>19<br>14<br>10<br>9<br>4<br>1</td><td>카카오 비즈보드<br>세로 전면동영상<br>직사각형_스플래시_300x250<br>동영상_CTV_60<br>동영상_CTV_30<br>비즈보드_1029x258<br>세로 동영상(PlanB)<br>배너_720*1280<br>스플래시<br>디데이_카운트다운_배너_320x50<br>디데이_카운트다운_배너_320x100<br>디데이_카운트다운_전면배너_640x960<br>세로 범퍼 동영상<br>카운트다운_배너_320x50<br>카운트다운_배너_320x100<br>카운트다운_전면배너_640x960<br>Native_외부판매용(CPM)_640x960_이미지<br>Native_외부판매용(CPM)_300x250_이미지<br>Native_외부판매용(CPM)_320x50_이미지<br>저단가판매용(CPC)_300x250<br>저단가판매용(CPC)_640x960<br>저단가판매용(CPC)_320x100<br>저단가판매용(CPC)_320x50<br>Native_직사각형_동영상<br>Native_직사각형_이미지<br>외부판매용(CPM)_300x250<br>외부판매용(CPM)_640x960<br>외부판매용(CPM)_320x100<br>외부판매용(CPM)_320x50<br>동영상(PlanB)<br>TVING 동영상<br>Native_띠배너_동영상<br>Native_띠배너_이미지<br>Native_전면배너_동영상<br>Native_전면배너_이미지<br>Native_assets<br>app promo video(동영상)<br>interstitial video(동영상,설명)<br>Image C(이미지,타이틀,CTA)<br>Image B(이미지,타이틀)<br>Image A(이미지)<br>App Promo Icon(아이콘,타이틀)<br>빌보드_970x250<br>큰리더보드_970x90<br>리더보드배너_728x90<br>리더보드배너_468x60<br>반페이지광고_300x600<br>와이드스카이스크래퍼_160x600<br>스카이스크래퍼_120x600<br>큰직사각형_336x280<br>인라인직사각형_300x250<br>사각형_250x250<br>작은정사각형_200x200<br>전면배너_768x1024<br>전면배너_1024x768<br>전면배너_480x320<br>전면배너_320x480<br>띠배너_728x90<br>띠배너_468x60<br>띠배너_300x50<br>세로 동영상<br>범퍼 동영상<br>전면동영상<br>종료배너_640x960<br>전면배너_640x960<br>CJ EnM 동영상<br>띠배너_320x100<br>동영상<br>띠배너_320x50</td></tr><tr><td>network_type</td><td><a href="#network_type-code"><code>network_index</code></a> <br>코드정의를 참고하세요.</td><td>네트워크 타입</td></tr><tr><td>orientation</td><td>1<br>2</td><td>세로<br>가로</td></tr><tr><td>mcc / mnc</td><td>USIM 국가/통신사 코드</td><td>USIM 국가/통신사 코드</td></tr><tr><td>os_type</td><td><p>1</p><p>2<br>3</p></td><td><p>PC</p><p>iOS<br>Android</p></td></tr><tr><td>gender</td><td>2<br>3</td><td>남성<br>여성</td></tr><tr><td>ad_type</td><td>1<br>2<br>3<br>4<br>5<br>6</td><td>보장형<br>경매형<br>비과금<br>하우스<br>리워드<br>기간제</td></tr></tbody></table>

### **Network\_type code**

| Code                                  | Android                       | iOS |
| ------------------------------------- | ----------------------------- | --- |
| Unknown                               | 0                             | 0   |
| Internet                              | 1                             | 1   |
| WIFI                                  | 2                             | 2   |
| Cellular Network - 2G                 | 4, 7, 11                      | 4   |
| Cellular Network - 3G                 | 3, 5, 6, 8, 9, 10, 12, 14, 15 | 5   |
| Cellular Network - 4G                 | 13                            | 6   |
| Cellular Network - 5G                 | 20                            | 7   |
| Cellular Network - Unknown Generation | 0                             | 3   |


# 비디오(VAST 참고)

Targetpick Video 광고 적용을 위한 API 가이드 입니다.

{% hint style="info" %}
파라미터 필수 구분

* MUST: 거래 상 반드시 추가되어야 하는 필수 값으로 제외 시 응답하지 않을 수 있음
* SHOULD: 필수(MUST)는 아니지만 추천하는 값으로 응답률 상승에 도움줄 수 있음
* MAY: 선택 값
  {% endhint %}

## RESPONSE

### **VAST Info**

{% hint style="info" %}
&#x20;JSON 형식의 응답 객체입니다.
{% endhint %}

<table><thead><tr><th width="160">필드</th><th width="167">유형</th><th width="89">필수</th><th>설명</th></tr></thead><tbody><tr><td>version</td><td>string</td><td>MAY</td><td><p>3.0: VAST 3.0 </p><p>4.1: VAST 4.1</p></td></tr><tr><td>Ad</td><td>element array</td><td>MAY</td><td><a href="#a-d"><code>ad</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **Ad**

<table><thead><tr><th width="187">필드</th><th width="125">유형</th><th width="80">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MAY</td><td>애즈그룹 번호</td></tr><tr><td>sequence</td><td>string</td><td>MAY</td><td>애즈그룹 시퀀스 번호</td></tr><tr><td>InLine</td><td>element</td><td>MUST</td><td><a href="#inline"><code>InLine</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **InLine**

<table><thead><tr><th width="157">필드</th><th width="141">유형</th><th width="103">필수</th><th>설명</th></tr></thead><tbody><tr><td>AdSystem</td><td>element</td><td>MAY</td><td><a href="#a-dsystem"><code>adsystem</code></a> 객체를 참고하십시오.</td></tr><tr><td>AdTitle</td><td>element</td><td>MAY</td><td>애즈그룹명</td></tr><tr><td>AdServingId</td><td>element</td><td>MAY</td><td>광고 고유 키값 (VAST 4.1 Only)</td></tr><tr><td>Extensions</td><td>element</td><td>MAY</td><td><a href="#extensions"><code>Extensions</code></a> 객체를 참고하십시오.</td></tr><tr><td>error</td><td>element</td><td>SHOULD</td><td>Player 에러 발생시 트래킹 API</td></tr><tr><td>impression</td><td>element</td><td>MUST</td><td>동영상 시작시 트래킹 API</td></tr><tr><td>Creatives</td><td>element array</td><td>MUST</td><td><a href="#creatives"><code>creatives</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **Adsystem**

| 필드      | 유형     | 필수  | 설명                |
| ------- | ------ | --- | ----------------- |
| version | string | MAY | 2: TARGETPICK 2.0 |

### **Extensions**

<table><thead><tr><th width="173">필드</th><th width="92">유형</th><th width="114">필수</th><th>설명</th></tr></thead><tbody><tr><td>requestid</td><td>element</td><td>MAY</td><td>광고 요청 고유 코드</td></tr><tr><td>logo_img_path</td><td>element</td><td>SHOULD</td><td>Opt in/out에 사용될 이미지</td></tr><tr><td>logo_landing_url</td><td>element</td><td>SHOULD</td><td><p>logo_img_path를 클릭했을때 이동할 경로<br>[adid]를 아래 아이디로 치환</p><ul><li>Android: Google AdvertiseID</li><li>iOS: IDFA</li><li>web: 빈값</li></ul></td></tr></tbody></table>

### **Creatives**

<table><thead><tr><th width="173">필드</th><th width="109">유형</th><th width="87">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MAY</td><td>애즈 번호</td></tr><tr><td>sequence</td><td>string</td><td>MAY</td><td>애즈 시퀀스 번호</td></tr><tr><td>UniversalAdId</td><td>string</td><td>MAY</td><td>광고소재 고유 번호 (VAST 4.1 Only)</td></tr><tr><td>Linear</td><td>element</td><td>MUST</td><td><a href="#linear"><code>Linear</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **Linear**

<table><thead><tr><th width="170">필드</th><th width="140">유형</th><th width="86">필수</th><th>설명</th></tr></thead><tbody><tr><td>skipoffset</td><td>string</td><td>MUST</td><td>동영상 스킵 시작 시간 (00:00:00)</td></tr><tr><td>Duration</td><td>string</td><td>MAY</td><td>동영상 재생 시간 (00:00:00)</td></tr><tr><td>TrackingEvents</td><td>element array</td><td>MUST</td><td><a href="#trackingevents"><code>TrackingEvents</code></a> 객체를 참고하십시오.</td></tr><tr><td>VideoClicks</td><td>element</td><td>MUST</td><td><a href="#videoclicks"><code>VideoClicks</code></a> 객체를 참고하십시오.</td></tr><tr><td>MediaFiles</td><td>element array</td><td>MUST</td><td><a href="#mediafiles"><code>MediaFiles</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **Trackingevents**

<table><thead><tr><th width="208">필드</th><th width="93">유형</th><th width="80">필수</th><th>설명</th></tr></thead><tbody><tr><td>event :: [start]</td><td>element</td><td>MUST</td><td>동영상 0% 재생 트래킹 API 전달</td></tr><tr><td>event :: [firstQuartile]</td><td>element</td><td>MUST</td><td>동영상 25% 재생 트래킹 API 전달</td></tr><tr><td>event :: [midpoint]</td><td>element</td><td>MUST</td><td>동영상 50% 재생 트래킹 API 전달</td></tr><tr><td>event :: [thirdQuartile]</td><td>element</td><td>MUST</td><td>동영상 75% 재생 트래킹 API 전달</td></tr><tr><td>event :: [complete]</td><td>element</td><td>MUST</td><td>동영상 100% 재생 트래킹 API 전달</td></tr><tr><td>event :: [skip]</td><td>element</td><td>MUST</td><td>동영상 스킵 트래킹 API<br>해당 필드 미 존재시 스킵 불가</td></tr><tr><td>event :: [progress]</td><td>element</td><td>MUST</td><td><p>동영상 구간 트래킹 API 전달 (offset시간에 전달)</p><ul><li>(00:00:05): 과금시간</li><li>(00:00:15): 시청완료시간</li></ul></td></tr></tbody></table>

{% hint style="info" %}
(이벤트 값과 offset 값이 같은) 동일한 이벤트에 서로 다른 트래킹 URL 을 지정할 수 있습니다.
{% endhint %}

### **Videoclicks**

<table><thead><tr><th width="148">필드</th><th width="102">유형</th><th width="101">필수</th><th>설명</th></tr></thead><tbody><tr><td>clickthrough</td><td>element</td><td>MUST</td><td>clicktracking 미존재시 - 광고 클릭 API<br>clicktracking 존재시 - 광고주 랜딩 정보<br>트래킹 후 광고주 페이지로 리다이렉트</td></tr><tr><td>clicktracking</td><td>element</td><td>MUST</td><td>광고 클릭 트래킹 API<br>clickthrough정보를 이용하여 광고주 페이지로 리다이렉트</td></tr><tr><td>offset</td><td>element</td><td>SHOULD</td><td>지정된 시간 기준으로부터 광고 클릭이 가능 (00:00:00)</td></tr></tbody></table>

### **Mediafiles**

<table><thead><tr><th width="151">필드</th><th width="107">유형</th><th width="81">필수</th><th>설명</th></tr></thead><tbody><tr><td>delivery</td><td>string</td><td>MAY</td><td>동영상 소재 재생 방식 (progressive)</td></tr><tr><td>type</td><td>string</td><td>MAY</td><td>동영상 소재 타입 (video/mp4)</td></tr><tr><td>width</td><td>string</td><td>MAY</td><td>동영상 소재 넓이</td></tr><tr><td>height</td><td>string</td><td>MAY</td><td>동영상 소재 높이</td></tr><tr><td>bitrate</td><td>string</td><td>MAY</td><td>동영상 소재 비트레이트</td></tr><tr><td>mediafile_src</td><td>element</td><td>MUST</td><td>동영상 소재 URL</td></tr></tbody></table>

{% hint style="info" %}
동영상 엔드카드 추가 (동영상 재생 후 HTMLResource/StaticResource 응답 값으로 영상위에 소재 노출 ) [VAST3.0/VAST 4.1](https://iabtechlab.com/wp-content/uploads/2018/11/VAST4.1-final-Nov-8-2018.pdf) 규격을 따릅니다.
{% endhint %}

### **Creatives**

<table><thead><tr><th width="201">필드</th><th width="122">유형</th><th width="82">필수</th><th>설명</th></tr></thead><tbody><tr><td>id</td><td>string</td><td>MAY</td><td>애즈 번호</td></tr><tr><td>sequence</td><td>string</td><td>MAY</td><td>애즈 시퀀스 번호</td></tr><tr><td>UniversalAdId</td><td>string</td><td>MAY</td><td>광고소재 고유 번호 (VAST 4.1)</td></tr><tr><td>CompanionAds</td><td>element</td><td>MUST</td><td><a href="#companionads"><code>CompanionAds</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **CompanionAds**

<table><thead><tr><th width="230">필드</th><th width="97">유형</th><th width="83">필수</th><th>설명</th></tr></thead><tbody><tr><td>width</td><td>string</td><td>MAY</td><td>엔드카드 가로사이즈</td></tr><tr><td>height</td><td>string</td><td>MAY</td><td>엔드카드 세로사이즈</td></tr><tr><td>view_time</td><td>string</td><td>MUST</td><td>엔드카드 노출 시간 (00:00:00)</td></tr><tr><td>HTMLResource</td><td>element</td><td>MUST</td><td>엔드카드 HTML 소재 (html 태그 응답)</td></tr><tr><td>StaticResource</td><td>element</td><td>MUST</td><td>엔드카드 이미지 소재 URL <a href="#staticresource"><code>StaticResource</code></a> 객체를 참고하십시오.</td></tr><tr><td>TrackingEvents</td><td>element</td><td>MUST</td><td><a href="#trackingevents-1"><code>TrackingEvents</code></a> 객체를 참고하십시오.</td></tr><tr><td>CompanionClickThrough</td><td>element</td><td>MUST</td><td><a href="#companionclickthrough"><code>CompanionClickThrough</code></a> 객체를 참고하십시오.</td></tr></tbody></table>

### **StaticResource**

<table><thead><tr><th width="144">필드</th><th width="94">유형</th><th width="82">필수</th><th>설명</th></tr></thead><tbody><tr><td>creativeType</td><td>string</td><td>MAY</td><td>소재 타입 (예: image/png)</td></tr></tbody></table>

### **TrackingEvents**

<table><thead><tr><th width="211">필드</th><th width="101">유형</th><th width="80">필수</th><th>설명</th></tr></thead><tbody><tr><td>event :: [creativeView]</td><td>element</td><td>MUST</td><td>엔드카드 소재 노출 트래킹 API 전달</td></tr></tbody></table>

### **CompanionClickThrough**

<table><thead><tr><th width="231">필드</th><th width="102">유형</th><th width="85">필수</th><th>설명</th></tr></thead><tbody><tr><td>CompanionClickThrough</td><td>element</td><td>MUST</td><td>엔드카드 클릭 트래킹 API<br>CompanionClickThrough정보를 이용하여 광고주 페이지로 리다이렉트</td></tr></tbody></table>

### **response 예제 (XML)**

```xml
<?xml version="1.0" encoding="UTF-8"?><VAST version="4.1"><Ad id="50379" sequence="1">
	<InLine>
		<AdSystem version="2">MAN</AdSystem>
		<AdTitle><![CDATA[20160325_MEBA_동영상테스트_소재有]]></AdTitle>
		<AdServingId><![CDATA[886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN]]></AdServingId>
		<Extensions>
			<Extension>
				<requestID><![CDATA[-]]></requestID>
			</Extension>
		</Extensions>
		<Error>
			<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=error_vast&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=&d_err=[ERRORCODE]]]]>
		</Error>
		<Impression id="man_server">
			<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=imps_tracking&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
		</Impression>
		<Creatives>
			<Creative id="76697" sequence="1">
			    <UniversalAdId idRegistry="mezzomedia">54621</UniversalAdId>
				<Linear skipoffset="00:00:05">
					<Duration>00:00:17</Duration>
					<TrackingEvents>
						<Tracking event="start">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q1&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="firstQuartile">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q2&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="midpoint">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q3&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="thirdQuartile">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q4&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="complete">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q5&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="skip">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_skip&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="progress" offset="00:00:05">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=imps_video_tracking&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="progress" offset="00:00:15">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_view&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
					</TrackingEvents>
					<VideoClicks>
						<ClickThrough>
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=click&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</ClickThrough>
						<ClickTracking>
						</ClickTracking>
						<Offset>00:00:05</Offset>
					</VideoClicks>
					<MediaFiles>
						<MediaFile delivery="progressive" type="video/mp4" width="480" height="270" bitrate="350">
							<![CDATA[http://211.62.152.216:3400/vod.mezzo/?e_version=2&e_request_type=vod&i_video_name=20170829105216&d_r=1&i_rs_t=2&d_p1=1&a_publisher=100&a_media=200&a_section=802998&d_p2=1]]>
						</MediaFile>
					</MediaFiles>
				</Linear>
			</Creative>
		</Creatives>
	</InLine>
</Ad>
</VAST>
```

### **response 예제 - 동영상 엔드카드 HTML (XML)**

```xml
<?xml version="1.0" encoding="UTF-8"?><VAST version="4.1"><Ad id="50379" sequence="1">
	<InLine>
		<AdSystem version="2">MAN</AdSystem>
		<AdTitle><![CDATA[20160325_MEBA_동영상테스트_소재有]]></AdTitle>
		<AdServingId><![CDATA[886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN]]></AdServingId>
		<Extensions>
			<Extension>
				<requestID><![CDATA[-]]></requestID>
			</Extension>
		</Extensions>
		<Error>
			<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=error_vast&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=&d_err=[ERRORCODE]]]]>
		</Error>
		<Impression id="man_server">
			<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=imps_tracking&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
		</Impression>
		<Creatives>
			<Creative id="76697" sequence="1">
			    <UniversalAdId idRegistry="mezzomedia">54621</UniversalAdId>
				<Linear skipoffset="00:00:05">
					<Duration>00:00:17</Duration>
					<TrackingEvents>
						<Tracking event="start">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q1&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="firstQuartile">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q2&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="midpoint">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q3&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="thirdQuartile">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q4&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="complete">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_q5&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="skip">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_skip&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="progress" offset="00:00:05">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=imps_video_tracking&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
						<Tracking event="progress" offset="00:00:15">
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=track_vast_view&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</Tracking>
					</TrackingEvents>
					<VideoClicks>
						<ClickThrough>
							<![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=click&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
						</ClickThrough>
						<ClickTracking>
						</ClickTracking>
						<Offset>00:00:05</Offset>
					</VideoClicks>
					<MediaFiles>
						<MediaFile delivery="progressive" type="video/mp4" width="480" height="270" bitrate="350">
							<![CDATA[http://211.62.152.216:3400/vod.mezzo/?e_version=2&e_request_type=vod&i_video_name=20170829105216&d_r=1&i_rs_t=2&d_p1=1&a_publisher=100&a_media=200&a_section=802998&d_p2=1]]>
						</MediaFile>
					</MediaFiles>
				</Linear>
			</Creative>
      <Creative id="111" sequence="1">
          <UniversalAdId idRegistry="mezzomedia">1234</UniversalAdId>
          <CompanionAds>
            <Companion width="1024" height="768" view_time="00:00:06"> 
                  <HTMLResource>
              <![CDATA[<html><head><meta name='viewport' content='width=device-width, height=device-height'><title></title><style>img {max-width: 100%; max-height: 100%;}#mezzo_center_div_layout { position:absolute; top:50%; left:50%; transform:translate(-50%, -50%)}</style></head><body style='margin:0px;margin:0px;background-color:#ffffff'><script charset='utf-8' type='text/javascript'>{new Image().src='http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=endcard_imps&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=';}var mezzoClickApi='http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=endcard_click&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=';function iframeOnload(){var iframe = document.getElementById('mezzo_ad_iframe').contentWindow;iframe.postMessage({ mezzoclickapi : mezzoClickApi }, '*');};</script><script src='http://211.62.152.216:3400/advimg.ad-mapps.com/sdk/js/ver/200/mraid.js'></script><div id='mezzo_center_div_layout' style='width:100%; height:100%;'><iframe id='mezzo_ad_iframe' frameborder='0' onload='iframeOnload()' src='http://advimg.ad-mapps.com/ad_images/40a2c28273929d4c0e4a81a5c385c8e0.png' width='100%' height='100%' marginwidth='0' marginheight='0' scrolling='no'></div></body></html>]]>
              </HTMLResource>
              <TrackingEvents>
                  <Tracking event="creativeView"><![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=endcard_imps&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]></Tracking>
              </TrackingEvents>
              <CompanionClickThrough>
                  <![CDATA[http://211.62.152.216:3400/ad_tracking.mezzo/?e_request_type=endcard_click&e_version=2&e_cmp_no=224&e_ad_group_no=50379&e_ad_no=76697&a_publisher=100&a_media=200&a_section=802998&i_platform=-1&i_request_id=-&i_request_key=886c8351-e805-447a-b149-b28d1df8976b$1931707652$ESFSVVWN&i_response_format=xml&i_product_type=2&i_product_attr=4&i_product=4&i_banner_w=-1&i_banner_h=-1&d_adid=-&d_sadid=59d1dca2-e5dc-4b0a-8e12-b7b37bde0bad&d_geo_lat=0.000000&d_geo_lon=0.000000&d_screen=3&d_maker=-&d_model=-&d_network_index=-1&d_network=-&d_carrier=-&d_os_index=-1&d_os=-&d_osv=-&d_w=-1&d_h=-1&d_densty=-1&d_orientation=-1&d_language=-&d_sdk_v=-1&d_mcc=-1&d_mnc=-1&u_age=-1&u_gender=-1&e_target_type=0&e_bp=0&m_vcode=&i_video_category=-&i_video_w=&i_video_h=&e_adm_p_flag=-1&e_adm_r_flag=-1&od_flag=-1&od_cmp=-&od_wintime=0&od_price=0&d_app_id=-&d_app_ver=-&u_ml_id=-&m2_ml_email=-&i_video_enm_poc=0&e_landing_url=]]>
              </CompanionClickThrough>
            </Companion>
          </CompanionAds>
      </Creative>      
		</Creatives>
	</InLine>
</Ad>
</VAST>
```


# Report API

광고 집행 결과 또는 매체에서 발생한 광고 데이터를 제공하는 API 입니다.


# 광고주

캠페인을 집행한 광고주용 API 입니다. 담당자를 통해 광고주 계정과 API Key를 발급해주세요.

{% hint style="info" %}
도메인 및 API Key는 별도로 제공됩니다.

캠페인 집행 담당자에게 문의해주세요.
{% endhint %}

## **리스트 타입**

| 리스트명     | ListType |
| -------- | -------- |
| 캠페인 리스트  | C        |
| 광고그룹 리스트 | AG       |
| 광고물 리스트  | AD       |

## **에러코드**

<table><thead><tr><th width="261">코드</th><th>설명</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

## **전체 캠페인 목록**

### **Request URL**

| URL                                  | Method |
| ------------------------------------ | ------ |
| /S-Plus\_api/getCampaignListAll.xml  | Get    |
| /S-Plus\_api/getCampaignListAll.json | Get    |

### **Request Parameters**

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | adver    | 권한        |
| sDate      | Integer | Y   | 20160101 | 캠페인 시작 일자 |
| eDate      | Integer | Y   | 20160131 | 캠페인 종료 일자 |

### **Response Fields**

<table><thead><tr><th width="259">이름</th><th width="116">타입</th><th width="164">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AllCam_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>AllCampaigns.AllCampaign</td><td> </td><td> </td><td> </td></tr><tr><td>AllCam_No</td><td>Integer</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AllCam_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AllCam_Name</td><td>String</td><td>메조_테스트캠페인</td><td>캠페인명</td></tr><tr><td>AllCam_sDate</td><td>String</td><td>2016-01-01 00:00</td><td>캠페인 시작일</td></tr><tr><td>AllCam_eDate</td><td>String</td><td>2016-01-01 00:00</td><td>캠페인 종료일</td></tr><tr><td>AllCam_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>AllCam_ImpP</td><td>Integer</td><td>1000</td><td>노출+</td></tr><tr><td>AllCam_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>AllCam_CTR</td><td>Integer</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AllCam_CTRP</td><td>Integer</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AllCam_CV</td><td>Integer</td><td>1000</td><td>전환 수</td></tr><tr><td>AllCam_CVR</td><td>Integer</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<message>
     <error>
           <code>000</code>
           <message>성공</message>
     </error>
        <result>
                <AllCamCount>10</AllCamCount> 
                <AllCampaigns>
                        <AllCampain>
                                <AllCam_No>1234</AllCam_No>
                                <AllCam_Status>1</AllCam_Status>
                                <AllCam_Name>메조_테스트캠페인</AllCam_Name>
                                <AllCam_sDate> 2016-01-01 00:00</AllCam_sDate>
                                <AllCam_eDate> 2016-01-01 00:00 </AllCam_eDate>
                                <AllCam_Imp> 1000 </AllCam_Imp>
                                <AllCam_ImpP> 1000 </AllCam_ImpP>
                                <AllCam_Click> 1000 </AllCam_Click>
                                <AllCam_CTR> 1000 </AllCam_CTR>
                                <AllCam_CTRP> 1000 </AllCam_CTRP>
                                <AllCam_CV> 1000 </AllCam_CV>
                                <AllCam_CVR> 1000 </AllCam_CVR>
                        </AllCampain>
                        <AllCampain>
                            ……
                        </AllCampain>
                </AllCampaigns>
        </result>
</message>
```

{% endcode %}

## **캠페인 목록**

### **Request URL**

| URL                               | Method |
| --------------------------------- | ------ |
| /S-Plus\_api/getCampaignList.xml  | Get    |
| /S-Plus\_api/getCampaignList.json | Get    |

### **Request Parameters**

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | adver    | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 캠페인 시작 일자 |
| eDate      | Integer | Y   | 20160131 | 캠페인 종료 일자 |

### **Response Fields**

<table><thead><tr><th width="215">이름</th><th width="113">타입</th><th>코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>Cam_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>Cam_Name</td><td>String</td><td>메조_테스트캠페인</td><td>캠페인명</td></tr><tr><td>CamInfo_Goal</td><td>Integer</td><td>100</td><td>캠페인 목표량</td></tr><tr><td>CamInfo_sDate</td><td>Integer</td><td>2016-01-01 0:00</td><td>캠페인 시작일</td></tr><tr><td>CamInfo_eDate</td><td>String</td><td>2016-01-01 0:00</td><td>캠페인 종료일</td></tr><tr><td>CamInfo_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>CamInfo_tBudjet</td><td>Integer</td><td>10000000</td><td>캠페인 총 예산</td></tr><tr><td>CamInfo_Brand</td><td>String</td><td>메조몰</td><td>캠페인 브랜드</td></tr><tr><td>CamInfo_Category</td><td>String</td><td>유통/유통기타</td><td>캠페인 카테고리</td></tr><tr><td>CamInfo_Agency</td><td>String</td><td>제일기획</td><td>캠페인 대행사</td></tr><tr><td>CamInfo_Agency2</td><td>String</td><td>이노션</td><td>캠페인 대대행사</td></tr><tr><td>CamInfo_Rep</td><td>String</td><td>메조미디어</td><td>캠페인 렙사</td></tr><tr><td>Campaigns.Campaign</td><td> </td><td> </td><td> </td></tr><tr><td>Cam_Daily</td><td>String</td><td>2016-01-01</td><td>일자</td></tr><tr><td>Cam_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>Cam_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>Cam_CTR</td><td>Integer</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>Cam_CPC</td><td>Integer</td><td>1000</td><td>CPC 단가</td></tr><tr><td>Cam_CPM</td><td>Integer</td><td>1000</td><td>CPM 단가</td></tr><tr><td>Cam_CPV</td><td>Integer</td><td>1000</td><td>CPV 단가</td></tr></tbody></table>

### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<message>
     <error>
           <code>000</code>
           <message>성공</message>
     </error>
        <result>
                <Cam_Count>10</Cam_Count> 
                <Cam_Name>메조미디어 캠페인</Cam_Name> 
                <CamInfo_sDate>2016-06-01</CamInfo_sDate> 
                <CamInfo_eDate>2016-06-31</CamInfo_eDate> 
                <CamInfo_Status>1</CamInfo_Status> 
                <CamInfo_tBudjet>10000</CamInfo_tBudjet> 
                <CamInfo_Brand>메조브랜드</CamInfo_Brand> 
                <CamInfo_Category>가정용품/주방용품</CamInfo_Category> 
                <CamInfo_Agency>제일기획</CamInfo_Agency> 
                <CamInfo_Agency2>이노션</CamInfo_Agency2> 
                <CamInfo_Rep>메조미디어</CamInfo_Rep> 
                <AllCampaigns>
                        <AllCampain>
                                <AllCam_No>1234</AllCam_No>
                                <AllCam_Status>1</AllCam_Status>
                                <AllCam_Name>메조_테스트캠페인</AllCam_Name>
                                <AllCam_sDate> 2016-01-01 00:00</AllCam_sDate>
                                <AllCam_eDate> 2016-01-01 00:00 </AllCam_eDate>
                                <AllCam_Imp> 1000 </AllCam_Imp>
                                <AllCam_ImpP> 1000 </AllCam_ImpP>
                                <AllCam_Click> 1000 </AllCam_Click>
                                <AllCam_CTR> 1000 </AllCam_CTR>
                                <AllCam_CTRP> 1000 </AllCam_CTRP>
                                <AllCam_CV> 1000 </AllCam_CV>
                                <AllCam_CVR> 1000 </AllCam_CVR>
                        </AllCampain>
                        <AllCampain>
                            ……
                        </AllCampain>
                </AllCampaigns>
        </result>
</message>
```

{% endcode %}

## **광고 그룹 목록**

### **Request URL**

| URL                              | Method |
| -------------------------------- | ------ |
| /S-Plus\_api/getADGroupList.xml  | Get    |
| /S-Plus\_api/getADGroupList.json | Get    |

### **Request Parameters**

#### **Main Request**

캠페인 목록 API를 통해 반환된 Cam\_No를 이용하여 해당 캠페인 하위에 포함되어 있는 광고그룹 목록을 요청합니다.

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | adver    | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 기간 조회 시작일 |
| eDate      | String  | Y   | 20160130 | 기간 조회 종료일 |
| AGP        | Integer | N   | 00001    | 광고그룹 목록 수 |

#### **Sub Request**

Main Request를 통해 반환된 AG\_No와 AG\_Product\_Type을 이용하여 해당 광고그룹의 상세 리포트를 요청합니다.

<table><thead><tr><th width="187">이름</th><th width="115">타입</th><th width="102">기본값</th><th width="127">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>adver</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20250101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20250130</td><td>기간 조회 종료일</td></tr><tr><td>Cam_No</td><td>Integer</td><td>Y</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AG_No</td><td>Integer</td><td>Y</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AG_Product_Type</td><td>String</td><td>Y</td><td>banner</td><td>banner, movie, native</td></tr></tbody></table>

### **Response Fields**

#### **Main Response**

<table><thead><tr><th width="198">이름</th><th width="105">타입</th><th>코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AG_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADGroups.ADGroup</td><td> </td><td> </td><td> </td></tr><tr><td>AG_No</td><td>Integer</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AG_Name</td><td>String</td><td>메조_테스트_띠배너</td><td>광고그룹명</td></tr><tr><td>AG_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AG_Product_Type</td><td>String</td><td>Banner</td><td>banner, movie, native</td></tr><tr><td>AG_Product</td><td>String</td><td>배너_320X50</td><td>광고상품명</td></tr><tr><td>AG_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AG_ImpP</td><td>String</td><td>1000</td><td>노출+</td></tr><tr><td>AG_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AG_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AG_CTRP</td><td>String</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AG_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AG_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

#### **Sub Response**

AG\_Product\_Type 이 banner 일 경우

<table><thead><tr><th width="315">이름</th><th width="94">타입</th><th width="165">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AG_Sub_B_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADGroups_Sub_B.ADGroup_Sub_B</td><td> </td><td> </td><td> </td></tr><tr><td>Cam_No</td><td>Integer</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AG_No</td><td>Integer</td><td>12345</td><td>광고그룹ID</td></tr><tr><td>AG_Sub_Date</td><td>String</td><td>2016-01-01 00:00</td><td>일자</td></tr><tr><td>AG_Sub_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AG_Sub_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AG_Sub_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AG_Sub_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AG_Sub_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

AG\_Product\_Type 이 movie 일 경우

| 이름                               | 타입      | 코드 예시            | 설명               |
| -------------------------------- | ------- | ---------------- | ---------------- |
| AG\_Sub\_M\_Count                | Integer | 100              | 반환되는 리스트 행 수     |
| ADGroups\_Sub\_M.ADGroup\_Sub\_M |         |                  |                  |
| Cam\_No                          | Integer | 12345            | 캠페인ID            |
| AG\_No                           | Integer | 12345            | 광고그룹ID           |
| AG\_Sub\_Date                    | String  | 2016-01-01 00:00 | 일자               |
| AG\_Sub\_Imp                     | Integer | 1000             | 노출               |
| AG\_Sub\_ImpP                    | Integer | 1000             | 노출+              |
| AG\_Sub\_View                    | Integer | 1000             | 시청               |
| AG\_Sub\_Click                   | Integer | 1000             | 클릭               |
| AG\_Sub\_CTR                     | Integer | 1000             | 노출 대비 클릭         |
| AG\_Sub\_CTRP                    | Integer | 1000             | 노출+(15초) 대비 클릭   |
| AG\_Sub\_VTR                     | Integer | 1000             | 노출당 시청 비율        |
| AG\_Sub\_VTRP                    | Integer | 1000             | 노출+(15초)당 시청 비율  |
| AG\_Sub\_CVTR                    | Integer | 1000             | 노출당 재생+클릭        |
| AG\_Sub\_CVTRP                   | Integer | 1000             | 노출+(15초)당 재생+클릭  |
| AG\_Sub\_Start                   | Integer | 1000             | 동영상 시작시 노출 수     |
| AG\_Sub\_1Q                      | Integer | 1000             | 동영상 25% 재생시 노출 수 |
| AG\_Sub\_2Q                      | Integer | 1000             | 동영상 50% 재생시 노출 수 |
| AG\_Sub\_3Q                      | Integer | 1000             | 동영상 75% 재생시 노출 수 |
| AG\_Sub\_Complete                | Integer | 1000             | 동영상 재생 종료시 노출 수  |
| AG\_Sub\_CV                      | String  | 1000             | 전환 수             |
| AG\_Sub\_CVR                     | String  | 1000             | 클릭 대비 전환율(%)     |

### **Response Sample**

#### **Main Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Count>10</AG_Count>
        <ADGroups>
            <ADGroup>
                <AG_No>1234</AG_No>
                <AG_Name>메조_테스트_띠배너</AG_Name>
                <AG_Status>1</AG_Status>
                <AG_Product_Type>banner</AG_Product_Type>
                <AG_Product>배너_320X50</AG_Product>
                <AG_Imp>1000</AG_Imp>
                <AG_ImpP>1000</AG_ImpP>
                <AG_Click>1000</AG_Click>
                <AG_CTR>1000</AG_CTR>
                <AG_CTRP>1000</AG_CTRP>
                <AG_CV>1000</AG_CV>
                <AG_CVR>1000</AG_CVR>
            </ADGroup>
            <ADGroup>
                ……
            </ADGroup>
        </ADGroups>
    </result>
</message>
```

{% endcode %}

#### **Sub Response Sample**

AG\_Product\_Type 이 banner 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Sub_B_Count>10</AG_Sub_B_Count>
        <ADGroups_Sub_B>
            <ADGroup_Sub_B>
                <Cam_No>1234 </Cam_No>
                <AG_No>12345</AG_No>
                <AG_Sub_Date>2016-01-01 00:00</AG_Sub_Date>
                <AG_Sub_Imp>1000</AG_Sub_Imp>
                <AG_Sub_Click>1000</AG_Sub_Click>
                <AG_Sub_CTR>1000</AG_Sub_CTR>
                <AG_Sub_CV>1000</AG_Sub_CV>
                <AG_Sub_CVR>1000</AG_Sub_CVR>
            </ADGroup_Sub_B>
            <ADGroup_Sub_B>
                ……
            </ADGroup_Sub_B>
        </ADGroups_Sub_B>
    </result>
</message>
```

{% endcode %}

AG\_Product\_Type 이 movie 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Sub_M_Count>10</AG_Sub_M_Count>
        <ADGroups_Sub_M>
            <ADGroup_Sub_M>
                <Cam_No>1234</Cam_No>
                <AG_No>12345</AG_No>
                <AG_Sub_Date>2016-01-01 00:00</AG_Sub_Date>
                <AG_Sub_Imp>1000</AG_Sub_Imp>
                <AG_Sub_ImpP>1000</AG_Sub_ImpP>
                <AG_Sub_View>1000</AG_Sub_View>
                <AG_Sub_Click>1000</AG_Sub_Click>
                <AG_Sub_CTR>1000</AG_Sub_CTR>
                <AG_Sub_CTRP>1000</AG_Sub_CTRP>
                <AG_Sub_VTR>1000</AG_Sub_VTR>
                <AG_Sub_VTRP>1000</AG_Sub_VTRP>
                <AG_Sub_CVR>1000</AG_Sub_CVR>
                <AG_Sub_CVTR>1000</AG_Sub_CVTR>
                <AG_Sub_CVTRP>1000</AG_Sub_CVTRP>
                <AG_Sub_Start>1000</AG_Sub_Start>
                <AG_Sub_1Q>1000</AG_Sub_1Q>
                <AG_Sub_2Q>1000</AG_Sub_2Q>
                <AG_Sub_3Q>1000</AG_Sub_3Q>
                <AG_Sub_Complete>1000</AG_Sub_Complete>
            </ADGroup_Sub_M>
            <ADGroup_Sub_M>
                ……
            </ADGroup_Sub_M>
        </ADGroups_Sub_M>
    </result>
</message>
```

{% endcode %}

## **광고물 목록**

### **Request URL**

| URL                         | Method |
| --------------------------- | ------ |
| /S-Plus\_api/getADList.xml  | Get    |
| /S-Plus\_api/getADList.json | Get    |

### **Request Parameters**

#### **Main Request**

캠페인 목록 API를 통해 반환된 Cam\_No를 이용하여 해당 캠페인 하위에 포함되어 있는 광고그룹 목록을 요청합니다.

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | adver    | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 기간 조회 시작일 |
| eDate      | String  | Y   | 20160130 | 기간 조회 종료일 |
| ADP        | Integer | N   | 00001    | 광고그룹 목록 수 |

#### **Sub Request**

Main Request를 통해 반환된 AD\_No와 AD\_Product\_Type을 이용하여 해당 광고그룹의 상세 리포트를 요청합니다.

<table><thead><tr><th width="187">이름</th><th width="115">타입</th><th width="81">기본값</th><th width="127">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>XXXXXXX</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>Cam_No</td><td>Integer</td><td>Y</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AD_No</td><td>Integer</td><td>Y</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AD_Product_Type</td><td>String</td><td>Y</td><td>banner</td><td>banner, movie, native</td></tr></tbody></table>

### **Response Fields**

#### **Main Response**

<table><thead><tr><th width="190">이름</th><th width="90">타입</th><th width="252">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AD_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADs.AD</td><td> </td><td> </td><td> </td></tr><tr><td>AD_No</td><td>Integer</td><td>1</td><td>광고물  ID</td></tr><tr><td>AD_Name</td><td>String</td><td>메조_테스트_띠배너</td><td>광고물명</td></tr><tr><td>AD_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AD_Product_Type</td><td>String</td><td>Banner</td><td>banner, movie, native</td></tr><tr><td>AD_Product</td><td>String</td><td>배너_320X50</td><td>광고상품명</td></tr><tr><td>AD_imgURL</td><td>String</td><td>http://www.a.com/image.jpg</td><td>이미지 배너 소재 경로</td></tr><tr><td>AD_movieURL</td><td>String</td><td>http://www.a.com/movie.mp4</td><td>동영상 소재 경로</td></tr><tr><td>AD_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AD_ImpP</td><td>String</td><td>1000</td><td>노출+</td></tr><tr><td>AD_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AD_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AD_CTRP</td><td>String</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AD_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AD_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

#### **Sub Response**

AD\_Product\_Type 이 banner 일 경우

| 이름                     | 타입      | 코드 예시            | 설명           |
| ---------------------- | ------- | ---------------- | ------------ |
| AD\_Sub\_B\_Count      | Integer | 100              | 반환되는 리스트 행 수 |
| ADs\_Sub\_B.AD\_Sub\_B |         |                  |              |
| Cam\_No                | Integer | 12345            | 캠페인ID        |
| AD\_No                 | Integer | 12345            | 광고물 ID       |
| AD\_Sub\_Date          | String  | 2016-01-01 00:00 | 일자           |
| AD\_Sub\_Imp           | String  | 1000             | 노출           |
| AD\_Sub\_Click         | String  | 1000             | 클릭           |
| AD\_Sub\_CTR           | String  | 1000             | 노출 대비 클릭     |
| AD\_Sub\_CV            | String  | 1000             | 전환 수         |
| AD\_Sub\_CVR           | String  | 1000             | 클릭 대비 전환율(%) |

AD\_Product\_Type 이 movie 일 경우

| 이름                     | 타입      | 코드 예시            | 설명               |
| ---------------------- | ------- | ---------------- | ---------------- |
| AD\_Sub\_M\_Count      | Integer | 100              | 반환되는 리스트 행 수     |
| ADs\_Sub\_M.AD\_Sub\_M |         |                  |                  |
| Cam\_No                | Integer | 12345            | 캠페인ID            |
| AD\_No                 | Integer | 12345            | 광고물 ID           |
| AD\_Sub\_Date          | String  | 2016-01-01 00:00 | 일자               |
| AD\_Sub\_Imp           | Integer | 1000             | 노출               |
| AD\_Sub\_ImpP          | Integer | 1000             | 노출+              |
| AD\_Sub\_View          | Integer | 1000             | 시청               |
| AD\_Sub\_Click         | Integer | 1000             | 클릭               |
| AD\_Sub\_CTR           | Integer | 1000             | 노출 대비 클릭         |
| AD\_Sub\_CTRP          | Integer | 1000             | 노출+(15초) 대비 클릭   |
| AD\_Sub\_VTR           | Integer | 1000             | 노출당 시청 비율        |
| AD\_Sub\_VTRP          | Integer | 1000             | 노출+(15초)당 시청 비율  |
| AD\_Sub\_CVTR          | Integer | 1000             | 노출당 재생+클릭        |
| AD\_Sub\_CVTRP         | Integer | 1000             | 노출+(15초)당 재생+클릭  |
| AD\_Sub\_Start         | Integer | 1000             | 동영상 시작시 노출 수     |
| AD\_Sub\_1Q            | Integer | 1000             | 동영상 25% 재생시 노출 수 |
| AD\_Sub\_2Q            | Integer | 1000             | 동영상 50% 재생시 노출 수 |
| AD\_Sub\_3Q            | Integer | 1000             | 동영상 75% 재생시 노출 수 |
| AD\_Sub\_Complete      | Integer | 1000             | 동영상 재생 종료시 노출 수  |
| AD\_Sub\_CV            | String  | 1000             | 전환 수             |
| AD\_Sub\_CVR           | String  | 1000             | 클릭 대비 전환율(%)     |

### **Response Sample**

#### **Main Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Count>10</AD_Count>
        <ADs>
            <AD>
                <AD_No>1234</AD_No>
                <AD_Name>메조_테스트_띠배너</AD_Name>
                <AD_Status>1</AD_Status>
                <AD_Product_Type>banner</AD_Product_Type>
                <AD_Product>배너_320X50</AD_Product>
                <AD_imgURL>http://www.a.com/image.jpg</AD_imgURL>
                <AD_MovieURL>http://www.a.com/movie.mp4</AD_MovieURL>
                <AD_Imp>1000</AD_Imp>
                <AD_ImpP>1000</AD_ImpP>
                <AD_Click>1000</AD_Click>
                <AD_CTR>1000</AD_CTR>
                <AD_CTRP>1000</AD_CTRP>
                <AD_CV>1000</AD_CV>
                <AD_CVR>1000</AD_CVR>
            </AD>
            <AD>
                ……
            </AD>
        </ADs>
    </result>
</message>
```

{% endcode %}

#### **Sub Response Sample**

AG\_Product\_Type 이 banner 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Sub_B_Count>10</AD_Sub_B_Count>
        <ADs_Sub_B>
            <AD_Sub_B>
                <Cam_No>1234 </Cam_No>
                <AD_No>12345</AD_No>
                <AD_Sub_Date>2016-01-01 00:00</AD_Sub_Date>
                <AD_Sub_Imp>1000</AD_Sub_Imp>
                <AD_Sub_Click>1000</AD_Sub_Click>
                <AD_Sub_CTR>1000</AD_Sub_CTR>
                <AD_Sub_CV>1000</AD_Sub_CV>
                <AD_Sub_CVR>1000</AD_Sub_CVR>
            </AD_Sub_B>
            <AD_Sub_B>
                ……
            </AD_Sub_B>
        </ADs_Sub_B>
    </result>
</message>
```

{% endcode %}

AG\_Product\_Type이 movie 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Sub_M_Count>10</AD_Sub_M_Count>
        <ADs_Sub_M>
            <AD_Sub_M>
                <Cam_No>1234</Cam_No>
                <AD_No>12345</AD_No>
                <AD_Sub_Date>2016-01-01 00:00</AD_Sub_Date>
                <AD_Sub_Imp>1000</AD_Sub_Imp>
                <AD_Sub_ImpP>1000</AD_Sub_ImpP>
                <AD_Sub_View>1000</AD_Sub_View>
                <AD_Sub_Click>1000</AD_Sub_Click>
                <AD_Sub_CTR>1000</AD_Sub_CTR>
                <AD_Sub_CTRP>1000</AD_Sub_CTRP>
                <AD_Sub_VTR>1000</AD_Sub_VTR>
                <AD_Sub_VTRP>1000</AD_Sub_VTRP>
                <AD_Sub_CVR>1000</AD_Sub_CVR>
                <AD_Sub_CVTR>1000</AD_Sub_CVTR>
                <AD_Sub_CVTRP>1000</AD_Sub_CVTRP>
                <AD_Sub_Start>1000</AD_Sub_Start>
                <AD_Sub_1Q>1000</AD_Sub_1Q>
                <AD_Sub_2Q>1000</AD_Sub_2Q>
                <AD_Sub_3Q>1000</AD_Sub_3Q>
                <AD_Sub_Complete>1000</AD_Sub_Complete>
            </AD_Sub_M>
            <AD_Sub_M>
                ……
            </AD_Sub_M>
        </ADs_Sub_M>
    </result>
</message>
```

{% endcode %}


# 대행사

캠페인을 집행한 대행사용 API 입니다. 담당자를 통해 대행사 계정과 API Key를 발급해주세요.

{% hint style="info" %}
도메인 및 API Key는 별도로 제공됩니다.

캠페인 집행 담당자에게 문의해주세요.
{% endhint %}

## **리스트 타입**

| 리스트명     | ListType |
| -------- | -------- |
| 캠페인 리스트  | C        |
| 광고그룹 리스트 | AG       |
| 광고물 리스트  | AD       |

## **에러코드**

<table><thead><tr><th width="261">코드</th><th>설명</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

## **전체 캠페인 목록**

### **Request URL**

| URL                                  | Method |
| ------------------------------------ | ------ |
| /S-Plus\_api/getCampaignListAll.xml  | Get    |
| /S-Plus\_api/getCampaignListAll.json | Get    |

### **Request Parameters**

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | agy      | 권한        |
| sDate      | Integer | Y   | 20160101 | 캠페인 시작 일자 |
| eDate      | Integer | Y   | 20160131 | 캠페인 종료 일자 |

### **Response Fields**

<table><thead><tr><th width="259">이름</th><th width="116">타입</th><th width="164">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AllCam_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>AllCampaigns.AllCampaign</td><td> </td><td> </td><td> </td></tr><tr><td>AllCam_No</td><td>Integer</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AllCam_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AllCam_Name</td><td>String</td><td>메조_테스트캠페인</td><td>캠페인명</td></tr><tr><td>AllCam_sDate</td><td>String</td><td>2016-01-01 00:00</td><td>캠페인 시작일</td></tr><tr><td>AllCam_eDate</td><td>String</td><td>2016-01-01 00:00</td><td>캠페인 종료일</td></tr><tr><td>AllCam_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>AllCam_ImpP</td><td>Integer</td><td>1000</td><td>노출+</td></tr><tr><td>AllCam_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>AllCam_CTR</td><td>Integer</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AllCam_CTRP</td><td>Integer</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AllCam_CV</td><td>Integer</td><td>1000</td><td>전환 수</td></tr><tr><td>AllCam_CVR</td><td>Integer</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<message>
     <error>
           <code>000</code>
           <message>성공</message>
     </error>
        <result>
                <AllCamCount>10</AllCamCount> 
                <AllCampaigns>
                        <AllCampain>
                                <AllCam_No>1234</AllCam_No>
                                <AllCam_Status>1</AllCam_Status>
                                <AllCam_Name>메조_테스트캠페인</AllCam_Name>
                                <AllCam_sDate> 2016-01-01 00:00</AllCam_sDate>
                                <AllCam_eDate> 2016-01-01 00:00 </AllCam_eDate>
                                <AllCam_Imp> 1000 </AllCam_Imp>
                                <AllCam_ImpP> 1000 </AllCam_ImpP>
                                <AllCam_Click> 1000 </AllCam_Click>
                                <AllCam_CTR> 1000 </AllCam_CTR>
                                <AllCam_CTRP> 1000 </AllCam_CTRP>
                                <AllCam_CV> 1000 </AllCam_CV>
                                <AllCam_CVR> 1000 </AllCam_CVR>
                        </AllCampain>
                        <AllCampain>
                            ……
                        </AllCampain>
                </AllCampaigns>
        </result>
</message>
```

{% endcode %}

## **캠페인 목록**

### **Request URL**

| URL                               | Method |
| --------------------------------- | ------ |
| /S-Plus\_api/getCampaignList.xml  | Get    |
| /S-Plus\_api/getCampaignList.json | Get    |

### **Request Parameters**

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | agy      | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 캠페인 시작 일자 |
| eDate      | Integer | Y   | 20160131 | 캠페인 종료 일자 |

### **Response Fields**

<table><thead><tr><th width="215">이름</th><th width="113">타입</th><th>코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>Cam_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>Cam_Name</td><td>String</td><td>메조_테스트캠페인</td><td>캠페인명</td></tr><tr><td>CamInfo_Goal</td><td>Integer</td><td>100</td><td>캠페인 목표량</td></tr><tr><td>CamInfo_sDate</td><td>Integer</td><td>2016-01-01 0:00</td><td>캠페인 시작일</td></tr><tr><td>CamInfo_eDate</td><td>String</td><td>2016-01-01 0:00</td><td>캠페인 종료일</td></tr><tr><td>CamInfo_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>CamInfo_tBudjet</td><td>Integer</td><td>10000000</td><td>캠페인 총 예산</td></tr><tr><td>CamInfo_Brand</td><td>String</td><td>메조몰</td><td>캠페인 브랜드</td></tr><tr><td>CamInfo_Category</td><td>String</td><td>유통/유통기타</td><td>캠페인 카테고리</td></tr><tr><td>CamInfo_Agency</td><td>String</td><td>제일기획</td><td>캠페인 대행사</td></tr><tr><td>CamInfo_Agency2</td><td>String</td><td>이노션</td><td>캠페인 대대행사</td></tr><tr><td>CamInfo_Rep</td><td>String</td><td>메조미디어</td><td>캠페인 렙사</td></tr><tr><td>Campaigns.Campaign</td><td> </td><td> </td><td> </td></tr><tr><td>Cam_Daily</td><td>String</td><td>2016-01-01</td><td>일자</td></tr><tr><td>Cam_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>Cam_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>Cam_CTR</td><td>Integer</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>Cam_CPC</td><td>Integer</td><td>1000</td><td>CPC 단가</td></tr><tr><td>Cam_CPM</td><td>Integer</td><td>1000</td><td>CPM 단가</td></tr><tr><td>Cam_CPV</td><td>Integer</td><td>1000</td><td>CPV 단가</td></tr></tbody></table>

### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<message>
     <error>
           <code>000</code>
           <message>성공</message>
     </error>
        <result>
                <Cam_Count>10</Cam_Count> 
                <Cam_Name>메조미디어 캠페인</Cam_Name> 
                <CamInfo_sDate>2016-06-01</CamInfo_sDate> 
                <CamInfo_eDate>2016-06-31</CamInfo_eDate> 
                <CamInfo_Status>1</CamInfo_Status> 
                <CamInfo_tBudjet>10000</CamInfo_tBudjet> 
                <CamInfo_Brand>메조브랜드</CamInfo_Brand> 
                <CamInfo_Category>가정용품/주방용품</CamInfo_Category> 
                <CamInfo_Agency>제일기획</CamInfo_Agency> 
                <CamInfo_Agency2>이노션</CamInfo_Agency2> 
                <CamInfo_Rep>메조미디어</CamInfo_Rep> 
                <AllCampaigns>
                        <AllCampain>
                                <AllCam_No>1234</AllCam_No>
                                <AllCam_Status>1</AllCam_Status>
                                <AllCam_Name>메조_테스트캠페인</AllCam_Name>
                                <AllCam_sDate> 2016-01-01 00:00</AllCam_sDate>
                                <AllCam_eDate> 2016-01-01 00:00 </AllCam_eDate>
                                <AllCam_Imp> 1000 </AllCam_Imp>
                                <AllCam_ImpP> 1000 </AllCam_ImpP>
                                <AllCam_Click> 1000 </AllCam_Click>
                                <AllCam_CTR> 1000 </AllCam_CTR>
                                <AllCam_CTRP> 1000 </AllCam_CTRP>
                                <AllCam_CV> 1000 </AllCam_CV>
                                <AllCam_CVR> 1000 </AllCam_CVR>
                        </AllCampain>
                        <AllCampain>
                            ……
                        </AllCampain>
                </AllCampaigns>
        </result>
</message>
```

{% endcode %}

## **광고 그룹 목록**

### **Request URL**

| URL                              | Method |
| -------------------------------- | ------ |
| /S-Plus\_api/getADGroupList.xml  | Get    |
| /S-Plus\_api/getADGroupList.json | Get    |

### **Request Parameters**

#### **Main Request**

캠페인 목록 API를 통해 반환된 Cam\_No를 이용하여 해당 캠페인 하위에 포함되어 있는 광고그룹 목록을 요청합니다.

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | agy      | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 기간 조회 시작일 |
| eDate      | String  | Y   | 20160130 | 기간 조회 종료일 |
| AGP        | Integer | N   | 00001    | 광고그룹 목록 수 |

#### **Sub Request**

Main Request를 통해 반환된 AG\_No와 AG\_Product\_Type을 이용하여 해당 광고그룹의 상세 리포트를 요청합니다.

<table><thead><tr><th width="187">이름</th><th width="115">타입</th><th width="102">기본값</th><th width="127">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>agy</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>Cam_No</td><td>Integer</td><td>Y</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AG_No</td><td>Integer</td><td>Y</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AG_Product_Type</td><td>String</td><td>Y</td><td>banner</td><td>banner, movie, native</td></tr></tbody></table>

### **Response Fields**

#### **Main Response**

<table><thead><tr><th width="198">이름</th><th width="105">타입</th><th>코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AG_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADGroups.ADGroup</td><td> </td><td> </td><td> </td></tr><tr><td>AG_No</td><td>Integer</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AG_Name</td><td>String</td><td>메조_테스트_띠배너</td><td>광고그룹명</td></tr><tr><td>AG_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AG_Product_Type</td><td>String</td><td>Banner</td><td>banner, movie, native</td></tr><tr><td>AG_Product</td><td>String</td><td>배너_320X50</td><td>광고상품명</td></tr><tr><td>AG_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AG_ImpP</td><td>String</td><td>1000</td><td>노출+</td></tr><tr><td>AG_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AG_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AG_CTRP</td><td>String</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AG_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AG_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

#### **Sub Response**

AG\_Product\_Type 이 banner 일 경우

<table><thead><tr><th width="315">이름</th><th width="94">타입</th><th width="165">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AG_Sub_B_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADGroups_Sub_B.ADGroup_Sub_B</td><td> </td><td> </td><td> </td></tr><tr><td>Cam_No</td><td>Integer</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AG_No</td><td>Integer</td><td>12345</td><td>광고그룹ID</td></tr><tr><td>AG_Sub_Date</td><td>String</td><td>2016-01-01 00:00</td><td>일자</td></tr><tr><td>AG_Sub_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AG_Sub_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AG_Sub_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AG_Sub_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AG_Sub_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

AG\_Product\_Type 이 movie 일 경우

| 이름                               | 타입      | 코드 예시            | 설명               |
| -------------------------------- | ------- | ---------------- | ---------------- |
| AG\_Sub\_M\_Count                | Integer | 100              | 반환되는 리스트 행 수     |
| ADGroups\_Sub\_M.ADGroup\_Sub\_M |         |                  |                  |
| Cam\_No                          | Integer | 12345            | 캠페인ID            |
| AG\_No                           | Integer | 12345            | 광고그룹ID           |
| AG\_Sub\_Date                    | String  | 2016-01-01 00:00 | 일자               |
| AG\_Sub\_Imp                     | Integer | 1000             | 노출               |
| AG\_Sub\_ImpP                    | Integer | 1000             | 노출+              |
| AG\_Sub\_View                    | Integer | 1000             | 시청               |
| AG\_Sub\_Click                   | Integer | 1000             | 클릭               |
| AG\_Sub\_CTR                     | Integer | 1000             | 노출 대비 클릭         |
| AG\_Sub\_CTRP                    | Integer | 1000             | 노출+(15초) 대비 클릭   |
| AG\_Sub\_VTR                     | Integer | 1000             | 노출당 시청 비율        |
| AG\_Sub\_VTRP                    | Integer | 1000             | 노출+(15초)당 시청 비율  |
| AG\_Sub\_CVTR                    | Integer | 1000             | 노출당 재생+클릭        |
| AG\_Sub\_CVTRP                   | Integer | 1000             | 노출+(15초)당 재생+클릭  |
| AG\_Sub\_Start                   | Integer | 1000             | 동영상 시작시 노출 수     |
| AG\_Sub\_1Q                      | Integer | 1000             | 동영상 25% 재생시 노출 수 |
| AG\_Sub\_2Q                      | Integer | 1000             | 동영상 50% 재생시 노출 수 |
| AG\_Sub\_3Q                      | Integer | 1000             | 동영상 75% 재생시 노출 수 |
| AG\_Sub\_Complete                | Integer | 1000             | 동영상 재생 종료시 노출 수  |
| AG\_Sub\_CV                      | String  | 1000             | 전환 수             |
| AG\_Sub\_CVR                     | String  | 1000             | 클릭 대비 전환율(%)     |

### **Response Sample**

#### **Main Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Count>10</AG_Count>
        <ADGroups>
            <ADGroup>
                <AG_No>1234</AG_No>
                <AG_Name>메조_테스트_띠배너</AG_Name>
                <AG_Status>1</AG_Status>
                <AG_Product_Type>banner</AG_Product_Type>
                <AG_Product>배너_320X50</AG_Product>
                <AG_Imp>1000</AG_Imp>
                <AG_ImpP>1000</AG_ImpP>
                <AG_Click>1000</AG_Click>
                <AG_CTR>1000</AG_CTR>
                <AG_CTRP>1000</AG_CTRP>
                <AG_CV>1000</AG_CV>
                <AG_CVR>1000</AG_CVR>
            </ADGroup>
            <ADGroup>
                ……
            </ADGroup>
        </ADGroups>
    </result>
</message>
```

{% endcode %}

#### **Sub Response Sample**

AG\_Product\_Type 이 banner 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Sub_B_Count>10</AG_Sub_B_Count>
        <ADGroups_Sub_B>
            <ADGroup_Sub_B>
                <Cam_No>1234 </Cam_No>
                <AG_No>12345</AG_No>
                <AG_Sub_Date>2016-01-01 00:00</AG_Sub_Date>
                <AG_Sub_Imp>1000</AG_Sub_Imp>
                <AG_Sub_Click>1000</AG_Sub_Click>
                <AG_Sub_CTR>1000</AG_Sub_CTR>
                <AG_Sub_CV>1000</AG_Sub_CV>
                <AG_Sub_CVR>1000</AG_Sub_CVR>
            </ADGroup_Sub_B>
            <ADGroup_Sub_B>
                ……
            </ADGroup_Sub_B>
        </ADGroups_Sub_B>
    </result>
</message>
```

{% endcode %}

AG\_Product\_Type 이 movie 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Sub_M_Count>10</AG_Sub_M_Count>
        <ADGroups_Sub_M>
            <ADGroup_Sub_M>
                <Cam_No>1234</Cam_No>
                <AG_No>12345</AG_No>
                <AG_Sub_Date>2016-01-01 00:00</AG_Sub_Date>
                <AG_Sub_Imp>1000</AG_Sub_Imp>
                <AG_Sub_ImpP>1000</AG_Sub_ImpP>
                <AG_Sub_View>1000</AG_Sub_View>
                <AG_Sub_Click>1000</AG_Sub_Click>
                <AG_Sub_CTR>1000</AG_Sub_CTR>
                <AG_Sub_CTRP>1000</AG_Sub_CTRP>
                <AG_Sub_VTR>1000</AG_Sub_VTR>
                <AG_Sub_VTRP>1000</AG_Sub_VTRP>
                <AG_Sub_CVR>1000</AG_Sub_CVR>
                <AG_Sub_CVTR>1000</AG_Sub_CVTR>
                <AG_Sub_CVTRP>1000</AG_Sub_CVTRP>
                <AG_Sub_Start>1000</AG_Sub_Start>
                <AG_Sub_1Q>1000</AG_Sub_1Q>
                <AG_Sub_2Q>1000</AG_Sub_2Q>
                <AG_Sub_3Q>1000</AG_Sub_3Q>
                <AG_Sub_Complete>1000</AG_Sub_Complete>
            </ADGroup_Sub_M>
            <ADGroup_Sub_M>
                ……
            </ADGroup_Sub_M>
        </ADGroups_Sub_M>
    </result>
</message>
```

{% endcode %}

## **광고물 목록**

### **Request URL**

| URL                         | Method |
| --------------------------- | ------ |
| /S-Plus\_api/getADList.xml  | Get    |
| /S-Plus\_api/getADList.json | Get    |

### **Request Parameters**

#### **Main Request**

캠페인 목록 API를 통해 반환된 Cam\_No를 이용하여 해당 캠페인 하위에 포함되어 있는 광고그룹 목록을 요청합니다.

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | agy      | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 기간 조회 시작일 |
| eDate      | String  | Y   | 20160130 | 기간 조회 종료일 |
| ADP        | Integer | N   | 00001    | 광고그룹 목록 수 |

#### **Sub Request**

Main Request를 통해 반환된 AD\_No와 AD\_Product\_Type을 이용하여 해당 광고그룹의 상세 리포트를 요청합니다.

<table><thead><tr><th width="187">이름</th><th width="115">타입</th><th width="81">기본값</th><th width="127">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>XXXXXXX</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>Cam_No</td><td>Integer</td><td>Y</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AD_No</td><td>Integer</td><td>Y</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AD_Product_Type</td><td>String</td><td>Y</td><td>banner</td><td>banner, movie, native</td></tr></tbody></table>

### **Response Fields**

#### **Main Response**

<table><thead><tr><th width="190">이름</th><th width="90">타입</th><th width="252">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AD_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADs.AD</td><td> </td><td> </td><td> </td></tr><tr><td>AD_No</td><td>Integer</td><td>1</td><td>광고물  ID</td></tr><tr><td>AD_Name</td><td>String</td><td>메조_테스트_띠배너</td><td>광고물명</td></tr><tr><td>AD_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AD_Product_Type</td><td>String</td><td>Banner</td><td>banner, movie, native</td></tr><tr><td>AD_Product</td><td>String</td><td>배너_320X50</td><td>광고상품명</td></tr><tr><td>AD_imgURL</td><td>String</td><td>http://www.a.com/image.jpg</td><td>이미지 배너 소재 경로</td></tr><tr><td>AD_movieURL</td><td>String</td><td>http://www.a.com/movie.mp4</td><td>동영상 소재 경로</td></tr><tr><td>AD_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AD_ImpP</td><td>String</td><td>1000</td><td>노출+</td></tr><tr><td>AD_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AD_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AD_CTRP</td><td>String</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AD_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AD_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

#### **Sub Response**

AD\_Product\_Type 이 banner 일 경우

| 이름                     | 타입      | 코드 예시            | 설명           |
| ---------------------- | ------- | ---------------- | ------------ |
| AD\_Sub\_B\_Count      | Integer | 100              | 반환되는 리스트 행 수 |
| ADs\_Sub\_B.AD\_Sub\_B |         |                  |              |
| Cam\_No                | Integer | 12345            | 캠페인ID        |
| AD\_No                 | Integer | 12345            | 광고물 ID       |
| AD\_Sub\_Date          | String  | 2016-01-01 00:00 | 일자           |
| AD\_Sub\_Imp           | String  | 1000             | 노출           |
| AD\_Sub\_Click         | String  | 1000             | 클릭           |
| AD\_Sub\_CTR           | String  | 1000             | 노출 대비 클릭     |
| AD\_Sub\_CV            | String  | 1000             | 전환 수         |
| AD\_Sub\_CVR           | String  | 1000             | 클릭 대비 전환율(%) |

AD\_Product\_Type 이 movie 일 경우

| 이름                     | 타입      | 코드 예시            | 설명               |
| ---------------------- | ------- | ---------------- | ---------------- |
| AD\_Sub\_M\_Count      | Integer | 100              | 반환되는 리스트 행 수     |
| ADs\_Sub\_M.AD\_Sub\_M |         |                  |                  |
| Cam\_No                | Integer | 12345            | 캠페인ID            |
| AD\_No                 | Integer | 12345            | 광고물 ID           |
| AD\_Sub\_Date          | String  | 2016-01-01 00:00 | 일자               |
| AD\_Sub\_Imp           | Integer | 1000             | 노출               |
| AD\_Sub\_ImpP          | Integer | 1000             | 노출+              |
| AD\_Sub\_View          | Integer | 1000             | 시청               |
| AD\_Sub\_Click         | Integer | 1000             | 클릭               |
| AD\_Sub\_CTR           | Integer | 1000             | 노출 대비 클릭         |
| AD\_Sub\_CTRP          | Integer | 1000             | 노출+(15초) 대비 클릭   |
| AD\_Sub\_VTR           | Integer | 1000             | 노출당 시청 비율        |
| AD\_Sub\_VTRP          | Integer | 1000             | 노출+(15초)당 시청 비율  |
| AD\_Sub\_CVTR          | Integer | 1000             | 노출당 재생+클릭        |
| AD\_Sub\_CVTRP         | Integer | 1000             | 노출+(15초)당 재생+클릭  |
| AD\_Sub\_Start         | Integer | 1000             | 동영상 시작시 노출 수     |
| AD\_Sub\_1Q            | Integer | 1000             | 동영상 25% 재생시 노출 수 |
| AD\_Sub\_2Q            | Integer | 1000             | 동영상 50% 재생시 노출 수 |
| AD\_Sub\_3Q            | Integer | 1000             | 동영상 75% 재생시 노출 수 |
| AD\_Sub\_Complete      | Integer | 1000             | 동영상 재생 종료시 노출 수  |
| AD\_Sub\_CV            | String  | 1000             | 전환 수             |
| AD\_Sub\_CVR           | String  | 1000             | 클릭 대비 전환율(%)     |

### **Response Sample**

#### **Main Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Count>10</AD_Count>
        <ADs>
            <AD>
                <AD_No>1234</AD_No>
                <AD_Name>메조_테스트_띠배너</AD_Name>
                <AD_Status>1</AD_Status>
                <AD_Product_Type>banner</AD_Product_Type>
                <AD_Product>배너_320X50</AD_Product>
                <AD_imgURL>http://www.a.com/image.jpg</AD_imgURL>
                <AD_MovieURL>http://www.a.com/movie.mp4</AD_MovieURL>
                <AD_Imp>1000</AD_Imp>
                <AD_ImpP>1000</AD_ImpP>
                <AD_Click>1000</AD_Click>
                <AD_CTR>1000</AD_CTR>
                <AD_CTRP>1000</AD_CTRP>
                <AD_CV>1000</AD_CV>
                <AD_CVR>1000</AD_CVR>
            </AD>
            <AD>
                ……
            </AD>
        </ADs>
    </result>
</message>
```

{% endcode %}

#### **Sub Response Sample**

AG\_Product\_Type 이 banner 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Sub_B_Count>10</AD_Sub_B_Count>
        <ADs_Sub_B>
            <AD_Sub_B>
                <Cam_No>1234 </Cam_No>
                <AD_No>12345</AD_No>
                <AD_Sub_Date>2016-01-01 00:00</AD_Sub_Date>
                <AD_Sub_Imp>1000</AD_Sub_Imp>
                <AD_Sub_Click>1000</AD_Sub_Click>
                <AD_Sub_CTR>1000</AD_Sub_CTR>
                <AD_Sub_CV>1000</AD_Sub_CV>
                <AD_Sub_CVR>1000</AD_Sub_CVR>
            </AD_Sub_B>
            <AD_Sub_B>
                ……
            </AD_Sub_B>
        </ADs_Sub_B>
    </result>
</message>
```

{% endcode %}

AG\_Product\_Type이 movie 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Sub_M_Count>10</AD_Sub_M_Count>
        <ADs_Sub_M>
            <AD_Sub_M>
                <Cam_No>1234</Cam_No>
                <AD_No>12345</AD_No>
                <AD_Sub_Date>2016-01-01 00:00</AD_Sub_Date>
                <AD_Sub_Imp>1000</AD_Sub_Imp>
                <AD_Sub_ImpP>1000</AD_Sub_ImpP>
                <AD_Sub_View>1000</AD_Sub_View>
                <AD_Sub_Click>1000</AD_Sub_Click>
                <AD_Sub_CTR>1000</AD_Sub_CTR>
                <AD_Sub_CTRP>1000</AD_Sub_CTRP>
                <AD_Sub_VTR>1000</AD_Sub_VTR>
                <AD_Sub_VTRP>1000</AD_Sub_VTRP>
                <AD_Sub_CVR>1000</AD_Sub_CVR>
                <AD_Sub_CVTR>1000</AD_Sub_CVTR>
                <AD_Sub_CVTRP>1000</AD_Sub_CVTRP>
                <AD_Sub_Start>1000</AD_Sub_Start>
                <AD_Sub_1Q>1000</AD_Sub_1Q>
                <AD_Sub_2Q>1000</AD_Sub_2Q>
                <AD_Sub_3Q>1000</AD_Sub_3Q>
                <AD_Sub_Complete>1000</AD_Sub_Complete>
            </AD_Sub_M>
            <AD_Sub_M>
                ……
            </AD_Sub_M>
        </ADs_Sub_M>
    </result>
</message>
```

{% endcode %}


# 미디어렙사

캠페인을 집행한 미디어렙사용 API 입니다. 담당자를 통해 미디어렙사 계정과 API Key를 발급해주세요.

{% hint style="info" %}
도메인 및 API Key는 별도로 제공됩니다.

캠페인 집행 담당자에게 문의해주세요.
{% endhint %}

## **리스트 타입**

| 리스트명     | ListType |
| -------- | -------- |
| 캠페인 리스트  | C        |
| 광고그룹 리스트 | AG       |
| 광고물 리스트  | AD       |

## **에러코드**

<table><thead><tr><th width="261">코드</th><th>설명</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

## **전체 캠페인 목록**

### **Request URL**

| URL                                  | Method |
| ------------------------------------ | ------ |
| /S-Plus\_api/getCampaignListAll.xml  | Get    |
| /S-Plus\_api/getCampaignListAll.json | Get    |

### **Request Parameters**

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | rep      | 권한        |
| sDate      | Integer | Y   | 20160101 | 캠페인 시작 일자 |
| eDate      | Integer | Y   | 20160131 | 캠페인 종료 일자 |

### **Response Fields**

<table><thead><tr><th width="259">이름</th><th width="116">타입</th><th width="164">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AllCam_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>AllCampaigns.AllCampaign</td><td> </td><td> </td><td> </td></tr><tr><td>AllCam_No</td><td>Integer</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AllCam_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AllCam_Name</td><td>String</td><td>메조_테스트캠페인</td><td>캠페인명</td></tr><tr><td>AllCam_sDate</td><td>String</td><td>2016-01-01 00:00</td><td>캠페인 시작일</td></tr><tr><td>AllCam_eDate</td><td>String</td><td>2016-01-01 00:00</td><td>캠페인 종료일</td></tr><tr><td>AllCam_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>AllCam_ImpP</td><td>Integer</td><td>1000</td><td>노출+</td></tr><tr><td>AllCam_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>AllCam_CTR</td><td>Integer</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AllCam_CTRP</td><td>Integer</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AllCam_CV</td><td>Integer</td><td>1000</td><td>전환 수</td></tr><tr><td>AllCam_CVR</td><td>Integer</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<message>
     <error>
           <code>000</code>
           <message>성공</message>
     </error>
        <result>
                <AllCamCount>10</AllCamCount> 
                <AllCampaigns>
                        <AllCampain>
                                <AllCam_No>1234</AllCam_No>
                                <AllCam_Status>1</AllCam_Status>
                                <AllCam_Name>메조_테스트캠페인</AllCam_Name>
                                <AllCam_sDate> 2016-01-01 00:00</AllCam_sDate>
                                <AllCam_eDate> 2016-01-01 00:00 </AllCam_eDate>
                                <AllCam_Imp> 1000 </AllCam_Imp>
                                <AllCam_ImpP> 1000 </AllCam_ImpP>
                                <AllCam_Click> 1000 </AllCam_Click>
                                <AllCam_CTR> 1000 </AllCam_CTR>
                                <AllCam_CTRP> 1000 </AllCam_CTRP>
                                <AllCam_CV> 1000 </AllCam_CV>
                                <AllCam_CVR> 1000 </AllCam_CVR>
                        </AllCampain>
                        <AllCampain>
                            ……
                        </AllCampain>
                </AllCampaigns>
        </result>
</message>
```

{% endcode %}

## **캠페인 목록**

### **Request URL**

| URL                               | Method |
| --------------------------------- | ------ |
| /S-Plus\_api/getCampaignList.xml  | Get    |
| /S-Plus\_api/getCampaignList.json | Get    |

### **Request Parameters**

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | rep      | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 캠페인 시작 일자 |
| eDate      | Integer | Y   | 20160131 | 캠페인 종료 일자 |

### **Response Fields**

<table><thead><tr><th width="215">이름</th><th width="113">타입</th><th>코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>Cam_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>Cam_Name</td><td>String</td><td>메조_테스트캠페인</td><td>캠페인명</td></tr><tr><td>CamInfo_Goal</td><td>Integer</td><td>100</td><td>캠페인 목표량</td></tr><tr><td>CamInfo_sDate</td><td>Integer</td><td>2016-01-01 0:00</td><td>캠페인 시작일</td></tr><tr><td>CamInfo_eDate</td><td>String</td><td>2016-01-01 0:00</td><td>캠페인 종료일</td></tr><tr><td>CamInfo_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>CamInfo_tBudjet</td><td>Integer</td><td>10000000</td><td>캠페인 총 예산</td></tr><tr><td>CamInfo_Brand</td><td>String</td><td>메조몰</td><td>캠페인 브랜드</td></tr><tr><td>CamInfo_Category</td><td>String</td><td>유통/유통기타</td><td>캠페인 카테고리</td></tr><tr><td>CamInfo_Agency</td><td>String</td><td>제일기획</td><td>캠페인 대행사</td></tr><tr><td>CamInfo_Agency2</td><td>String</td><td>이노션</td><td>캠페인 대대행사</td></tr><tr><td>CamInfo_Rep</td><td>String</td><td>메조미디어</td><td>캠페인 렙사</td></tr><tr><td>Campaigns.Campaign</td><td> </td><td> </td><td> </td></tr><tr><td>Cam_Daily</td><td>String</td><td>2016-01-01</td><td>일자</td></tr><tr><td>Cam_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>Cam_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>Cam_CTR</td><td>Integer</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>Cam_CPC</td><td>Integer</td><td>1000</td><td>CPC 단가</td></tr><tr><td>Cam_CPM</td><td>Integer</td><td>1000</td><td>CPM 단가</td></tr><tr><td>Cam_CPV</td><td>Integer</td><td>1000</td><td>CPV 단가</td></tr></tbody></table>

### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<message>
     <error>
           <code>000</code>
           <message>성공</message>
     </error>
        <result>
                <Cam_Count>10</Cam_Count> 
                <Cam_Name>메조미디어 캠페인</Cam_Name> 
                <CamInfo_sDate>2016-06-01</CamInfo_sDate> 
                <CamInfo_eDate>2016-06-31</CamInfo_eDate> 
                <CamInfo_Status>1</CamInfo_Status> 
                <CamInfo_tBudjet>10000</CamInfo_tBudjet> 
                <CamInfo_Brand>메조브랜드</CamInfo_Brand> 
                <CamInfo_Category>가정용품/주방용품</CamInfo_Category> 
                <CamInfo_Agency>제일기획</CamInfo_Agency> 
                <CamInfo_Agency2>이노션</CamInfo_Agency2> 
                <CamInfo_Rep>메조미디어</CamInfo_Rep> 
                <AllCampaigns>
                        <AllCampain>
                                <AllCam_No>1234</AllCam_No>
                                <AllCam_Status>1</AllCam_Status>
                                <AllCam_Name>메조_테스트캠페인</AllCam_Name>
                                <AllCam_sDate> 2016-01-01 00:00</AllCam_sDate>
                                <AllCam_eDate> 2016-01-01 00:00 </AllCam_eDate>
                                <AllCam_Imp> 1000 </AllCam_Imp>
                                <AllCam_ImpP> 1000 </AllCam_ImpP>
                                <AllCam_Click> 1000 </AllCam_Click>
                                <AllCam_CTR> 1000 </AllCam_CTR>
                                <AllCam_CTRP> 1000 </AllCam_CTRP>
                                <AllCam_CV> 1000 </AllCam_CV>
                                <AllCam_CVR> 1000 </AllCam_CVR>
                        </AllCampain>
                        <AllCampain>
                            ……
                        </AllCampain>
                </AllCampaigns>
        </result>
</message>
```

{% endcode %}

## **광고 그룹 목록**

### **Request URL**

| URL                              | Method |
| -------------------------------- | ------ |
| /S-Plus\_api/getADGroupList.xml  | Get    |
| /S-Plus\_api/getADGroupList.json | Get    |

### **Request Parameters**

#### **Main Request**

캠페인 목록 API를 통해 반환된 Cam\_No를 이용하여 해당 캠페인 하위에 포함되어 있는 광고그룹 목록을 요청합니다.

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | rep      | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 기간 조회 시작일 |
| eDate      | String  | Y   | 20160130 | 기간 조회 종료일 |
| AGP        | Integer | N   | 00001    | 광고그룹 목록 수 |

#### **Sub Request**

Main Request를 통해 반환된 AG\_No와 AG\_Product\_Type을 이용하여 해당 광고그룹의 상세 리포트를 요청합니다.

<table><thead><tr><th width="187">이름</th><th width="115">타입</th><th width="102">기본값</th><th width="127">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>rep</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>Cam_No</td><td>Integer</td><td>Y</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AG_No</td><td>Integer</td><td>Y</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AG_Product_Type</td><td>String</td><td>Y</td><td>banner</td><td>banner, movie, native</td></tr></tbody></table>

### **Response Fields**

#### **Main Response**

<table><thead><tr><th width="198">이름</th><th width="105">타입</th><th>코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AG_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADGroups.ADGroup</td><td> </td><td> </td><td> </td></tr><tr><td>AG_No</td><td>Integer</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AG_Name</td><td>String</td><td>메조_테스트_띠배너</td><td>광고그룹명</td></tr><tr><td>AG_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AG_Product_Type</td><td>String</td><td>Banner</td><td>banner, movie, native</td></tr><tr><td>AG_Product</td><td>String</td><td>배너_320X50</td><td>광고상품명</td></tr><tr><td>AG_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AG_ImpP</td><td>String</td><td>1000</td><td>노출+</td></tr><tr><td>AG_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AG_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AG_CTRP</td><td>String</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AG_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AG_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

#### **Sub Response**

AG\_Product\_Type 이 banner 일 경우

<table><thead><tr><th width="315">이름</th><th width="94">타입</th><th width="165">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AG_Sub_B_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADGroups_Sub_B.ADGroup_Sub_B</td><td> </td><td> </td><td> </td></tr><tr><td>Cam_No</td><td>Integer</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AG_No</td><td>Integer</td><td>12345</td><td>광고그룹ID</td></tr><tr><td>AG_Sub_Date</td><td>String</td><td>2016-01-01 00:00</td><td>일자</td></tr><tr><td>AG_Sub_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AG_Sub_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AG_Sub_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AG_Sub_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AG_Sub_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

AG\_Product\_Type 이 movie 일 경우

| 이름                               | 타입      | 코드 예시            | 설명               |
| -------------------------------- | ------- | ---------------- | ---------------- |
| AG\_Sub\_M\_Count                | Integer | 100              | 반환되는 리스트 행 수     |
| ADGroups\_Sub\_M.ADGroup\_Sub\_M |         |                  |                  |
| Cam\_No                          | Integer | 12345            | 캠페인ID            |
| AG\_No                           | Integer | 12345            | 광고그룹ID           |
| AG\_Sub\_Date                    | String  | 2016-01-01 00:00 | 일자               |
| AG\_Sub\_Imp                     | Integer | 1000             | 노출               |
| AG\_Sub\_ImpP                    | Integer | 1000             | 노출+              |
| AG\_Sub\_View                    | Integer | 1000             | 시청               |
| AG\_Sub\_Click                   | Integer | 1000             | 클릭               |
| AG\_Sub\_CTR                     | Integer | 1000             | 노출 대비 클릭         |
| AG\_Sub\_CTRP                    | Integer | 1000             | 노출+(15초) 대비 클릭   |
| AG\_Sub\_VTR                     | Integer | 1000             | 노출당 시청 비율        |
| AG\_Sub\_VTRP                    | Integer | 1000             | 노출+(15초)당 시청 비율  |
| AG\_Sub\_CVTR                    | Integer | 1000             | 노출당 재생+클릭        |
| AG\_Sub\_CVTRP                   | Integer | 1000             | 노출+(15초)당 재생+클릭  |
| AG\_Sub\_Start                   | Integer | 1000             | 동영상 시작시 노출 수     |
| AG\_Sub\_1Q                      | Integer | 1000             | 동영상 25% 재생시 노출 수 |
| AG\_Sub\_2Q                      | Integer | 1000             | 동영상 50% 재생시 노출 수 |
| AG\_Sub\_3Q                      | Integer | 1000             | 동영상 75% 재생시 노출 수 |
| AG\_Sub\_Complete                | Integer | 1000             | 동영상 재생 종료시 노출 수  |
| AG\_Sub\_CV                      | String  | 1000             | 전환 수             |
| AG\_Sub\_CVR                     | String  | 1000             | 클릭 대비 전환율(%)     |

### **Response Sample**

#### **Main Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Count>10</AG_Count>
        <ADGroups>
            <ADGroup>
                <AG_No>1234</AG_No>
                <AG_Name>메조_테스트_띠배너</AG_Name>
                <AG_Status>1</AG_Status>
                <AG_Product_Type>banner</AG_Product_Type>
                <AG_Product>배너_320X50</AG_Product>
                <AG_Imp>1000</AG_Imp>
                <AG_ImpP>1000</AG_ImpP>
                <AG_Click>1000</AG_Click>
                <AG_CTR>1000</AG_CTR>
                <AG_CTRP>1000</AG_CTRP>
                <AG_CV>1000</AG_CV>
                <AG_CVR>1000</AG_CVR>
            </ADGroup>
            <ADGroup>
                ……
            </ADGroup>
        </ADGroups>
    </result>
</message>
```

{% endcode %}

#### **Sub Response Sample**

AG\_Product\_Type 이 banner 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Sub_B_Count>10</AG_Sub_B_Count>
        <ADGroups_Sub_B>
            <ADGroup_Sub_B>
                <Cam_No>1234 </Cam_No>
                <AG_No>12345</AG_No>
                <AG_Sub_Date>2016-01-01 00:00</AG_Sub_Date>
                <AG_Sub_Imp>1000</AG_Sub_Imp>
                <AG_Sub_Click>1000</AG_Sub_Click>
                <AG_Sub_CTR>1000</AG_Sub_CTR>
                <AG_Sub_CV>1000</AG_Sub_CV>
                <AG_Sub_CVR>1000</AG_Sub_CVR>
            </ADGroup_Sub_B>
            <ADGroup_Sub_B>
                ……
            </ADGroup_Sub_B>
        </ADGroups_Sub_B>
    </result>
</message>
```

{% endcode %}

AG\_Product\_Type 이 movie 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AG_Sub_M_Count>10</AG_Sub_M_Count>
        <ADGroups_Sub_M>
            <ADGroup_Sub_M>
                <Cam_No>1234</Cam_No>
                <AG_No>12345</AG_No>
                <AG_Sub_Date>2016-01-01 00:00</AG_Sub_Date>
                <AG_Sub_Imp>1000</AG_Sub_Imp>
                <AG_Sub_ImpP>1000</AG_Sub_ImpP>
                <AG_Sub_View>1000</AG_Sub_View>
                <AG_Sub_Click>1000</AG_Sub_Click>
                <AG_Sub_CTR>1000</AG_Sub_CTR>
                <AG_Sub_CTRP>1000</AG_Sub_CTRP>
                <AG_Sub_VTR>1000</AG_Sub_VTR>
                <AG_Sub_VTRP>1000</AG_Sub_VTRP>
                <AG_Sub_CVR>1000</AG_Sub_CVR>
                <AG_Sub_CVTR>1000</AG_Sub_CVTR>
                <AG_Sub_CVTRP>1000</AG_Sub_CVTRP>
                <AG_Sub_Start>1000</AG_Sub_Start>
                <AG_Sub_1Q>1000</AG_Sub_1Q>
                <AG_Sub_2Q>1000</AG_Sub_2Q>
                <AG_Sub_3Q>1000</AG_Sub_3Q>
                <AG_Sub_Complete>1000</AG_Sub_Complete>
            </ADGroup_Sub_M>
            <ADGroup_Sub_M>
                ……
            </ADGroup_Sub_M>
        </ADGroups_Sub_M>
    </result>
</message>
```

{% endcode %}

## **광고물 목록**

### **Request URL**

| URL                         | Method |
| --------------------------- | ------ |
| /S-Plus\_api/getADList.xml  | Get    |
| /S-Plus\_api/getADList.json | Get    |

### **Request Parameters**

#### **Main Request**

캠페인 목록 API를 통해 반환된 Cam\_No를 이용하여 해당 캠페인 하위에 포함되어 있는 광고그룹 목록을 요청합니다.

| 이름         | 타입      | 기본값 | 코드 예시    | 설명        |
| ---------- | ------- | --- | -------- | --------- |
| USER       | String  | Y   | XXXXXX   | ID 암호화    |
| Auth\_Type | String  | Y   | rep      | 권한        |
| Cam\_No    | Integer | Y   | 12345    | 캠페인ID     |
| sDate      | Integer | Y   | 20160101 | 기간 조회 시작일 |
| eDate      | String  | Y   | 20160130 | 기간 조회 종료일 |
| ADP        | Integer | N   | 00001    | 광고그룹 목록 수 |

#### **Sub Request**

Main Request를 통해 반환된 AD\_No와 AD\_Product\_Type을 이용하여 해당 광고그룹의 상세 리포트를 요청합니다.

<table><thead><tr><th width="187">이름</th><th width="115">타입</th><th width="81">기본값</th><th width="127">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>XXXXXXX</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>Cam_No</td><td>Integer</td><td>Y</td><td>12345</td><td>캠페인ID</td></tr><tr><td>AD_No</td><td>Integer</td><td>Y</td><td>00001</td><td>광고그룹ID</td></tr><tr><td>AD_Product_Type</td><td>String</td><td>Y</td><td>banner</td><td>banner, movie, native</td></tr></tbody></table>

### **Response Fields**

#### **Main Response**

<table><thead><tr><th width="190">이름</th><th width="90">타입</th><th width="252">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>AD_Count</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ADs.AD</td><td> </td><td> </td><td> </td></tr><tr><td>AD_No</td><td>Integer</td><td>1</td><td>광고물  ID</td></tr><tr><td>AD_Name</td><td>String</td><td>메조_테스트_띠배너</td><td>광고물명</td></tr><tr><td>AD_Status</td><td>String</td><td>1</td><td>0: 준비<br>1: 진행<br>2: 중지<br>3: 완료<br>4: 삭제</td></tr><tr><td>AD_Product_Type</td><td>String</td><td>Banner</td><td>banner, movie, native</td></tr><tr><td>AD_Product</td><td>String</td><td>배너_320X50</td><td>광고상품명</td></tr><tr><td>AD_imgURL</td><td>String</td><td>http://www.a.com/image.jpg</td><td>이미지 배너 소재 경로</td></tr><tr><td>AD_movieURL</td><td>String</td><td>http://www.a.com/movie.mp4</td><td>동영상 소재 경로</td></tr><tr><td>AD_Imp</td><td>String</td><td>1000</td><td>노출</td></tr><tr><td>AD_ImpP</td><td>String</td><td>1000</td><td>노출+</td></tr><tr><td>AD_Click</td><td>String</td><td>1000</td><td>클릭</td></tr><tr><td>AD_CTR</td><td>String</td><td>1000</td><td>노출 대비 클릭</td></tr><tr><td>AD_CTRP</td><td>String</td><td>1000</td><td>노출+ 대비 클릭</td></tr><tr><td>AD_CV</td><td>String</td><td>1000</td><td>전환 수</td></tr><tr><td>AD_CVR</td><td>String</td><td>1000</td><td>클릭 대비 전환율(%)</td></tr></tbody></table>

#### **Sub Response**

AD\_Product\_Type 이 banner 일 경우

| 이름                     | 타입      | 코드 예시            | 설명           |
| ---------------------- | ------- | ---------------- | ------------ |
| AD\_Sub\_B\_Count      | Integer | 100              | 반환되는 리스트 행 수 |
| ADs\_Sub\_B.AD\_Sub\_B |         |                  |              |
| Cam\_No                | Integer | 12345            | 캠페인ID        |
| AD\_No                 | Integer | 12345            | 광고물 ID       |
| AD\_Sub\_Date          | String  | 2016-01-01 00:00 | 일자           |
| AD\_Sub\_Imp           | String  | 1000             | 노출           |
| AD\_Sub\_Click         | String  | 1000             | 클릭           |
| AD\_Sub\_CTR           | String  | 1000             | 노출 대비 클릭     |
| AD\_Sub\_CV            | String  | 1000             | 전환 수         |
| AD\_Sub\_CVR           | String  | 1000             | 클릭 대비 전환율(%) |

AD\_Product\_Type 이 movie 일 경우

| 이름                     | 타입      | 코드 예시            | 설명               |
| ---------------------- | ------- | ---------------- | ---------------- |
| AD\_Sub\_M\_Count      | Integer | 100              | 반환되는 리스트 행 수     |
| ADs\_Sub\_M.AD\_Sub\_M |         |                  |                  |
| Cam\_No                | Integer | 12345            | 캠페인ID            |
| AD\_No                 | Integer | 12345            | 광고물 ID           |
| AD\_Sub\_Date          | String  | 2016-01-01 00:00 | 일자               |
| AD\_Sub\_Imp           | Integer | 1000             | 노출               |
| AD\_Sub\_ImpP          | Integer | 1000             | 노출+              |
| AD\_Sub\_View          | Integer | 1000             | 시청               |
| AD\_Sub\_Click         | Integer | 1000             | 클릭               |
| AD\_Sub\_CTR           | Integer | 1000             | 노출 대비 클릭         |
| AD\_Sub\_CTRP          | Integer | 1000             | 노출+(15초) 대비 클릭   |
| AD\_Sub\_VTR           | Integer | 1000             | 노출당 시청 비율        |
| AD\_Sub\_VTRP          | Integer | 1000             | 노출+(15초)당 시청 비율  |
| AD\_Sub\_CVTR          | Integer | 1000             | 노출당 재생+클릭        |
| AD\_Sub\_CVTRP         | Integer | 1000             | 노출+(15초)당 재생+클릭  |
| AD\_Sub\_Start         | Integer | 1000             | 동영상 시작시 노출 수     |
| AD\_Sub\_1Q            | Integer | 1000             | 동영상 25% 재생시 노출 수 |
| AD\_Sub\_2Q            | Integer | 1000             | 동영상 50% 재생시 노출 수 |
| AD\_Sub\_3Q            | Integer | 1000             | 동영상 75% 재생시 노출 수 |
| AD\_Sub\_Complete      | Integer | 1000             | 동영상 재생 종료시 노출 수  |
| AD\_Sub\_CV            | String  | 1000             | 전환 수             |
| AD\_Sub\_CVR           | String  | 1000             | 클릭 대비 전환율(%)     |

### **Response Sample**

#### **Main Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Count>10</AD_Count>
        <ADs>
            <AD>
                <AD_No>1234</AD_No>
                <AD_Name>메조_테스트_띠배너</AD_Name>
                <AD_Status>1</AD_Status>
                <AD_Product_Type>banner</AD_Product_Type>
                <AD_Product>배너_320X50</AD_Product>
                <AD_imgURL>http://www.a.com/image.jpg</AD_imgURL>
                <AD_MovieURL>http://www.a.com/movie.mp4</AD_MovieURL>
                <AD_Imp>1000</AD_Imp>
                <AD_ImpP>1000</AD_ImpP>
                <AD_Click>1000</AD_Click>
                <AD_CTR>1000</AD_CTR>
                <AD_CTRP>1000</AD_CTRP>
                <AD_CV>1000</AD_CV>
                <AD_CVR>1000</AD_CVR>
            </AD>
            <AD>
                ……
            </AD>
        </ADs>
    </result>
</message>
```

{% endcode %}

#### **Sub Response Sample**

AG\_Product\_Type 이 banner 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Sub_B_Count>10</AD_Sub_B_Count>
        <ADs_Sub_B>
            <AD_Sub_B>
                <Cam_No>1234 </Cam_No>
                <AD_No>12345</AD_No>
                <AD_Sub_Date>2016-01-01 00:00</AD_Sub_Date>
                <AD_Sub_Imp>1000</AD_Sub_Imp>
                <AD_Sub_Click>1000</AD_Sub_Click>
                <AD_Sub_CTR>1000</AD_Sub_CTR>
                <AD_Sub_CV>1000</AD_Sub_CV>
                <AD_Sub_CVR>1000</AD_Sub_CVR>
            </AD_Sub_B>
            <AD_Sub_B>
                ……
            </AD_Sub_B>
        </ADs_Sub_B>
    </result>
</message>
```

{% endcode %}

AG\_Product\_Type이 movie 일 경우

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <AD_Sub_M_Count>10</AD_Sub_M_Count>
        <ADs_Sub_M>
            <AD_Sub_M>
                <Cam_No>1234</Cam_No>
                <AD_No>12345</AD_No>
                <AD_Sub_Date>2016-01-01 00:00</AD_Sub_Date>
                <AD_Sub_Imp>1000</AD_Sub_Imp>
                <AD_Sub_ImpP>1000</AD_Sub_ImpP>
                <AD_Sub_View>1000</AD_Sub_View>
                <AD_Sub_Click>1000</AD_Sub_Click>
                <AD_Sub_CTR>1000</AD_Sub_CTR>
                <AD_Sub_CTRP>1000</AD_Sub_CTRP>
                <AD_Sub_VTR>1000</AD_Sub_VTR>
                <AD_Sub_VTRP>1000</AD_Sub_VTRP>
                <AD_Sub_CVR>1000</AD_Sub_CVR>
                <AD_Sub_CVTR>1000</AD_Sub_CVTR>
                <AD_Sub_CVTRP>1000</AD_Sub_CVTRP>
                <AD_Sub_Start>1000</AD_Sub_Start>
                <AD_Sub_1Q>1000</AD_Sub_1Q>
                <AD_Sub_2Q>1000</AD_Sub_2Q>
                <AD_Sub_3Q>1000</AD_Sub_3Q>
                <AD_Sub_Complete>1000</AD_Sub_Complete>
            </AD_Sub_M>
            <AD_Sub_M>
                ……
            </AD_Sub_M>
        </ADs_Sub_M>
    </result>
</message>
```

{% endcode %}


# 퍼블리셔

매체를 통해 발생된 광고 데이터 및 정산 금액을 확인할 수 있는 API 입니다. 매체 담당자를 통해 퍼블리셔 API Key를 발급해주세요.

{% hint style="info" %}
도메인 및 API Key는 별도로 제공됩니다.

캠페인 집행 담당자에게 문의해주세요.
{% endhint %}

## **에러코드**

<table><thead><tr><th width="288">코드</th><th>설명</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

## **배너 리포트**

### **Request URL**

| URL                               | Method |
| --------------------------------- | ------ |
| /S-Plus\_api/getBannerReport.xml  | Get    |
| /S-Plus\_api/getBannerReport.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="157">Filed Name</th><th width="91">타입</th><th width="70">필수</th><th width="138">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>API Tokeng</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>pub</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>B_ServiceType</td><td>Integer</td><td>N</td><td>1</td><td>0 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : Mobile_web</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : App_android</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : App_ios</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>4 : App_ETC</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>5 : PC_web</td></tr><tr><td>B_Media</td><td>Integer</td><td>N</td><td>10001</td><td>미디어ID</td></tr><tr><td>B_Section</td><td>Integer</td><td>N</td><td>80002</td><td>섹션ID</td></tr><tr><td>B_Charge</td><td>Integer</td><td>N</td><td>1</td><td>1 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : 과금</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : 비과금</td></tr><tr><td>cross_ad</td><td>Integer</td><td>N</td><td>1</td><td>0 : 교차상품 노출 안함</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : 교차상품 노출</td></tr><tr><td>group</td><td>String</td><td>N</td><td>media,section</td><td>media : media_code 기준 그룹화</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>section : section_code 기준 그룹화</td></tr></tbody></table>

### **Response Fields**

<table><thead><tr><th width="204">이름</th><th width="124">타입</th><th width="128">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>B_Report_Count</td><td>Integer</td><td>1000</td><td>반환되는 리스트 행 수</td></tr><tr><td>B_Reports.B_Report</td><td> </td><td> </td><td> </td></tr><tr><td>B_Day</td><td>Integer</td><td>2016-01-01</td><td>일자</td></tr><tr><td>B_Request</td><td>Integer</td><td>1000</td><td>광고 호출 수</td></tr><tr><td>B_Delivery</td><td>Integer</td><td>1000</td><td>광고 전달 수</td></tr><tr><td>B_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>B_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>B_CTR</td><td>String</td><td>1.27%</td><td>노출 대비 클릭</td></tr><tr><td>B_FillRate</td><td>Float</td><td>98.11</td><td>광고 요청 대비 노출</td></tr><tr><td>B_ExpectedCost</td><td>Integer</td><td>1372</td><td>예상 수익</td></tr><tr><td>B_Media</td><td>Integer</td><td>30000</td><td><p>미디어 코드</p><p>(group 파라미터에 media가 있을 경우 반환)</p></td></tr><tr><td>B_Section</td><td>Integer</td><td>800000</td><td>섹션 코드 <br>(group 파라미터에 section이 있을 경우 반환)</td></tr><tr><td>B_Reports.B_Report.B_C_Lists.B_C_List</td><td> </td><td> </td><td>cross_ad 파라미터가 1일 경우 반환</td></tr><tr><td>B_C_Product_Name</td><td>String</td><td>전면배너</td><td>교차상품 명칭</td></tr><tr><td>B_C_Delivery</td><td>Integer</td><td>500</td><td>교차상품 광고 전달 수</td></tr><tr><td>B_C_Imp</td><td>Integer</td><td>500</td><td>교차상품 노출</td></tr><tr><td>B_C_Click</td><td>Integer</td><td>500</td><td>교차상품 클릭</td></tr><tr><td>B_C_CTR</td><td>String</td><td>1.11%</td><td>교차상품 노출 대비 클릭</td></tr><tr><td>B_C_ExpectedCost</td><td>Integer</td><td>772</td><td>교차상품 예상 수익</td></tr></tbody></table>

#### **Response Sample (일반)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <B_Report_Count>10</B_Report_Count>
        <B_Reports>
            <Reports>
                <B_Day>2016-01-01 00:00</B_Day>
                <B_Request>1000</B_Request>
                <B_Delivery>1000</B_Delivery>
                <B_Imp>1000</B_Imp>
                <B_Click>1000</B_Click>
                <B_CTR>1.27%</B_CTR>
                <B_FillRate>65.5</B_FillRate>
                <B_ExpectedCost>1372</B_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Media>30000</B_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Section>800000</B_Section>
            </Reports>
            <Reports>
                ……
            </Reports>
        </B_Reports>
    </result>
</message>
```

{% endcode %}

#### **Response Sample (교차상품)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <B_Report_Count>10</B_Report_Count>
        <B_Reports>
            <Reports>
                <B_Day>2016-01-01 00:00</B_Day>
                <B_Request>1000</B_Request>
                <B_Delivery>1000</B_Delivery>
                <B_Imp>1000</B_Imp>
                <B_Click>1000</B_Click>
                <B_CTR>1.27%</B_CTR>
                <B_FillRate>65.5</B_FillRate>
                <B_ExpectedCost>1372</B_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Media>30000</B_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Section>800000</B_Section>                
                <B_C_Lists>
                    <B_C_List>
                        <B_C_ProductName>전면배너</B_C_ProductName>
                        <B_C_Delivery>500</B_C_Delivery>
                        <B_C_Imp>500</B_C_Imp>
                        <B_C_Click>500</B_C_Click>
                        <B_C_CTR>0.97%</B_C_CTR>
                        <B_C_ExpectedCost>772</B_C_ExpectedCost>
                    </B_C_List>
                    <B_C_List>
                        <B_C_ProductName>전면동영상</B_C_ProductName>
                        <B_C_Delivery>500</B_C_Delivery>
                        <B_C_Imp>500</B_C_Imp>
                        <B_C_Click>500</B_C_Click>
                        <B_C_CTR>2.53%</B_C_CTR>
                        <B_C_ExpectedCost>600</B_C_ExpectedCost>
                    </B_C_List>
                </B_C_Lists>                
            </Reports>
            <Reports>
                ……
            </Reports>
        </B_Reports>
    </result>
</message>
```

{% endcode %}

## **동영상 리포트**

### **Request URL**

| URL                              | Method |
| -------------------------------- | ------ |
| /S-Plus\_api/getMovieReport.xml  | Get    |
| /S-Plus\_api/getMovieReport.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="161">Filed Name</th><th width="104">타입</th><th width="71">필수</th><th width="138">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID,PW 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>pub</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>M_ServiceType</td><td>Integer</td><td>Y</td><td>1</td><td>0 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : Mobile_web</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : App_android</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : App_ios</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>4 : App_ETC</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>5 : PC_web</td></tr><tr><td>M_Media</td><td>Integer</td><td>N</td><td>10001</td><td>미디어ID</td></tr><tr><td>M_Section</td><td>Integer</td><td>N</td><td>80002</td><td>섹션ID</td></tr><tr><td>M_Charge</td><td>Integer</td><td>Y</td><td>1</td><td>1 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : 과금</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : 비과금</td></tr><tr><td>cross_ad</td><td>Integer</td><td>N</td><td>1</td><td>0 : 교차상품 노출 안함</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : 교차상품 노출</td></tr><tr><td>group</td><td>String</td><td>N</td><td>media,section</td><td>media : media_code 기준 그룹화</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>section : section_code 기준 그룹화</td></tr></tbody></table>

### **Response Fields**

<table><thead><tr><th width="208">이름</th><th width="125">타입</th><th width="130">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>M_Report_Count</td><td>Integer</td><td>1000</td><td>반환되는 리스트 행 수</td></tr><tr><td>M_Reports.M_Report</td><td> </td><td> </td><td> </td></tr><tr><td>M_Day</td><td>String</td><td>2016-01-01</td><td>일자</td></tr><tr><td>M_Request</td><td>Integer</td><td>1000</td><td>광고 호출 수</td></tr><tr><td>M_Delivery</td><td>Integer</td><td>1000</td><td>광고 전달 수</td></tr><tr><td>M_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>M_ImpP</td><td>Integer</td><td>1000</td><td>노출+</td></tr><tr><td>M_View</td><td>Integer</td><td>1000</td><td>시청</td></tr><tr><td>M_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>M_CTR</td><td>String</td><td>1.11%</td><td>노출 대비 클릭</td></tr><tr><td>M_CTRP</td><td>String</td><td>1.11%</td><td>노출+ 대비 클릭</td></tr><tr><td>M_VTR</td><td>String</td><td>90.45%</td><td>노출당 시청 비율</td></tr><tr><td>M_VTRP</td><td>String</td><td>90.45%</td><td>노출+ 당 시청 비율</td></tr><tr><td>M_FillRate</td><td>String</td><td>23.87%</td><td>광고 요청 대비 노출</td></tr><tr><td>M_FillRateP</td><td>String</td><td>23.87%</td><td>광고 요청 대비 노출+</td></tr><tr><td>M_Sub_1Q</td><td>Integer</td><td>1000</td><td>동영상 시작시 노출 수</td></tr><tr><td>M_Sub_2Q</td><td>Integer</td><td>1000</td><td>동영상 25% 재생시 노출 수</td></tr><tr><td>M_Sub_3Q</td><td>Integer</td><td>1000</td><td>동영상 50% 재생시 노출 수</td></tr><tr><td>M_Sub_4Q</td><td>Integer</td><td>1000</td><td>동영상 75% 재생시 노출 수</td></tr><tr><td>M_Sub_5Q</td><td>Integer</td><td>1000</td><td>동영상 재생 종료시 노출 수</td></tr><tr><td>M_ExpectedCost</td><td>Integer</td><td>1372</td><td>예상 수익</td></tr><tr><td>M_Media</td><td>Integer</td><td>30000</td><td>미디어 코드<br>(group 파라미터에 media가 있을 경우 반환)</td></tr><tr><td>M_Section</td><td>Integer</td><td>800000</td><td>섹션 코드<br>(group 파라미터에 section이 있을 경우 반환)</td></tr><tr><td>M_Reports.M_Report.M_C_Lists.M_C_List</td><td> </td><td> </td><td>cross_ad 파라미터가 1일 경우 반환</td></tr><tr><td>M_C_Product_Name</td><td>String</td><td>전면배너</td><td>교차상품 명칭</td></tr><tr><td>M_C_Delivery</td><td>Integer</td><td>1000</td><td>교차상품 광고 전달 수</td></tr><tr><td>M_C_Imp</td><td>Integer</td><td>1000</td><td>교차상품 노출</td></tr><tr><td>M_C_ImpP</td><td>Integer</td><td>1000</td><td>교차상품 노출+</td></tr><tr><td>M_C_View</td><td>Integer</td><td>1000</td><td>교차상품 시청</td></tr><tr><td>M_C_Click</td><td>Integer</td><td>1000</td><td>교차상품 클릭</td></tr><tr><td>M_C_CTR</td><td>String</td><td>1.11%</td><td>교차상품 노출 대비 클릭</td></tr><tr><td>M_C_CTRP</td><td>String</td><td>1.11%</td><td>교차상품 노출+ 대비 클릭</td></tr><tr><td>M_C_VTR</td><td>String</td><td>90.45%</td><td>교차상품 노출당 시청 비율</td></tr><tr><td>M_C_VTRP</td><td>String</td><td>90.45%</td><td>교차상품 노출+ 당 시청 비율</td></tr><tr><td>M_C_FillRate</td><td>String</td><td>23.87%</td><td>교차상품 광고 요청 대비 노출</td></tr><tr><td>M_C_FillRateP</td><td>String</td><td>23.87%</td><td>교차상품 광고 요청 대비 노출+</td></tr><tr><td>M_C_Sub_1Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 시작시 노출 수</td></tr><tr><td>M_C_Sub_2Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 25% 재생시 노출 수</td></tr><tr><td>M_C_Sub_3Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 50% 재생시 노출 수</td></tr><tr><td>M_C_Sub_4Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 75% 재생시 노출 수</td></tr><tr><td>M_C_Sub_5Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 재생 종료시 노출 수</td></tr><tr><td>M_C_ExpectedCost</td><td>Integer</td><td>1372</td><td>교차상품 예상 수익</td></tr></tbody></table>

#### **Response Sample (일반)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <M_Report_Count>10</M_Report_Count>
        <M_Reports>
            <M_Report>
                <M_Day>2016-01-01 00:00</M_Day>
                <M_Request>1000</M_Request>
                <M_Delivery>1000</M_Delivery>
                <M_Imp>1000</M_Imp>
                <M_ImpP>1000</M_ImpP>
                <M_View>1000</M_View>
                <M_Click>1000</M_Click>
                <M_CTR>1.11%</M_CTR>
                <M_CTRP>1.11%</M_CTRP>
                <M_VTR>1000</M_VTR>
                <M_VTRP>1000</M_VTRP>                
                <M_FillRate>65.5%</M_FillRate>
                <M_FillRateP>65.5%</M_FillRateP>
                <M_Sub_1Q>1000</M_Sub_1Q>
                <M_Sub_2Q>1000</M_Sub_2Q>
                <M_Sub_3Q>1000</M_Sub_3Q>
                <M_Sub_4Q>1000</M_Sub_4Q>
                <M_Sub_5Q>1000</M_Sub_5Q>
                <M_ExpectedCost>1372</M_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Media>30000</M_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Section>800000</M_Section>                 
            </M_Report>
            <M_Report>
                ……
            </M_Report>
        </M_Reports>
    </result>
</message>
```

{% endcode %}

#### **Response Sample (교차상품)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <M_Report_Count>10</M_Report_Count>
        <M_Reports>
            <M_Report>
                <M_Day>2016-01-01</M_Day>
                <M_Request>1000</M_Request>
                <M_Delivery>1000</M_Delivery>
                <M_Imp>1000</M_Imp>
                <M_ImpP>1000</M_ImpP>
                <M_View>1000</M_View>
                <M_Click>1000</M_Click>
                <M_CTR>1.11%</M_CTR>
                <M_CTRP>1.11%</M_CTRP>
                <M_VTR>80.38%</M_VTR>
                <M_VTRP>80.38%</M_VTRP>                
                <M_FillRate>65.5%</M_FillRate>
                <M_FillRateP>65.5%</M_FillRateP>
                <M_Sub_1Q>1000</M_Sub_1Q>
                <M_Sub_2Q>1000</M_Sub_2Q>
                <M_Sub_3Q>1000</M_Sub_3Q>
                <M_Sub_4Q>1000</M_Sub_4Q>
                <M_Sub_5Q>1000</M_Sub_5Q>
                <M_ExpectedCost>1372</M_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Media>30000</M_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Section>800000</M_Section>                                 
                <M_C_Lists>
                    <M_C_List>
                        <M_C_ProductName>범퍼동영상</M_C_ProductName>
                        <M_C_Delivery>1000</M_C_Delivery>
                        <M_C_Imp>1000</M_C_Imp>
                        <M_C_ImpP>1000</M_C_ImpP>
                        <M_C_View>1000</M_C_View>
                        <M_C_Click>1000</M_C_Click>
                        <M_C_CTR>1.11%</M_C_CTR>
                        <M_C_CTRP>1.11%</M_C_CTRP>
                        <M_C_VTR>80.38%</M_C_VTR>
                        <M_C_VTRP>80.38%</M_C_VTRP>
                        <M_C_FillRate>65.5%</M_C_FillRate>
                        <M_C_FillRateP>65.5%</M_C_FillRateP>
                        <M_C_Sub_1Q>1000</M_C_Sub_1Q>
                        <M_C_Sub_2Q>1000</M_C_Sub_2Q>
                        <M_C_Sub_3Q>1000</M_C_Sub_3Q>
                        <M_C_Sub_4Q>1000</M_C_Sub_4Q>
                        <M_C_Sub_5Q>1000</M_C_Sub_5Q>
                        <M_C_ExpectedCost>322</M_C_ExpectedCost>
                    </M_C_List>
                    <M_C_List>
                        <M_C_ProductName>동영상</M_C_ProductName>
                        <M_C_Delivery>1000</M_C_Delivery>
                        <M_C_Imp>1000</M_C_Imp>
                        <M_C_ImpP>1000</M_C_ImpP>
                        <M_C_View>1000</M_C_View>
                        <M_C_Click>1000</M_C_Click>
                        <M_C_CTR>1.11%</M_C_CTR>
                        <M_C_CTRP>1.11%</M_C_CTRP>
                        <M_C_VTR>80.38%</M_C_VTR>
                        <M_C_VTRP>80.38%</M_C_VTRP>
                        <M_C_FillRate>65.5%</M_C_FillRate>
                        <M_C_FillRateP>65.5%</M_C_FillRateP>
                        <M_C_Sub_1Q>1000</M_C_Sub_1Q>
                        <M_C_Sub_2Q>1000</M_C_Sub_2Q>
                        <M_C_Sub_3Q>1000</M_C_Sub_3Q>
                        <M_C_Sub_4Q>1000</M_C_Sub_4Q>
                        <M_C_Sub_5Q>1000</M_C_Sub_5Q>
                        <M_C_ExpectedCost>322</M_C_ExpectedCost>
                    </M_C_List>
                </M_C_Lists>
            </M_Report>
            <M_Report>
                ……
            </M_Report>
        </M_Reports>
    </result>
</message>
```

{% endcode %}


# 퍼블리셔(정산리포트 포함 버전)

매체를 통해 발생된 광고 데이터 및 정산 금액을 확인할 수 있는 API 입니다. 매체 담당자를 통해 퍼블리셔 API Key를 발급해주세요.

{% hint style="info" %}
도메인 및 API Key는 별도로 제공됩니다.

캠페인 집행 담당자에게 문의해주세요.
{% endhint %}

## **에러코드**

<table><thead><tr><th width="288">코드</th><th>설명</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

## **배너 리포트**

### **Request URL**

| URL                               | Method |
| --------------------------------- | ------ |
| /S-Plus\_api/getBannerReport.xml  | Get    |
| /S-Plus\_api/getBannerReport.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="157">Filed Name</th><th width="91">타입</th><th width="70">필수</th><th width="138">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>API Tokeng</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>pub</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>B_ServiceType</td><td>Integer</td><td>N</td><td>1</td><td>0 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : Mobile_web</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : App_android</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : App_ios</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>4 : App_ETC</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>5 : PC_web</td></tr><tr><td>B_Media</td><td>Integer</td><td>N</td><td>10001</td><td>미디어ID</td></tr><tr><td>B_Section</td><td>Integer</td><td>N</td><td>80002</td><td>섹션ID</td></tr><tr><td>B_Charge</td><td>Integer</td><td>N</td><td>1</td><td>1 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : 과금</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : 비과금</td></tr><tr><td>cross_ad</td><td>Integer</td><td>N</td><td>1</td><td>0 : 교차상품 노출 안함</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : 교차상품 노출</td></tr><tr><td>group</td><td>String</td><td>N</td><td>media,section</td><td>media : media_code 기준 그룹화</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>section : section_code 기준 그룹화</td></tr></tbody></table>

### **Response Fields**

<table><thead><tr><th width="204">이름</th><th width="124">타입</th><th width="128">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>B_Report_Count</td><td>Integer</td><td>1000</td><td>반환되는 리스트 행 수</td></tr><tr><td>B_Reports.B_Report</td><td> </td><td> </td><td> </td></tr><tr><td>B_Day</td><td>Integer</td><td>2016-01-01</td><td>일자</td></tr><tr><td>B_Request</td><td>Integer</td><td>1000</td><td>광고 호출 수</td></tr><tr><td>B_Delivery</td><td>Integer</td><td>1000</td><td>광고 전달 수</td></tr><tr><td>B_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>B_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>B_CTR</td><td>String</td><td>1.27%</td><td>노출 대비 클릭</td></tr><tr><td>B_FillRate</td><td>Float</td><td>98.11</td><td>광고 요청 대비 노출</td></tr><tr><td>B_ExpectedCost</td><td>Integer</td><td>1372</td><td>예상 수익</td></tr><tr><td>B_Media</td><td>Integer</td><td>30000</td><td><p>미디어 코드</p><p>(group 파라미터에 media가 있을 경우 반환)</p></td></tr><tr><td>B_Section</td><td>Integer</td><td>800000</td><td>섹션 코드 <br>(group 파라미터에 section이 있을 경우 반환)</td></tr><tr><td>B_Reports.B_Report.B_C_Lists.B_C_List</td><td> </td><td> </td><td>cross_ad 파라미터가 1일 경우 반환</td></tr><tr><td>B_C_Product_Name</td><td>String</td><td>전면배너</td><td>교차상품 명칭</td></tr><tr><td>B_C_Delivery</td><td>Integer</td><td>500</td><td>교차상품 광고 전달 수</td></tr><tr><td>B_C_Imp</td><td>Integer</td><td>500</td><td>교차상품 노출</td></tr><tr><td>B_C_Click</td><td>Integer</td><td>500</td><td>교차상품 클릭</td></tr><tr><td>B_C_CTR</td><td>String</td><td>1.11%</td><td>교차상품 노출 대비 클릭</td></tr><tr><td>B_C_ExpectedCost</td><td>Integer</td><td>772</td><td>교차상품 예상 수익</td></tr></tbody></table>

#### **Response Sample (일반)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <B_Report_Count>10</B_Report_Count>
        <B_Reports>
            <Reports>
                <B_Day>2016-01-01 00:00</B_Day>
                <B_Request>1000</B_Request>
                <B_Delivery>1000</B_Delivery>
                <B_Imp>1000</B_Imp>
                <B_Click>1000</B_Click>
                <B_CTR>1.27%</B_CTR>
                <B_FillRate>65.5</B_FillRate>
                <B_ExpectedCost>1372</B_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Media>30000</B_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Section>800000</B_Section>
            </Reports>
            <Reports>
                ……
            </Reports>
        </B_Reports>
    </result>
</message>
```

{% endcode %}

#### **Response Sample (교차상품)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <B_Report_Count>10</B_Report_Count>
        <B_Reports>
            <Reports>
                <B_Day>2016-01-01 00:00</B_Day>
                <B_Request>1000</B_Request>
                <B_Delivery>1000</B_Delivery>
                <B_Imp>1000</B_Imp>
                <B_Click>1000</B_Click>
                <B_CTR>1.27%</B_CTR>
                <B_FillRate>65.5</B_FillRate>
                <B_ExpectedCost>1372</B_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Media>30000</B_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <B_Section>800000</B_Section>                
                <B_C_Lists>
                    <B_C_List>
                        <B_C_ProductName>전면배너</B_C_ProductName>
                        <B_C_Delivery>500</B_C_Delivery>
                        <B_C_Imp>500</B_C_Imp>
                        <B_C_Click>500</B_C_Click>
                        <B_C_CTR>0.97%</B_C_CTR>
                        <B_C_ExpectedCost>772</B_C_ExpectedCost>
                    </B_C_List>
                    <B_C_List>
                        <B_C_ProductName>전면동영상</B_C_ProductName>
                        <B_C_Delivery>500</B_C_Delivery>
                        <B_C_Imp>500</B_C_Imp>
                        <B_C_Click>500</B_C_Click>
                        <B_C_CTR>2.53%</B_C_CTR>
                        <B_C_ExpectedCost>600</B_C_ExpectedCost>
                    </B_C_List>
                </B_C_Lists>                
            </Reports>
            <Reports>
                ……
            </Reports>
        </B_Reports>
    </result>
</message>
```

{% endcode %}

## **동영상 리포트**

### **Request URL**

| URL                              | Method |
| -------------------------------- | ------ |
| /S-Plus\_api/getMovieReport.xml  | Get    |
| /S-Plus\_api/getMovieReport.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="161">Filed Name</th><th width="104">타입</th><th width="71">필수</th><th width="138">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>USER</td><td>String</td><td>Y</td><td>XXXXXX</td><td>ID,PW 암호화</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>pub</td><td>권한</td></tr><tr><td>sDate</td><td>Integer</td><td>Y</td><td>20160101</td><td>기간 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160130</td><td>기간 조회 종료일</td></tr><tr><td>M_ServiceType</td><td>Integer</td><td>Y</td><td>1</td><td>0 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : Mobile_web</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : App_android</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : App_ios</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>4 : App_ETC</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>5 : PC_web</td></tr><tr><td>M_Media</td><td>Integer</td><td>N</td><td>10001</td><td>미디어ID</td></tr><tr><td>M_Section</td><td>Integer</td><td>N</td><td>80002</td><td>섹션ID</td></tr><tr><td>M_Charge</td><td>Integer</td><td>Y</td><td>1</td><td>1 : ALL</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>2 : 과금</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>3 : 비과금</td></tr><tr><td>cross_ad</td><td>Integer</td><td>N</td><td>1</td><td>0 : 교차상품 노출 안함</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : 교차상품 노출</td></tr><tr><td>group</td><td>String</td><td>N</td><td>media,section</td><td>media : media_code 기준 그룹화</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>section : section_code 기준 그룹화</td></tr></tbody></table>

### **Response Fields**

<table><thead><tr><th width="208">이름</th><th width="125">타입</th><th width="130">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>M_Report_Count</td><td>Integer</td><td>1000</td><td>반환되는 리스트 행 수</td></tr><tr><td>M_Reports.M_Report</td><td> </td><td> </td><td> </td></tr><tr><td>M_Day</td><td>String</td><td>2016-01-01</td><td>일자</td></tr><tr><td>M_Request</td><td>Integer</td><td>1000</td><td>광고 호출 수</td></tr><tr><td>M_Delivery</td><td>Integer</td><td>1000</td><td>광고 전달 수</td></tr><tr><td>M_Imp</td><td>Integer</td><td>1000</td><td>노출</td></tr><tr><td>M_ImpP</td><td>Integer</td><td>1000</td><td>노출+</td></tr><tr><td>M_View</td><td>Integer</td><td>1000</td><td>시청</td></tr><tr><td>M_Click</td><td>Integer</td><td>1000</td><td>클릭</td></tr><tr><td>M_CTR</td><td>String</td><td>1.11%</td><td>노출 대비 클릭</td></tr><tr><td>M_CTRP</td><td>String</td><td>1.11%</td><td>노출+ 대비 클릭</td></tr><tr><td>M_VTR</td><td>String</td><td>90.45%</td><td>노출당 시청 비율</td></tr><tr><td>M_VTRP</td><td>String</td><td>90.45%</td><td>노출+ 당 시청 비율</td></tr><tr><td>M_FillRate</td><td>String</td><td>23.87%</td><td>광고 요청 대비 노출</td></tr><tr><td>M_FillRateP</td><td>String</td><td>23.87%</td><td>광고 요청 대비 노출+</td></tr><tr><td>M_Sub_1Q</td><td>Integer</td><td>1000</td><td>동영상 시작시 노출 수</td></tr><tr><td>M_Sub_2Q</td><td>Integer</td><td>1000</td><td>동영상 25% 재생시 노출 수</td></tr><tr><td>M_Sub_3Q</td><td>Integer</td><td>1000</td><td>동영상 50% 재생시 노출 수</td></tr><tr><td>M_Sub_4Q</td><td>Integer</td><td>1000</td><td>동영상 75% 재생시 노출 수</td></tr><tr><td>M_Sub_5Q</td><td>Integer</td><td>1000</td><td>동영상 재생 종료시 노출 수</td></tr><tr><td>M_ExpectedCost</td><td>Integer</td><td>1372</td><td>예상 수익</td></tr><tr><td>M_Media</td><td>Integer</td><td>30000</td><td>미디어 코드<br>(group 파라미터에 media가 있을 경우 반환)</td></tr><tr><td>M_Section</td><td>Integer</td><td>800000</td><td>섹션 코드<br>(group 파라미터에 section이 있을 경우 반환)</td></tr><tr><td>M_Reports.M_Report.M_C_Lists.M_C_List</td><td> </td><td> </td><td>cross_ad 파라미터가 1일 경우 반환</td></tr><tr><td>M_C_Product_Name</td><td>String</td><td>전면배너</td><td>교차상품 명칭</td></tr><tr><td>M_C_Delivery</td><td>Integer</td><td>1000</td><td>교차상품 광고 전달 수</td></tr><tr><td>M_C_Imp</td><td>Integer</td><td>1000</td><td>교차상품 노출</td></tr><tr><td>M_C_ImpP</td><td>Integer</td><td>1000</td><td>교차상품 노출+</td></tr><tr><td>M_C_View</td><td>Integer</td><td>1000</td><td>교차상품 시청</td></tr><tr><td>M_C_Click</td><td>Integer</td><td>1000</td><td>교차상품 클릭</td></tr><tr><td>M_C_CTR</td><td>String</td><td>1.11%</td><td>교차상품 노출 대비 클릭</td></tr><tr><td>M_C_CTRP</td><td>String</td><td>1.11%</td><td>교차상품 노출+ 대비 클릭</td></tr><tr><td>M_C_VTR</td><td>String</td><td>90.45%</td><td>교차상품 노출당 시청 비율</td></tr><tr><td>M_C_VTRP</td><td>String</td><td>90.45%</td><td>교차상품 노출+ 당 시청 비율</td></tr><tr><td>M_C_FillRate</td><td>String</td><td>23.87%</td><td>교차상품 광고 요청 대비 노출</td></tr><tr><td>M_C_FillRateP</td><td>String</td><td>23.87%</td><td>교차상품 광고 요청 대비 노출+</td></tr><tr><td>M_C_Sub_1Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 시작시 노출 수</td></tr><tr><td>M_C_Sub_2Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 25% 재생시 노출 수</td></tr><tr><td>M_C_Sub_3Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 50% 재생시 노출 수</td></tr><tr><td>M_C_Sub_4Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 75% 재생시 노출 수</td></tr><tr><td>M_C_Sub_5Q</td><td>Integer</td><td>1000</td><td>교차상품 동영상 재생 종료시 노출 수</td></tr><tr><td>M_C_ExpectedCost</td><td>Integer</td><td>1372</td><td>교차상품 예상 수익</td></tr></tbody></table>

#### **Response Sample (일반)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <M_Report_Count>10</M_Report_Count>
        <M_Reports>
            <M_Report>
                <M_Day>2016-01-01 00:00</M_Day>
                <M_Request>1000</M_Request>
                <M_Delivery>1000</M_Delivery>
                <M_Imp>1000</M_Imp>
                <M_ImpP>1000</M_ImpP>
                <M_View>1000</M_View>
                <M_Click>1000</M_Click>
                <M_CTR>1.11%</M_CTR>
                <M_CTRP>1.11%</M_CTRP>
                <M_VTR>1000</M_VTR>
                <M_VTRP>1000</M_VTRP>                
                <M_FillRate>65.5%</M_FillRate>
                <M_FillRateP>65.5%</M_FillRateP>
                <M_Sub_1Q>1000</M_Sub_1Q>
                <M_Sub_2Q>1000</M_Sub_2Q>
                <M_Sub_3Q>1000</M_Sub_3Q>
                <M_Sub_4Q>1000</M_Sub_4Q>
                <M_Sub_5Q>1000</M_Sub_5Q>
                <M_ExpectedCost>1372</M_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Media>30000</M_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Section>800000</M_Section>                 
            </M_Report>
            <M_Report>
                ……
            </M_Report>
        </M_Reports>
    </result>
</message>
```

{% endcode %}

#### **Response Sample (교차상품)**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <error>
        <code>000</code>
        <message>성공</message>
    </error>
    <result>
        <M_Report_Count>10</M_Report_Count>
        <M_Reports>
            <M_Report>
                <M_Day>2016-01-01</M_Day>
                <M_Request>1000</M_Request>
                <M_Delivery>1000</M_Delivery>
                <M_Imp>1000</M_Imp>
                <M_ImpP>1000</M_ImpP>
                <M_View>1000</M_View>
                <M_Click>1000</M_Click>
                <M_CTR>1.11%</M_CTR>
                <M_CTRP>1.11%</M_CTRP>
                <M_VTR>80.38%</M_VTR>
                <M_VTRP>80.38%</M_VTRP>                
                <M_FillRate>65.5%</M_FillRate>
                <M_FillRateP>65.5%</M_FillRateP>
                <M_Sub_1Q>1000</M_Sub_1Q>
                <M_Sub_2Q>1000</M_Sub_2Q>
                <M_Sub_3Q>1000</M_Sub_3Q>
                <M_Sub_4Q>1000</M_Sub_4Q>
                <M_Sub_5Q>1000</M_Sub_5Q>
                <M_ExpectedCost>1372</M_ExpectedCost>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Media>30000</M_Media>
                <!-- group 파라미터 값에 따라 반환 -->
                <M_Section>800000</M_Section>                                 
                <M_C_Lists>
                    <M_C_List>
                        <M_C_ProductName>범퍼동영상</M_C_ProductName>
                        <M_C_Delivery>1000</M_C_Delivery>
                        <M_C_Imp>1000</M_C_Imp>
                        <M_C_ImpP>1000</M_C_ImpP>
                        <M_C_View>1000</M_C_View>
                        <M_C_Click>1000</M_C_Click>
                        <M_C_CTR>1.11%</M_C_CTR>
                        <M_C_CTRP>1.11%</M_C_CTRP>
                        <M_C_VTR>80.38%</M_C_VTR>
                        <M_C_VTRP>80.38%</M_C_VTRP>
                        <M_C_FillRate>65.5%</M_C_FillRate>
                        <M_C_FillRateP>65.5%</M_C_FillRateP>
                        <M_C_Sub_1Q>1000</M_C_Sub_1Q>
                        <M_C_Sub_2Q>1000</M_C_Sub_2Q>
                        <M_C_Sub_3Q>1000</M_C_Sub_3Q>
                        <M_C_Sub_4Q>1000</M_C_Sub_4Q>
                        <M_C_Sub_5Q>1000</M_C_Sub_5Q>
                        <M_C_ExpectedCost>322</M_C_ExpectedCost>
                    </M_C_List>
                    <M_C_List>
                        <M_C_ProductName>동영상</M_C_ProductName>
                        <M_C_Delivery>1000</M_C_Delivery>
                        <M_C_Imp>1000</M_C_Imp>
                        <M_C_ImpP>1000</M_C_ImpP>
                        <M_C_View>1000</M_C_View>
                        <M_C_Click>1000</M_C_Click>
                        <M_C_CTR>1.11%</M_C_CTR>
                        <M_C_CTRP>1.11%</M_C_CTRP>
                        <M_C_VTR>80.38%</M_C_VTR>
                        <M_C_VTRP>80.38%</M_C_VTRP>
                        <M_C_FillRate>65.5%</M_C_FillRate>
                        <M_C_FillRateP>65.5%</M_C_FillRateP>
                        <M_C_Sub_1Q>1000</M_C_Sub_1Q>
                        <M_C_Sub_2Q>1000</M_C_Sub_2Q>
                        <M_C_Sub_3Q>1000</M_C_Sub_3Q>
                        <M_C_Sub_4Q>1000</M_C_Sub_4Q>
                        <M_C_Sub_5Q>1000</M_C_Sub_5Q>
                        <M_C_ExpectedCost>322</M_C_ExpectedCost>
                    </M_C_List>
                </M_C_Lists>
            </M_Report>
            <M_Report>
                ……
            </M_Report>
        </M_Reports>
    </result>
</message>
```

{% endcode %}

## **정산 리포트**

### **Request URL**

| URL                            | Method |
| ------------------------------ | ------ |
| /S-Plus\_api/getCalReport.xml  | Get    |
| /S-Plus\_api/getCalReport.json | Get    |

### **Request Parameters**

| Filed Name | 타입      | 필수 | 코드 예시  | 설명        |
| ---------- | ------- | -- | ------ | --------- |
| USER       | String  | Y  | XXXXXX | ID,PW 암호화 |
| Auth\_Type | String  | Y  | pub    | 권한        |
| C\_Year    | Integer | Y  | 2016   | 조회 연도     |

### **Response Fields**

<table><thead><tr><th width="251">이름</th><th>타입</th><th width="134">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>C_CalReport_Count</td><td>Integer</td><td>10</td><td>반환되는 리스트 행 수</td></tr><tr><td>C_CalReports.B_CalReport</td><td> </td><td> </td><td> </td></tr><tr><td>C_YearMonth</td><td>Integer</td><td>201601</td><td>정산년월</td></tr><tr><td>C_CalType</td><td>String</td><td>Net</td><td>매체 정산 방식</td></tr><tr><td>C_CalEstimate</td><td>Integer</td><td>1000</td><td>산정 금액</td></tr><tr><td>C_CalAdjustment</td><td>Integer</td><td>1000</td><td>조정 금액</td></tr><tr><td>C_AdjCause</td><td>Varchar</td><td>금액 재 조정</td><td>조정 사유</td></tr><tr><td>C_sMonthRev</td><td>Integer</td><td>1000</td><td>당월 수익</td></tr><tr><td>C_CarryOverRev</td><td>Integer</td><td>1000</td><td>이월 수익</td></tr><tr><td>C_CalPossible</td><td>Integer</td><td>1000</td><td>정산 가능 금액</td></tr><tr><td>C_CalFinal</td><td>Integer</td><td>1000</td><td>최종 정산 금액</td></tr></tbody></table>

#### **Response Sample**

{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8"?>
<message>
    <result>
        <C_CalReport_Count>12</C_CalReport_Count>
        <C_CalReports>
            <C_CalReport>
                <C_YearMonth>2015-01</C_YearMonth>
                <C_CalType>Net</C_CalType>
                <C_CalEstimate>1000</C_CalEstimate>
                <C_CalAdjustment>1000</C_CalAdjustment>
                <C_AdjCause>금액 재 조정</C_AdjCause>
                <C_sMonthRev>1000</C_sMonthRev>
                <C_CarryOverRev>1000</C_CarryOverRev>
                <C_CalPossible>1000</C_CalPossible>
                <C_CalFinal>1000</C_CalFinal>
            </C_CalReport>
            <C_CalReport>
                ……
            </C_CalReport>
        </C_CalReports>
    </result>
</message>
```

{% endcode %}


# MMP(Tracker)

MMP에서 Targetpick 광고 데이터를 활용하기 위한 API 입니다.

{% hint style="info" %}
도메인 및 API Key는 별도로 제공됩니다.

담당자에게 문의해주세요.
{% endhint %}

## **코드 정의**

<table><thead><tr><th width="192">구분</th><th width="77">코드</th><th>설명</th></tr></thead><tbody><tr><td>ERROR_CODE</td><td>0</td><td>성공</td></tr><tr><td> </td><td>1</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td> </td><td>2</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td> </td><td>3</td><td>조회 권한이 없습니다.</td></tr><tr><td> </td><td>4</td><td>존재하지 않는 API 입니다.</td></tr><tr><td> </td><td>5</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td> </td><td>6</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr><tr><td>OS_CODE</td><td>2</td><td>iOS</td></tr><tr><td> </td><td>3</td><td>Android</td></tr><tr><td> </td><td>-1</td><td>알수없음</td></tr></tbody></table>

## **광고주 리포트**

### **Request URL**

| URL                                | Method |
| ---------------------------------- | ------ |
| /S-Plus\_api/MAT/getAdverList.xml  | Get    |
| /S-Plus\_api/MAT/getAdverList.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="174">Filed Name</th><th width="103">타입</th><th width="76">필수</th><th width="122">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>sDate</td><td>String</td><td>Y</td><td>20160101</td><td>리포트 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160131</td><td>리포트 조회 종료일</td></tr><tr><td>USER</td><td>String</td><td>Y</td><td> </td><td>메조미디어에서 발급한 고유 ID</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>mat</td><td>mat 구분 값</td></tr></tbody></table>

### **Response Fields**

<table><thead><tr><th width="216">이름</th><th width="147">타입</th><th width="130">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>Adver_List_Count</td><td>Integer</td><td>1</td><td>반환되는 리스트 행 수</td></tr><tr><td>AdverList.Adver_List</td><td>Array</td><td> </td><td> </td></tr><tr><td>adver_no</td><td>Integer</td><td>1645</td><td>광고주 고유 번호</td></tr><tr><td>adver_name</td><td>String</td><td>광고주</td><td>광고주 명</td></tr><tr><td>brand_no</td><td>Integer</td><td>2944</td><td>광고주 – 브랜드 고유 번호</td></tr><tr><td>brand_name</td><td>String</td><td>브랜드</td><td>광고주 – 브랜드 명</td></tr><tr><td>imps</td><td>Integer</td><td>145</td><td>노출 수</td></tr><tr><td>click</td><td>Integer</td><td>561</td><td>클릭 수</td></tr></tbody></table>

#### **Response Sample**

{% code lineNumbers="true" %}

```xml
{
  "error_code": "000",
  "Adver_List_Count": 1,
  "Adver_List": [
    {
      "adver_no": 1645,
      "adver_name": "펀플웍스",
      "brand_no": 2912,
      "brand_name": "완소여단",
      "imps": 51,
      "click": 0
    }
  ]
}
```

{% endcode %}

## **캠페인 리포트**

### **Request URL**

| URL                                   | Method |
| ------------------------------------- | ------ |
| /S-Plus\_api/MAT/getCampaignList.xml  | Get    |
| /S-Plus\_api/MAT/getCampaignList.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="168">Filed Name</th><th width="108">타입</th><th width="82">필수</th><th width="106">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>sDate</td><td>String</td><td>Y</td><td>20160101</td><td>리포트 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160131</td><td>리포트 조회 종료일</td></tr><tr><td>USER</td><td>String</td><td>Y</td><td> </td><td>메조미디어에서 발급한 고유 ID</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>mat</td><td>mat 구분 값</td></tr><tr><td>Adver_No</td><td>Integer</td><td>Y</td><td>1645</td><td>광고주 고유 번호</td></tr><tr><td>Brand_No</td><td>Integer</td><td>N</td><td>2944</td><td>광고주 – 브랜드 고유 번호</td></tr><tr><td>Group_Day</td><td>Integer</td><td>N</td><td>1</td><td>0 : 일자별 Grouping 안함</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : 일자별 Grouping 처리</td></tr><tr><td>Group_OS</td><td>Integer</td><td>N</td><td>1</td><td>0 : OS 별 Grouping 안함</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>1 : OS 별 Grouping 처리</td></tr></tbody></table>

### **Response Fields**

<table><thead><tr><th width="284">이름</th><th width="98">타입</th><th width="130">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>Campaign_List_Count</td><td>Integer</td><td>1</td><td>반환되는 리스트 행 수</td></tr><tr><td>Campaign_List.Campaign_List</td><td>Array</td><td> </td><td> </td></tr><tr><td>cmp_no</td><td>Integer</td><td>306</td><td>캠페인 고유 번호</td></tr><tr><td>cmp_id</td><td>String</td><td>캠페인 테스트</td><td>캠페인 명</td></tr><tr><td>app_id_android</td><td>String</td><td>test.android</td><td>앱 ID ( 안드로이드 )</td></tr><tr><td>app_id_ios</td><td>String</td><td>test.ios</td><td>앱 ID ( iOS )</td></tr><tr><td>cmp_start_date</td><td>String</td><td>2018-10-01</td><td>캠페인 시작 일자</td></tr><tr><td>cmp_end_date</td><td>String</td><td>2018-10-15</td><td>캠페인 종료 일자</td></tr><tr><td>cmp_budget_total</td><td>Integer</td><td>515110</td><td>캠페인 총 예산</td></tr><tr><td>currency</td><td>String</td><td>KRW</td><td>통화 코드</td></tr><tr><td>imps</td><td>Integer</td><td>145</td><td>노출 수</td></tr><tr><td>click</td><td>Integer</td><td>561</td><td>클릭 수</td></tr><tr><td>cost</td><td>Integer</td><td>1742</td><td>소진 금액</td></tr><tr><td>day</td><td>String</td><td>2018-10-01</td><td><p>리포트 일자</p><p>(Group_Day 가 1 일 경우 반환)</p></td></tr><tr><td>os_code</td><td>String</td><td>1</td><td><p>OS 코드</p><p>(Group_OS 가 1 일 경우 반환)</p></td></tr></tbody></table>

#### **Response Sample**

{% code lineNumbers="true" %}

```xml
{
  "error_code": "000",
  "Campaign_List_Count": 1,
  "Campaign_List": [
    {
      "cmp_no": 306,
      "cmp_id": "20170421_ENP Games_반지_NCPI",
      "app_id_android": "aaa",
      "app_id_ios": "bbb",
      "cmp_start_date": "2017-04-20",
      "cmp_end_date": "2017-08-31",
      "cmp_budget_total": 200000000,
      "currency": "KRW",
      "imps": 0,
      "click": 39580372,
      "cost": 0
    }
  ]
}
```

{% endcode %}

## **광고물 리포트**

### **Request URL**

| URL                             | Method |
| ------------------------------- | ------ |
| /S-Plus\_api/MAT/getADList.xml  | Get    |
| /S-Plus\_api/MAT/getADList.json | Get    |

### **Request Parameters**

<table><thead><tr><th width="137">Filed Name</th><th width="99">타입</th><th width="72">필수</th><th width="105">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>sDate</td><td>String</td><td>Y</td><td>20160101</td><td>리포트 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160131</td><td>리포트 조회 종료일</td></tr><tr><td>USER</td><td>String</td><td>Y</td><td> </td><td>메조미디어에서 발급한 고유 ID</td></tr><tr><td>Auth_Type</td><td>String</td><td>Y</td><td>mat</td><td>mat 구분 값</td></tr><tr><td>Adver_No</td><td>Integer</td><td>Y</td><td>1645</td><td>광고주 고유 번호</td></tr><tr><td>Cmp_No</td><td>Integer</td><td>Y</td><td>306</td><td>캠페인 고유 번호</td></tr><tr><td>Group_Day</td><td>Integer</td><td>N</td><td>1</td><td>리포트 일자(Group_Day 가 1 일 경우 반환)</td></tr><tr><td>Group_OS</td><td>Integer</td><td>N</td><td>1</td><td>OS 코드(Group_OS 가 1 일 경우 반환)</td></tr><tr><td>Group_Pub</td><td>Integer</td><td>N</td><td>1</td><td>퍼블리셔 코드(Group_Pub 이 1 일 경우 반환)</td></tr></tbody></table>

#### **Response Fields**

<table><thead><tr><th width="170">이름</th><th width="86">타입</th><th width="250">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>AD_Count</td><td>Integer</td><td>1</td><td>반환되는 리스트 행 수</td></tr><tr><td>AD_List.AD_List</td><td>Array</td><td> </td><td> </td></tr><tr><td>ads_no</td><td>Integer</td><td>9502</td><td>애드 고유 번호</td></tr><tr><td>ads_id</td><td>String</td><td>광고11</td><td>애드 명</td></tr><tr><td>img_path</td><td>String</td><td> </td><td>광고 소재 경로</td></tr><tr><td>landing_url</td><td>String</td><td>http://www.mezzomedia.co.kr</td><td>광고물 랜딩 url</td></tr><tr><td>currency</td><td>String</td><td>KRW</td><td>통화 코드</td></tr><tr><td>imps</td><td>Integer</td><td>5151</td><td>노출 수</td></tr><tr><td>click</td><td>Integer</td><td>144</td><td>클릭 수</td></tr><tr><td>cost</td><td>Integer</td><td>3050</td><td>소진 금액</td></tr><tr><td>day</td><td>String</td><td>2018-10-01</td><td>리포트 일자<br>(Group_Day 가 1 일 경우 반환)</td></tr><tr><td>os_code</td><td>Integer</td><td>3</td><td>OS 코드<br>(Group_OS 가 1 일 경우 반환)</td></tr><tr><td>section_no</td><td>Integer</td><td>5</td><td>퍼블리셔 코드<br>(Group_Pub 이 1 일 경우 반환)</td></tr></tbody></table>

#### **Response Sample**

{% code lineNumbers="true" %}

```xml
{
  "error_code": "000",
  "AD_List_Count": 2,
  "AD_List": [
    {
      "ads_no": 9502,
      "ads_id": "20170421_ENP Games_반지_NCPI_AOS",
      "img_path": "",
      "landing_url": "",
      "currency": "KRW",
      "imps": 0,
      "click": 38725073,
      "cost": 0
    },
    {
      "ads_no": 9503,
      "ads_id": "20170421_ENP Games_반지_NCPI_iOS",
      "img_path": "",
      "landing_url": "",
      "currency": "KRW",
      "imps": 0,
      "click": 855299,
      "cost": 0
    }
  ]
}
```

{% endcode %}


# for DSP

CJ 메조미디어에서 제공하는 광고 솔루션에는 배너 광고를 제공하는 TARGETPICK 과 비디오 광고를 제공하는 TARGETPICK VIDEO 가 있습니다.&#x20;

현재 SSP 에서는 배너 광고와 비디오 광고를 모두 지원하고 있으며 각각, DSP 에 광고를 요청하는 API 규격을 제공하고 있습니다.

CJ 메조미디어 SSP 와 연동을 하는 DSP 는 본 API 가이드의 연동 규약을 준수해야 합니다.


# 배너 광고

배너 광고 연동을 위한 Open RTB 규약입니다.

## 1. **REQUEST**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 SSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 작성해 DSP 인터페이스를 호출합니다. 요청 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격을 따릅니다.

### **Request object**

| 필드     | 유형           | 필수 | 설명                                               |
| ------ | ------------ | -- | ------------------------------------------------ |
| id     | string       | Y  | 요청 유니크 아이디                                       |
| cur    | string array | N  | ISO-4217-alpha 경매에 사용할 수 있는 통화 입니다. 예: “KRW”     |
| test   | integer      | N  | 경매가 테스트 모드(1)건 실시간 모드(0)건, 테스트 경매에는 입찰할 수 없습니다   |
| site   | object       | Y  | [`Site`](#site) 객체를 참고하십시오.                      |
| app    | object       | Y  | [`App`](#app) 객체를 참고하십시오.                        |
| device | object       | Y  | [`Device`](#device) 객체를 참고하십시오.                  |
| user   | object       | Y  | [`User`](#user) 객체를 참고하십시오.                      |
| imp    | object array | Y  | [`Imp`](#imp) 객체를 참고하십시오.                        |
| at     | integer      | Y  | 0 : fixed price, 1: first price, 2: second price |
| tmax   | integer      | Y  | 최대허용시간 (ms).                                     |
| bcat   | string array | N  | IAB 카테고리 기준으로 광고주 카테고리를 차단합니다.                   |
| badv   | string array | N  | 광고주의 도메인을 차단합니다.                                 |
| bapp   | string array | N  | App의 번들이나 패키지명을 차단합니다.                           |
| ext    | object       | N  | [`Ext`](#ext) 객체를 참고하십시오.                        |

### **Site**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| domain    | string       | N  | 사이트 도메인                               |
| page      | string       | N  | 페이지 url                               |
| ref       | string       | N  | 현재페이지로 이동해오기 바로 전 페이지의 주소             |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`Publisher`](#publisher) 객체를 참고하십시오. |

### **App**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| bundle    | string       | Y  | 번들 이름, 패키지 이름                         |
| storeurl  | string       | N  | 앱스토어 URL                              |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`Publisher`](#publisher) 객체를 참고하십시오. |

### **Publisher**

> * [`Site`](#site) / publisher
> * [`App`](#app) / publisher

| 필드            | 유형     | 필수 | 설명                                                                                                                                    |
| ------------- | ------ | -- | ------------------------------------------------------------------------------------------------------------------------------------- |
| id            | string | Y  | 퍼블리셔 ID                                                                                                                               |
| name          | string | N  | 퍼블리셔 명                                                                                                                                |
| domain        | string | N  | 사이트 도메인                                                                                                                               |
| product\_attr | string | N  | <p>광고상품코드 </p><ul><li>1: 띠배너 </li><li>2: 전면배너 </li><li>6: 정사각형 및 직사각형</li><li>7: 스카이스크래퍼</li><li>8: 리더보드 </li><li>12: 스플래시 </li></ul> |

### **Device**

| 필드    | 유형      | 필수 | 설명                                                                |
| ----- | ------- | -- | ----------------------------------------------------------------- |
| adid  | string  | Y  | 디바이스의  ADID                                                       |
| make  | string  | Y  | <p>디바이스의 제조사 <br>예) samsung</p>                                   |
| ua    | string  | Y  | 디바이스의 User Agent 정보                                               |
| dnt   | integer | N  | <p>위치 추적 금지 활성화 여부</p><ul><li>0: 추적 가능</li><li>1: 추적 금지</li></ul> |
| ip    | string  | Y  | IPV4 주소                                                           |
| model | string  | N  | 모델명                                                               |
| os    | string  | Y  | 운영체제. 예) iOS, Anroid                                              |
| osv   | string  | Y  | 운영체제 버전. 예) 8.1, 9.2                                              |
| js    | integer | N  | RTB 프로토콜에 1로 정의되어 있습니다.                                           |
| ifa   | string  | Y  | Apple IFA 또는 Google 의 ADID                                        |

### **User**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드입니다.
{% endhint %}

| 필드 | 유형     | 필수 | 설명         |
| -- | ------ | -- | ---------- |
| id | string | Y  | 사용자의 고유 ID |

### **Imp**

| 필드                | 유형      | 필수 | 설명                                                                                                                        |
| ----------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y  | 노출에 대한 유니크 아이디                                                                                                            |
| bidfloor          | float   | Y  | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12                                                                                              |
| bidfloorcur       | string  | Y  | 통화, 예) ‘KRW’                                                                                                              |
| secure            | integer | Y  | <ul><li>0 : http</li><li>1 : https</li></ul>                                                                              |
| type              | string  | Y  | BANNER                                                                                                                    |
| banner            | object  | Y  | [`Banner`](#banner) 객체를 참고하십시오.                                                                                           |
| instl             | integer | Y  | <p>전면광고 여부를 전달합니다. (default: 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y  | SSP 플랫폼명 또는 SDK명을 의미합니다.                                                                                                  |
| displaymanagerver | string  | Y  | SSP 플랫폼 또는 SDK 버전을 의미합니다.                                                                                                 |

### **Banner**

> [`Imp`](#imp) / banner

| 필드 | 유형      | 필수 | 설명        |
| -- | ------- | -- | --------- |
| w  | integer | Y  | 배너의 가로 크기 |
| h  | integer | Y  | 배너의 세로 크기 |

### **Ext**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드           | 유형      | 필수 | 설명                                                                                                                                             |
| ------------ | ------- | -- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| price\_type  | integer | N  | <ul><li>0: CPM</li><li>2: CPC</li></ul>                                                                                                        |
| click\_macro | integer | N  | <p>1: DSP매체에서 ADM내부에 클릭 Tracking을 받을 수 있는 매크로${MEZZO\_CLICK\_URL}을 제공해야 합니다.<br></p><p>DSP에서 click이 이루어질 때, 매크로로 치환된 click url를 발생시켜야 합니다.</p> |

### **요청 예제**

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
  "id": "55d9d872-6129-497d-8187-46ffea622dbe$1278072412$KKHSVVWN",
  "test": 1,
  "cur": "USD",
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "nodes": [
          {
            "asi": "mman.kr",
            "sid": "31998",
            "rid": "55d9d872-6129-497d-8187-46ffea622dbe$1278072412$KKHSVVWN",
            "hp": 1
          }
        ],
        "complete": 1
      }
    }
  },
  "regs": {
    "ext": {
      "us_privacy": "1---"
    }
  },
  "tmax": 320,
  "at": 2,
  "imp": [
    {
      "tagid": "805013_com.test.mezzo",
      "secure": 0,
      "clickbrowser": 1,
      "displaymanager": "ManSDK",
      "displaymanagerver": "200",
      "instl": 0,
      "banner": {
        "w": 320,
        "h": 50,
        "api": [
          1,
          2
        ]
      },
      "ext": {},
      "bidfloorcur": "USD",
      "bidfloor": 0.0008411677387431965,
      "id": "166330331300"
    }
  ],
  "app": {
    "publisher": {
      "id": "31998",
      "name": "test-pub-app-name",
      "product_attr": 1
    },
    "id": "805013_com.test.mezzo",
    "name": "test-pub-app-name",
    "bundle": "com.test.mezzo",
    "storeurl": "https://play.google.com/store/apps/details?id=com.mz.mezzomediaapp",
    "cat": [
      "IAB9"
    ]
  },
  "user": {
    "id": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1"
  },
  "device": {
    "geo": {
      "country": "KOR"
    },
    "adid": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1",
    "ifa": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1",
    "dnt": 0,
    "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
    "ip": "58.231.40.30",
    "make": "samsung",
    "os": "Android",
    "osv": "9",
    "model": "SM-G955N",
    "language": "ko",
    "js": 1,
    "devicetype": 1,
    "ext": {
      "gain": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1"
    }
  },
  "ext": {
    "request_time": 1663303313,
    "price_type": 0
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="WEB" %}
{% code lineNumbers="true" %}

```json
{
  "id": "b2b7e6c7-585b-45de-b55a-f219611c3cc6$1277829435$KKHSVVWN",
  "test": 1,
  "cur": [
    "USD"
  ],
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "nodes": [
          {
            "asi": "mman.kr",
            "sid": "31998",
            "rid": "b2b7e6c7-585b-45de-b55a-f219611c3cc6$1277829435$KKHSVVWN",
            "hp": 1
          }
        ],
        "complete": 1
      }
    }
  },
  "regs": {
    "ext": {
      "us_privacy": "1---"
    }
  },
  "tmax": 320,
  "at": 2,
  "imp": [
    {
      "tagid": "805013_com.test.mezzo",
      "secure": 0,
      "instl": 0,
      "banner": {
        "w": 320,
        "h": 50,
        "api": [
          1,
          2
        ]
      },
      "ext": {},
      "bidfloorcur": "USD",
      "bidfloor": 0.0008411677387431965,
      "id": "166330623100"
    }
  ],
  "site": {
    "publisher": {
      "id": "31998",
      "name": "test-pub-site-name",
      "domain": "com.test.mezzo",
      "product_attr": 1
    },
    "id": "805013_com.test.mezzo",
    "name": "test-pub-site-name",
    "domain": "com.test.mezzo",
    "page": "http://mtagdev.mman.kr:9300/V2/banner_step2.html",
    "ref": "http://mtagdev.mman.kr:9300/",
    "mobile": 1,
    "cat": [
      "IAB9"
    ]
  },
  "user": {
    "id": "4fbf0ac3-63bb-43c5-83ab-418ea1fe0a12"
  },
  "device": {
    "geo": {
      "country": "KOR"
    },
    "adid": "4fbf0ac3-63bb-43c5-83ab-418ea1fe0a12",
    "ifa": "",
    "dnt": 0,
    "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
    "ip": "58.231.40.30",
    "make": "samsung",
    "os": "Android",
    "osv": "9",
    "model": "SM-G955N",
    "language": "ko",
    "js": 1,
    "devicetype": 1
  },
  "ext": {
    "request_time": 1663306231,
    "price_type": 0
  }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **2. RESPONSE**

{% hint style="info" %}
DSP :arrow\_right: SSP
{% endhint %}

DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다. 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격을 따릅니다.

### **Bid Response**

{% hint style="info" %}
JSON 형식의 응답 객체입니다.
{% endhint %}

| 필드      | 유형           | 필수 | 설명                                                                                     |
| ------- | ------------ | -- | -------------------------------------------------------------------------------------- |
| id      | string       | Y  | Bid Request 의 ID                                                                       |
| bidid   | string       | Y  | Bid 오브젝트의 ID                                                                           |
| cur     | string       | Y  | 입찰시 사용할 통화. 예) KRW                                                                     |
| seatbid | object array | Y  | <p><a href="#seatbid"><code>Seatbid</code></a> 객체 배열입니다. <br>입찰이 이루어지려면 1+가 필요합니다.</p> |

### **Seatbid**

| 필드   | 유형           | 필수 | 설명                                                                             |
| ---- | ------------ | -- | ------------------------------------------------------------------------------ |
| seat | string       | Y  | 입찰 정보를 관리하는 ID                                                                 |
| bid  | object array | Y  | <p><a href="#bid"><code>Bid</code></a> 객체 배열입니다. <br>입찰이 이루어지려면 1+가 필요합니다.</p> |

### **Bid**

| 필드      | 유형            | 필수 | 설명                                                                                 |
| ------- | ------------- | -- | ---------------------------------------------------------------------------------- |
| id      | string        | Y  | 입찰 정보를 관리하는 ID                                                                     |
| impid   | string        | Y  | <p>입찰 요청의 노출과 관련된 노출 ID입니다. <br>입찰 요청 노출 객체 ID와 반드시 일치해야 합니다.</p>                  |
| price   | float         | Y  | 입찰 가격                                                                              |
| cat     | string array  | Y  | 카테고리                                                                               |
| nurl    | string        | N  | <p>낙찰 알림 url (win URL)<br>낙찰가를 {AUCTION\_PRICE} 매크로에 치환하여 전달합니다.</p>               |
| burl    | string        | N  | <p>낙찰 청구 알림 url (Billing notice URL)<br>낙찰가를 {AUCTION\_PRICE} 매크로에 치환하여 전달합니다.</p> |
| lurl    | string        | N  | <p>유찰 알림 url (Loss notice URL)<br>{AUCTION\_LOSS} 매크로에 유찰 사유 코드를 치환하여 전달합니다.</p>   |
| adm     | string (html) | Y  | [`ADM`](#adm) 객체를 참고하십시오.                                                          |
| iurl    | string        | Y  | 노출 image URL                                                                       |
| adomain | string array  | Y  | 블랙리스트를 검사하는 광고주 도메인                                                                |
| cid     | string        | Y  | 광고주 캠페인명 / id                                                                      |
| crid    | string        | Y  | 광고주 광고물명 / id                                                                      |
| w       | integer       | Y  | 광고 사이즈                                                                             |
| h       | integer       | Y  | 광고 사이즈                                                                             |
| ext     | string        | Y  | 확장 영역                                                                              |

### **ADM**

{% hint style="info" %}
개행문자와 공백이 없는 html입니다.
{% endhint %}

{% hint style="warning" %}

#### product\_attr: 12(스플래시) 체크리스트 (그 외 항목은 일반 배너와 동일하게 적용)

* [ ] **소재 비율:** 고정 사이즈가 아닌 **100% 비율**로 적용
* [ ] **반응형 처리:** 매체 광고 영역과 소재 비율이 상이할 경우에도 소재 비율을 유지하면서 광고 영역에 꽉 차게 (100%) 노출되도록 CSS 값 추가 (예: `object-fit: contain` 등, 구체적인 구현 방식은 제한하지 않음)
* [ ] **제외 항목:** 로고 및 클릭 URL 제외
  {% endhint %}

### **응답 예제**

{% tabs %}
{% tab title="success" %}
{% code lineNumbers="true" %}

```json
{
  "id": "ece5c105-dd24-468f-8392-d624b8d49953",
  "seatbid": [
    {
      "bid": [
        {
          "id": "58eb3071faff4576320e4fe9",
          "impid": "149015951000",
          "price": 50,
          "cat": ["iab1", "iab2", "iab2"],
          "nurl": "win url",
          "adm": "<html>...</html>",
          "iurl": "image.jpg",
          "adomain":["advertiserdomain.com"],
          "cid": "80",
          "crid": "188",
          "h": 50,
          "w": 320,
          "ext": {}
        }
      ],
      "seat": "dsp id"
    }
  ],
  "bidid": "dsp",
  "cur": "KRW"
}
```

{% endcode %}
{% endtab %}

{% tab title="noad" %}
{% code lineNumbers="true" %}

```json
{
  "id": "",
  "seatbid": [],
  "bidid": "mezzo",
  "cur": "KRW"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **3. SKAdNetwork 지원(iOS14 이상)**

{% hint style="info" %}
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다.</td></tr><tr><td>3</td><td>Apple로부터 발급받은 SKAdNetwork ID를 CJ MezzoMedia 담당자에게 전달하고<br>CJ MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다.</td></tr><tr><td>4</td><td>DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다.</td></tr><tr><td>5</td><td>광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다.</td></tr><tr><td>6</td><td>DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다.</td></tr></tbody></table>

### **광고요청 추가내용 (SKAdNetwork)**

> BidRequest / imp / banner / ext / skadn

해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 한다.

<table data-header-hidden><thead><tr><th width="85">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</td></tr><tr><td>2</td><td>사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다.</td></tr><tr><td>3</td><td>SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다.</td></tr><tr><td>4</td><td>DSP는 CJ 메조미디어의 Bid Request 규약을 준수해야한다.</td></tr></tbody></table>

| 필드         | 유형     | 필수 | 설명                                                                     | 예                                        |
| ---------- | ------ | -- | ---------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                    | “version”:”2.0”                          |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.app.bundle’ 과 매칭</p> | “sourceapp”:”000000000”                  |
| skadnetids | string | Y  | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs                             | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### **광고응답 추가내용 (SKAdNetwork)**

{% hint style="info" %}
BidResponse / imp / banner / ext / skadn
{% endhint %}

| 필드         | 유형     | 필수 | 설명                                                                                 | 예                                               |
| ---------- | ------ | -- | ---------------------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                                | “version”:”2.0”                                 |
| network    | string | Y  | <p>광고 네트워크 식별자.<br>Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함</p>                    | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y  | <p>Apple의 규격에 맞는 캠페인 ID.<br>1과 100 사이의 정수를 이용해서 표현해야함</p>                          | “campaign”:”45”                                 |
| itunesitem | string | Y  | Apple App 스토어에 등록된 광고주 App ID. ‘Bidresponse.bid.bundle’과 매칭                        | “itunesitem”:”123456789”                        |
| nonce      | string | Y  | 개별 광고 response의 유니크 ID                                                             | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭</p> | “sourceapp”:”000000000”                         |
| timestamp  | string | Y  | Unix time을 string 값으로 전달                                                           | “timestamp”:”1234567890”                        |
| signature  | string | Y  | Apple에서 제공하는 SKAdNetwork sigature 값                                                | “signature”:”ABCDEFGHijkl-lmb…”                 |

### **예제**

{% tabs %}
{% tab title="요청" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="응답" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 비디오 광고

비디오 광고 연동을 위한 Open RTB 규약입니다.

## 1. **REQUEST**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 SSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 작성해 DSP 인터페이스를 호출합니다. 요청 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격을 따릅니다.

### **Request object**

| 필드     | 유형           | 필수 | 설명                                                                               |
| ------ | ------------ | -- | -------------------------------------------------------------------------------- |
| id     | string       | Y  | 요청 유니크 아이디                                                                       |
| cur    | string array | N  | <p>ISO-4217-alpha 경매에 사용할 수 있는 통화 입니다. <br>예: “KRW”</p>                          |
| test   | integer      | N  | 경매가 테스트 모드(1)건 실시간 모드(0)건, 테스트 경매에는 입찰할 수 없습니다                                   |
| at     | integer      | Y  | <ul><li>0 : fixed price</li><li>1: first price</li><li>2: second price</li></ul> |
| tmax   | integer      | Y  | 최대허용시간 (ms).                                                                     |
| imp    | object array | Y  | [`Imp`](#imp) 객체를 참고하십시오.                                                        |
| app    | object       | Y  | [`App`](#app) 객체를 참고하십시오.                                                        |
| device | object       | Y  | [`Device`](#device) 객체를 참고하십시오.                                                  |
| user   | object       | Y  | [`User`](#user) 객체를 참고하십시오.                                                      |
| bcat   | string array | N  | IAB 카테고리 기준으로 광고주 카테고리를 차단합니다.                                                   |
| badv   | string array | N  | 광고주의 도메인을 차단합니다.                                                                 |
| bapp   | string array | N  | App의 번들이나 패키지명을 차단합니다.                                                           |
| ext    | object       | Y  | [`Ext`](#ext) 객체를 참고하십시오.                                                        |

### **Imp**

| 필드                | 유형      | 필수 | 설명                                                                                                                        |
| ----------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y  | 노출에 대한 유니크 아이디                                                                                                            |
| bidfloor          | float   | Y  | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12                                                                                              |
| bidfloorcur       | string  | Y  | 통화, 예) ‘KRW’                                                                                                              |
| secure            | integer | Y  | <ul><li>0: http</li><li>1: https</li></ul>                                                                                |
| video             | object  | Y  | [`Video`](#video) 객체를 참고하십시오.                                                                                             |
| instl             | integer | Y  | <p>전면광고 여부를 전달합니다. (default: 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y  | SSP 플랫폼명 또는 SDK명을 의미합니다.                                                                                                  |
| displaymanagerver | string  | Y  | SSP 플랫폼 또는 SDK 버전을 의미합니다.                                                                                                 |

### **Video**

> [`Imp`](#imp) / video

| 필드          | 유형            | 필수 | 설명                                                                                                                     |
| ----------- | ------------- | -- | ---------------------------------------------------------------------------------------------------------------------- |
| mimes       | string array  | Y  | MIME 타입. 예) “video/mp4”                                                                                                |
| w           | integer       | Y  | 비디오의 가로 크기                                                                                                             |
| h           | integer       | Y  | 비디오의 세로 크기                                                                                                             |
| minduration | integer       | Y  | 비디오가 재생되어야 하는 최소 시간(초)                                                                                                 |
| maxduration | integer       | Y  | 비디오가 재생될 수 있는 최대 시간(초)                                                                                                 |
| protocols   | integer array | Y  | VAST 버전. “3” 을 전달합니다.                                                                                                  |
| startdelay  | integer       | Y  | <p>프리롤, 미드롤, 포스트롤 광고 구분값을 전달합니다.</p><ul><li>0: 프리롤</li><li>-1: 일반 미드롤</li><li>-2: 일반 포스트롤</li></ul>                    |
| linearity   | integer       | Y  | <ul><li>1: in stream</li><li>2: out stream</li></ul>                                                                   |
| delivery    | integer array | Y  | 2 (Progressive) 로 전달합니다.                                                                                               |
| placement   | integer       | Y  | <p>비디오 게재 위치</p><ul><li>1: 플레이어 내</li><li>2: 배너 내</li><li>3: 기사 내</li><li>4: 피드 내</li><li>5: 전면 / 슬라이드 / 플로팅</li></ul> |
| ext         | object        | N  | 표준 항목 외에 필요한 정보를 전달합니다.(ex, rewarded)                                                                                  |

### **Video / ext**

> [`Imp`](#imp) / video / ext

| Field    | Type    | Required | Description                                                                            |
| -------- | ------- | -------- | -------------------------------------------------------------------------------------- |
| rewarded | integer | N        | <p>Reward 광고 여부를 전달합니다.</p><ul><li>0: no (non-reward)</li><li>1: yes(reward)</li></ul> |

### **App**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| bundle    | string       | Y  | 번들 이름, 패키지 이름                         |
| storeurl  | string       | N  | 앱스토어 URL                              |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`Publisher`](#publisher) 객체를 참고하십시오. |

### **Publisher**

> [`App`](#app) / publisher

| 필드   | 유형           | 필수 | 설명      |
| ---- | ------------ | -- | ------- |
| id   | string       | Y  | 퍼블리셔 ID |
| name | string       | N  | 퍼블리셔 명  |
| cat  | string array | N  | 카테고리    |

### **Device**

| 필드    | 유형      | 필수 | 설명                                                                  |
| ----- | ------- | -- | ------------------------------------------------------------------- |
| adid  | string  | Y  | 디바이스의 ADID                                                          |
| make  | string  | Y  | <p>디바이스의 제조사<br>예) samsung</p>                                      |
| ua    | string  | Y  | 디바이스의 User Agent 정보                                                 |
| dnt   | integer | N  | <p>위치 추적 금지 활성화 여부. </p><ul><li>0: 추적 가능</li><li>1: 추적 금지</li></ul> |
| ip    | string  | Y  | IPV4 주소                                                             |
| model | string  | N  | 모델명                                                                 |
| os    | string  | Y  | 운영체제. 예) iOS, Anroid                                                |
| osv   | string  | Y  | 운영체제 버전. 예) 8.1, 9.2                                                |
| js    | integer | N  | RTB 프로토콜에 1로 정의되어 있습니다.                                             |
| ifa   | string  | Y  | Apple IFA 또는 Google 의 ADID                                          |

### **User**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드 | 유형     | 필수 | 설명         |
| -- | ------ | -- | ---------- |
| id | string | Y  | 사용자의 고유 ID |

### **Ext**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드          | 유형      | 필수 | 설명                                      |
| ----------- | ------- | -- | --------------------------------------- |
| Price\_type | integer | N  | <ul><li>0: CPM</li><li>2: CPC</li></ul> |

### **요청 예제**&#x20;

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
  "id": "eb713f5a-3773-4ae7-9a33-884164172255$1277830896$KKHSVVWN",
  "test": 1,
  "cur": [
    "USD"
  ],
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "nodes": [
          {
            "asi": "mman.kr",
            "sid": "31998",
            "rid": "eb713f5a-3773-4ae7-9a33-884164172255$1277830896$KKHSVVWN",
            "hp": 1
          }
        ],
        "complete": 1
      }
    }
  },
  "regs": {
    "ext": {
      "us_privacy": "1---"
    }
  },
  "tmax": 500,
  "at": 2,
  "imp": [
    {
      "tagid": "805010_com.test.mezzo",
      "secure": 0,
      "clickbrowser": 1,
      "displaymanager": "ManSDK",
      "displaymanagerver": "200",
      "instl": 0,
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "w": 1920,
        "h": 1080,
        "placement": 1,
        "skip": 1,
        "playbackmethod": [
          2
        ],
        "protocols": [
          2,
          3
        ],
        "delivery": [
          2
        ],
        "ext": {
          "rewarded": 0
        },
        "minduration": 7,
        "maxduration": 60,
        "startdelay": 1,
        "linearity": 1
      },
      "bidfloorcur": "USD",
      "bidfloor": 0.008411677387431964,
      "id": "166330732500"
    }
  ],
  "app": {
    "publisher": {
      "id": "31998",
      "name": "test-pub-app-name",
      "product_attr": 4
    },
    "id": "805010_com.test.mezzo",
    "name": "test-pub-app-name",
    "bundle": "com.test.mezzo",
    "storeurl": "https://play.google.com/store/apps/details?id=com.mz.mezzomediaapp",
    "cat": [
      "IAB9"
    ]
  },
  "user": {
    "id": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1"
  },
  "device": {
    "geo": {
      "country": "KOR"
    },
    "adid": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1",
    "ifa": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1",
    "dnt": 0,
    "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
    "ip": "58.231.40.30",
    "make": "samsung",
    "os": "Android",
    "osv": "9",
    "model": "SM-G955N",
    "language": "ko",
    "js": 1,
    "devicetype": 1,
    "ext": {
      "gain": "2d634ecd-c577-48bd-a76c-10ca1ad1abe1"
    }
  },
  "ext": {
    "limit_duration": 30,
    "price_type": 0
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="WEB" %}
{% code lineNumbers="true" %}

```json
{
  "id": "b051cef2-cc87-4c31-9288-c1c8faec3c58$1277830694$KKHSVVWN",
  "test": 1,
  "cur": [
    "USD"
  ],
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "nodes": [
          {
            "asi": "mman.kr",
            "sid": "31998",
            "rid": "b051cef2-cc87-4c31-9288-c1c8faec3c58$1277830694$KKHSVVWN",
            "hp": 1
          }
        ],
        "complete": 1
      }
    }
  },
  "regs": {
    "ext": {
      "us_privacy": "1---"
    }
  },
  "tmax": 500,
  "at": 2,
  "imp": [
    {
      "tagid": "805010_com.test.mezzo",
      "secure": 0,
      "instl": 0,
      "video": {
        "mimes": [
          "video/mp4"
        ],
        "w": 1080,
        "h": 1920,
        "placement": 1,
        "skip": 1,
        "playbackmethod": [
          2
        ],
        "protocols": [
          2,
          3
        ],
        "delivery": [
          2
        ],
        "ext": {
          "rewarded": 0
        },
        "minduration": 7,
        "maxduration": 60,
        "startdelay": 1,
        "linearity": 1
      },
      "bidfloorcur": "USD",
      "bidfloor": 0.008411677387431964,
      "id": "166330750000"
    }
  ],
  "site": {
    "publisher": {
      "id": "31998",
      "name": "test-pub-site-name",
      "domain": "com.test.mezzo",
      "product_attr": 4
    },
    "id": "805010_com.test.mezzo",
    "name": "test-pub-site-name",
    "domain": "com.test.mezzo",
    "page": "http://mtagdev.mman.kr:9300/V2/video_step2.html",
    "ref": "http://mtagdev.mman.kr:9300/",
    "mobile": 1,
    "cat": [
      "IAB9"
    ]
  },
  "user": {
    "id": "2ca990ef-7e72-4fc1-91bc-24cb11dc2b8d"
  },
  "device": {
    "geo": {
      "country": "KOR"
    },
    "adid": "2ca990ef-7e72-4fc1-91bc-24cb11dc2b8d",
    "ifa": "",
    "dnt": 0,
    "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
    "ip": "58.231.40.30",
    "make": "samsung",
    "os": "Android",
    "osv": "9",
    "model": "SM-G955N",
    "language": "ko",
    "js": 1,
    "devicetype": 1
  },
  "ext": {
    "limit_duration": 30,
    "price_type": 0
  }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **2. RESPONSE**

{% hint style="info" %}
DSP :arrow\_right: SSP
{% endhint %}

DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다. 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격을 따릅니다.

### **Bid Response**

{% hint style="info" %}
JSON 형식의 응답 객체입니다.
{% endhint %}

| 필드      | 유형           | 필수 | 설명                            |
| ------- | ------------ | -- | ----------------------------- |
| id      | string       | Y  | Bid Request 의 ID              |
| bidid   | string       | Y  | Bid 오브젝트의 ID                  |
| cur     | string array | Y  | <p>입찰시 사용할 통화. <br>예) KRW</p> |
| seatbid | object array | Y  | [`Bid`](#bid) 객체 에 대한 배열      |

### **Bid**

| 필드      | 유형           | 필수 | 설명                                                                                          |
| ------- | ------------ | -- | ------------------------------------------------------------------------------------------- |
| id      | string       | Y  | 입찰 정보를 관리하는 ID                                                                              |
| price   | float        | Y  | 입찰 가격                                                                                       |
| adm     | string (XML) | Y  | [`ADM`](#adm) 객체를 참고하십시오.                                                                   |
| nurl    | string       | N  | <p>낙찰 알림 url (win URL)<br>낙찰가를 {AUCTION\_PRICE} 매크로에 치환하여 전달합니다.</p>                        |
| burl    | string       | N  | <p>낙찰 청구 알림 url (Billing notice URL)<br>낙찰가를 {AUCTION\_PRICE} 매크로에 치환하여 전달합니다.</p>          |
| lurl    | string       | N  | <p>유찰 알림 url (Loss notice URL)<br>{AUCTION\_LOSS} 매크로에 유찰 사유 코드를 치환하여 전달합니다.</p>            |
| adomain | string array | Y  | 광고주 도메인                                                                                     |
| cid     | string       | Y  | 광고주 캠페인명 / id                                                                               |
| crid    | string       | Y  | 광고주 광고물명 / id                                                                               |
| cat     | string array | Y  | 카테고리                                                                                        |
| ext     | object       | Y  | [`ext`](https://docs.meba.kr/s-plus/api/ssp/delivery/video/#video_ext-response) 객체를 참고하십시오. |

### **ADM**

&#x20;XML 로 정의되는 객체입니다. 객체 정의는 [VAST 3.0](https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf) 규격을 따릅니다.

| 필드   | 유형      | 필수 | 설명                          |
| ---- | ------- | -- | --------------------------- |
| VAST | element | Y  | [`VAST`](#vast) 정의를 참고하십시오. |

### **VAST**

> [`adm`](#adm) / VAST

| 필드      | 유형            | 필수 | 설명                               |
| ------- | ------------- | -- | -------------------------------- |
| version | integer (속성)  | Y  | VAST 규약 버전. 3.0 인 경우, 3으로 작성합니다. |
| Ad      | element array | Y  | [`Ad`](#a-d) 정의를 참고하십시오.         |

### **Ad**

[`adm`](#adm) / Ad

| 필드       | 유형      | 필수 | 설명                              |
| -------- | ------- | -- | ------------------------------- |
| id       | integer | N  | 광고 ID                           |
| sequence | integer | N  | 광고의 sequence 번호                 |
| Inline   | element | Y  | [`Inline`](#inline) 정의를 참고하십시오. |

### **Inline**

> [`ADM`](#adm) / [`Ad`](#a-d) / Inline

| 필드         | 유형            | 필수 | 설명                                      |
| ---------- | ------------- | -- | --------------------------------------- |
| AdSystem   | integer       | N  | [`Adsystem`](#a-dsystem) 정의를 참고하십시오.    |
| AdTitle    | integer       | N  | 광고 이름                                   |
| Extensions | element       | N  | [`Extensions`](#extensions) 정의를 참고하십시오. |
| Error      | element       | N  | Player 에러 발생시 호출할 트래킹 URL               |
| Impression | element       | Y  | 동영상 시작시 호출할 트래킹 URL                     |
| Creatives  | element array | Y  | [`Creative`](#creative) element 에 대한 배열 |

### **AdSystem**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / AdSystem

| 필드      | 유형           | 필수 | 설명       |
| ------- | ------------ | -- | -------- |
| version | integer (속성) | N  | 광고 엔진 버전 |

{% hint style="info" %}
필드값은 광고 엔진 이름입니다.
{% endhint %}

### **Extensions**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Extensions

| 필드        | 유형     | 필수 | 설명          |
| --------- | ------ | -- | ----------- |
| requestID | string | N  | 광고 요청 고유 코드 |

### **Creative**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / Creative

| 필드       | 유형           | 필수 | 설명                              |
| -------- | ------------ | -- | ------------------------------- |
| id       | integer (속성) | N  | 광고 번호                           |
| sequence | integer (속성) | N  | 광고 시퀀스                          |
| Linear   | element      | Y  | [`Linear`](#linear) 정의를 참고하십시오. |

### **Linear**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) / Linear

| 필드             | 유형            | 필수 | 설명                                            |
| -------------- | ------------- | -- | --------------------------------------------- |
| Duration       | string        | N  | <p>영상 길이 / 재생 시간. <br>hh:mm:ss 형태로 지정합니다.</p> |
| TrackingEvents | element array | N  | [`Tracking`](#tracking) element 대한 배열         |
| VideoClicks    | element       | N  | [`VideoClicks`](#videoclicks) 정의를 참고하십시오.     |
| MediaFiles     | element array | Y  | [`MediaFile`](#mediafile) element 대한 배열       |

### **Tracking**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) /  [`Linear`](#linear) / TrackingEvents / Tracking

{% hint style="info" %}
필드 값은 트래킹 이벤트 전달을 위한 HTTP(s) URL 입니다.
{% endhint %}

| 필드     | 유형            | 필수 | 설명                                                          |
| ------ | ------------- | -- | ----------------------------------------------------------- |
| event  | string (속성)   | Y  | <p>이벤트 이름을 지정합니다. <br>예) start, firstQuartile, midpoint</p> |
| offset | element array | N  | 이벤트 발생 조건이 되는 재생 시간을 지정합니다. hh:mm:ss 형태로 지정.                |

{% hint style="info" %}
필드 값은 트래킹 이벤트 전달을 위한 HTTP(s) URL 입니다.
{% endhint %}

<table><thead><tr><th width="200">이벤트 값</th><th>설명</th></tr></thead><tbody><tr><td>start</td><td>동영상이 시작된 경우 호출하는 트래킹 URL</td></tr><tr><td>firstQuartile</td><td>동영상이 25% 재생된 경우 호출하는 트래킹 URL</td></tr><tr><td>midpoint</td><td>동영상이 50% 재생된 경우 호출하는 트래킹 URL</td></tr><tr><td>thirdQuartile</td><td>동영상이 75% 재생된 경우 호출하는 트래킹 URL</td></tr><tr><td>complete</td><td>동영상 재생이 완료된 경우 호출하는 트래킹 URL</td></tr><tr><td>progress</td><td>동영상이 지정된 offset 속성만큼 재생된 경우 호출하는 트래킹 URL</td></tr></tbody></table>

{% hint style="info" %}
&#x20;(이벤트 값과 offset 값이 같은) 동일한 이벤트에 서로 다른 트래킹 URL 을 지정할 수 있습니다.
{% endhint %}

### **VideoClicks**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) /  [`Linear`](#linear) / VideoClicks

{% hint style="info" %}
필드값은 클릭 이벤트를 처리하기 위한 HTTP(s) URL 입니다.
{% endhint %}

| 필드            | 유형     | 필수 | 설명                             |
| ------------- | ------ | -- | ------------------------------ |
| ClickThrough  | string | Y  | 광고 랜딩 페이지 URL                  |
| ClickTracking | string | N  | 광고 클릭 이벤트 트래킹 URL              |
| offset        | string | N  | 지정된 시간까지 재생된 이후에 광고 클릭이 가능합니다. |

{% hint style="info" %}
ClickThrough : DSP 에서 클릭 이벤트를 처리한 뒤, 최종 광고 랜딩으로 리다이렉트 하도록 구성할 수 있습니다.
{% endhint %}

### **MediaFile**

> [`ADM`](#adm) / [`Ad`](#a-d) / [`Inline`](#inline) / Creatives / [`Creative`](#creative) /  [`Linear`](#linear) / MediaFiles / MediaFile

| 필드       | 유형           | 필수 | 설명                                 |
| -------- | ------------ | -- | ---------------------------------- |
| delivery | string (속성)  | N  | 동영상 소재 재생 방식. progressive 를 지원합니다. |
| type     | string (속성)  | N  | 동영상 소재 타입. 예) video/mp4            |
| width    | integer (속성) | N  | 동영상 소재의 폭                          |
| height   | integer (속성) | N  | 동영상 소재의 높이                         |
| bitrate  | integer (속성) | N  | 동영상 소재의 비트레이트                      |

{% hint style="info" %}
필드 값은 비디오 콘텐츠의 경로입니다. (HTTP, HTTPS)
{% endhint %}

### **응답 예제**

{% tabs %}
{% tab title="Bid Response" %}
{% code lineNumbers="true" %}

```json
{
   "id": "req-12345-abcde",
   "bidid": "5508",
   "cur": "KRW",
   "seatbid": [
      {
         "bid": [
            {
               "id": "147704390800",
               "price": "60",
               "adm": "%3CVAST+version%3D%223.0%22%3E%0D%0A%3CAd+id%3D%2250096%22+sequence%3D%221%22%3E%0D%0A%3CInLine%3E%0D%0A%3CAdSystem+version%3D%222%22%3EMAN%3C%2FAdSystem%3E%0D%0A%3CAdTitle%3E%0D%0A%3C%21%5BCDATA%5B+20160217_%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4_%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4_%EB%8F%99%EC%98%81%EC%83%81_%ED%85%8C%EC%8A%A4%ED%8A%B8+%5D%5D%3E%0D%0A%3C%2FAdTitle%3E%0D%0A%3CExtensions%3E%0D%0A%3CrequestID%3E%0D%0A%3C%21%5BCDATA%5B+-+%5D%5D%3E%0D%0A%3C%2FrequestID%3E%0D%0A%3C%2FExtensions%3E%0D%0A%3CError%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fd_err%3D%5BERRORCODE%5D%5D%0D%0A%5D%5D%3E%0D%0A%3C%2FError%3E%0D%0A%3CImpression+id%3D%22man_server%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dimps_tracking%0D%0A%5D%5D%3E%0D%0A%3C%2FImpression%3E%0D%0A%3CCreatives%3E%0D%0A%3CCreative+id%3D%2225549%22+sequence%3D%221%22%3E%0D%0A%3CLinear%3E%0D%0A%3CDuration%3E00%3A00%3A30%3C%2FDuration%3E%0D%0A%3CTrackingEvents%3E%0D%0A%3CTracking+event%3D%22start%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q1%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22firstQuartile%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q2%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22midpoint%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q3%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22thirdQuartile%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q4%26e_version%3D2%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22complete%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q5%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22progress%22+offset%3D%2200%3A00%3A05%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dimps_video_tracking%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22progress%22+offset%3D%2200%3A00%3A15%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_view%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3C%2FTrackingEvents%3E%0D%0A%3CVideoClicks%3E%0D%0A%3CClickThrough%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dclick%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FClickThrough%3E%0D%0A%3CClickTracking%3E%3C%2FClickTracking%3E%0D%0A%3COffset%3E00%3A00%3A05%3C%2FOffset%3E%0D%0A%3C%2FVideoClicks%3E%0D%0A%3CMediaFiles%3E%0D%0A%3CMediaFile+delivery%3D%22progressive%22+type%3D%22video%2Fmp4%22+width%3D%22480%22+height%3D%22270%22+bitrate%3D%22350%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fvod.mezzo%2F%3Fe_version%3D2%26e_request_type%3Dvod%26i_video_name%3D20161014150027%26d_r%3D1%26i_rs_t%3D3%26d_p1%3D1%0D%0A%5D%5D%3E%0D%0A%3C%2FMediaFile%3E%0D%0A%3C%2FMediaFiles%3E%0D%0A%3C%2FLinear%3E%0D%0A%3C%2FCreative%3E%0D%0A%3C%2FCreatives%3E%0D%0A%3C%2FInLine%3E%0D%0A%3C%2FAd%3E%0D%0A%3C%2FVAST%3E",
               "nurl": "win url",
               "adomain": "http: //adver.co.kr",
               "cid": "2234",
               "crid": "2234",
               "cat": [
                  "IAB1"
               ]
            }
         ]
      }
   ]
}

```

{% endcode %}
{% endtab %}

{% tab title="ADM" %}
{% code lineNumbers="true" %}

```xml

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="3.0">
   <Ad id="50096" sequence="1">
      <InLine>
         <AdSystem version="2">MAN</AdSystem>
         <AdTitle><![CDATA[ 20160217_홈플러스_홈플러스_동영상_테스트 ]]></AdTitle>
         <Extensions>
            <requestID><![CDATA[ - ]]></requestID>
         </Extensions>
         <Error><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?d_err=[ERRORCODE]]]]></Error>
         <Impression id="man_server"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=imps_tracking]]></Impression>
         <Creatives>
            <Creative id="25549" sequence="1">
               <Linear>
                  <Duration>00:00:30</Duration>
                  <TrackingEvents>
                     <Tracking event="start"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q1&e_version=2]]></Tracking>
                     <Tracking event="firstQuartile"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q2&e_version=2]]></Tracking>
                     <Tracking event="midpoint"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q3&e_version=2]]></Tracking>
                     <Tracking event="thirdQuartile"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q4&e_version=2]]></Tracking>
                     <Tracking event="complete"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q5&e_version=2]]></Tracking>
                     <Tracking event="progress" offset="00:00:05"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=imps_video_tracking&e_version=2]]></Tracking>
                     <Tracking event="progress" offset="00:00:15"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_view&e_version=2]]></Tracking>
                  </TrackingEvents>
                  <VideoClicks>
                     <ClickThrough><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=click&e_version=2]]></ClickThrough>
                     <ClickTracking></ClickTracking>
                     <Offset>00:00:05</Offset>
                  </VideoClicks>
                  <MediaFiles>
                     <MediaFile delivery="progressive" type="video/mp4" width="480" height="270" bitrate="350"><![CDATA[http://mtag.mman.kr/vod.mezzo/?e_version=2&e_request_type=vod&i_video_name=20161014150027&d_r=1&i_rs_t=3&d_p1=1]]></MediaFile>
                  </MediaFiles>
               </Linear>
            </Creative>
         </Creatives>
      </InLine>
   </Ad>
</VAST>

```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **3. SKAdNetwork 지원(iOS14 이상)**

{% hint style="info" %}
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다.</td></tr><tr><td>3</td><td>Apple로부터 발급받은 SKAdNetwork ID를 CJ MezzoMedia 담당자에게 전달하고<br>CJ MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다.</td></tr><tr><td>4</td><td>DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다.</td></tr><tr><td>5</td><td>광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다.</td></tr><tr><td>6</td><td>DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다.</td></tr></tbody></table>

### **광고요청 추가내용 (SKAdNetwork)**

> BidRequest / imp / banner / ext / skadn

해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 합니다.

<table data-header-hidden><thead><tr><th width="85">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</td></tr><tr><td>2</td><td>사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다.</td></tr><tr><td>3</td><td>SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다.</td></tr><tr><td>4</td><td>DSP는 CJ 메조미디어의 Bid Request 규약을 준수해야한다.</td></tr></tbody></table>

| 필드         | 유형     | 필수 | 설명                                                                     | 예                                        |
| ---------- | ------ | -- | ---------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                    | “version”:”2.0”                          |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.app.bundle’ 과 매칭</p> | “sourceapp”:”000000000”                  |
| skadnetids | string | Y  | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs                             | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### **광고응답 추가내용 (SKAdNetwork)**

> BidResponse / imp / banner / ext / skadn

| 필드         | 유형     | 필수 | 설명                                                                                 | 예                                               |
| ---------- | ------ | -- | ---------------------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                                | “version”:”2.0”                                 |
| network    | string | Y  | <p>광고 네트워크 식별자.<br>Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함</p>                    | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y  | <p>Apple의 규격에 맞는 캠페인 ID.<br>1과 100 사이의 정수를 이용해서 표현해야함</p>                          | “campaign”:”45”                                 |
| itunesitem | string | Y  | Apple App 스토어에 등록된 광고주 App ID. ‘Bidresponse.bid.bundle’과 매칭                        | “itunesitem”:”123456789”                        |
| nonce      | string | Y  | 개별 광고 response의 유니크 ID                                                             | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭</p> | “sourceapp”:”000000000”                         |
| timestamp  | string | Y  | Unix time을 string 값으로 전달                                                           | “timestamp”:”1234567890”                        |
| signature  | string | Y  | Apple에서 제공하는 SKAdNetwork sigature 값                                                | “signature”:”ABCDEFGHijkl-lmb…”                 |

### 예제

{% tabs %}
{% tab title="Request" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 네이티브 광고

네이티브 광고 연동을 위한 Open RTB 규약입니다.

## 1. **REQUEST**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 SSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 작성해 DSP 인터페이스를 호출합니다.\
요청 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)와 [OpenRTB Dynamic Native Ads API Specification Version 1.2](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf) 규격을 따릅니다.

### **Request object**

| 필드     | 유형           | 필수 | 설명                                                                              |
| ------ | ------------ | -- | ------------------------------------------------------------------------------- |
| id     | string       | Y  | 요청 유니크 아이디                                                                      |
| cur    | string array | N  | <p>ISO-4217-alpha 경매에 사용할 수 있는 통화 입니다. <br>예: “KRW”</p>                         |
| test   | integer      | N  | 경매가 테스트 모드(1)건 실시간 모드(0)건, 테스트 경매에는 입찰할 수 없습니다                                  |
| site   | object       | Y  | [`Site`](#site) 객체를 참고하십시오.                                                     |
| app    | object       | Y  | [`App`](#app) 객체를 참고하십시오.                                                       |
| device | object       | Y  | [`Device`](#device) 객체를 참고하십시오.                                                 |
| user   | object       | Y  | [`User`](#user) 객체를 참고하십시오.                                                     |
| imp    | object array | Y  | [`Imp`](#imp) 객체를 참고하십시오.                                                       |
| at     | integer      | Y  | <ul><li>0: fixed price</li><li>1: first price</li><li>2: second price</li></ul> |
| tmax   | integer      | Y  | 최대허용시간 (ms).                                                                    |
| bcat   | string array | N  | IAB 카테고리 기준으로 광고주 카테고리를 차단합니다.                                                  |
| badv   | string array | N  | 광고주의 도메인을 차단합니다.                                                                |
| bapp   | string array | N  | App의 번들이나 패키지명을 차단합니다.                                                          |
| ext    | object       | N  | [`Ext`](#ext) 객체를 참고하십시오.                                                       |

### **Site**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| domain    | string       | N  | 사이트 도메인                               |
| page      | string       | N  | 페이지 url                               |
| ref       | string       | N  | 현재페이지로 이동해오기 바로 전 페이지의 주소             |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`Publisher`](#publisher) 객체를 참고하십시오. |

### **App**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| bundle    | string       | Y  | 번들 이름, 패키지 이름                         |
| storeurl  | string       | N  | 앱스토어 URL                              |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`Publisher`](#publisher) 객체를 참고하십시오. |

### **Publisher**

> [`Site`](#site) / publisher\
> [`App`](#app) / publisher

| 필드            | 유형     | 필수 | 설명                                                    |
| ------------- | ------ | -- | ----------------------------------------------------- |
| id            | string | Y  | 퍼블리셔 ID                                               |
| name          | string | N  | 퍼블리셔 명                                                |
| domain        | string | N  | 사이트 도메인                                               |
| product\_attr | string | N  | <p>광고상품코드 </p><ul><li>1: 띠배너 </li><li>2: 전면</li></ul> |

### **Device**

| 필드    | 유형      | 필수 | 설명                                                                  |
| ----- | ------- | -- | ------------------------------------------------------------------- |
| adid  | string  | Y  | 디바이스의 ADID                                                          |
| make  | string  | Y  | <p>디바이스의 제조사<br>예) samsung</p>                                      |
| ua    | string  | Y  | 디바이스의 User Agent 정보                                                 |
| dnt   | integer | N  | <p>위치 추적 금지 활성화 여부. </p><ul><li>0: 추적 가능</li><li>1: 추적 금지</li></ul> |
| ip    | string  | Y  | IPV4 주소                                                             |
| model | string  | N  | 모델명                                                                 |
| os    | string  | Y  | 운영체제. 예) iOS, Anroid                                                |
| osv   | string  | Y  | 운영체제 버전. 예) 8.1, 9.2                                                |
| js    | integer | N  | RTB 프로토콜에 1로 정의되어 있습니다.                                             |
| ifa   | string  | Y  | Apple IFA 또는 Google 의 ADID                                          |

### **User**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드 | 유형     | 필수 | 설명         |
| -- | ------ | -- | ---------- |
| id | string | Y  | 사용자의 고유 ID |

### **Imp**

| 필드                | 유형      | 필수 | 설명                                                                                                                        |
| ----------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y  | 노출에 대한 유니크 아이디                                                                                                            |
| bidfloor          | float   | Y  | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12                                                                                              |
| bidfloorcur       | string  | Y  | 통화, 예) ‘KRW’                                                                                                              |
| secure            | integer | Y  | <ul><li>0: http</li><li>1: https</li></ul>                                                                                |
| type              | string  | Y  | Native                                                                                                                    |
| native            | object  | Y  | [`Native`](#native) 객체를 참고하십시오.                                                                                           |
| instl             | integer | Y  | <p>전면광고 여부를 전달합니다. (default: 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y  | SSP 플랫폼명 또는 SDK명을 의미합니다.                                                                                                  |
| displaymanagerver | string  | Y  | SSP 플랫폼 또는 SDK 버전을 의미합니다.                                                                                                 |

### **Native**

> [`Imp`](#imp) / native

| 필드      | 유형            | 필수 | 설명                             |
| ------- | ------------- | -- | ------------------------------ |
| request | string        | Y  | Native 광고에 대한 유효 요청            |
| ver     | string        | Y  | 사용하는 Dynamic Native Ads API 버전 |
| battr   | integer array | -  | 차단된 소재 속성                      |

### **Native\_request**

> [`Imp`](#imp) / [`Native`](#native)

<table><thead><tr><th>필드</th><th>유형</th><th width="187">필수</th><th>설명</th></tr></thead><tbody><tr><td>ver</td><td>string</td><td>Y</td><td>사용하는 Native 마크업 버전</td></tr><tr><td>assets</td><td>object array</td><td>Y</td><td><a href="#native_asset"><code>Native_asset</code></a> 객체를 참고하십시오.</td></tr><tr><td>privacy</td><td>integer</td><td>-</td><td><ul><li>0: 미지원,</li><li>1: 구매자의 개인 정보 보호정책을 지원</li></ul></td></tr></tbody></table>

### **Native\_asset**

> [`Imp`](#imp) / [`Native`](#native) / [`Native_request`](#native_request)

| 필드       | 유형      | 필수 | 설명                                                       |
| -------- | ------- | -- | -------------------------------------------------------- |
| id       | integer | Y  | Unique Asset ID                                          |
| required | integer | Y  | 1: 해당 asset이 필수값인 경우 설정                                  |
| title    | object  | -  | [`Native_asset: Title`](#native_asset-title) 객체를 참고하십시오. |
| img      | object  | -  | [`Native_asset: Image`](#native_asset-image) 객체를 참고하십시오. |
| video    | object  | -  | [`Native_asset: Video`](#native_asset-video) 객체를 참고하십시오. |
| data     | object  | -  | [`Native_asset: Data`](#native_asset-data) 객체를 참고하십시오.   |

### **Native\_asset: Title**

> [`Imp`](#imp) / [`Native`](#native) / [`Native_request`](#native_request) / [`Native_asset`](#native_asset)

| 필드  | 유형      | 필수 | 설명                  |
| --- | ------- | -- | ------------------- |
| len | integer | Y  | Title 요소 내 최대 문자 길이 |

### **Native\_asset: Image**

> [`Imp`](#imp) / [`Native`](#native) / [`Native_request`](#native_request) / [`Native_asset`](#native_asset)

| 필드   | 유형      | 필수 | 설명                         |
| ---- | ------- | -- | -------------------------- |
| type | integer | Y  | 퍼블리셔가 지원하는 Image 요소의 유형 ID |
| w    | integer | -  | Image의 가로 픽셀               |
| h    | integer | -  | Image의 세로 픽셀               |
| wmin | integer | -  | 요청하는 Image의 가로 픽셀 최소값      |
| hmin | integer | -  | 요청하는 Image의 세로 픽셀 최소값      |

### **Native\_asset: Video**

> [`Imp`](#imp) / [`Native`](#native) / [`Native_request`](#native_request) / [`Native_asset`](#native_asset)

| 필드          | 유형            | 필수 | 설명                     |
| ----------- | ------------- | -- | ---------------------- |
| mimes       | string array  | Y  | 지원하는 콘텐츠 MIME 유형       |
| minduration | integer       | Y  | 동영상 광고의 최소 길이(초)       |
| maxduration | integer       | Y  | 동영상 광고의 최대 길이(초)       |
| protocols   | integer array | Y  | 퍼블리셔가 지원하는 동영상 프로토콜 유형 |

### **Native\_asset: Data**

> [`Imp`](#imp) / [`Native`](#native) / [`Native_request`](#native_request) / [`Native_asset`](#native_asset)

| 필드   | 유형      | 필수 | 설명                    |
| ---- | ------- | -- | --------------------- |
| type | integer | Y  | 퍼블리셔가 지원하는 Data 요소 ID |
| len  | integer | -  | Data 요소 응답 시 최대 문자 길이 |

### **Ext**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드           | 유형      | 필수 | 설명                                                                                                                                                |
| ------------ | ------- | -- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| price\_type  | integer | N  | <ul><li>0:CPM</li><li>1: CPC</li></ul>                                                                                                            |
| click\_macro | integer | N  | <p>1: DSP매체에서 ADM내부에 클릭 Tracking을 받을 수 있는 매크로${MEZZO\_CLICK\_URL}을 제공해야 합니다.</p><p></p><p>DSP에서 click이 이루어질 때, 매크로로 치환된 click url를 발생시켜야 합니다.</p> |

### **요청 예제**

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "test": 0,
   "cur": "KRW",
   "imp": [
      {
         "bidfloor":1.0,
         "bidfloorcur":"USD",
         "displaymanager":"SOMA",
         "displaymanagerver":"sdkandroid_9-1-6",
         "ext":{
 
         },
         "id":"1",
         "instl":0,
         "native":{
            "battr":[
               1,
               3,
               5,
               8,
               9
            ],
            "request":"{\"ver\":\"1.2\",\"plcmttype\":1,\"plcmtcnt\":1,\"seq\":0,\"aurlsupport\":0,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":90}},{\"id\":2,\"required\":1,\"img\":{\"type\":3,\"wmin\":1200,\"hmin\":627}},{\"id\":3,\"required\":1,\"img\":{\"type\":1,\"wmin\":50,\"hmin\":50}},{\"id\":5,\"required\":1,\"data\":{\"type\":2,\"len\":140}},{\"id\":6,\"required\":1,\"data\":{\"type\":12,\"len\":15}}]}",
            "ver":"1.2"
         },
         "secure":0,
         "tagid":"130700475"
      }
   ],
   "app": {
      "id": "test-pub-app-id",
      "name": "test-pub-app-name",
      "bundle": "com.mezzo.co.kr ",
      "storeurl": "https://play.google.com/store/apps/details?id=com.mezzo.co.kr",
      "cat": "IAB1",
      "publisher": {
         "id": "test-pub-app-id",
         "domain": "test-pub-domain",
         "product_attr": 1
      }
   },
   "device": {
      "adid": "test-ifa-gaid",
      "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
      "ip": "58.231.40.30",
      "make": "samsung",
      "os": "Android",
      "osv": "9",
      "model": "SM-G955N",
      "js": 1,
      "ifa": "test-ifa-gaid"
   },
   "user": {
      "id": "923123"
   },
   "ext": {
      "price_type": 1,
      "click_macro": 1
   }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **2. RESPONSE**

{% hint style="info" %}
DSP :arrow\_right: SSP
{% endhint %}

DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다. 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)와 [OpenRTB Dynamic Native Ads API Specification Version 1.2](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf) 규격을 따릅니다.

### **Bid Response**

{% hint style="info" %}
JSON 형식의 응답 객체입니다.
{% endhint %}

| 필드      | 유형           | 필수 | 설명                                                    |
| ------- | ------------ | -- | ----------------------------------------------------- |
| id      | string       | Y  | Bid Request 의 ID                                      |
| bidid   | string       | Y  | Bid 오브젝트의 ID                                          |
| cur     | string       | Y  | 입찰시 사용할 통화. 예) KRW                                    |
| seatbid | object array | Y  | [`Seatbid`](#seatbid) 객체 배열입니다. 입찰이 이루어지려면 1+가 필요합니다. |

### **Seatbid**

| 필드   | 유형           | 필수 | 설명                                            |
| ---- | ------------ | -- | --------------------------------------------- |
| seat | string       | Y  | 입찰 정보를 관리하는 ID                                |
| bid  | object array | Y  | [`Bid`](#bid) 객체 배열입니다. 입찰이 이루어지려면 1+가 필요합니다. |

### **Bid**

| 필드      | 유형           | 필수 | 설명                                                                                 |
| ------- | ------------ | -- | ---------------------------------------------------------------------------------- |
| id      | string       | Y  | 입찰 정보를 관리하는 ID                                                                     |
| impid   | string       | Y  | 입찰 요청의 노출과 관련된 노출 ID입니다. 입찰 요청 노출 객체 ID와 반드시 일치해야 합니다.                             |
| price   | float        | Y  | 입찰 가격                                                                              |
| cat     | string array | Y  | 카테고리                                                                               |
| nurl    | string       | N  | <p>낙찰 알림 url (win URL)<br>낙찰가를 {AUCTION\_PRICE} 매크로에 치환하여 전달합니다.</p>               |
| burl    | string       | N  | <p>낙찰 청구 알림 url (Billing notice URL)<br>낙찰가를 {AUCTION\_PRICE} 매크로에 치환하여 전달합니다.</p> |
| lurl    | string       | N  | <p>유찰 알림 url (Loss notice URL)<br>{AUCTION\_LOSS} 매크로에 유찰 사유 코드를 치환하여 전달합니다.</p>   |
| adm     | string       | Y  | [`Native_response`](#native_response) 객체를 참고하십시오.                                  |
| iurl    | string       | Y  | 노출 image URL                                                                       |
| adomain | string array | Y  | 블랙리스트를 검사하는 광고주 도메인                                                                |
| cid     | string       | Y  | 광고주 캠페인명 / id                                                                      |
| crid    | string       | Y  | 광고주 광고물명 / id                                                                      |
| w       | integer      | Y  | 광고 사이즈                                                                             |
| h       | integer      | Y  | 광고 사이즈                                                                             |
| ext     | string       | Y  | 확장 영역                                                                              |

### **Native\_response**

> [`Bid`](#bid) / adm

| 필드            | 유형           | 필수 | 설명                                                                                                                |
| ------------- | ------------ | -- | ----------------------------------------------------------------------------------------------------------------- |
| ver           | string       | Y  | 사용하는 Native 마크업 버전                                                                                                |
| assets        | object array | Y  | <p>Native 광고의 assets<br><a href="#native_response_asset"><code>Native\_response\_asset</code></a> 객체를 참고하십시오.</p> |
| link          | object       | Y  | [`Native_response_asset: Link` ](#native_response_asset-link)객체를 참고하십시오.                                          |
| eventtrackers | object array | Y  | [`Native_response_asset: Eventtracker`](#native_response_asset-eventtracker) 객체를 참고하십시오.                          |
| privacy       | string       | Y  | 개인 정보 보호 요청에 대한 응답 값.                        미전달 시 메조미디어 로고 송출.                                                   |

### **Native\_response\_asset**

> [`Bid`](#bid) / adm / [`Native_response`](#native_response)

| 필드       | 유형      | 필수 | 설명                                                                         |
| -------- | ------- | -- | -------------------------------------------------------------------------- |
| id       | integer | Y  | Unique asset ID                                                            |
| required | integer | -  | 1: 해당 asset이 필수값인 경우 설정                                                    |
| title    | object  | -  | [`Native_response_asset: Title`](#native_response_asset-title) 객체를 참고하십시오. |
| img      | object  | -  | [`Native_response_asset: Image`](#native_response_asset-image) 객체를 참고하십시오. |
| video    | object  | -  | [`Native_response_asset: Video`](#native_response_asset-video) 객체를 참고하십시오. |
| data     | object  | -  | [`Native_response_asset: Data`](#native_response_asset-data) 객체를 참고하십시오.   |

### **Native\_response\_asset: Title**

> [`Bid`](#bid) / adm / [`Native_response`](#native_response) / [`Native_response_asset`](#native_response_asset)&#x20;

| 필드   | 유형     | 필수 | 설명                |
| ---- | ------ | -- | ----------------- |
| text | string | Y  | Text 요소와 연관된 text |

### **Native\_response\_asset: Image**

> [`Bid`](#bid) / adm / [`Native_response`](#native_response) / [`Native_response_asset`](#native_response_asset)&#x20;

| 필드  | 유형      | 필수 | 설명               |
| --- | ------- | -- | ---------------- |
| url | string  | Y  | Image asset의 url |
| w   | integer | Y  | Image의 가로 픽셀     |
| h   | integer | Y  | Image의 세로 픽셀     |

### **Native\_response\_asset: Video**

> [`Bid`](#bid) / adm / [`Native_response`](#native_response) / [`Native_response_asset`](#native_response_asset)&#x20;

| 필드      | 유형     | 필수 | 설명       |
| ------- | ------ | -- | -------- |
| vasttag | string | Y  | vast xml |

### Native\_response\_asset: Data

> [`Bid`](#bid) / adm / [`Native_response`](#native_response) / [`Native_response_asset`](#native_response_asset)&#x20;

| 필드    | 유형     | 필수 | 설명                       |
| ----- | ------ | -- | ------------------------ |
| value | string | Y  | Data asset에 노출될 형식화된 문자열 |

### **Native\_response\_asset: Link**

> [`Bid`](#bid) / adm / [`Native_response`](#native_response) / [`Native_response_asset`](#native_response_asset)&#x20;

| 필드  | 유형     | 필수 | 설명            |
| --- | ------ | -- | ------------- |
| url | string | Y  | 클릭 가능한 랜딩 URL |

### **Native\_response\_asset: Eventtracker**

> [`Bid`](#bid) / adm / [`Native_response`](#native_response) / [`Native_response_asset`](#native_response_asset)&#x20;

| 필드      | 유형      | 필수 | 설명          |
| ------- | ------- | -- | ----------- |
| event   | integer | Y  | 트래킹할 이벤트 유형 |
| methods | integer | Y  | 요청된 트래킹 유형  |

### **응답 예제**

{% tabs %}
{% tab title="success" %}
{% code lineNumbers="true" %}

```json
{
  "id": "ece5c105-dd24-468f-8392-d624b8d49953",
  "seatbid": [
    {
      "bid": [
            {
               "id":"5d7801c2be564c8100f00011-1062015",
               "price":2.0,
               "impid":"1",
               "nurl":"http://node-p2e-gie4ah.sitescout.com/smaato/win/aid:5d7801c2be564c8100f00011;c:${AUCTION_PRICE};s:;cid:1062015;ts:1568145858061;d:MzMzMTUwMi1uYXRpdmU",
               "adm":"{\"native\":{\"link\":{\"url\":\"http://clickserv.sitescout.com/clk/8cc00d7733a331ba/88e42568017fb609/0-0/0///~_aid_~5d7801c2be564c8100f00011//cidentLy8vLy8\",\"clicktrackers\":[\"https://adrta.com/c?clid=ss&paid=ss&cb=1568145858061&avid=112053&caid=1062015&publisherId=1100043642&kv5=&plid=3331502&segment=&kv4=100.10.38.5&kv14=&kv1=native&siteId=120207704&kv7=17&kv15=UNKNOWN&kv16=&kv17=&kv18=com.particlenews.newsbreak&kv24=MOBILE_APP&kv20=&kv21=eb6fe99843ff5310bd0cd40d267826fff05d8aa3&kv22=9863a35c-c598-4c80-b091-d7adf379bb26&kv11=5d7801c2be564c8100f00011&kv3=&kv2=\"]},\"ver\":\"1.2\",\"assets\":[{\"id\":5,\"required\":1,\"data\":{\"type\":2,\"value\":\"Lose 3 to 5 pounds per week. Keep it off with free support for life!\"}},{\"id\":2,\"required\":1,\"img\":{\"type\":3,\"url\":\"http://cdn01.basis.net/112100/112053/uhSvl5gEElOXwX0T.jpg\",\"w\":1200,\"h\":627}},{\"id\":1,\"required\":1,\"title\":{\"text\":\"Lose Weight For Life!\"}},{\"id\":6,\"required\":1,\"data\":{\"type\":12,\"value\":\"Learn more\"}},{\"id\":3,\"required\":1,\"img\":{\"type\":1,\"url\":\"http://cdn01.basis.net/112100/112053/5MkC88n4Mc8MdPa4.jpg\",\"w\":240,\"h\":240}}],\"eventtrackers\":[\"https://node-p2e-gie4ah.sitescout.com/smaato/px/aid:5d7801c2be564c8100f00011;c:${AUCTION_PRICE};s:;cid:1062015;ts:1568145858061\",\"https://pixel-sync.sitescout.com/dmp/pixelSync?nid=17&wb=1&hdid=0&id=9863a35c-c598-4c80-b091-d7adf379bb26&idType=4\",\"https://ad.doubleclick.net/ddm/trackimp/N428001.3027484BASISDSP/B22322261.248240382;dc_trk_aid=447774364;dc_trk_cid=119057854;u=210363%7C5d7801c2be564c8100f00011%7C%7Ccom.particlenews.newsbreak%7CAWAKEN002CP+%5BCPA%5D+GT+%28Zips%2B15+mi%29_Display%7CMOBILE_APP%7C1062015;ord=[timestamp];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=?\"],\"jstracker\":\"\"}}",
               "adomain":[
                  "awaken180weightloss.com"
               ],
               "iurl":"http://preview.sitescout.ad/preview?adOnly=1&amp;ad=8cc00d7733a331ba",
               "crid":"3331502",
               "cid":"1062015",
               "attr":[
 
               ],
               "cat":[
                  "IAB7-44",
                  "IAB7"
               ]
            }
         ],
         "seat":"18878"
      }
   ],
  "bidid": "dsp",
  "cur": "KRW"
}
```

{% endcode %}
{% endtab %}

{% tab title="noad" %}
{% code lineNumbers="true" %}

```json
{
  "id": "",
  "seatbid": [],
  "bidid": "mezzo",
  "cur": "KRW"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **3. SKAdNetwork 지원(iOS14 이상)**

{% hint style="info" %}
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="84"></th><th></th></tr></thead><tbody><tr><td>1</td><td>DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다.</td></tr><tr><td>3</td><td>Apple로부터 발급받은 SKAdNetwork ID를 CJ MezzoMedia 담당자에게 전달하고<br>CJ MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다.</td></tr><tr><td>4</td><td>DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다.</td></tr><tr><td>5</td><td>광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다.</td></tr><tr><td>6</td><td>DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다.</td></tr></tbody></table>

### **광고요청 추가내용 (SKAdNetwork)**

> BidRequest / imp / banner / ext / skadn

해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 한다.

<table data-header-hidden><thead><tr><th width="127">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</td></tr><tr><td>2</td><td>사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다.</td></tr><tr><td>3</td><td>SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다.</td></tr><tr><td>4</td><td>DSP는 CJ 메조미디어의 Bid Request 규약을 준수해야한다.</td></tr></tbody></table>

| 필드         | 유형     | 필수 | 설명                                                                     | 예                                        |
| ---------- | ------ | -- | ---------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                    | “version”:”2.0”                          |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.app.bundle’ 과 매칭</p> | “sourceapp”:”000000000”                  |
| skadnetids | string | Y  | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs                             | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### **광고응답 추가내용 (SKAdNetwork)**

> BidResponse / imp / banner / ext / skadn

| 필드         | 유형     | 필수 | 설명                                                                                 | 예                                               |
| ---------- | ------ | -- | ---------------------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                                | “version”:”2.0”                                 |
| network    | string | Y  | <p>광고 네트워크 식별자.<br>Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함</p>                    | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y  | <p>Apple의 규격에 맞는 캠페인 ID.<br>1과 100 사이의 정수를 이용해서 표현해야함</p>                          | “campaign”:”45”                                 |
| itunesitem | string | Y  | Apple App 스토어에 등록된 광고주 App ID. ‘Bidresponse.bid.bundle’과 매칭                        | “itunesitem”:”123456789”                        |
| nonce      | string | Y  | 개별 광고 response의 유니크 ID                                                             | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭</p> | “sourceapp”:”000000000”                         |
| timestamp  | string | Y  | Unix time을 string 값으로 전달                                                           | “timestamp”:”1234567890”                        |
| signature  | string | Y  | Apple에서 제공하는 SKAdNetwork sigature 값                                                | “signature”:”ABCDEFGHijkl-lmb…”                 |

### **예제**

{% tabs %}
{% tab title="Request" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Report API


# 배너 광고 리포트

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 SSP는 DSP에게 Report api를 아래와 같이 호출합니다.\
SSP에게 전달하는 response는 json array형태이며, 대소문자 구분합니다. DSP API를 호출할 때 별도 주의할 점이나 추가사항이 있으시면 연동 협의를 진행할 때 공유해주시기 바랍니다.

## **1. API 호출 URL**

| request Url          | Description                |
| -------------------- | -------------------------- |
| http\://{DSP domain} | 자사에서 호출 가능한 DSP 매체 api url |

### **API Request 파라미터 구성**

| Parameter | Scope    | Description                      | Sample     |
| --------- | -------- | -------------------------------- | ---------- |
| key       | optional | dsp에서 ssp 별로 정의가 필요하시면 사용하시면됩니다. | 44800908   |
| sdate     | required | 일자별 검색할 시작일(yyyy-mm-dd)          | 2019-01-01 |
| edate     | required | 일자별 검색할 종료일(yyyy-mm-dd)          | 2019-01-01 |

### **Report API Sample**

<table><thead><tr><th width="571">Sample url</th><th>Description</th></tr></thead><tbody><tr><td>{DSP URL}?key={keyvalue}&#x26;sdate=2018-09-30&#x26;edate=2018-10-03</td><td>key값이 있을 경우</td></tr><tr><td>{DSP URL}?sdate=2018-09-30&#x26;edate=2018-10-03</td><td>key값이 없을 경우</td></tr></tbody></table>

##

## **2. API Response 구성**

| Parameter | Description           |
| --------- | --------------------- |
| date      | 해당일(2018-10-02)       |
| pubid     | 대상 site ID 또는 app ID  |
| request   | 요청 count              |
| imps      | 노출 count              |
| click     | click count           |
| revenue   | 매체수익금 ( 부가세별도 )       |
| …         | 추가적인 값이 있으면 공유부탁드립니다. |

### 예제

{% tabs %}
{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
    "data": [
        {
            "pubid": "0338E1B551069026A4EA5B805413E2FD",
            "date": "20181121",
            "request": 1588,
            "imps": 1588,
            "click": 1,
            "revenue": 70
        },
        {
            "pubid": "0338E1B551069026A4EA5B805413E555",
            "date": "20181121",
            "request": 33,
            "imps": 33,
            "click": 1,
            "revenue": 70
        },
        {
            "pubid": "0338E1B551069026A4EA5B805413E666",
            "date": "20181121",
            "request": 44,
            "imps": 55,
            "click": 1,
            "revenue": 70
        },
        ...
    ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 비디오 광고 리포트

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 SSP는 DSP에게 Report api를 아래와 같이 호출합니다.\
SSP에게 전달하는 response는 json array형태이며, 대소문자 구분합니다. DSP API를 호출할 때 별도 주의할 점이나 추가사항이 있으시면 연동 협의를 진행할 때 공유해주시기 바랍니다.

## **1. API 호출 URL**

| request Url          | Description                |
| -------------------- | -------------------------- |
| http\://{DSP domain} | 자사에서 호출 가능한 DSP 매체 api url |

### **API Request 파라미터 구성**

| Parameter | Scope    | Description                      | Sample     |
| --------- | -------- | -------------------------------- | ---------- |
| key       | optional | dsp에서 ssp 별로 정의가 필요하시면 사용하시면됩니다. | 44800908   |
| sdate     | required | 일자별 검색할 시작일(yyyy-mm-dd)          | 2019-01-01 |
| edate     | required | 일자별 검색할 종료일(yyyy-mm-dd)          | 2019-01-01 |

### **Report API Sample**

<table><thead><tr><th width="576">Sample url</th><th>Description</th></tr></thead><tbody><tr><td>{DSP URL}?key={keyvalue}&#x26;sdate=2018-09-30&#x26;edate=2018-10-03</td><td>key값이 있을 경우</td></tr><tr><td>{DSP URL}?sdate=2018-09-30&#x26;edate=2018-10-03</td><td>key값이 없을 경우</td></tr></tbody></table>

## **2. API Response 구성**

| Parameter | Description           |
| --------- | --------------------- |
| date      | 해당일(2018-10-02)       |
| pubid     | 대상 site ID 또는 app ID  |
| request   | 요청 count              |
| imps      | 노출 count              |
| view      | 시청 count              |
| q1        | start count           |
| q2        | firstQuartile count   |
| q3        | midpoint count        |
| q4        | thirdQuartile count   |
| q5        | complete count        |
| click     | click count           |
| revenue   | 매체수익금 ( 부가세별도 )       |
| …         | 추가적인 값이 있으면 공유부탁드립니다. |

### 예제

{% tabs %}
{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
    "data" :[ 
        {
            "date":"20181017",
            "pubid":"da123dfd45645",
            "request":333,
            "imps":333,
            "view":333,
            "q1":333,
            "q2":333,
            "q3":333,
            "q4":333,
            "q5":333,
            "click":333,
            "revenue":333
        },
        ...
    ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# for SSP

## 1. **API 목록**

| 서비스        | 광고 상품                                                | 응답 포맷 |
| ---------- | ---------------------------------------------------- | ----- |
| TARGETPICK | <p>띠배너<br>전면배너<br>정사각형 및 직사각형<br>스카이스크래퍼<br>리더보드</p> | JSON  |

## **2. 도메인 정보**

| 구분  | URL                        |
| --- | -------------------------- |
| 테스트 | 보안 정책의 이슈로 테스트 진행 시 제공합니다. |
| 상용  | 보안 정책의 이슈로 테스트 완료 후 제공합니다. |

## **3. 광고 요청 정보**

| 구분    | URL                                   |
| ----- | ------------------------------------- |
| 엔드포인트 | {domain}/dsp.mezzo/?ssp\_id={ssp\_id} |


# 배너 광고

CJ 메조미디어 DSP에 SSP 배너 인벤토리 연동 시 가이드 입니다.

## **1. REQUEST**

아래 내용을 OPEN RTB 2.5 규격의 JSON 형태로 구성한 뒤, 위의 URL 을 POST 방식으로 호출합니다.

현재는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격에서 고정가 거래를 위한 내용만 정의되어 있습니다.\
추후 RTB (Real Time Biding) 에 대한 내용이 업데이트 될 예정입니다.

### **Request object**

| 필드        | 유형           | 필수 | 설명                                                                              |
| --------- | ------------ | -- | ------------------------------------------------------------------------------- |
| ssp\_id   | string       | Y  | SSP ID (TARGETPICK 에서 발급)                                                       |
| id        | string       | Y  | 요청 유니크 아이디                                                                      |
| cur       | string array | N  | <p>ISO-4217-alpha 경매에 사용할 수 있는 통화 입니다. <br>예: “KRW”</p>                         |
| imp       | object array | Y  | [`imp`](#imp) 객체를 참고하십시오.                                                       |
| site      | object       | Y  | [`site`](#site) 객체를 참고하십시오.                                                     |
| app       | object       | Y  | [`app`](#app) 객체를 참고하십시오.                                                       |
| publisher | object       | Y  | [`publisher`](#publisher) 객체를 참고하십시오.                                           |
| device    | object       | Y  | [`device`](#device) 객체를 참고하십시오.                                                 |
| user      | object       | Y  | [`user`](#user) 객체를 참고하십시오.                                                     |
| at        | integer      | Y  | <ul><li>0: fixed price</li><li>1: first price</li><li>2: second price</li></ul> |
| tmax      | integer      | Y  | 최대허용시간 (ms).                                                                    |
| bcat      | string array | N  | IAB 카테고리 기준으로 광고주 카테고리를 차단합니다.                                                  |
| badv      | string array | N  | 광고주의 도메인을 차단합니다.                                                                |
| bapp      | string array | N  | App의 번들이나 패키지명을 차단합니다.                                                          |

### **Imp**

| 필드                | 유형      | 필수 | 설명                                                                                                                         |
| ----------------- | ------- | -- | -------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y  | 노출에 대한 유니크 아이디                                                                                                             |
| bidfloor          | float   | Y  | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12                                                                                               |
| bidfloorcur       | string  | Y  | 통화, 예) ‘KRW’                                                                                                               |
| secure            | integer | Y  | <ul><li>0: http</li><li>1: https</li></ul>                                                                                 |
| banner            | object  | Y  | [`banner`](#banner) 객체를 참고하십시오.                                                                                            |
| instl             | integer | Y  | <p>전면광고 여부를 전달합니다. (default : 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y  | SSP 플랫폼명 또는 SDK명을 의미합니다.                                                                                                   |
| displaymanagerver | string  | Y  | SSP 플랫폼 또는 SDK 버전을 의미합니다.                                                                                                  |

### **Banner**

> [imp](https://docs.meba.kr/s-plus/api/dsp/delivery/banner/#banner_imp) / banner

| 필드 | 유형      | 필수 | 설명        |
| -- | ------- | -- | --------- |
| w  | integer | Y  | 배너의 가로 크기 |
| h  | integer | Y  | 배너의 세로 크기 |

### **Site**

| 필드     | 유형           | 필수 | 설명                        |
| ------ | ------------ | -- | ------------------------- |
| id     | string       | Y  | SSP에서 관리하는 사이트 고유 ID      |
| name   | string       | N  | 사이트 이름                    |
| domain | string       | Y  | 사이트 도메인                   |
| page   | string       | N  | 페이지 url                   |
| ref    | string       | N  | 현재페이지로 이동해오기 바로 전 페이지의 주소 |
| cat    | string array | N  | 카테고리                      |

### **App**

| 필드       | 유형           | 필수 | 설명                   |
| -------- | ------------ | -- | -------------------- |
| id       | string       | Y  | SSP에서 관리하는 APP 고유 ID |
| name     | string       | N  | 애플리케이션 이름            |
| bundle   | string       | Y  | 번들 이름, 패키지 이름        |
| storeurl | string       | N  | 앱스토어 URL             |
| cat      | string array | N  | 카테고리                 |

### **Publisher**

| 필드 | 유형     | 필수 | 설명      |
| -- | ------ | -- | ------- |
| id | string | Y  | 퍼블리셔 ID |

### **Device**

| 필드    | 유형     | 필수 | 설명                                              |
| ----- | ------ | -- | ----------------------------------------------- |
| ua    | string | Y  | 디바이스의 User Agent 정보                             |
| ip    | string | Y  | IPV4 주소                                         |
| model | string | N  | 모델명                                             |
| os    | string | Y  | iOS , Android, mobile\_web, pc\_web             |
| osv   | string | Y  | 운영체제 버전. 예) 8.1, 9.2                            |
| ifa   | string | Y  | Apple IFA 또는 Google 의 ADID                      |
| geo   | object | N  | ISO 3166-1 Alpha-3은 ISO 3166-1에서 정한 코드값 country |

{% hint style="danger" %}

* UA(User Agent)의 경우, AD Exchange 거래를 위한 조건으로 <mark style="color:red;">**반드시 필수 제공**</mark>해주셔야 합니다.
* IP의 경우, <mark style="color:red;">**Private IP(가상IP)가 아닌 Public IP 기준으로 전달**</mark>주셔야 합니다.\
  공유기, 회사 내부망에 할당된 IP가 그대로 전달 될 경우 광고 거래가 제한적일 수 있습니다.
  {% endhint %}

### **User**

| 필드       | 유형     | 필수 | 설명                |
| -------- | ------ | -- | ----------------- |
| buyeruid | string | Y  | 메조한테 전달받은 쿠키매칭 id |

### **요청 예제**

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
	"id": "req-12345-abcde",
	"imp": [{
		"id": "1",
		"bidfloor": 0,
		"secure": 0,
		"bidfloorcur": "KRW",
		"instl": 0,
		"banner": {
			"w": 320,
			"h": 50,
			"btype": [1, 3, 4]
		}
	}],
	"app": {
		"id": "g0r8k3u5",
		"name": "test",
		"bundle": "com.test",
		"storeurl": "http://test.com",
	    "publisher": {
		    "id": "publisher_id"
	    },
		"cat": ["IAB3"]
	},
	"device": {
		"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3",
		"ip": "123.123.123.123",
		"ifa": "2B2D9FE6-F84F-4A36-86AA-5C3769DD1082",
		"os": "iOS",
		"osv": "8.1",
		"model": "iPhone6",
		"geo":{"country":"KOR"}
	},
	"user": {
      "buyeruid": "923123"
   }
}
```

{% endcode %}
{% endtab %}

{% tab title="WEB" %}
{% code lineNumbers="true" %}

```json
{
	"id": "req-12345-abcde",
	"imp": [{
		"id": "1",
		"bidfloor": 0,
		"secure": 0,
		"bidfloorcur": "KRW",
		"instl": 0,
		"banner": {
			"w": 320,
			"h": 50,
			"btype": [1, 3, 4]
		}
	}],
	"site": {
		"id": "g0r8k3u5",
		"name": "test",
		"domain": "gamefocus.co.kr",
		"page": "http://gamefocus.co.kr",
		"ref": "http://www.naver.com",
		"publisher": {
		    "id": "publisher_id"
	    },
		"cat": ["IAB3"]
	},
	"device": {
		"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3",
		"ip": "123.123.123.123",
		"ifa": "2B2D9FE6-F84F-4A36-86AA-5C3769DD1082",
		"os": "iOS",
		"osv": "8.1",
		"model": "iPhone6",
		"geo":{"country":"KOR"}
	},
	"user": {
      "buyeruid": "923123"
   }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **2. RESPONSE**

OPEN RTB 2.5 규격의 JSON 형태로 광고 정보를 구성해 응답합니다.

현재는 고정가 거래를 위한 정보만 포함하며, 추후 RTB (Real Time Biding) 에 대한 내용도 포함될 예정입니다.

| Filed Name | Filed Value(설명)     | 필수 | 타입           | 예시/설명               |
| ---------- | ------------------- | -- | ------------ | ------------------- |
| id         | Bid Request 의 ID    | Y  | string       | Bid Request 의 ID    |
| bidid      | 비딩 응답의 ID           | Y  | string       | 비딩 응답의 ID           |
| cur        | ISO–4217 코드의 입찰 통화  | N  | string       | ISO–4217 코드의 입찰 통화  |
| seatbid    | Seat Bid 오브젝트       | Y  | object array | Seat Bid 오브젝트       |
| seat       | 입찰자격코드              | Y  | string       | 입찰자격코드(사용안함)        |
| bid        | Bid 오브젝트의 배열        | Y  | object array | Bid 오브젝트의 배열        |
| id         | Bid 오브젝트의 ID        | Y  | string       | Bid 오브젝트의 ID        |
| impid      | Impression 오브젝트의 ID | Y  | string       | Impression 오브젝트의 ID |
| price      | 입찰 가격               | N  | float        | 입찰 가격               |
| adm        | 광고 마크업(markup)      | Y  | string       | 광고 마크업(markup)      |
| iurl       | 이미지URL              | Y  | string       | 이미지URL              |
| nurl       | 노출 URL              | Y  | string       | 노출 URL              |
| clickurl   | 클릭 URL              | Y  | string       | 클릭 URL              |

### **Macro 적용 후 트래킹 URL 호출**

{% hint style="info" %}
Response 에 nurl, clickurl, adm 속성값에 아래를 Macro 가 포함된 경우 이를 대체하여 응답합니다.
{% endhint %}

<table><thead><tr><th width="211">Macro</th><th>처리 내용</th></tr></thead><tbody><tr><td>${AUCTION_ID}</td><td>SSP에서는 BID Request ID 로 치환하여 트래킹 URL이 호출되도록 합니다.</td></tr><tr><td>${AUCTION_PRICE}</td><td>SSP에서는 WIN Price 낙찰 단가로 치환하여 트래킹 URL이 호출되도록 합니다.<br>0 이상의 정수로 암호화 합니다. (암호화 방식은 추후 제공)</td></tr><tr><td>${SSP_CLICK_URL}</td><td>SSP에서 클릭이벤트를 확인 할 수있는 URL URI인코딩 후 치환하여 클릭이벤트 발생시<br>SSP URL을 호출하여 클릭이벤트 발생여부 확인 할 수 있습니다.</td></tr><tr><td>${SSP_CLICK_URL:2}</td><td>SSP에서 클릭이벤트를 2번 URI인코딩 후 치환 Macro이며 클릭이벤트 발생시<br>SSP URL을 호출하여 클릭이벤트 발생여부 확인 할 수 있습니다.</td></tr></tbody></table>

### **응답 예제**

{% tabs %}
{% tab title="Response (일반)" %}
{% code lineNumbers="true" %}

```json
{
	"id": "req-12345-abcde",
	"bidid": "mezzomedia",
	"cur": "KRW",
	"seatbid": [{
		"seat": "512",
		"bid": [{
			"id": "147704390800",
			"impid": "1",
			"price": "40",
			"adm": "<html><head><meta name='viewport' content='width=device-width; height=device-height;'><title></title></head><body style='margin:0px;'><style type='text/css'> #mz_first {position:absolute; left:0; top:0};</style><link href='http://abc.com/ad_images/r_main.css' rel='stylesheet' type='text/css' /><div id='mz_wrap' style='text-align:center;background-color:#000000; margin:0 auto; padding:0; text-decoration: none; width:100%;'><article id='mz_article' style='height:50px; margin:0 auto; overflow:hidden; position:relative; width:320px;'><a href='http://abc.com/ad_tracking.mezzo/?e_request_type=click&e_cp=${AUCTION_PRICE}&' target='_blank'><img id='mz_first' src='http://advimg.ad-mapps.com/ad_images/20160329_crewbi_2w_320x50.png' width='320' height='50'></a><div id='mz_beacon' style='position:absolute; left:0px; top:0px; visibility:hidden;'><img src='http://abc.com/ad_tracking.mezzo/?e_request_type=imps_tracking&e_cp=${AUCTION_PRICE}&'></div></article></div></body></html>",
			"w": "320",
			"h": "50",
			"iurl": "http://abc.com/ad_images/20160329_abc_320x50.png",
			"nurl": "http://abc.com/ad_tracking.mezzo/?e_request_type=imps_tracking&e_cp=${AUCTION_PRICE}&",
			"ext": {
				"clickurl": "http://abc.com/ad_tracking.mezzo/?e_request_type=click&e_cp=${AUCTION_PRICE}&"
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response (영상 소재)" %}
{% code lineNumbers="true" %}

```json
{
   "id": "sample_bid_response",
   "seatbid": [
       {
           "bid": [
               {
                   "id": "sample_bid_id",
                   "impid": "1",
                   "price": 2.5,
                   "adm": "<iframe srcdoc=\"<!doctype html><html><head><meta charset='UTF-8' /><link rel='stylesheet' href='https://advimg.ad-mapps.com/template/verticalvideobanner/css/style.css' /><script type='text/xml' id='vast-data'><?xml version='1.0' encoding='UTF-8'?><VAST version='3'><Ad id='sample_ad_id' sequence='1'><InLine><AdSystem version='2'>ADSPLUS</AdSystem><AdTitle><![CDATA[Sample_Ad_Title]]></AdTitle><Extensions><Extension><requestID><![CDATA[sample_request_id]]></requestID></Extension></Extensions><Error><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=error_vast&e_version=2&i_request_key=sample_request_key&t_ver=2&d_err=[ERRORCODE]]]></Error><ViewableImpression id='mezzo' time='2000'><Viewable><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=viewability&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Viewable><NotViewable></NotViewable><ViewUndetermined></ViewUndetermined></ViewableImpression><AdVerifications id='mezzo' isomsdk='1'><Verification vendor='iabtechlab.com-omid'><JavaScriptResource apiFramework='omid' browserOptional='true'><![CDATA[https://s3-us-west-2.amazonaws.com/omsdk-files/compliance-js/omid-validation-verification-script-v1.js]]></JavaScriptResource><VerificationParameters><![CDATA[iabtechlab-mezzomedia]]></VerificationParameters></Verification></AdVerifications><Impression id='man_server'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=viewability&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Impression><Creatives><Creative id='sample_creative_id' sequence='1'><Linear><Duration>00:00:06</Duration><TrackingEvents><Tracking event='start'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_q1&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='firstQuartile'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_q2&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='midpoint'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_q3&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='thirdQuartile'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_q4&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='complete'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_q5&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='skip'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_skip&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='progress' offset='00:00:05'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=imps_video_tracking&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking><Tracking event='progress' offset='00:00:05'><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=track_vast_view&e_version=2&i_request_key=sample_request_key&t_ver=2]]></Tracking></TrackingEvents><VideoClicks><ClickThrough><![CDATA[https://adc.com/tp/ad_tracking.mezzo/?e_request_type=click&e_version=2&i_request_key=sample_request_key&t_ver=2]]></ClickThrough><ClickTracking></ClickTracking><Offset>00:00:00</Offset></VideoClicks><Icons><Icon program='Mezzo'><StaticResource creativeType='image/png'><![CDATA[https://advimg.ad-mapps.com/sdk/M_PLUS/Image/templete/logo.png]]></StaticResource><IconClicks><IconClickThrough><![CDATA[https://www.mman.kr/Service/opt/opt_bridge?aid=[adid]]]></IconClickThrough><IconClickTracking></IconClickTracking></IconClicks></Icon></Icons><MediaFiles><MediaFile delivery='progressive' type='video/mp4' width='480' height='854' bitrate='1000'><![CDATA[https://mtag.mman.kr/splus/vod.mezzo/?e_version=2&e_request_type=vod&i_video_name=sample_video_name&d_r=1&i_rs_t=3&d_p1=1&a_publisher=sample_pub&a_media=sample_media&a_section=sample_section&i_video_w=480&d_p2=1]]></MediaFile></MediaFiles></Linear></Creative></Creatives></InLine></Ad></VAST></script><script charset='utf-8' type='text/javascript'>var vastData = document.getElementById('vast-data').textContent.trim();var behindTrackingUrls=[];</script></head><body><div class='inner'><div class='outer'><div class='mezzo_logo'><a href='https://www.mman.kr/Service/opt/opt_bridge?aid=sample_ad_id&sid=sample_session_id&i_platform=561&t_type=1' target='_blank'><img id='mz_logo' src='https://advimg.ad-mapps.com/sdk/M_PLUS/Image/templete/logo.png' alt='' /></a></div><div id='mz_beacon' style='position: absolute; left: 0px; top: 0px; visibility: hidden'><img id='mz_imps' src='https://adc.com/tp/ad_tracking.mezzo/?e_request_type=imps_tracking&e_version=2&i_request_key=sample_request_key&t_ver=2&e_cp=${AUCTION_PRICE}' alt=''></div></div></div></body><script>var mzCtObj={iconUrl:'',productImg:[],title:'Sample Title',desc:'Sample Description',adPdSubNo:3,bgColor:'#7f7f7f',ctaBgColor:'#7f7f7f',ctaText:'Sample CTA'};</script><script src='https://advimg.ad-mapps.com/template/verticalvideobanner/js/renderer.min.js'></script><script src='https://advimg.ad-mapps.com/template/verticalvideobanner/js/main.js'></script></html>\" style=\"width:100%;height:100%;border:none;\"></iframe>",
                   "adid": "sample_ad_id",
                   "adomain": [
                       "example.com"
                   ],
                   "cid": "sample_campaign_id",
                   "crid": "sample_creative_id",
                   "cat": [
                       "IAB3-4"
                   ],
                   "w": 640,
                   "h": 960,
                   "ext": {}
               }
           ],
           "seat": "sample_seat"
       }
   ],
   "bidid": "sample_bid_response_id",
   "cur": "USD"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="danger" %}

#### adm 가공 금지

광고 영역에 영상 소재가 제공될 수 있으므로, adm은 별도 가공 없이 응답 원문을 그대로 사용하시기 바랍니다.
{% endhint %}

## **3. 쿠키매칭**

{% hint style="warning" %}
웹은 별도의 프로세스를 통해서 광고 오디언스 매칭을 수행합니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>SSP에서는 DSP에게 쿠키매칭을 위한 URL을 제공한다.<br>http://ssphost/match?dsp_user_id={dsp_uid}</td></tr><tr><td>2</td><td>DSP에서는 사전에 쿠키매칭이 가능한 광고주 또는 서비스페이지에 미리 해당URL을 비콘 형태로 설치한다. (최소 연동 2~3주 전)</td></tr><tr><td>3</td><td>설치된 페이지에 유입되는 오디언스의 브라우저에서는 해당 URL(SSP)로 dsp_uid를 담아 요청하게 되고, SSP에서는 전달된 dsp_uid 값을 ssphost로 쿠키를 발급한다.</td></tr><tr><td>4</td><td>향후 SSP는 DSP에 Bid Request 시 발급된 dsp_uid 값을 포함하여 요청한다.</td></tr></tbody></table>

### **광고 서버 에러 코드 정의**

| 코드 | 설명                           |
| -- | ---------------------------- |
| 3  | 잘못된 파라미터 정보 전달 (잘못된 입찰 요청)   |
| 4  | TARGETPICK 지면 없음 (잘못된 입찰 요청) |
| 5  | 송출 광고물 없음                    |
| 98 | 잘못된 트래킹 정보                   |
| 99 | 광고 서버 에러                     |

### **HTTP Response Status Code 정의**

| Status Code | 설명          | Body       |
| ----------- | ----------- | ---------- |
| 200         | 정상적인 입찰의 경우 | 2.3.2 참조   |
| 204         | 입찰을 포기할 경우  | Empty body |
| 400         | 잘못된 입찰 요청   | 2.3.3 참조   |

##

## **4. SKAdNetwork 지원(iOS14 이상)**

{% hint style="info" %}
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다.</td></tr><tr><td>3</td><td>Apple로부터 발급받은 SKAdNetwork ID를 MezzoMedia 담당자에게 전달하고<br>MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다.</td></tr><tr><td>4</td><td>DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다.</td></tr><tr><td>5</td><td>광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다.</td></tr><tr><td>6</td><td>DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다.</td></tr></tbody></table>

### **광고요청 추가내용 (SKAdNetwork)**

> BidRequest / imp / banner / ext / skadn

해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 합니다.

<table data-header-hidden><thead><tr><th width="76">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</td></tr><tr><td>2</td><td>사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다.</td></tr><tr><td>3</td><td>SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다.</td></tr><tr><td>4</td><td>DSP는 CJ 메조미디어의 Bid Request 규약을 준수해야한다.</td></tr></tbody></table>

| 필드         | 유형     | 필수 | 설명                                                                     | 예                                        |
| ---------- | ------ | -- | ---------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                    | “version”:”2.0”                          |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.app.bundle’ 과 매칭</p> | “sourceapp”:”000000000”                  |
| skadnetids | string | Y  | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs                             | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### **광고응답 추가내용 (SKAdNetwork)**

> BidResponse / imp / banner / ext / skadn

| 필드         | 유형     | 필수 | 설명                                                                                 | 예                                               |
| ---------- | ------ | -- | ---------------------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                                | “version”:”2.0”                                 |
| network    | string | Y  | <p>광고 네트워크 식별자.<br>Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함</p>                    | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y  | <p>Apple의 규격에 맞는 캠페인 ID.<br>1과 100 사이의 정수를 이용해서 표현해야함</p>                          | “campaign”:”45”                                 |
| itunesitem | string | Y  | Apple App 스토어에 등록된 광고주 App ID. ‘Bidresponse.bid.bundle’과 매칭                        | “itunesitem”:”123456789”                        |
| nonce      | string | Y  | 개별 광고 response의 유니크 ID                                                             | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭</p> | “sourceapp”:”000000000”                         |
| timestamp  | string | Y  | Unix time을 string 값으로 전달                                                           | “timestamp”:”1234567890”                        |
| signature  | string | Y  | Apple에서 제공하는 SKAdNetwork sigature 값                                                | “signature”:”ABCDEFGHijkl-lmb…”                 |

### **예제**

{% tabs %}
{% tab title="Request" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 비디오 광고

CJ 메조미디어 DSP에 SSP 비디오 인벤토리 연동 시 가이드 입니다.

## 1. **REQUEST**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 DSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 구성한 뒤, 위의 URL 을 POST 방식으로 호출합니다.\
요청 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격을 따릅니다.

### **Request object**

| 필드     | 유형           | 필수 | 설명                                               |
| ------ | ------------ | -- | ------------------------------------------------ |
| id     | string       | Y  | 요청 유니크 아이디                                       |
| at     | integer      | Y  | 0 : fixed price, 1: first price, 2: second price |
| tmax   | integer      | Y  | 최대허용시간 (ms).                                     |
| imp    | object array | Y  | [`imp`](#imp) 객체를 참고하십시오.                        |
| app    | object       | Y  | [`app`](#app) 객체를 참고하십시오.                        |
| device | object       | Y  | [`device`](#device) 객체를 참고하십시오.                  |
| user   | object       | Y  | [`user`](#user) 객체를 참고하십시오.                      |
| bcat   | string array | N  | IAB 카테고리 기준으로 광고주 카테고리를 차단합니다.                   |
| badv   | string array | N  | 광고주의 도메인을 차단합니다.                                 |
| bapp   | string array | N  | App의 번들이나 패키지명을 차단합니다.                           |
| ext    | object       | Y  | [`ext`](#ext) 객체를 참고하십시오.                        |

### **Imp**

| 필드                | 유형      | 필수 | 설명                                                                                                                        |
| ----------------- | ------- | -- | ------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y  | 노출에 대한 유니크 아이디                                                                                                            |
| bidfloor          | float   | Y  | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12                                                                                              |
| bidfloorcur       | string  | Y  | 통화, 예) ‘KRW’                                                                                                              |
| secure            | integer | Y  | 0 : http, 1 : https                                                                                                       |
| video             | object  | Y  | [`video`](#video) 객체를 참고하십시오.                                                                                             |
| instl             | integer | Y  | <p>전면광고 여부를 전달합니다. (default: 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y  | SSP 플랫폼명 또는 SDK명을 의미합니다.                                                                                                  |
| displaymanagerver | string  | Y  | SSP 플랫폼 또는 SDK 버전을 의미합니다.                                                                                                 |

### **Video**

> imp / video

| 필드          | 유형            | 필수 | 설명                                                                                                                     |
| ----------- | ------------- | -- | ---------------------------------------------------------------------------------------------------------------------- |
| mimes       | string array  | Y  | MIME 타입. 예) “video/mp4”                                                                                                |
| w           | integer       | Y  | 비디오의 가로 크기                                                                                                             |
| h           | integer       | Y  | 비디오의 세로 크기                                                                                                             |
| minduration | integer       | Y  | 비디오가 재생되어야 하는 최소 시간(초)                                                                                                 |
| maxduration | integer       | Y  | 비디오가 재생될 수 있는 최대 시간(초)                                                                                                 |
| protocols   | integer array | Y  | VAST 버전. “3” 을 전달합니다.                                                                                                  |
| startdelay  | integer       | Y  | <p>프리롤, 미드롤, 포스트롤 광고 구분값을 전달합니다.</p><ul><li>0: 프리롤</li><li>-1: 일반 미드롤</li><li>-2: 일반 포스트롤</li></ul>                    |
| linearity   | integer       | Y  | <ul><li>1: Linear / In-Stream </li><li>2: Non-Linear / Overlay</li></ul>                                               |
| delivery    | integer array | Y  | 2 (Progressive) 로 전달합니다.                                                                                               |
| placement   | integer       | Y  | <p>비디오 게재 위치</p><ul><li>1: 플레이어 내</li><li>2: 배너 내</li><li>3: 기사 내</li><li>4: 피드 내</li><li>5: 전면 / 슬라이드 / 플로팅</li></ul> |
| ext         | object        | N  | <p>표준 항목 외에 필요한 정보를 전달합니다.<br>(ex, rewarded)</p>                                                                       |

### **Video / ext**

> imp / video / ext

| Field    | Type    | Required | Description                                                                           |
| -------- | ------- | -------- | ------------------------------------------------------------------------------------- |
| rewarded | integer | N        | <p>Reward 광고 여부를 전달합니다.</p><ul><li>0: no(non-reward)</li><li>1: yes(reward)</li></ul> |

### **App**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| bundle    | string       | Y  | 번들 이름, 패키지 이름                         |
| storeurl  | string       | N  | 앱스토어 URL                              |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`publisher`](#publisher) 객체를 참고하십시오. |

### **Publisher**

> [app](https://docs.meba.kr/s-plus/api/dsp/delivery/video/#video_app) / publisher

| 필드   | 유형           | 필수 | 설명      |
| ---- | ------------ | -- | ------- |
| id   | string       | Y  | 퍼블리셔 ID |
| name | string       | N  | 퍼블리셔 명  |
| cat  | string array | N  | 카테고리    |

### **Device**

| 필드    | 유형      | 필수 | 설명                                   |
| ----- | ------- | -- | ------------------------------------ |
| ua    | string  | Y  | 디바이스의 User Agent 정보                  |
| dnt   | integer | N  | 위치 추적 금지 활성화 여부. 0: 추적 가능, 1: 추적 금지. |
| ip    | string  | Y  | IPV4 주소                              |
| model | string  | N  | 모델명                                  |
| os    | string  | Y  | 운영체제. 예) iOS, Anroid                 |
| osv   | string  | Y  | 운영체제 버전. 예) 8.1, 9.2                 |
| js    | integer | N  | RTB 프로토콜에 1로 정의되어 있습니다.              |
| ifa   | string  | Y  | Apple IFA 또는 Google 의 ADID           |

{% hint style="danger" %}

* UA(User Agent)의 경우, AD Exchange 거래를 위한 조건으로 <mark style="color:red;">**반드시 필수 제공**</mark>해주셔야 합니다.
* IP의 경우, <mark style="color:red;">**Private IP(가상IP)가 아닌 Public IP 기준으로 전달**</mark>주셔야 합니다.\
  공유기, 회사 내부망에 할당된 IP가 그대로 전달 될 경우 광고 거래가 제한적일 수 있습니다.
  {% endhint %}

### **User**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ 메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드 | 유형     | 필수 | 설명         |
| -- | ------ | -- | ---------- |
| id | string | Y  | 사용자의 고유 ID |

### **요청 예제**

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "at": 0,
   "tmax": 250,
   "imp": [
      {
         "id": "150226007700",
         "bidfloorcur": "KRW",
         "bidfloor": 0,
         "secure": 0,
         "video": {
            "mimes": [
               "video\\/mp4"
            ],
            "w": 1080,
            "h": 1920,
            "minduration": 5,
            "maxduration": 30,
            "protocols": [
               3
            ],
            "startdelay": 0,
            "linearity": 1,
            "delivery": [
               2
            ],
            "ext": {
               "rewarded": 1
            }
         },
         "instl": 0
      }
   ],
   "app": {
      "id": "test-pub-app-id",
      "name": "test-pub-app-name",
      "bundle": "com.mezzo.co.kr ",
      "storeurl": "https://itunes.apple.com/us/app/id1234567?mt=8",
      "cat": [
         "IAB1"
      ],
      "publisher": {
         "id": "test-pub-app-id",
         "name": "test-pub-app-name",
         "cat": [
            "IAB1"
         ]
      }
   },
   "device": {
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H141",
      "dnt": 0,
      "ip": "192.168.1.1",
      "model": "iPhone 7,2",
      "os": "iOS",
      "osv": "8.0",
      "js": 1,
      "ifa": "test-ifa-gaid"
   },
   "user": {
      "id": "923123"
   },
   "ext": {
   }
}
```

{% endcode %}
{% endtab %}

{% tab title="WEB" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "at": 0,
   "tmax": 250,
   "imp": [
      {
         "id": "150226007700",
         "bidfloorcur": "KRW",
         "bidfloor": 0,
         "secure": 0,
         "video": {
            "mimes": [
               "video\\/mp4"
            ],
            "w": 1080,
            "h": 1920,
            "minduration": 5,
            "maxduration": 30,
            "protocols": [
               3
            ],
            "startdelay": 0,
            "linearity": 1,
            "delivery": [
               2
            ],
            "ext": {
               "rewarded": 1
            }
         },
         "instl": 0
      }
   ],
   "site": {
      "id": "test-pub-app-id",
      "domain": "test-pub-web-domain",
      "ref": " test-pub-web-ref",
      "cat": [
         "IAB1"
      ],
      "publisher": {
         "id": "test-pub-app-id",
         "name": "test-pub-app-name",
         "cat": [
            "IAB1"
         ]
      }
  },
  "device": {
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H141",
      "ip": "192.168.1.1"
  },
  "user": {
      "id": "923123"
  },
  "ext": {
      "price_type": 1,
      "tracking_type": 0
  }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **2. RESPONSE**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다. 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) 규격을 따릅니다.

### **Bid Response**

{% hint style="info" %}
&#x20;JSON 형식의 응답 객체입니다.
{% endhint %}

| 필드      | 유형           | 필수 | 설명                       |
| ------- | ------------ | -- | ------------------------ |
| id      | string       | Y  | Bid Request 의 ID         |
| bidid   | string       | Y  | Bid 오브젝트의 ID             |
| cur     | string       | Y  | 입찰시 사용할 통화. 예) KRW       |
| seatbid | object array | Y  | [`bid`](#bid) 객체 에 대한 배열 |

### **Bid**

| 필드      | 유형           | 필수 | 설명                        |
| ------- | ------------ | -- | ------------------------- |
| id      | string       | Y  | 입찰 정보를 관리하는 ID            |
| price   | float        | Y  | 입찰 가격                     |
| adm     | string (XML) | Y  | [`adm`](#adm) 객체를 참고하십시오. |
| nurl    | string       | Y  | 노출 URL                    |
| adomain | string array | Y  | 광고주 도메인                   |
| cid     | string       | Y  | 광고주 캠페인명 / id             |
| crid    | string       | Y  | 광고주 광고물명 / id             |
| cat     | string array | Y  | 카테고리                      |
| ext     | object       | Y  | [`ext`](#ext) 객체를 참고하십시오. |

### **Ext**

| 필드        | 유형     | 필수 | 설명                                           |
| --------- | ------ | -- | -------------------------------------------- |
| clickurl  | string | Y  | 클릭 트래킹 URL                                   |
| viewable  | string | Y  | 광고 영역이 20% 이상 노출되면서 2초 이상 유지된 경우에 대한 트래킹 URL |
| breakaway | string | Y  | 광고 재생이 완료되지 않고 이탈한 이벤트에 대한 트래킹 URL.          |

{% hint style="warning" %}
breakaway URL 에 {m\_sec} 이 포함된 경우, {m\_sec} 을 광고 재생 시간으로 치환하여 URL 호출을 합니다.\
예를 들어 breakaway 값을 <http://breakaway.tracking.com/tracking.do?time={m\\_sec}> 지정했고, 20초 재생 후 이탈 한 경우, <http://breakaway.tracking.com/tracking.do?time=20> 을 호출합니다.
{% endhint %}

### **Adm**

{% hint style="info" %}
XML 로 정의되는 객체입니다. 객체 정의는 [VAST 3.0](https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf) 규격을 따릅니다.
{% endhint %}

| 필드   | 유형      | 필수 | 설명                          |
| ---- | ------- | -- | --------------------------- |
| VAST | element | Y  | [`VAST`](#vast) 정의를 참고하십시오. |

### **VAST**

> adm / VAST

| 필드      | 유형            | 필수 | 설명                               |
| ------- | ------------- | -- | -------------------------------- |
| version | integer (속성)  | Y  | VAST 규약 버전. 3.0 인 경우, 3으로 작성합니다. |
| Ad      | element array | Y  | [`Ad`](#a-d) 정의를 참고하십시오.         |

### **Ad**

> adm / Ad

| 필드       | 유형           | 필수 | 설명                              |
| -------- | ------------ | -- | ------------------------------- |
| id       | integer (속성) | N  | 광고 ID                           |
| sequence | integer (속성) | N  | 광고의 sequence 번호                 |
| Inline   | element      | Y  | [`Inline`](#inline) 정의를 참고하십시오. |

### **Inline**

> adm / Ad / Inline

| 필드         | 유형            | 필수 | 설명                                      |
| ---------- | ------------- | -- | --------------------------------------- |
| AdSystem   | integer       | N  | [`AdSystem`](#a-dsystem) 정의를 참고하십시오.    |
| AdTitle    | integer       | N  | 광고 이름                                   |
| Extensions | element       | N  | [`Extensions`](#extensions) 정의를 참고하십시오. |
| Error      | element       | N  | Player 에러 발생시 호출할 트래킹 URL               |
| Impression | element       | Y  | 동영상 시작시 호출할 트래킹 URL                     |
| Creatives  | element array | Y  | [`Creative`](#creative) element 에 대한 배열 |

### **AdSystem**

> adm / Ad / Inline / AdSystem

| 필드      | 유형           | 필수 | 설명       |
| ------- | ------------ | -- | -------- |
| version | integer (속성) | N  | 광고 엔진 버전 |

{% hint style="info" %}
필드값은 광고 엔진 이름입니다.
{% endhint %}

### **Extensions**

> adm / Ad / Inline / Extensions

| 필드        | 유형     | 필수 | 설명          |
| --------- | ------ | -- | ----------- |
| requestID | string | N  | 광고 요청 고유 코드 |

### **Creative**

> adm / Ad / Inline / Creatives / Creative

| 필드       | 유형      | 필수 | 설명                              |
| -------- | ------- | -- | ------------------------------- |
| id       | integer | N  | 광고 번호                           |
| sequence | integer | N  | 광고 시퀀스                          |
| Linear   | element | Y  | [`Linear`](#linear) 정의를 참고하십시오. |

### **Linear**

> adm / Ad / Inline / Creatives / Creative / Linear

| 필드             | 유형            | 필수 | 설명                                        |
| -------------- | ------------- | -- | ----------------------------------------- |
| Duration       | string        | N  | 영상 길이 / 재생 시간. hh:mm:ss 형태로 지정합니다.        |
| TrackingEvents | element array | N  | [`Tracking`](#tracking) element 대한 배열     |
| VideoClicks    | element       | N  | [`VideoClicks`](#videoclicks) 정의를 참고하십시오. |
| MediaFiles     | element array | Y  | [`MediaFile`](#mediafile) element 대한 배열   |

### **Tracking**

> adm / Ad / Inline / Creatives / Creative / Linear / TrackingEvents / Tracking

{% hint style="info" %}
필드 값은 트래킹 이벤트 전달을 위한 HTTP(s) URL 입니다.
{% endhint %}

| 필드     | 유형            | 필수 | 설명                                               |
| ------ | ------------- | -- | ------------------------------------------------ |
| event  | string (속성)   | Y  | 이벤트 이름을 지정합니다. 예) start, firstQuartile, midpoint |
| offset | element array | N  | 이벤트 발생 조건이 되는 재생 시간을 지정합니다. hh:mm:ss 형태로 지정.     |

{% hint style="info" %}
필드값은 트래킹 이벤트 전달을 위한 HTTP(s) URL 입니다.
{% endhint %}

<table><thead><tr><th width="196">이벤트 값</th><th>설명</th></tr></thead><tbody><tr><td>start</td><td>동영상이 시작된 경우 호출하는 트래킹 URL</td></tr><tr><td>firstQuartile</td><td>동영상이 25% 재생된 경우 호출하는 트래킹 URL</td></tr><tr><td>midpoint</td><td>동영상이 50% 재생된 경우 호출하는 트래킹 URL</td></tr><tr><td>thirdQuartile</td><td>동영상이 75% 재생된 경우 호출하는 트래킹 URL</td></tr><tr><td>complete</td><td>동영상 재생이 완료된 경우 호출하는 트래킹 URL</td></tr><tr><td>progress</td><td>동영상이 지정된 offset 속성만큼 재생된 경우 호출하는 트래킹 URL</td></tr></tbody></table>

{% hint style="info" %}
(이벤트 값과 offset 값이 같은) 동일한 이벤트에 서로 다른 트래킹 URL 을 지정할 수 있습니다.
{% endhint %}

### **VideoClicks**

> adm / Ad / Inline / Creative / Linear / VideoClicks

{% hint style="info" %}
필드값은 클릭 이벤트를 처리하기 위한 HTTP(s) URL 입니다.
{% endhint %}

| 필드            | 유형     | 필수 | 설명                             |
| ------------- | ------ | -- | ------------------------------ |
| ClickThrough  | string | Y  | 광고 랜딩 페이지 URL                  |
| ClickTracking | string | N  | 광고 클릭 이벤트 트래킹 URL              |
| offset        | string | N  | 지정된 시간까지 재생된 이후에 광고 클릭이 가능합니다. |

{% hint style="info" %}
ClickThrough: DSP 에서 클릭 이벤트를 처리한 뒤, 최종 광고 랜딩으로 리다이렉트 하도록 구성할 수 있습니다.
{% endhint %}

### **MediaFile**

> adm / Ad / Inline / Creatives / Creative / Linear / MediaFiles / MediaFile

| 요소 / 속성  | 유형      | 필수 | 설명                                 |
| -------- | ------- | -- | ---------------------------------- |
| delivery | string  | N  | 동영상 소재 재생 방식. progressive 를 지원합니다. |
| type     | string  | N  | 동영상 소재 타입. 예) video/mp4            |
| width    | integer | N  | 동영상 소재의 폭                          |
| height   | integer | N  | 동영상 소재의 높이                         |
| bitrate  | integer | N  | 동영상 소재의 비트레이트                      |

{% hint style="info" %}
필드값은 비디오 콘텐츠의 경로입니다. (HTTP, HTTPS)
{% endhint %}

### 응답 예제

{% tabs %}
{% tab title="response" %}
{% code lineNumbers="true" %}

```json
{
   "id": "req-12345-abcde",
   "bidid": "5508",
   "cur": "KRW",
   "seatbid": [
      {
         "bid": [
            {
               "id": "147704390800",
               "price": "60",
               "adm": "%3CVAST+version%3D%223.0%22%3E%0D%0A%3CAd+id%3D%2250096%22+sequence%3D%221%22%3E%0D%0A%3CInLine%3E%0D%0A%3CAdSystem+version%3D%222%22%3EMAN%3C%2FAdSystem%3E%0D%0A%3CAdTitle%3E%0D%0A%3C%21%5BCDATA%5B+20160217_%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4_%ED%99%88%ED%94%8C%EB%9F%AC%EC%8A%A4_%EB%8F%99%EC%98%81%EC%83%81_%ED%85%8C%EC%8A%A4%ED%8A%B8+%5D%5D%3E%0D%0A%3C%2FAdTitle%3E%0D%0A%3CExtensions%3E%0D%0A%3CrequestID%3E%0D%0A%3C%21%5BCDATA%5B+-+%5D%5D%3E%0D%0A%3C%2FrequestID%3E%0D%0A%3C%2FExtensions%3E%0D%0A%3CError%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fd_err%3D%5BERRORCODE%5D%5D%0D%0A%5D%5D%3E%0D%0A%3C%2FError%3E%0D%0A%3CImpression+id%3D%22man_server%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dimps_tracking%0D%0A%5D%5D%3E%0D%0A%3C%2FImpression%3E%0D%0A%3CCreatives%3E%0D%0A%3CCreative+id%3D%2225549%22+sequence%3D%221%22%3E%0D%0A%3CLinear%3E%0D%0A%3CDuration%3E00%3A00%3A30%3C%2FDuration%3E%0D%0A%3CTrackingEvents%3E%0D%0A%3CTracking+event%3D%22start%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q1%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22firstQuartile%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q2%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22midpoint%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q3%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22thirdQuartile%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q4%26e_version%3D2%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22complete%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_q5%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22progress%22+offset%3D%2200%3A00%3A05%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dimps_video_tracking%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3CTracking+event%3D%22progress%22+offset%3D%2200%3A00%3A15%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dtrack_vast_view%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FTracking%3E%0D%0A%3C%2FTrackingEvents%3E%0D%0A%3CVideoClicks%3E%0D%0A%3CClickThrough%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fad_tracking.mezzo%2F%3Fe_request_type%3Dclick%26e_version%3D2%0D%0A%5D%5D%3E%0D%0A%3C%2FClickThrough%3E%0D%0A%3CClickTracking%3E%3C%2FClickTracking%3E%0D%0A%3COffset%3E00%3A00%3A05%3C%2FOffset%3E%0D%0A%3C%2FVideoClicks%3E%0D%0A%3CMediaFiles%3E%0D%0A%3CMediaFile+delivery%3D%22progressive%22+type%3D%22video%2Fmp4%22+width%3D%22480%22+height%3D%22270%22+bitrate%3D%22350%22%3E%0D%0A%3C%21%5BCDATA%5B%0D%0Ahttp%3A%2F%2Fmtag.mman.kr%2Fvod.mezzo%2F%3Fe_version%3D2%26e_request_type%3Dvod%26i_video_name%3D20161014150027%26d_r%3D1%26i_rs_t%3D3%26d_p1%3D1%0D%0A%5D%5D%3E%0D%0A%3C%2FMediaFile%3E%0D%0A%3C%2FMediaFiles%3E%0D%0A%3C%2FLinear%3E%0D%0A%3C%2FCreative%3E%0D%0A%3C%2FCreatives%3E%0D%0A%3C%2FInLine%3E%0D%0A%3C%2FAd%3E%0D%0A%3C%2FVAST%3E",
               "nurl": "http://abc.com/ad_tracking.mezzo/?e_request_type=imps_tracking",
               "adomain": "http: //adver.co.kr",
               "cid": "2234",
               "crid": "2234",
               "cat": [
                  "IAB1"
               ],
               "ext": {
                  "clickurl": "http://abc.com/ad_tracking.mezzo/?e_request_type=click",
                  "viewable": "http://abc.com/ad_tracking.mezzo/?e_request_type=viewable",
                  "breakaway": "http://abc.com/ad_tracking.mezzo/?e_request_type=breakaway&sec={m_sec}"
               }
            }
         ]
      }
   ]
}

```

{% endcode %}
{% endtab %}

{% tab title="adm" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<VAST version="3.0">
   <Ad id="50096" sequence="1">
      <InLine>
         <AdSystem version="2">MAN</AdSystem>
         <AdTitle><![CDATA[ 20160217_홈플러스_홈플러스_동영상_테스트 ]]></AdTitle>
         <Extensions>
            <requestID><![CDATA[ - ]]></requestID>
         </Extensions>
         <Error><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?d_err=[ERRORCODE]]]]></Error>
         <Impression id="man_server"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=imps_tracking]]></Impression>
         <Creatives>
            <Creative id="25549" sequence="1">
               <Linear>
                  <Duration>00:00:30</Duration>
                  <TrackingEvents>
                     <Tracking event="start"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q1&e_version=2]]></Tracking>
                     <Tracking event="firstQuartile"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q2&e_version=2]]></Tracking>
                     <Tracking event="midpoint"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q3&e_version=2]]></Tracking>
                     <Tracking event="thirdQuartile"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q4&e_version=2]]></Tracking>
                     <Tracking event="complete"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_q5&e_version=2]]></Tracking>
                     <Tracking event="progress" offset="00:00:05"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=imps_video_tracking&e_version=2]]></Tracking>
                     <Tracking event="progress" offset="00:00:15"><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=track_vast_view&e_version=2]]></Tracking>
                  </TrackingEvents>
                  <VideoClicks>
                     <ClickThrough><![CDATA[http://mtag.mman.kr/ad_tracking.mezzo/?e_request_type=click&e_version=2]]></ClickThrough>
                     <ClickTracking></ClickTracking>
                     <Offset>00:00:05</Offset>
                  </VideoClicks>
                  <MediaFiles>
                     <MediaFile delivery="progressive" type="video/mp4" width="480" height="270" bitrate="350"><![CDATA[http://mtag.mman.kr/vod.mezzo/?e_version=2&e_request_type=vod&i_video_name=20161014150027&d_r=1&i_rs_t=3&d_p1=1]]></MediaFile>
                  </MediaFiles>
               </Linear>
            </Creative>
         </Creatives>
      </InLine>
   </Ad>
</VAST>
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **3. SKAdNetwork 지원(iOS14 이상)**

{% hint style="info" %}
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다.</td></tr><tr><td>3</td><td>Apple로부터 발급받은 SKAdNetwork ID를 CJ MezzoMedia 담당자에게 전달하고<br>CJ MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다.</td></tr><tr><td>4</td><td>DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다.</td></tr><tr><td>5</td><td>광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다.</td></tr><tr><td>6</td><td>DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다.</td></tr></tbody></table>

### **광고요청 추가내용 (SKAdNetwork)**

> BidRequest / imp / banner / ext / skadn

{% hint style="info" %}
해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 한다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</td></tr><tr><td>2</td><td>사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다.</td></tr><tr><td>3</td><td>SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다.</td></tr><tr><td>4</td><td>DSP는 CJ 메조미디어의 Bid Request 규약을 준수해야한다.</td></tr></tbody></table>

| 필드         | 유형     | 필수 | 설명                                                                     | 예                                        |
| ---------- | ------ | -- | ---------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                    | “version”:”2.0”                          |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.app.bundle’ 과 매칭</p> | “sourceapp”:”000000000”                  |
| skadnetids | string | Y  | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs                             | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### **광고응답 추가내용 (SKAdNetwork)**

> BidResponse / imp / banner / ext / skadn

| 필드         | 유형     | 필수 | 설명                                                                                 | 예                                               |
| ---------- | ------ | -- | ---------------------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                                | “version”:”2.0”                                 |
| network    | string | Y  | <p>광고 네트워크 식별자.<br>Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함</p>                    | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y  | <p>Apple의 규격에 맞는 캠페인 ID.<br>1과 100 사이의 정수를 이용해서 표현해야함</p>                          | “campaign”:”45”                                 |
| itunesitem | string | Y  | Apple App 스토어에 등록된 광고주 App ID. ‘Bidresponse.bid.bundle’과 매칭                        | “itunesitem”:”123456789”                        |
| nonce      | string | Y  | 개별 광고 response의 유니크 ID                                                             | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭</p> | “sourceapp”:”000000000”                         |
| timestamp  | string | Y  | Unix time을 string 값으로 전달                                                           | “timestamp”:”1234567890”                        |
| signature  | string | Y  | Apple에서 제공하는 SKAdNetwork sigature 값                                                | “signature”:”ABCDEFGHijkl-lmb…”                 |

### **예제**

{% tabs %}
{% tab title="Request" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 네이티브 광고

CJ 메조미디어 DSP에 SSP 네이티브 인벤토리 연동 시 가이드 입니다.

## 1. **REQUEST**

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

CJ 메조미디어 SSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 작성해 DSP 인터페이스를 호출합니다. 요청 객체 정의는[OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)와 [OpenRTB Dynamic Native Ads API Specification Version 1.2](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf)규격을 따릅니다.

### **Request object**

| 필드     | 유형           | 필수 | 설명                                                                              |
| ------ | ------------ | -- | ------------------------------------------------------------------------------- |
| id     | string       | Y  | 요청 유니크 아이디                                                                      |
| cur    | string array | N  | ISO-4217-alpha 경매에 사용할 수 있는 통화 입니다. 예: “KRW”                                    |
| test   | integer      | N  | 경매가 테스트 모드(1)건 실시간 모드(0)건, 테스트 경매에는 입찰할 수 없습니다                                  |
| site   | object       | Y  | [`site`](#site) 객체를 참고하십시오.                                                     |
| app    | object       | Y  | [`app`](#app) 객체를 참고하십시오.                                                       |
| device | object       | Y  | [`device`](#device) 객체를 참고하십시오.                                                 |
| user   | object       | Y  | [`user`](#user) 객체를 참고하십시오.                                                     |
| imp    | object array | Y  | [`imp`](#imp) 객체를 참고하십시오.                                                       |
| at     | integer      | Y  | <ul><li>0: fixed price</li><li>1: first price</li><li>2: second price</li></ul> |
| tmax   | integer      | Y  | 최대허용시간 (ms).                                                                    |
| bcat   | string array | N  | IAB 카테고리 기준으로 광고주 카테고리를 차단합니다.                                                  |
| badv   | string array | N  | 광고주의 도메인을 차단합니다.                                                                |
| bapp   | string array | N  | App의 번들이나 패키지명을 차단합니다.                                                          |
| ext    | object       | N  | `ext` 객체를 참고하십시오.                                                               |

### **Site**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| domain    | string       | N  | 사이트 도메인                               |
| page      | string       | N  | 페이지 url                               |
| ref       | string       | N  | 현재페이지로 이동해오기 바로 전 페이지의 주소             |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`publisher`](#publisher) 객체를 참고하십시오. |

### **App**

| 필드        | 유형           | 필수 | 설명                                    |
| --------- | ------------ | -- | ------------------------------------- |
| id        | string       | Y  | 퍼블리셔 ID                               |
| name      | string       | N  | 애플리케이션 이름                             |
| bundle    | string       | Y  | 번들 이름, 패키지 이름                         |
| storeurl  | string       | N  | 앱스토어 URL                              |
| cat       | string array | N  | 카테고리                                  |
| publisher | object       | Y  | [`publisher`](#publisher) 객체를 참고하십시오. |

### **Publisher**

> site / publisher\
> app / publisher

| 필드     | 유형     | 필수 | 설명      |
| ------ | ------ | -- | ------- |
| id     | string | Y  | 퍼블리셔 ID |
| name   | string | N  | 퍼블리셔 명  |
| domain | string | N  | 사이트 도메인 |

### **Device**

| 필드    | 유형      | 필수 | 설명                                                                |
| ----- | ------- | -- | ----------------------------------------------------------------- |
| adid  | string  | Y  | 디바이스의 ADID                                                        |
| make  | string  | Y  | <p>디바이스의 제조사<br>예) samsung</p>                                    |
| ua    | string  | Y  | 디바이스의 User Agent 정보                                               |
| dnt   | integer | N  | <p>위치 추적 금지 활성화 여부</p><ul><li>0: 추적 가능</li><li>1: 추적 금지</li></ul> |
| ip    | string  | Y  | IPV4 주소                                                           |
| model | string  | N  | 모델명                                                               |
| os    | string  | Y  | 운영체제. 예) iOS, Anroid                                              |
| osv   | string  | Y  | 운영체제 버전. 예) 8.1, 9.2                                              |
| js    | integer | N  | RTB 프로토콜에 1로 정의되어 있습니다.                                           |
| ifa   | string  | Y  | Apple IFA 또는 Google 의 ADID                                        |

{% hint style="danger" %}

* UA(User Agent)의 경우, AD Exchange 거래를 위한 조건으로 <mark style="color:red;">**반드시 필수 제공**</mark>해주셔야 합니다.
* IP의 경우, <mark style="color:red;">**Private IP(가상IP)가 아닌 Public IP 기준으로 전달**</mark>주셔야 합니다.\
  공유기, 회사 내부망에 할당된 IP가 그대로 전달 될 경우 광고 거래가 제한적일 수 있습니다.
  {% endhint %}

### **User**

{% hint style="info" %}
RTB 프로토콜에는 없는 CJ메조미디어의 확장 필드 입니다.
{% endhint %}

| 필드 | 유형     | 필수 | 설명         |
| -- | ------ | -- | ---------- |
| id | string | Y  | 사용자의 고유 ID |

### **Imp**

| 필드                | 유형      | 필수 | 설명                                                                                                                         |
| ----------------- | ------- | -- | -------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y  | 노출에 대한 유니크 아이디                                                                                                             |
| bidfloor          | float   | Y  | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12                                                                                               |
| bidfloorcur       | string  | Y  | 통화, 예) ‘KRW’                                                                                                               |
| secure            | integer | Y  | <ul><li>0: http</li><li>1: https</li></ul>                                                                                 |
| type              | string  | Y  | Native                                                                                                                     |
| native            | object  | Y  | [`native`](#native) 객체를 참고하십시오.                                                                                            |
| instl             | integer | Y  | <p>전면광고 여부를 전달합니다. (default : 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y  | SSP 플랫폼명 또는 SDK명을 의미합니다.                                                                                                   |
| displaymanagerver | string  | Y  | SSP 플랫폼 또는 SDK 버전을 의미합니다.                                                                                                  |

### **Native**

> imp / native

| 필드      | 유형            | 필수 | 설명                             |
| ------- | ------------- | -- | ------------------------------ |
| request | string        | Y  | Native 광고에 대한 유효 요청            |
| ver     | string        | Y  | 사용하는 Dynamic Native Ads API 버전 |
| battr   | integer array | -  | 차단된 소재 속성                      |

### **Native\_request**

> imp / native /

| 필드            | 유형           | 필수 | 설명                                                                                                         |
| ------------- | ------------ | -- | ---------------------------------------------------------------------------------------------------------- |
| ver           | string       | Y  | 사용하는 Native 마크업 버전                                                                                         |
| assets        | object array | Y  | [`native_asset`](#native_asset) 객체를 참고하십시오.                                                                |
| eventtrackers | object array | Y  | <p>지원하는 이벤트 트래킹 유형<br><a href="#native_eventtracker"><code>native\_eventtracker</code></a> 객체를 참고하십시오.</p> |
| privacy       | integer      | -  | <ul><li>0: 미지원</li><li>1: 구매자의 개인 정보 보호정책을 지원</li></ul>                                                    |

### **Native\_asset**

> imp / native / native\_request

| 필드       | 유형      | 필수 | 설명                                                       |
| -------- | ------- | -- | -------------------------------------------------------- |
| id       | integer | Y  | Unique Asset ID                                          |
| required | integer | Y  | 1: 해당 asset이 필수값인 경우 설정                                  |
| title    | object  | -  | [`native_asset: Title`](#native_asset-title) 객체를 참고하십시오. |
| img      | object  | -  | [`native_asset: Image`](#native_asset-image) 객체를 참고하십시오. |
| video    | object  | -  | [`native_asset: Video`](#native_asset-video) 객체를 참고하십시오. |
| data     | object  | -  | [`native_asset: Data`](#native_asset-data) 객체를 참고하십시오.   |

### **Native\_asset: Title**

> imp / native / native\_request / native\_asset

| 필드  | 유형      | 필수 | 설명                  |
| --- | ------- | -- | ------------------- |
| len | integer | Y  | Title 요소 내 최대 문자 길이 |

### **Native\_asset: Image**

> imp / native / native\_request / native\_asset

| 필드   | 유형      | 필수 | 설명                         |
| ---- | ------- | -- | -------------------------- |
| type | integer | Y  | 퍼블리셔가 지원하는 Image 요소의 유형 ID |
| w    | integer | -  | Image의 가로 픽셀               |
| h    | integer | -  | Image의 세로 픽셀               |
| wmin | integer | -  | 요청하는 Image의 가로 픽셀 최소값      |
| hmin | integer | -  | 요청하는 Image의 세로 픽셀 최소값      |

### **Native\_asset: Video**

> imp / native / native\_request / native\_asset

| 필드          | 유형            | 필수 | 설명                     |
| ----------- | ------------- | -- | ---------------------- |
| mimes       | string array  | Y  | 지원하는 콘텐츠 MIME 유형       |
| minduration | integer       | Y  | 동영상 광고의 최소 길이(초)       |
| maxduration | integer       | Y  | 동영상 광고의 최대 길이(초)       |
| protocols   | integer array | Y  | 퍼블리셔가 지원하는 동영상 프로토콜 유형 |

### **Native\_asset: Data**

> imp / native / native\_request / native\_asset

| 필드   | 유형      | 필수 | 설명                    |
| ---- | ------- | -- | --------------------- |
| type | integer | Y  | 퍼블리셔가 지원하는 Data 요소 ID |
| len  | integer | -  | Data 요소 응답 시 최대 문자 길이 |

### **Native\_eventtracker**

> imp / native / native\_request /

| 필드      | 유형            | 필수 | 설명                   |
| ------- | ------------- | -- | -------------------- |
| event   | integer       | Y  | 트래킹이 가능한 이벤트 유형      |
| methods | integer array | Y  | 이벤트 발생 시 전달하는 트래킹 유형 |

### **요청 예제**

{% tabs %}
{% tab title="APP" %}
{% code lineNumbers="true" %}

```json
{
   "id": "cdc-7c6d-4029-dcd|1337",
   "test": 0,
   "cur": "KRW",
   "imp": [
      {
         "bidfloor":1.0,
         "bidfloorcur":"USD",
         "displaymanager":"SOMA",
         "displaymanagerver":"sdkandroid_9-1-6",
         "ext":{
 
         },
         "id":"1",
         "instl":0,
         "native":{
            "battr":[
               1,
               3,
               5,
               8,
               9
            ],
            "request":"{
"ver":"1.2",\"plcmttype\":1,\"plcmtcnt\":1,\"seq\":0,\"aurlsupport\":0,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":90}},{\"id\":2,\"required\":1,\"img\":{\"type\":3,\"wmin\":1200,\"hmin\":627}},{\"id\":3,\"required\":1,\"img\":{\"type\":1,\"wmin\":50,\"hmin\":50}},{\"id\":5,\"required\":1,\"data\":{\"type\":2,\"len\":140}},{\"id\":6,\"required\":1,\"data\":{\"type\":12,\"len\":15}}],\"eventtrackers\":[{\"event\":1,\"methods\":[1,2]}]}",
            "ver":"1.2"
         },
         "secure":0,
         "tagid":"130700475"
      }
   ],
   "app": {
      "id": "test-pub-app-id",
      "name": "test-pub-app-name",
      "bundle": "com.mezzo.co.kr",
      "storeurl": "https://play.google.com/store/apps/details?id=com.mezzo.co.kr",
      "cat": "IAB1",
      "publisher": {
         "id": "test-pub-app-id",
         "domain": "test-pub-domain",
         "product_attr": 1
      }
   },
   "device": {
      "adid": "test-ifa-gaid",
      "ua": "Mozilla/5.0 (Linux; Android 9; SM-G955N Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/105.0.5195.79 Mobile Safari/537.36",
      "ip": "58.231.40.30",
      "make": "samsung",
      "os": "Android",
      "osv": "9",
      "model": "SM-G955N",
      "dnt": 0,
      "js": 1,
      "ifa": "test-ifa-gaid"
   },
   "user": {
      "id": "923123"
   },
   "ext": {
   }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **2. RESPONSE**

{% hint style="info" %}
DSP :arrow\_right: SSP
{% endhint %}

DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다. 객체 정의는 [OPEN RTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)와 [OpenRTB Dynamic Native Ads API Specification Version 1.2](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf) 규격을 따릅니다.

### **Bid Response**

{% hint style="info" %}
JSON 형식의 응답 객체입니다.
{% endhint %}

| 필드      | 유형           | 필수 | 설명                                                    |
| ------- | ------------ | -- | ----------------------------------------------------- |
| id      | string       | Y  | Bid Request 의 ID                                      |
| bidid   | string       | Y  | Bid 오브젝트의 ID                                          |
| cur     | string       | Y  | 입찰시 사용할 통화. 예) KRW                                    |
| seatbid | object array | Y  | [`seatbid`](#seatbid) 객체 배열입니다. 입찰이 이루어지려면 1+가 필요합니다. |

### **Seatbid**

| 필드   | 유형           | 필수 | 설명                                            |
| ---- | ------------ | -- | --------------------------------------------- |
| seat | string       | Y  | 입찰 정보를 관리하는 ID                                |
| bid  | object array | Y  | [`bid`](#bid) 객체 배열입니다. 입찰이 이루어지려면 1+가 필요합니다. |

### **Bid**

| 필드      | 유형           | 필수 | 설명                                                     |
| ------- | ------------ | -- | ------------------------------------------------------ |
| id      | string       | Y  | 입찰 정보를 관리하는 ID                                         |
| impid   | string       | Y  | 입찰 요청의 노출과 관련된 노출 ID입니다. 입찰 요청 노출 객체 ID와 반드시 일치해야 합니다. |
| price   | float        | Y  | 입찰 가격                                                  |
| cat     | string array | Y  | 카테고리                                                   |
| nurl    | string       | Y  | 노출 URL                                                 |
| adm     | string       | Y  | [`native_response`](#native_response) 객체를 참고하십시오.      |
| iurl    | string       | Y  | 노출 image URL                                           |
| adomain | string array | Y  | 블랙리스트를 검사하는 광고주 도메인                                    |
| cid     | string       | Y  | 광고주 캠페인명 / id                                          |
| crid    | string       | Y  | 광고주 광고물명 / id                                          |
| w       | string       | Y  | 광고 사이즈                                                 |
| h       | string       | Y  | 광고 사이즈                                                 |
| ext     | string       | Y  | 확장 영역                                                  |

### **Native\_response**

> bid / adm /

| 필드            | 유형           | 필수 | 설명                                                                                                                |
| ------------- | ------------ | -- | ----------------------------------------------------------------------------------------------------------------- |
| ver           | string       | Y  | 사용하는 Native 마크업 버전                                                                                                |
| assets        | object array | Y  | <p>Native 광고의 assets<br><a href="#native_response_asset"><code>native\_response\_asset</code></a> 객체를 참고하십시오.</p> |
| link          | object       | Y  | [`native_response_asset_link`](#native_response_asset-link) 객체를 참고하십시오.                                           |
| eventtrackers | object array | Y  | [`native_response_asset_eventtracker`](#native_response_eventtracker) 객체를 참고하십시오.                                 |
| privacy       | string       | Y  | 개인 정보 보호 요청에 대한 응답값                                                                                               |

### **Native\_response\_asset**

> bid / adm / native\_response

| 필드       | 유형      | 필수 | 설명                                                                        |
| -------- | ------- | -- | ------------------------------------------------------------------------- |
| id       | integer | Y  | Unique asset ID                                                           |
| required | integer | Y  | 1: 해당 asset이 필수값인 경우 설정                                                   |
| title    | object  | -  | [`native_response_asset_title`](#native_response_asset-title) 객체를 참고하십시오. |
| img      | object  | -  | [`native_response_asset_image`](#native_response_asset-image) 객체를 참고하십시오. |
| video    | object  | -  | [`native_response_asset_video`](#native_response_asset-video) 객체를 참고하십시오. |
| data     | object  | -  | [`native_response_asset_data`](#native_response_asset-data) 객체를 참고하십시오.   |

### **Native\_response\_asset: Title**

> bid / adm / native\_response / native\_response\_asset

| 필드   | 유형     | 필수 | 설명                |
| ---- | ------ | -- | ----------------- |
| text | string | Y  | Text 요소와 연관된 text |

### **Native\_response\_asset: Image**

> bid / adm / native\_response / native\_response\_asset

| 필드  | 유형      | 필수 | 설명               |
| --- | ------- | -- | ---------------- |
| url | string  | Y  | Image asset의 url |
| w   | integer | Y  | Image의 가로 픽셀     |
| h   | integer | Y  | Image의 세로 픽셀     |

### **Native\_response\_asset: Video**

> bid / adm / native\_response / native\_response\_asset

| 필드      | 유형     | 필수 | 설명       |
| ------- | ------ | -- | -------- |
| vasttag | string | Y  | vast xml |

### **Native\_response\_asset: Data**

> bid / adm / native\_response / native\_response\_asset

| 필드    | 유형     | 필수 | 설명                       |
| ----- | ------ | -- | ------------------------ |
| value | string | Y  | Data asset에 노출될 형식화된 문자열 |

### **Native\_response\_asset: Link**

> bid / adm / native\_response / native\_response\_asset

| 필드  | 유형     | 필수 | 설명            |
| --- | ------ | -- | ------------- |
| url | string | Y  | 클릭 가능한 랜딩 URL |

### **Native\_response\_eventtracker**

> bid / adm / native\_response /

| 필드      | 유형      | 필수 | 설명          |
| ------- | ------- | -- | ----------- |
| event   | integer | Y  | 트래킹할 이벤트 유형 |
| methods | integer | Y  | 요청된 트래킹 유형  |

### 예제

{% tabs %}
{% tab title="success" %}
{% code lineNumbers="true" %}

```json
{
  "id": "ece5c105-dd24-468f-8392-d624b8d49953",
  "seatbid": [
    {
      "bid": [
            {
               "id":"5d7801c2be564c8100f00011-1062015",
               "price":2.0,
               "impid":"1",
               "nurl":"http://node-p2e-gie4ah.sitescout.com/smaato/win/aid:5d7801c2be564c8100f00011;c:${AUCTION_PRICE};s:;cid:1062015;ts:1568145858061;d:MzMzMTUwMi1uYXRpdmU",
               "adm":"{\"native\":{\"link\":{\"url\":\"http://clickserv.sitescout.com/clk/8cc00d7733a331ba/88e42568017fb609/0-0/0///~_aid_~5d7801c2be564c8100f00011//cidentLy8vLy8\",\"clicktrackers\":[\"https://adrta.com/c?clid=ss&paid=ss&cb=1568145858061&avid=112053&caid=1062015&publisherId=1100043642&kv5=&plid=3331502&segment=&kv4=100.10.38.5&kv14=&kv1=native&siteId=120207704&kv7=17&kv15=UNKNOWN&kv16=&kv17=&kv18=com.particlenews.newsbreak&kv24=MOBILE_APP&kv20=&kv21=eb6fe99843ff5310bd0cd40d267826fff05d8aa3&kv22=9863a35c-c598-4c80-b091-d7adf379bb26&kv11=5d7801c2be564c8100f00011&kv3=&kv2=\"]},\"ver\":\"1.2\",\"assets\":[{\"id\":5,\"required\":1,\"data\":{\"type\":2,\"value\":\"Lose 3 to 5 pounds per week. Keep it off with free support for life!\"}},{\"id\":2,\"required\":1,\"img\":{\"type\":3,\"url\":\"http://cdn01.basis.net/112100/112053/uhSvl5gEElOXwX0T.jpg\",\"w\":1200,\"h\":627}},{\"id\":1,\"required\":1,\"title\":{\"text\":\"Lose Weight For Life!\"}},{\"id\":6,\"required\":1,\"data\":{\"type\":12,\"value\":\"Learn more\"}},{\"id\":3,\"required\":1,\"img\":{\"type\":1,\"url\":\"http://cdn01.basis.net/112100/112053/5MkC88n4Mc8MdPa4.jpg\",\"w\":240,\"h\":240}}],\"imptrackers\":[\"https://node-p2e-gie4ah.sitescout.com/smaato/px/aid:5d7801c2be564c8100f00011;c:${AUCTION_PRICE};s:;cid:1062015;ts:1568145858061\",\"https://pixel-sync.sitescout.com/dmp/pixelSync?nid=17&wb=1&hdid=0&id=9863a35c-c598-4c80-b091-d7adf379bb26&idType=4\",\"https://ad.doubleclick.net/ddm/trackimp/N428001.3027484BASISDSP/B22322261.248240382;dc_trk_aid=447774364;dc_trk_cid=119057854;u=210363%7C5d7801c2be564c8100f00011%7C%7Ccom.particlenews.newsbreak%7CAWAKEN002CP+%5BCPA%5D+GT+%28Zips%2B15+mi%29_Display%7CMOBILE_APP%7C1062015;ord=[timestamp];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=?\"],\"jstracker\":\"\"}}",
               "adomain":[
                  "awaken180weightloss.com"
               ],
               "iurl":"http://preview.sitescout.ad/preview?adOnly=1&amp;ad=8cc00d7733a331ba",
               "crid":"3331502",
               "cid":"1062015",
               "attr":[
 
               ],
               "cat":[
                  "IAB7-44",
                  "IAB7"
               ]
            }
         ],
         "seat":"18878"
      }
   ],
  "bidid": "dsp",
  "cur": "KRW"
}

```

{% endcode %}
{% endtab %}

{% tab title="noad" %}
{% code lineNumbers="true" %}

```json
{
  "id": "",
  "seatbid": [],
  "bidid": "mezzo",
  "cur": "KRW"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

##

## **3. SKAdNetwork 지원(iOS14 이상)**

{% hint style="info" %}
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
{% endhint %}

<table data-header-hidden><thead><tr><th width="85"></th><th></th></tr></thead><tbody><tr><td>1</td><td>DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다.</td></tr><tr><td>3</td><td>Apple로부터 발급받은 SKAdNetwork ID를 CJ MezzoMedia 담당자에게 전달하고<br>CJ MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다.</td></tr><tr><td>4</td><td>DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다.</td></tr><tr><td>5</td><td>광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다.</td></tr><tr><td>6</td><td>DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다.</td></tr></tbody></table>

### **광고요청 추가내용 (SKAdNetwork)**

> BidRequest / imp / banner / ext / skadn

해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 합니다.

<table data-header-hidden><thead><tr><th width="85">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</td></tr><tr><td>2</td><td>사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다.</td></tr><tr><td>3</td><td>SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다.</td></tr><tr><td>4</td><td>DSP는 CJ 메조미디어의 Bid Request 규약을 준수해야한다.</td></tr></tbody></table>

| 필드         | 유형     | 필수 | 설명                                                                     | 예                                        |
| ---------- | ------ | -- | ---------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                    | “version”:”2.0”                          |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.app.bundle’ 과 매칭</p> | “sourceapp”:”000000000”                  |
| skadnetids | string | Y  | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs                             | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### **광고응답 추가내용 (SKAdNetwork)**

> BidResponse / imp / banner / ext / skadn

| 필드         | 유형     | 필수 | 설명                                                                                 | 예                                               |
| ---------- | ------ | -- | ---------------------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y  | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상.                                                | “version”:”2.0”                                 |
| network    | string | Y  | <p>광고 네트워크 식별자.<br>Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함</p>                    | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y  | <p>Apple의 규격에 맞는 캠페인 ID.<br>1과 100 사이의 정수를 이용해서 표현해야함</p>                          | “campaign”:”45”                                 |
| itunesitem | string | Y  | Apple App 스토어에 등록된 광고주 App ID. ‘Bidresponse.bid.bundle’과 매칭                        | “itunesitem”:”123456789”                        |
| nonce      | string | Y  | 개별 광고 response의 유니크 ID                                                             | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y  | <p>Apple App 스토어에 등록된 퍼블리셔 App ID.<br>‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭</p> | “sourceapp”:”000000000”                         |
| timestamp  | string | Y  | Unix time을 string 값으로 전달                                                           | “timestamp”:”1234567890”                        |
| signature  | string | Y  | Apple에서 제공하는 SKAdNetwork sigature 값                                                | “signature”:”ABCDEFGHijkl-lmb…”                 |

### 예제

{% tabs %}
{% tab title="Request" %}
{% code lineNumbers="true" %}

```json
{
	"imp":[{
        "ext": {
          "skadn": {
            "version": "2.0",
			"sourceapp": "000000000",
			"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
			}
			}
		}]
}
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code lineNumbers="true" %}

```json
{
	"seatbid": [{
		"bid": [{
			"ext": {
				"skadn": {
					"version": "2.0",
					"network": "feyaarzu9v.skadnetwork ",
					"campaign": "45",
					"itunesitem": "123456789",
					"nonce": "123b1a78-b5ef-98ad-1234-ab-c4effa00b8",
					"sourceapp": "000000000",
					"timestamp": "1234567890",
					"signature": "ABCDEFGHijkl-lmbKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg"
				}
			}
		}]
	}]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Report API


# 배너 광고 리포트

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

본 문서는 TARGETPICK DSP(Demand Side Platform)와 연동한 SSP(Supply Side Platform) 파트너에게 리포트를 제공하기 위한 API 가이드 입니다. \
TARGETPICK 으로 DSP 리포트를 제공받기 위해서는 CJ 메조미디어 담당자에게 Token을 발급 받아야 사용이 가능합니다. API 사용을 위한 Token 발행은 지정 담당자에게 문의해주시기 바랍니다.

## **1. 리포트 데이터 요청**

| 기본 정보        | 설명                          |
| ------------ | --------------------------- |
| 서비스 API명     | SSP 제공 리포트 데이터              |
| API 호출 결과 타입 | XML or JSON                 |
| 인증 방법        | Token                       |
| 호출 방법        | HTTPS                       |
| API 설명       | SSP에 광고를 집행한 결과 리포트를 전달합니다. |

### **URL**

<table><thead><tr><th width="114">구분</th><th width="531">URL</th><th>Method</th></tr></thead><tbody><tr><td>테스트</td><td>http://211.62.152.212:9000/api/report</td><td>Get</td></tr><tr><td>상용</td><td>https://dsp-report.meba.kr:9000/api/report</td><td>Get</td></tr></tbody></table>

### **Parameters**

| Field      | 타입      | 필수 | 코드 예시         | 설명                                                                            |
| ---------- | ------- | -- | ------------- | ----------------------------------------------------------------------------- |
| sDate      | String  | Y  | 20160101      | 리포트 조회 시작일                                                                    |
| eDate      | String  | Y  | 20160131      | 리포트 조회 종료일                                                                    |
| PartnerID  | String  | Y  | userpartnerid | 메조미디어에서 발급한 파트너 고유 ID                                                         |
| Token      | String  | Y  | F379C8K9P0    | API 사용을 위한 파트너 고유 Token 값                                                     |
| ADType     | Integer | Y  | 1             | <ul><li>0: 전체</li><li>1: 배너</li></ul>                                         |
| ReportType | Integer | Y  | 1             | <ul><li>1: 일자별 리포트</li><li>2: 미디어별(PubID) 리포트</li><li>3: 광고 타입별 리포트</li></ul> |
| format     | String  | Y  | json          | json , xml                                                                    |

### **Sample**

| Sample URL                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <http://211.62.152.212:9000/api/report?PartnerID=abcde12345\\&token=C150KPTR39F0277A743B6\\&format=xml\\&ReportType=1\\&ADType=0\\&sDate=20190101\\&eDate=20190131> |

## **2. 리포트 데이터 응답**

기본 정보 - 리포트 API로 Request 시 아래의 양식으로 리포트 데이터가 반환됩니다.

| 이름             | 타입      | 전달 값 예시      | 설명                                                                                   |
| -------------- | ------- | ------------ | ------------------------------------------------------------------------------------ |
| ListCount      | Integer | 100          | 반환되는 리스트 행 수                                                                         |
| ReportType     | Integer | 1            | <p></p><ul><li>1: 일자별 리포트</li><li>2: 미디어별(PubID) 리포트</li><li>3: 광고 타입별 리포트</li></ul> |
| ADType         | Integer | banner       | banner: 배너                                                                           |
| Reports.Report | Array   |              |                                                                                      |
| Date           | String  | 20160101     | 리포팅 일자                                                                               |
| Imp            | Integer | 1000         | 노출 횟수                                                                                |
| Click          | Integer | 100          | 클릭 횟수                                                                                |
| CTR            | Double  | 10.00        | 노출 대비 클릭율                                                                            |
| PubID          | String  | publisher123 | <p>미디어를 식별할 수 있는 ID로 AppID 또는 SiteID<br>(난수 또는 암호화된 ID 가능)</p>                       |
| Revenue        | Double  | 100000       | 메조미디어에서 지급해야 할 인벤토리 구매 비용                                                            |

### 예제

{% tabs %}
{% tab title="일자별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>1</ReportType> 
		<sDate>20190101</sDate> 
		<eDate>20190131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20190101</Date>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}

{% tab title="미디어별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>2</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>banner</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<PubID>publisher123</PubID>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				<Date>20160101</Date>
				<PubID>publisher456</PubID>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>3000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data> xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>1</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}

{% tab title="광고 타입별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>3</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<ADType>banner</ADType>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR> 10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				<Date>20160101</Date>
				<ADType>interstitial</ADType> 
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR> 10.00</CTR>
				<Revenue>3000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}
{% endtabs %}

## **3. Error Code**

<table><thead><tr><th width="155">Code</th><th>Descirption</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

### 예제

{% tabs %}
{% tab title="에러 응답" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</code> 
		<message>SUCCESS</message> 
	</error>
</data>
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 비디오 광고 리포트

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

본 문서는 TARGETPICK DSP(Demand Side Platform)와 연동한 SSP(Supply Side Platform) 파트너에게 리포트를 제공하기 위한 API 가이드 입니다. \
TARGETPICK 으로 DSP 리포트를 제공받기 위해서는 CJ 메조미디어 담당자에게 Token을 발급 받아야 사용이 가능합니다. API 사용을 위한 Token 발행은 지정 담당자에게 문의해주시기 바랍니다.

## **1. 리포트 데이터 요청**

<table><thead><tr><th width="238">기본 정보</th><th>설명</th></tr></thead><tbody><tr><td>서비스 API명</td><td>SSP 제공 리포트 데이터</td></tr><tr><td>API 호출 결과 타입</td><td>XML or JSON</td></tr><tr><td>인증 방법</td><td>Token</td></tr><tr><td>호출 방법</td><td>HTTPS</td></tr><tr><td>API 설명</td><td>SSP에 광고를 집행한 결과 리포트를 전달합니다.</td></tr></tbody></table>

### **URL**

<table><thead><tr><th width="110">구분</th><th width="486">URL</th><th>Method</th></tr></thead><tbody><tr><td>테스트</td><td>http://211.62.152.212:9000/api/report</td><td>Get</td></tr><tr><td>상용</td><td>https://dsp-report.meba.kr:9000/api/report</td><td>Get</td></tr></tbody></table>

### **Parameters**

<table><thead><tr><th width="144">Field</th><th width="98">타입</th><th width="81">필수</th><th width="145">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>sDate</td><td>String</td><td>Y</td><td>20160101</td><td>리포트 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160131</td><td>리포트 조회 종료일</td></tr><tr><td>PartnerID</td><td>String</td><td>Y</td><td>userpartnerid</td><td>메조미디어에서 발급한 파트너 고유 ID</td></tr><tr><td>Token</td><td>String</td><td>Y</td><td>F379C8K9P0</td><td>API 사용을 위한 파트너 고유 Token 값</td></tr><tr><td>ADType</td><td>Integer</td><td>Y</td><td>4</td><td><ul><li>0: 전체</li><li>4: 동영상</li></ul></td></tr><tr><td>ReportType</td><td>Integer</td><td>Y</td><td>1</td><td><ul><li>1: 일자별 리포트</li><li>2: 미디어별(PubID) 리포트</li><li>3: 광고 타입별 리포트</li></ul></td></tr><tr><td>format</td><td>String</td><td>Y</td><td>json</td><td>json , xml</td></tr></tbody></table>

### **Sample**

| Sample URL                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <http://211.62.152.212:9000/api/report?PartnerID=abcde12345\\&token=C150KPTR39F0277A743B6\\&format=xml\\&ReportType=1\\&ADType=0\\&sDate=20190101\\&eDate=20190131> |

## **2. 리포트 데이터 응답**

기본 정보 - 리포트 API로 Request 시 아래의 양식으로 리포트 데이터가 반환됩니다.

<table><thead><tr><th width="141">이름</th><th width="115">타입</th><th width="135">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>ListCount</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ReportType</td><td>Integer</td><td>1</td><td><ul><li>1: 일자별 리포트</li><li>2: 미디어별(PubID) 리포트</li><li>3: 광고 타입별 리포트</li></ul></td></tr><tr><td>Date</td><td>String</td><td>20160101</td><td>리포팅 일자</td></tr><tr><td>Imp</td><td>Integer</td><td>1000</td><td>노출 횟수</td></tr><tr><td>Click</td><td>Integer</td><td>100</td><td>클릭 횟수</td></tr><tr><td>CTR</td><td>Double</td><td>10.00</td><td>노출 대비 클릭율</td></tr><tr><td>PubID</td><td>String</td><td>publisher123</td><td>미디어를 식별할 수 있는 ID로 AppID 또는 SiteID<br>(난수 또는 암호화된 ID 가능)</td></tr><tr><td>Revenue</td><td>Double</td><td>100000</td><td>메조미디어에서 지급해야 할 인벤토리 구매 비용</td></tr></tbody></table>

### 예제

{% tabs %}
{% tab title="일자별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>1</ReportType> 
		<sDate>20190101</sDate> 
		<eDate>20190131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20190101</Date>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}

{% tab title="미디어별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>2</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>banner</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<PubID>publisher123</PubID>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				<Date>20160101</Date>
				<PubID>publisher456</PubID>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>3000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data> xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>1</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}

{% tab title="광고 타입별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>3</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<ADType>banner</ADType>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR> 10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				<Date>20160101</Date>
				<ADType>interstitial</ADType> 
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR> 10.00</CTR>
				<Revenue>3000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}
{% endtabs %}

## **Error Code**

<table><thead><tr><th width="102">Code</th><th>Descirption</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

### 예제

{% tabs %}
{% tab title="에러 응답" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</code> 
		<message>SUCCESS</message> 
	</error>
</data>
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 네이티브 광고 리포트

{% hint style="info" %}
SSP :arrow\_right: DSP
{% endhint %}

본 문서는 TARGETPICK DSP(Demand Side Platform)와 연동한 SSP(Supply Side Platform) 파트너에게 리포트를 제공하기 위한 API 가이드 입니다. \
TARGETPICK 으로 DSP 리포트를 제공받기 위해서는 CJ 메조미디어 담당자에게 Token을 발급 받아야 사용이 가능합니다. API 사용을 위한 Token 발행은 지정 담당자에게 문의해주시기 바랍니다.

## **1. 리포트 데이터 요청**

<table><thead><tr><th width="217">기본 정보</th><th>설명</th></tr></thead><tbody><tr><td>서비스 API명</td><td>SSP 제공 리포트 데이터</td></tr><tr><td>API 호출 결과 타입</td><td>XML or JSON</td></tr><tr><td>인증 방법</td><td>Token</td></tr><tr><td>호출 방법</td><td>HTTPS</td></tr><tr><td>API 설명</td><td>SSP에 광고를 집행한 결과 리포트를 전달합니다.</td></tr></tbody></table>

### **URL**

<table><thead><tr><th width="129">구분</th><th width="487">URL</th><th>Method</th></tr></thead><tbody><tr><td>테스트</td><td>http://211.62.152.212:9000/api/report</td><td>Get</td></tr><tr><td>상용</td><td>https://dsp-report.meba.kr:9000/api/report</td><td>Get</td></tr></tbody></table>

### **Parameters**

<table><thead><tr><th width="137">Field</th><th width="101">타입</th><th width="77">필수</th><th width="136">코드 예시</th><th>설명</th></tr></thead><tbody><tr><td>sDate</td><td>String</td><td>Y</td><td>20160101</td><td>리포트 조회 시작일</td></tr><tr><td>eDate</td><td>String</td><td>Y</td><td>20160131</td><td>리포트 조회 종료일</td></tr><tr><td>PartnerID</td><td>String</td><td>Y</td><td>userpartnerid</td><td>메조미디어에서 발급한 파트너 고유 ID</td></tr><tr><td>Token</td><td>String</td><td>Y</td><td>F379C8K9P0</td><td>API 사용을 위한 파트너 고유 Token 값</td></tr><tr><td>ADType</td><td>Integer</td><td>Y</td><td>10</td><td><ul><li>0: 전체</li><li>10: 네이티브</li></ul></td></tr><tr><td>ReportType</td><td>Integer</td><td>Y</td><td>1</td><td><ul><li>1: 일자별 리포트</li><li>2: 미디어별(PubID) 리포트</li><li>3: 광고 타입별 리포트</li></ul></td></tr><tr><td>format</td><td>String</td><td>Y</td><td>json</td><td>json , xml</td></tr></tbody></table>

### **Sample**

| Sample URL                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <http://211.62.152.212:9000/api/report?PartnerID=abcde12345\\&token=C150KPTR39F0277A743B6\\&format=xml\\&ReportType=1\\&ADType=0\\&sDate=20190101\\&eDate=20190131> |

## **2. 리포트 데이터 응답**

기본 정보 - 리포트 API로 Request 시 아래의 양식으로 리포트 데이터가 반환됩니다.

<table><thead><tr><th width="133">이름</th><th width="92">타입</th><th width="126">전달 값 예시</th><th>설명</th></tr></thead><tbody><tr><td>ListCount</td><td>Integer</td><td>100</td><td>반환되는 리스트 행 수</td></tr><tr><td>ReportType</td><td>Integer</td><td>1</td><td><ul><li>1: 일자별 리포트</li><li>2: 미디어별(PubID) 리포트</li><li>3: 광고 타입별 리포트</li></ul></td></tr><tr><td>Date</td><td>String</td><td>20160101</td><td>리포팅 일자</td></tr><tr><td>Imp</td><td>Integer</td><td>1000</td><td>노출 횟수</td></tr><tr><td>Click</td><td>Integer</td><td>100</td><td>클릭 횟수</td></tr><tr><td>CTR</td><td>Double</td><td>10.00</td><td>노출 대비 클릭율</td></tr><tr><td>PubID</td><td>String</td><td>publisher123</td><td>미디어를 식별할 수 있는 ID로 AppID 또는 SiteID<br>(난수 또는 암호화된 ID 가능)</td></tr><tr><td>Revenue</td><td>Double</td><td>100000</td><td>메조미디어에서 지급해야 할 인벤토리 구매 비용</td></tr></tbody></table>

### 예제

{% tabs %}
{% tab title="일자별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>1</ReportType> 
		<sDate>20190101</sDate> 
		<eDate>20190131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20190101</Date>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}

{% tab title="미디어별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>2</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>banner</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<PubID>publisher123</PubID>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				<Date>20160101</Date>
				<PubID>publisher456</PubID>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>3000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data> xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>1</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR>10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}

{% tab title="광고 타입별 리포트" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</error>
		<message>SUCCESS</message>
	</error>
	<result>
		<ListCount>10</ListCount> 
		<ReportType>3</ReportType> 
		<sDate>20160101</sDate> 
		<eDate>20160131</eDate> 
		<ADType>ALL</ADType> 
		<Reports>
			<Report>
				<Date>20160101</Date>
				<ADType>banner</ADType>
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR> 10.00</CTR>
				<Revenue>5000</Revenue>
			</Report>
			<Report>
				<Date>20160101</Date>
				<ADType>interstitial</ADType> 
				<Imp>1000</Imp>
				<Click>100</Click>
				<CTR> 10.00</CTR>
				<Revenue>3000</Revenue>
			</Report>
			<Report>
				……
			</Report>
		</Reports>
	</result>
</data>
```

{% endcode %}
{% endtab %}
{% endtabs %}

## **3. Error Code**

<table><thead><tr><th width="180">Code</th><th>Descirption</th></tr></thead><tbody><tr><td>000</td><td>성공</td></tr><tr><td>001</td><td>시스템에 에러가 발생했습니다.</td></tr><tr><td>002</td><td>알 수 없는 오류가 발생했습니다.</td></tr><tr><td>003</td><td>조회 권한이 없습니다.</td></tr><tr><td>004</td><td>존재하지 않는 API 입니다.</td></tr><tr><td>005</td><td>Parameter 정보가 잘못되었습니다.</td></tr><tr><td>006</td><td>날짜는 반드시 입력해야 하며, 세 달을 초과 할 수 없습니다.</td></tr></tbody></table>

### 예제

{% tabs %}
{% tab title="에러 응답" %}
{% code lineNumbers="true" %}

```xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<error>
		<code>000</code> 
		<message>SUCCESS</message> 
	</error>
</data>
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 리워드 플랫폼 연동


# 미션 조회

미션 조회에 필요한 API 입니다.

## 1. REQUEST

{% hint style="info" %}
Reward Platform :arrow\_right: CJ MEZZOMEDIA
{% endhint %}

> CJ MEZZOMEDIA 로부터 미션 정보를 조회하는 API 입니다.

HTTP GET 방식으로 아래 정의된 객체를 작성해 인터페이스를 호출합니다.

#### **도메인 정보**

| 구분  | URL   |
| --- | ----- |
| 테스트 | 별도 전달 |
| 상용  | 별도 전달 |

#### **기본 객체**

| 필드            | 유형     | 필수 | 설명  |
| ------------- | ------ | -- | --- |
| Authorization | string | Y  | 토큰값 |

## 2. RESPONSE

{% hint style="info" %}
CJ MEZZOMEDIA :arrow\_right: Reward Platform
{% endhint %}

CJ MEZZOMEDIA 는 아래 정의된 객체를 json 타입으로 응답합니다.

| 필드            | 유형     | 필수 | 설명                    |
| ------------- | ------ | -- | --------------------- |
| code          | string | Y  | response 코드           |
| message       | string | Y  | response 메세지          |
| response      | object | Y  | response 객체           |
| response.data | array  | Y  | 미션 정보 [`data`](#data) |

#### **data**

<table><thead><tr><th width="213">필드</th><th width="118">유형</th><th width="76">필수</th><th>설명</th></tr></thead><tbody><tr><td>mission_no</td><td>number</td><td>Y</td><td>미션 번호 ( 광고 고유 번호 )</td></tr><tr><td>mission_type</td><td>number</td><td>Y</td><td>미션 유형 ( 광고유형 코드 : 100, 101…) <a href="#undefined-2"><code>code</code></a></td></tr><tr><td>mission_id</td><td>string</td><td>Y</td><td>미션명</td></tr><tr><td>package_name</td><td>string</td><td>Y</td><td>앱패키지 명</td></tr><tr><td>age_restriction</td><td>number</td><td>Y</td><td>광고 앱 나이 제한 <a href="#undefined-3"><code>code</code></a></td></tr><tr><td>budget</td><td>number</td><td>Y</td><td>광고 예산</td></tr><tr><td>price</td><td>number</td><td>Y</td><td>광고 단가</td></tr><tr><td>free_yn</td><td>string</td><td>Y</td><td>광고 앱 무료여부 (Y: 무료, N: 유료)</td></tr><tr><td>mission_description</td><td>string</td><td>Y</td><td>미션 요약 설명</td></tr><tr><td>action_description</td><td>string</td><td>Y</td><td>액션 설명</td></tr><tr><td>os_type</td><td>number</td><td>Y</td><td>광고 앱 OS <a href="#os"><code>code</code></a></td></tr><tr><td>pf_gubun</td><td>number</td><td>Y</td><td>실적 체크 구분 (0:MEZZOMEDIA, 1:리워드 플랫폼)</td></tr><tr><td>landing_url</td><td>string</td><td>Y</td><td>랜딩 URL (pf_gubun이 0 일경우 null)</td></tr><tr><td>start_date</td><td>string</td><td>Y</td><td>미션 시작일자</td></tr><tr><td>end_date</td><td>string</td><td>Y</td><td>미션 종료일자</td></tr><tr><td>total_count</td><td>number</td><td>Y</td><td>미션 총 전환 건수</td></tr><tr><td>daily_count</td><td>number</td><td>Y</td><td>미션 일별 전환 건수</td></tr><tr><td>ad_img_list</td><td>array</td><td>Y</td><td>소재 정보 [Array]</td></tr><tr><td>ad_img_list.ad_pd_no</td><td>number</td><td>Y</td><td>광고소재 번호 <a href="#undefined-4"><code>code</code></a></td></tr><tr><td>ad_img_list.img_url</td><td>string</td><td>Y</td><td>광고소재 이미지 URL</td></tr></tbody></table>

#### **response 예제 (JSON)**

{% code lineNumbers="true" %}

```json
{
  "code": "200",
  "message": "SUCCESS",
  "response": {
    "data": [
      {
        "mission_no": 1,
        "mission_type": 100,
        "mission_id": "테스트미션",
        "package_name": "",
        "age_restriction": 0,
        "budget": 10000,
        "price": 10,
        "free_yn": "Y",
        "mission_description": "미션요약",
        "action_description": "액션",
        "os_type": 0,
        "pf_gubun": 1,
        "landing_url": "https://...",
        "start_date": "2024-07-16 10:00:00",
        "end_date": "2024-07-17 14:00:00",
        "total_count": 123456,
        "daily_count": 100,
        "ad_img_list": [
          {
            "ad_pd_no": 1,
            "img_url": "https://..."
          },
          {
            "ad_pd_no": 2,
            "img_url": "https://..."
          },
          {
            "ad_pd_no": 3,
            "img_url": "https://..."
          },
          {
            "ad_pd_no": 4,
            "img_url": "https://..."
          }
        ]
      }
    ]
  }
}
```

{% endcode %}

## 3. 코드 정의

#### **미션 유형**

| 코드   | 설명                    |
| ---- | --------------------- |
| 100  | 설치형                   |
| 101  | 실행형                   |
| 102  | 카톡 로그인                |
| 103  | 로그인(카톡제외)             |
| 104  | 앱 회원가입                |
| 105  | 레벨달성                  |
| 106  | 튜토리얼                  |
| 107  | 카톡게임 사전예약             |
| 108  | 출석형                   |
| 109  | 클릭시                   |
| 110  | 캐릭터생성                 |
| 198  | 미션달성(게임)              |
| 199  | 서비스이용                 |
| 200  | 페북 좋아요                |
| 201  | 트위터 팔로우               |
| 202  | 인스타 팔로우               |
| 203  | 카스 소식받기               |
| 204  | 사이트 회원가입              |
| 205  | DB 수집(상담신청)           |
| 206  | 유튜브 구독하기              |
| 207  | 네이버 카페가입              |
| 208  | 네이버 뉴스구독              |
| 209  | 카카오 채널추가              |
| 210  | 네이버 TV 구독             |
| 211  | 네이버 블로그 이웃 추가         |
| 212  | 링크드인 팔로우              |
| 213  | 틱톡 팔로우                |
| 220  | 페이스북 좋아요 유지           |
| 221  | 트위터 팔로우 유지            |
| 222  | 인스타그램 팔로우 유지          |
| 223  | 카스 소식받기 유지            |
| 226  | 유튜브 구독 유지             |
| 228  | 네이버 뉴스 구독 유지          |
| 229  | 카카오 채널 추가 유지          |
| 230  | 네이버 TV 구독 유지          |
| 231  | 네이버 블로그 이웃 추가 유지      |
| 232  | 링크드인 팔로우 유지           |
| 233  | 틱톡 팔로우 유지             |
| 251  | 카드신청                  |
| 252  | 계좌개설                  |
| 253  | 보험가입                  |
| 254  | 보험조회                  |
| 255  | 이벤트 참여                |
| 256  | 포인트/쿠폰교환              |
| 257  | 설문조사                  |
| 259  | 장바구니                  |
| 260  | 신청                    |
| 298  | 미션달성(금융)              |
| 299  | 미션달성(SNS)             |
| 301  | 유튜브 동영상               |
| 302  | 네이버 동영상               |
| 303  | 유튜브 시청                |
| 399  | 동영상(기타)               |
| 401  | 예매형                   |
| 402  | 유료결제                  |
| 403  | 재화, 아이템               |
| 1000 | 사전예약형                 |
| 1001 | 구매형                   |
| 1002 | 네이버 스토어 구독형           |
| 1003 | 네이버 쇼핑 라이브 알림받기       |
| 1004 | 네이버 포스트 팔로우           |
| 1005 | 다음 뉴스 구독형             |
| 1006 | 네이버 플레이스              |
| 1008 | 멀티리워드 SNS(다음 뉴스 구독하기) |
| 2000 | 노출시                   |
| 4001 | 사전예약                  |
| 4002 | 회원가입(인증O)             |
| 4003 | 회원가입(인증X)             |

#### **연령대**

| 코드 | 설명     |
| -- | ------ |
| 0  | 전체 연령가 |
| 12 | 12세 이상 |
| 19 | 19세 이상 |

#### **OS**

| 코드 | 설명      |
| -- | ------- |
| 0  | Web     |
| 1  | Android |
| 2  | iOS     |

#### **소재 번호**

| 코드 | 설명                  |
| -- | ------------------- |
| 1  | 광고 아이콘 ( 300x300 )  |
| 2  | 가로형 ( 1200x627 )    |
| 3  | 정사각형 ( 627x627 )    |
| 5  | 광고 아이콘 ( 196x196 )  |
| 6  | 세로형 ( 720x780 )     |
| 7  | Native ( 1200x600 ) |


# 미션 참여

미션 참여를 위한 API 입니다.

## 1. REQUEST

{% hint style="info" %}
Reward Platform :arrow\_right: CJ MEZZOMEDIA
{% endhint %}

> CJ MEZZOMEDIA 로 미션 참여를 요청하는 API 입니다.

HTTP GET 방식으로 아래 정의된 객체를 작성해 인터페이스를 호출합니다.

#### **도메인 정보**

| 구분  | URL   |
| --- | ----- |
| 테스트 | 별도 전달 |
| 상용  | 별도 전달 |

#### **기본 객체**

<table><thead><tr><th width="154">필드</th><th width="116">유형</th><th width="86">필수</th><th>설명</th></tr></thead><tbody><tr><td>adid</td><td>string</td><td>Y</td><td>ADID</td></tr><tr><td>mission_no</td><td>number</td><td>Y</td><td>미션번호</td></tr><tr><td>cuid</td><td>string</td><td>Y</td><td>리워드 플랫폼에서 정의하여 전달하는 식별자 값<br>(callback 시 원본 값 그대로 전달)</td></tr><tr><td>cpi_no</td><td>number</td><td>Y</td><td>MEZZOMEDIA에서 발급한 리워드 플랫폼 번호</td></tr></tbody></table>

## 2. RESPONSE

{% hint style="info" %}
CJ MEZZOMEDIA :arrow\_right: Reward Platform
{% endhint %}

CJ MEZZOMEDIA 는 아래 정의된 객체를 json 타입으로 응답합니다.

<table><thead><tr><th width="209">필드</th><th width="128">유형</th><th width="81">필수</th><th>설명</th></tr></thead><tbody><tr><td>code</td><td>string</td><td>Y</td><td>코드</td></tr><tr><td>message</td><td>object</td><td>Y</td><td>메세지</td></tr><tr><td>landing_url</td><td>string</td><td>N</td><td>참여 랜딩 URL<br>(code : 200 / 참여가 가능할 경우에만 리턴 )</td></tr></tbody></table>

#### **response 예제 (참여 가능시)**

{% code lineNumbers="true" %}

```json
{
  "code": 200,
  "message": "SUCCESS",
  "landing_url": "http://..."
}
```

{% endcode %}

#### **response 예제 (참여 불가시)**

{% code lineNumbers="true" %}

```json
{
  "code": 505,
  "message": "ERROR_ALREADY_JOIN"
}
```

{% endcode %}

## 3. 코드 정의

#### **코드**

| 코드  | 설명                           |
| --- | ---------------------------- |
| 200 | SUCCESS ( landing\_url 리턴 )  |
| 408 | ERROR\_TIMEOUT               |
| 501 | ERROR\_INVALID\_TOKEN        |
| 502 | ERROR\_INVALID\_PARAMETER    |
| 503 | ERROR\_INVALID\_ADID         |
| 504 | ERROR\_NO\_CAMPAIGN          |
| 505 | ERROR\_ALREADY\_JOIN         |
| 506 | ERROR\_EMPTY\_LANDING\_URL   |
| 507 | ERROR\_CANNOT\_JOIN\_MISSION |
| 998 | ERROR\_SYSTEM                |
| 999 | ERROR\_SYSTEM                |


# Cookie Sync

플랫폼간 쿠키 싱크를 위한 가이드 입니다.

## 오디언스 식별자 정보 공유를 위한 Cookie 정보 매칭(Cookie sync, Cookie matching, ID Pairing) <a href="#cookie-cookie-sync-cookie-matching-id-pairing" id="cookie-cookie-sync-cookie-matching-id-pairing"></a>

{% hint style="info" %}
본 가이드는 CJ MezzoMedia DSP와 SSP간 오디언스 식별을 위해 Cookie 기반의 ID 매칭을 위해 작성되었습니다.&#x20;
{% endhint %}

OS 기반의 광고 식별자인 ADID, IDFA를 사용하는 Native App 기반의 SDK 연동 매체의 경우에는 본 가이드를 적용 할 필요가 없으며, Web 기반 매체를 기준으로 적용합니다. Cookie 정보 매칭의 궁극적인 목적은, 일원화 되지 않은 웹 기반의 오디언스를 Cookie를 매개체로 하여 식별하고, 이를 통해 광고 효율을 높이는데 있습니다.

### 쿠키 정보 매칭 개요

<figure><img src="/files/Gy4UkFUkkfTxSQxRIZSM" alt=""><figcaption></figcaption></figure>

1. 사용자가 웹 브라우저를 통해 광고 지면에 접속하게 되면, DSP의 쿠키 생성 Tag를 호출하게 됩니다. \
   이 과정은, 사용자가 이전에 다른 제휴 매체를 방문했거나 CJ MezzoMedia DSP 광고물이 노출 되는 경우에 발생합니다.<br>
2. DSP는 SSP/ADX/AD Network와 쿠키 매칭 여부를 확인하고, 만약 쿠키 정보가 매칭되지 않았을 경우 SSP/ADX/AD Network의 쿠키 생성 도메인을 호출하여 SID를 전달합니다. \
   \
   이때, 지정된 Parameter를 통해 SID를 전달하게 되며, SID를 전달 받은 SSP/ADX/AD Network에서는 사용자의 브라우저에 SID를 포함한 쿠키를 저장합니다. \
   (SID는 CJ MezzoMedia DSP에서 발급하는 식별 정보입니다.)\
   \
   URL의 구조는 아래와 같습니다(SID는 CJ MezzoMedia에서 발급한 예시입니다.)\
   ![](/files/DYFKCEY8rOZv1RXqkZpf)\
   \
   SID는 32개의 십육진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분합니다.\
   (ADID/IDFA와 동일한 구조입니다.)<br>
3. 동일한 사용자가 동일한 브라우저를 통해 제휴 매체 지면에 접속하게 되면, SSP/ADX/AD Network에서는 기 발급된 SID를 읽어 들입니다.<br>
4. 광고 요청 시, user.buyeruid 객체에 SID를 삽입하여 광고를 요청 주시면, 전달 받은 SID를 통해 DSP에서는 해당 오디언스를 확인하고 적절한 광고를 선정하여 전달하게 됩니다.<br>

쿠키 매칭을 위해서는 SSP/ADX/AD Network의 쿠키 생성 URL이 필수로 요구됩니다.&#x20;

SSP/ADX/AD Network 도메인으로 생성된 쿠키에 CJ MezzoMedia DSP에서 전달한 SID를 저장해주시고, DSP에 광고 요청 시 쿠키에 저장된 SID를 읽어들여(getCookie) 전달하게 됨으로써 매칭이 이루어집니다.

{% hint style="info" %} <mark style="color:red;">\[참고]</mark> 브라우저별로 생성되는 Cookie는 서로 호환되지 않기 때문에 여러 개의 브라우저를 사용하는 경우 각각 별도로 Cookie ID가 생성됩니다. 하이브리드 앱에 포함되어 있는 Webview에서의 쿠키 매칭은 타 브라우저와 호환되지 않고 해당 앱 내에서만 사용되기 때문에 SDK 사용을 추천 드립니다.
{% endhint %}


# App-Ads.txt / Ads.txt

App-Ads.txt / Ads.txt 적용을 위한 가이드 입니다.

## For publisher & SSP(Supply Side Platform) <a href="#for-publisher--sspsupply-side-platform" id="for-publisher--sspsupply-side-platform"></a>

### ADS.TXT란 <a href="#a-dstxt" id="a-dstxt"></a>

2017 년 Interactive Advertising Bureau (IAB) Tech Lab에서는 승인되지 않은 웹 인벤토리의 판매를 방지하기 위해 ADS.TXT를 도입하기 시작했습니다.

{% hint style="info" %}
참고: <https://iabtechlab.com/ads-txt/>
{% endhint %}

ADS.TXT는 Authorized Digital Sellers의 약자로써, 인벤토리 공급자(퍼블리셔)가 판매 권한을 부여한 사업자를 명시하는데 사용합니다.\
인벤토리 공급자는 ADS.TXT를 사용함으로써 인벤토리 거래의 투명성을 높이고 광고의 악용(Spoofing 등을 이용한 부정 광고 등)을 줄일 수 있습니다.<br>

ADS.TXT는 Roots.txt와 동일한 도메인 영역에 게시되기 때문에 인벤토리 공급자의 유효성 검증이 용이합니다.

CJ MezzoMedia에서는 아래의 유형을 사용하여 ADS.TXT를 정의합니다.\
(IAB에 정의되어 있는 SYNDICATION은 사용하지 않습니다.)

```
DIRECT : 광고 서버(플랫폼)를 통한 직접 거래하는 유형
RESELLER : 애드 네트워크 또는 AD Exchange를 통해 대신 거래하는 유형
```

### ADS.TXT의 적용 방법 <a href="#a-dstxt" id="a-dstxt"></a>

{% hint style="info" %}
ADS.TXT는 인벤토리가 Web으로 구성되어 있을 경우에 사용합니다.
{% endhint %}

CJ MezzoMedia와 제휴된 매체는 개발자센터를 통해 ADS.TXT를 다운로드 받아 도메인에 게시할 수 있습니다.

***

* [ ] 1\. 먼저[ https://targetpick.io](https://targetpick.io/) 에 접속하여 관리자 계정으로 로그인 후 관리 페이지로 이동합니다.
* [ ] 2\. 좌측 개발자 센터 > 미디어 관리 > 미디어 목록으로 이동하여 우측에 조회된 목록에서 미디어를 클릭합니다.\
  (미디어 서비스 타입이 Web으로 되어 있는 경우에 한합니다.)
* [ ] 3\. 미디어 수정 화면에서 등록된 미디어의 정보를 확인할 수 있으며, 등록되어 있는 ADS.TXT를 다운로드 받거나 텍스트를 복사합니다.
* [ ] 4\. 미디어의 등록 URL 도메인 루트에 ADS.TXT가 이미 존재하는 경우 미디어 수정 화면에 게시된 ADS.TXT를 복사하여 추가하시고, ADS.TXT가 없는 경우 다운로드한 ADS.TXT를 게시하면 됩니다.

***

### APP-ADS.TXT의 적용 방법 <a href="#app-a-dstxt" id="app-a-dstxt"></a>

{% hint style="info" %}
APP-ADS.TXT는 인벤토리가 Application(iOS, Android)으로 구성되어 있을 경우에 사용합니다.
{% endhint %}

&#x20;APP-ADS.TXT는 ADS.TXT와 마찬가지로, Web 인벤토리가 아닌 App 인벤토리 공급자(퍼블리셔)가 판매 권한을 부여한 사업자를 명시하는데 사용합니다.

App 인벤토리 판매를 위한 사업자 명시가 Web 인벤토리와 다를 경우, 도메인 루트에 APP-ADS.TXT와 APP-ADS.TXT를 각각 구분하여 게시합니다.

APP-ADS.TXT의 게시 절차는 ADS.TXT와 동일하지만, Appstore URL을 통해 APP-ADS.TXT를 크롤링하기 때문에 다음의 사항에 유의하셔야 합니다.

{% hint style="warning" %}

* 퍼블리셔 계정 앱스토어의 개발사 정보 중, 개발사 웹사이트와 TARGETPICK 관리시스템의 미디어 정보에 기재되어 있는 마켓 URL이 동일해야 합니다.&#x20;
* DSP 크롤러는 앱스토어에 기재되어 있는 개발사 웹사이트 정보를 기준으로 크롤링을 진행하기 때문에 앱스토어 정보에 정확한 개발사 웹사이트가 기재되어 있어야 합니다.&#x20;
* CJ MezzoMedia의 광고 서버는, TARGETPICK 관리시스템의 미디어 정보에 기재되어 있는 마켓 URL을 사용하여 DSP에 전달하는 광고 요청 양식(Bid Packet)을 작성합니다.
* OpenRTB 기준의 광고 요청 양식에 포함되어 있는 storeurl이 DSP에서 크롤링하고자 하는 인벤토리 제공자의 APP-ADS.TXT 확인을 위한 기준이 됩니다.
  {% endhint %}

APP-ADS.TXT 적용 절차는 다음과 같습니다.

***

* [ ] 1\. 먼저 <https://targetpick.io> 에 접속하여 관리자 계정으로 로그인 후 관리 페이지로 이동합니다.
* [ ] 2\. 좌측 개발자 센터 > 미디어 관리 > 미디어 목록으로 이동하여 우측에 조회된 목록에서 미디어를 클릭합니다.\
  (미디어 서비스 타입이 App으로 되어 있는 경우에 한합니다.)
* [ ] 3\. 미디어 수정 화면에서 등록된 미디어의 정보를 확인할 수 있으며, 등록되어 있는 APP-ADS.TXT를 다운로드 받거나 텍스트를 복사합니다.
* [ ] 4\. 미디어의 등록 URL 도메인 루트에 APP-ADS.TXT가 이미 존재하는 경우 미디어 수정 화면에 게시된 APP-ADS.TXT를 복사하여 추가하시고, APP-ADS.TXT가 없는 경우 다운로드한 APP-ADS.TXT를 게시하면 됩니다.

***

### 미디어 서비스타입이 App+Web인 경우 적용 방법 <a href="#appweb" id="appweb"></a>

미디어 서비스 타입이 App+Web인 경우, 개발사의 의도에 따라 적용해주시면 됩니다. 예를 들어, 웹뷰가 제공되는 하이브리드 앱의 경우 ADS.TXT와 APP-ADS.TXT 두 개 중 어떠한 방식을 사용하셔도 무방합니다.\
(TARGETPICK 관리시스템에서도 App+Web으로 지정되어 있는 미디어의 경우, ADS.TXT와 APP-ADS.TXT 두 개 모두 제공하고 있습니다.)


# SKAdNetwork(iOS Only)

## SKAdNetwork란

SKAdNetwork(SKAN)는 Apple에서 제공하는 개인 정보 보호 방식의 어트리뷰션 프레임워크입니다. 이는 사용자의 개인정보를 침해하지 않고도 앱 인스톨(전환), 캠페인의 전환율을 측정할 수 있게합니다. SKAdNetwork와 관련해서 보다 자세한 내용은 Apple의 공식 문서를 참고해주세요.

{% hint style="info" %}
참고 : <https://developer.apple.com/documentation/storekit/skadnetwork>
{% endhint %}

## 퍼블리셔의 SKAdNetwork ID 적용방법 <a href="#skadnetwork-id" id="skadnetwork-id"></a>

{% hint style="info" %}

* 해당 내용은 **iOS에만 적용**됩니다.
* CJ MezzoMedia와 제휴된 매체는 CJ Mezzomedia를 포함, 연동된 Adnetwork 업체의 SKAdNetwork ID를 아래와 같이 Info.plist에 추가해야 합니다.
  {% endhint %}

***

* [ ] 1\. Xcode project에서 Info.plist 파일을 불러옵니다.
* [ ] 2\. Root directory에서 property 키를 선택하고, 오른쪽 +를 클릭하여 새로운 property 키를 만듭니다.
* [ ] 3\. SKAdNetworkItems로 키를 입력합니다.
* [ ] 4\. Array 타입을 선택합니다.
* [ ] 5\. Array에 Dictionary를 추가합니다.
* [ ] 6\. Dictionary에 각 SKAdNetwork 항목을 추가합니다.
* [ ] 7\. 각 항목의 키는 SKAdNetworkIdentifier이며, 값은 개별 광고네트워크의 SKAdNetwork ID입니다.

***

해당 필드에 대한 자세한 항목은 Apple의 공식문서를 참고해주세요.

{% hint style="info" %}
참고 : <https://developer.apple.com/documentation/storekit/skadnetwork/configuring_the_participating_apps>
{% endhint %}

## SKAdNetwork ID 목록 <a href="#skadnetwork-id-20231114" id="skadnetwork-id-20231114"></a>

(마지막 업데이트: 2026/06/29)

{% file src="/files/gHlJiPZWlz8eBB1eRE2d" %}

## 적용 예시(XML)

```xml
<key>SKAdNetworkItems</key>
<array>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>feyaarzu9v.skadnetwork</string>
    </dict>
    ...
</array>
```


# 소재 제작 가이드

Targetpick 소재 제작 가이드 입니다.

## 가이드 제작에 필요한 내용을 반드시 확인해주세요.

{% hint style="warning" %}

* 초상권, 저작권, 상표권 등 타인의 권리를 침해하는 이미지와 선정적 이미지는 사용 불가 합니다.
* 과장, 허위 광고 내용이 포함되었을 경우 집행 도중이라도 게재가 취소될 수 있습니다. 사용자의 가독성을 해치는 어지러운 배경은 사용 불가(과도한 패턴, 그라데이션 사용은 불가)합니다.&#x20;
* 지나친 형광 계열이나 채도가 높은 색상으로 텍스트를 구성할 수 없습니다.&#x20;
* 지나친 신체부위 노출, 특정 부위 강조는 불가 하며 흐림효과, 블러처리, 모자이크처리등의 왜곡 처리 또한 광고 집행이 불가합니다.
* 클릭을 유발하기 위한 허위의 기능을 삽입하는 광고 방식은 (마우스포인트, 사운드/플레이 제어버튼 등) 광고 집행 불가 합니다.
* 캠페인 소재 검수 / 캠페인 셋팅까지 업무 시간 기준 약 24시간 소요 되며, 업무일 기준 16시 이전 전달 부탁 드립니다.
* 네트워크 광고 플랫폼 특성상 소재 검수 사항에 따라 주요 노출 매체에 차이가 있을 수 있습니다.
  {% endhint %}


# TARGETPICK

Targetpick 배너 제작 가이드 입니다.

{% hint style="warning" %}

* 초상권, 저작권, 상표권 등 타인의 권리를 침해하는 이미지와 선정적 이미지는 사용 불가 합니다.
* 과장, 허위 광고 내용이 포함되었을 경우 집행 도중이라도 게재가 취소될 수 있습니다. 사용자의 가독성을 해치는 어지러운 배경은 사용 불가(과도한 패턴, 그라데이션 사용은 불가)합니다.&#x20;
* 지나친 형광 계열이나 채도가 높은 색상으로 텍스트를 구성할 수 없습니다.&#x20;
* 지나친 신체부위 노출, 특정 부위 강조는 불가 하며 흐림효과, 블러처리, 모자이크처리등의 왜곡 처리 또한 광고 집행이 불가합니다.
* 클릭을 유발하기 위한 허위의 기능을 삽입하는 광고 방식은 (마우스포인트, 사운드/플레이 제어버튼 등) 광고 집행 불가 합니다.
* 캠페인 소재 검수 / 캠페인 셋팅까지 업무 시간 기준 약 24시간 소요 되며, 업무일 기준 16시 이전 전달 부탁 드립니다.
* 네트워크 광고 플랫폼 특성상 소재 검수 사항에 따라 주요 노출 매체에 차이가 있을 수 있습니다.
  {% endhint %}


# 띠 배너

띠 배너 제작 가이드 입니다.

## 타입

<div align="left"><figure><img src="/files/VRGn9rB1Wy4KXuhzkFfh" alt=""><figcaption></figcaption></figure></div>

## 소재 사이즈

| 사이즈        | 용량      | 포맷       |
| ---------- | ------- | -------- |
| 640 \* 100 | 20KB 이하 | PNG, JPG |
| 640 \* 200 | 20KB 이하 | PNG, JPG |

## 상세 가이드

* 소재 우측 하단 ‘M’ 불투명 로고 자동 삽입으로 해당 영역 고려한 제작 필수
* 텍스트의 위치는 상단/하단 20px, 좌우 측 30px 여백 준수 필수
* 텍스트는 24px\~46px 이내에서 적당한 크기로 구성 권장 좌/우 동일한 단색 컬러 사용 필수&#x20;
* ①확장 영역 컬러는 띠배너 좌/우 1\*100 영역의 BG컬러로 사용
* ②그라데이션 처리하여 확장영역과 자연스럽게 단색이 되도록 디자인 (필수)


# 전면 배너 & 인라인 직사각형

전면 배너 & 인라인 직사각형제작 가이드 입니다.

## 전면 배너

### 타입

<div align="left"><figure><img src="/files/5JWaEWYFlXLCIHdk3sHy" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="/files/wipt9kjdZA1Xc676uL1D" alt=""><figcaption></figcaption></figure></div>

### 소재 사이즈

| 사이즈        | 용량      | 포맷       |
| ---------- | ------- | -------- |
| 640 \* 960 | 20KB 이하 | PNG, JPG |

## 인라인 직사각형

### 타입

<div align="left"><figure><img src="/files/RVgezjDbvXnyz5qUyM69" alt=""><figcaption></figcaption></figure></div>

### 소재 사이즈

| 사이즈        | 용량      | 포맷       |
| ---------- | ------- | -------- |
| 640 \* 250 | 20KB 이하 | PNG, JPG |

## 상세 가이드

* 소재 좌측 상단 ‘M’ 불투명 로고 자동 삽입으로 해당 영역 고려한 제작 필수
* 우측 상단 X 버튼 자동 삽입, 매체 별 버튼 삽입 위치가 상이할 수 있음
* 상/하 동일한 단색 컬러 사용 필수
* ① 확장 영역 컬러는 띠배너 좌/우 1\*10&#x30;*,* 1\*200 영역의 BG컬러로 사용
* ② 그라데이션 처리하여 확장영역과 자연스럽게 단색이 되도록 디자인 (필수)


# 세로 전면동영상

세로 전면동영상 제작 가이드 입니다.

## 공통&#x20;

<div align="left"><figure><img src="/files/HEF1mPLjwjD2XRi4Y8tT" alt=""><figcaption></figcaption></figure></div>

#### 동영상 영역&#x20;

| 사이즈 (PIXEL)                    | 용량                | 포맷                 |
| ------------------------------ | ----------------- | ------------------ |
| <p>9:16 권장<br>(16:9 지원 가능)</p> | 4MB\~1GB / 60초 이하 | MP4, AVI, WMV, MPG |

* Key message 영역은 640\*690 이므로 상단에 위치 권장
* 영상 비율 차이로 인해 발생하는 레터박스(여백) 영역은 블러 처리 \
  (단, 매체에서 지정한 영역의 경우 매체에서 지정한 설정을 따르며, 매체가 영역을 640\*960(2:3)이 아니라 디바이스 전체 영역으로 지정한 경우, 상하에 검정색 레터박스 영역 발생할 수 있음)
* 음소거의 경우, 크롬 웹뷰 정책에 따라 음소거 버튼 클릭하여 해제 시에만 음소거 해제 됨

#### CTA 버튼

* 버튼 컬러
  * 기본값: 7F7F7F (진회색)
  * 컬러 피커로 사용자가 선택 가능
* 문구
  * 커스텀 문구 입력 허용: 최대 10자 (띄어쓰기 포함)
  * 폰트 색상: FFFFFF (흰색 고정)

## 1. 상품 상세형

<div align="left"><figure><img src="/files/CcVOZ0wVMLvLVnPwMgez" alt=""><figcaption></figcaption></figure></div>

| 이미지 사이즈 (PIXEL)                           | 용량       | 포맷       |
| ----------------------------------------- | -------- | -------- |
| <p>200\*200 이상,<br>비율 1:1 (정사각형 레이아웃)</p> | 200KB 이하 | PNG, JPG |

#### BG 기본값

* 기본값: 7F7F7F (진회색)
* 컬러 피커로 사용자가 선택 가능

#### 상품명 (필수)

* 텍스트 영역 초과 시 ... 으로 생략 표시
* 띄어쓰기 포함 한글 약 31자까지 노출
* 숫자, 영문, 기호 포함 시 더 많은 글자수가 노출될 수 있음
* 줄바꿈, 이모티콘 입력 불가 (특수 문자: % & < > ' " \ 입력 불가)
* 폰트 색상: FFFFFF (흰색 고정)

## 2. 카탈로그형

<div align="left"><figure><img src="/files/ojMCX3PIW3LUnopPf5zx" alt="" width="375"><figcaption></figcaption></figure></div>

| 이미지 사이즈 (PIXEL)                           | 용량       | 포맷       |
| ----------------------------------------- | -------- | -------- |
| <p>200\*200 이상,<br>비율 1:1 (정사각형 레이아웃)</p> | 200KB 이하 | PNG, JPG |

#### BG 기본값

* 기본값: 7F7F7F (진회색)
* 컬러 피커로 사용자가 선택 가능
* BG 없음도 선택 가능

## 3. 홍보 문구형

<div align="left"><figure><img src="/files/p1Rj2ELEyKNGCsmsXgPh" alt="" width="375"><figcaption></figcaption></figure></div>

#### 텍스트

* 타이틀: 최대 15자 (띄어쓰기 포함)
* 설명 문구: 최대 30자 (띄어쓰기 포함)
* 줄바꿈, 이모티콘 입력 불가 (특수 문자: % & < > ' " \ 입력 불가)
* BG 기본값: 7F7F7F (진회색)
* 컬러 피커로 사용자가 선택 가능
* 폰트 색상: FFFFFF (흰색 고정)


# 전면 동영상

전면 동영상 제작 가이드 입니다.

## 소재 사이즈

<div align="left"><figure><img src="/files/4tnAm800A2X118xqWExd" alt=""><figcaption></figcaption></figure></div>

| 사이즈        | 용량                  | 포맷                 |
| ---------- | ------------------- | ------------------ |
| 640 \* 960 | 20KB 이하             | PNG, JPG           |
| 동영상        | 4MB \~ 1GB / 60초 이하 | MP4, AVI, WMV, MPG |

## 상세 가이드

* 우측 상단 X 버튼 자동 삽입, 매체 별 버튼 삽입 위치가 상이할 수 있음
* 상/하 동일한 단색 컬러 사용 필수
* Key message 영역은 640\*600 이므로 상단에 위치 권장
* ① 확장 영역 컬러는 전면배너 상/하 640\*1 영역의 BG컬러로 사용&#x20;
* ② 그라데이션 처리하여 확장영역과 자연스럽게 단색이 되도록 디자인 (필수)


# 카운트다운 배너

카운트다운 배너 제작 가이드 입니다.

## 타입

### 커튼 오브제 템플릿

<div align="left"><figure><img src="/files/lhd163GxvhC6ivQ9ReMc" alt=""><figcaption></figcaption></figure></div>

### 라이브 레드 템플릿

<div align="left"><figure><img src="/files/5x1uPzq8SlZI0fm2BvMm" alt=""><figcaption></figcaption></figure></div>

### 커밍순 템플릿

<div align="left"><figure><img src="/files/Pbfi3KrpcABLX7ntB60L" alt=""><figcaption></figcaption></figure></div>

## 소재 사이즈

| 사이즈         | 용량       | 포맷       |
| ----------- | -------- | -------- |
| 640X820(상단) | 200KB 이하 | PNG, JPG |
| 640X100(우측) | 200KB 이하 | PNG, JPG |
| 230X50(우측)  | 200KB 이하 | PNG, JPG |

## 상세 가이드

* 소재 좌측 상단 ‘M’ 불투명 로고 자동 삽입으로 해당 영역 고려한 제작 필수
* 우측 상단 X 버튼 자동 삽입, 매체 별 버튼 삽입 위치가 상이할 수 있음&#x20;
* 상/하 동일한 단색 컬러 사용 필수&#x20;
* ① 확장 영역 컬러는 띠배너 좌/우 1\*100, 1\*200 영역의 BG컬러로 사용&#x20;
* ② 그라데이션 처리하여 확장영역과 자연스럽게 단색이 되도록 디자인 (필수)&#x20;
* ③ 카운트다운배너 템플릿 내 문구 수정은 불가(3가지 템플릿 中 택 1)


# 삼성 게이밍허브

삼성 게이밍허브 앱 광고 소재 가이드 입니다.

## 게이밍 허브 메인

<div align="left"><figure><img src="/files/GaFLHdbzJoUxebCarmFy" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="/files/pFbhcWdfl1LOlUvqDGo0" alt=""><figcaption></figcaption></figure></div>

### 상세 가이드

<table><thead><tr><th width="131">구성</th><th width="137">사이즈 (PIXEL)</th><th width="121">용량</th><th width="172">포맷</th><th></th></tr></thead><tbody><tr><td>Interstitial Video</td><td>영상</td><td><p>480*270</p><p>(16:9)</p></td><td><p>5~30초 10MB 이하 </p><p>최대 bitrate 1200</p></td><td><p>MP4 PNG</p><p>JPG</p></td></tr><tr><td></td><td>썸네일</td><td><p>480*270 </p><p>(16:9)</p></td><td>400KB 이하</td><td><p>PNG</p><p>JPG(흰색 배경 불가)</p></td></tr><tr><td></td><td>아이콘</td><td>128*128</td><td>20kKB 이하</td><td><p>PNG</p><p>JPG (흰색 배경 불가)</p></td></tr><tr><td>Image</td><td></td><td>1200*627</td><td>400KB 이하</td><td><p>PNG</p><p>JPG (흰색 배경  불가)</p></td></tr></tbody></table>

| 문구                       |
| ------------------------ |
| 타이틀 : 영문 50자 / 국문 20자    |
| 설명 : 영문 150자 / 국문 70자    |
| 개발사 이름 : 영문 24자 / 국문 12자 |

***

## 인스턴트 플레이 Interstitial Video

### 가로형 동영상

<div align="left"><figure><img src="/files/e0J5SIav3QlPrD9uR9hp" alt=""><figcaption></figcaption></figure></div>

### 세로형 동영상

<div align="left"><figure><img src="/files/rZrBrrqGK7r8SCcNKUlY" alt=""><figcaption></figcaption></figure></div>

### 상세 가이드

#### 인스턴트 플레이 Interstitial Video

> 게임 플레이 중간에 광고가 나오는 방식\
> (예: 레벨 1 완료 → 광고 시청 → 레벨 2 시작)

<table><thead><tr><th width="217">Category</th><th width="250">Descriptions</th><th>Detail</th></tr></thead><tbody><tr><td>Video</td><td>비율</td><td>제한없음</td></tr><tr><td>　</td><td>최대 재생 시간</td><td>30s</td></tr><tr><td>　</td><td>최소 재생 시간</td><td>16s</td></tr><tr><td>　</td><td>파일 형식</td><td>MP4</td></tr><tr><td>　</td><td>최대 파일 크기</td><td>10MB (2MB 권장)</td></tr><tr><td>End card Image</td><td>비율</td><td>제한없음</td></tr><tr><td>　</td><td>파일 형식</td><td>PNG, JPEG, JPG, GIF</td></tr><tr><td>CTA Text</td><td>최대 글자수</td><td>15 자</td></tr><tr><td>　</td><td>　</td><td>기본 CTA : View more</td></tr></tbody></table>

#### 인스턴트 플레이 Rewarded Video

> 유저가 게임 중에 광고를 시청하면 게임에서 사용할 수 있는 보상(reward)를 지급받는 방식

| Category           | Descriptions        | Detail |
| ------------------ | ------------------- | ------ |
| Video              | 비율                  | 제한없음   |
| 최대 재생 시간           | 30s                 |        |
| 최소 재생 시간           | 5s                  |        |
| 파일 형식              | MP4                 |        |
| 최대 파일 크기           | 10MB (2MB 권장)       |        |
| End card Image     | 비율                  | 제한없음   |
| 파일 형식              | PNG, JPEG, JPG, GIF |        |
| CTA Text           | 최대 글자수              | 15 자   |
| 기본 CTA : View more |                     |        |


# 스플래시

스플래시 배너 제작 가이드 입니다.

## 기본 정보

* 소재 유형 : 배너 이미지
* 파일 형식 : PNG
* 용량 : 200KB 이하

## 상세 가이드

* 좌우여백 최소 5px 이하로 1200\*1000 영역내 주요 오브젝트 잘 보이도록 제작&#x20;
* 배경이 투명한 이미지 PNG 제작&#x20;
* 이미지 삽입시 80% 면적으로 권장&#x20;
* 로고 / 텍스트 삽입 시 20% 면적으로 권장&#x20;
* 다양한 배경색 적용으로 텍스트 적용시 3가지 색상으로 이미지 제작 \
  ( #FFFFFF : WHITE / #000000 : BLACK / 기타 광고주가 원하는 색상 )&#x20;
* 클릭 되지 않는 영역으로 랜딩 설정 불가

## 사이즈 정보

<div align="left"><figure><img src="/files/h31XOKGMuLtq63L8mjih" alt=""><figcaption></figcaption></figure></div>

## 적용 예시

<div align="left"><figure><img src="/files/JDPLTW6k0xvE2UmjHm4k" alt=""><figcaption></figcaption></figure></div>

## 광고물 제작 시 유의 사항

{% hint style="danger" %}

* 중앙의 메인 이미지 영역 (1200 ×1000 px) 내에 주요 오브젝트 배치&#x20;
* 지나치게 많은 요소와 긴 내용은 사용 불가&#x20;
* 지원하지 않는 동작이 연상되는 아이콘 사용 지양 (ex. 플레이 버튼, 알림 표시 등)
* 이미지가 가려지거나 잘리지 않도록 주의
* 인물이 포함된 경우 눈, 코, 입, 관절 등 주요 부위가 잘리지 않도록 유의
* 로고 이외의 프로모션 공지, 광고 카피 등의 텍스트 삽입 지양 (업종 규정에 따른 심의필 번호 추가 가능)
  {% endhint %}


# TARGETPICK Native

Targetpick Native 소재 제작 가이드 입니다.

{% hint style="warning" %}

* 초상권, 저작권, 상표권 등 타인의 권리를 침해하는 이미지와 선정적 이미지는 사용 불가 합니다.
* 과장, 허위 광고 내용이 포함되었을 경우 집행 도중이라도 게재가 취소될 수 있습니다. 사용자의 가독성을 해치는 어지러운 배경은 사용 불가(과도한 패턴, 그라데이션 사용은 불가)합니다.&#x20;
* 지나친 형광 계열이나 채도가 높은 색상으로 텍스트를 구성할 수 없습니다.&#x20;
* 지나친 신체부위 노출, 특정 부위 강조는 불가 하며 흐림효과, 블러처리, 모자이크처리등의 왜곡 처리 또한 광고 집행이 불가합니다.
* 클릭을 유발하기 위한 허위의 기능을 삽입하는 광고 방식은 (마우스포인트, 사운드/플레이 제어버튼 등) 광고 집행 불가 합니다.
* 캠페인 소재 검수 / 캠페인 셋팅까지 업무 시간 기준 약 24시간 소요 되며, 업무일 기준 16시 이전 전달 부탁 드립니다.
* 네트워크 광고 플랫폼 특성상 소재 검수 사항에 따라 주요 노출 매체에 차이가 있을 수 있습니다.
  {% endhint %}


# 네이티브 띠배너

네이티브 띠배너 제작 가이드 입니다.

{% hint style="success" %}

* Native 광고의 배경색은 흰색, 텍스트는 검은색입니다.&#x20;
* 띠배너 형 상품은 하나의 소재로 320x100, 320x50 두 가지 사이즈 지면에 노출이 됩니다.\
  (반응형 상품)&#x20;
* 띠배너 형 상품(320x100/50)은 우측 하단 CJ 메조미디어 로고가 자동 삽입되며, 클릭 시 Optout 페이지로 이동합니다.&#x20;
* 전면배너 형 상품(640x960)은 CJ 메조미디어 로고 없이 광고주 명 하단 \[광고] 표기를 통해 Optout 페이지로 이동합니다.&#x20;
* Native AD에서 노출되는 동영상은 상세 트래킹(구간, 전체 시청 여부 등)이 불가합니다.&#x20;
* 동영상 플레이어는 재생, 중지, 전체화면, 소리 옵션 설정이 가능하며, 자동 재생 설정이 되어있습니다.\
  (단, 브라우저에 따라 지원하지 않을 수 있습니다.)&#x20;
* 가로보기 모드는 지원되지 않으며, 자동으로 세로보기 모드로 전환됩니다.
  {% endhint %}

## 타입

<figure><img src="/files/iGwQJCO4e4lkJdiHk0la" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Ajf0qpPJHp9fBsXG3KTV" alt=""><figcaption></figcaption></figure>

## 소재 사이즈

<table><thead><tr><th width="300">사이즈 (PIXEL)</th><th>용량</th><th>포맷</th></tr></thead><tbody><tr><td>이미지 : 95x50 (자동 resize) </td><td>400kb </td><td>PNG, JPG</td></tr><tr><td>영상 : 90x50(16:9) (자동 resize) </td><td>1GB</td><td>PNG, JPG</td></tr></tbody></table>

## 상세 가이드

* ③ Title Text : 최대 25byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ④ Description Text : 최대 50byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ⑤ 브랜드/광고주 명 (320\*50 미노출) : 최대 25byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)

:x: **특수 문자 입력 제한 :** \[,”,’,,;,:], 윈도우 이모지


# 네이티브 전면 배너

네이티브 전면 배너 제작 가이드 입니다.

{% hint style="success" %}

* Native 광고의 배경색은 흰색, 텍스트는 검은색입니다.&#x20;
* 띠배너 형 상품은 하나의 소재로 320x100, 320x50 두 가지 사이즈 지면에 노출이 됩니다.\
  (반응형 상품)&#x20;
* 띠배너 형 상품(320x100/50)은 우측 하단 CJ 메조미디어 로고가 자동 삽입되며, 클릭 시 Optout 페이지로 이동합니다.&#x20;
* 전면배너 형 상품(640x960)은 CJ 메조미디어 로고 없이 광고주 명 하단 \[광고] 표기를 통해 Optout 페이지로 이동합니다.&#x20;
* Native AD에서 노출되는 동영상은 상세 트래킹(구간, 전체 시청 여부 등)이 불가합니다.&#x20;
* 동영상 플레이어는 재생, 중지, 전체화면, 소리 옵션 설정이 가능하며, 자동 재생 설정이 되어있습니다.\
  (단, 브라우저에 따라 지원하지 않을 수 있습니다.)&#x20;
* 가로보기 모드는 지원되지 않으며, 자동으로 세로보기 모드로 전환됩니다.
  {% endhint %}

## 타입

<figure><img src="/files/2xyD6P9BvVcT7Ppa8S8F" alt=""><figcaption></figcaption></figure>

## 소재 사이즈

| 사이즈 (PIXEL)                         | 용량      | 포맷       |
| ----------------------------------- | ------- | -------- |
| 573x300(1.91:1)                     | 400kb이하 | PNG, JPG |
| <p>100x100(1:1)<br>(Icon image)</p> | 300kb   | PNG, JPG |

## 상세 가이드

* ③ 브랜드/광고주 명 최대 32byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ④ Description Text 최대 150byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ⑤ Title Text 최대 70byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ⑥ CTA Text 5가지 문구 선택 가능 (더 알아보기, 구매하기, 가입하기, 설치하기, 직접설정)

:x: **특수 문자 입력 제한 :** \[,”,’,,;,:], 윈도우 이모지


# 네이티브 동영상

네이티브 동영상 제작 가이드 입니다.

{% hint style="success" %}

* Native 광고의 배경색은 흰색, 텍스트는 검은색입니다.&#x20;
* 띠배너 형 상품은 하나의 소재로 320x100, 320x50 두 가지 사이즈 지면에 노출이 됩니다.\
  (반응형 상품)&#x20;
* 띠배너 형 상품(320x100/50)은 우측 하단 CJ 메조미디어 로고가 자동 삽입되며, 클릭 시 Optout 페이지로 이동합니다.&#x20;
* 전면배너 형 상품(640x960)은 CJ 메조미디어 로고 없이 광고주 명 하단 \[광고] 표기를 통해 Optout 페이지로 이동합니다.&#x20;
* Native AD에서 노출되는 동영상은 상세 트래킹(구간, 전체 시청 여부 등)이 불가합니다.&#x20;
* 동영상 플레이어는 재생, 중지, 전체화면, 소리 옵션 설정이 가능하며, 자동 재생 설정이 되어있습니다.\
  (단, 브라우저에 따라 지원하지 않을 수 있습니다.)&#x20;
* 가로보기 모드는 지원되지 않으며, 자동으로 세로보기 모드로 전환됩니다.
  {% endhint %}

## 타입

<figure><img src="/files/GrFBv8toNyxsKlZwwZnP" alt=""><figcaption></figcaption></figure>

## 소재 사이즈

| 사이즈 (PIXEL)                         | 용량    | 포맷       |
| ----------------------------------- | ----- | -------- |
| 1280x720(16:9)                      | 1GB   | PNG, JPG |
| <p>100x100(1:1)<br>(Icon image)</p> | 300kb | PNG, JPG |

## 상세 가이드

* ③ 브랜드/광고주 명 최대 32byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ④ Description Text 최대 150byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ⑤ Title Text 최대 70byte 입력 가능 (한글 2byte, 영문 1byte, 공백 1byte)&#x20;
* ⑥ CTA Text 5가지 문구 선택 가능 (더 알아보기, 구매하기, 가입하기, 설치하기, 직접설정)

:x: **특수 문자 입력 제한 :** \[,”,’,,;,:], 윈도우 이모지


# 네이티브 배너 동영상

네이티브 배너 동영상 제작 가이드 입니다.

## 타입

### 1) 세로형

<div align="left"><figure><img src="/files/ePo55pkPZXnFWsb2mkKF" alt=""><figcaption></figcaption></figure></div>

### 2) 가로형

<div align="left"><figure><img src="/files/lbSv2rJ65216HFjuYhQN" alt=""><figcaption></figcaption></figure></div>

## 소재 사이즈

<table><thead><tr><th width="325">사이즈</th><th>용량</th><th>포맷</th></tr></thead><tbody><tr><td>720P 이상의 비율 상관없는 모든 동영상</td><td>4MB ~ 1GB</td><td>MP4</td></tr></tbody></table>

## 상세 가이드

* 광고 초 수 : 제한 없음
* 사운드 삽입 필수
* 음소거 버튼은 자동 삽입&#x20;
* 권장 화질 미만의 동영상 원본 전달 시, 낮은 퀄리티로 노출될 수 있음&#x20;
* 동영상 1회 재생 후 가운데 재생버튼 눌러야 재라이브


# TARGETPICK Video

Targetpick 동영상 광고 소재 제작 가이드 입니다.

{% hint style="warning" %}

* 초상권, 저작권, 상표권 등 타인의 권리를 침해하는 이미지와 선정적 이미지는 사용 불가 합니다.
* 과장, 허위 광고 내용이 포함되었을 경우 집행 도중이라도 게재가 취소될 수 있습니다. 사용자의 가독성을 해치는 어지러운 배경은 사용 불가(과도한 패턴, 그라데이션 사용은 불가)합니다.&#x20;
* 지나친 형광 계열이나 채도가 높은 색상으로 텍스트를 구성할 수 없습니다.&#x20;
* 지나친 신체부위 노출, 특정 부위 강조는 불가 하며 흐림효과, 블러처리, 모자이크처리등의 왜곡 처리 또한 광고 집행이 불가합니다.
* 클릭을 유발하기 위한 허위의 기능을 삽입하는 광고 방식은 (마우스포인트, 사운드/플레이 제어버튼 등) 광고 집행 불가 합니다.
* 캠페인 소재 검수 / 캠페인 셋팅까지 업무 시간 기준 약 24시간 소요 되며, 업무일 기준 16시 이전 전달 부탁 드립니다.
* 네트워크 광고 플랫폼 특성상 소재 검수 사항에 따라 주요 노출 매체에 차이가 있을 수 있습니다.
  {% endhint %}

## 타입

<figure><img src="/files/a2FC8Ph39d1Gt37JKujs" alt=""><figcaption></figcaption></figure>

## 소재 사이즈

<table><thead><tr><th width="355">사이즈</th><th>용량</th><th>포맷</th></tr></thead><tbody><tr><td>1280*720 이상의 16 : 9 권장 9:16 지원 가능</td><td>4MB ~ 1GB</td><td>MP4</td></tr></tbody></table>

## 상세 가이드

* 광고 초 수: 15초 \~ 120초 (범퍼광고: 6초 이하)&#x20;
* 사운드 삽입 필수
* 클릭버튼과 SKIP관련 버튼은 자동 삽입
* 권장 화질 미만의 동영상 원본 전달 시, 낮은 퀄리티로 노출될 수 있음
* 동일 creative가 연속 반복되는 광고 소재는 집행 불가
* 2개 이상 creative를 하나의 영상으로 편집한 광고 소재 집행 불가


# TARGETPICK CTV

Targetpick CTV(Connected TV) 동영상 광고 소재 제작 가이드 입니다.

{% hint style="warning" %}

* 초상권, 저작권, 상표권 등 타인의 권리를 침해하는 이미지와 선정적 이미지는 사용 불가 합니다.
* 과장, 허위 광고 내용이 포함되었을 경우 집행 도중이라도 게재가 취소될 수 있습니다. 사용자의 가독성을 해치는 어지러운 배경은 사용 불가(과도한 패턴, 그라데이션 사용은 불가)합니다.&#x20;
* 지나친 형광 계열이나 채도가 높은 색상으로 텍스트를 구성할 수 없습니다.&#x20;
* 지나친 신체부위 노출, 특정 부위 강조는 불가 하며 흐림효과, 블러처리, 모자이크처리등의 왜곡 처리 또한 광고 집행이 불가합니다.
* 클릭을 유발하기 위한 허위의 기능을 삽입하는 광고 방식은 (마우스포인트, 사운드/플레이 제어버튼 등) 광고 집행 불가 합니다.
* 캠페인 소재 검수 / 캠페인 셋팅까지 업무 시간 기준 약 24시간 소요 되며, 업무일 기준 16시 이전 전달 부탁 드립니다.
* 네트워크 광고 플랫폼 특성상 소재 검수 사항에 따라 주요 노출 매체에 차이가 있을 수 있습니다.
  {% endhint %}

<table><thead><tr><th width="199">제한 업종</th><th>가이드</th></tr></thead><tbody><tr><td>주류</td><td><ul><li>17도 이상 고도수는 소주만 집행 가능 (별도 협의)</li><li>심야 시간만 가능</li></ul></td></tr><tr><td>청불 영화</td><td><ul><li>포털 내 성인 인증 없이 공개된 예고편 등 영상 - 일반 집행</li></ul></td></tr><tr><td>금융권 및 사행산업</td><td><ul><li>제1,2 금융권: 가능</li><li>제3금융권 : 조건부 가능</li><li>도박업 및 사행산업 업종: 불가</li></ul></td></tr><tr><td>경쟁사 광고</td><td><ul><li>삼성 TV 플러스 - L사, A사 광고 집행 안됨</li><li>LG 채널 - S사 광고 집행 안됨</li></ul></td></tr><tr><td>U+ IPTV</td><td><ul><li>키즈/어린이 광고주 노출 불가</li></ul></td></tr></tbody></table>

## 타입

<figure><img src="/files/LhSvUkBUpinaJxeue30U" alt=""><figcaption></figcaption></figure>

## 소재 사이즈

<table><thead><tr><th width="355">사이즈</th><th>용량</th><th>포맷</th></tr></thead><tbody><tr><td>1280*720 이상의 16 : 9 필수</td><td>30MB 이하</td><td>MP4</td></tr></tbody></table>

## 상세 가이드

* 광고 초 수: 15초 / 30초 (이외 초수 진행 불가)
* 사운드 삽입 필수
* QR코드 삽입 원할 시 소재 내 직접 삽입 (삽입시점 제한 없음)
* 클릭집계를 원한다면, 소재 전달 전 랜딩 전달 > QR코드 발급 > 소재 내 추가 방식으로 집행 필요
* 동일 creative가 연속 반복되는 광고 소재는 집행 불가&#x20;
* 2개 이상 creative를 하나의 영상으로 편집한 광고 소재 집행 불가


# 전환 측정 API 연동

이 문서는 광고 전환 이벤트를 타 플랫폼과 S2S 방식으로 연동하기 위한 API 프로토콜 정의를 제공합니다.

{% hint style="info" %}
도메인 및 Token은 별도로 제공됩니다.
{% endhint %}

## 기본 정보 <a href="#basic" id="basic"></a>

### API 연동 정보 <a href="#api" id="api"></a>

| 환경 | URL   | 메서드  |
| -- | ----- | ---- |
| 개발 | 별도 제공 | POST |
| 상용 | 별도 제공 | POST |

### 전환 이벤트 <a href="#event" id="event"></a>

<table><thead><tr><th width="145.6484375">이벤트명</th><th width="173.18359375">설명</th><th width="386">발생 조건</th><th>필수</th></tr></thead><tbody><tr><td>signup</td><td>회원가입</td><td>사용자가 계정을 생성한 경우</td><td>N</td></tr><tr><td>view</td><td>상품 조회</td><td>상품 상세 페이지에서 상품을 본 경우</td><td>Y</td></tr><tr><td>purchase</td><td>상품 구매</td><td>상품 결제까지 완료한 경우</td><td>Y</td></tr><tr><td>install</td><td>앱 설치</td><td>사용자가 앱스토어에서 앱을 다운로드하고 설치한 경우</td><td>N</td></tr><tr><td>open</td><td>앱 실행</td><td>설치 후 앱을 처음 실행한 경우</td><td>N</td></tr><tr><td>cart</td><td>장바구니 담기</td><td>상품 상세 페이지에서 ‘장바구니 담기’ 버튼 클릭 시</td><td>Y</td></tr><tr><td>like</td><td>상품 찜하기</td><td>상품 상세 페이지에서 ‘찜(하트)’ 버튼 클릭 시</td><td>N</td></tr><tr><td>cancel</td><td>주문 취소</td><td>상품 구매 후 해당 건을 취소한 경우</td><td>Y</td></tr></tbody></table>

## 요청 <a href="#request" id="request"></a>

### 헤더 <a href="#header" id="header"></a>

<table><thead><tr><th>파라미터</th><th width="214.1484375">설명</th><th width="269.25">예시</th><th>필수</th></tr></thead><tbody><tr><td>Authorization</td><td>전달받은 토큰을 헤더에 삽입</td><td>Authorization: Bearer {TOKEN}</td><td>Y</td></tr></tbody></table>

### 쿼리 <a href="#query" id="query"></a>

<table><thead><tr><th width="164.87109375">파라미터</th><th>설명</th><th width="346.1171875">예시</th><th>필수</th></tr></thead><tbody><tr><td>sub_campaign</td><td>클릭시 플랫폼으로 전달한 값을 그대로 반환</td><td>splus2_tracking%5E1504%5E31778%5E805378%5E3%5E23191%5E11973%5E27169%5E27167%5E%5E%5E%5E%5E-%5E-%5E-1%5E-%5E14%5E1%5Esamsung%5E1%5ESM-G991N%5E778e5ef6-f063-4a37-87c2-61bd6b407112%5E0b6eeafc-47dc-4f7f-b3b4-ecc73f8b123d%241237396897%24ESFSVVWN%5E%5E%5E1%5E-%5Ecom.cjmezzomedia</td><td>Y</td></tr><tr><td>google_aid</td><td>GAID 디바이스 식별자</td><td>7c19df6e-81ba-45f0-bee9-719a2d95236</td><td>Y</td></tr><tr><td>ios_ifa</td><td>IDFA 디바이스 식별자</td><td>AEBE52E7-03EE-455A-B3C4-E57283966239</td><td>Y</td></tr><tr><td>language</td><td>사용자 기기 언어 설정</td><td>KO</td><td>N</td></tr><tr><td>os_version</td><td>사용자 기기의 OS 버전</td><td>15</td><td>N</td></tr><tr><td>device_carrier</td><td>사용자 기기의 통신사</td><td>SKTelecom</td><td>N</td></tr><tr><td>device_brand</td><td>사용자 기기의 제조사</td><td>samsung</td><td>N</td></tr><tr><td>device_model</td><td>사용자 기기의 모델명</td><td>SM-G991N</td><td>N</td></tr><tr><td>device_ip</td><td>사용자 기기의 IP 주소</td><td>127.0.0.1</td><td>N</td></tr><tr><td>country_code</td><td>사용자 국가 코드</td><td>KR</td><td>N</td></tr><tr><td>package_name</td><td>앱 패키지명</td><td>com.cjmezzomedia</td><td>Y</td></tr><tr><td>click_timestamp</td><td>클릭 발생 시각 (UTC)</td><td>1234567890</td><td>Y</td></tr><tr><td>event_name</td><td>전환 이벤트명</td><td>purchase</td><td>Y</td></tr><tr><td>event_timestamp</td><td>전환 발생 시각 (UTC)</td><td>1234567890</td><td>Y</td></tr><tr><td>item_info</td><td>상품 정보 (JSON body)</td><td>아래 상품 정보 참조</td><td>Y</td></tr><tr><td>currency</td><td>통화 단위</td><td>KRW</td><td>N</td></tr><tr><td>is_reattributed</td><td>기존 설치 사용자의 재유입 여부</td><td>0(false), 1(true)</td><td>N</td></tr><tr><td>is_reengagement</td><td>기존 사용자의 이벤트 재참여 여부</td><td>0(false), 1(true)</td><td>N</td></tr><tr><td>is_retargeting</td><td>리타겟팅 캠페인을 통한 전환 여부</td><td>0(false), 1(true)</td><td>N</td></tr><tr><td>google_ad_tracking</td><td>광고 추적 제한 여부 (Google)</td><td>0(false), 1(true)</td><td>N</td></tr><tr><td>ios_ad_tracking</td><td>광고 추적 제한 여부 (iOS)</td><td>0(false), 1(true)</td><td>N</td></tr><tr><td>conversion_user_agent</td><td>전환 발생 user agent</td><td>Mozilla/5.0 (Linux; Android 13; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Mobile Safari/537.36</td><td>N</td></tr></tbody></table>

### 본문 <a href="#body" id="body"></a>

<table><thead><tr><th width="199.44921875">파라미터</th><th width="202.0234375">설명</th><th>필수</th></tr></thead><tbody><tr><td>item_info</td><td>상품 정보</td><td><p>상품과 관련된 이벤트 : 필수</p><p>( 구매, 장바구니, 상품보기, 취소 등 )</p></td></tr></tbody></table>

```
{
  "item_info": {
    "order_id": "1234",                // 주문번호 (Purchase, Cancel 이 아닐 경우 키제거 or 값 공백 )
    "revenue": 30000,                // 주문 총금액 (실 유저 구매 금액 )
    "item": [
      {
        "product_id": "prd01",         // 상품코드
        "category_code": "CATE01",    // 카테고리 코드
        "brand_code": "BRAND01",        // 브랜드 코드
        "price": 10000,                // 상품 단가
        "discount": 1000,                // 할인 금액
        "qty": 1                        // 수량
      },
      {
        "product_id": "prd02",
        "category_code": "CATE02",
        "brand_code": "BRAND02",
        "price": 31000,
        "discount": 0,
        "qty": 1
      }
    ]
  }
}
```

## 응답 <a href="#response" id="response"></a>

| 코드  | 설명                        |
| --- | ------------------------- |
| 200 | SUCCESS                   |
| 408 | ERROR\_TIMEOUT            |
| 501 | ERROR\_INVALID\_TOKEN     |
| 502 | ERROR\_INVALID\_PARAMETER |
| 999 | ERROR\_SYSTEM             |

```
{
  "code": 200,
  "message": "SUCCESS"
}
```


# 기본 설정

GitBook has a powerful block-based editor that allows you to seamlessly create, update, and enhance your content.

{% tabs %}
{% tab title="fasdfas" %}

{% endtab %}

{% tab title="fasdfas" %}

{% endtab %}
{% endtabs %}

<figure><img src="https://gitbookio.github.io/onboarding-template-images/editor-hero.png" alt=""><figcaption></figcaption></figure>

### Writing content

GitBook offers a range of block types for you to add to your content inline — from simple text and tables, to code blocks and more. These elements will make your pages more useful to readers, and offer extra information and context.

Either start typing below, or press `/` to see a list of the blocks you can insert into your page.


# Markdown

GitBook supports many different types of content, and is backed by Markdown — meaning you can copy and paste any existing Markdown files directly into the editor!

<figure><img src="https://gitbookio.github.io/onboarding-template-images/markdown-hero.png" alt=""><figcaption></figcaption></figure>

Feel free to test it out and copy the Markdown below by hovering over the code block in the upper right, and pasting into a new line underneath.

```markdown
# Heading

This is some paragraph text, with a [link](https://docs.gitbook.com) to our docs. 

## Heading 2
- Point 1
- Point 2
- Point 3
```

{% hint style="info" %}
If you have multiple files, GitBook makes it easy to import full repositories too — allowing you to keep your GitBook content in sync.
{% endhint %}


# Images & media

GitBook allows you to add images and media easily to your docs. Simply drag a file into the editor, or use the file manager in the upper right corner to upload multiple images at once.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/images-hero.png" alt=""><figcaption><p>Add alt text and captions to your images</p></figcaption></figure>

{% hint style="info" %}
You can also add images simply by copying and pasting them directly into the editor — and GitBook will automatically add it to your file manager.
{% endhint %}


# Interactive blocks

In addition to the default Markdown you can write, GitBook has a number of out-of-the-box interactive blocks you can use. You can find interactive blocks by pressing `/` from within the editor.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/interactive-hero.png" alt=""><figcaption></figcaption></figure>

### Tabs

{% tabs %}
{% tab title="First tab" %}
Each tab is like a mini page — it can contain multiple other blocks, of any type. So you can add code blocks, images, integration blocks and more to individual tabs in the same tab block.
{% endtab %}

{% tab title="Second tab" %}
Add images, embedded content, code blocks, and more.

```javascript
const handleFetchEvent = async (request, context) => {
    return new Response({message: "Hello World"});
};
```

{% endtab %}
{% endtabs %}

### Expandable sections

<details>

<summary>Click me to expand</summary>

Expandable blocks are helpful in condensing what could otherwise be a lengthy paragraph. They are also great in step-by-step guides and FAQs.

</details>

### Drawings

<img alt="" class="gitbook-drawing">

### Embedded content

{% embed url="<https://www.youtube.com/watch?v=YILlrDYzAm4>" %}

{% hint style="info" %}
GitBook supports thousands of embedded websites out-of-the-box, simply by pasting their links. Feel free to check out which ones[ are supported natively](https://iframely.com).
{% endhint %}


# OpenAPI

You can sync GitBook pages with an OpenAPI or Swagger file or a URL to include auto-generated API methods in your documentation.

## Create a new user

<mark style="color:green;">`POST`</mark> `/users`

\<Description of the endpoint>

**Headers**

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

**Body**

| Name   | Type   | Description      |
| ------ | ------ | ---------------- |
| `name` | string | Name of the user |
| `age`  | number | Age of the user  |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "id": 1,
  "name": "John",
  "age": 30
}
```

{% endtab %}

{% tab title="400" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}

### OpenAPI block

GitBook's OpenAPI block is powered by [Scalar](https://scalar.com/), so you can test your APIs directly from your docs.

{% openapi src="<https://petstore3.swagger.io/api/v3/openapi.json>" path="/pet" method="post" %}
<https://petstore3.swagger.io/api/v3/openapi.json>
{% endopenapi %}


# Integrations

GitBook integrations allow you to connect your GitBook spaces to some of your favorite platforms and services. You can install integrations into your GitBook page from the *Integrations* menu in the top left.

<figure><img src="https://gitbookio.github.io/onboarding-template-images/integrations-hero.png" alt=""><figcaption></figcaption></figure>

### Types of integrations

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th></tr></thead><tbody><tr><td><strong>Analytics</strong></td><td>Track analytics from your docs</td><td><a href="https://www.gitbook.com/integrations#analytics">https://www.gitbook.com/integrations#analytics</a></td><td><a href="/files/vxs1ER5I8VkIA0IaOqfo">/files/vxs1ER5I8VkIA0IaOqfo</a></td><td></td></tr><tr><td><strong>Support</strong></td><td>Add support widgets to your docs</td><td><a href="https://www.gitbook.com/integrations#support">https://www.gitbook.com/integrations#support</a></td><td><a href="/files/WqTZslyWgLz3XWQj63oY">/files/WqTZslyWgLz3XWQj63oY</a></td><td></td></tr><tr><td><strong>Interactive</strong></td><td>Add extra functionality to your docs</td><td><a href="https://www.gitbook.com/integrations#interactive">https://www.gitbook.com/integrations#interactive</a></td><td><a href="/files/SdPaDKIKifbvNn0jWHM0">/files/SdPaDKIKifbvNn0jWHM0</a></td><td></td></tr><tr><td><strong>Visitor Authentication</strong></td><td>Protect your docs and require sign-in</td><td><a href="https://www.gitbook.com/integrations#visitor-authentication">https://www.gitbook.com/integrations#visitor-authentication</a></td><td><a href="/files/UHF7zjwcq36zmrwja3ub">/files/UHF7zjwcq36zmrwja3ub</a></td><td></td></tr></tbody></table>


# Page 2


