DSP Native AD. Delivery API(for SSP)

13 분 소요

InJun Kim

REQUEST

SSP DSP

메조미디어 SSP 는 HTTP POST 방식으로 아래 정의된 객체를 JSON 형태로 작성해 DSP 인터페이스를 호출합니다.
요청 객체 정의는OPEN RTB 2.5OpenRTB 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

imp / native /

필드 유형 필수 설명
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.3OpenRTB 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에 노출될 형식화된 문자열

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"
				}
			}
		}]
	}]
}

업데이트: