> For the complete documentation index, see [llms.txt](https://docs.targetpick.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.targetpick.io/targetpick_eng/for-dsp/banner.md).

# Banner

## 1. **REQUEST**

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

CJ MezzoMedia SSP calls the DSP interface via HTTP POST, sending the request object in JSON format as defined below. The request object follows the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) specification.

### **Request object**

| Field  | Type         | Required | Description                                                                                                  |
| ------ | ------------ | -------- | ------------------------------------------------------------------------------------------------------------ |
| id     | string       | Y        | Unique request ID                                                                                            |
| cur    | string array | N        | ISO-4217 alpha currencies allowed in the auction (e.g., "KRW")                                               |
| test   | integer      | N        | Indicates whether the auction is in test mode (1) or live mode (0). Bidding is not allowed for test auctions |
| site   | object       | Y        | Refer to the [`Site`](#site) object                                                                          |
| app    | object       | Y        | Refer to the [`App`](#app) object                                                                            |
| device | object       | Y        | Refer to the [`Device`](#device) object                                                                      |
| user   | object       | Y        | Refer to the [`User`](#user) object                                                                          |
| imp    | object array | Y        | Array of  [`Imp`](#imp) objects                                                                              |
| at     | integer      | Y        | 0 : fixed price, 1: first price, 2: second price                                                             |
| tmax   | integer      | Y        | Maximum timeout in milliseconds (ms)                                                                         |
| bcat   | string array | N        | Blocked advertiser categories based on IAB categories                                                        |
| badv   | string array | N        | Blocked advertiser domains                                                                                   |
| bapp   | string array | N        | Blocked app bundle or package names                                                                          |
| ext    | object       | N        | Refer to the [`Ext`](#ext) object                                                                            |

### **Site**

| Field     | Type         | Required | Description                                   |
| --------- | ------------ | -------- | --------------------------------------------- |
| id        | string       | Y        | Publisher ID                                  |
| name      | string       | N        | Application name                              |
| domain    | string       | N        | Site domain                                   |
| page      | string       | N        | Page URL                                      |
| ref       | string       | N        | Referrer URL (previous page URL)              |
| cat       | string array | N        | Categories                                    |
| publisher | object       | Y        | Refer to the [`Publisher`](#publisher) object |

### **App**

| Field     | Type         | Required | Description                                   |
| --------- | ------------ | -------- | --------------------------------------------- |
| id        | string       | Y        | Publisher ID                                  |
| name      | string       | N        | Application name                              |
| bundle    | string       | Y        | Bundle name or package name                   |
| storeurl  | string       | N        | App store URL                                 |
| cat       | string array | N        | Categories                                    |
| publisher | object       | Y        | Refer to the [`Publisher`](#publisher) object |

### **Publisher**

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

| Field         | Type   | Required | Description                                                                                                                                                       |
| ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id            | string | Y        | Publisher ID                                                                                                                                                      |
| name          | string | N        | Publisher name                                                                                                                                                    |
| domain        | string | N        | Site domain                                                                                                                                                       |
| product\_attr | string | N        | <p>Ad product code</p><ul><li>1: Banner</li><li>2:  interstitial </li><li>6: Rectangle </li><li>7: Skyscraper</li><li>8: Leaderboard</li><li>12: Splash</li></ul> |

### **Device**

| Field | Type    | Required | Description                                                                                   |
| ----- | ------- | -------- | --------------------------------------------------------------------------------------------- |
| adid  | string  | Y        | Device ADID                                                                                   |
| make  | string  | Y        | Device make (e.g., “samsung”)                                                                 |
| ua    | string  | Y        | User Agent of the device                                                                      |
| dnt   | integer | N        | <p>Do Not Track flag </p><ul><li>0: tracking allowed</li><li>1: tracking restricted</li></ul> |
| ip    | string  | Y        | IPv4 address                                                                                  |
| model | string  | N        | Device model                                                                                  |
| os    | string  | Y        | Operating system (e.g., iOS, Android)                                                         |
| osv   | string  | Y        | OS version (e.g., 8.1, 9.2)                                                                   |
| js    | integer | N        | Defined as 1 in RTB protocol                                                                  |
| ifa   | string  | Y        | Apple IFA or Google ADID                                                                      |

### **User**

{% hint style="info" %}
CJ MezzoMedia Extension Field
{% endhint %}

| Field | Type   | Required | Description    |
| ----- | ------ | -------- | -------------- |
| id    | string | Y        | Unique user ID |

### **Imp**

| Field             | Type    | Required | Description                                                                                                                                        |
| ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                | string  | Y        | Unique impression ID                                                                                                                               |
| bidfloor          | float   | Y        | Minimum bid price required to be considered valid (e.g., 4.12)                                                                                     |
| bidfloorcur       | string  | Y        | Currency (e.g., "KRW")                                                                                                                             |
| secure            | integer | Y        | <ul><li>0: http</li><li>1: https</li></ul>                                                                                                         |
| type              | string  | Y        | BANNER                                                                                                                                             |
| banner            | object  | Y        | Refer to the [`Banner`](#banner) object                                                                                                            |
| instl             | integer | Y        | <p>Indicates whether the ad is interstitial (default: 0)</p><ul><li>1: the ad is interstitial or full screen</li><li>0: not interstitial</li></ul> |
| displaymanager    | string  | Y        | SSP platform name or SDK name                                                                                                                      |
| displaymanagerver | string  | Y        | SSP platform or SDK version                                                                                                                        |

### **Banner**

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

| Field | Type    | Required | Description   |
| ----- | ------- | -------- | ------------- |
| w     | integer | Y        | Banner width  |
| h     | integer | Y        | Banner height |

### **Ext**

{% hint style="info" %}
CJ MezzoMedia Extension Fields
{% endhint %}

| Field        | Type    | Required | Description                                                                                                                                                                  |
| ------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| price\_type  | integer | N        | <ul><li>0: CPM</li><li>2: CPC</li></ul>                                                                                                                                      |
| click\_macro | integer | N        | <p>1: DSP must provide macro (${MEZZO\_CLICK\_URL}) within ADM for click tracking. </p><p></p><p>When a click occurs, the macro-substituted click URL must be triggered.</p> |

### **Example**

{% 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 %}

CJ MezzoMedia SSP returns the response by including the following object in the HTTP body.\
The object definition follows the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) specification.<br>

### **Bid Response**

{% hint style="info" %}
Response object in JSON format.
{% endhint %}

| Field   | Type         | Required | Description                                                                      |
| ------- | ------------ | -------- | -------------------------------------------------------------------------------- |
| id      | string       | Y        | ID of the Bid Request                                                            |
| bidid   | string       | Y        | ID of the Bid object                                                             |
| cur     | string       | Y        | Currency used for bidding (e.g., KRW)                                            |
| seatbid | object array | Y        | Array of [`Seatbid`](#seatbid) objects. At least one is required for a valid bid |

### **Seatbid**

| Field | Type         | Required | Description                                                              |
| ----- | ------------ | -------- | ------------------------------------------------------------------------ |
| seat  | string       | Y        | ID managing the bidding entity                                           |
| bid   | object array | Y        | Array of [`Bid`](#bid) objects. At least one is required for a valid bid |

### **Bid**

| Field   | Type          | Required | Description                                                                                  |
| ------- | ------------- | -------- | -------------------------------------------------------------------------------------------- |
| id      | string        | Y        | ID managing the bid                                                                          |
| impid   | string        | Y        | Impression ID related to the bid request. Must match the impression object ID in the request |
| price   | float         | Y        | Bid price                                                                                    |
| cat     | string array  | Y        | Categories                                                                                   |
| nurl    | string        | N        | Win notice URL. The clearing price is substituted into the {AUCTION\_PRICE} macro            |
| burl    | string        | N        | Billing notice URL. The clearing price is substituted into the {AUCTION\_PRICE} macro        |
| lurl    | string        | N        | Loss notice URL. The loss reason code is substituted into the {AUCTION\_LOSS} macro          |
| adm     | string (html) | Y        | Refer to the [`ADM`](#adm) object                                                            |
| iurl    | string        | Y        | Impression image URL                                                                         |
| adomain | string array  | Y        | Advertiser domains for blacklist checking                                                    |
| cid     | string        | Y        | Advertiser campaign name / ID                                                                |
| crid    | string        | Y        | Creative name / ID                                                                           |
| w       | integer       | Y        | Ad width                                                                                     |
| h       | integer       | Y        | Ad height                                                                                    |
| ext     | string        | Y        | Extension field                                                                              |

### **ADM**

{% hint style="info" %}
HTML without line breaks or whitespace.
{% endhint %}

### **Example**

{% 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 %}

## &#x20;<a href="#skadnetwork-support-ios-14" id="skadnetwork-support-ios-14"></a>

## 3. SKAdNetwork Support (iOS 14+) <a href="#skadnetwork-support-ios-14" id="skadnetwork-support-ios-14"></a>

{% hint style="info" %}
This section describes support for campaigns where SKAdNetwork is enabled on iOS 14 or later.
{% endhint %}

<table data-header-hidden><thead><tr><th width="56">N</th><th></th></tr></thead><tbody><tr><td>1</td><td>The DSP must be registered as an Ad Network in Apple’s SKAdNetwork API.<br>(https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network)</td></tr><tr><td>2</td><td>A public key must be issued by Apple and a postback URL must be configured.</td></tr><tr><td>3</td><td>The SKAdNetwork ID issued by Apple must be shared with CJ MezzoMedia, which will request registration in the publisher’s info.plist.</td></tr><tr><td>4</td><td>When returning a response for SKAdNetwork-enabled campaigns, the DSP must include the SKAdNetwork ID and all related fields.</td></tr><tr><td>5</td><td>The advertiser app must register via registerAppForAdNetworkAttribution().</td></tr><tr><td>6</td><td>The DSP can receive install data via SKAdNetwork.</td></tr></tbody></table>

### Additional Fields in Ad Request (SKAdNetwork) <a href="#additional-fields-in-a-d-request-skadnetwork" id="additional-fields-in-a-d-request-skadnetwork"></a>

> BidRequest / imp / banner / ext / skadn

Prerequisites:

<table data-header-hidden><thead><tr><th width="56">1</th><th>DSP에서 제공하는 SKAdNetwork ID가 퍼블리셔의 info.plist에 등록되어 있어야 한다.</th></tr></thead><tbody><tr><td>1</td><td>The DSP’s SKAdNetwork ID must be registered in the publisher’s info.plist.</td></tr><tr><td>2</td><td>The user device must run iOS 14 or higher.</td></tr><tr><td>3</td><td>A version of the SDK that supports SKAdNetwork must be installed.</td></tr><tr><td>4</td><td>The DSP must comply with CJ MezzoMedia Bid Request specifications.</td></tr></tbody></table>

| Field      | Type   | Required | Description                                                                   | Example                                  |
| ---------- | ------ | -------- | ----------------------------------------------------------------------------- | ---------------------------------------- |
| version    | string | Y        | SKAdNetwork version (2.0 or higher)                                           | “version”:”2.0”                          |
| sourceapp  | string | Y        | Publisher app ID registered in Apple App Store. Matches BidRequest.app.bundle | “sourceapp”:”000000000”                  |
| skadnetids | string | Y        | SKAdNetwork IDs registered in publisher’s info.plist                          | “skadnetids”:\[“feyaarzu9v.skadnetwork”] |

### Additional Fields in Ad Response **(SKAdNetwork)**

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

| Field      | Type   | Required | Description                                                             | Example                                         |
| ---------- | ------ | -------- | ----------------------------------------------------------------------- | ----------------------------------------------- |
| version    | string | Y        | SKAdNetwork version (2.0 or higher)                                     | “version”:”2.0”                                 |
| network    | string | Y        | Ad network identifier. Must match at least one skadnetid in the request | “network”:\[“feyaarzu9v.skadnetwork”]           |
| campaign   | string | Y        | Campaign ID (integer between 1 and 100 per Apple spec)                  | “campaign”:”45”                                 |
| itunesitem | string | Y        | Advertiser app ID in App Store. Matches BidResponse.bid.bundle          | “itunesitem”:”123456789”                        |
| nonce      | string | Y        | Unique ID for each ad response                                          | “nonce”:”123b1a78-b5ef-98ad-1234-ab-c4effa00b8” |
| sourceapp  | string | Y        | Publisher app ID. Matches BidRequest.imp.ext.skad.sourceapp             | “sourceapp”:”000000000”                         |
| timestamp  | string | Y        | Unix time as a string                                                   | “timestamp”:”1234567890”                        |
| signature  | string | Y        | SKAdNetwork signature provided by Apple                                 | “signature”:”ABCDEFGHijkl-lmb…”                 |

### **Example**

{% 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 %}
