DSP Native AD. Delivery API(for SSP)
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 | 사이트 도메인 |
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 | 이벤트 발생 시 전달하는 트래킹 유형 |
요청 예제 (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": {
}
}
RESPONSE
DSP SSP
DSP 는 아래 정의된 객체를 HTTP body 에 포함해 응답합니다.
객체 정의는 OPEN RTB 2.3와 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 | Y | 노출 URL |
adm | string | Y | 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 | 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"
}
}
}]
}]
}