Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 72b9c8a

Browse files
jas-singhmkendall07
authored andcommitted
Updated docs for Index Exchange's Prebid 1.0 adapter + GDPR support (prebid#748)
1 parent 08dd7eb commit 72b9c8a

File tree

4 files changed

+291
-66
lines changed

4 files changed

+291
-66
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{: .alert.alert-info :}
2-
**Important:** DFP has a key-value key character [limit](https://support.google.com/dfp_premium/answer/1628457?hl=en#Key-values) of up to **20 characters**. Some of the keys without truncation will exceed 20 chars (To date only Index Exchange's keys need attention). Prebid.js automatically truncates the key length to 20 characters. For example, `hb_adid_indexExchange` is truncated to `hb_adid_indexExchang` (the 21st character `e` is truncated). Note that the key is case-sensitive. To get the exact key-value keys for each bidder, find them at [Bidder Params](/dev-docs/bidders.html).
2+
**Important:** DFP has a key-value key character [limit](https://support.google.com/dfp_premium/answer/1628457?hl=en#Key-values) of up to **20 characters**. Some of the keys without truncation will exceed 20 chars. Prebid.js automatically truncates the key length to 20 characters. For example, `hb_adid_longBidderName` is truncated to `hb_adid_longBidderNa` (`me` is truncated). Note that the key is case-sensitive. To get the exact key-value keys for each bidder, find them at [Bidder Params](/dev-docs/bidders.html).
33

44
{: .table .table-bordered .table-striped }
55
| Default Key | Scope | Description | Example |
66
| :---- |:---- | :---- | :---- |
77
| `hb_pb_BIDDERCODE` | Required | The price bucket. Used by the line item to target. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_pb_rubicon` = `2.10` |
8-
| `hb_adid_BIDDERCODE` | Required | The ad Id. Used by the ad server creative to render ad. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_adid_indexExchang` = `234234` |
8+
| `hb_adid_BIDDERCODE` | Required | The ad Id. Used by the ad server creative to render ad. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_adid_longBidderNa` = `234234` |
99
| `hb_size_BIDDERCODE` | Optional | This is not required for adops. Case sensitive and truncated to 20 chars. | `hb_size_appnexus` = `300x250` |
1010

adops/deals.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ Whether your Ad Ops setup [sends all bids to the ad server](/adops/send-all-bids
5858

5959
For each header bidding partner you work with, create a keyword in the format of `hb_deal_BIDDERCODE`, e.g., `hb_deal_pubmatic`. For more examples of the keyword format, see the [API Reference for `pbjs.getAdserverTargeting`]({{site.github.url}}/dev-docs/publisher-api-reference.html#module_pbjs.getAdserverTargeting).
6060

61-
Note that due to [DFP's character length limit on keys](https://support.google.com/dfp_premium/answer/1628457?hl=en#Key-values), Index Exchange's key is truncated to `hb_deal_indexExchang`.
6261
<br>
6362

6463
{: .pb-img.pb-lg-img :}
@@ -77,7 +76,7 @@ Enter all the **Inventory sizes** for your deal (or deals):
7776

7877
<br />
7978

80-
Set the **priority** to the level you prefer.
79+
Set the **priority** to the level you prefer.
8180

8281
{: .pb-img.pb-lg-img :}
8382
![Inventory Sizes]({{ site.github.url }}/assets/images/demo-setup/deals/deal-priority.png)
@@ -101,7 +100,7 @@ Then you'll need to target the **inventory** that you want to this deal to run o
101100

102101
There are two ways to target deal IDs using *Key-values* targeting:
103102

104-
1. If you would like the deals to have the same priority and target the same inventory, you can include multiple deal IDs (as shown below).
103+
1. If you would like the deals to have the same priority and target the same inventory, you can include multiple deal IDs (as shown below).
105104
2. Otherwise, you must create a separate line item for each deal ID you want to target.
106105

107106
{: .pb-img.pb-lg-img :}

dev-docs/bidders/indexExchange.md

Lines changed: 281 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,290 @@
11
---
22
layout: bidder
3-
title: Index Exchange (Casale)
4-
description: Prebid Index Exchange (Casale) Bidder Adaptor
5-
3+
title: Index Exchange
4+
description: Prebid Index Exchange Bidder Adapter
65
top_nav_section: dev_docs
76
nav_section: reference
8-
7+
biddercode: ix
8+
biddercode_longer_than_12: false
99
hide: true
10+
prebid_1_0_supported : true
11+
gdpr_supported: true
12+
---
1013

11-
biddercode: indexExchange
14+
Overview
15+
========
1216

13-
biddercode_longer_than_12: true
14-
media_types: video
17+
```
18+
Module Name: Index Exchange Adapter
19+
Module Type: Bidder Adapter
20+
Maintainer: [email protected]
21+
```
1522

16-
---
23+
Description
24+
===========
25+
26+
This module connects publishers to Index Exchange's (IX) network of demand
27+
sources through Prebid.js. This module is GDPR compliant.
28+
29+
It is compatible with both the older ad unit format where the `sizes` and
30+
`mediaType` properties are placed at the top-level of the ad unit, and the newer
31+
format where this information is encapsulated within the `mediaTypes` object. We
32+
recommend that you use the newer format when possible as it will be better able
33+
to accommodate new feature additions.
34+
35+
If a mix of properties from both formats are present within an ad unit, the
36+
newer format's properties will take precedence.
37+
38+
Here are examples of both formats.
39+
40+
##### Older Format
41+
```javascript
42+
var adUnits = [{
43+
// ...
44+
45+
mediaType: 'banner',
46+
47+
sizes: [
48+
[300, 250],
49+
[300, 600]
50+
]
51+
52+
// ...
53+
}];
54+
```
55+
56+
##### Newer Format
57+
```javascript
58+
var adUnits = [{
59+
// ...
60+
61+
mediaTypes: {
62+
banner: {
63+
sizes: [
64+
[300, 250],
65+
[300, 600]
66+
]
67+
}
68+
}
69+
70+
// ...
71+
}];
72+
```
73+
74+
### Supported Media Types
75+
76+
| Type | Support
77+
| --- | ---
78+
| Banner | Fully supported for all IX approved sizes.
79+
| Video | Only in-stream supported.
80+
| Native | Not supported.
81+
82+
# Bid Parameters
83+
84+
Each of the IX-specific parameters provided under the `adUnits[].bids[].params`
85+
object are detailed here.
86+
87+
### Banner
88+
89+
| Key | Scope | Type | Description
90+
| --- | --- | --- | ---
91+
| siteId | Required | String | <p>An IX-specific identifier that is associated with a specific size on this ad unit. This is similar to a placement ID or an ad unit ID that some other modules have.</p><p>Examples:<ul><li>`'3723'`</li><li>`'6482'`</li><li>`'3639'`</li></ul></p>
92+
| size | Required | Number[] | <p>The single size associated with the site ID. It should be one of the sizes listed in the ad unit under `adUnits[].sizes` or `adUnits[].mediaTypes.banner.sizes`.</p><p>Examples:<ul><li>`[300, 250]`</li><li>`[300, 600]`</li><li>`[728, 90]`</li></ul></p>
93+
| bidFloor | Optional<sup>1</sup> | Number | <p>The minimum bid required to participate in an auction for this ad unit. Assuming the bid floor currency that is set has a main unit (e.g. dollars, pounds) and a sub-unit (e.g. cents, pence), the bid floor should be in decimal-point format. If the currency only has main a unit (e.g. JPY), then the bid floor should be a whole number.</p><p>Examples:<ul><li>10.26 USD => `bidFloor: 10.26`</li><li>13.41 GBP => `bidFloor: 13.41`</li><li>600 JPY => `bidFloor: 600`</li></ul></p> | N/A
94+
| bidFloorCur | Optional<sup>1</sup> | String | <p>The currency of the bid floor.</p><p>Examples:<ul><li>`'USD'`</li><li>`'GBP'`</li><li>`'JPY'`</li></ul></p>
95+
96+
<p>
97+
<sup>1</sup> <code>bidFloor</code> and <code>bidFloorCur</code> <b>must</b>
98+
both be set when a bid floor is being configured.
99+
</p>
100+
101+
Setup Guide
102+
===========
103+
104+
Follow these steps to configure and add the IX module to your Prebid.js
105+
integration.
106+
107+
The examples in this guide assume the following starting configuration:
108+
109+
```javascript
110+
var adUnits = [{
111+
code: 'banner-div-a',
112+
mediaTypes: {
113+
banner: {
114+
sizes: [
115+
[300, 250],
116+
[300, 600]
117+
]
118+
}
119+
},
120+
bids: []
121+
}];
122+
```
123+
124+
##### 1. Add IX to the appropriate ad units
125+
126+
For each size in an ad unit that IX will be bidding on, add one of the following
127+
bid objects under `adUnits[].bids`:
128+
129+
```javascript
130+
{
131+
bidder: 'ix',
132+
params: {
133+
siteId: '',
134+
size: []
135+
}
136+
}
137+
```
138+
139+
Set `params.siteId` and `params.size` in each bid object to the values provided
140+
by your IX representative.
141+
142+
**Example**
143+
```javascript
144+
var adUnits = [{
145+
code: 'banner-div-a',
146+
mediaTypes: {
147+
banner: {
148+
sizes: [
149+
[300, 250],
150+
[300, 600]
151+
]
152+
}
153+
},
154+
bids: [{
155+
bidder: 'ix',
156+
params: {
157+
siteId: '4622',
158+
size: [300, 250]
159+
}
160+
}, {
161+
bidder: 'ix',
162+
params: {
163+
siteId: '6242',
164+
size: [300, 600]
165+
}
166+
}]
167+
}];
168+
```
169+
170+
##### 2. Include `ixBidAdapter` in your build process
171+
172+
When running the build command, include `ixBidAdapter` as a module.
173+
174+
```
175+
gulp build --modules=ixBidAdapter,fooBidAdapter,bazBidAdapter
176+
```
177+
178+
If a JSON file is being used to specify the bidder modules, add `"ixBidAdapter"`
179+
to the top-level array in that file.
180+
181+
```json
182+
[
183+
"ixBidAdapter",
184+
"fooBidAdapter",
185+
"bazBidAdapter"
186+
]
187+
```
188+
189+
And then build.
190+
191+
```
192+
gulp build --modules=bidderModules.json
193+
```
194+
195+
Setting First Party Data (FPD)
196+
==============================
197+
198+
FPD allows you to specify key-value pairs which will be passed as part of the
199+
query string to IX for use in Private Marketplace Deals which rely on query
200+
string targeting for activation. For example, if a user is viewing a
201+
news-related page, you can pass on that information by sending `category=news`.
202+
Then in the IX Private Marketplace setup screens you can create Deals which
203+
activate only on pages which contain `category=news`. Please reach out to your
204+
IX representative if you have any questions or need help setting this up.
205+
206+
To include FPD in a bid request, it must be set before `pbjs.requestBids` is
207+
called. To set it, call `pbjs.setConfig` and provide it with a map of FPD keys
208+
to values as such:
209+
210+
```javascript
211+
pbjs.setConfig({
212+
ix: {
213+
firstPartyData: {
214+
'<key name>': '<key value>',
215+
'<key name>': '<key value>',
216+
// ...
217+
}
218+
}
219+
});
220+
```
221+
222+
The values can be updated at any time by calling `pbjs.setConfig` again. The
223+
changes will be reflected in any proceeding bid requests.
224+
225+
Setting a Server Side Timeout
226+
=============================
227+
228+
Setting a server-side timeout allows you to control the max length of time the
229+
servers will wait on DSPs to respond before generating the final bid response
230+
and returning it to this module.
231+
232+
This is distinctly different from the global bidder timeout that can be set in
233+
Prebid.js in the browser.
234+
235+
To add a server-side timeout, it must be set before `pbjs.requestBids` is
236+
called. To set it, call `pbjs.setConfig` and provide it with a timeout value as
237+
such:
238+
239+
```javascript
240+
pbjs.setConfig({
241+
ix: {
242+
timeout: 500
243+
}
244+
});
245+
```
246+
247+
The timeout value must be a positive whole number in milliseconds.
248+
249+
Additional Information
250+
======================
251+
252+
### Bid Request Limit
253+
254+
If a single bid request to IX contains more than 20 impression requests (i.e.
255+
more than 20 objects in `bidRequest.imp`), only the first 20 will be accepted,
256+
the rest will be ignored.
257+
258+
To avoid this situation, ensure that when `pbjs.requestBid` is invoked, that the
259+
number of bid objects (i.e. `adUnits[].bids`) with `adUnits[].bids[].bidder` set
260+
to `'ix'` across all ad units that bids are being requested for does not exceed
261+
20.
262+
263+
### Time-To-Live (TTL)
264+
265+
All bids received from IX have a TTL of 60 seconds, after which time they become
266+
invalid.
267+
268+
If an invalid bid wins, and its associated ad is rendered, it will not count
269+
towards total impressions on IX's side.
270+
271+
FAQs
272+
====
273+
274+
### Why do I have to input size in `adUnits[].bids[].params` for IX when the size is already in the ad unit?
275+
276+
There are two important reasons why we require it:
277+
278+
1. An IX site ID maps to a single size, whereas an ad unit can have multiple
279+
sizes. To ensure that the right site ID is mapped to the correct size in the ad
280+
unit we require the size to be explicitly stated.
281+
282+
2. An ad unit may have sizes that IX does not support. By explicitly stating the
283+
size, you can choose not to have IX bid on certain sizes that are invalid.
284+
285+
### How do I view IX's bid request in the network?
17286

18-
### Prebid Server Note:
19-
Before configuring the Index Exchange adapter as S2S, you must reach out to the Index Exchange team for approval and setup steps.
20-
21-
#### Send All Bids Ad Server Keys:
22-
(truncated to 20 chars due to [DFP limit](https://support.google.com/dfp_premium/answer/1628457?hl=en#Key-values))
23-
24-
`hb_pb_indexExchange`
25-
`hb_adid_indexExchang`
26-
`hb_size_indexExchang`
27-
28-
#### Default Deal ID Keys:
29-
`hb_deal_indexExchang`
30-
31-
### bid params
32-
33-
{: .table .table-bordered .table-striped }
34-
| Name | Scope | Description | Example |
35-
| :--- | :---- | :---------- | :------ |
36-
| `id` | required | The placement ID | |
37-
| `siteID` | required | the site ID | |
38-
| `tier2SiteID` | optional | | |
39-
| `tier3SiteID` | optional | | |
40-
41-
### bid params: Video
42-
43-
{: .table .table-bordered .table-striped }
44-
| Name | Scope | Description | Example |
45-
| :--- | :---- | :---------- | :------ |
46-
| `video` | required | Video parameters. See [video params table](#index-video) | `{"siteID": 12345, "playerType":"HTML5", "protocols":[2,3,5,6], "maxduration":15}` |
47-
48-
<a name="index-video"></a>
49-
50-
### Video params
51-
52-
{: .table .table-bordered .table-striped }
53-
| Name | Scope | Description | Example |
54-
| :--- | :---- | :---------- | :------ |
55-
| `siteID` | required | Publisher site ID | `12345` |
56-
| `playerType` | required | String representing video player type, either HTML5 or FLASH | `"HTML5"` |
57-
| `protocols` | required | Array of integers representing VAST versions supported by the player, as defined in OpenRTB 2.3 section 5.6 | `[2, 3, 5, 6]` |
58-
| `maxduration` | required | Integer representing allowable max duration of the video ad, in seconds | `15` |
59-
| `minduration` | optional | Integer representing allowable min duration of the video ad, in seconds. Default of 0 assumed if none is specified. | `5` |
60-
| `startdelay` | optional | Defines the start of the ad, when a string is specified then generic RTB values are used, when a number is specified then is interpreted as the number of seconds into the content video at which the ad should play. Default assumed to be `preroll` if none specified | `"preroll"` |
61-
| `linearity` | optional | String representing whether video ad is linear or overlay. Defaults to `"linear"` if not defined | `"linear"` |
62-
| `mimes` | optional | Array of strings representing player supported mime types. Overrides the supported MIME types otherwise inferred by `playerType` setting. | `["video/mp4", "video/webm"]` |
63-
| `allowVPAID` | optional | Boolean defining whether player supports any version of VPAID. Which versions are supported is inferred from `playerType`. Defaults to false | `false` |
64-
| `apiList` | optional | Array of integers representing player supported VPAID versions, as defined in OpenRTB 2.3 section 5.6. Overrides versions inferred from `playerType`. | `[1, 2]` |
287+
In your browser of choice, create a new tab and open the developer tools. In
288+
developer tools, select the network tab. Then, navigate to a page where IX is
289+
setup to bid. Now, in the network tab, search for requests to
290+
`casalemedia.com/cygnus`. These are the bid requests.

0 commit comments

Comments
 (0)