SSP Native AD. Request API
REQUEST
SSP DSP
메조미디어 SSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 작성해 DSP 인터페이스를 호출합니다.
요청 객체 정의는 OPEN RTB 2.5와 OpenRTB Dynamic Native Ads API Specification Version 1.2 규격을 따릅니다.
request object
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | 요청 유니크 아이디 |
cur | string array | N | ISO-4217-alpha 경매에 사용할 수 있는 통화 입니다. 예: “KRW” |
test | integer | N | 경매가 테스트 모드(1)건 실시간 모드(0)건, 테스트 경매에는 입찰할 수 없습니다 |
site | object | Y | site 객체를 참고하십시오. |
app | object | Y | app 객체를 참고하십시오. |
device | object | Y | device 객체를 참고하십시오. |
user | object | Y | user 객체를 참고하십시오. |
imp | object array | Y | 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 객체를 참고하십시오. |
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 객체를 참고하십시오. |
app
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | 퍼블리셔 ID |
name | string | N | 애플리케이션 이름 |
bundle | string | Y | 번들 이름, 패키지 이름 |
storeurl | string | N | 앱스토어 URL |
cat | string array | N | 카테고리 |
publisher | object | Y | publisher 객체를 참고하십시오. |
publisher
site / publisher
app / publisher
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | 퍼블리셔 ID |
name | string | N | 퍼블리셔 명 |
domain | string | N | 사이트 도메인 |
product_attr | string | N | 광고상품코드 1: 띠배너 2: 전면 |
device
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
adid | string | Y | 디바이스의 adid정보 |
make | string | Y | 운영체제. 예) iOS, Anroid |
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 |
user
RTB 프로토콜에는 없는 메조미디어의 확장 필드 입니다.
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | 사용자의 고유 ID |
imp
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | 노출에 대한 유니크 아이디 |
bidfloor | float | Y | 입찰로 인정받을 수 있는 최소 가격. 예) 4.12 |
bidfloorcur | string | Y | 통화, 예) ‘KRW’ |
secure | integer | Y | 0 : http, 1 : https |
type | string | Y | Native |
native | object | Y | native 객체를 참고하십시오. |
instl | integer | Y | 전면광고 여부를 전달합니다. (default: 0) * 1 = the ad is interstitial or full screen * 0 = not interstitial. |
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
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
ver | string | Y | 사용하는 Native 마크업 버전 |
assets | object array | Y | native_asset 객체를 참고하십시오. |
eventtrackers | object array | Y | 지원하는 이벤트 트래킹 유형 native_eventtracker 객체를 참고하십시오. |
privacy | integer | - | 0 : 미지원, 1 : 구매자의 개인 정보 보호정책을 지원 |
native_asset
imp / native / native_request
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | integer | Y | Unique Asset ID |
required | integer | Y | 1: 해당 asset이 필수값인 경우 설정 |
title | object | - | native_asset: Title 객체를 참고하십시오. |
img | object | - | native_asset: Image 객체를 참고하십시오. |
video | object | - | native_asset: Video 객체를 참고하십시오. |
data | object | - | 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 | 이벤트 발생 시 전달하는 트래킹 유형 |
ext
RTB 프로토콜에는 없는 메조미디어의 확장 필드 입니다.
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
price_type | integer | N | 0:CPM, 1: CPC |
click_macro | integer | N | 1:DSP매체에서 ADM내부에 클릭 Tracking을 받을 수 있는</br> 매크로${MEZZO_CLICK_URL}을 제공해야 합니다.</br> DSP에서 click이 이루어질 때, 매크로로 치환된 click url를 발생시켜야 합니다. |
요청 예제 (APP)
{
"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://itunes.apple.com/us/app/id1234567?mt=8",
"cat": "IAB1",
"publisher": {
"id": "test-pub-app-id",
"domain": "test-pub-domain",
"product_attr": 1
}
},
"device": {
"adid": "test-ifa-gaid",
"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",
"make":"iOS",
"model": "iPhone 7,2",
"os": "iOS",
"osv": "8.0",
"js": 1,
"ifa": "test-ifa-gaid"
},
"user": {
"id": "923123"
},
"ext": {
"price_type": 1,
"click_macro": 1
}
}
RESPONSE
DSP SSP
DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다.
객체 정의는 OPEN RTB 2.5와 OpenRTB Dynamic Native Ads API Specification Version 1.2 규격을 따릅니다.
Bid Response
JSON 형식의 응답 객체입니다.
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | Bid Request 의 ID |
bidid | string | Y | Bid 오브젝트의 ID |
cur | string | Y | 입찰시 사용할 통화. 예) KRW |
seatbid | object array | Y | seatbid 객체 배열입니다. 입찰이 이루어지려면 1+가 필요합니다. |
seatbid
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
seat | string | Y | 입찰 정보를 관리하는 ID |
bid | object array | Y | bid 객체 배열입니다. 입찰이 이루어지려면 1+가 필요합니다. |
bid
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
id | string | Y | 입찰 정보를 관리하는 ID |
impid | string | Y | 입찰 요청의 노출과 관련된 노출 ID입니다. 입찰 요청 노출 객체 ID와 반드시 일치해야 합니다. |
price | float | Y | 입찰 가격 |
cat | string array | Y | 카테고리 |
nurl | string | N | 낙찰 알림 url (win URL) 낙찰가를 {AUCTION_PRICE} 매크로에 치환하여 전달합니다. |
burl | string | N | 낙찰 청구 알림 url (Billing notice URL) 낙찰가를 {AUCTION_PRICE} 매크로에 치환하여 전달합니다. |
lurl | string | N | 유찰 알림 url (Loss notice URL) {AUCTION_LOSS} 매크로에 유찰 사유 코드를 치환하여 전달합니다. |
adm | string | Y | 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 / adm /
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
ver | string | Y | 사용하는 Native 마크업 버전 |
assets | object array | Y | Native 광고의 assets native_response_asset 객체를 참고하십시오. |
link | object | Y | native_response_asset_link 객체를 참고하십시오. |
eventtrackers | object array | Y | native_response_asset_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 객체를 참고하십시오. |
img | object | - | native_response_asset_image 객체를 참고하십시오. |
video | object | - | native_response_asset_video 객체를 참고하십시오. |
data | object | - | 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 | 요청된 트래킹 유형 |
Bid response 예제
{
"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&ad=8cc00d7733a331ba",
"crid":"3331502",
"cid":"1062015",
"attr":[
],
"cat":[
"IAB7-44",
"IAB7"
]
}
],
"seat":"18878"
}
],
"bidid": "dsp",
"cur": "KRW"
}
Bid response(noad) 예제
{
"id": "",
"seatbid": [],
"bidid": "mezzo",
"cur": "KRW"
}
SKAdNetwork 지원(iOS14 이상)
해당 내용은 iOS14 버전 혹은 그 이상의 환경에서 SKAdNetwork가 활성화된 캠페인을 지원하기 위한 내용입니다.
1 | DSP는 Apple의 SKAdNetwork API에 Ad Network로 등록되어 있어야 한다. (https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network) |
2 | Apple로부터 Public key를 발급받고 Postback URL을 설정해야 한다. |
3 | Apple로부터 발급받은 SKAdNetwork ID를 MezzoMedia 담당자에게 전달하고 MezzoMedia는 전달받은 SKAdNetwork ID를 자사와 제휴된 퍼블리셔의 info.plist에 등록 요청한다. |
4 | DSP에서 SKAdNetwork가 활성화된 캠페인 Response를 전달할 때는 SKAdNetwork ID 및 관련된 모든 정보를 포함해야한다. |
5 | 광고주 App은 registerAppForAdNetworkAttribution()를 통해 SKAdNetwork 사용자로 등록해야 한다. |
6 | DSP는 SKAdNetwork를 통해 설치 데이터를 제공 받을 수 있다. |
광고요청 추가내용 (SKAdNetwork)
BidRequest / imp / banner / ext / skadn
해당 Object를 사용하기 위해서는 우선적으로 아래 사항들이 준비되어야 한다.
1 | DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다. |
2 | 사용자 기기의 운영체제가 iOS14 혹은 그 이상이어야 한다. |
3 | SKAdNetwork를 지원하는 버전의 SDK를 설치해야한다. |
4 | DSP는 메조미디어의 Bid Request 규약을 준수해야한다. |
필드 | 유형 | 필수 | 설명 | 예 |
---|---|---|---|---|
version | string | Y | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상. | “version”:”2.0” |
sourceapp | string | Y | Apple App 스토어에 등록된 퍼블리셔 App ID. ‘BidRequest.app.bundle’ 과 매칭 |
“sourceapp”:”000000000” |
skadnetids | string | Y | 퍼블리셔 App 내 info.plist에 입력된 SKAdNetwork IDs | “skadnetids”:[“feyaarzu9v.skadnetwork”] |
SKAdNetwork 광고 요청 예제
{
"imp":[{
"ext": {
"skadn": {
"version": "2.0",
"sourceapp": "000000000",
"skadnetids": ["feyaarzu9v.skadnetwork", "8sRFag4vVC.skadnetwork"]
}
}
}]
}
광고응답 추가내용 (SKAdNetwork)
BidResponse / imp / banner / ext / skadn
필드 | 유형 | 필수 | 설명 | 예 |
---|---|---|---|---|
version | string | Y | 사용하는 SKadNetwork 버전. “2.0” 혹은 그 이상. | “version”:”2.0” |
network | string | Y | 광고 네트워크 식별자. Request에 포함된 skadnetids와 최소 한 개는 매칭되어야 함 |
“network”:[“feyaarzu9v.skadnetwork”] |
campaign | string | Y | Apple의 규격에 맞는 캠페인 ID. 1과 100 사이의 정수를 이용해서 표현해야함 |
“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 | Apple App 스토어에 등록된 퍼블리셔 App ID. ‘BidRequest.imp.ext.skad.sourceapp’ 과 매칭 |
“sourceapp”:”000000000” |
timestamp | string | Y | Unix time을 string 값으로 전달 | “timestamp”:”1234567890” |
signature | string | Y | Apple에서 제공하는 SKAdNetwork sigature 값 | “signature”:”ABCDEFGHijkl-lmb…” |
SKAdNetwork 광고 응답 예제
{
"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"
}
}
}]
}]
}