From 0b94b2387f700aa33a9c8a9b56e8173cdc99a980 Mon Sep 17 00:00:00 2001 From: Catalin Ciocov Date: Mon, 22 Mar 2021 19:31:02 +0200 Subject: [PATCH 001/536] Mass module docs (#2774) * Added MASS module to docs * Add some styling * Updated MASS docs * Update mass.md Additional disclaimer * Update mass.md Co-authored-by: massadmin <58946787+massadmin@users.noreply.github.com> --- dev-docs/modules/mass.md | 86 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 dev-docs/modules/mass.md diff --git a/dev-docs/modules/mass.md b/dev-docs/modules/mass.md new file mode 100644 index 0000000000..b65efb46db --- /dev/null +++ b/dev-docs/modules/mass.md @@ -0,0 +1,86 @@ +--- +layout: page_v2 +page_type: module +title: Module - MASS +description: Enable MASS protocol for Prebid +module_code : mass +display_name : MASS +enable_download : true +sidebarType : 1 +--- + +# MASS Module +{:.no_toc} + +* TOC +{:toc} + +## Overview + +This module enables the MASS protocol for Prebid. To use it, you'll need to +work with a MASS enabled provider. + +This module scans incoming bids for the presence of a "mass" flag being set to +true in the bid meta or a publisher specified DealID pattern and uses +external resources to decypher and process the MASS:// URI found within the ad markup. +This modules is designed to work with MASS enabled Exchanges and DSP's. + +This module only loads external JavaScript resources if the publisher ad server has +selected a MASS enabled bid as a winner. + +Find out more [here](https://massplatform.net). + +{: .alert.alert-warning :} +## Disclosure + +- This module loads external JavaScript to render creatives + +## Generic Mode +- You can specify your our own renderUrl using the module configuration option. When specifying a custom renderer, quality assurance is your responsibility. + +## Integration + +Build the MASS module into the Prebid.js package with: + +``` +gulp build --modules=mass,... +``` + + +## Module Configuration + +```js +pbjs.que.push(function() { + pbjs.setConfig({ + mass: { + enabled: true, + renderUrl: 'https://cdn.massplatform.net/bootloader.js', + dealIdPattern: /^MASS/i + } + }); +}); +``` + +Parameters details: + +|Name |Type |Description |Default | +| :------------ | :------------ | :------------ |:------------ | +|enabled | Boolean |Enable/disable the module |`true` | +|renderUrl | String |The render script to use | | +|dealIdPattern | RegExp |The pattern used to identify MASS deal IDs |`/^MASS/i` | + +## Example + +To view an integration example: + +1) in your cli run: + +``` +gulp serve --modules=ixBidAdapter,mass +``` + +2) in your browser, navigate to: + +``` +http://localhost:9999/integrationExamples/mass/index.html +``` From 703868750e57e7b1c724dc8ca59d3795466d6f22 Mon Sep 17 00:00:00 2001 From: Maverick Date: Mon, 22 Mar 2021 11:32:29 -0600 Subject: [PATCH 002/536] fix akamai amp player sample, add missing links (#2779) Co-authored-by: mchacong --- dev-docs/show-video-with-a-dfp-video-tag.md | 2 +- examples/video/instream/akamai/pb-ve-amp.html | 17 +++++++++++++++-- prebid-video/video-getting-started.md | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/dev-docs/show-video-with-a-dfp-video-tag.md b/dev-docs/show-video-with-a-dfp-video-tag.md index 455e9029ae..ad6def2f2e 100644 --- a/dev-docs/show-video-with-a-dfp-video-tag.md +++ b/dev-docs/show-video-with-a-dfp-video-tag.md @@ -193,7 +193,7 @@ If you have [set up your ad server line items and creatives correctly]({{site.ba Below, find links to end-to-end "working examples" integrating Prebid.js demand with various video players: ### Using client-side adapters - ++ [Akamai AMP]({{site.github.url}}/examples/video/instream/akamai/pb-ve-amp.html) + [Brid]({{site.github.url}}/examples/video/instream/brid/pb-ve-brid.html) + [Brightcove]({{site.github.url}}/examples/video/instream/brightcove/pb-ve-brightcove.html) + [Flowplayer]({{site.github.url}}/examples/video/instream/flowplayer/pb-ve-flowplayer.html) diff --git a/examples/video/instream/akamai/pb-ve-amp.html b/examples/video/instream/akamai/pb-ve-amp.html index d16d2ce507..f5422cc232 100644 --- a/examples/video/instream/akamai/pb-ve-amp.html +++ b/examples/video/instream/akamai/pb-ve-amp.html @@ -1,7 +1,7 @@ --- layout: video_sample title: Prebid Video | Instream Example with Akamai Adaptive Media Player (AMP) -description: An example of an instream pre roll ad with AMP and Prebid.js. AMP also provides a built-in prebid plugin +description: An example of an instream pre roll ad with Akamai AMP and Prebid.js. Akamai AMP also provides a built-in prebid plugin wich simplifies and integrates the common prebid.js bidding workflow without extra efforts. videoType: pb-is-amp isVideo: true @@ -98,8 +98,19 @@

Place this code in the page header.

</script> + +
@@ -139,6 +150,8 @@

Place this code in the page body.

+ +
diff --git a/prebid-video/video-getting-started.md b/prebid-video/video-getting-started.md index e9a76e3d99..508206e03e 100644 --- a/prebid-video/video-getting-started.md +++ b/prebid-video/video-getting-started.md @@ -153,7 +153,7 @@ This section contains working examples of instream and outstream video ads for v ### Using client-side adapters #### Instream - ++ [Akamai AMP]({{site.github.url}}/examples/video/instream/akamai/pb-ve-amp.html) + [Brid]({{site.github.url}}/examples/video/instream/brid/pb-ve-brid.html) + [Brightcove]({{site.github.url}}/examples/video/instream/brightcove/pb-ve-brightcove.html) + [Flowplayer]({{site.github.url}}/examples/video/instream/flowplayer/pb-ve-flowplayer.html) From 2998695e1d998b7ad2c1be3a3f6d6948c5a252a6 Mon Sep 17 00:00:00 2001 From: Nick Jacob Date: Mon, 22 Mar 2021 13:40:21 -0400 Subject: [PATCH 003/536] missing required field in bid (#2783) --- dev-docs/bidder-adaptor.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index 180590c570..68053b9e40 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -361,6 +361,7 @@ The `interpretResponse` function will be called when the browser has received th ttl: TIME_TO_LIVE, ad: CREATIVE_BODY, dealId: DEAL_ID, + mediaType: MEDIA_TYPE, meta: { advertiserDomains: [ARRAY_OF_ADVERTISER_DOMAINS], advertiserId: ADVERTISER_ID, From 5898d41c3cc6f3e914c36f7cf6bc4de3be2820c9 Mon Sep 17 00:00:00 2001 From: IOTiagoFaria <76956619+IOTiagoFaria@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:41:06 +0000 Subject: [PATCH 004/536] Interactive Offers Bid Adapter: add md file to bidders (#2784) --- dev-docs/bidders/interactiveOffers.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dev-docs/bidders/interactiveOffers.md b/dev-docs/bidders/interactiveOffers.md index 1138f7c5bc..5279345e63 100644 --- a/dev-docs/bidders/interactiveOffers.md +++ b/dev-docs/bidders/interactiveOffers.md @@ -1,7 +1,7 @@ --- layout: bidder title: InteractiveOffers -description: Prebid InteractiveOffers.com Bidder Adaptor +description: Prebid InteractiveOffers.com Bidder Adapter pbjs: true biddercode: interactiveOffers gdpr_supported: false @@ -9,15 +9,15 @@ media_types: banner --- ### Note: -Module that connects to interactiveOffers demand sources. Param pubId is required. +Module that connects to interactiveOffers demand sources. Param pubid is required. ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|----------|----------|----------------------------------------------------------------------|-----------------------------------|-----------| -| `pubId` | required | The placement ID (site channel ID) | `4` | `integer` | -| `tmax` | optional | Max timeout for response | `150` | `integer` | +| Name | Scope | Description | Example | Type | +|---------------|----------|-------------|---------|----------| +| `pubid` | required | Publisher id | 35 | `integer` | +| `tmax` | optional | Max time in milliseconds | 250 | `integer` | Example: @@ -25,8 +25,8 @@ Example: { bidder: "interactiveOffers", params: { - pubId: 4, - tmax: 150 + pubid: 35, + tmax: 250 } } ``` From cb6f98d2ae940cf939085cc03b5da84ad67023c9 Mon Sep 17 00:00:00 2001 From: bjorn-lw <32431346+bjorn-lw@users.noreply.github.com> Date: Mon, 22 Mar 2021 18:41:31 +0100 Subject: [PATCH 005/536] Support all user ids (#2786) * Livewrapped bidder adapter * Added analytics documentation * Spelling * Added support for tcf2 and schain * video and native support * Livewrapped gvl id * Change in user id support --- dev-docs/bidders/livewrapped.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/livewrapped.md b/dev-docs/bidders/livewrapped.md index 2cb19e8464..0eb7eebe66 100644 --- a/dev-docs/bidders/livewrapped.md +++ b/dev-docs/bidders/livewrapped.md @@ -6,7 +6,7 @@ biddercode: livewrapped pbjs: true media_types: banner, video, native gdpr_supported: true -userIds: id5Id, pubCommonId +userIds: all schain_supported: true gvl_id: 919 --- From 5eec0485f0750cd46f8ee6b570125aff4856d41e Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 22 Mar 2021 17:14:34 -0400 Subject: [PATCH 006/536] clarifying native assets (#2792) --- dev-docs/bidder-adaptor.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index 68053b9e40..2b2ca96d34 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -830,7 +830,7 @@ In order for your bidder to support the native media type: 1. Your (server-side) bidder needs to return a response that contains native assets. 2. Your (client-side) bidder adapter needs to unpack the server's response into a Prebid-compatible bid response populated with the required native assets. -3. Your bidder adapter must be capable of ingesting the required and optional native assets specified on the `adUnit.mediaTypes.native` object, as described in [Show Native Ads]({{site.baseurl}}/dev-docs/show-native-ads.html). +3. Your bidder adapter must be capable of ingesting the required and optional native assets specified on the `adUnit.mediaTypes.native` object, as described in [Show Native Ads](/prebid/native-implementation.html). The adapter code samples below fulfills requirement #2, unpacking the server's reponse and: @@ -855,14 +855,15 @@ else if (rtbBid.rtb.native) { icon: nativeResponse.icon && nativeResponse.icon.url, clickUrl: nativeResponse.link.url, impressionTrackers: nativeResponse.impression_trackers, + ... many other possible native assets ... }; } {% endhighlight %} -As of the [0.34.1 release](https://github.com/prebid/Prebid.js/releases/tag/0.34.1), a bidder may optionally return the height and width of a native `image` or `icon` asset. +The full list of assets your bidder can set are defined in [Table 3: Native Assets Recognized by Prebid.js](/prebid/native-implementation.html). All assets can be returned as strings, or images can be returned as objects with attributes `url`, `height`, and `width`. -If your bidder does return the image size, you can expose the image dimensions on the bid response object as shown below. +Here's an example of returning image sizes: ```javascript /* Does the bidder respond with native assets? */ From 56dd57fd857153ca240f90f765feb4216663a49e Mon Sep 17 00:00:00 2001 From: bretg Date: Thu, 25 Mar 2021 10:23:17 -0400 Subject: [PATCH 007/536] multibid, host registry (#2801) --- faq/prebid-server-faq.md | 16 +++ .../openrtb2/pbs-endpoint-auction.md | 98 +++++++++++++++++++ prebid-server/features/pbs-feature-idx.md | 1 + prebid-server/hosting/pbs-hosting.md | 23 +++++ 4 files changed, 138 insertions(+) diff --git a/faq/prebid-server-faq.md b/faq/prebid-server-faq.md index 47d4df962e..89337196f5 100644 --- a/faq/prebid-server-faq.md +++ b/faq/prebid-server-faq.md @@ -130,6 +130,9 @@ are multiple bids from a given bidder for a given imp[], here how it chooses: - highest CPM - random tiebreaker +Note: if the request allows [multibid](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#multibid-pbs-java-only), then several bid responses from the same bidder may +be returned to the client. + **Decision 2**: which bidder for each imp[] object gets the hb_pb, hb_size, and hb_bidder targeting values This is only done when ext.prebid.targeting is specified. @@ -142,3 +145,16 @@ first decision: - highest CPM - random tiebreaker +## Can I host Prebid Server for myself or others? + +Yes. See the [PBS Hosting](/prebid-server/hosting/pbs-hosting.html) page to get started. + +You don't need to be a [Prebid.org member](https://prebid.org/membership/), but joining would help in case you need extra +support with any technical hurdles. + +## I'm hosting Prebid Server - how can I get in the loop? + +The best way would be to [join Prebid.org](https://prebid.org/membership/) and +participate in the [Prebid Server PMC](https://prebid.org/project-management-committees/). + +Another way is to [register for our host company mailing list](/prebid-server/hosting/pbs-hosting.html#optional-registration). diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md index 2970c7e481..8589fede33 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md @@ -834,6 +834,104 @@ Prebid Server enforces the data permissioning. So before passing the values to t Each adapter must be coded to read the values from these locations and pass it to their endpoints appropriately. +#### MultiBid (PBS-Java only) + +By default, Prebid Server returns one bid from each bidder for each impression object. +With the 'multibid' feature, the request can specify that certain bidders are allowed to +supply more than one bid response. + +The extension is `ext.prebid.multibid`: + +``` +{ + ... + ext: { + prebid: { + multibid: [{ + bidder: "bidderA", + maxbids: 2, + targetbiddercodeprefix: "bidA" + },{ + bidder: "bidderB", + maxbids: 3, + targetbiddercodeprefix: "bidB" + },{ + bidders: ["bidderC", "bidderD"] + maxbids: 2 + }] + } + } +} +``` + +{: .table .table-bordered .table-striped } +| Attribute | Required? | Description | Example | Type | +| --- | --- | --- | --- | --- | +| bidder | Yes, unless bidders is specified | bidder adapter code | 'bidderA' | string | +| bidders | Yes, unless bidder is specified | bidder adapter codes | ['bidderB','bidderC'] | array of strings | +| maxbids | Yes | The number of bids the named bidder(s) can supply. Max of 9. | 2 | integer | +| targetbiddercodeprefix | No | An alternate (short) bidder code to send to the ad server. A number will be appended, starting from 2, e.g. hb_pb_PREFIX2. If not provided, the extra bids will not go to the ad server. | `'bidA'` | string | + +So for example, if a request came in with the above ext.prebid.multibid, and bidderA supplies 3 bids, the system would limit them to the first 2 and the output would look like: + +``` +{ +seatbid: [{ + seat: "bidderA", + bid: [{ + id: "bid1", + impid: "imp1", + price: 1.04, + ext: { + prebid: { + targeting: { + hb_pb_bidderA: 1.00 + }, + targetbiddercode: "bidderA" + } + } + ... + },{ + id: "bid2", + impid: "imp1", // same imp as above + price:0.8, + ext: { + prebid: { + targeting: { + hb_pb_bidA2: 0.50 + }, + targetbiddercode: "bidA2" + } + } + ... + }] +},{ + seat: "bidderC", + bid: [{ + id: "bid1", + impid: "imp1", + price: 1.17, + ext: { + prebid: { + targeting: { + hb_pb_bidderC: 1.10 + }, + targetbiddercode: "bidderC" + } + } + + ... + },{ + id: "bid2", + impid: "imp1", + // no targeting on extra bids for this bidder because + // targetbiddercodepattern wasn't specified in ext.prebid.multibid + ... + },{ +}] +} +``` + #### Custom Targeting (PBS-Java only) An OpenRTB extension, whether in the the original request or the [stored-request](/prebid-server/features/pbs-storedreqs.html), can customize the ad server targeting generated by PBS. diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md index 37e4f71c87..255c0e21ec 100644 --- a/prebid-server/features/pbs-feature-idx.md +++ b/prebid-server/features/pbs-feature-idx.md @@ -58,6 +58,7 @@ title: Prebid Server | Features | [Events](https://docs.google.com/document/d/1ry0X4C2EV-R0pMrm1IQk9BstxaT395UCl3KKqTGa5c8/edit#heading=h.7w5yevygp2gz) | Events | Ability to process the /event endpoint, place /event URLs in the OpenRTB response, and place /event URLs in VAST XML. | | | | Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | | Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | +| Auction | [MultiBid](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#multibid-pbs-java-only) | Allow named bidders to supply more than one response. | | | | Analytics | Analytics module support | Allows developers to plug in a [custom analytics adapter](https://github.com/prebid/prebid-server/blob/master/docs/developers/add-new-analytics-module.md). | | | | Bid Response Validation | Validate secure markup | PBS can configurably reject bid responses that don't supply a secure creative when in a secure context. | | | | Bid Response Validation | Validate bid sizes | PBS can configurably reject bid responses with sizes that are bigger than the request dimensions. | | | diff --git a/prebid-server/hosting/pbs-hosting.md b/prebid-server/hosting/pbs-hosting.md index 89beba33db..96402bd87c 100644 --- a/prebid-server/hosting/pbs-hosting.md +++ b/prebid-server/hosting/pbs-hosting.md @@ -6,6 +6,10 @@ title: Prebid Server | Hosting --- # Hosting a Prebid Server Cluster +{:.no_toc} + +* TOC +{:toc} Spinning up a self-hosted cluster of Prebid Servers requires some up-front-planning. The components that will be needed are highlighted in this hardware @@ -73,6 +77,25 @@ The process for actually installing and configuring the software will differ for the Go and Java versions of the software. See the relevant section as a next step. +## Optional Registration + +Prebid does not track who downloads Prebid Server, but sometimes we make +announcements (bugs, features) and want to get feedback on proposals. You can get on +this mailing list by emailing prebid-server@prebid.org. It's low volume +Here's the information we're asking for: + +Required to get on the list: +- A group email address to place on the list. No individual addresses please. + +Optional: +- Which version of Prebid Server are you running: PBS-Go or PBS-Java? +- A host URL so we can occasionally check what versions people are running. +- Are there any features you'd like to see in Prebid Server? + +Even though this is not information about individuals, this information falls under the +[Prebid website privacy policy](/privacy.html). You can remove your company from the +email list at any time just by emailing us again at prebid-server@prebid.org. + ## Further Reading - [Prebid Server Database](/prebid-server/hosting/pbs-database.html) From f04696f114269b673faf07f9c04df2a43f8b361e Mon Sep 17 00:00:00 2001 From: bretg Date: Thu, 25 Mar 2021 10:59:44 -0400 Subject: [PATCH 008/536] adding optimon analytics (#2755) --- dev-docs/analytics/optimon.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 dev-docs/analytics/optimon.md diff --git a/dev-docs/analytics/optimon.md b/dev-docs/analytics/optimon.md new file mode 100644 index 0000000000..5b0503e79d --- /dev/null +++ b/dev-docs/analytics/optimon.md @@ -0,0 +1,11 @@ +--- +layout: analytics +title: Optimon +description: Optimon Analytics Adapter +modulecode: optimon +--- + +#### Registration + +Please visit [optimon.io](https://optimon.io/?utm_source=prebid-org&utm_medium=analytics-adapters-list) for more information. + From 0b12f08affd2a9229bf8369487d237221339d1e9 Mon Sep 17 00:00:00 2001 From: guiann Date: Thu, 25 Mar 2021 16:00:57 +0100 Subject: [PATCH 009/536] Add Video mediatype on AdYouLike bidder adapter (#2759) * set usp supported for adyoulike bidder * add native in mediatypes * fix pbjs field * add prebid server compatibility on AdYouLike bidder * add video compatibility on AdYoulike bidder --- dev-docs/bidders/adyoulike.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/adyoulike.md b/dev-docs/bidders/adyoulike.md index 8a09cdbedc..cdfc18ccca 100644 --- a/dev-docs/bidders/adyoulike.md +++ b/dev-docs/bidders/adyoulike.md @@ -4,7 +4,7 @@ title: Adyoulike description: Prebid Adyoulike Bidder Adaptor pbjs: true pbs: true -media_types: banner, native +media_types: banner, video, native biddercode: adyoulike gdpr_supported: true usp_supported: true From 862156e8b7c645fcb1ed2551cac22f1204bee8af Mon Sep 17 00:00:00 2001 From: h12media <65672347+h12media@users.noreply.github.com> Date: Thu, 25 Mar 2021 18:05:21 +0300 Subject: [PATCH 010/536] Update module H12 Media (#2781) --- dev-docs/bidders/h12media.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/dev-docs/bidders/h12media.md b/dev-docs/bidders/h12media.md index 3897b21f95..46531323fd 100644 --- a/dev-docs/bidders/h12media.md +++ b/dev-docs/bidders/h12media.md @@ -6,18 +6,22 @@ pbjs: true biddercode: h12media media_types: banner gdpr_supported: true +usp_supported: true +userIds: all --- ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|------------------------|-----------------------------|----------| -| `pubid` | required | Publisher ID | `123` | `string` | -| `placementid` | optional | Publisher placement ID | `321` | `string` | -| `size` | optional | Creative size | `'300x250'` | `string` | -| `endpointdom` | optional | Custom Endpoint URL | `https://h12-media.com/bid` | `string` | +| Name | Scope | Description | Example | Type | +|------------------|----------|------------------------|-----------------------------|----------| +| `pubid` | required | Publisher ID | `123` | `string` | +| `pubsubid` | optional | Publisher Sub ID | `123` | `string` | +| `pubcontainerid` | optional | Custom container ID | `123` | `string` | +| `placementid` | optional | Publisher placement ID | `321` | `string` | +| `size` | optional | Creative size | `'300x250'` | `string` | +| `endpointdom` | optional | Custom Endpoint URL | `https://h12-media.com/bid` | `string` | Example: From ecc1b91532dfdcc5c398f037f76dc357c262154f Mon Sep 17 00:00:00 2001 From: el-chuck Date: Thu, 25 Mar 2021 16:08:42 +0100 Subject: [PATCH 011/536] Smaato: add pbs_app_supported flag (#2793) Co-authored-by: Bernhard Pickenbrock --- dev-docs/bidders/smaato.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/smaato.md b/dev-docs/bidders/smaato.md index ce460696ba..9db736519e 100644 --- a/dev-docs/bidders/smaato.md +++ b/dev-docs/bidders/smaato.md @@ -10,6 +10,7 @@ media_types: banner, video userIds: criteo, pubCommonId, unifiedId pbjs: true pbs: true +pbs_app_supported: true prebid_member: true --- From aa58109075280292d273acc489ba495aa1ad8089 Mon Sep 17 00:00:00 2001 From: PWyrembak Date: Thu, 25 Mar 2021 18:25:31 +0300 Subject: [PATCH 012/536] Trustx s2s support (#2797) * Add TrustX dev-doc * Update trustx.md * Update doc file for TrustX Bid Adapter to mark that adapter support gdpr * Update doc file for TrustX Bid Adapter * Update TrustX doc file * Update TrustX doc file * Update TrustX doc to support s2s --- dev-docs/bidders/trustx.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dev-docs/bidders/trustx.md b/dev-docs/bidders/trustx.md index 5a39716ddc..49e1261b91 100644 --- a/dev-docs/bidders/trustx.md +++ b/dev-docs/bidders/trustx.md @@ -1,8 +1,9 @@ --- layout: bidder title: TrustX -description: Prebid Trustx Bidder Adaptor +description: Prebid TrustX Bidder Adaptor pbjs: true +pbs: true biddercode: trustx media_types: banner, video gdpr_supported: true @@ -13,8 +14,8 @@ usp_supported: true ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|-----------| -| `uid` | required | Represents the TrustX bidder system Ad Slot ID associated with the respective div id from the site page. | `42` | `integer` | -| `priceType` | optional | Can take the values `gross` or `net`, default value is `net`. Net represents the header bid price with the TrustX header bidder margin already extracted. Gross price does contain the TrustX bidder margin within. | `'gross'` | `string` | -| `keywords` | optional | A set of key-value pairs applied to all ad slots on the page. Values can be empty. | `keywords: { topic: ['stress', 'fear'] }` | `object` | +| Name | Scope | Description | Example | Type | +|-------------|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|-----------| +| `uid` | required | Represents the TrustX bidder system Ad Slot ID associated with the respective div id from the site page. | `42` | `integer` | +| `priceType` | optional (pbjs only) | Can take the values `gross` or `net`, default value is `net`. Net represents the header bid price with the TrustX header bidder margin already extracted. Gross price does contain the TrustX bidder margin within. | `'gross'` | `string` | +| `keywords` | optional (pbjs only) | A set of key-value pairs applied to all ad slots on the page. Values can be empty. | `keywords: { topic: ['stress', 'fear'] }` | `object` | From 03fd8bd9e25fc541ef97c91242ea6f8e47ec65d5 Mon Sep 17 00:00:00 2001 From: jdwieland8282 Date: Thu, 25 Mar 2021 09:28:05 -0600 Subject: [PATCH 013/536] Update userId.md (#2798) * Update userId.md adding dev docs for uid 2 * Update download.md adding download option for uid 2 * Update userId.md updating change to module name in table --- dev-docs/modules/userId.md | 45 +++++++++++++++++++++++++++++++++++++- download.md | 3 +++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 4776ce414b..e800aa45b7 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -68,7 +68,7 @@ of sub-objects. The table below has the options that are common across ID system {: .table .table-bordered .table-striped } | Param under userSync.userIds[] | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | -| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"fabrickId"`, `"haloId"`, `"id5id"`, `identityLink`, `"idx"`, `"intentIqId"`, `"liveIntentId"`, `"lotamePanoramaId"`, `"merkleId"`, `"netId"`, `"novatiqId"`, `"parrableId"`, `"quantcastId"`, `"pubCommonId"`, `"pubProvidedId"`, `"sharedId"`, `"tapadId"`, `"unifiedId"`, `"verizonMediaId"`, `"zeotapIdPlus"` | `"unifiedId"` | +| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"fabrickId"`, `"haloId"`, `"id5id"`, `identityLink`, `"idx"`, `"intentIqId"`, `"liveIntentId"`, `"lotamePanoramaId"`, `"merkleId"`, `"netId"`, `"novatiqId"`, `"parrableId"`, `"quantcastId"`, `"pubCommonId"`, `"pubProvidedId"`, `"sharedId"`, `"tapadId"`, `"unifiedId"`,`"uid2"`, `"verizonMediaId"`, `"zeotapIdPlus"` | `"unifiedId"` | params | Based on User ID sub-module | Object | | | | bidders | Optional | Array of Strings | An array of bidder codes to which this user ID may be sent. | `['bidderA', 'bidderB']` | | storage | Optional | Object | The publisher can specify some kind of local storage in which to store the results of the call to get the user ID. This can be either cookie or HTML5 storage. This is not needed when `value` is specified or the ID system is managing its own storage | | @@ -1342,6 +1342,49 @@ pbjs.setConfig({ }); {% endhighlight %} +### Unified ID 2.0 + +Unified ID 2 is an email based id solution that is owned and operated by the prebid community. Unified ID 2, relies on user consent before an id can be added to the bid stream. Consent can be gathered by SSO providers who have integrated against the UID 2 framework, or Publishers own login & consent mechaninism. + +Add it to your Prebid.js package with: + +{: .alert.alert-info :} +gulp build --modules=uid2IdSystem + +#### Unified ID Registration + +You can set up Unified ID 2 in one of these ways: + +- Include the module to your pb.js wrapper, no registration is required +- Utilize a [managed services](https://prebid.org/product-suite/managed-services/) company who can do this for you. + +Each publisher’s privacy policy should take UnifiedId 2 into account + +#### Unified ID 2 Configuration + +{: .table .table-bordered .table-striped } +The below parameters apply only to the UID 2.0 User ID Module integration. + +| Param under userSync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | ID value for the UID20 module - `"uid2"` | `"uid2"` | +| value | Optional | Object | Used only if the page has a separate mechanism for storing the UID 2.O ID. The value is an object containing the values to be sent to the adapters. In this scenario, no URL is called and nothing is added to local storage | `{"uid2": { "id": "eb33b0cb-8d35-4722-b9c0-1a31d4064888"}}` | + +#### Unified ID 2 Example + +Publisher has a integrated with an SSO provider that sets a cookie called __uid2_advertising_token when user consent is granted. + +{% highlight javascript %} +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'uid2' + }] + } +}); +{% endhighlight %} + + ### Verizon Media ConnectID Verizon Media ConnectID is a person based ID and does not depend on 3rd party cookies. It enables ad tech platforms to recognize and match users consistently across the open web. Built on top of Verizon Media’s robust and proprietary ID Graph it delivers a higher find rate of audiences on publishers’ sites user targeting that respects privacy. diff --git a/download.md b/download.md index 1b82875042..c9683a5669 100644 --- a/download.md +++ b/download.md @@ -275,6 +275,9 @@ Prebid.js is open source software that is offered for free as a convenience. Whi
+ +
+
From b87f94eab8be9cb0b13ec8a3d34a02066d1cb5b6 Mon Sep 17 00:00:00 2001 From: bretg Date: Thu, 25 Mar 2021 13:32:05 -0400 Subject: [PATCH 014/536] PBS features: eidsperms, account-level cookie-sync (#2802) --- .../openrtb2/pbs-endpoint-auction.md | 28 +++++++++++++++++++ prebid-server/features/pbs-feature-idx.md | 2 ++ 2 files changed, 30 insertions(+) diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md index 8589fede33..27a2497af7 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md @@ -648,6 +648,34 @@ Prebid Server adapters can support the [Prebid.js User ID modules](http://prebid } ``` +#### EID Permissions + +Publishers can constrain which bidders receive which user.ext.eids entries. See the [Prebid.js user ID permissions](/dev-docs/modules/userId.html#permissions) reference for background. + +``` +{ + ext: { + prebid: { + data: { + eidpermissions: [ // prebid server will use this to filter user.ext.eids + {"source": "sharedid.org", "bidders": ["*"]}, // * is the default + {"source": "neustar.biz", "bidders": ["bidderB"]}, + {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} + ] + } + } + } +} +``` + +ext.prebid.data.eidpermissions is an array of objects that can contain these attributes: + +{: .table .table-bordered .table-striped } +| Attribute | Required? | Description | Example | Type | +| --- | --- | --- | --- | --- | +| source | Yes | Which user.ext.eids.source is receiving the permissions | "sharedid.org" | string | +| bidders | Yes | Which bidders are allowed to receive the named eid source | ["bidderA", "bidderC"] | array of strings | + #### Rewarded Video (PBS-Java only) Rewarded video is a way to incentivize users to watch ads by giving them 'points' for viewing an ad. A Prebid Server diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md index 255c0e21ec..228932011c 100644 --- a/prebid-server/features/pbs-feature-idx.md +++ b/prebid-server/features/pbs-feature-idx.md @@ -55,6 +55,8 @@ title: Prebid Server | Features | Aliases | [GVL ID support](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-alias-gvl-ids-pbs-java-only) | Define the IAB GVL ID for an aliased biddercode. | | | | [User ID Sync](/prebid-server/developers/pbs-cookie-sync.html) | Core | Implements the /cookie_sync and /setuid endpoints. | | | | User ID Sync | Cooperative sync | Does a pixel sync with more than just the bidders on the page. | | | +| User ID Sync | Account override | Allows accounts to override the cooperative sync feature and bidder limits. | | | +| User ID | [EID Permissions](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#eid-permissions) | The Publisher can define which bidders receive which extended user IDs. | | | | [Events](https://docs.google.com/document/d/1ry0X4C2EV-R0pMrm1IQk9BstxaT395UCl3KKqTGa5c8/edit#heading=h.7w5yevygp2gz) | Events | Ability to process the /event endpoint, place /event URLs in the OpenRTB response, and place /event URLs in VAST XML. | | | | Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | | Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | From 824558c9f5ccdef53a6c2f428c83febf3df8a2b9 Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 29 Mar 2021 12:42:30 -0400 Subject: [PATCH 015/536] updated bidder name rules (#2809) --- dev-docs/bidder-adaptor.md | 6 ++++++ prebid-server/developers/add-new-bidder-go.md | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index 2b2ca96d34..7255130505 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -163,6 +163,12 @@ If you're the type that likes to skip to the answer instead of going through a t The new code will reside under the `modules` directory with the name of the bidder suffixed by 'BidAdapter', e.g., `exampleBidAdapter.js`. +Here are some guidelines for choosing a bidder code: +- The bidder code must be lower case alphanumeric. The only special character allowed is underscore. +- The bidder code must be unique - make sure none of the other bid adapters is using the same code. +- The bidder code should be unique for the first 6 characters - this consideration helps with generating unique targeting keys for use by some ad exchanges, such as Google Ad Manager. +- There are several reserved words that cannot be used as bidder names: all, context, data, general, prebid, and skadn. + Compared to previous versions of Prebid, the new `BaseAdapter` model saves the adapter from having to make the AJAX call and provides consistency in how adapters are structured. Instead of a single entry point, the `BaseAdapter` approach defines the following entry points: * `isBidRequestValid` - Verify the the `AdUnits.bids`, respond with `true` (valid) or `false` (invalid). diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md index 76b49ecae8..40b99825d0 100644 --- a/prebid-server/developers/add-new-bidder-go.md +++ b/prebid-server/developers/add-new-bidder-go.md @@ -29,7 +29,7 @@ An OpenRTB 2.5 Bid Request contains one or more Impressions, each representing a ### Choose A Name -You will need to choose a unique name for your bid adapter. Names should be written in lower case and may not contain special characters or emoji. If you already have a Prebid.js bid adapter, we encourage you to use the same name with the same bidder parameters. You may not name your adapter `all`, `context`, `general`, `prebid`, or `skadn` as those have special meaning in various contexts. Existing bid adapter names are [maintained here](https://github.com/prebid/prebid-server/blob/master/openrtb_ext/bidders.go#L37). +You will need to choose a unique name for your bid adapter. Names should be written in lower case and may not contain special characters or emoji. If you already have a Prebid.js bid adapter, we encourage you to use the same name with the same bidder parameters. You may not name your adapter `all`, `context`, `data`, `general`, `prebid`, or `skadn` as those have special meaning in various contexts. Existing bid adapter names are [maintained here](https://github.com/prebid/prebid-server/blob/master/openrtb_ext/bidders.go#L37). We ask that the first 6 letters of the name you choose be unique among the existing bid adapters. This consideration helps with generating targeting keys for use by some ad exchanges, such as Google Ad Manager. There's no need to manually check, as this constraint is enforced by the [`TestBidderUniquenessGatekeeping`](https://github.com/prebid/prebid-server/blob/master/openrtb_ext/bidders_test.go#L61) test. From 5322aa92ee870f77d8245e1f49a47b5bd01d9597 Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 29 Mar 2021 13:37:00 -0400 Subject: [PATCH 016/536] highlighting PBJS cookie setting (#2810) --- cookies.md | 2 +- prebid/prebidjs.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cookies.md b/cookies.md index 8895f73b0f..33fa7dbdde 100644 --- a/cookies.md +++ b/cookies.md @@ -7,7 +7,7 @@ sidebarType: 0 # Cookie Declaration -Prebid.org may store or retrieve information on your browser in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. However, blocking cookies may impact your experience of the site and the services we are able to offer. +The docs.prebid.org website may store or retrieve information on your browser in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. However, blocking cookies may impact your experience of the site and the services we are able to offer. Cookie Settings diff --git a/prebid/prebidjs.md b/prebid/prebidjs.md index 179d0278a8..224260da91 100644 --- a/prebid/prebidjs.md +++ b/prebid/prebidjs.md @@ -58,6 +58,14 @@ in the Core that not every publisher needs. Example modules: + Server-to-server testing (the [s2sTest]({{site.baseurl}}/dev-docs/modules/s2sTesting.html) module) + ... others +## Cookies and Local Storage + +On behalf of publishers or third-parties, Prebid.js may set cookies or local storage in your browser. These are the first party cookies it can set on behalf of publishers, meaning that consent is not checked: +- prebid.cookieTest - used to verify whether other cookies should be set. +- _pbjs_userid_consent_data - used to make consent data conveniently available through various modules. + +All other cookies and local storage (including those set by Prebid.org-owned modules like [SharedId](/dev-docs/modules/userId.html#shared-id-user-id-submodule)) are subject to privacy regulations such as GDPR. + ## Further Reading + [Getting Started With Prebid.js](/overview/getting-started.html) From 0380c8550567099eb437838b4cfd41d00c31013b Mon Sep 17 00:00:00 2001 From: MartianTribe Date: Mon, 29 Mar 2021 14:36:48 -0400 Subject: [PATCH 017/536] Delete publisher-api-reference-old.md File no longer needed. --- dev-docs/publisher-api-reference-old.md | 1871 ----------------------- 1 file changed, 1871 deletions(-) delete mode 100644 dev-docs/publisher-api-reference-old.md diff --git a/dev-docs/publisher-api-reference-old.md b/dev-docs/publisher-api-reference-old.md deleted file mode 100644 index b8fb9acb37..0000000000 --- a/dev-docs/publisher-api-reference-old.md +++ /dev/null @@ -1,1871 +0,0 @@ ---- -layout: page_v2 -title: Publisher API Reference - DEPRECATED -description: Publisher API Reference for Prebid.js Header Bidding - DEPRECATED -pid: 10 -sidebarType: 1 ---- - -
- -# Publisher API Reference - DEPRECATED - -This page has documentation for the pre-1.0 public API methods of Prebid.js. These versions are not supported and this documentation is not being updated. - -{: .alert.alert-danger :} -Warning: do not use this API reference for new Prebid.js implementations. This document is kept for users on old (Pre-1.0) versions of Prebid.js who need to maintain their pages. - - - -## pbjs - -* [pbjs](#module_pbjs) - - * [.getAdserverTargeting()](#module_pbjs.getAdserverTargeting) - * [.getAdserverTargetingForAdUnitCode([adUnitCode])](#module_pbjs.getAdserverTargetingForAdUnitCode) - * [.getBidResponses()](#module_pbjs.getBidResponses) - * [.getBidResponsesForAdUnitCode(adUnitCode)](#module_pbjs.getBidResponsesForAdUnitCode) - * [.getHighestCpmBids([adUnitCode])](#module_pbjs.getHighestCpmBids) - * [.getAllWinningBids()](#module_pbjs.getAllWinningBids) - * [.getAllPrebidWinningBids()](#module_pbjs.getAllPrebidWinningBids) - * [.setTargetingForGPTAsync([codeArr])](#module_pbjs.setTargetingForGPTAsync) - * [.setTargetingForAst()](#module_pbjs.setTargetingForAst) - * [.allBidsAvailable()](#module_pbjs.allBidsAvailable) Deprecated; will be removed in 1.0 - * [.enableSendAllBids()](#module_pbjs.enableSendAllBids) Deprecated; will be removed in 1.0 - * [.setPriceGranularity(granularity)](#module_pbjs.setPriceGranularity) Deprecated; will be removed in 1.0 - * [.renderAd(doc, id)](#module_pbjs.renderAd) - * [.removeAdUnit(adUnitCode)](#module_pbjs.removeAdUnit) - * [.requestBids(requestObj)](#module_pbjs.requestBids) - * [.addAdUnits(Array\|Object)](#module_pbjs.addAdUnits) - * [.addBidResponse(adUnitCode, bid)](#module_pbjs.addBidResponse) Deprecated; will be removed in 1.0 - * [.bidderSettings](#module_pbjs.bidderSettings) - * [.addCallback(event, func)](#module_pbjs.addCallback) Deprecated; will be removed in 1.0 - * [.removeCallback(cbId)](#module_pbjs.removeCallback) Deprecated; will be removed in 1.0 - * [.buildMasterVideoTagFromAdserverTag(adserverTag, options)](#module_pbjs.buildMasterVideoTagFromAdserverTag) Deprecated; will be removed in 1.0 - * [.setBidderSequence(order)](#module_pbjs.setBidderSequence) Deprecated; will be removed in 1.0 - * [.onEvent(event, handler, id)](#module_pbjs.onEvent) - * [.offEvent(event, handler, id)](#module_pbjs.onEvent) - * [.enableAnalytics(config)](#module_pbjs.enableAnalytics) - * [.aliasBidder(adapterName, aliasedName)](#module_pbjs.aliasBidder) - * [.setConfig(options)](#module_pbjs.setConfig) - * [.getConfig([string])](#module_pbjs.getConfig) - * [.adServers.dfp.buildVideoUrl(options)](#module_pbjs.adServers.dfp.buildVideoUrl) - - - -### pbjs.getAdserverTargeting() ⇒ `object` - -Returns all ad server targeting for all ad units. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent. - -The targeting keys can be configured in [ad server targeting](#module_pbjs.bidderSettings). - -When [deals are enabled]({{site.baseurl}}/adops/deals.html), the object returned by this method may include a field `hb_deal_BIDDERCODE`, where `BIDDERCODE` is replaced by the name of the bidder, e.g., AppNexus, Rubicon, etc. - -**Kind**: static method of [pbjs](#module_pbjs) - -**Returns**: `object` - Map of adUnitCodes and targeting values [] - -**Returned Object Example:** - -{% highlight js %} -{ - "/9968336/header-bid-tag-0": { - "hb_bidder": "rubicon", - "hb_adid": "13f44b0d3c", - "hb_pb": "1.50" - }, - "/9968336/header-bid-tag-1": { - "hb_bidder": "openx", - "hb_adid": "147ac541a", - "hb_pb": "1.00" - }, - "/9968336/header-bid-tag-2": { - "hb_bidder": "appnexus", - "hb_adid": "147ac541a", - "hb_pb": "2.50", - "hb_deal_appnexus": "ABC_123" - } -} -{% endhighlight %} - -
- - - -### pbjs.getAdserverTargetingForAdUnitCode([adunitCode]) ⇒ `object` - -This function returns the query string targeting parameters available at this moment for a given ad unit. For full documentation see function [pbjs.getAdserverTargeting()](#module_pbjs.getAdserverTargeting). - -**Kind**: static method of [pbjs](#module_pbjs) - -**Returns**: `object` - returnObj return bids - -**Request Params:** - -{: .table .table-bordered .table-striped } -| Param | Type | Description | -| --- | --- | --- | -| [adunitCode] | `string` | adUnitCode to get the bid responses for | - -**Returned Object Example:** - -{% highlight js %} -{ - "hb_bidder": "rubicon", - "hb_adid": "13f44b0d3c", - "hb_pb": "0.50" -} -{% endhighlight %} - -
- - - -### pbjs.getBidResponses() ⇒ `object` - -This function returns the bid responses at the given moment. - -**Kind**: static method of [pbjs](#module_pbjs). - -**Returns**: `object` - map | object that contains the bidResponses. - -**Returned Object Params**: - -{: .table .table-bordered .table-striped } -| Param | Type | Description | | -|---------------------+---------+---------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------| -| `bidder` | String | The bidder code. Used by ad server's line items to identify bidders | `rubicon` | -| `adId` | String | The unique identifier of a bid creative. It's used by the line item's creative as in [this example]({{site.github.url}}/adops/send-all-bids-adops.html#step-3-add-a-creative). | `123` | -| `width` | Integer | The width of the returned creative size. | 300 | -| `height` | Integer | The height of the returned creative size. | 250 | -| `cpm` | Float | The exact bid price from the bidder | 1.59 | -| `requestTimestamp` | Integer | The time stamp when the bid request is sent out in milliseconds | 1444844944106 | -| `responseTimestamp` | Integer | The time stamp when the bid response is received in milliseconds | 1444844944185 | -| `timeToRespond` | Integer | The amount of time for the bidder to respond with the bid | 79 | -| `adUnitCode` | String | adUnitCode to get the bid responses for | "/9968336/header-bid-tag-0" | -| `statusMessage` | String | The bid's status message | "Bid returned empty or error response" or "Bid available" | -| `dealId` | String | (Optional) If the bid is [associated with a Deal]({{site.baseurl}}/adops/deals.html), this field contains the deal ID. | "ABC_123" | - -
- -
- -
-
- - -{% highlight js %} -{ - "/9968336/header-bid-tag-0": { - "bids": [ - { - "bidderCode": "appnexus", - "width": 300, - "height": 250, - "statusMessage": "Bid available", - "adId": "7a53a9d3", - "creative_id": 29681110, - "cpm": 0.5, - "adUrl": "http://nym1.ib.adnxs.com/ab?e=wqT_3QLzBKBqAgAAAgDWAAUIkav6sAUQucfc0v-nzQcYj…r=http%3A%2F%2Flocal%3A4000%2Fexamples%2Fpbjs_partial_refresh_example.html", - "requestTimestamp": 1444844944095, - "responseTimestamp": 1444844944180, - "timeToRespond": 85, - "adUnitCode": "/19968336/header-bid-tag-0", - "bidder": "appnexus", - "usesGenericKeys": true, - "size": "300x250", - "adserverTargeting": { - "hb_bidder": "appnexus", - "hb_adid": "7a53a9d3", - "hb_pb": "0.50" - } - },{ - "bidderCode": "pubmatic", - "width": "300", - "height": "250", - "statusMessage": "Bid available", - "adId": "1139e34e14", - "adSlot": "39620189@300x250", - "cpm": 1, - "ad": " ", - "adUrl": "http://aktrack.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId…local%3A4000%2Fexamples%2Fpbjs_partial_refresh_example.html&lpu=hotels.com", - "dealId": "", - "requestTimestamp": 1444844944105, - "responseTimestamp": 1444844944354, - "timeToRespond": 249, - "adUnitCode": "/19968336/header-bid-tag-0", - "bidder": "pubmatic", - "usesGenericKeys": true, - "size": "300x250", - "adserverTargeting": { - "hb_bidder": "pubmatic", - "hb_adid": "1139e34e14", - "hb_pb": "1.00" - } - }, - { - "bidderCode": "rubicon", - "width": "300", - "height": "250", - "statusMessage": "Bid available", - "adId": "130d3b0d9b", - "cpm": 0.795995, - "ad": "", - "ad_id": "3161645", - "sizeId": "15", - "requestTimestamp": 1444844944116, - "responseTimestamp": 1444844944396, - "timeToRespond": 280, - "adUnitCode": "/19968336/header-bid-tag-0", - "bidder": "rubicon", - "usesGenericKeys": true, - "size": "300x250", - "adserverTargeting": { - "hb_bidder": "rubicon", - "hb_adid": "130d3b0d9b", - "hb_pb": "0.50" - } - } - ] - }, - "/9968336/header-bid-tag1": { - "bids": [ - { - "bidderCode": "casale", - "width": 0, - "height": 0, - "statusMessage": "Bid returned empty or error response", - "adId": "108c0ba49d", - "requestTimestamp": 1444844944130, - "responseTimestamp": 1444844944223, - "timeToRespond": 93, - "cpm": 0, - "adUnitCode": "/19968336/header-bid-tag1", - "bidder": "casale" - }, - { - "bidderCode": "openx", - "width": "728", - "height": "90", - "statusMessage": "Bid available", - "adId": "14d7f9208f", - "ad_id": "537161420", - "cpm": 1.717, - "ad": "'); - doc.close(); - - if (doc.defaultView && doc.defaultView.frameElement) { - doc.defaultView.frameElement.width = width; - doc.defaultView.frameElement.height = height; - } - - } else { - utils.logError('Error trying to write ad. No ad for bid response id: ' + params); - } - - } else { - utils.logError('Error trying to write ad. Cannot find ad by given id : ' + params); - } - - } catch (e) { - utils.logError('Error trying to write ad Id :' + params + ' to the page:' + e.message); - } - } else { - utils.logError('Error trying to write ad Id :' + params + ' to the page. Missing document or adId'); - } - -}; - -/* -* This function will refresh the bid requests for all adUnits or for specified adUnitCode -*/ -pbjs.requestBidsForAdUnit = function(adUnitCode) { - bidmanager.clearAllBidResponses(); - pb_bidderMap = {}; - init(adUnitCode); - -}; - -// Register the bid adaptors here -registerBidAdapter(RubiconAdapter(), 'rubicon'); -registerBidAdapter(AppNexusAdapter(), 'appnexus'); -registerBidAdapter(OpenxAdapter(), 'openx'); -registerBidAdapter(PubmaticAdapter(), 'pubmatic'); -registerBidAdapter(CriteoAdapter(), 'criteo'); -registerBidAdapter(AmazonAdapter(), 'amazon'); - -init(); -},{"./adapters/amazon":1,"./adapters/appnexus.js":2,"./adapters/criteo":3,"./adapters/openx":4,"./adapters/pubmatic.js":5,"./adapters/rubicon.js":6,"./bidmanager.js":9,"./constants.json":10,"./utils.js":12}],12:[function(require,module,exports){ -var CONSTANTS = require('./constants.json'); -var objectType_function = 'function'; -var objectType_undefined = 'undefined'; -var objectType_object = 'object'; -var objectType_string = 'string'; -var objectType_number = 'number'; - -var _loggingChecked = false; - -var _lgPriceCap = 5.00; -var _mgPriceCap = 10.00; -var _hgPriceCap = 20.00; - -/* - * Substitues into a string from a given map using the token - * Usage - * var str = 'text %%REPLACE%% this text with %%SOMETHING%%'; - * var map = {}; - * map['replace'] = 'it was subbed'; - * map['something'] = 'something else'; - * console.log(replaceTokenInString(str, map, '%%')); => "text it was subbed this text with something else" - */ -exports.replaceTokenInString = function(str, map, token) { - for (var key in map) { - if (map.hasOwnProperty(key)) { - var keyString = token + key.toUpperCase() + token; - if (typeof map[key] === objectType_undefined) { - map[key] = ''; - } - var re = new RegExp(keyString, 'g'); - str = str.replace(re, map[key]); - } - } - return str; -}; - -/* utility method to get incremental integer starting from 1 */ -var getIncrementalInteger = (function() { - var count = 0; - return function() { - count++; - return count; - }; -})(); - -function _getUniqueIdentifierStr() { - return getIncrementalInteger() + Math.random().toString(16).substr(2); -} - -//generate a random string (to be used as a dynamic JSONP callback) -exports.getUniqueIdentifierStr = _getUniqueIdentifierStr; - -exports.getBidIdParamater = function(key, paramsObj) { - if (paramsObj && paramsObj[key]) { - return paramsObj[key]; - } - return ''; -}; - -exports.tryAppendQueryString = function(existingUrl, key, value) { - if (value) { - return existingUrl += key + '=' + encodeURIComponent(value) + '&'; - } - return existingUrl; -}; - -//parse a GPT-Style General Size Array or a string like "300x250" into a format -//suitable for passing to a GPT tag, may include size and/or promo sizes -exports.parseSizesInput = function(sizeObj) { - var sizeQueryString; - var parsedSizes = []; - - //if a string for now we can assume it is a single size, like "300x250" - if (typeof sizeObj === objectType_string) { - //multiple sizes will be comma-separated - var sizes = sizeObj.split(','); - //regular expression to match strigns like 300x250 - //start of line, at least 1 number, an "x" , then at least 1 number, and the then end of the line - var sizeRegex = /^(\d)+x(\d)+$/i; - if (sizes) { - for (var curSizePos in sizes) { - if (hasOwn(sizes, curSizePos) && sizes[curSizePos].match(sizeRegex)) { - parsedSizes.push(sizes[curSizePos]); - } - } - } - } else if (typeof sizeObj === objectType_object) { - var sizeArrayLength = sizeObj.length; - //don't process empty array - if (sizeArrayLength > 0) { - //if we are a 2 item array of 2 numbers, we must be a SingleSize array - if (sizeArrayLength === 2 && typeof sizeObj[0] === objectType_number && typeof sizeObj[1] === objectType_number) { - parsedSizes.push(parseGPTSingleSizeArray(sizeObj)); - } else { - //otherwise, we must be a MultiSize array - for (var i = 0; i < sizeArrayLength; i++) { - parsedSizes.push(parseGPTSingleSizeArray(sizeObj[i])); - } - - } - } - } - - - //combine string into proper querystring for impbus - var parsedSizesLength = parsedSizes.length; - if (parsedSizesLength > 0) { - //first value should be "size" - sizeQueryString = 'size=' + parsedSizes[0]; - if (parsedSizesLength > 1) { - //any subsequent values should be "promo_sizes" - sizeQueryString += '&promo_sizes='; - for (var j = 1; j < parsedSizesLength; j++) { - sizeQueryString += parsedSizes[j] += ','; - } - //remove trailing comma - if (sizeQueryString && sizeQueryString.charAt(sizeQueryString.length - 1) === ',') { - sizeQueryString = sizeQueryString.slice(0, sizeQueryString.length - 1); - } - } - } - - return sizeQueryString; - -}; - -//parse a GPT style sigle size array, (i.e [300,250]) -//into an AppNexus style string, (i.e. 300x250) -function parseGPTSingleSizeArray(singleSize) { - //if we aren't exactly 2 items in this array, it is invalid - if (typeof singleSize === objectType_object && singleSize.length === 2 && !isNaN(singleSize[0]) && !isNaN(singleSize[1])) { - return singleSize[0] + 'x' + singleSize[1]; - } - -} -exports.parseGPTSingleSizeArray = parseGPTSingleSizeArray; - -exports.getTopWindowUrl = function() { - try { - return window.top.location.href; - } catch (e) { - return window.location.href; - } -}; - -exports.logMessage = function(msg) { - - if (debugTurnedOn() && hasConsoleLogger()) { - console.log('MESSAGE: ' + msg); - } -}; -var hasConsoleLogger = function() { - return (window.console && window.console.log); -}; -exports.hasConsoleLogger = hasConsoleLogger; - -function hasConsoleLogger() { - return (window.console && window.console.log); -} - -var debugTurnedOn = function() { - if (pbjs.logging === false && _loggingChecked === false) { - pbjs.logging = !!getParameterByName(CONSTANTS.DEBUG_MODE); - _loggingChecked = true; - } - - if (pbjs.logging) { - return true; - } - return false; - -}; -exports.debugTurnedOn = debugTurnedOn; - -exports.logError = function(msg, code) { - var errCode = code || 'ERROR'; - if (debugTurnedOn() && hasConsoleLogger()) { - if(console.error){ - console.error(errCode + ': ' + msg); - } - else{ - console.log(errCode + ': ' + msg); - } - - } -}; - -exports.createInvisibleIframe = function _createInvisibleIframe() { - var f = document.createElement('iframe'); - f.id = _getUniqueIdentifierStr(); - f.height = 0; - f.width = 0; - f.border = '0px'; - f.hspace = '0'; - f.vspace = '0'; - f.marginWidth = '0'; - f.marginHeight = '0'; - f.style.border = '0'; - f.scrolling = 'no'; - f.frameBorder = '0'; - f.src = 'about:self'; - f.style = 'display:none'; - return f; -}; - -/* - * Check if a given paramater name exists in query string - * and if it does return the value - */ -var getParameterByName = function(name) { - var regexS = '[\\?&]' + name + '=([^&#]*)', - regex = new RegExp(regexS), - results = regex.exec(window.location.search); - if (results === null) { - return ''; - } - return decodeURIComponent(results[1].replace(/\+/g, ' ')); -}; - -exports.getPriceBucketString = function(cpm) { - var low = '', - med = '', - high = '', - cpmFloat = 0, - returnObj = { - low: low, - med: med, - high: high - }; - try { - cpmFloat = parseFloat(cpm); - if (cpmFloat) { - //round to closet .5 - if(cpmFloat > _lgPriceCap){ - returnObj.low = _lgPriceCap; - } - else{ - returnObj.low = (Math.floor(cpm * 2) / 2).toFixed(2); - } - - //round to closet .1 - if(cpmFloat > _mgPriceCap){ - returnObj.low = _mgPriceCap; - } - else{ - returnObj.med = (Math.floor(cpm * 10) / 10).toFixed(2); - } - - //round to closet .01 - if(cpmFloat > _lgPriceCap){ - returnObj.low = _lgPriceCap; - } - else{ - returnObj.high = (Math.floor(cpm * 100) / 100).toFixed(2); - } - - } - - } catch (e) { - this.logError('Exception parsing CPM :' + e.message); - } - return returnObj; - -}; - -},{"./constants.json":10}]},{},[11]) \ No newline at end of file diff --git a/dev-docs/plugins/bc/about-bc-prebid-plugin.md b/dev-docs/plugins/bc/about-bc-prebid-plugin.md index 1eac4e907d..d82fd4648f 100644 --- a/dev-docs/plugins/bc/about-bc-prebid-plugin.md +++ b/dev-docs/plugins/bc/about-bc-prebid-plugin.md @@ -93,13 +93,13 @@ You can think of the “plugin” as being a combination of the loader and the p #### Minified Version -- Default location: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast.min.js` +- Default location: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast.min.js` - Repository location: `https://github.com/prebid/prebid-js-plugin-brightcove.git` - after building: `./prebid-js-plugin-brightcove/dist/bc_prebid_vast.min.js` #### Non-Minified Version -- Default location: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast.js` +- Default location: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast.js` - Repository location: `https://github.com/prebid/prebid-js-plugin-brightcove.git` - after building: `./prebid-js-plugin-brightcove/dist/bc_prebid_vast.js` @@ -109,13 +109,13 @@ You can think of the “plugin” as being a combination of the loader and the p #### Minified Version -- Default location: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.min.js` +- Default location: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.min.js` - Repository location: `https://github.com/prebid/prebid-js-plugin-brightcove.git` - after building: `./prebid-js-plugin-brightcove/dist/bc_prebid_vast_plugin.min.js` #### Non-Minified Version -- Default location: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.js` +- Default location: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.js` - Repository location: `https://github.com/prebid/prebid-js-plugin-brightcove.git` - after building: `./prebid-js-plugin-brightcove/dist/bc_prebid_vast_plugin.js` @@ -133,14 +133,14 @@ This plugin includes modifications that can be found in the MailOnline repositor #### Minified Version -- Default location: `http://acdn.adnxs.com/video/plugins/mol/videojs_5.vast.vpaid.min.js` +- Default location: `https://acdn.adnxs.com/video/plugins/mol/videojs_5.vast.vpaid.min.js` - Repository location: `https://github.com/prebid/videojs-mailonline-plugin.git` - after building: `./videojs-mailonline-plugin/dist/videojs_5.vast.vpaid.min.js` #### Non-Minified Version -- Default location: `http://acdn.adnxs.com/video/plugins/mol/videojs_5.vast.vpaid.js` -- Debuggable Non-Minified Version: `http://acdn.adnxs.com/video/plugins/mol/debug/videojs_5.vast.vpaid.js` +- Default location: `https://acdn.adnxs.com/video/plugins/mol/videojs_5.vast.vpaid.js` +- Debuggable Non-Minified Version: `https://acdn.adnxs.com/video/plugins/mol/debug/videojs_5.vast.vpaid.js` - Repository location: `https://github.com/prebid/videojs-mailonline-plugin.git` - after building: `./videojs-mailonline-plugin/dist/videojs_5.vast.vpaid.js` @@ -171,14 +171,14 @@ The plugin relies on one or two CSS files to control the ad playback, depending Defines CSS styles that are used directly by the plugin. -- Default location: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_vjs.css` +- Default location: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_vjs.css` - Repository location: `./prebid-js-plugin-brightcove/src/bc_prebid_vast_vjs.css` #### MailOnline Plugin CSS Defines CSS styles that are used by the MailOnline Plugin. If you are using another renderer, you might need to include your own CSS file for that renderer. Also, if the Brightcove IMA Plugin is used to render the ad, then this CSS file is not used. -- Default location: `http://acdn.adnxs.com/video/plugins/css/mol/bc_vpaid_vast_mo.css` +- Default location: `https://acdn.adnxs.com/video/plugins/css/mol/bc_vpaid_vast_mo.css` - After building: `./videojs-mailonline-plugin/bin/bc_vpaid_vast_mo.css` ## Models Supported diff --git a/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md b/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md index f4f6b7c65b..9c88fce8f2 100644 --- a/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md +++ b/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md @@ -60,7 +60,7 @@ https://acdn.adnxs.com/prebid/not-for-prod/prebid.js **Example:** -`options.prebidPath = 'http://your-path/prebid.js'` +`options.prebidPath = 'https://your-path/prebid.js'` ### biddersSpec @@ -190,7 +190,7 @@ For example: A Brightcove Prebid Plugin : Bidder Settings JSON Converter tool has been created that you can use to convert bidder settings as they would be defined on the page into the format acceptable in Brightcove Studio. You can access this tool in one of the following ways: - directly in the GitHub repository for the plugin: [https://github.com/prebid/prebid-js-plugin-brightcove/blob/master/tools/biddersettings.html](https://github.com/prebid/prebid-js-plugin-brightcove/blob/master/tools/biddersettings.html) -- directly using this external link: [http://video-demo.appnexus.com/encino/bcplugin/prebid/tools/biddersettings.html](http://video-demo.appnexus.com/encino/bcplugin/prebid/tools/biddersettings.html) +- directly using this external link: [https://video-demo.appnexus.com/encino/bcplugin/prebid/tools/biddersettings.html](https://video-demo.appnexus.com/encino/bcplugin/prebid/tools/biddersettings.html) See "bidderSettings" at [Prebid.org]({{site.baseurl}}/dev-docs/publisher-api-reference.html) for details. @@ -494,9 +494,9 @@ Allows the user to specify a custom path used to load the Prebid plugin script. In version 0.4, the original plugin was split into a loader and the main plugin. The loader is the file that you specify when embedding the plugin into the player. The loader will then load the main plugin itself at runtime. This separation simplifies the process of debugging the plugin, especially when the plugin is embedded directly into the player in Brightcove Studio. It also means that when updates are published for the plugin, publishers will be able to pick up the updates without having to re-publish their players. -When registering the plugin to the Brightcove Player, you should continue to use the original path to the plugin. This is now the path to the loader. By default, this path is: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast.min.js`. +When registering the plugin to the Brightcove Player, you should continue to use the original path to the plugin. This is now the path to the loader. By default, this path is: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast.min.js`. -Also, by default, the loader will load in the plugin from: `http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.min.js`. +Also, by default, the loader will load in the plugin from: `https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.min.js`. However, if you are trying to run custom or trial versions of the plugin, you can specify the path to this trial version using this new option: `prebidPluginPath`. @@ -510,7 +510,7 @@ No. **Default Value:** -http://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.min.js +https://acdn.adnxs.com/video/plugins/bc/prebid/bc_prebid_vast_plugin.min.js **Example:** diff --git a/dev-docs/plugins/cross-player-prebid-component/about-cross-player-prebid-component.md b/dev-docs/plugins/cross-player-prebid-component/about-cross-player-prebid-component.md index 6be25274f1..86550f986d 100644 --- a/dev-docs/plugins/cross-player-prebid-component/about-cross-player-prebid-component.md +++ b/dev-docs/plugins/cross-player-prebid-component/about-cross-player-prebid-component.md @@ -15,7 +15,7 @@ The [Cross-Player Prebid Component](https://github.com/prebid/cross-player-prebi The Component is a JavaScript file that is loaded via URL. It can be loaded into the header of the HTML document for header bidding or it can be loaded by a player for "just-in-time" Prebid. You can use the default location of the Component or, because it is an open-source project, you can download the source for the Component, modify it (if needed) to meet your needs, and build it, then host your custom build on your own site. {% capture noteAlert %} -Users have the option of running a localized version of the Cross-Player Prebid Component by either downloading or checking out the current build from our Github repo at [https://github.com/prebid/cross-player-prebid-component](https://github.com/prebid/cross-player-prebid-component) or loading the most current production version from our CDN located at [http://acdn.adnxs.com/video/plugins/cp/PrebidPluginCP.min.js](http://acdn.adnxs.com/video/plugins/cp/PrebidPluginCP.min.js) +Users have the option of running a localized version of the Cross-Player Prebid Component by either downloading or checking out the current build from our Github repo at [https://github.com/prebid/cross-player-prebid-component](https://github.com/prebid/cross-player-prebid-component) or loading the most current production version from our CDN located at [https://acdn.adnxs.com/video/plugins/cp/PrebidPluginCP.min.js](https://acdn.adnxs.com/video/plugins/cp/PrebidPluginCP.min.js) {% endcapture %} {% include alerts/alert_note.html content=noteAlert %} diff --git a/dev-docs/show-native-ads.md b/dev-docs/show-native-ads.md index 8e47637677..f028b58528 100644 --- a/dev-docs/show-native-ads.md +++ b/dev-docs/show-native-ads.md @@ -267,7 +267,7 @@ it will respond to that request with the actual asset values for that `adId` in }, { "key": "clickUrl", - "value": "http://prebid.org/dev-docs/show-native-ads.html" + "value": "https://prebid.org/dev-docs/show-native-ads.html" } ] } diff --git a/examples/video/crossplayer/kaltura/pb-cp-kaltura.html b/examples/video/crossplayer/kaltura/pb-cp-kaltura.html index 241021d5ce..7e3d5408fc 100644 --- a/examples/video/crossplayer/kaltura/pb-cp-kaltura.html +++ b/examples/video/crossplayer/kaltura/pb-cp-kaltura.html @@ -99,7 +99,7 @@

Place this code in the page body.

Add the script for your Kaltura player. This will be part of the code you will copy-paste from Kaltura. --> -<script src="http://cdnapi.kaltura.com/p/2222001/sp/222200100/embedIframeJs/uiconf_id/37440401/partner_id/2222001"></script> +<script src="https://cdnapi.kaltura.com/p/2222001/sp/222200100/embedIframeJs/uiconf_id/37440401/partner_id/2222001"></script> <script type="text/javascript"> invokeVideoPlayer = function(url) { @@ -111,7 +111,7 @@

Place this code in the page body.

the code you will copy paste from Kaltura. Documentation for kWidget available here: - http://player.kaltura.com/docs/kwidget */ + https://player.kaltura.com/docs/kwidget */ kWidget.embed({ "targetId": "myPlayer", @@ -196,7 +196,7 @@

Place this code in the page body.

Add the script for your Kaltura player. This will be part of the code you will copy-paste from Kaltura. --> - + + - \ No newline at end of file + diff --git a/examples/video/instream/ooyala/pb-ve-ooyala.html b/examples/video/instream/ooyala/pb-ve-ooyala.html index 30f7b32390..d9977f5e77 100644 --- a/examples/video/instream/ooyala/pb-ve-ooyala.html +++ b/examples/video/instream/ooyala/pb-ve-ooyala.html @@ -51,7 +51,7 @@

Place this code in the page header.

The scripts themselves and a guide for choosing which ones you need can be found here: - http://help.ooyala.com/video-platform/documentation/concepts/pbv4_plugins.html + https://help.ooyala.com/video-platform/documentation/concepts/pbv4_plugins.html --> <!-- CORE PLAYER REQUIRED --> @@ -196,7 +196,7 @@

Place this code in the page body.

For more information see the Ooyala docs: - http://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: + https://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: Make sure the ad parameters are properly formatted JSON. */ @@ -298,7 +298,7 @@

Place this code in the page body.

For more information see the Ooyala docs: - http://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: + https://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: Make sure the ad parameters are properly formatted JSON. */ @@ -355,4 +355,4 @@

Place this code in the page body.

- \ No newline at end of file + diff --git a/examples/video/instream/videojs/pb-ve-videojs.html b/examples/video/instream/videojs/pb-ve-videojs.html index c4bf3d1bf7..f90604804d 100644 --- a/examples/video/instream/videojs/pb-ve-videojs.html +++ b/examples/video/instream/videojs/pb-ve-videojs.html @@ -25,9 +25,9 @@

{{ page.title }}

@@ -119,9 +119,9 @@

Place this code in the page body.

<div class="example-video-container"> <video id="vid1" class="video-js vjs-default-skin vjs-big-play-centered" controls data-setup='{}' width='640' height='480'> - <source src="http://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'/> - <source src="http://vjs.zencdn.net/v/oceans.webm" type='video/webm'/> - <source src="http://vjs.zencdn.net/v/oceans.ogv" type='video/ogg'/> + <source src="https://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'/> + <source src="https://vjs.zencdn.net/v/oceans.webm" type='video/webm'/> + <source src="https://vjs.zencdn.net/v/oceans.ogv" type='video/ogg'/> </video> </div> @@ -248,4 +248,4 @@

Place this code in the page body.

- \ No newline at end of file + diff --git a/examples/video/long-form/long-form-video-with-freewheel.html b/examples/video/long-form/long-form-video-with-freewheel.html index 0fb9e199b8..faba737d37 100644 --- a/examples/video/long-form/long-form-video-with-freewheel.html +++ b/examples/video/long-form/long-form-video-with-freewheel.html @@ -3,7 +3,7 @@ Prebid Freewheel Integration Demo - + @@ -350,4 +350,4 @@

Prebid Freewheel Integration Demo

- \ No newline at end of file + diff --git a/examples/video/long-form/player.js b/examples/video/long-form/player.js index 37014fe2b4..821ca97aee 100644 --- a/examples/video/long-form/player.js +++ b/examples/video/long-form/player.js @@ -6,7 +6,7 @@ tv.freewheel.DemoPlayer = function () { this.adManager = new tv.freewheel.SDK.AdManager(); // Please contact your FreeWheel solution engineer for the values for your network. this.adManager.setNetwork(372464); - this.adManager.setServer('http://demo.v.fwmrm.net/ad/g/1') + this.adManager.setServer('https://demo.v.fwmrm.net/ad/g/1') // Ad ad context object should be created for each ad request and all ad playback related. // When a new video starts, the current ad context object should be destroyed and a new one should diff --git a/examples/video/pb-video-template.html b/examples/video/pb-video-template.html index 469f7c6aca..a5cf9ff8e2 100644 --- a/examples/video/pb-video-template.html +++ b/examples/video/pb-video-template.html @@ -177,7 +177,7 @@

Place this code in the page header.

<script async src="//www.googletagservices.com/tag/js/gpt.js"></script> <script async src="//acdn.adnxs.com/prebid/not-for-prod/prebid.js"></script> - <script type="text/javascript" src="http://ssl.p.jwpcdn.com/player/v/8.0.5/jwplayer.js"></script> + <script type="text/javascript" src="https://ssl.p.jwpcdn.com/player/v/8.0.5/jwplayer.js"></script> <script type="text/javascript"> jwplayer.key = "ssbF6k0i9BPe87xfG/s0ipdp5gwbLoZaDON/GQvuwPU9nVJy"; //Test Key - replace this with your own valid JWPlayer license key </script> @@ -277,7 +277,7 @@

Place this code in the page body.

invokeVideoPlayer = function(url) { console.log("starting player with url " + url); jwPlayerInstance.setup({ - "file": "http://video-demo.appnexus.com/pbjs/JWPlayerDemo/AppNexus_Summit_Video_HighRes.mp4", + "file": "https://video-demo.appnexus.com/pbjs/JWPlayerDemo/AppNexus_Summit_Video_HighRes.mp4", "width": 640, "height": 480, "autostart": true, diff --git a/examples/video/server/brid/pbs-ve-brid.html b/examples/video/server/brid/pbs-ve-brid.html index e397824456..3f089c85a7 100644 --- a/examples/video/server/brid/pbs-ve-brid.html +++ b/examples/video/server/brid/pbs-ve-brid.html @@ -100,7 +100,7 @@

Place this code in the page header.

debug: true, enableSendAllBids: true, s2sConfig: { - endpoint: 'http://prebid.adnxs.com/pbs/v1/openrtb2/auction', + endpoint: 'https://prebid.adnxs.com/pbs/v1/openrtb2/auction', enabled: true, accountId: 'c9d412ee-3cc6-4b66-9326-9f49d528f13e', bidders: ['appnexus'] @@ -185,4 +185,4 @@

Place this code in the page body.

- \ No newline at end of file + diff --git a/examples/video/server/jwplayer/pbs-ve-jwplayer-hosted.html b/examples/video/server/jwplayer/pbs-ve-jwplayer-hosted.html index c6740a103b..3020ae9bb0 100644 --- a/examples/video/server/jwplayer/pbs-ve-jwplayer-hosted.html +++ b/examples/video/server/jwplayer/pbs-ve-jwplayer-hosted.html @@ -37,7 +37,7 @@

Place this code in the page header.

 	
 <script async src="//acdn.adnxs.com/prebid/not-for-prod/prebid.js"></script>
-<script type="text/javascript" src="http://ssl.p.jwpcdn.com/player/v/8.0.5/jwplayer.js"></script>
+<script type="text/javascript" src="https://ssl.p.jwpcdn.com/player/v/8.0.5/jwplayer.js"></script>
 <script type="text/javascript">
     jwplayer.key = "YOUR_JW_PLAYER_KEY"; //Test Key - replace this with your own valid JWPlayer license key
</script> @@ -102,7 +102,7 @@

Place this code in the page header.

debug: true, enableSendAllBids: true, s2sConfig: { - endpoint: 'http://prebid.adnxs.com/pbs/v1/openrtb2/auction', + endpoint: 'https://prebid.adnxs.com/pbs/v1/openrtb2/auction', enabled: true, accountId: 'c9d412ee-3cc6-4b66-9326-9f49d528f13e', bidders: ['appnexus'] diff --git a/examples/video/server/jwplayer/pbs-ve-jwplayer-platform.html b/examples/video/server/jwplayer/pbs-ve-jwplayer-platform.html index 4afd971249..637be3738e 100644 --- a/examples/video/server/jwplayer/pbs-ve-jwplayer-platform.html +++ b/examples/video/server/jwplayer/pbs-ve-jwplayer-platform.html @@ -92,7 +92,7 @@

Place this code in the page header.

}, debug: true, s2sConfig: { - endpoint: 'http://prebid.adnxs.com/pbs/v1/openrtb2/auction', + endpoint: 'https://prebid.adnxs.com/pbs/v1/openrtb2/auction', enabled: true, accountId: 'c9d412ee-3cc6-4b66-9326-9f49d528f13e', bidders: ['appnexus'] diff --git a/examples/video/server/kaltura/pbs-ve-kaltura.html b/examples/video/server/kaltura/pbs-ve-kaltura.html index 63f2d0eb13..ba6d4b6666 100644 --- a/examples/video/server/kaltura/pbs-ve-kaltura.html +++ b/examples/video/server/kaltura/pbs-ve-kaltura.html @@ -97,7 +97,7 @@

Place this code in the page header.

}, debug: true, s2sConfig: { - endpoint: 'http://prebid.adnxs.com/pbs/v1/openrtb2/auction', + endpoint: 'https://prebid.adnxs.com/pbs/v1/openrtb2/auction', enabled: true, accountId: 'c9d412ee-3cc6-4b66-9326-9f49d528f13e', bidders: ['appnexus'] @@ -143,7 +143,7 @@

Place this code in the page body.

Add the script for your Kaltura player. This will be part of the code you will copy-paste from Kaltura. --> -<script src="http://cdnapi.kaltura.com/p/2222001/sp/222200100/embedIframeJs/uiconf_id/37440401/partner_id/2222001"></script> +<script src="https://cdnapi.kaltura.com/p/2222001/sp/222200100/embedIframeJs/uiconf_id/37440401/partner_id/2222001"></script> <script> invokeVideoPlayer = function(url) { @@ -155,7 +155,7 @@

Place this code in the page body.

the code you will copy paste from Kaltura. Documentation for kWidget available here: - http://player.kaltura.com/docs/kwidget */ + https://player.kaltura.com/docs/kwidget */ kWidget.embed({ "targetId": "myPlayer", @@ -229,7 +229,7 @@

Place this code in the page body.

Add the script for your Kaltura player. This will be part of the code you will copy-paste from Kaltura. --> - + - \ No newline at end of file + diff --git a/examples/video/server/ooyala/pbs-ve-ooyala.html b/examples/video/server/ooyala/pbs-ve-ooyala.html index 7492ec603d..33ad48c4e8 100644 --- a/examples/video/server/ooyala/pbs-ve-ooyala.html +++ b/examples/video/server/ooyala/pbs-ve-ooyala.html @@ -50,7 +50,7 @@

Place this code in the page header.

The scripts themselves and a guide for choosing which ones you need can be found here: - http://help.ooyala.com/video-platform/documentation/concepts/pbv4_plugins.html + https://help.ooyala.com/video-platform/documentation/concepts/pbv4_plugins.html --> <!-- CORE PLAYER REQUIRED --> @@ -128,7 +128,7 @@

Place this code in the page header.

}, debug: true, s2sConfig: { - endpoint: 'http://prebid.adnxs.com/pbs/v1/openrtb2/auction', + endpoint: 'https://prebid.adnxs.com/pbs/v1/openrtb2/auction', enabled: true, accountId: 'c9d412ee-3cc6-4b66-9326-9f49d528f13e', // replace this with your account id
bidders: ['appnexus'] @@ -209,7 +209,7 @@

Place this code in the page body.

For more information see the Ooyala docs: - http://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: + https://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: Make sure the ad parameters are properly formatted JSON. */ @@ -313,7 +313,7 @@

Place this code in the page body.

For more information see the Ooyala docs: - http://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: + https://help.ooyala.com/video-platform/concepts/pbv4_ads_dev_google_ima.html: Make sure the ad parameters are properly formatted JSON. */ @@ -372,4 +372,4 @@

Place this code in the page body.

- \ No newline at end of file + diff --git a/examples/video/server/videojs/pbs-ve-videojs.html b/examples/video/server/videojs/pbs-ve-videojs.html index 1154a644d2..b1d0542319 100644 --- a/examples/video/server/videojs/pbs-ve-videojs.html +++ b/examples/video/server/videojs/pbs-ve-videojs.html @@ -25,9 +25,9 @@

{{ page.title }}

@@ -111,7 +111,7 @@

Place this code in the page header.

}, debug: true, s2sConfig: { - endpoint: 'http://prebid.adnxs.com/pbs/v1/openrtb2/auction', + endpoint: 'https://prebid.adnxs.com/pbs/v1/openrtb2/auction', enabled: true, accountId: 'c9d412ee-3cc6-4b66-9326-9f49d528f13e', // replace this with your account id
bidders: ['appnexus'] @@ -153,9 +153,9 @@

Place this code in the page body.

<div class="example-video-container"> <video id="vid1" class="video-js vjs-default-skin vjs-big-play-centered" controls data-setup='{}' width='640' height='480'> - <source src="http://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'/> - <source src="http://vjs.zencdn.net/v/oceans.webm" type='video/webm'/> - <source src="http://vjs.zencdn.net/v/oceans.ogv" type='video/ogg'/> + <source src="https://vjs.zencdn.net/v/oceans.mp4" type='video/mp4'/> + <source src="https://vjs.zencdn.net/v/oceans.webm" type='video/webm'/> + <source src="https://vjs.zencdn.net/v/oceans.ogv" type='video/ogg'/> </video> </div> @@ -286,4 +286,4 @@

Place this code in the page body.

- \ No newline at end of file + diff --git a/overview/what-is-prebid-org.md b/overview/what-is-prebid-org.md index f3577affc8..46ede93b71 100644 --- a/overview/what-is-prebid-org.md +++ b/overview/what-is-prebid-org.md @@ -27,7 +27,7 @@ We focus on providing value-add to publishers and encourage the industry to depl Prebid takes two approaches to accomplish this: ### Wrapper Code of Conduct -Prebid members must agree to support the [Wrapper Code of Conduct](http://prebid.org/wrapper_code_of_conduct.html +Prebid members must agree to support the [Wrapper Code of Conduct](/wrapper_code_of_conduct.html ). This ensures that all wrapper providers are operating within the same principles. ### Trademark diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md index c3a2bf7fc6..eb21fe7003 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md @@ -577,7 +577,7 @@ If there's already an source.ext.schain and a bidder is named in ext.prebid.scha ##### User IDs -Prebid Server adapters can support the [Prebid.js User ID modules](http://prebid.org/dev-docs/modules/userId.html) by reading the following extensions and passing them through to their server endpoints: +Prebid Server adapters can support the [Prebid.js User ID modules](/dev-docs/modules/userId.html) by reading the following extensions and passing them through to their server endpoints: ``` { diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-video.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-video.md index 259056b01e..368fb16d67 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-video.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-video.md @@ -243,7 +243,7 @@ Publishers can comply with CCPA regulations by setting `regs.ext.us.privacy` to ] }, "site": { - "page": "http://www.foobar.com/1234.html" + "page": "https://www.foobar.com/1234.html" }, "user": { "yob": 1982, diff --git a/prebid-server/endpoints/pbs-endpoint-event.md b/prebid-server/endpoints/pbs-endpoint-event.md index 320a4008fd..0c354142a3 100644 --- a/prebid-server/endpoints/pbs-endpoint-event.md +++ b/prebid-server/endpoints/pbs-endpoint-event.md @@ -33,7 +33,7 @@ This endpoint alerts Prebid Server to process the event. Most of the time this j ### Sample request ``` -GET http://prebid.site.com/event?t=win&b=1234567890&bidder=rubicon&f=i +GET https://prebid.site.com/event?t=win&b=1234567890&bidder=rubicon&f=i ``` ## `POST /vtrack` diff --git a/prebid-server/endpoints/pbs-endpoint-setuid.md b/prebid-server/endpoints/pbs-endpoint-setuid.md index 31b464a36d..ea379418ac 100644 --- a/prebid-server/endpoints/pbs-endpoint-setuid.md +++ b/prebid-server/endpoints/pbs-endpoint-setuid.md @@ -34,7 +34,7 @@ If in doubt, contact the company hosting Prebid Server and ask if they're GDPR-r ### Sample request -`GET http://prebid.site.com/setuid?bidder=adnxs&uid=12345&gdpr=1&gdpr_consent=BONciguONcjGKADACHENAOLS1rAHDAFAAEAASABQAMwAeACEAFw` +`GET https://prebid.site.com/setuid?bidder=adnxs&uid=12345&gdpr=1&gdpr_consent=BONciguONcjGKADACHENAOLS1rAHDAFAAEAASABQAMwAeACEAFw` ### Return Values diff --git a/prebid-server/overview/prebid-server-overview.md b/prebid-server/overview/prebid-server-overview.md index 34c1e16089..493b0a9cfe 100644 --- a/prebid-server/overview/prebid-server-overview.md +++ b/prebid-server/overview/prebid-server-overview.md @@ -47,7 +47,7 @@ Then you need to decide which of the two implementations to utilize: - [Prebid Server (Go)](/prebid-server/versions/pbs-versions-go.html) - the original Prebid Server is written in the Go language. - [Prebid Server (Java)](/prebid-server/versions/pbs-versions-java.html) - Prebid Server with a Java language port. -To choose between them, see the [Prebid Server version overview](/prebid-server/versions/pbs-versions-overview.html) and the [FAQ](http://prebid.org/faq/prebid-server-faq.html#why-are-there-two-versions-of-prebid-server-are-they-kept-in-sync). +To choose between them, see the [Prebid Server version overview](/prebid-server/versions/pbs-versions-overview.html) and the [FAQ](/faq/prebid-server-faq.html#why-are-there-two-versions-of-prebid-server-are-they-kept-in-sync). ## Which Server-Side Bidders to Utilize From 788185e68aa5b8a19691f42f0cf442430c28fea3 Mon Sep 17 00:00:00 2001 From: SKOCHERI <37454420+SKOCHERI@users.noreply.github.com> Date: Mon, 10 May 2021 17:09:32 -0700 Subject: [PATCH 151/536] Updating merkle param (#2945) Co-authored-by: skocheri --- dev-docs/modules/userId.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 9aebf985a4..31f2ac317c 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -941,8 +941,10 @@ pbjs.setConfig({ userIds: [{ name: 'merkleId', params: { - ptk: 'example', - pubid: 'EXAMPLE' + vendor:'example_vendor', + sv_cid:'example_cid', + sv_pubid:'example_pubid', + sv_domain:'example.com' }, storage: { type: 'html5', From 7d815ff023d1b913b396f5151beae9e17141de31 Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 11 May 2021 12:37:24 -0400 Subject: [PATCH 152/536] 4.0 blog post - fixed typo --- _posts/2020-07-24-PB4-release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2020-07-24-PB4-release.md b/_posts/2020-07-24-PB4-release.md index fdb737f8a6..0c97117696 100644 --- a/_posts/2020-07-24-PB4-release.md +++ b/_posts/2020-07-24-PB4-release.md @@ -55,7 +55,7 @@ We’re addressing this by introducing standards in the `bidResponse.meta` objec | `meta.agencyName` | Optional | string | Agency Name | | `meta.advertiserId` | Optional | int | Bidder-specific Advertiser ID | | `meta.advertiserName` | Optional | string | Advertiser Name | -| `meta.advertiserDomain` | Optional | array | Array of Advertiser Domains for the landing page(s). This is an array to align with the OpenRTB ‘adomain’ field.| +| `meta.advertiserDomains` | Optional | array | Array of Advertiser Domains for the landing page(s). This is an array to align with the OpenRTB ‘adomain’ field.| | `meta.brandId` | Optional | int | Bidder-specific Brand ID (some advertisers may have many brands)| | `meta.brandName` | Optional | string | Brand Name | | `meta.primaryCatId` | Optional | string | Primary IAB category ID | From 293b480eb7cd3c487efceb349a9d7023c6015ced Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 11 May 2021 13:01:46 -0400 Subject: [PATCH 153/536] PBS feature updates (#2951) --- prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md | 2 +- prebid-server/features/pbs-feature-idx.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md index eb21fe7003..5f40fc3242 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md @@ -563,7 +563,7 @@ If a currency rate doesn't exist in the request, the external file will be used. Basic supply chains are passed to Prebid Server on `source.ext.schain` and passed through to bid adapters. Prebid Server does not currently offer the ability to add a node to the supply chain. -Bidder-specific schains (PBS-Java only): +Bidder-specific schains: ``` ext.prebid.schains: [ diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md index 41b15dbd27..53be8ca4d4 100644 --- a/prebid-server/features/pbs-feature-idx.md +++ b/prebid-server/features/pbs-feature-idx.md @@ -28,6 +28,7 @@ title: Prebid Server | Features | GDPR | TCF 1.1 GVL Fallback | Allow the host company to optionally add a default TCF1 GVL file. | | | | GDPR | TCF 2 core | Able to: read the TCF2 global vendor list, parse incoming TCF2 consent strings, and [take appropriate enforcement action](https://docs.google.com/document/d/1fBRaodKifv1pYsWY3ia-9K96VHUjd8kKvxZlOsozm8E/edit). | | | | GDPR | TCF 2 Account Config | Able to turn on and off TCF2 enforcement per account. | | | +| GDPR | Support for basicEnforcementVendors | Host companies can define bidders that don't require vendor consent but do require Purpose consent. | | | | GDPR | TCF 2 Geo-lookup | Can use a geographic lookup service to help determine whether the incoming request is in-scope for GDPR. | | | | GDPR | TCF 2 Integration type exception | Can be configured to turn off GDPR checks for a specific account and a specific integration type. e.g. Account 123 has a different legal basis for AMP. | | | | [US Privacy](/prebid-server/features/pbs-privacy.html) | USP core | Able to: read the US Privacy consent string (CCPA) and [take appropriate enforcement action](https://github.com/prebid/prebid-server/issues/1129). | | | From 84a585f85af6c9be921738f36ddec44839349908 Mon Sep 17 00:00:00 2001 From: Gena Date: Wed, 12 May 2021 15:53:55 +0300 Subject: [PATCH 154/536] change ViewDeos title (#2950) add gvlId --- dev-docs/bidders/viewdeosDX.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/viewdeosDX.md b/dev-docs/bidders/viewdeosDX.md index 035d58f4aa..6aab7f7107 100644 --- a/dev-docs/bidders/viewdeosDX.md +++ b/dev-docs/bidders/viewdeosDX.md @@ -1,11 +1,13 @@ --- layout: bidder -title: ViewDeos DX +title: Viewdeos description: Prebid ViewDeos Bidder Adaptor pbjs: true +pbs: true biddercode: viewdeosDX media_types: banner,video gdpr_supported: true +gvl_id: 924 --- ### Bid params From 8ed469bba14f55bd411d1434ac5f6239b95ad69e Mon Sep 17 00:00:00 2001 From: bretg Date: Wed, 12 May 2021 14:39:27 -0400 Subject: [PATCH 155/536] added AUCTION_PRICE note (#2957) * added AUCTION_PRICE note * wordsmithing --- faq/prebid-server-faq.md | 10 ++++++++++ prebid-server/developers/add-new-bidder-go.md | 6 ++++-- prebid-server/developers/add-new-bidder-java.md | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/faq/prebid-server-faq.md b/faq/prebid-server-faq.md index 89337196f5..8afb61b456 100644 --- a/faq/prebid-server-faq.md +++ b/faq/prebid-server-faq.md @@ -120,6 +120,10 @@ The AMP endpoint is somewhat different because it doesn't receive the openrtb - ## How does Prebid Server determine the winner of a given impression? +Prebid Server doesn't decide the overall winner... that's the job of the +ad server. However, there are two decisions it does make that influence +which bids are submitted to the ad server. + **Decision 1**: best bid from each bidder on each impression Prebid Server returns one bid from each bidder for each impression object. If there @@ -158,3 +162,9 @@ The best way would be to [join Prebid.org](https://prebid.org/membership/) and participate in the [Prebid Server PMC](https://prebid.org/project-management-committees/). Another way is to [register for our host company mailing list](/prebid-server/hosting/pbs-hosting.html#optional-registration). + +## Why doesn't Prebid Server resolve OpenRTB macros? + +Prebid Server is not a full-fledged SSP. Any DSP bid adapters should keep this in mind when it comes to assuming SSP functionality like resolving OpenRTB macros. We debated building this functionality into PBS, but realized it would take precious milliseconds away from the overall header bidding auction to scan kilobytes of bidder creatives for the 9 different OpenRTB macros. Since so few bidders require this functionality, it makes sense to have those adapters do it themselves. + +If an adapter doesn't resolve its own macros, AUCTION_PRICE will eventually get resolved by the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative), but by then the bid price will be in the ad server currency and quantized by the price granularity. This will likely cause reporting discrepancies. diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md index 40b99825d0..7cfc39e2f7 100644 --- a/prebid-server/developers/add-new-bidder-go.md +++ b/prebid-server/developers/add-new-bidder-go.md @@ -592,7 +592,7 @@ Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-conte | `.Currency` | Required | [3-letter ISO 4217 code](https://www.iso.org/iso-4217-currency-codes.html) defining the currency of the bid. The Prebid Server default is USD. | `.Bids[].BidType` | Required | Prebid Server defined value identifying the media type as `banner`, `video`, `audio`, or `native`. Should be mapped from the bidding server response. | `.Bids[].Bid.ADomain` | Optional | Advertiser domain for block list checking. -| `.Bids[].Bid.AdM` | Optional | Ad markup to serve the creative if the bid wins. May be HTML, Native, or VAST/VMAP formats. +| `.Bids[].Bid.AdM` | Optional | Ad markup to serve if the bid wins. May be HTML, Native, or VAST/VMAP formats. You should resolve any AUCTION_PRICE macros. | `.Bids[].Bid.CrID` | Required | Unique id of the creative. | `.Bids[].Bid.ID` | Required | Bidder generated id to assist with logging and tracking. | `.Bids[].Bid.ImpID` | Required | ID of the corresponding bid request Impression. Prebid Server validates the id is actually found in the bid request. @@ -601,6 +601,9 @@ Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-conte | `.Bids[].Bid.H` | Optional | Height of the creative in pixels. | `.Bids[].Bid.Ext` | Optional | Embedded JSON containing Prebid metadata (see below) or custom information. +{: .alert.alert-info :} +We recommend resolving creative OpenRTB macros in your adapter. Otherwise, AUCTION_PRICE will eventually get resolved by the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative), but by then the bid price will be in the ad server currency and quantized by the price granularity. + If you'd like to support Long Form Video Ad Pods, then you'll need to provide the followings information: {: .table .table-bordered .table-striped } @@ -613,7 +616,6 @@ If you'd like to support Long Form Video Ad Pods, then you'll need to provide th {: .alert.alert-info :} Either `.Bids[].BidVideo.PrimaryCategory` or `.Bids[].Bid.Cat` should be provided. - Prebid has historically struggled with sharing granular bid response data with publishers, analytics, and reporting systems. To address this, we've introduced a standard object model. We encourage adapters to provide as much information as possible in the bid response. {: .alert.alert-danger :} diff --git a/prebid-server/developers/add-new-bidder-java.md b/prebid-server/developers/add-new-bidder-java.md index be1d960ee0..692954b274 100644 --- a/prebid-server/developers/add-new-bidder-java.md +++ b/prebid-server/developers/add-new-bidder-java.md @@ -556,7 +556,7 @@ Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-conte | `.Currency` | Required | [3-letter ISO 4217 code](https://www.iso.org/iso-4217-currency-codes.html) defining the currency of the bid. The Prebid Server default is USD. | `.Bids[].BidType` | Required | Prebid Server defined value identifying the media type as `banner`, `video`, `audio`, or `native`. Should be mapped from the bidding server response. | `.Bids[].Bid.ADomain` | Optional | Advertiser domain for block list checking. -| `.Bids[].Bid.AdM` | Optional | Ad markup to serve the creative if the bid wins. May be HTML, Native, or VAST/VMAP formats. +| `.Bids[].Bid.AdM` | Optional | Ad markup to serve if the bid wins. May be HTML, Native, or VAST/VMAP formats. You should resolve any AUCTION_PRICE macros. | `.Bids[].Bid.CrID` | Required | Unique id of the creative. | `.Bids[].Bid.ID` | Required | Bidder generated id to assist with logging and tracking. | `.Bids[].Bid.ImpID` | Required | ID of the corresponding bid request Impression. Prebid Server validates the id is actually found in the bid request. @@ -565,6 +565,9 @@ Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-conte | `.Bids[].Bid.H` | Optional | Height of the creative in pixels. | `.Bids[].Bid.Ext` | Optional | Embedded JSON containing Prebid metadata (see below) or custom information. +{: .alert.alert-info :} +We recommend resolving creative OpenRTB macros in your adapter. Otherwise, AUCTION_PRICE will eventually get resolved by the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative), but by then the bid price will be in the ad server currency and quantized by the price granularity. + If you'd like to support Long Form Video Ad Pods, then you'll need to provide the followings information: {: .table .table-bordered .table-striped } From db5e6cf3ff01d7aa5ae71cd13c6e1305f0db6a73 Mon Sep 17 00:00:00 2001 From: Denis Logachov Date: Wed, 12 May 2021 23:02:41 +0300 Subject: [PATCH 156/536] Documenting converge_digital adaptor alias (#2954) --- dev-docs/bidders/converge_digital.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 dev-docs/bidders/converge_digital.md diff --git a/dev-docs/bidders/converge_digital.md b/dev-docs/bidders/converge_digital.md new file mode 100644 index 0000000000..fa17272a25 --- /dev/null +++ b/dev-docs/bidders/converge_digital.md @@ -0,0 +1,28 @@ +--- +layout: bidder +title: Converge-Digital +description: Converge-Digital Bidder Adaptor +pbjs: true +pbs: true +biddercode: converge_digital +aliasCode : adkernel +media_types: banner, native, video +gdpr_supported: true +usp_supported: true +coppa_supported: true +pbs_app_supported: true +gvl_id: 248 +schain_supported: true +--- + +### Note: + +The Converge-Digital Bidding adapter requires setup and approval before implementation. Please reach out to for more details. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | ConvergeDigital RTB host | `'cpm.convergeselect.net'` | `string` | +| `zoneId` | required | Zone Id | `30164` | `integer` | From 2ff767001b90b5bf28d8a23567309e9b9a96e150 Mon Sep 17 00:00:00 2001 From: notmani Date: Wed, 12 May 2021 22:11:18 +0200 Subject: [PATCH 157/536] Add Prebid Server support for Madvertise Adapter (#2925) * New bidder param documentation (madvertise) * Add GDPR support for madvertise adaptor * Add Prebid Server support for Madvertiser Adapter * update doc for prebid-server Co-authored-by: Nicolas Lopez --- dev-docs/bidders/madvertise.md | 64 ++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidders/madvertise.md b/dev-docs/bidders/madvertise.md index 4d48221e73..202ea417ba 100644 --- a/dev-docs/bidders/madvertise.md +++ b/dev-docs/bidders/madvertise.md @@ -1,22 +1,80 @@ --- layout: bidder title: Madvertise -description: Prebid Madvertise Bidder Adaptor +description: Prebid Madvertise Bidder Adapter pbjs: true biddercode: madvertise gdpr_supported: true +gvl_id: 153 +media_types: banner, video +safeframes_ok: true +pbs: true +pbs_app_supported: true --- -### Bid Params +### Prebid.js Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |--------------|----------|---------------------------------------------------------------------------------------------------------|-----------------------------------------|-----------| | `s` | required | Zone code. This parameter should be the unique Publisher ID of your mobile application or website. | `'/4543756/prebidadaptor/madvertiseHB'` | `string` | -| `donottrack` | optional | Possible values are `0` or `1`. If the of value is `1`, the user does not want to be tracked (opt out). | `1` | `integer` | | `lat` | optional | Latitude | `48.866667` | `float` | | `long` | optional | Longitude | `2.333333` | `float` | | `age` | optional | Age | `19` | `integer` | | `gender` | optional | Gender m or f | `'f'` | `string` | | `locale` | optional | Locale | `'fr'` | `string` | | `floor` | optional | Bid floor | `1.0` | `float` | + +#### Example + +``` +{ + bidder: 'madvertise', + params: { + s: "/4543756/prebidadaptor/madvertiseHB", + tgt:'aa=a;bb=b' + } +} +``` +### Prebid Server Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|--------------|----------|---------------------------------------------------------------------------------------------------------|-----------------------------------------|-----------| +|`zoneId` | required | The zone ID provided by Madvertise. | `'/1111111/banner'` | `string` | + + +#### Example + +``` +{ + "id": "some-request-id", + "test": 1, + "site": { + "page": "prebid.org" + }, + "imp": [ + { + "id": "some-impression-id", + "banner": { + "format": [ + { + "w": 320, + "h": 50 + } + ] + }, + "ext": { + "prebid": { + "bidder": { + "madvertise": { + "zoneId": "/1111111/banner" + } + } + } + } + } + ], + "tmax": 1000 +} +``` \ No newline at end of file From f1dd6a085a2f136244a614c5a176bac678c76903 Mon Sep 17 00:00:00 2001 From: Michael Kuryshev Date: Wed, 12 May 2021 22:11:49 +0200 Subject: [PATCH 158/536] VIS.X: update docs (#2924) * VIS.X: update docs * VIS.X: move video params from bid to the mediaTypes --- dev-docs/bidders/visx.md | 116 +++++++++++++++++++++++++++++++++------ 1 file changed, 100 insertions(+), 16 deletions(-) diff --git a/dev-docs/bidders/visx.md b/dev-docs/bidders/visx.md index a6c01e8268..9fdb7cb190 100644 --- a/dev-docs/bidders/visx.md +++ b/dev-docs/bidders/visx.md @@ -2,35 +2,34 @@ layout: bidder title: YOC VIS.X description: Prebid YOC VIS.X Bidder Adapter -pbjs: true -pbs: true biddercode: visx gdpr_supported: true +tcf2_supported: true +gvl_id: 154 schain_supported: true userIds: id5Id, unifiedId -pbs_app_supported: true +media_types: banner, video +bidder_supports_deals: true +pbjs: true +pbs: true --- ### Note + To be able to use the full bandwidth of VIS.X high impact ad products, we strongly recommend disabling SafeFrames: -- If you are using Google Ad Manager (GAM), make sure the “Serve in Safeframe” box in creative settings is unchecked, +- If you are using Google Ad Manager (GAM), make sure the "Serve in Safeframe" box in creative settings is unchecked, - If you are using AppNexus Seller Tag, make sure the enableSafeFrame parameter is set to False. If you require SafeFrames to be activated, please reach out to your YOC account manager to obtain further details. +If a single bid request contains more than 20 impression objects, this request will be ignored. + The YOC VIS.X adapter requires setup and approval from your YOC account manager team, even for existing YOC publishers. Please reach out to your account manager to enable Prebid.js for your account. -### Bid params - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------|----------|-------------------------------------|------------|----------| -| `uid` | required | The publisher's ad unit ID in VIS.X | `'903536'` | `string` | - -### Configuration +### Configuration: Currency -The YOC VIS.X adapter has the ability to work in different currencies. Currently this adapter supports `EUR`, `USD`, +The YOC VIS.X adapter has the ability to work in different currencies. Currently, this adapter supports `EUR`, `USD`, `GBP`, `PLN`. Defaults to `EUR`. If your Ad Server uses `EUR`, you don't need any additional currency settings. If you would like to trade with VIS.X in a currency different from `EUR`, you should implement some additional settings. @@ -67,6 +66,91 @@ pbjs.setConfig({ ``` Best practices: -- Please make sure that currency module is set up and configured in order to trade with YOC in a currency that is not supported by YOC VIS.X bidder. -- You should set `EUR` in `bidderCurrencyDefault` parameter if you use unsupported currency for VIS.X. -- Feel free to reach out to your contact at YOC if you need additional support setting up Prebid.js and currency config. +- Please make sure that the currency module is set up and configured in order to trade with YOC in a currency that is not supported by the YOC VIS.X bidder. +- You should set `EUR` in `bidderCurrencyDefault` parameter if you use unsupported currencies for VIS.X. +- Feel free to reach out to your contact at YOC if you need additional support setting up Prebid.js and the currency config. + +### Configuration: Video + +The YOC VIS.X adapter responds with VAST XML (in the 'vastXml' field) and expects client-side caching enabled. + +```javascript +pbjs.setConfig({ + cache: { + url: 'https://prebid.adnxs.com/pbc/v1/cache' + } +}); +``` + +### Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|-------------------------------------|------------|----------| +| `uid` | required | The publisher's Ad unit ID in VIS.X. | `'903536'` | `string` | + +### Media type Banner object params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|-------------------------------------|------------|----------| +| `sizes` | required | All sizes this ad unit can accept. | `[[300, 250], [300, 600]]` | `array of integer arrays` | + +### Media type Video object params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|-------------------------------------|------------|----------| +| `context` | required | The video context, only 'instream' is allowed. | `'instream'` | `string` | +| `playerSize` | required | The size (width, height) of the video player on the page, in pixels. | `[640, 480]` | `integer array` | +| `mimes` | required | Content MIME types supported. | `['video/mp4', 'video/x-ms-wmv']` | `string array` | +| `protocols` | required | Array of supported video protocols. Refer to List 5.8 of IAB OpenRTB 2.5 (e.g., VAST 3.0 Wrapper). | `[2,3,5,6]` | `integer array` | +| `api` | optional | List of supported API frameworks for this impression. Refer to List 5.6 of IAB OpenRTB 2.5 (e.g., VPAID 2.0). If an API is not explicitly listed, it is assumed not to be supported. | `[2]` | `integer array` | +| `minduration` | optional | Minimum video ad duration in seconds. | `5` | `integer` | +| `maxduration` | optional | Maximum video ad duration in seconds. | `30` | `integer` | +| `skip` | optional | Indicates if the player will allow the video to be skipped, where 0 = no, 1 = yes. | `1` | `integer` | + +### Example of Banner Ad unit + +```javascript +var bannerAdUnit = { + code: 'bannerAdUnit1', + mediaTypes: { + banner: { + sizes: [[320, 480], [728, 90]] // required + } + }, + bids: [{ + bidder: 'visx', + params: { + uid: '903536' // required + } + }] +}; +``` + +### Example of Video Ad unit + +```javascript +var videoAdUnit = { + code: 'videoAdUnit1', + mediaTypes: { + video: { + context: 'instream', // required + playerSize: [400, 300], // required + mimes: ['video/mp4', 'video/x-ms-wmv'], // required + protocols: [2, 3, 5, 6], // required + api: [2], // optional + minduration: 5, // optional + maxduration: 30, // optional + skip: 1 // optional + } + }, + bids: [{ + bidder: 'visx', + params: { + uid: '921068' // required + } + }] +}; +``` From 431741e0a0b5712f6ab127bc437e5e06b74cea74 Mon Sep 17 00:00:00 2001 From: IOTiagoFaria <76956619+IOTiagoFaria@users.noreply.github.com> Date: Wed, 12 May 2021 21:19:11 +0100 Subject: [PATCH 159/536] Interactive Offers Bid Adapter - Enable pbs (#2879) * Interactive Offers Bid Adapter: add md file to bidders * Interactive Offers: Enable pbs * Interactive Offers Bid Adapter - remove tmax parameter --- dev-docs/bidders/interactiveOffers.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidders/interactiveOffers.md b/dev-docs/bidders/interactiveOffers.md index 5279345e63..f95591a67f 100644 --- a/dev-docs/bidders/interactiveOffers.md +++ b/dev-docs/bidders/interactiveOffers.md @@ -2,6 +2,7 @@ layout: bidder title: InteractiveOffers description: Prebid InteractiveOffers.com Bidder Adapter +pbs: true pbjs: true biddercode: interactiveOffers gdpr_supported: false @@ -17,7 +18,6 @@ Module that connects to interactiveOffers demand sources. Param pubid is require | Name | Scope | Description | Example | Type | |---------------|----------|-------------|---------|----------| | `pubid` | required | Publisher id | 35 | `integer` | -| `tmax` | optional | Max time in milliseconds | 250 | `integer` | Example: @@ -25,8 +25,7 @@ Example: { bidder: "interactiveOffers", params: { - pubid: 35, - tmax: 250 + pubid: 35 } } ``` From 47959415e4c5f1508e478ac14be0fcbff883c958 Mon Sep 17 00:00:00 2001 From: Scott Menzer Date: Wed, 12 May 2021 22:23:56 +0200 Subject: [PATCH 160/536] update the userid module docs to indicate that a cookie is used (#2839) * update the userid module docs to indicate that a cookie is used to store the consent string for managing id submodule refreshes * fix headers --- dev-docs/modules/userId.md | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 31f2ac317c..b34ce7fe77 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -25,14 +25,18 @@ The User ID module supports multiple ways of establishing pseudonymous IDs for u 1. The publisher builds Prebid.js by specifying one or more ID sub-modules they would like to include. e.g. "gulp build --modules=____IdSystem". You also need to add the `userId` module to your Prebid.js distribution. 1. The page defines User ID configuration in `pbjs.setConfig()` 1. When `setConfig()` is called, and if the user has consented to storing IDs locally, the module is invoked to call the URL if needed - 1. If the relevant local storage is present, the module doesn't call the URL and instead parses the scheme-dependent format, injecting the resulting ID into bidRequest.userId. -1. An object containing one or more IDs (bidRequest.userId) is made available to Prebid.js adapters and Prebid Server S2S adapters. -1. In addition to bidRequest.userId, bidRequest.userIdAsEids is made available to Prebid.js adapters and Prebid Server S2S adapters. bidRequest.userIdAsEids has userIds in ORTB EIDS format. + 1. If the relevant local storage is present, the module doesn't call the URL and instead parses the scheme-dependent format, injecting the resulting ID into `bidRequest.userId`. + 1. If GDPR applies, the consent signal from the CMP is hashed and stored in a cookie called `_pbjs_userid_consent_data`. This is required so that ID sub-modules may be called to refresh their ID if the user's consent preferences have changed from the previous page, and ensures cached IDs are no longer used if consent is withdrawn. +1. An object containing one or more IDs (`bidRequest.userId`) is made available to Prebid.js adapters and Prebid Server S2S adapters. +1. In addition to `bidRequest.userId`, `bidRequest.userIdAsEids` is made available to Prebid.js adapters and Prebid Server S2S adapters. `bidRequest.userIdAsEids` has userIds in ORTB EIDS format. +{: .alert.alert-info :} Note that User IDs aren't needed in the mobile app world because device ID is available in those ad serving scenarios. -Also note that not all bidder adapters support all forms of user ID. See the tables below for a list of which bidders support which ID schemes. +{: .alert.alert-info :} +Note that not all bidder adapters support all forms of user ID. See the tables below for a list of which bidders support which ID schemes. +{: .alert.alert-info :} As of Prebid 4.0, this module will attempt storage in the main domain of the publisher's website instead of a subdomain, unless this behavior is overriden by a submodule. ## User ID, GDPR, Permissions, and Opt-Out @@ -79,10 +83,8 @@ of sub-objects. The table below has the options that are common across ID system | value | Optional | Object | Used only if the page has a separate mechanism for storing a User ID. The value is an object containing the values to be sent to the adapters. | `{"tdid": "1111", "pubcid": {2222}, "IDP": "IDP-2233", "id5id": {"uid": "ID5-12345"}}` | -## User ID Sub-Modules - ## Permissions -Publishers can control which user ids are shared with the bid adapters they choose to work with by using the bidders array. The bidders array is part of the User id module config, publisher may choose to send an id to some bidders but not all, the default behavior is that each user id go to all bid adapters the publisher is working with. +Publishers can control which user ids are shared with the bid adapters they choose to work with by using the bidders array. The bidders array is part of the User id module config, publisher may choose to send an id to some bidders but not all, the default behavior is that each user id go to all bid adapters the publisher is working with. Use the optional `bidders` parameter to define an array of bidder codes to which this user ID may be sent. @@ -106,7 +108,7 @@ userIds: [ } ] ``` -The Rubicon bid adapter would then receive +The Rubicon bid adapter would then receive ``` { "bidder": "rubicon", @@ -135,11 +137,13 @@ The Rubicon bid adapter would then receive } ``` +## User ID Sub-Modules + ### AdmixerID Admixer ID, provided by [Admixer] (https://admixer.com/), is a universal ID solution that doesn't rely on 3rd party cookies and helps publishers and advertisers to recognize users across various browsers and environments. Our sub adapter takes deterministic signals like email and phone as input and returns an anonymous id that unlocks access to a wide range of Admixer's demand sources, amplifying audience segmentation, targeting and measurement. -The Admixer privacy policy is at https://admixer.com/privacy/ +The Admixer privacy policy is at https://admixer.com/privacy/ Add Admixer ID module to your Prebid.js package with: @@ -184,7 +188,7 @@ gulp build --modules=admixerIdSystem ### BritePool -The [BritePool]((https://britepool.com)) ID is a persistent identifier that enables identity resolution for people-based marketing in the cookieless world. Every BritePool ID is associated with a real identity. As a result, publishers, SSPs and DSPs that integrate with BritePool, or automated +The [BritePool]((https://britepool.com)) ID is a persistent identifier that enables identity resolution for people-based marketing in the cookieless world. Every BritePool ID is associated with a real identity. As a result, publishers, SSPs and DSPs that integrate with BritePool, or automated integration partners (such as PubMatic), are able to maximize revenues without cookies. As addressable individuals visit publisher websites and mobile apps, the BritePool IDs associated with these identities are passed into the bidstream; enabling advertisers to transact against these BritePool ID's and publishers to maximize the revenues associated with their inventory and audience. The BritePool ID combines consumer privacy with easy, rapid integration for publishers and does not significantly increase the computing resources required of DSPs and SSPs. Add it to your Prebid.js package with: @@ -1261,7 +1265,7 @@ In either case, bid adapters will receive the eid values after consent is valida - dmp - this uid comes from the in-page dmp named in eids.source - ppuid - this uid comes from the publisher named in eids.source -- other - for setting other id origin signals please use the [adCOM!](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object--extended-identifier-uids-) `atype` spec +- other - for setting other id origin signals please use the [adCOM!](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/master/AdCOM%20v1.0%20FINAL.md#object--extended-identifier-uids-) `atype` spec 5. Bid adapters listening for "userIds.pubProvidedId" will not receive a string, please use the userIdAsEids value/function to return the userid as a string. From 26e818adbafbf5c1051c8c79b398d70fb25e0031 Mon Sep 17 00:00:00 2001 From: karthik <60045218+boppudikarthikc@users.noreply.github.com> Date: Thu, 13 May 2021 15:04:04 -0400 Subject: [PATCH 161/536] DMD docs added (#2909) * Added DMD ID Section to userid documentation * feat(prebid):DMD userId module documentation[PREB-10] * feat(prebid):updated dmdIdSystem doc in userId[PREB-10] * feat(releasenote):added a release note[PREB-11] * fix(releasenote):removed unnecessary release note[PREB-11] * fix(prebiddocs):adding back deleted file[PREB-11] * fix(prebid):removed duplicated line[PREB-11] * feat(docs):docs feedback[PREB-11] Co-authored-by: Bill Simakis Co-authored-by: Karthik Boppudi Co-authored-by: Matt Fitzgerald Co-authored-by: mfitzgerald_dmd --- dev-docs/modules/userId.md | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index b34ce7fe77..ddaeb57ef5 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -327,6 +327,46 @@ pbjs.setConfig({ }); {% endhighlight %} +### DMD ID by DMD Marketing Corp + +DMD is the preeminent supplier of US-based healthcare professional (HCP) identity data to the pharmaceutical, health system and medical publishing industries. DMD is the only data provider that has acquired its deterministic identity data through a fully consented, first-party, opt-in process. DMD’s privacy policy that can be found at [Privacy Policy](https://hcn.health/privacy-policy). + +For assistance setting up your module, please contact us at prebid@dmdconnects.com + +Add the DMD ID to your Prebid.js Package with: + +{: .alert.alert-info :} +gulp build --modules=userId,dmdIdSystem + +#### DMD ID Registration + +Please reach out to [prebid@dmdconnects.com](mailto:prebid@dmdconnects.com) to request your `api_key` + +#### DMD ID Configuration + +{: .table .table-bordered .table-striped } +| Param under userSync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | The name of Module | `"dmdId"` | +| storage | Required | Object | | +| storage.name | Required | String | `dmd-dgid` | +| params | Required | Object | Container of all module params. | | +| params.api_key | Required | String | This is your `api_key` as provided by DMD Marketing Corp. | `3fdbe297-3690-4f5c-9e11-ee9186a6d77c` | + +#### DMD ID Example + +{% highlight javascript %} +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'dmdId', + params: { + api_key: '3fdbe297-3690-4f5c-9e11-ee9186a6d77c' // provided to you by DMD + } + }] + } +}); +{% endhighlight %} ### Fabrick ID by Neustar @@ -1664,6 +1704,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | --- | --- | --- | --- | --- | --- | | Admixer ID | Admixer | bidRequest.userId.admixerId | `"1111"` | | BritePool ID | BritePool | bidRequest.userId.britepoolid | `"1111"` | +| DMD ID | DMD | bidRequest.userId.dmdId | `"1111"` | | CriteoID | Criteo | bidRequest.userId.criteoId | `"1111"` | | Halo ID | Audigent | bidRequest.userId.haloId | `{"haloId":"user-halo-id", "auSeg":["segment1","segment2"]}` | | ID+ | Zeotap | bidRequest.userId.IDP | `"1111"` | @@ -1748,6 +1789,13 @@ Bidders that want to support the User ID module in Prebid Server, need to update "uids": [{ "id": "11111111" }] + },{ + },{ + "source": "hcn.health", + atype: 3, + "uids": [{ + "id": "11111111" + }] },{ "source": "britepool.com", "uids": [{ From cbba12d7209281bd453f30e24fcdb9b21874e21a Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 18 May 2021 12:20:48 -0400 Subject: [PATCH 162/536] removing video module warning (#2970) --- download.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/download.md b/download.md index 1d691bb7bd..25f47e9173 100644 --- a/download.md +++ b/download.md @@ -168,9 +168,6 @@ Prebid.js is open source software that is offered for free as a convenience. Whi {% assign module_pages = site.pages | where: "page_type", "module" %} {% assign analytics_pages = site.pages | where: "layout", "analytics" %} -{: .alert.alert-danger :} -**Note:** an important bug in the [DFP Video Module](/dev-docs/modules/dfp_video.html) was introduced with 3.27 and fixed in 4.3. The dfpVideoModule only looked in adunit.sizes but adunit.sizes was stripped. Unfortunately there's not a workaround - if you use that video module, you shouldn't use Prebid.js 3.27 through 4.2 inclusive. -

Select Prebid Version

+
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md index 9b47014c35..513cacab8b 100644 --- a/dev-docs/bidders/appnexus.md +++ b/dev-docs/bidders/appnexus.md @@ -30,8 +30,8 @@ gvl_id: 32 {: .alert.alert-danger :} -All AppNexus placements included in a single call to `requestBids` must belong to the same parent Publisher. If placements from two different publishers are included in the call, the AppNexus bidder will not return any demand for those placements.
-*Note: This requirement does not apply to adapters that are [aliasing]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.aliasBidder) the AppNexus adapter.* +All AppNexus (Xandr) placements included in a single call to `requestBids` must belong to the same parent Publisher. If placements from two different publishers are included in the call, the AppNexus bidder will not return any demand for those placements.
+*Note: This requirement does not apply to adapters that are [aliasing](/dev-docs/publisher-api-reference/aliasBidder.html) the AppNexus adapter.* #### Bid Params @@ -199,7 +199,7 @@ To view the results of the debug auction, add the `pbjs_debug=true` query string #### Prebid Server Test Request -The following test parameters can be used to verify that Prebid Server is working properly with the +The following test parameters can be used to verify that Prebid Server is working properly with the server-side Appnexus adapter. This example includes an `imp` object with an Appnexus test placement ID and sizes that would match with the test creative. diff --git a/dev-docs/bidders/districtmDMX.md b/dev-docs/bidders/districtmDMX.md deleted file mode 100644 index 6af35635eb..0000000000 --- a/dev-docs/bidders/districtmDMX.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: bidder -title: DistrictmDMX -description: Prebid DistrictmDMX Bidder Adaptor -pbjs: true -biddercode: districtmDMX -gdpr_supported: true -schain_supported: true -getFloor: true -usp_supported: true -coppa_supported: true -userIds: britepoolId, criteo, id5Id, identityLink, intentiq, liveIntentId, netId, parrableId, pubCommonId, unifiedId ---- - - - -### Bid Params - -##### Prebid version 1.0 and above. - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|------------|----------|---------------------|------------------|-----------| -| `dmxid` | required | Placement Id | `100001` | `integer` | -| `memberid` | required | Account id | `100003` | `integer` | - -##### Prebid 0.34~ legacy - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|------------|----------|-------------------------|------------------|-----------| -| `id` | required | Placement ID | `123456789` | `integer` | -| `floor` | optional | Bid floor price | `"1.00"` | `string` | -| `revShare` | optional | Publisher Revenue Share | `"0.85"` | `string` | -| `currency` | optional | Currency code | `"usd"` | `string` | - diff --git a/dev-docs/bidders/safereach.md b/dev-docs/bidders/safereach.md deleted file mode 100644 index 1c2ff90c6b..0000000000 --- a/dev-docs/bidders/safereach.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: bidder -title: SafeReach -description: Prebid Safe Reach Bidder Adaptor -pbjs: true -biddercode: safereach -aliasCode : aardvark ---- - -### bid params - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|------|----------|--------------------|----------|----------| -| `ai` | required | The auction ID | `'XBC1'` | `string` | -| `sc` | required | The adshortcode | `'AF2g'` | `string` | diff --git a/dev-docs/bidders/telaria.md b/dev-docs/bidders/telaria.md index 947e6ba625..d62ab0f983 100644 --- a/dev-docs/bidders/telaria.md +++ b/dev-docs/bidders/telaria.md @@ -9,7 +9,7 @@ gdpr_supported: true --- ### Overview -This documentation covers some of the parameters that the **Telaria** `(previously Tremor Video)` exchange accepts. And is intended to be referenced by publishers using prebid 1.x. Documentation for prebid 0.x can be found under [tremor](/dev-docs/bidders/bidders.html#tremor) +This documentation covers some of the parameters that the **Telaria** `(previously Tremor Video)` exchange accepts. And is intended to be referenced by publishers using prebid 1.x. Documentation for prebid 0.x can be found under [tremor](/dev-docs/bidders/tremor) ### Bid Params Please refer to the **Tag Parameters** section in the [Telaria Console](https://console.telaria.com) diff --git a/dev-docs/bidders/tribeos.md b/dev-docs/bidders/tribeos.md deleted file mode 100644 index 1fb5d025d0..0000000000 --- a/dev-docs/bidders/tribeos.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: bidder -title: tribeOS -description: Prebid tribeOS Bidder Adapter -pbjs: true -biddercode: tribeos ---- - -### Note - -Please contact your account manager before using this adapter. - -### Bid Params - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|------------------|----------|------------------|------------------------------------------|-------------------| -| `placementId` | required | tribeOS's placement id | `'3gl2jk225'` | `string` | diff --git a/dev-docs/conditional-ad-units.md b/dev-docs/conditional-ad-units.md index c4073de26f..586416930b 100644 --- a/dev-docs/conditional-ad-units.md +++ b/dev-docs/conditional-ad-units.md @@ -13,7 +13,7 @@ sidebarType: 1 # Conditional Ad Units {:.no_toc} -The [global sizeConfig](/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads) and [Advanced Size Mapping](/dev-docs/modules/sizeMappingV2.html) features are useful for standard responsive ad designs, but a number of other scenarios are supported as well: +The [global sizeConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads) and [Advanced Size Mapping](/dev-docs/modules/sizeMappingV2.html) features are useful for standard responsive ad designs, but a number of other scenarios are supported as well: * TOC {:toc} @@ -22,10 +22,10 @@ By supporting these scenarios, header bidding can be more efficient - the browse The basic steps are: -1. Build up an array of 'labels' from two sources: as an output of [`sizeConfig`](/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads), as an optional argument to [`requestBids()`](/dev-docs/publisher-api-reference.html#module_pbjs.requestBids), or both. +1. Build up an array of 'labels' from two sources: as an output of [`sizeConfig`](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads), as an optional argument to [`requestBids()`](/dev-docs/publisher-api-reference/requestBids.html), or both. 1. Apply label targeting to AdUnits or specific bids. -See the [Publisher API reference]({{site.baseurl}}/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads) for syntax. +See the [Publisher API reference](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads) for syntax. ## What if some bidders should be skipped for some devices? @@ -225,7 +225,7 @@ See the [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) if ## What if some bid requests apply only to users originating certain from countries? -Labels aren't constrained to describing device size -- they can be used for many types of conditions the page maywant to define. Besides being defined as part of `sizeConfig`, labels can also be passed into the [`requestBids()`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.requestBids) function as an argument. +Labels aren't constrained to describing device size -- they can be used for many types of conditions the page maywant to define. Besides being defined as part of `sizeConfig`, labels can also be passed into the [`requestBids()`](/dev-docs/publisher-api-reference/requestBids.html) function as an argument. A specific use case: suppose that a certain bidder doesn't have a data center outside of a certain region. It's really not worth sending them bid @@ -266,11 +266,11 @@ var AdUnits = [{ This example shows that the 'euroMobileBidder' is only interested in receiving bids that have **both** labels: -* "eur" as passed into [`requestBids()`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.requestBids) +* "eur" as passed into [`requestBids()`](/dev-docs/publisher-api-reference/requestBids.html) * "phone" as created by `sizeConfig` ## Further Reading -+ [Responsive ad designs](/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads) ++ [Responsive ad designs](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads) + [Advanced Size Mapping Module](/dev-docs/modules/sizeMappingV2.html) + [Using Media Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries) diff --git a/dev-docs/examples/basic-example.md b/dev-docs/examples/basic-example.md index 516ebbcb90..982bb60b62 100644 --- a/dev-docs/examples/basic-example.md +++ b/dev-docs/examples/basic-example.md @@ -8,7 +8,7 @@ sidebarType: 1 about: - Asynchronous Prebid.js integration with single Google Ad Manager ad slot -- Default keyword targeting setup (
reference) +- Default keyword targeting setup (reference) - Default price granularity jsfiddle_link: jsfiddle.net/Prebid_Examples/94jt62b8/7/embedded/html,result diff --git a/dev-docs/examples/custom-price-buckets.md b/dev-docs/examples/custom-price-buckets.md index f5d2c02ca6..6f914011e7 100644 --- a/dev-docs/examples/custom-price-buckets.md +++ b/dev-docs/examples/custom-price-buckets.md @@ -7,7 +7,7 @@ sidebarType: 1 about: - Custom price granularity buckets using pbjs.setConfig() -- See the the API reference for more detail. +- See the the API reference for more detail. jsfiddle_link: jsfiddle.net/Prebid_Examples/vq05dhnj/2/embedded/html,result diff --git a/dev-docs/faq.md b/dev-docs/faq.md index 0767e28a96..931e99b616 100644 --- a/dev-docs/faq.md +++ b/dev-docs/faq.md @@ -54,7 +54,7 @@ There is an analysis from the Prebid team here which may be useful: ## Does Prebid.js cache bids? -It can. Versions 1.x of Prebid.js would re-consider previous bids under limited circumstances. In Prebid.js 2.0 and later, the [`useBidCache`](/dev-docs/publisher-api-reference.html#setConfig-Use-Bid-Cache) option can be used to enable this functionality. +It can. Versions 1.x of Prebid.js would re-consider previous bids under limited circumstances. In Prebid.js 2.0 and later, the [`useBidCache`](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Use-Bid-Cache) option can be used to enable this functionality. The "limited bid caching" feature applies only: @@ -66,7 +66,7 @@ The "limited bid caching" feature applies only: Since the storage is in the browser, cached bids only apply to a single page context. If the user refreshes the page, the bid is lost. Each bid adapter defines the amount of time their bids can be cached and reconsidered. -This setting is called “Time to Live” (TTL), documented in the pbjs.getBidResponse [parameter table here]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.getBidResponses). +This setting is called “Time to Live” (TTL), documented in the pbjs.getBidResponse [parameter table here](/dev-docs/publisher-api-reference/getBidResponses.html). Examples of scenarios where a bid may be reconsidered in Prebid.js: @@ -81,13 +81,13 @@ Here's how it works: 1. When all the new bids are back or the timeout is reached, Prebid.js considers both the new bids on that AdUnit and previously cached bids. 1. Previously cached bids will be discarded if they've reached their TTL or if they have status `targetingSet` or `rendered`. 1. A cached bid may be used if its CPM beats the new bids. -1. Bids that win are removed from the pool. This is automatic for display and native ads, and can be done manually by the publisher for video ads by using the [markWinningBidAsUsed]({{site.github.url}}/dev-docs/publisher-api-reference.html#module_pbjs.markWinningBidAsUsed) function. +1. Bids that win are removed from the pool. This is automatic for display and native ads, and can be done manually by the publisher for video ads by using the [markWinningBidAsUsed](/dev-docs/publisher-api-reference/markWinningBidAsUsed.html) function. ## Some of my demand partners send gross bids while others send net bids; how can I account for this difference? You will want to adjust the gross bids so that they compete fairly with the rest of your demand, so that you are seeing the most revenue possible. -In Prebid.js, you can use a `bidCpmAdjustment` function in [the `bidderSettings` object]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.bidderSettings) to adjust any bidder that sends gross bids. +In Prebid.js, you can use a `bidCpmAdjustment` function in [the `bidderSettings` object](/dev-docs/publisher-api-reference/bidderSettings.html) to adjust any bidder that sends gross bids. ## Does Prebid.js support synchronous ad server tags? @@ -131,7 +131,7 @@ Prebid.org does not support any version of Prebid.js prior to the previous versi ## How can I change the price granularity for different ad units? -If you need different [price granularities]({{site.baseurl}}/dev-docs/publisher-api-reference.html#setConfig-Price-Granularity) for different AdUnits (e.g. video and display), the only way for now is to make sure the auctions don't run at the same time. e.g. Run one of them first, then kick off the other in the bidsBackHandler. e.g. here's one approach: +If you need different [price granularities](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Price-Granularity) for different AdUnits (e.g. video and display), the only way for now is to make sure the auctions don't run at the same time. e.g. Run one of them first, then kick off the other in the bidsBackHandler. e.g. here's one approach: 1. Call `setConfig` to define the priceGranularity for the first set of AdUnits 1. Initiate the first auction with `requestBids` @@ -144,11 +144,11 @@ The handling of this scenario will be improved in a future release. ## How can I control how many targeting variables are sent to my ad server? -One way to limit the number of bytes sent to the ad server is to send only the winning bid by disabling the [enableSendAllBids](/dev-docs/publisher-api-reference.html#setConfig-Send-All-Bids) option. However, there are optimization and reporting +One way to limit the number of bytes sent to the ad server is to send only the winning bid by disabling the [enableSendAllBids](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Send-All-Bids) option. However, there are optimization and reporting benefits for sending more than one bid. Once you find the right balance for your application, you can specify -what's sent to the ad server with [targetingControls.auctionKeyMaxChars](/dev-docs/publisher-api-reference.html#setConfig-targetingControls) and/or [sendBidsControl.bidLimit](/dev-docs/publisher-api-reference.html#setConfig-Send-Bids-Control) +what's sent to the ad server with [targetingControls.auctionKeyMaxChars](/dev-docs/publisher-api-reference/setConfig.html#setConfig-targetingControls) and/or [sendBidsControl.bidLimit](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Send-Bids-Control) ## Can I run multiple different versions of Prebid.js concurrently? diff --git a/dev-docs/integrate-with-the-prebid-analytics-api.md b/dev-docs/integrate-with-the-prebid-analytics-api.md index 59a49042b1..15aec64b6b 100644 --- a/dev-docs/integrate-with-the-prebid-analytics-api.md +++ b/dev-docs/integrate-with-the-prebid-analytics-api.md @@ -71,7 +71,7 @@ Analytics adapter for Example.com. Contact prebid@example.com for information. 1. Create a JS file under `modules` with the name of the bidder suffixed with 'AnalyticsAdapter', e.g., `exAnalyticsAdapter.js` -2. Create an analytics adapter to listen for [Prebid events](/dev-docs/publisher-api-reference.html#module_pbjs.onEvent) and call the analytics library or server. See the existing *AnalyticsAdapter.js files in the repo under [modules](https://github.com/prebid/Prebid.js/tree/master/modules). +2. Create an analytics adapter to listen for [Prebid events](/dev-docs/publisher-api-reference/onEvent.html) and call the analytics library or server. See the existing *AnalyticsAdapter.js files in the repo under [modules](https://github.com/prebid/Prebid.js/tree/master/modules). 3. There are two types of analytics adapters. The example here focuses on the 'endpoint' type. See [AnalyticsAdapter.js](https://github.com/prebid/Prebid.js/blob/master/src/AnalyticsAdapter.js) for more info on the 'bundle' type. diff --git a/dev-docs/modules/consentManagement.md b/dev-docs/modules/consentManagement.md index e28579f9f8..021d2a09c9 100644 --- a/dev-docs/modules/consentManagement.md +++ b/dev-docs/modules/consentManagement.md @@ -58,7 +58,7 @@ Please start by understanding the IAB's [TCF Implementation Guide](https://githu To utilize this module, a Consent Management Platform (CMP) compatible with the [IAB TCF v1.1 spec](https://iabeurope.eu/all-news/the-iab-europe-transparency-consent-framework-tcf-steering-group-votes-to-extend-technical-support-for-tcf-v1-1/) or [IAB TCF v2.0 spec](https://iabeurope.eu/tcf-2-0/) needs to be implemented on the site to interact with the user and obtain their consent choices. It's important to understand the details of how the CMP works before integrating it with Prebid.js -In general, implementation details for CMPs are not covered by Prebid.org, but we do recommend to that you place the CMP code before the Prebid.js code in the head of the page in order to ensure the CMP's framework is loaded before the Prebid code executes. In addition, the community is collecting a set of [CMP best practices](/dev-docs/cmp-best-practices.html). +In general, implementation details for CMPs are not covered by Prebid.org, but we do recommend to that you place the CMP code before the Prebid.js code in the head of the page in order to ensure the CMP's framework is loaded before the Prebid code executes. In addition, the community is collecting a set of [CMP best practices](/dev-docs/cmp-best-practices.html). Once the CMP is implemented, simply include this module into your build and add a `consentManagement` object in the `setConfig()` call. Adapters that support this feature will then be able to retrieve the consent information and incorporate it in their requests. @@ -318,8 +318,8 @@ Here are some things that publishers can do to control various activities: 1. If the current page view is known to be in GDPR scope, make sure the adapters are aware of it even on the first page where CMP hasn't been activated by setting the defaultGdprScope: `consentManagement.gdpr.defaultGdprScope: true` 2. If the user hasn't consented to Purpose 1: - - Set [deviceAccess: false](/dev-docs/publisher-api-reference.html#setConfig-deviceAccess) - - Don't enable [userSync](/dev-docs/publisher-api-reference.html#setConfig-Configure-User-Syncing) + - Set [deviceAccess: false](/dev-docs/publisher-api-reference/setConfig.html#setConfig-deviceAccess) + - Don't enable [userSync](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-User-Syncing) - Don't enable [userId](/dev-docs/modules/userId.html) modules 3. If you're working with bidders that don't support GDPR, consider dynamically populating adunits as needed. See the list below for bidders supporting GDPR. diff --git a/dev-docs/modules/currency.md b/dev-docs/modules/currency.md index e728049831..5f51829cf8 100644 --- a/dev-docs/modules/currency.md +++ b/dev-docs/modules/currency.md @@ -17,7 +17,7 @@ sidebarType : 1 This module supports the conversion of multiple bidder currencies into a single currency used by the publisher's ad server. In previous versions of Prebid, this was accomplished -by using [BidderSettings.bidCpmAdjustment]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.bidderSettings), but that's a static value not changed except when +by using [BidderSettings.bidCpmAdjustment]({{site.baseurl}}/dev-docs/publisher-api-reference/bidderSettings.html), but that's a static value not changed except when the web development team makes a manual update. Publishers may continue to use the bidCpmAdjustment approach, or may begin using this optional module, gaining automatic updates as currency exchange rates fluctuate. Here's how it works at a high level: diff --git a/dev-docs/modules/dfp_video.md b/dev-docs/modules/dfp_video.md index 8477587a42..57a3ff9bc2 100644 --- a/dev-docs/modules/dfp_video.md +++ b/dev-docs/modules/dfp_video.md @@ -20,12 +20,12 @@ This module is required to use the Prebid Instream video examples with DFP Adser The standard options: -- Build from a locally-cloned git repo +- Build from a locally-cloned git repo - Receive the email package from the Prebid [Download]({{site.baseurl}}/download.html) page - + ### Step 2: Integrate into your prebid.js configuration -The method exposes the [`pbjs.adServers.dfp.buildVideoUrl`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.adServers.dfp.buildVideoUrl) method to use. For an example, see the DFP video guide linked below. +The method exposes the [`pbjs.adServers.dfp.buildVideoUrl`]({{site.baseurl}}/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) method to use. For an example, see the DFP video guide linked below. ## Further Reading diff --git a/dev-docs/modules/idLibrary.md b/dev-docs/modules/idLibrary.md index f85d8152fe..306b877158 100644 --- a/dev-docs/modules/idLibrary.md +++ b/dev-docs/modules/idLibrary.md @@ -15,7 +15,7 @@ Maintainer: eng-dmp@magnite.com # ID Import Library {:.no_toc} -The ID Import Library module gathers and generates a map of identities present on the page. The primary usecase for this adapter is for Publishers who have included multiple UserId subadapters in their prebid.js implementation, and want to store the resulting user ids serverside for modeling or graphing purposes. The ID Library module, anchors the response of `refreshUserIds()` to a presistant identifier (md5 encrypted) and returns an map of uids. This map of uids comes in the form of a POST message in JSON format and must be output to a publisher configured endpoint. +The ID Import Library module gathers and generates a map of identities present on the page. The primary usecase for this adapter is for Publishers who have included multiple UserId subadapters in their prebid.js implementation, and want to store the resulting user ids serverside for modeling or graphing purposes. The ID Library module, anchors the response of `refreshUserIds()` to a persistant identifier (md5 encrypted) and returns an map of uids. This map of uids comes in the form of a POST message in JSON format and must be output to a publisher configured endpoint. The module attempts to extract a persistant identifier in the following ways: diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index fbceb18a08..45b0155b87 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -46,13 +46,13 @@ If you are looking for bidder adapter parameters, see [Bidders' Params]({{site.b ## Real-Time Data Providers -All of the modules that fall under the Real-Time Data (RTD) category conform to +All of the modules that fall under the Real-Time Data (RTD) category conform to a consistent set of publisher controls. The pub can choose to run multiple RTD modules, define an overall amount of time they're willing to wait for results, and even flag some of the modules as being more "important" than others. -See [the realTimeData setConfig](/dev-docs/publisher-api-reference.html#setConfig-realTimeData) reference for more details. +See [the realTimeData setConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-realTimeData) reference for more details. {% assign module_pages = site.pages | where: "page_type", "module" | where: "module_type", "rtd" %} diff --git a/dev-docs/modules/instreamTracking.md b/dev-docs/modules/instreamTracking.md index 07ef0f29fd..4e3d18255e 100644 --- a/dev-docs/modules/instreamTracking.md +++ b/dev-docs/modules/instreamTracking.md @@ -45,7 +45,7 @@ pbjs.setConfig({ #### Example with urlPattern While checking for URLs having `videoCacheKey`, there are chances of false positives. To avoid those cases, we can set `instreamTracking.urlPattern: /REGEX_PATTERN/`. - + {% highlight js %} pbjs.setConfig({ 'instreamTracking': { @@ -80,4 +80,4 @@ pbjs.setConfig({ ## Further Reading ​ [Prebid.js for Video]({{site.baseurl}}/prebid-video/video-overview.html) -[Client-side Caching of VAST XML]({{site.baseurl}}/dev-docs/publisher-api-reference.html#setConfig-vast-cache) +[Client-side Caching of VAST XML]({{site.baseurl}}/dev-docs/publisher-api-reference/setConfig.html#setConfig-vast-cache) diff --git a/dev-docs/modules/konduit.md b/dev-docs/modules/konduit.md index 686b8575a7..7623ae7aa2 100644 --- a/dev-docs/modules/konduit.md +++ b/dev-docs/modules/konduit.md @@ -32,7 +32,7 @@ Build your Prebid.js package in one of two ways: - Insert the Konduit module code in the source code of your page. The module exposes the `pbjs.adServers.konduit.processBids` function. - + - Provide input parameters to the function. (All parameters are shown in the following table.) {: .table .table-bordered .table-striped } @@ -43,7 +43,7 @@ Build your Prebid.js package in one of two ways: | adUnitCode | string | adUnitCode where a winner bid can be found | - | | timeout | number | Max time to wait for Konduit response with cache key and kCpm data | 1000 | | callback | function | The callback function is called once Konduit caches data for the bid. Arguments of this function are `error` and `bids` (`error` should be `null` if Konduit request is successful). | - | - + Konduit Accelerate module respects the Prebid `enableSendAllBids` flag and supports both ‘Send All Bids’ and ‘Use only the winning bid’ scenarios. Prebid set the `enableSendAllBids` flag to true by default and it can be explicitly disabled in Prebid config if needed. @@ -52,7 +52,7 @@ pbjs.setConfig({ enableSendAllBids: false }); ``` -Please refer to [Publisher API Reference (Send All Bids)](https://prebid.org/dev-docs/publisher-api-reference.html#setConfig-Send-All-Bids) for more information on the Send All Bids settings. +Please refer to [Publisher API Reference (Send All Bids)](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Send-All-Bids) for more information on the Send All Bids settings. ### Step 3: Configure Google Ad Manager (GAM) @@ -81,7 +81,7 @@ Note that the creative URL contains a few custom macros that allow Konduit platf | k_cache_key | %%PATTERN:k_cache_key%% | The macro is passing a cache key so that Konduit platform is able to fetch current bid tag for processing. This macro is recommended for use in a ‘single bid’ mode. In ‘send all bids’ mode it always represents a winning bid. | | konduit_cache_key | %%PATTERN:konduit_cache_key%% | *This macro is deprecated and k_cache_key should be used instead* | | k_cache_key_BIDDERCODE | %%PATTERN:k_cache_key_rubicon%% | The macro is passing a cache key so that Konduit platform is able to fetch a bidder tag for processing. This macro should be used in a ‘send all bids’ mode. | - + Refer to the following documentation for more information on Google Ad Manager setup: [Step By Step Guide to Google Ad Manager Setup](https://prebid.org/adops/step-by-step.html) [Send all bids to the ad server - Ad Ops setup](https://prebid.org/adops/send-all-bids-adops.html) diff --git a/dev-docs/modules/schain.md b/dev-docs/modules/schain.md index 8b030aeb05..77934e227c 100644 --- a/dev-docs/modules/schain.md +++ b/dev-docs/modules/schain.md @@ -83,7 +83,7 @@ pbjs.setBidderConfig({ }); {% endhighlight%} -You can find more information about the `pbjs.setBidderConfig` function in the [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.setBidderConfig). +You can find more information about the `pbjs.setBidderConfig` function in the [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference/setBidderConfig.html). ### Global and Bidder-Specific Together diff --git a/dev-docs/modules/sizeMappingV2.md b/dev-docs/modules/sizeMappingV2.md index 2598a26452..e5f491e392 100644 --- a/dev-docs/modules/sizeMappingV2.md +++ b/dev-docs/modules/sizeMappingV2.md @@ -17,7 +17,7 @@ sidebarType: 1 ## Overview -The Advanced Size Mapping module enables configuration of responsive ad units with more flexibility than the [core `sizeConfig`](/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads) feature. It detects the browser viewport dimensions, and based on that, applies a series of checks on the ad unit to determine: +The Advanced Size Mapping module enables configuration of responsive ad units with more flexibility than the [core `sizeConfig`](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads) feature. It detects the browser viewport dimensions, and based on that, applies a series of checks on the ad unit to determine: - which banner sizes should be active - what the playerSize is for a video media type @@ -41,15 +41,15 @@ It's meant for publishers that have complex site designs. You should use this mo {:/} If, on the other hand, the AdUnits, bidders, and mediaTypes all change behavior together at the same viewport width, -then the built-in [`sizeConfig`](/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads) feature will work. +then the built-in [`sizeConfig`](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads) feature will work. {% endcapture %} {% include alerts/alert_tip.html content=tip-choosing %} ## Differences Between Global and AdUnit Level sizeConfig -If you've used [`sizeConfig`](/dev-docs/publisher-api-reference.html#setConfig-Configure-Responsive-Ads) in Prebid.js before, read this section to learn about the differences. If you haven't used sizeConfig before, you can skip to the next section. +If you've used [`sizeConfig`](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-Responsive-Ads) in Prebid.js before, read this section to learn about the differences. If you haven't used sizeConfig before, you can skip to the next section. -- The biggest change to size mapping is the introduction of **AdUnit** and **Bidder** level sizeConfig declarations. Instead of defining a global sizeConfig object configured in [`pbjs.setConfig`](/dev-docs/publisher-api-reference.html#module_pbjs.setConfig), each Ad Unit and Bidder can define and control their own set of sizeConfig rules. This process makes it easier to reason which sizes should be active for the current viewport size in complex scenarios. +- The biggest change to size mapping is the introduction of **AdUnit** and **Bidder** level sizeConfig declarations. Instead of defining a global sizeConfig object configured in [`pbjs.setConfig`](/dev-docs/publisher-api-reference/setConfig.html#module_pbjs.setConfig), each Ad Unit and Bidder can define and control their own set of sizeConfig rules. This process makes it easier to reason which sizes should be active for the current viewport size in complex scenarios. - A **sizeConfig** parameter may be specified on the AdUnit mediaType or a bidder. In these scenarios, the syntax is a little different than with the global configuration. Here's an example for a sizeConfig object for banner media type: @@ -68,7 +68,7 @@ If you've used [`sizeConfig`](/dev-docs/publisher-api-reference.html#setConfig-C - Likewise, **mediaQuery** is not used in AdUnit sizeConfig objects. Instead, an array of size buckets is defined by just the `minViewPort` property. Only one size bucket activates based on viewport size. -It may be useful to compare the globally-configured sizeConfig with the AdUnit-level sizeConfig. [Here is an example](/dev-docs/publisher-api-reference.html#sizeConfig-Example) using global sizeConfig. +It may be useful to compare the globally-configured sizeConfig with the AdUnit-level sizeConfig. [Here is an example](/dev-docs/publisher-api-reference/setConfig.html#sizeConfig-Example) using global sizeConfig. Here's that same example using Advanced Size Mapping: diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index ddaeb57ef5..5051ecd1af 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -188,7 +188,7 @@ gulp build --modules=admixerIdSystem ### BritePool -The [BritePool]((https://britepool.com)) ID is a persistent identifier that enables identity resolution for people-based marketing in the cookieless world. Every BritePool ID is associated with a real identity. As a result, publishers, SSPs and DSPs that integrate with BritePool, or automated +The [BritePool](https://britepool.com) ID is a persistent identifier that enables identity resolution for people-based marketing in the cookieless world. Every BritePool ID is associated with a real identity. As a result, publishers, SSPs and DSPs that integrate with BritePool, or automated integration partners (such as PubMatic), are able to maximize revenues without cookies. As addressable individuals visit publisher websites and mobile apps, the BritePool IDs associated with these identities are passed into the bidstream; enabling advertisers to transact against these BritePool ID's and publishers to maximize the revenues associated with their inventory and audience. The BritePool ID combines consumer privacy with easy, rapid integration for publishers and does not significantly increase the computing resources required of DSPs and SSPs. Add it to your Prebid.js package with: @@ -274,7 +274,7 @@ pbjs.setConfig({ ### Deepintent DPES ID by Deepintent The DeepIntent Healthcare Marketing Platform is the first and only DSP that combines real-world health data, premium partnerships, and custom integrations to reach patients and providers across any device. DeepIntent empowers publishers to maximize their inventory, collaborate and transact directly with advertisers, and grow their business in a safe, controlled, transparent, and privacy-compliant way. Our publisher partners sell inventory on every channel via real-time bidding or conducting one-to-one trading with hundreds of the country’s leading healthcare brands and agencies. - + DeepIntent’s DPES ID is a shared user identifier built for healthcare marketers and publishers integrated within DeepIntent’s Healthcare Marketplace. The DPES ID lets users protect and manage their privacy throughout the advertising value chain. User data written and associated with the DPES ID is not stored on DeepIntent’s servers. Instead, this data is stored in a decentralized way on a user’s browser. Users can still opt out of the ads by navigating to https://option.deepintent.com/adchoices #### Deepintent DPES ID Registration @@ -443,7 +443,7 @@ pbjs.setConfig({ ### Halo ID from Audigent -Audigent is a next-generation data management platform and a first-of-a-kind "data agency" containing some of the most exclusive content-consuming audiences across desktop, mobile and social platforms. Our HaloId module allows for user id resolution and Audigent user data segmentation to be retrieved for users across the web. For assistance setting up your module please contact us at [prebid@audigent.com](prebid@audigent.com). +Audigent is a next-generation data management platform and a first-of-a-kind "data agency" containing some of the most exclusive content-consuming audiences across desktop, mobile and social platforms. Our HaloId module allows for user id resolution and Audigent user data segmentation to be retrieved for users across the web. For assistance setting up your module please contact us at [prebid@audigent.com](mailto:prebid@audigent.com). #### HaloId Configuration Add the Halo ID system to your Prebid.js package with: @@ -1865,7 +1865,7 @@ If you need to export the user IDs stored by Prebid User ID module, the `getUser pbjs.getUserIds() // returns object like bidRequest.userId. e.g. {"pubcid":"1111", "tdid":"2222"} ``` -You can use [`getUserIdsAsEids()`](https://docs.prebid.org/dev-docs/publisher-api-reference.html#userId.getUserIdsAsEids) to get the user IDs stored by Prebid User ID module in ORTB Eids format. Refer [eids.md](https://github.com/prebid/Prebid.js/blob/master/modules/userId/eids.md) for output format. +You can use [`getUserIdsAsEids()`](/dev-docs/publisher-api-reference/getUserIds.html) to get the user IDs stored by Prebid User ID module in ORTB Eids format. Refer [eids.md](https://github.com/prebid/Prebid.js/blob/master/modules/userId/eids.md) for output format. ``` pbjs.getUserIdsAsEids() // returns userIds in ORTB Eids format. e.g. [ @@ -1920,5 +1920,5 @@ User IDs from Prebid User ID module can be passed to GAM for targeting in Google ## Further Reading -* [Prebid.js Usersync](/dev-docs/publisher-api-reference.html#setConfig-Configure-User-Syncing) +* [Prebid.js Usersync](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-User-Syncing) * [GDPR ConsentManagement Module](/dev-docs/modules/consentManagement.html) diff --git a/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md b/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md index 9c88fce8f2..4d8265ea4a 100644 --- a/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md +++ b/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md @@ -293,7 +293,7 @@ Additional options that are passed in to the prebid.js `setConfig()` method. JSON object. -Supported fields are documented in the [Prebid.org Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.setConfig) +Supported fields are documented in the [Prebid.org Publisher API Reference](/dev-docs/publisher-api-reference/setConfig.html) **Required?** @@ -314,7 +314,7 @@ None Parameters used when using Google Ad Manager as the ad server. -See prebid.org documentation for [buildVideoUrl]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.adServers.dfp.buildVideoUrl) +See prebid.org documentation for [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) **Acceptable Values:** diff --git a/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md b/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md index 92b63718f6..555f092124 100644 --- a/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md +++ b/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md @@ -124,7 +124,7 @@ Define some behaviors for the platform and specific adapters. The basic structur **Acceptable Values:** -When you are defining all options to the prebid plugin directly on the page, you may use a JSON object using same syntax described under “bidderSettings” in the [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.bidderSettings) +When you are defining all options to the prebid plugin directly on the page, you may use a JSON object using same syntax described under “bidderSettings” in the [Publisher API Reference](/dev-docs/publisher-api-reference/bidderSettings.html) **Required?** @@ -181,7 +181,7 @@ Additional options that are passed in to the prebid.js `setConfig()` method. JSON object. -Supported fields are documented in the [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.setConfig) +Supported fields are documented in the [Publisher API Reference](/dev-docs/publisher-api-reference/setConfig.html) **Required?** @@ -202,7 +202,7 @@ None Parameters used when using Google Ad Manager (formerly DFP) as the ad server. -See documentation for [buildVideoUrl]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.adServers.dfp.buildVideoUrl) for more information. +See documentation for [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) for more information. **Acceptable Values:** diff --git a/dev-docs/prebid-1.0-API.md b/dev-docs/prebid-1.0-API.md index 3fa9625215..d8a7b8a428 100644 --- a/dev-docs/prebid-1.0-API.md +++ b/dev-docs/prebid-1.0-API.md @@ -29,12 +29,12 @@ The following functions and variables were removed as of 1.0: - `pbjs._adUnitCodes` - `pbjs._adsReceived` - `pbjs.cbTimeout` -- `pbjs.addCallback` and `pbjs.removeCallback` in favor of the [onEvent API]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.onEvent) +- `pbjs.addCallback` and `pbjs.removeCallback` in favor of the [onEvent API](/dev-docs/publisher-api-reference/onEvent.html) - `pbjs.allBidsAvailable` -- `pbjs.buildMasterVideoTagFromAdserverTag` in favor of [`pbjs.adServers.dfp.buildVideoUrl`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.adServers.dfp.buildVideoUrl) +- `pbjs.buildMasterVideoTagFromAdserverTag` in favor of [`pbjs.adServers.dfp.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) - `adUnit.sizeMapping` in favor of [`pbjs.setConfig({sizeConfig:[ ... ]})`]({{site.baseurl}}/dev-docs/prebid-1.0-API.html#size-mapping-changes) -Other methods were removed as part of the [new `setConfig` API]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.setConfig) - for details, see [the section below describing the new `pbjs.setConfig` API](#pbjs.setConfig). +Other methods were removed as part of the [new `setConfig` API](/dev-docs/publisher-api-reference/setConfig.html) - for details, see [the section below describing the new `pbjs.setConfig` API](#pbjs.setConfig). {: .alert.alert-success :} For a complete list of methods that were removed, see the [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference.html). @@ -43,7 +43,7 @@ For a complete list of methods that were removed, see the [Publisher API Referen ## Legacy APIs replaced by `pbjs.setConfig` -For 1.0, the following APIs were removed in favor of a generic "options" param object passed to [`pbjs.setConfig`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.setConfig): +For 1.0, the following APIs were removed in favor of a generic "options" param object passed to [`pbjs.setConfig`](/dev-docs/publisher-api-reference/setConfig.html): - `pbjs.bidderTimeout` - use `pbjs.setConfig({bidderTimeout})` instead - `pbjs.logging` - use `pbjs.setConfig({debug})` instead diff --git a/dev-docs/prebid-troubleshooting-guide.md b/dev-docs/prebid-troubleshooting-guide.md index 8ed9c50bf9..a842461c37 100644 --- a/dev-docs/prebid-troubleshooting-guide.md +++ b/dev-docs/prebid-troubleshooting-guide.md @@ -54,7 +54,7 @@ You can review what ad units have been configured for Prebid by opening your bro Open your browser console and type `pbjs.getBidResponses();` to see a list of the ad units that have been configured. This also shows what bids have been returned from each of the bidder partners in chronological order as shown in the screenshot below. -To see all of the winning bids, open your browser console and type [`pbjs.getAllWinningBids();`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#module_pbjs.getAllWinningBids). +To see all of the winning bids, open your browser console and type [`pbjs.getAllWinningBids();`]({{site.baseurl}}/dev-docs/publisher-api-reference/getAllWinningBids.html). {: .alert.alert-danger :} Keep in mind that any bid responses that come back after [the timeout you configured during setup]({{site.github.url}}/dev-docs/getting-started.html#set-the-ad-server-timeout) will not be sent to the ad server. @@ -99,7 +99,7 @@ To make sure your ad server is set up correctly, answer the following questions: + **Are there other higher priority campaigns running within your ad server?** Higher priority campaigns will prevent Prebid ads with a higher CPM bid from winning in the ad server's auction. For testing purposes, you may want to pause these campaigns or have them excluded when the prebid key values are present. -+ **Is there other remnant inventory in the ad server with a higher CPM that is winning?** To test for this, you may want to use a test creative set up within a bidder partner that has a high CPM or create artificial demand with a [bidCPMadjustment]({{site.github.url}}/dev-docs/publisher-api-reference.html#module_pbjs.bidderSettings). ++ **Is there other remnant inventory in the ad server with a higher CPM that is winning?** To test for this, you may want to use a test creative set up within a bidder partner that has a high CPM or create artificial demand with a [bidCPMadjustment]({{site.github.url}}/dev-docs/publisher-api-reference/bidderSettings.html). + **Have you set up all of the line items in the ad server to match the [setPriceGranularity setting]({{site.github.url}}/dev-docs/examples/custom-price-buckets.html) within Prebid.js?** All of the line items that correspond to your price granularity settings must be set up in your ad server. When there are gaps in the price granularity of your line item setup, bids will be reduced according to the size of the gap. For example, with [dense granularity]({{site.github.url}}/dev-docs/publisher-api-reference.html#dense-granularity), a $3.32 bid will be sent to the ad server as $3.30. @@ -120,5 +120,3 @@ When this event is logged, it shows that Prebid.js has requested to render the a + [Developer Troubleshooting Tips]({{site.github.url}}/dev-docs/troubleshooting-tips.html) + [Common Setup Issues]({{site.github.url}}/dev-docs/common-issues.html) - - diff --git a/dev-docs/publisher-api-reference.md b/dev-docs/publisher-api-reference.md index f8d5d48c95..96028de541 100644 --- a/dev-docs/publisher-api-reference.md +++ b/dev-docs/publisher-api-reference.md @@ -14,2951 +14,20 @@ sidebarType: 1 This page has documentation for the public API methods of Prebid.js. - - -## pbjs - -* [pbjs](#module_pbjs) - - * [.getAdserverTargeting()](#module_pbjs.getAdserverTargeting) - * [.getAdserverTargetingForAdUnitCode([adUnitCode])](#module_pbjs.getAdserverTargetingForAdUnitCode) - * [.getBidResponses()](#module_pbjs.getBidResponses) - * [.getBidResponsesForAdUnitCode(adUnitCode)](#module_pbjs.getBidResponsesForAdUnitCode) - * [.getEvents()](#module_pbjs.onEvent) - * [.getHighestCpmBids([adUnitCode])](#module_pbjs.getHighestCpmBids) - * [.getAllWinningBids()](#module_pbjs.getAllWinningBids) - * [.getAllPrebidWinningBids()](#module_pbjs.getAllPrebidWinningBids) - * [.getHighestUnusedBidResponseForAdUnitCode([adUnitCode])](#module_pbjs.getHighestUnused) - * [.getNoBids()](#module_pbjs.getNoBids) - * [.getNoBidsForAdUnitCode(adUnitCode)](#module_pbjs.getNoBidsForAdUnitCode) - * [.setTargetingForGPTAsync([codeArr], customSlotMatching)](#module_pbjs.setTargetingForGPTAsync) - * [.setTargetingForAst()](#module_pbjs.setTargetingForAst) - * [.renderAd(doc, id)](#module_pbjs.renderAd) - * [.removeAdUnit(adUnitCode)](#module_pbjs.removeAdUnit) - * [.requestBids(requestObj)](#module_pbjs.requestBids) - * [.addAdUnits(Array\|Object)](#module_pbjs.addAdUnits) - * [.bidderSettings](#module_pbjs.bidderSettings) - * [.onEvent(event, handler, id)](#module_pbjs.onEvent) - * [.offEvent(event, handler, id)](#module_pbjs.onEvent) - * [.enableAnalytics(config)](#module_pbjs.enableAnalytics) - * [.aliasBidder(adapterName, aliasedName, options)](#module_pbjs.aliasBidder) - * [.markWinningBidAsUsed(markBidRequest)](#module_pbjs.markWinningBidAsUsed) - * [.setConfig(options)](#module_pbjs.setConfig) - * [debugging](#setConfig-Debugging) - * [deviceAccess](#setConfig-deviceAcess) - * [bidderTimeout](#setConfig-Bidder-Timeouts) - * [maxRequestsPerOrigin](#setConfig-Max-Requests-Per-Origin) - * [disableAjaxTimeout](#setConfig-Disable-Ajax-Timeout) - * [timeoutBuffer](#setConfig-timeoutBuffer) - * [bidderOrder](#setConfig-Bidder-Order) - * [enableSendAllBids](#setConfig-Send-All-Bids) - * [sendBidsControl](#setConfig-Send-Bids-Control) - * [useBidCache](#setConfig-Use-Bid-Cache) - * [pageUrl](#setConfig-Page-URL) - * [publisherDomain](#setConfig-Publisher-Domain) - * [priceGranularity](#setConfig-Price-Granularity) - * [mediaTypePriceGranularity](#setConfig-MediaType-Price-Granularity) - * [s2sConfig](#setConfig-Server-to-Server) (server-to-server config) - * [app](#setConfig-app) (mobile app post-bid) - * [userSync](#setConfig-Configure-User-Syncing) - * [targetingControls](#setConfig-targetingControls) - * [sizeConfig and labels](#setConfig-Configure-Responsive-Ads) (responsive ads) - * [COPPA](#setConfig-coppa) - * [first party data](#setConfig-fpd) - * [cache](#setConfig-vast-cache) - * [instreamTracking](#setConfig-instream-tracking) - requires [Instream Tracking Module](/dev-docs/modules/instreamTracking.html) - * [site](#setConfig-site) - * [auctionOptions](#setConfig-auctionOptions) - * [realTimeData](#setConfig-realTimeData) - * [Generic Configuration](#setConfig-Generic-Configuration) - * [Troubleshooting your config](#setConfig-Troubleshooting-your-configuration) - * [.setBidderConfig(options)](#module_pbjs.setBidderConfig) - * [.getConfig([string])](#module_pbjs.getConfig) - * [.installedModules](#installedModules) - -Functions added by optional modules - - * [.adServers.dfp.buildVideoUrl(options)](#module_pbjs.adServers.dfp.buildVideoUrl) - requires [GAM Video Module](/dev-docs/modules/dfp_video.html) - * [.adServers.dfp.buildAdpodVideoUrl(options)](#module_pbjs.adServers.dfp.buildAdpodVideoUrl) - requires [GAM Video Module](/dev-docs/modules/dfp_video.html) [Alpha] - * [.adServers.freewheel.getTargeting(options)](#module_pbjs.getTargeting) - requires [Freewheel Module](/dev-docs/modules/freewheel.html) - * [.getUserIds()](#userId.getUserIds) - requires [User Id Module](/dev-docs/modules/userId.html) - * [.getUserIdsAsEids()](#userId.getUserIdsAsEids) - requires [User Id Module](/dev-docs/modules/userId.html) - * [.refreshUserIds(options, callback)](#userId.refreshUserIds) - requires [User Id Module](/dev-docs/modules/userId.html) - - - -### pbjs.getAdserverTargeting() ⇒ `object` - -Returns all ad server targeting for all ad units. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent. - -The targeting keys can be configured in [ad server targeting](#module_pbjs.bidderSettings). - -When [deals are enabled]({{site.baseurl}}/adops/deals.html), the object returned by this method may include a field `hb_deal_BIDDERCODE`, where `BIDDERCODE` is replaced by the name of the bidder, e.g., AppNexus, Rubicon, etc. - -**Kind**: static method of [pbjs](#module_pbjs) - -**Returns**: `object` - Map of adUnitCodes and targeting values [] - -**Returned Object Example:** - -{% highlight js %} -{ - "/9968336/header-bid-tag-0": { - "hb_bidder": "rubicon", - "hb_adid": "13f44b0d3c", - "hb_pb": "1.50" - }, - "/9968336/header-bid-tag-1": { - "hb_bidder": "openx", - "hb_adid": "147ac541a", - "hb_pb": "1.00" - }, - "/9968336/header-bid-tag-2": { - "hb_bidder": "appnexus", - "hb_adid": "147ac541a", - "hb_pb": "2.50", - "hb_deal_appnexus": "ABC_123" - } -} -{% endhighlight %} - -
- - - -### pbjs.getAdserverTargetingForAdUnitCode([adunitCode]) ⇒ `object` - -This function returns the query string targeting parameters available at this moment for a given ad unit. For full documentation see function [pbjs.getAdserverTargeting()](#module_pbjs.getAdserverTargeting). - -**Kind**: static method of [pbjs](#module_pbjs) - -**Returns**: `object` - returnObj return bids - -**Request Params:** - -{: .table .table-bordered .table-striped } -| Param | Type | Description | -| --- | --- | --- | -| [adunitCode] | `string` | adUnitCode to get the bid responses for | - -**Returned Object Example:** - -{% highlight js %} -{ - "hb_bidder": "rubicon", - "hb_adid": "13f44b0d3c", - "hb_pb": "0.50" -} -{% endhighlight %} - -
- - - -### pbjs.getBidResponses() ⇒ `object` - -This function returns the bid responses at the given moment. - -**Kind**: static method of [pbjs](#module_pbjs). - -**Returns**: `object` - map | object that contains the bidResponses. - -**Returned Object Params**: - -{: .table .table-bordered .table-striped } -| Param | Type | Description | | -|---------------------+---------+---------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------| -| `bidder` | String | The bidder code. Used by ad server's line items to identify bidders | `rubicon` | -| `adId` | String | The unique identifier of a bid creative. It's used by the line item's creative as in [this example]({{site.github.url}}/adops/send-all-bids-adops.html#step-3-add-a-creative). | `123` | -| `width` | Integer | The width of the returned creative size. | 300 | -| `height` | Integer | The height of the returned creative size. | 250 | -| `size` | String | The width x height of the returned creative size. | "300x250" | -| `cpm` | Float | The exact bid price from the bidder | 1.59 | -| `pbLg`,`pbMg`,`pbHg`,`pbAg`,`pbDg`,`pbCg` | String | CPM quantized to a granularity: Low (pbLg), Medium (pbMg), High (pbHg), Auto (pbAg), Dense (pbDg), and Custom (pbCg). | "5.00" | -| `currency` | String | Currency of the bid CPM | `"USD"` | -| `netRevenue` | Boolean | True if bid is Net, False if Gross | `true` | -| `requestTimestamp` | Integer | The time stamp when the bid request is sent out in milliseconds | 1444844944106 | -| `responseTimestamp` | Integer | The time stamp when the bid response is received in milliseconds | 1444844944185 | -| `timeToRespond` | Integer | The amount of time for the bidder to respond with the bid | 79 | -| `adUnitCode` | String | adUnitCode to get the bid responses for | "/9968336/header-bid-tag-0" | -| `creativeId` | Integer | Bidder-specific creative ID | 12345678 | -| `mediaType` | String | One of: banner, native, video | `banner` | -| `dealId` | String | (Optional) If the bid is [associated with a Deal]({{site.baseurl}}/adops/deals.html), this field contains the deal ID. | "ABC_123" | -| `adserverTargeting` | Object | Contains all the adserver targeting parameters | `{ "hb_bidder": "appnexus", "hb_adid": "7a53a9d3" }` | -| `native` | Object | Contains native key value pairs. | `{ "title": "", "body": "" }` | -| `status` | String | Status of the bid. Possible values: targetingSet, rendered | `"targetingSet"` | -| `statusMessage` | String | The bid's status message | "Bid returned empty or error response" or "Bid available" | -| `ttl` | Integer | How long (in seconds) this bid is considered valid. See this [FAQ entry]({{site.github.url}}/dev-docs/faq.html#does-prebidjs-cache-bids) for more info. | `300` | - -
- -
- -
-
- - -{% highlight bash %} -{ - "/9968336/header-bid-tag-0": { - "bids": [ - { - "bidderCode": "appnexus", - "width": 300, - "height": 250, - "statusMessage": "Bid available", - "adId": "7a53a9d3", - "creative_id": 29681110, - "cpm": 0.5, - "adUrl": "https://nym1.ib.adnxs.com/ab?e=wqT_3QLzBKBqAgAAAgDWAAUIkav6sAUQucfc0v-nzQcYj…r=http%3A%2F%2Flocal%3A4000%2Fexamples%2Fpbjs_partial_refresh_example.html", - "requestTimestamp": 1444844944095, - "responseTimestamp": 1444844944180, - "timeToRespond": 85, - "adUnitCode": "/19968336/header-bid-tag-0", - "bidder": "appnexus", - "usesGenericKeys": true, - "size": "300x250", - "adserverTargeting": { - "hb_bidder": "appnexus", - "hb_adid": "7a53a9d3", - "hb_pb": "0.50" - } - },{ - "bidderCode": "pubmatic", - "width": "300", - "height": "250", - "statusMessage": "Bid available", - "adId": "1139e34e14", - "adSlot": "39620189@300x250", - "cpm": 1, - "ad": " ", - "adUrl": "https://aktrack.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1&pubId…local%3A4000%2Fexamples%2Fpbjs_partial_refresh_example.html&lpu=hotels.com", - "dealId": "", - "requestTimestamp": 1444844944105, - "responseTimestamp": 1444844944354, - "timeToRespond": 249, - "adUnitCode": "/19968336/header-bid-tag-0", - "bidder": "pubmatic", - "usesGenericKeys": true, - "size": "300x250", - "adserverTargeting": { - "hb_bidder": "pubmatic", - "hb_adid": "1139e34e14", - "hb_pb": "1.00" - } - }, - { - "bidderCode": "rubicon", - "width": "300", - "height": "250", - "statusMessage": "Bid available", - "adId": "130d3b0d9b", - "cpm": 0.795995, - "ad": "", - "ad_id": "3161645", - "sizeId": "15", - "requestTimestamp": 1444844944116, - "responseTimestamp": 1444844944396, - "timeToRespond": 280, - "adUnitCode": "/19968336/header-bid-tag-0", - "bidder": "rubicon", - "usesGenericKeys": true, - "size": "300x250", - "adserverTargeting": { - "hb_bidder": "rubicon", - "hb_adid": "130d3b0d9b", - "hb_pb": "0.50" - } - } - ] - }, - "/9968336/header-bid-tag1": { - "bids": [ - { - "bidderCode": "casale", - "width": 0, - "height": 0, - "statusMessage": "Bid returned empty or error response", - "adId": "108c0ba49d", - "requestTimestamp": 1444844944130, - "responseTimestamp": 1444844944223, - "timeToRespond": 93, - "cpm": 0, - "adUnitCode": "/19968336/header-bid-tag1", - "bidder": "casale" - }, - { - "bidderCode": "openx", - "width": "728", - "height": "90", - "statusMessage": "Bid available", - "adId": "14d7f9208f", - "ad_id": "537161420", - "cpm": 1.717, - "ad": " +
+ +

Just Banner

+
+
+ +
+ + +``` +### InImage Example page with GPT + +```html + + + + + Prebid.js In-image Example + + + + + +

In-image

+
+
+ +
+
+ +
+
+ + +``` From abea589d9e93c368b4924ec027819b3a1dd45123 Mon Sep 17 00:00:00 2001 From: IQZoneAdx <88879712+IQZoneAdx@users.noreply.github.com> Date: Tue, 21 Sep 2021 16:40:21 +0300 Subject: [PATCH 458/536] IQzone Adapter: update doc (#3278) * add IQZone adapter doc * add new bid param * fix * updates --- dev-docs/bidders/iqzone.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/iqzone.md b/dev-docs/bidders/iqzone.md index 2c5c50e850..099cde3ba5 100644 --- a/dev-docs/bidders/iqzone.md +++ b/dev-docs/bidders/iqzone.md @@ -19,10 +19,14 @@ pbs_app_supported: true |---------------|----------|-----------------------|-----------|-----------| | `placementId` | required | Placement Id | `'0'` | `'string'` | - ### Prebid server Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|-----------------------|-----------|-----------| -| `endpointId` | required | Endpoint Id | `'0'` | `'string'` | \ No newline at end of file +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +### Note + +For the prebid server, you only need to use one parameter, placementId or endpointId From 44ec5c503ae522c23818c313255b9377c2c352db Mon Sep 17 00:00:00 2001 From: Noam Tzuberi Date: Tue, 21 Sep 2021 16:44:42 +0300 Subject: [PATCH 459/536] Rise docs (#3276) * Update Rise readme * update docs --- dev-docs/bidders/rise.md | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/dev-docs/bidders/rise.md b/dev-docs/bidders/rise.md index 0d2af523a2..b66676d156 100644 --- a/dev-docs/bidders/rise.md +++ b/dev-docs/bidders/rise.md @@ -1,13 +1,14 @@ --- layout: bidder title: Rise -description: Prebid Bidder Adaptor +description: Prebid Bidder Adaptor pbjs: true biddercode: rise -media_types: no-display, video +media_types: video schain_supported: true gdpr_supported: true usp_supported: true +getFloor: true userIds: all gvl_id: 1043 --- @@ -25,7 +26,7 @@ The Rise adapter requires setup and approval. Please reach out to prebid-rise-en | ---- | ----- | ---- | ----------- | ------- | `org` | required | String | Rise publisher Id provided by your Rise representative | "56f91cd4d3e3660002000033" | `floorPrice` | optional | Number | Minimum price in USD.

**WARNING:**
Misuse of this parameter can impact revenue | 2.00 -| `ifa` | optional | String | The ID for advertisers (also referred to as "IDFA") | "XXX-XXX" +| `placementId` | optional | String | A unique placement identifier | "12345678" | `testMode` | optional | Boolean | This activates the test mode | false ## Example @@ -45,7 +46,7 @@ var adUnits = [ params: { org: '56f91cd4d3e3660002000033', // Required floorPrice: 5.00, // Optional - ifa: 'XXX-XXX', // Optional + placementId: '12345678', // Optional testMode: false // Optional } }] @@ -56,18 +57,5 @@ var adUnits = [ ### Configuration Rise recommends setting UserSync by iframe for monetization. -For Prebid.js v1.15.0 and later: - -pbjs.setConfig({ - userSync: { - filterSettings: { - iframe: { - bidders: '*', // '*' represents all bidders - filter: 'include' - } - } - } -}); - ### Versions Prebid versions 5.0-5.3 are not supported From 40595bae529fa0feaf9c8793163cc57ac1a3b359 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Tue, 21 Sep 2021 06:55:28 -0700 Subject: [PATCH 460/536] Seeding Alliance Bid Adapter: update Prebid 5 comp (#3271) per per -> https://github.com/prebid/Prebid.js/pull/7426 --- dev-docs/bidders/seedingAlliance.md | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-docs/bidders/seedingAlliance.md b/dev-docs/bidders/seedingAlliance.md index bba20fe71b..0683e3a3d8 100644 --- a/dev-docs/bidders/seedingAlliance.md +++ b/dev-docs/bidders/seedingAlliance.md @@ -6,7 +6,6 @@ pbjs: true biddercode: seedingAlliance media_types: native gdpr_supported: true -pbjs_version_notes: not in 5.x --- ### Bid params From b1a7380d383b2781f3e66a652d401db002be6a1c Mon Sep 17 00:00:00 2001 From: Jurij Sinickij Date: Tue, 21 Sep 2021 16:56:49 +0300 Subject: [PATCH 461/536] Adf adapter: floors module support (#3270) --- dev-docs/bidders/adf.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/adf.md b/dev-docs/bidders/adf.md index 674a46caa9..44045bed9f 100644 --- a/dev-docs/bidders/adf.md +++ b/dev-docs/bidders/adf.md @@ -13,6 +13,7 @@ schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, sharedId, unifiedId gvl_id: 50 prevBiddercode: adformOpenRTB +getFloor: true --- ### Bid params From c3af4e613cc37fe22b0f56684d070e4331c84b5e Mon Sep 17 00:00:00 2001 From: Damyan Date: Tue, 21 Sep 2021 17:04:31 +0300 Subject: [PATCH 462/536] AdHash bidder adaptor for 5.0 (#3264) * AdHash Bidder Adapter: initial prebid.js integration * AdHash Bidder Adapter: changing the example text Changing the example text as it's one of our actual client's name * AdHash bidder adaptor for 5.0 update --- dev-docs/bidders/adhash.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/adhash.md b/dev-docs/bidders/adhash.md index 93b4dd61bc..f341d3e6de 100644 --- a/dev-docs/bidders/adhash.md +++ b/dev-docs/bidders/adhash.md @@ -5,7 +5,7 @@ description: Prebid AdHash Bidder Adapter pbjs: true biddercode: adhash safeframes_ok: false -pbjs_version_notes: not in 5.x +gdpr_supported: true --- ### Note From a3a57e83e31756c9423c22b2567dfc9d58c306f9 Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 24 Sep 2021 12:48:23 -0400 Subject: [PATCH 463/536] Update guide.md (#3288) --- guide.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/guide.md b/guide.md index f397c5a8d5..84cbfba55b 100644 --- a/guide.md +++ b/guide.md @@ -9,11 +9,29 @@ sidebarType: 0 # Prebid Website Maintenance Guide -v 1.1 -Sept 7, 2019 +v 1.2 +Sept 24, 2021 *** +## Reviewing Pull Requests and Issues + +Being a reviewer means you're in weekly rotation where you keep an eye on pull requests (PRs) and issues opened in this repo. + +### PR Review Guidelines + +1. Make sure no inappropriate changes are made. This covers obvious things like bad language and content, but we also don't allow overt marketing language on the site. Phrases like "we're the best BLAH" or "number one FOOZIT" need to be toned down. +2. Make sure competitors aren't messing with each other's docs. This can be hard to tell because we don't know which github handles belong to which companies, but in general, if a destructive or suspicious change is being made to a doc, check on the Prebid Slack channel to confirm that the affected company approves the change. +3. Make sure the change doesn't break formatting. It's not always necessary to preview locally, but for large changes, it's worthwhile verifying visually because markdown can be cranky. +4. Help the author with basic readability - if you as a reviewer don't understand a sentence, probably others will have trouble too. Push back and ask questions about what they're really trying to say. +5. We don't generally merge a docs PR until the related code is released. Prebid.js releases happen on Weds or Thurs, and people really like to have their docs PRs merged shortly after the code is released. For Prebid Server, it's ok to merge the docs after the code is merged. +6. Fix broken or out-of-date things you run across. At least flag it in the team slack channel so we can fix it someday. +7. Bid Adapter Guidelines + 1. Check the front-matter: required fields are title and either pbjs or pbs. + 2. Every adapter needs a parameters table that contains exactly 5 columns in this order: Name, Scope, Description, Example, Type. + 3. Discourage full-page HTML examples. Better to have just the bidder-specific logic and a pointer to a standard Prebid.js example. + 4. All headers must be level 3, 4, or 5. + ## Core Technologies The Prebid website is developed using [Jekyll](https://jekyllrb.com/), a static site generator which uses the following technology to create and style HTML pages. From 060947a699a49fd5e1c55e2ae77ed7c4c253f8dc Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 24 Sep 2021 13:10:16 -0400 Subject: [PATCH 464/536] minor updates to guide (#3289) --- guide.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/guide.md b/guide.md index 84cbfba55b..48f65e03a5 100644 --- a/guide.md +++ b/guide.md @@ -34,7 +34,7 @@ Being a reviewer means you're in weekly rotation where you keep an eye on pull r ## Core Technologies -The Prebid website is developed using [Jekyll](https://jekyllrb.com/), a static site generator which uses the following technology to create and style HTML pages. +The Prebid website is developed using [Jekyll](https://jekyllrb.com/), a static site generator which uses the following technology to create and style HTML pages. See the [main README file](https://github.com/prebid/prebid.github.io/blob/master/README.md) for instructions on how to set this up. **Markdown**: The majority of the content is written in Markdown language. Jekyll transform this into raw HTML. @@ -56,7 +56,7 @@ Learn more about [Liquid](https://help.shopify.com/en/themes/liquid/basics) ## Site Config -The _config.yml file (note underscore prefix) sets the base configuration for the site. Refer to [Jekyll](https://jekyllrb.com/docs/configuration/) documentation on which properties can be set in the _congig.yml file. +The _config.yml file (note underscore prefix) sets the base configuration for the site. Refer to [Jekyll](https://jekyllrb.com/docs/configuration/) documentation on which properties can be set in the _config.yml file. *** @@ -254,18 +254,14 @@ The attributes in the Jekyll 'front matter' drive various behaviors and dynamic | ----- | ------ | ------ | ------ | | layout | yes | bidder | Links this file to the bidder.html layout | | title | yes | company name | For display | +| pbjs | sorta | true or false | defines whether this is a Prebid.js bidder | +| pbs | sorta | true or false | defines whether this is a Prebid Server bidder | | description | no | - | Not used | -| hide | no | - | Not used | | biddercode | yes | preferred bidder code | Used as the default ad server targeting suffix and the default download filename | | aliasCode | no | download filename | Overrides the filename used to build the PBJS package on the download page | | prevBiddercode | no | secondary bidder code | Adds a note about an alternate code that may have been used. | -| bidder_supports_deals | no | true or false, whether the adapter supports deals | For display. Defaults to 'true'. | -| s2s_only | no | true or false, whether the adapter is server-to-server only | Adds a note to the display. Defaults to 'false'. | -| gdpr_supported | no | true or false, whether the adapter supports GDPR | For display. Defaults to 'false'. | -| coppa_supported | no | true or false, whether the adapter supports COPPA | For display. Defaults to 'false'. | -| media_types | no | comma-separated list of: banner, video, native | For display. | -| userIds | no | comma-separated list of supported user id modules | For display. | -| prebid_member | no | true or false, whether this company is a prebid.org member | For display. | +| pbjs_version_notes | no | string | Displays on the download page | +| ANYTHING ELSE | no | string | There are many pieces of metadata (e.g. GDPR support, user IDs supported) that bid adapters can disclose. They're displayed on the bidder's parameter page. | The bidderCode, aliasCode, and prevBiddercode parameters bear some description. Some adapters have a longer bidderCode and a shorter bidderCode -- their adapter supports both (with the `alias` feature) but From 909a55126a2a7bff06e9871a14c8da409d96e514 Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 24 Sep 2021 13:16:52 -0400 Subject: [PATCH 465/536] added environment section to guide (#3290) --- guide.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/guide.md b/guide.md index 48f65e03a5..434d04a776 100644 --- a/guide.md +++ b/guide.md @@ -34,7 +34,7 @@ Being a reviewer means you're in weekly rotation where you keep an eye on pull r ## Core Technologies -The Prebid website is developed using [Jekyll](https://jekyllrb.com/), a static site generator which uses the following technology to create and style HTML pages. See the [main README file](https://github.com/prebid/prebid.github.io/blob/master/README.md) for instructions on how to set this up. +The Prebid website is developed using [GitHub pages](https://pages.github.com/) and [Jekyll](https://jekyllrb.com/), a static site generator which uses the following technology to create and style HTML pages. See the [main README file](https://github.com/prebid/prebid.github.io/blob/master/README.md) for instructions on how to set this up. **Markdown**: The majority of the content is written in Markdown language. Jekyll transform this into raw HTML. @@ -52,7 +52,14 @@ Learn more about [Liquid](https://help.shopify.com/en/themes/liquid/basics) **CSS**: The site builds on the base Bootstrap template with custom CSS stored in the style.css file. -*** +### Environment + +- prebid.org is built with Wordpress. We call it "the marketing site". We generally use a contracting company to make major updates there so it's pretty. But if you know Wordpress, we may give you permissions to do minor updates there. +- docs.prebid.org is the Github pages site. We call it "the docs site". +- dev.prebid.org is served through Netlify from the 'dev' branch of the repo. It's often out of date and only used for major projects or for sharing major docs for external review. +- stage.prebid.org is also served through Netlify, but from the 'staging' branch. You should assume it's out of date. + +On the rare occasions where we need to use the 'dev' or 'stage' sites, we just check with each other to make sure it's not already being used for something. ## Site Config From ec5b5ac517a55baa30ac7bbcc36fa9f695a74568 Mon Sep 17 00:00:00 2001 From: adquery <89853721+adquery@users.noreply.github.com> Date: Fri, 24 Sep 2021 19:25:41 +0200 Subject: [PATCH 466/536] new adquery adapter (#3275) * new Adapter * Removed prebid version note. We support version 5.x Co-authored-by: m.czerwiak --- dev-docs/bidders/adquery.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 dev-docs/bidders/adquery.md diff --git a/dev-docs/bidders/adquery.md b/dev-docs/bidders/adquery.md new file mode 100644 index 0000000000..6276c9650c --- /dev/null +++ b/dev-docs/bidders/adquery.md @@ -0,0 +1,19 @@ +--- +layout: bidder +title: Adquery +description: Prebid Adquery Bidder Adaptor +pbjs: true +biddercode: adquery +gdpr_supported: true +usp_supported: true +schain_supported: true +gvl_id: 902 +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|---------------|-------------------------------------------|-----------| +| `placementId` | required | Placement ID | `6d93f2a0e5f0fe2cc3a6e9e3ade964b43b07f897`| `string` | +| `type` | required | Ad Type | `banner300x250` | `string` | \ No newline at end of file From 6be107a41841359821862694a6851a6534471abf Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 24 Sep 2021 13:26:29 -0400 Subject: [PATCH 467/536] fixed ortb2Imp (#3291) --- dev-docs/modules/gpt-pre-auction.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dev-docs/modules/gpt-pre-auction.md b/dev-docs/modules/gpt-pre-auction.md index 6beebdd1ca..1f53ca3ff6 100644 --- a/dev-docs/modules/gpt-pre-auction.md +++ b/dev-docs/modules/gpt-pre-auction.md @@ -24,9 +24,9 @@ This module enables targeting and tracking at the ad server adunit level. Enabled by default if compiled into your package, this module will add the [Prebid Ad Slot](/features/pbAdSlot.html) and matching GAM ad unit name to each ad unit's first-party data before bid requests are sent to the adapters. * **Prebid.js Adapters** - will be able to utilize these values as: - * AdUnit.ortb2imp.ext.data.adserver.name="gam" - * AdUnit.ortb2imp.ext.data.adserver.adslot="/1111/home" - * AdUnit.ortb2imp.ext.data.pbadslot="/1111/home-left" + * AdUnit.ortb2Imp.ext.data.adserver.name="gam" + * AdUnit.ortb2Imp.ext.data.adserver.adslot="/1111/home" + * AdUnit.ortb2Imp.ext.data.pbadslot="/1111/home-left" * **Prebid Server Adapters** - will see the OpenRTB as: * imp[].ext.data.adserver.name * imp[].ext.data.adserver.adslot @@ -74,13 +74,13 @@ When this module is on, it uses the BEFORE_REQUEST_BIDS event to insert function If GPT slot matching succeeds: -- it sets the Adunit ortb2imp.ext.data.adserver.name to 'gam' -- it copies the resulting GPT slot name to ortb2imp.ext.data.adserver.adslot +- it sets the Adunit ortb2Imp.ext.data.adserver.name to 'gam' +- it copies the resulting GPT slot name to ortb2Imp.ext.data.adserver.adslot -The customPbAdSlot function is called if it was specified, writing the results to ortb2imp.ext.data.pbadslot. -If there's no customPbAdSlot, a default algorithm is used to determine ortb2imp.ext.data.pbadslot: +The customPbAdSlot function is called if it was specified, writing the results to ortb2Imp.ext.data.pbadslot. +If there's no customPbAdSlot, a default algorithm is used to determine ortb2Imp.ext.data.pbadslot: -- first use the AdUnit's ortb2imp.ext.data.pbadslot if defined +- first use the AdUnit's ortb2Imp.ext.data.pbadslot if defined - else, see if the AdUnit.code corresponds to a div and if so, try to retrieve a data element from the div called data-adslotid. - else if the GPT slot matching succeeded, use the GPT slot name - else, just use the AdUnit.code, assuming that that's the ad unit slot From 2aca0312b64d42d7115fed6efe2412dc39ddfb99 Mon Sep 17 00:00:00 2001 From: Tiago Peczenyj Date: Fri, 24 Sep 2021 19:26:53 +0200 Subject: [PATCH 468/536] add weborama RTD doc (#3277) Co-authored-by: Tiago Peczenyj --- dev-docs/modules/weboramaRtdProvider.md | 81 +++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 dev-docs/modules/weboramaRtdProvider.md diff --git a/dev-docs/modules/weboramaRtdProvider.md b/dev-docs/modules/weboramaRtdProvider.md new file mode 100644 index 0000000000..b4b1e632c9 --- /dev/null +++ b/dev-docs/modules/weboramaRtdProvider.md @@ -0,0 +1,81 @@ +--- +layout: page_v2 +title: Weborama Real Time Data Provider +display_name: Weborama Real-time Segmentation Module +description: Weborama Real-time Segmentation Module +page_type: module +module_type: rtd +module_code : weboramaRtdProvider +enable_download : true +vendor_specific: true +sidebarType : 1 +--- + +# Weborama RTD Segmentation Module +{:.no_toc} + +* TOC +{:toc} + +Weborama provides a Semantic AI Contextual API that classifies in Real-time a web page seen by a web user within generic and custom topics. It enables publishers to better monetize their inventory and unlock it to programmatic. + +ORTB2 compliant and FPD support for Prebid versions < 4.29 + +Please contact prebid-support@weborama.com for more information. + +## Publisher Usage + +### Configure Prebid.js + +Compile the Weborama RTD module into your Prebid build: + +`gulp build --modules=rtdModule,weboramaRtdProvider` + +Add the Weborama RTD provider to your Prebid config. + + +#### Minimal configuration + +``` +pbjs.setConfig( + ... + realTimeData: { + auctionDelay: 1000, + dataProviders: [ + { + name: "WeboramaRTDModule", + waitForIt: true, + params: { + token: "" + } + } + ] + } + ... +} +``` + +### Parameter Descriptions for the Weborama Configuration Section + +| Name |Type | Description | Notes | +| :------------ | :------------ | :------------ |:------------ | +| name | String | Real time data module name | Mandatory. Always 'Weborama' | +| waitForIt | Boolean | Mandatory. Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false but recommended to true | +| params | Object | | Optional | +| params.weboCtxConf | Object | Weborama Contextual Configuration | Optional | +| params.weboCtxConf.token | String | Security Token provided by Weborama, unique per client | Mandatory | +| params.weboCtxConf.targetURL | String | Url to be profiled in the contextual api | Optional. Defaults to `document.URL` | +| params.weboCtxConf.defaultProfile | Object | default value of the profile to be used when there are no response from contextual api (such as timeout)| Optional. Default is `{}` | +| params.weboCtxConf.setTargeting|Boolean|If true, will use the contextual profile to set the gam targeting of all adunits managed by prebid.js| Optional. Default is *true*.| +| params.weboCtxConf.setOrtb2|Boolean|If true, will use the contextual profile to set the ortb2 configuration on `site.ext.data`| Optional. Default is *false*.| + + +### Testing + +To view an example of available segments returned by Weborama's backends: + +`gulp serve --modules=rtdModule,weboramaRtdProvider,appnexusBidAdapter` + +and then point your browser at: + +`http://localhost:9999/integrationExamples/gpt/weboramaRtdProvider_example.html` From 648291c3a51464d1ba179f1b002c0d61b30cf00e Mon Sep 17 00:00:00 2001 From: Scott Kay Date: Mon, 27 Sep 2021 10:21:01 -0400 Subject: [PATCH 469/536] PBS-Go User Sync (#3220) * Initial Commit * Auction Endpoint JSON Formatting * Added User Sync Config Doc * Update Feature Comparison List * Proof Read Pass * Clarified part of the process * Fixed a typo * Edits for PBS docs Co-authored-by: SSuranie --- dev-docs/publisher-api-reference/setConfig.md | 2 +- prebid-server/developers/add-new-bidder-go.md | 497 ++++++-------- prebid-server/developers/pbs-cookie-sync.md | 35 +- .../openrtb2/pbs-endpoint-auction.md | 613 +++++++++--------- prebid-server/endpoints/pbs-endpoint-event.md | 2 +- .../endpoints/pbs-endpoint-overview.md | 4 +- .../endpoints/pbs-endpoint-setuid.md | 12 +- prebid-server/features/pbs-currency.md | 14 +- prebid-server/features/pbs-feature-idx.md | 18 +- prebid-server/features/pbs-privacy.md | 2 +- prebid-server/hosting/pbs-database.md | 4 +- prebid-server/hosting/pbs-hosting.md | 2 +- prebid-server/versions/pbs-versions-go.md | 2 +- prebid-server/versions/pbs-versions-java.md | 2 +- 14 files changed, 568 insertions(+), 641 deletions(-) diff --git a/dev-docs/publisher-api-reference/setConfig.md b/dev-docs/publisher-api-reference/setConfig.md index e9c0a4ee33..1d2904bc70 100644 --- a/dev-docs/publisher-api-reference/setConfig.md +++ b/dev-docs/publisher-api-reference/setConfig.md @@ -472,7 +472,7 @@ The `s2sConfig` properties: | `endpoint` | Required | URL or Object | Defines the auction endpoint for the Prebid Server cluster. See table below for object config properties. | | `syncEndpoint` | Required | URL or Object | Defines the cookie_sync endpoint for the Prebid Server cluster. See table below for object config properties. | | `userSyncLimit` | Optional | Integer | Max number of userSync URLs that can be executed by Prebid Server cookie_sync per request. If not defined, PBS will execute all userSync URLs included in the request. | -| `coopSync` | Optional | Boolean | Whether or not PBS is allowed to perform "cooperative syncing" for bidders not on this page. Publishers help each other improve match rates by allowing this. Default is true. Supported in PBS-Java only. | +| `coopSync` | Optional | Boolean | Whether or not PBS is allowed to perform "cooperative syncing" for bidders not on this page. Publishers help each other improve match rates by allowing this. Default is true. | | `defaultTtl` | Optional | Integer | Configures the default TTL in the Prebid Server adapter to use when Prebid Server does not return a bid TTL - 60 if not set | | `adapterOptions` | Optional | Object | Arguments will be added to resulting OpenRTB payload to Prebid Server in every impression object at request.imp[].ext.BIDDER. See the example above. | | `extPrebid` | Optional | Object | Arguments will be added to resulting OpenRTB payload to Prebid Server in request.ext.prebid. See the examples below. | diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md index b710431d91..3acc766ae2 100644 --- a/prebid-server/developers/add-new-bidder-go.md +++ b/prebid-server/developers/add-new-bidder-go.md @@ -13,7 +13,7 @@ Thank you for contributing a bid adapter to the open source Prebid Server projec This document guides you through the process of developing a new bid adapter for your bidding server. We encourage you to look at [existing bid adapters](https://github.com/prebid/prebid-server/tree/master/adapters) for working examples and practical guidance. You can also ask us questions by [submitting a GitHub issue](https://github.com/prebid/prebid-server/issues/new). {: .alert.alert-info :} -**NOTE:** There are two implementations of Prebid Server, [PBS-Go](https://github.com/prebid/prebid-server) and [PBS-Java](https://github.com/prebid/prebid-server-java). We recommend you build new adapters for PBS-Go and allow us to port it to PBS-Java within a couple of months. If you'd like to build both yourself, please also follow these [instructions for building an adapter in PBS-Java](/prebid-server/developers/add-new-bidder-java.html). +There are two implementations of Prebid Server, [PBS-Go](https://github.com/prebid/prebid-server) and [PBS-Java](https://github.com/prebid/prebid-server-java). We recommend you build new adapters for PBS-Go and allow us to port it to PBS-Java within a couple of months. If you'd like to build both yourself, please also follow these [instructions for building an adapter in PBS-Java](/prebid-server/developers/add-new-bidder-java.html). * TOC @@ -31,7 +31,7 @@ An OpenRTB 2.5 Bid Request contains one or more Impressions, each representing a You will need to choose a unique name for your bid adapter. Names should be written in lower case and may not contain special characters or emoji. If you already have a Prebid.js bid adapter, we encourage you to use the same name with the same bidder parameters. You may not name your adapter `all`, `context`, `data`, `general`, `prebid`, or `skadn` as those have special meaning in various contexts. Existing bid adapter names are [maintained here](https://github.com/prebid/prebid-server/blob/master/openrtb_ext/bidders.go#L37). -We ask that the first 6 letters of the name you choose be unique among the existing bid adapters. This consideration helps with generating targeting keys for use by some ad exchanges, such as Google Ad Manager. There's no need to manually check, as this constraint is enforced by the [`TestBidderUniquenessGatekeeping`](https://github.com/prebid/prebid-server/blob/master/openrtb_ext/bidders_test.go#L61) test. +We ask that the first 6 letters of the name you choose be unique among the existing bid adapters. This consideration helps with generating targeting keys for use by some ad exchanges, such as Google Ad Manager. There's no need to manually check, as this constraint is enforced by the [`TestBidderUniquenessGatekeeping`](https://github.com/prebid/prebid-server/blob/master/openrtb_ext/bidders_validate_test.go#L45) test. Throughout the rest of this document, substitute `{bidder}` with the name you've chosen. @@ -48,9 +48,9 @@ We are proud to run the Prebid Server project as a transparent and trustworthy h - Adapters must annotate the bid response with the proper media type, ideally based on the response from the bidding server. {: .alert.alert-warning :} -Failure to follow the rules will lead to delays in approving your adapter for inclusion in Prebid Server. If you'd like to discuss an exception to a rule, please make your request by [submitting a GitHub issue](https://github.com/prebid/prebid-server/issues/new). +Failure to follow the rules will lead to delays in approving your adapter. If you'd like to discuss an exception to a rule, please make your request by [submitting a GitHub issue](https://github.com/prebid/prebid-server/issues/new). -### Ongoing Support and Maintenance +### Support and Maintenance You are expected to provide support and maintenance for the code you contribute to Prebid Server as part of your bid adapter. We ask that you proactively update your adapter when your bidding server introduces new features or breaking changes. @@ -60,18 +60,18 @@ Please be attentive in reading and responding to emails and [GitHub issues](http ## Create Your Adapter -Prebid Server bid adapters consist of several components: bidder info, bidder parameters, adapter code, user sync code, registration with the core framework, and default configuration values. This chapter will guide you though each component. +Prebid Server bid adapters consist of several components: bidder info, bidder parameters, adapter code, registration with the core framework, and default configuration values. This document will guide you though each component. -Please refer to [existing bid adapters](https://github.com/prebid/prebid-server/tree/master/adapters) for working examples and practical guidance, but understand that our adapter interfaces and coding style evolve over time. Please refer to the examples in this document over differences you may find in an existing bid adapter. +Please refer to [existing bid adapters](https://github.com/prebid/prebid-server/tree/master/adapters) for working examples and practical guidance, but understand that our adapter interfaces and coding style evolve over time. The examples in this document have precedence over differences you may find in an existing bid adapter. Our project is written in the [Go programming language](https://golang.org/). We understand not everyone has prior experience writing Go code. Please try your best and we'll respectfully steer you in the right direction during the review process. {: .alert.alert-info :} -Please do not ignore errors from method calls made in your bid adapter code. Even if it's seemingly impossible for an error to occur, such as from `json.Marshal`, it's still possible under the high throughput multi-threaded nature of Prebid Server. +**Please do not ignore errors from method calls made in your bid adapter code.** Even if it's seemingly impossible for an error to occur, such as from `json.Marshal`, it's still possible under the high throughput multi-threaded nature of Prebid Server. ### Bidder Info -Let's begin with your adapter's bidder information YAML file. This file is required and contains your maintainer email address, your [GDPR Global Vendor List (GVL) id](https://iabeurope.eu/vendor-list-tcf-v2-0/), specifies the ad formats your adapter will accept, and allows you to opt-out of video impression tracking. +Let's begin with your adapter's bidder information YAML file. This file is required and contains your bid adapter's maintainer email address, [GDPR Global Vendor List (GVL) ID](https://iabeurope.eu/vendor-list-tcf-v2-0/), supported ad formats, user sync endpoints, and allows you to opt-out of video impression tracking. Create a file with the path `static/bidder-info/{bidder}.yaml` and begin with the following template: @@ -93,6 +93,10 @@ capabilities: - video - audio - native +userSync: + redirect: + url: https://foo.com/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID ``` Modify this template for your bid adapter: @@ -100,6 +104,7 @@ Modify this template for your bid adapter: - Change the `gvlVendorID` from the sample value of `42` to the id of your bidding server as registered with the [GDPR Global Vendor List (GVL)](https://iabeurope.eu/vendor-list-tcf-v2-0/), or remove this line entirely if your bidding server is not registered with IAB Europe. - Change the `modifyingVastXmlAllowed` value to `false` if you'd like to opt-out of [video impression tracking](https://github.com/prebid/prebid-server/issues/1015), or remove this line entirely if your adapter doesn't support VAST video ads. - Remove the `capabilities` (app/site) and `mediaTypes` (banner/video/audio/native) combinations which your adapter does not support. +- Follow the [User Sync Configuration](#user-sync-configuration) documentation below to configure the endpoints for your bid adapter, or remove the `userSync` section if not supported.
Example: Website with banner ads only. @@ -112,6 +117,10 @@ capabilities: site: mediaTypes: - banner +userSync: + redirect: + url: https://foo.com/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID ```
@@ -125,6 +134,10 @@ capabilities: site: mediaTypes: - banner +userSync: + redirect: + url: https://foo.com/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID ``` @@ -145,22 +158,72 @@ capabilities: mediaTypes: - banner - video +userSync: + redirect: + url: https://foo.com/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID ```

+#### User Sync Configuration + +Prebid Server offers a federated [user sync](https://docs.prebid.org/prebid-server/developers/pbs-cookie-sync.html) process to store user ids from multiple bidders in a single cookie under the host's domain. You may add support for your bid adapter by configuring iframe and/or redirect endpoints. + +The Bidder Info template above demonstrates configuration of a `redirect` user sync. The `url` points to an endpoint on your bidding server which will honor the privacy policies, replace the `userMacro` in the redirect url with the user's tracking id, and respond with an HTTP 302 redirect to that url. You may also specify an `iframe` endpoint which will return an HTML document to be rendered in an `iframe` on the user's device and use JavaScript to perform the redirect. You may omit the `{%raw%}{{.GDPR}}{%endraw%}`, `{%raw%}{{.GDPRConsent}}{%endraw%}`, and/or `{%raw%}{{.USPrivacy}}{%endraw%}` macros if they are not applicable to your legal situation. + +If both `iframe` and `redirect` endpoints are provided, you must specify a `default` field with a value of either `iframe` or `redirect`, based on your preference. + +```yaml +userSync: + default: iframe + iframe: + url: https://foo.com/iframe/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID + redirect: + url: https://foo.com/redirect/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID +``` + +If your bid adapter supports user sync and doesn't have a good default, you may optionally specify a `supports` array with the items `iframe` and/or `redirect` to inform Prebid Server hosts. Hosts will receive a warning on startup if a bid adapter supports user sync and isn't configured. Expect hosts to contact you at the maintainer email address in this file for instructions. + +```yaml +userSync: + # foo supports user syncing, but requires configuration by the host. contact this + # bidder directly at the email address in this file to ask about enabling user sync. + supports: + - iframe + - redirect +``` + +Each user sync is assigned a case-sensitive `key`, defaulting to your bidder name. You may use a different `key` value, but we discourage doing so except for when multiple bidders share the same bidding server. You might encounter this use case for built-in aliases or for multiple bidders implementing different protocols for the same bidding server. Only one bid adapter may specify endpoints when using a shared key, or Prebid Server will fail to startup due to the ambiguity. + +```yaml +foo.yaml +-------- +userSync: + redirect: + url: https://foo.com/sync?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: $UID + +bar.yaml +-------- +userSync: + key: foo +``` + ### Bidder Parameters -Your bid adapter might require extra information from the publisher to form a request to your bidding server. The bidder parameters JSON Schema codifies this information to allow Prebid Server to verify requests and to provide an API for third party configuration systems. +Your bid adapter might require extra information from the publisher to form a request to your bidding server. The bidder parameters JSON Schema codifies this information to allow Prebid Server to verify requests and to provide an API for configuration systems. Publishers will provide extra information using an OpenRTB 2.5 Bid Request Extension, preferably at `request.imp[].ext.prebid.bidder.{bidder}` but also supported at `request.imp[].ext.{bidder}`. Prebid Server will validate the publisher information based on your schema and relocate the data to `request.imp[].ext.bidder`, regardless of your bidder name or the publisher's chosen location. -We request that you do not duplicate information that is already present in the [OpenRTB 2.5 Bid Request specification](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf#page=13) or is already part of an established Prebid convention. For example, your bidder parameters should not include first party data, bid floors, schain, video parameters, referrer information, or privacy consent including COPPA, CCPA, and GDPR TCF. For video parameters in particular, you must prefer the OpenRTB 2.5 Bid Request standard of `request.imp[].video`. +We request you do not duplicate information already present in the [OpenRTB 2.5 Bid Request specification](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf#page=13) or already part of an established Prebid convention. For example, your bidder parameters should not include first party data, bid floors, schain, video parameters, referrer information, or privacy consent including COPPA, CCPA, and GDPR TCF. For video parameters in particular, you must prefer the OpenRTB 2.5 Bid Request standard of `request.imp[].video`. {: .alert.alert-warning :} -**ENDPOINT NOTE:** You may not use an endpoint domain as a bidder parameter. Prebid Server is not an open proxy. If absolutely necessary, you may specify a portion of the domain as a parameter to support geo regions or account specific servers. However, this is discouraged and may degrade the performance of your adapter since the server needs to maintain more outgoing connections. Host companies may choose to disable your adapter if it uses a dynamically configured domain. +You may not use an endpoint domain as a bidder parameter. Prebid Server is not an open proxy. If absolutely necessary, you may specify a portion of the domain as a parameter to support geo regions or account specific servers. However, this is discouraged and may degrade the performance of your adapter since the server needs to maintain more outgoing connections. Host companies may choose to disable your adapter if it uses a dynamically configured domain. -Create a file with the path `static/bidder-params/{bidder}.json` using [JSON Schema](https://spacetelescope.github.io/understanding-json-schema/) to define your bidder parameters. Prebid Server requires this file for every adapter, even if yours doesn't require bidder parameters (see the 'no parameters' example at the end of this section). +Create a file with the path `static/bidder-params/{bidder}.json` and use [JSON Schema](https://spacetelescope.github.io/understanding-json-schema/) to define your bidder parameters. Prebid Server requires this file for every adapter, even if yours doesn't require bidder parameters (see the 'no parameters' example at the end of this section). Let's start with this example which defines one required `placementId` string parameter: @@ -183,7 +246,9 @@ Let's start with this example which defines one required `placementId` string pa ``` We encourage you to utilize the full features of [JSON Schema](https://spacetelescope.github.io/understanding-json-schema/) to narrowly define your bidder parameter data types. If you copy and paste these examples, please remember to change the `title` and `description` to refer to your bidder name instead of our fictional Foo example. -When choosing your parameter names, please consider aligning with the OpenRTB 2.5 standard by using lower case letters without camel casing or special characters. +When choosing your parameter names, please consider aligning with the OpenRTB 2.5 standard by using lower case letters without camel casing or special characters. + +Properties in [JSON Schema](https://spacetelescope.github.io/understanding-json-schema/) are case sensitive. If you choose to specify multiple properties differing only by case for compatibility, we ask that you include the word 'preferred' in one of the descriptions to give a hint to third party configuration systems. In addition to the examples listed below, please refer to [existing bidder parameter files](https://github.com/prebid/prebid-server/tree/master/static/bidder-params) for guidance. @@ -234,7 +299,7 @@ In addition to the examples listed below, please refer to [existing bidder param "title": "Foo Adapter Params", "description": "A schema which validates params accepted by the Foo adapter", "type": "object", - + "properties": { "token": { "type": "string", @@ -280,18 +345,47 @@ In addition to the examples listed below, please refer to [existing bidder param } ``` + +
+ Example: Multiple properties differing only by case. + +```json +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Foo Adapter Params", + "description": "A schema which validates params accepted by the Foo adapter", + "type": "object", + + "properties": { + "partnerid": { + "type": "string", + "description": "Partner ID, preferred." + }, + "partnerID": { + "secret": "string", + "description": "Partner ID" + } + }, + + "oneOf": [ + { "required": ["partnerid"] }, + { "required": ["partnerID"] } + ] +} +``` +

### Bidder Parameters Code {: .alert.alert-info :} -You can skip this step if your adapter has no bidder parameters. +You can skip this section if your adapter has no bidder parameters. -If you've defined bidder parameters for your adapter, you also need to represent your bidder parameters in code. The core framework uses the JSON Schema file for validation, but your adapter code needs a data structure to support JSON unmarshalling / deserialization. These data structures are organized in a shared path using a standard naming convention, which also serves as documentation of all adapter parameters. +If you defined bidder parameters for your adapter, you also need to represent your bidder parameters in code. The core framework uses the JSON Schema file for validation, but your adapter code needs a data structure to support JSON unmarshalling / deserialization. These data structures are organized in a shared path using a standard naming convention, which also serves as documentation of all adapter parameters. Create a file with the path `openrtb_ext/imp_{bidder}.go` containing an exported (must start with an upper case letter) data structure named `ImpExt{Bidder}`. All required and optional bidder parameters from the JSON Schema should be represented as fields. -For example, this is what the bidder parameter code looks like for the example we used in the previous section: +For example, this is what the bidder parameter code looks like for the Foo example we used in the previous section: ```go package openrtb_ext @@ -301,7 +395,7 @@ type ImpExtFoo struct { } ``` -Please follow [Go's standard naming convention](https://golang.org/doc/effective_go.html) for the field names (particularly for acronyms) and use `` `json:...` `` attributes to specify the JSON name, matching exactly what you defined in the bidder parameters JSON Schema. Please keep in mind that JSON is case sensitive. +Please follow [Go's standard naming convention](https://golang.org/doc/effective_go.html) for the field names (particularly for acronyms) and use `` `json:...` `` attributes to specify the JSON name, matching exactly what you defined in the bidder parameters JSON Schema. ### Adapter Code @@ -326,7 +420,7 @@ import ( "fmt" "net/http" - "github.com/mxmCherry/openrtb" + "github.com/mxmCherry/openrtb/v15/openrtb2" "github.com/prebid/prebid-server/adapters" "github.com/prebid/prebid-server/config" "github.com/prebid/prebid-server/errortypes" @@ -345,7 +439,7 @@ func Builder(bidderName openrtb_ext.BidderName, config config.Adapter) (adapters return bidder, nil } -func (a *adapter) MakeRequests(request *openrtb.BidRequest, requestInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) { +func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) { requestJSON, err := json.Marshal(request) if err != nil { return nil, []error{err} @@ -356,15 +450,15 @@ func (a *adapter) MakeRequests(request *openrtb.BidRequest, requestInfo *adapter Uri: a.endpoint, Body: requestJSON, } - + return []*adapters.RequestData{requestData}, nil } -func (a *adapter) MakeBids(request *openrtb.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) { +func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) { if responseData.StatusCode == http.StatusNoContent { return nil, nil } - + if responseData.StatusCode == http.StatusBadRequest { err := &errortypes.BadInput{ Message: "Unexpected status code: 400. Bad request from publisher. Run with request.debug = 1 for more info.", @@ -379,18 +473,17 @@ func (a *adapter) MakeBids(request *openrtb.BidRequest, requestData *adapters.Re return nil, []error{err} } - var response openrtb.BidResponse + var response openrtb2.BidResponse if err := json.Unmarshal(responseData.Body, &response); err != nil { return nil, []error{err} } - + bidResponse := adapters.NewBidderResponseWithBidsCapacity(len(request.Imp)) bidResponse.Currency = response.Cur for _, seatBid := range response.SeatBid { - for _, bid := range seatBid.Bid { - bid := bid // pin https://github.com/kyoh86/scopelint#whats-this + for i, bid := range seatBid.Bid { b := &adapters.TypedBid{ - Bid: &bid, + Bid: &seatBid.Bid[i], BidType: getMediaTypeForBid(bid), } bidResponse.Bids = append(bidResponse.Bids, b) @@ -409,16 +502,16 @@ The first argument, `bidderName`, is the name of the bidder being built. This ma The second argument, `config`, is all the configuration values set for your adapter. However, not all of this information is intended for use by the `Builder` method. The only two fields relevant here are `config.Endpoint` and `config.ExtraAdapterInfo`: - `config.Endpoint` is the base url of your bidding server and may be interpreted as either a literal address or as a templated macro to support dynamic domains or dynamic paths. -- `config.ExtraAdapterInfo` may be used for any other values your adapter may need, such as an application token or publisher allow/deny list. You may interpret this string however you like, although JSON is a common choice. +- `config.ExtraAdapterInfo` is an optional setting may be used for any other values your adapter may need, such as an application token or publisher allow/deny list. You may interpret this string however you like, although JSON is a common choice. -The `Builder` method is expected to return an error if either the `config.Endpoint` or the `config.ExtraAdapterInfo` values are invalid or cannot be parsed. Errors will be surfaced to the host during application startup as a fatal error. +The `Builder` method is expected to return an error if either the `config.Endpoint` or the `config.ExtraAdapterInfo` values are invalid or cannot be parsed. Errors will be surfaced to the host during application startup as a fatal error.
Example: Builder using endpoint macros. ```go type adapter struct { - endpointTemplate template.Template + endpointTemplate *template.Template } // Builder builds a new instance of the Foo adapter for the given bidder with the given config. @@ -427,9 +520,9 @@ func Builder(bidderName openrtb_ext.BidderName, config config.Adapter) (adapters if err != nil { return nil, fmt.Errorf("unable to parse endpoint url template: %v", err) } - + bidder := &adapter{ - endpointTemplate: *template, + endpointTemplate: template, } return bidder, nil } @@ -450,7 +543,7 @@ func Builder(bidderName openrtb_ext.BidderName, config config.Adapter) (adapters if err != nil { return nil, err } - + bidder := &adapter{ endpoint: config.Endpoint, token: info.token, @@ -484,9 +577,9 @@ func buildDefaultExtraInfo() extraInfo { The `MakeRequests` method is responsible for returning none, one, or many HTTP requests to be sent to your bidding server. Bid adapters are forbidden from directly initiating any form of network communication and must entirely rely upon the core framework. This allows the core framework to optimize outgoing connections using a managed pool and record networking metrics. The return type `adapters.RequestData` allows your adapter to specify the HTTP method, url, body, and headers. -This method is called once by the core framework for bid requests which have at least one valid Impression for your adapter. Impressions not configured for your adapter will be removed and are not accessible. +This method is called once by the core framework for bid requests which have at least one valid Impression for your adapter. Impressions not configured for your adapter are not accessible. -The first argument, `request`, is the OpenRTB 2.5 Bid Request object. Extension information is stored as `json.RawMessage` byte arrays and must be unmarshalled and/or marshalled to be read and/or mutated. It is *critical* to understand that the `request` object contains pointers to shared memory. If your adapter needs to alter any data referenced by a pointer then you *must* first make a shallow copy. The only exception is for `request.Imp` and its elements, as these are already shallow copies. The exact same instance of the `request` object is also passed to the `MakeBids` method, so please be careful when mutating. It's safe to assume that `request.Imp[]` always contains at least one element and that the `request.Imp[].ext.bidder` was successfully validated by your bidder parameter JSON Schema. +The first argument, `request`, is the OpenRTB 2.5 Bid Request object. Extension information is stored as `json.RawMessage` byte arrays and must be unmarshalled and/or marshalled to be read and/or mutated. It is *critical* to understand that the `request` object contains pointers to shared memory. If your adapter needs to alter any data referenced by a pointer then you *must* first make a shallow copy. The only exception is for `request.Imp` and its elements, as these are already shallow copies. The exact same instance of the `request` object is also passed to the `MakeBids` method, so please be careful when mutating. It's safe to assume that `request.Imp[]` always contains at least one element and that the `request.Imp[].ext.bidder` was successfully validated per your bidder parameter JSON Schema.
Example: Mutating banner shared memory (make a copy). @@ -506,36 +599,35 @@ if request.Imp[i].W == nil && request.Imp[i].H == nil && len(request.Imp[i].Form The second argument, `requestInfo`, is for extra information and helper methods provided by the core framework. This includes: -- `requestInfo.PbsEntryPoint` to access the entry point of the bid request, commonly used to determine if the request is for AMP or for a Long Form Video Ad Pod. -- `requestInfo.GlobalPrivacyControlHeader` to read the value of the Sec-GPC Global Privacy Control (GPC) header of the bid request. +- `requestInfo.PbsEntryPoint` to access the entry point of the bid request, commonly used to determine if the request is for AMP or for a [Long Form Video Ad Pod](/dev-docs/modules/adpod.html). +- `requestInfo.GlobalPrivacyControlHeader` to read the value of the `Sec-GPC` Global Privacy Control (GPC) header of the bid request. - `requestInfo.ConvertCurrency` a method to perform currency conversions. -The `MakeRequests` method is expected to return a slice (similar to a C# `List` or a Java `ArrayList`) of `adapters.RequestData` objects representing the HTTP calls to be sent to your bidding server and a slice of type `error` for any issues encountered creating them. If there are no HTTP calls or if there are no errors, please return `nil` for both return values. Neither slices may contain `nil` elements. +The `MakeRequests` method is expected to return a slice (similar to a C# `List` or a Java `ArrayList`) of `adapters.RequestData` objects representing the HTTP calls to be sent to your bidding server and a slice of type `error` for any issues encountered creating them. If there are no HTTP calls or if there are no errors, please return `nil` for both return values. Please do not add `nil` items in the slices. {: .alert.alert-info :} HTTP calls to your bidding server will automatically prefer GZIP compression. You should not specify it yourself using headers. You don't have to worry about decompressing the response in `MakeBids` either, as that will be taken care of automatically. -An Impression may define multiple sizes and/or multiple ad formats. If your bidding server limits requests to a single ad placement, size, or format, then your adapter will need to split the Impression into multiple calls and merge the responses. +##### Impression Splitting -
- Example: Impression splitting. +An Impression may define multiple sizes and/or multiple ad formats. If your bidding server limits requests to a single ad placement, size, or format, then your adapter will need to split the Impression into multiple calls and merge the responses. ```go -func (a *adapter) MakeRequests(request *openrtb.BidRequest, requestInfo *adapters.ExtraRequestInfo) (*adapters.RequestData, []error) { +func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapters.ExtraRequestInfo) (*adapters.RequestData, []error) { var requests []*adapters.RequestData var errors []error - + requestCopy := *request for _, imp := range request.Imp { - requestCopy.Imp = []openrtb.Imp{imp} + requestCopy.Imp = []openrtb2.Imp{imp} requestJSON, err := json.Marshal(request) if err != nil { errors = append(errors, err) continue } - + requestData := &adapters.RequestData{ Method: "POST", Uri: a.endpoint, @@ -546,10 +638,12 @@ func (a *adapter) MakeRequests(request *openrtb.BidRequest, requestInfo *adapter return requests, errors } ``` -
-

-If your bidding server supports multiple currencies, please be sure to pass through the `request.cur` field. If your bidding server only bids in a single currency, such as USD or EUR, that's fine. Prebid Server will convert your bid to the request currency if you include it in the bid response, otherwise we assume USD and conversion will not occur. +##### Currency + +If your bidding server supports multiple currencies, please pass through the `request.cur` field. If your bidding server only bids in a single currency, such as USD or EUR, that's fine. Prebid Server will convert your bid to the request currency if you include it in the bid response, otherwise we assume USD and conversion will not occur. + +Please ensure you forward the bid floor (`request.imp[].bidfloor`) and bid floor currency (`request.imp[].bidfloorcur`) values to your bidding server for enforcement. You can use of the `requestInfo.ConvertCurrency` helper method for currency conversions if your endpoint only supports floors in a specific currency. Please ensure you forward the bid floor (`request.imp[].bidfloor`) and bid floor currency (`request.imp[].bidfloorcur`) values to your bidding server for enforcement. You have access to the currency conversion helper method `ConvertCurrency` in case your endpoint only supports floors in a single currency. @@ -558,9 +652,8 @@ Please ensure you forward the bid floor (`request.imp[].bidfloor`) and bid floor ```go func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapters.ExtraRequestInfo) (*adapters.RequestData, []error) { - - for _, imp := range request.Imp { + for _, imp := range request.Imp { // Check if imp comes with bid floor amount defined in a foreign currency if imp.BidFloor > 0 && imp.BidFloorCur != "" && strings.ToUpper(imp.BidFloorCur) != "USD" { @@ -571,8 +664,7 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapte } // Update after conversion. All imp elements inside request.Imp are shallow copies - // therefore, their non-pointer values are not shared memory and are safe to modify - // without risking a data race condition + // therefore, their non-pointer values are not shared memory and are safe to modify. imp.BidFloorCur = "USD" imp.BidFloor = convertedValue } @@ -588,13 +680,15 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapte Uri: a.endpoint, Body: requestJSON, } - + return []*adapters.RequestData{requestData}, nil } ```

+##### Common Data + There are a several values of a bid that publishers expect to be populated. Some are defined by the OpenRTB 2.5 specification and some are defined by Prebid conventions. {: .table .table-bordered .table-striped } @@ -607,7 +701,7 @@ There are a several values of a bid that publishers expect to be populated. Some | [Request-Defined currency conversion rates](https://docs.prebid.org/prebid-server/features/pbs-currency.html) | Prebid | `request.ext.prebid.currency`
The publisher decides to prioritize its own custom currency conversion rates over Prebid Server's currency conversion rates. If a currency rate is not found in `request.ext.prebid.currency`, Prebid Server's rates will be used unless `usepbsrates` is set to `false`. If missing, `usepbsrates` defaults to true. | [First Party Data (FPD)](https://docs.prebid.org/prebid-server/features/pbs-fpd.html)| Prebid | `request.imp[].ext.context.data.*`, `request.app.ext.data.*`, `request.site.ext.data.*`, `request.user.ext.data.*`
The publisher may provide first party data (e.g. keywords). | GDPR | OpenRTB | `request.regs.ext.gdpr`, `request.user.ext.consent`
The publisher is specifying the European General Data Protection Regulation flag and TCF consent string. -| Site or App | OpenRTB | `request.site`, `request.app`
The publisher will provide either the site or app, but not both, representing the client's device. +| Site or App | OpenRTB | `request.site`, `request.app`
The publisher will provide either the site or app, but not both, representing the client's device. | Supply Chain | OpenRTB | `request.source.ext.schain`
The publisher's declaration of all parties who are selling or reselling the bid request. | Test | OpenRTB | `request.test`
The publisher is sending non-production traffic which also enables verbose debugging information from Prebid Server. | Video | OpenRTB | `request.imp[].video`
The publisher is specifying video ad requirements or preferences. @@ -619,18 +713,20 @@ For simplicity, adapters are expected to make net-price bids (e.g. "If this ad w The `MakeBids` method is responsible for parsing the bidding server's response and mapping it to the [OpenRTB 2.5 Bid Response object model](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf#page=32). -This method is called for each response received from your bidding server within the bidding window (`request.tmax`). If there are no requests or if all requests time out, the `MakeBids` method will not be called. +This method is called for each response received from your bidding server within the bidding time window (`request.tmax`). If there are no requests or if all requests time out, the `MakeBids` method will not be called. -{: .alert.alert-info :} +{: .alert.alert-warning :} It's *imperative* to include all required information in the response for your bid to be accepted. Please avoid common mistakes, such as not specifying the bid currency and not properly detecting the media type from the bidding server response. The first argument, `request`, is the exact same OpenRTB 2.5 Bid Request object provided to (and potentially mutated by) the `MakeRequests` method. The information in the `request` may be useful when detecting the media type. The second argument, `requestData`, is the exact same `adapters.RequestData` object returned by the `MakeRequests` method. It's rare for adapters to make use of this information, but it's provided for potential edge cases. -The third argument, `responseData`, is the HTTP response received from your bidding server and contains the status code, body, and headers. If your bidding server replies with a GZIP encoded body, it will be automatically decompressed. +The third argument, `responseData`, is the HTTP response received from your bidding server and contains the status code, body, and headers. If your bidding server replies with a GZIP encoded body, it will be automatically decompressed. -The `MakeBids` method is expected to return an `adapters.BidderResponse` object with one or more bids mapped from your bidding server's response. This may be as simple as decorating an OpenRTB 2.5 Bid Response with a some Prebid Server metadata (such as the media type) or more complicated mapping logic depending on your server's response format. +The `MakeBids` method is expected to return an `adapters.BidderResponse` object with one or more bids mapped from your bidding server's response. This may be as simple as decorating an OpenRTB 2.5 Bid Response with some Prebid Server metadata (such as the media type) or more complicated mapping logic depending on your server's response format. + +##### Object Model Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf#page=32) documentation to fully understand the response object model and expectations. We've summarized some common fields below. Data which is listed as required is enforced by the core framework and cannot be omitted. @@ -639,12 +735,12 @@ Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-conte | - | - | - | `.Currency` | Required | [3-letter ISO 4217 code](https://www.iso.org/iso-4217-currency-codes.html) defining the currency of the bid. The Prebid Server default is USD. | `.Bids[].BidType` | Required | Prebid Server defined value identifying the media type as `banner`, `video`, `audio`, or `native`. Should be mapped from the bidding server response. -| `.Bids[].Bid.ADomain` | Optional | Advertiser domain for block list checking. -| `.Bids[].Bid.AdM` | Optional | Ad markup to serve if the bid wins. May be HTML, Native, or VAST/VMAP formats. You should resolve any AUCTION_PRICE macros. | `.Bids[].Bid.CrID` | Required | Unique id of the creative. | `.Bids[].Bid.ID` | Required | Bidder generated id to assist with logging and tracking. | `.Bids[].Bid.ImpID` | Required | ID of the corresponding bid request Impression. Prebid Server validates the id is actually found in the bid request. | `.Bids[].Bid.Price` | Required | Net price CPM of the bid, not gross price. Publishers can correct for gross price bids by setting Bid Adjustments to account for fees. We recommend the most granular price a bidder can provide. +| `.Bids[].Bid.ADomain` | Optional | Advertiser domain for block list checking. +| `.Bids[].Bid.AdM` | Optional | Ad markup to serve if the bid wins. May be HTML, Native, or VAST/VMAP formats. You should resolve any AUCTION_PRICE macros. | `.Bids[].Bid.W` | Optional | Width of the creative in pixels. | `.Bids[].Bid.H` | Optional | Height of the creative in pixels. | `.Bids[].Bid.Ext` | Optional | Embedded JSON containing Prebid metadata (see below) or custom information. @@ -652,19 +748,22 @@ Please review the entire [OpenRTB 2.5 Bid Response](https://www.iab.com/wp-conte {: .alert.alert-info :} We recommend resolving creative OpenRTB macros in your adapter. Otherwise, AUCTION_PRICE will eventually get resolved by the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative), but by then the bid price will be in the ad server currency and quantized by the price granularity. -If you'd like to support Long Form Video Ad Pods, then you'll need to provide the followings information: +If you'd like to support [Long Form Video Ad Pods](/dev-docs/modules/adpod.html)s, then you'll need to provide the followings information: {: .table .table-bordered .table-striped } | BidderResponse Path | Description | - | - -| `.Bids[].BidVideo.PrimaryCategory` | Category for the bid. Should be able to be translated to the primary ad server format. -| `.Bids[].Bid.Cat` | Category for the bid. Should be able to be translated to the primary ad server format. +| `.Bids[].BidVideo.PrimaryCategory` | Category for the bid in the taxonomy used by the ad server. Will be passed through without translation. +| `.Bids[].Bid.Cat` | IAB category for the bid which may be translated to the taxonomy used by the ad server. | `.Bids[].BidVideo.Duration` | Length of the video in integer seconds. | `.Bids[].DealPriority` | Deal tier integer value. Defaults to 0. {: .alert.alert-info :} Either `.Bids[].BidVideo.PrimaryCategory` or `.Bids[].Bid.Cat` should be provided. -Prebid has historically struggled with sharing granular bid response data with publishers, analytics, and reporting systems. To address this, we've introduced a standard object model. We encourage adapters to provide as much information as possible in the bid response. + +##### Metadata + +Prebid has introduced a standard object model for sharing granular bid response data with publishers, analytics, and reporting systems. We encourage adapters to provide as much information as possible in the bid response. {: .alert.alert-danger :} Bid metadata will be *required* in Prebid.js 5.X+ release, specifically for bid.ADomain and MediaType. We recommend making sure your adapter sets these values or Prebid.js may throw out the bid. @@ -680,7 +779,7 @@ Bid metadata will be *required* in Prebid.js 5.X+ release, specifically for bid. | `.AdvertiserName` | Bidder-specific advertiser name. | `.BrandID` | Bidder-specific brand id for advertisers with multiple brands. | `.BrandName` | Bidder-specific brand name. -| `.DChain` | Demand Chain Object. +| `.DChain` | Demand chain object. | `.PrimaryCategoryID` | Primary IAB category id. | `.SecondaryCategoryIDs` | Secondary IAB category ids. | `.MediaType` | Either `banner`, `audio`, `video`, or `native`. This is used in the scenario where a bidder responds with a mediatype different than the stated type. e.g. native when the impression is for a banner. One use case is to help publishers determine whether the creative should be wrapped in a safeframe. @@ -691,82 +790,46 @@ Bid metadata will be *required* in Prebid.js 5.X+ release, specifically for bid. Example: Setting metadata. ```go -func (a *adapter) MakeBids(request *openrtb.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) { +func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) { ... for _, seatBid := range response.SeatBid { - for _, bid := range seatBid.Bid { - bid := bid // pin https://github.com/kyoh86/scopelint#whats-this + for i, bid := range seatBid.Bid { b := &adapters.TypedBid{ - Bid: &bid, + Bid: &seatBid.Bid[i], BidType: getMediaTypeForBid(bid), - } - - if meta, err := buildMeta(b); err != nil { - errs = append(errs, metaErr) - } else { - b.Bid.Ext = meta - bidResponse.Bids = append(bidResponse.Bids, b) + BidMeta: getBidMeta(bid), } } ... } -func buildMeta(bid *adapters.TypedBid) (json.RawMessage, error) { - metaExt := openrtb_ext.ExtBidPrebid { - Meta: &openrtb_ext.ExtBidPrebidMeta { - NetworkID: 1, - NetworkName: "Some Network Name", - AgencyID: 2, - AgencyName: "Some Agency Name", - AdvertiserID: 3, - AdvertiserName: "Some Advertiser Name", - DChain: json.RawMessage(`{Some Demand Chain JSON}`), - BrandID: 4, - BrandName: "Some Brand Name", - PrimaryCategoryID: "IAB-1", - SecondaryCategoryIDs: []string{"IAB-2", "IAB-3"}, - MediaType: b.BidType, - } +func getBidMeta(bid *adapters.TypedBid) *openrtb_ext.ExtBidPrebidMeta { + // Not all fields are required. This example includes all fields for + // demonstration purposes. + return &openrtb_ext.ExtBidPrebidMeta { + NetworkID: 1, + NetworkName: "Some Network Name", + AgencyID: 2, + AgencyName: "Some Agency Name", + AdvertiserID: 3, + AdvertiserName: "Some Advertiser Name", + AdvertiserDomains: []string{"Some Domain"}, + DemandSource: "Some Demand Source", + DChain: json.RawMessage(`{Some Demand Chain JSON}`), + BrandID: 4, + BrandName: "Some Brand Name", + PrimaryCategoryID: "IAB-1", + SecondaryCategoryIDs: []string{"IAB-2", "IAB-3"}, + MediaType: "banner", } - return json.Marshal(meta) } ```

-### Create A User Syncer (Optional) - -Prebid Server offers a federated [user sync solution](https://docs.prebid.org/prebid-server/developers/pbs-cookie-sync.html) to store user ids in a single cookie under the host's domain. You may add support with a relatively small amount of code if your bidding server supports this protocol. - -Create a file with the path `adatpers/{bidder}/usersync.go` using the following template: - -```go -package {bidder} - -import ( - "text/template" - - "github.com/prebid/prebid-server/adapters" - "github.com/prebid/prebid-server/usersync" -) - -func NewSyncer(template *template.Template) usersync.Usersyncer { - return adapters.NewSyncer("{bidder}", template, adapters.SyncTypeRedirect) -} -``` - -The heavy lifting is handled by the `adapters.NewSyncer` method. You just need to provide a few arguments: - -{: .table .table-bordered .table-striped } -| Argument | Description -| - | - -| `familyName` | Name used for storing your user sync id within the federated cookie. Please keep this the same as your bidder name. -| `urlTemplate` | Pass through the `template` argument. -| `syncType` | Type of user sync supported by your bidding server. The valid options are `SyncTypeRedirect` and `SyncTypeIframe`. - ### Register With The Core -Prebid Server does not use reflection or any other automagic technology to recognize your new bid adapter. You must manually register it with the core framework. +Prebid Server does not use reflection or any other automated technology to recognize your new bid adapter. You must manually register it with the core framework. {: .alert.alert-info :} You will need to add an `import` statement for your bid adapter package in these files. Modern code editors such as Visual Studio Code and JetBrain's GoLand will automatically do that for you. @@ -791,7 +854,7 @@ const ( func CoreBidderNames() []BidderName { return []BidderName{ ... - Bidder{Bidder}, + Bidder{Bidder}, ... } } @@ -809,20 +872,9 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder { } ``` -If you have a user syncer, edit the file `usersync/usersyncers/syncer.go` to include it in the syncer map. - -```go -func NewSyncerMap(cfg *config.Configuration) map[openrtb_ext.BidderName]usersync.Usersyncer { - syncers := make(map[openrtb_ext.BidderName]usersync.Usersyncer, len(cfg.Adapters)) - ... - insertIntoMap(cfg, syncers, openrtb_ext.Bidder{Bidder}, {bidder}.NewSyncer) - ... -} -``` - ### Set Adapter Defaults -Lastly, you need to provide default settings for your bid adapter. You can decide if you'd like your bid adapter to be enabled out of the box, and if so, you'll need to provide a default endpoint and default extra adapter info if applicable. If your bid adapter requires host specific information to function properly, such as a security token or host account, then it's best to leave the adapter disabled. +You need to provide default settings for your bid adapter. You can decide if you'd like your bid adapter to be enabled out of the box, and if so, you'll need to provide a default endpoint and default extra adapter info (if applicable). If your bid adapter requires host specific information to function properly, such as a security token or host account, then it's best to leave the adapter disabled. {: .alert.alert-warning :} **HOST SPECIFIC INFO:** The default endpoint must not be specific to any particular host, such as Xandr/AppNexus. We may ask you about suspicious looking ids during the review process. Please reach out to individual hosts if you need to set specialized configuration. @@ -835,7 +887,7 @@ Edit the file `config/config.go` to register your default endpoint within the `S func SetupViper(v *viper.Viper, filename string) { ... v.SetDefault("adapters.{bidder}.endpoint", "https://your.url/any/path") - v.SetDefault("adapters.{bidder}.extra_info", `{"your": "extra info"}`) + v.SetDefault("adapters.{bidder}.extra_info", `{"your": "extra info"}`) ... } ``` @@ -852,76 +904,9 @@ func SetupViper(v *viper.Viper, filename string) { } ``` -### Set User Syncer Defaults - -If you implemented a user syncer, you'll need to provide a default endpoint. Edit the file `config/config.go` to alphabetically register your user syncer in the `setDerivedDefaults` method: - -```go -func (cfg *Configuration) setDerivedDefaults() { - ... - setDefaultUsersync(cfg.Adapters, openrtb_ext.Bidder{Bidder}, "https://your.url/sync?r="+url.QueryEscape(externalURL)+"%2Fsetuid%3Fbidder%3D{bidder}%26gdpr%3D{%raw%}{{.GDPR}}%26gdpr_consent%3D{{.GDPRConsent}}{%endraw%}%26uid%3D%5BUUID%5D") - ... -} -``` - -If you don't have a good default, please add a comment instead. - -```go -func (cfg *Configuration) setDerivedDefaults() { - ... - // openrtb_ext.Bidder{Bidder} doesn't have a good default. - ... -} -``` - - -Yes, you're right. That url value is quite complicated. You can find further details in our [user sync documentation](https://docs.prebid.org/prebid-server/developers/pbs-cookie-sync.html). - -The user sync endpoint is composed of two main parts, the url of your user syncer and a redirect back to Prebid Server. The url of your user syncer is responsible for reading the user id from the client's cookie and redirecting to Prebid Server with a user id macro resolved. - -The url of your user syncer can make use of the following privacy policy macros which will be resolved by Prebid Server before sending the url to your server: -- `{%raw%}{{.USPrivacy}}{%endraw%}`: Client's CCPA consent string. -- `{%raw%}{{.GDPR}}{%endraw%}`: Client's GDPR TCF enforcement flag. -- `{%raw%}{{.GDPRConsent}}{%endraw%}`: Client's GDPR TCF consent string. - -
- Example: Bidding server url with no macros. - -```go -"https://your.url/sync?r=" -``` -
- -
- Example: Bidding server url with CCPA privacy consent. - -```go -"https://your.url/sync?usp={%raw%}{{.USPrivacy}}{%endraw%}&r=" -``` -
-

- -The redirect url for Prebid Server must follow this format: -``` -{host}/setuid?bidder={bidder}&gdpr={%raw%}{{.GDPR}}&gdpr_consent={{.GDPRConsent}}{%endraw%}&uid=[UUID] -``` - -{: .table .table-bordered .table-striped } -| Token | Description -| - | - -| `{host}` | Placeholder for the Prebid Server host url. In code, you would substitute it with `url.QueryEscape(externalURL)`. -| `{bidder}` | Placeholder for the name of your bid adapter. -| `[UUID]` | Macro defined by your user sync server which will be replaced with the user's id. - -The final value of the redirect url is encoded for safe use within a query string: - -``` -{host}%2Fsetuid%3Fbidder%3D{bidder}%26gdpr%3D{%raw%}{{.GDPR}}%26gdpr_consent%3D{{.GDPRConsent}}{%endraw%}%26uid%3D%5BUUID%5D -``` - ## Test Your Adapter -This chapter will guide you through the creation of automated unit tests to cover your bid adapter code, bidder parameters JSON Schema, and user sync code. We use GitHub Action Workflows to ensure the code you submit passes validation. You can run the same validation locally with this command: +This section will guide you through the creation of automated unit tests to cover your bid adapter code and bidder parameters JSON Schema. We use GitHub Action Workflows to ensure the code you submit passes validation. You can run the same validation locally with this command: ```bash ./validate.sh --nofmt --cov --race 10 @@ -940,7 +925,7 @@ package {bidder} import ( "testing" - + "github.com/prebid/prebid-server/adapters/adapterstest" "github.com/prebid/prebid-server/config" "github.com/prebid/prebid-server/openrtb_ext" @@ -949,11 +934,11 @@ import ( func TestJsonSamples(t *testing.T) { bidder, buildErr := Builder(openrtb_ext.Bidder{Bidder}, config.Adapter{ Endpoint: "http://whatever.url"}) - + if buildErr != nil { t.Fatalf("Builder returned unexpected error %v", buildErr) } - + adapterstest.RunJSONBidderTest(t, "{bidder}test", bidder) } ``` @@ -1008,7 +993,7 @@ The format of a JSON test is as follows: The `mockBidRequest`, `httpCalls`, and `expectedBidResponses` fields are required. The `expectedMakeRequestsErrors` and `expectedMakeBidsErrors` may be omitted if there are no expected errors. We provide a `literal` and `regex` mode for testing error values. We often use the `regex` mode to handle error messages produced by the core Go framework which changed between recent releases. -To make everyone's life easier, please use a JSON 'prettifier' to apply standard formatting to your test files. We recommend the use of Visual Studio Code's [Beautify](https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify) extension. +Please use a JSON 'prettifier' to apply standard formatting to your test files. We recommend the use of Visual Studio Code's [Beautify](https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify) extension. ### Builder Tests @@ -1020,7 +1005,7 @@ If your adapter supports template parsing, we recommend adding this failure test func TestEndpointTemplateMalformed(t *testing.T) { _, buildErr := Builder(openrtb_ext.Bidder{Bidder}, config.Adapter{ Endpoint: "{%raw%}{{Malformed}}{%endraw%}"}) - + assert.Error(t, buildErr) } ``` @@ -1033,7 +1018,7 @@ func TestBadConfig(t *testing.T) { Endpoint: `http://it.doesnt.matter/bid`, ExtraAdapterInfo: `{foo:42}`, }) - + assert.Error(t, buildErr) } @@ -1042,9 +1027,9 @@ func TestEmptyConfig(t *testing.T) { Endpoint: `http://it.doesnt.matter/bid`, ExtraAdapterInfo: ``, }) - + bidder{Bidder} := bidder.(*adapter) - + assert.NoError(t, buildErr) assert.Empty(t, bidder{Bidder}.extraInfo.SomeInfo) } @@ -1060,7 +1045,7 @@ package {bidder} import ( "encoding/json" "testing" - + "github.com/prebid/prebid-server/openrtb_ext" ) @@ -1069,7 +1054,7 @@ func TestValidParams(t *testing.T) { if err != nil { t.Fatalf("Failed to fetch the json schema. %v", err) } - + for _, p := range validParams { if err := validator.Validate(openrtb_ext.Bidder{Bidder}, json.RawMessage(p)); err != nil { t.Errorf("Schema rejected valid params: %s", p) @@ -1082,7 +1067,7 @@ func TestInvalidParams(t *testing.T) { if err != nil { t.Fatalf("Failed to fetch the json schema. %v", err) } - + for _, p := range invalidParams { if err := validator.Validate(openrtb_ext.Bidder{Bidder}, json.RawMessage(p)); err == nil { t.Errorf("Schema allowed invalid params: %s", p) @@ -1101,66 +1086,11 @@ var invalidParams = []string{ ``` Please include tests for required fields, optional fields, conditional fields such as `oneOf`, regex filters, and data type mismatches. For example, if the field is defined as a string please include one invalid case for the wrong data type such as an integer in this example. -You don't have to go crazy with combinatorials. We're looking for just enough test cases to build confidence. - -### User Syncer Tests - -{: .alert.alert-info :} -Please skip to the end of this section if your adapter doesn't define a user syncer. - -We ask that you include a user syncer test to verify the basic mechanics of macro substitution. The `syncURL` should be the same value used in the `setDefaultUsersync` call with the `url.QueryEscape(externalURL)` code replaced with a simple hardcoded value such as `"host"`. Please keep the privacy policy values simple, as we're only testing substitution. - -Create a file with the path `adapters/{bidder}/usersync_test.go` using the following template: - -```go -package {bidder} - -import ( - "testing" - "text/template" - - "github.com/prebid/prebid-server/privacy" - "github.com/prebid/prebid-server/privacy/ccpa" - "github.com/prebid/prebid-server/privacy/gdpr" - "github.com/stretchr/testify/assert" -) - -func TestSyncer(t *testing.T) { - syncURL := "" - syncURLTemplate := template.Must( - template.New("sync-template").Parse(syncURL), - ) - - syncer := NewSyncer(syncURLTemplate) - syncInfo, err := syncer.GetUsersyncInfo(privacy.Policies{ - GDPR: gdpr.Policy{ - Signal: "A", - Consent: "B", - }, - CCPA: ccpa.Policy{ - Consent: "C", - }, - }) - - assert.NoError(t, err) - assert.Equal(t, "", syncInfo.URL) - assert.Equal(t, "redirect", syncInfo.Type) -} -``` - -If you *DON'T* have a user syncer, edit the file `usersync/usersyncers/syncer_test.go` to exclude your bid adapter from user sync tests: - -```go -adaptersWithoutSyncers := map[openrtb_ext.BidderName]bool{ - ... - openrtb_ext.Bidder{Bidder}: true, - ... -} -``` +There is no need to provide a combinatorial for every edge case possibility. We're looking for just enough test cases to build confidence. ### Manual End To End Tests -We'll verify your adapter works correctly on a technical level during the code review, but you'll need to perform separate end-to-end testing: +We'll verify your adapter works correctly on a technical level during the code review, but you'll need to perform manual end-to-end testing: 1. Build the project and start your server: ```bash @@ -1204,13 +1134,15 @@ We'll verify your adapter works correctly on a technical level during the code r }' ``` -If your bid adapters defines a user syncer, please perform end-to-end testing of the user sync process: +### User Sync Testing + +If your bid adapter defines one or more user sync endpoints, you'll need to perform manual end-to-end testing of each endpoint using the following process: -1. [Save a User ID](https://docs.prebid.org/prebid-server/endpoints/pbs-endpoint-setuid.html) using the `familyName` of your user syncer. This is likely the same as your bidder name. +1. [Save a User ID](https://docs.prebid.org/prebid-server/endpoints/pbs-endpoint-setuid.html) using the `key` of your user sync endpoint. This should default to your bidder name and is case sensitive. 1. Run a test auction (see the curl example above) and verify in the debug response that the outgoing `request.ext.debug.httpcalls` calls includes the User ID you saved in step 1. -It may be a bit tricky to track down the root cause of user sync errors. If you get stuck, please [submit a GitHub issue](https://github.com/prebid/prebid-server/issues/new) and we'll provide guidance. +If you are having issues finding the root cause of user sync errors, please [submit a GitHub issue](https://github.com/prebid/prebid-server/issues/new) and we'll provide guidance. ## User Documentation @@ -1281,13 +1213,6 @@ Notes on the metadata fields: - `adapters/{bidder}/{bidder}_test.go` - `adapters/{bidder}/{bidder}test/exemplary/*.json` - `adapters/{bidder}/{bidder}test/supplemental/*.json` - - `adapters/{bidder}/{bidder}test/params/race/{mediaType}.json` -- User Syncer - If You Have One - - `adapters/{bidder}/usersync.go` - - `adapters/{bidder}/usersync_test.go` - - `usersync/usersyncers/syncer.go` -- User Syncer - If You Don't - - `usersync/usersyncers/syncer_test.go` - Register With The Core - `openrtb_ext/bidders.go` - `exchange/adapter_builders.go` @@ -1296,7 +1221,7 @@ Notes on the metadata fields: ## Contribute -Whew! You're almost done. Thank you for taking the time to develop a Prebid Server bid adapter. When you're ready, [contribute](https://github.com/prebid/prebid-server/blob/master/docs/developers/contributing.md) your new bid adapter by opening a PR to the [PBS-Go GitHub repository](https://github.com/prebid/prebid-server) with the name "New Adapter: {Bidder}". +Thank you for taking the time to develop a Prebid Server bid adapter. When you're ready, [contribute](https://github.com/prebid/prebid-server/blob/master/docs/developers/contributing.md) your new bid adapter by opening a PR to the [PBS-Go GitHub repository](https://github.com/prebid/prebid-server) with the name "New Adapter: {Bidder}". {: .alert.alert-warning :} You don't need to ask permission or open a GitHub issue before submitting an adapter. diff --git a/prebid-server/developers/pbs-cookie-sync.md b/prebid-server/developers/pbs-cookie-sync.md index 5469f89994..dc739375db 100644 --- a/prebid-server/developers/pbs-cookie-sync.md +++ b/prebid-server/developers/pbs-cookie-sync.md @@ -50,9 +50,9 @@ POST https://prebid-server.example.com/cookie_sync 3) When it receives the response, Prebid.js loops through each element of `bidder_status[]`, dropping a pixel for each `bidder_status[].usersync.url`. -4) The bidder-specific endpoints read the users's cookie for the bidder's domain and respond with a redirect back to Prebid Server's [`/setuid` endpoint](/prebid-server/endpoints/pbs-endpoint-setuid.html) +4) The bidder-specific endpoints read the users' cookie for the bidder's domain and respond with a redirect back to Prebid Server's [`/setuid` endpoint](/prebid-server/endpoints/pbs-endpoint-setuid.html) -5) When the browser receives this redirect, it contacts Prebid Server, which will once again check the privacy settings and will update the `uids` cookie if allowed. +5) When the browser receives this redirect, it contacts Prebid Server, which will once again check the privacy settings and if allowed, update the `uids` cookie. ### Setting the uids cookie from AMP @@ -60,7 +60,8 @@ Cookie sync for AMP works in a way quite similar to Prebid.js. 1) The Prebid Server hosting company places a modified version of the `load-cookie` script onto a CDN. This script is part of the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative/blob/master/src/cookieSync.js) repo. -Note that the only two values currently valid for 'endpoint' are 'appnexus' and 'rubicon' -- other host companies should update their copy to include their endpoint. +{: .alert.alert-warning :} +The only two values currently valid for 'endpoint' are 'appnexus' and 'rubicon' -- other host companies should update their copy to include their endpoint. See [the AMP implementation guide](/dev-docs/show-prebid-ads-on-amp-pages.html#user-sync) for more information. @@ -76,21 +77,19 @@ See [the AMP implementation guide](/dev-docs/show-prebid-ads-on-amp-pages.html#u ``` -Note: if the publisher has an AMP Consent Management Platform, they should use `load-cookie-with-consent.html`. +{: .alert.alert-info :} +If the publisher has an AMP Consent Management Platform, they should use `load-cookie-with-consent.html`. 3) At runtime, the `load-cookie` script just calls the Prebid Server /cookie_sync endpoint. The rest works the same as described for Prebid.js above. ## Bidder Instructions for Building a Sync Endpoint -Building a sync endpoint is optional -- mobile-only bidders don't benefit from -ID syncing. But for browser-based bidding, ID syncing can help improve buyer bid rate. There are two main options a bidder can choose to support: +Building a sync endpoint is optional -- there is no benefit from ID syncing for mobile-only bidders. For browser-based bidding, ID syncing can help improve buyer bid rate. There are two main options a bidder can choose to support: - redirect: the client will drop an IMG tag into the page, then call the bidder's URL which needs to redirect to the Prebid Server /setuid endpoint. - iframe: the client will drop an IFRAME tag into the page, then call the bidder's URL which responds with HTML and Javascript that calls the Prebid Server /setuid endpoint at some point. -PBS-Java allows bidders to support both options. - Bidders must implement an endpoint under their domain which accepts an encoded URI for redirects. This URL should be able to accept privacy parameters: - gdpr: if 0, declares this request isn't in GDPR scope. If 1, declares it is in scope. Otherwise indeterminate. @@ -99,20 +98,24 @@ Bidders must implement an endpoint under their domain which accepts an encoded U The specific attributes can differ for your endpoint. For instance, you could choose to receive gdprConsent rather than gdpr_consent. -Here's an example that shows the privacy macros as coded into PBS-Go: +Here's an example that shows the privacy macros as configured in PBS-Go: ``` -GET some-bidder-domain.com/usersync-url?gdpr={%raw%}{{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}{%endraw%}&redirectUri=prebid-server.example.com%2Fsetuid%3Fbidder%3Dsomebidder%26uid%3DYOURMACRO +userSync: + redirect: + url: https://some-bidder-domain.com/usersync-url?gdpr={%raw%}{{.GDPR}}{%endraw%}&consent={%raw%}{{.GDPRConsent}}{%endraw%}&us_privacy={%raw%}{{.USPrivacy}}{%endraw%}&redirect={%raw%}{{.RedirectURL}}{%endraw%} + userMacro: YOURMACRO ``` + PBS-Java uses slightly different macros in the bidder config: ``` - usersync: - url: https://some-bidder-domain.com/usersync-url?gdpr={%raw%}{{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}{%endraw%}&redirectUri= - redirect-url: /setuid?bidder=acuityads&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&uid=YOURMACRO +usersync: + url: https://some-bidder-domain.com/usersync-url?gdpr={%raw%}{{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}{%endraw%}&redirectUri= + redirect-url: /setuid?bidder=acuityads&gdpr={%raw%}{{gdpr}}{%endraw%}&gdpr_consent={%raw%}{{gdpr_consent}}{%endraw%}&us_privacy={%raw%}{{us_privacy}}{%endraw%}&uid=YOURMACRO ``` -In either case, the {%raw%}{{}}{%endraw%} macros are resolved by PBS. +In either case, the {%raw%}{{...}}{%endraw%} macros are resolved by PBS. -{: .alert.alert-info :} -Important: The "YOURMACRO" string here needs to be whatever your sync endpoint will recognize and resolve to the user's ID from your domain. Some examples of macros that bidders use: $UID, ${UID}, $$visitor_cookie$$, ${DI_USER_ID}, etc. Every bidder has their own value here. +{: .alert.alert-warning :} +The "YOURMACRO" string here needs to be whatever your sync endpoint will recognize and resolve to the user's ID from your domain. Some examples of macros that bidders use: $UID, ${UID}, $$visitor_cookie$$, ${DI_USER_ID}, etc. Every bidder has their own value here. Here's how this all comes together: diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md index 1f685b7eff..007d721f2b 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md @@ -211,10 +211,10 @@ It's also possible to define different bid adjustment factors by mediatype, whic "prebid": { "bidadjustmentfactors": { "bidderA": 0.9, - "bidderB": 0.8 + "bidderB": 0.8, "mediatypes": { "banner": { - "bidderA": 0.8, + "bidderA": 0.8 }, "video-outstream": { "bidderC": 0.9 @@ -222,7 +222,7 @@ It's also possible to define different bid adjustment factors by mediatype, whic "video": { "bidderB": 0.85 } - } + } } } } @@ -268,7 +268,8 @@ to set these params on the response at `response.seatbid[i].bid[j].ext.prebid.ta "precision": 2, "ranges": [{ "max": 20.00, - "increment": 0.10 // This is equivalent to the deprecated "pricegranularity": "medium" + "increment": 0.10 // This is equivalent to the deprecated + // "pricegranularity": "medium" }] }, "includewinners": true, // Optional param defaulting to false @@ -423,9 +424,9 @@ This prevents breaking API changes as new Bidders are added to the project. For example, if the Request defines an alias like this: ``` - "aliases": { - "appnexus": "rubicon" - } +"aliases": { + "appnexus": "rubicon" +} ``` then any `imp.ext.appnexus` params will actually go to the **rubicon** adapter. @@ -438,13 +439,16 @@ For environments that have turned on [GDPR enforcement](/prebid-server/features/ To do this, just set `ext.prebid.aliasgvlids` alongside ext.prebid.aliases: ``` -"ext": +"ext": { "prebid": { - "aliases": { "newAlias": "originalBidderCode" }, - "aliasgvlids": { "newAlias": 11111 } + "aliases": { + "newAlias": "originalBidderCode" + }, + "aliasgvlids": { + "newAlias": 11111 } } -}); +} ``` ##### Stored Requests @@ -526,12 +530,10 @@ Example: { "imp": [{ ... - "banner": { - ... - } + "banner": { ... }, "instl": 1, ... - }] + }], "device": { ... "h": 640, @@ -556,20 +558,20 @@ PBS with interstitial support will come preconfigured with a list of common ad s To set the desired 'ad server currency', use the standard OpenRTB `cur` attribute. Note that Prebid Server only looks at the first currency in the array. ``` - "cur": ["USD"] +"cur": ["USD"] ``` If you want or need to define currency conversion rates (e.g. for currencies that your Prebid Server doesn't support), -define ext.prebid.currency.rates. (Currently supported in PBS-Java only) +define ext.prebid.currency.rates. ``` "ext": { "prebid": { - "currency": { - "rates": { - "USD": { "UAH": 24.47, "ETB": 32.04 } - } - } + "currency": { + "rates": { + "USD": { "UAH": 24.47, "ETB": 32.04 } + } + } } } ``` @@ -585,9 +587,9 @@ Basic supply chains are passed to Prebid Server on `source.ext.schain` and passe Bidder-specific schains: ``` -ext.prebid.schains: [ - { bidders: ["bidderA"], schain: { SCHAIN OBJECT 1}}, - { bidders: ["*"], schain: { SCHAIN OBJECT 2}} +"ext.prebid.schains": [ + { "bidders": ["bidderA"], "schain": { SCHAIN OBJECT 1}}, + { "bidders": ["*"], "schain": { SCHAIN OBJECT 2}} ] ``` In this scenario, Prebid Server sends the first schain object to `bidderA` and the second schain object to everyone else. @@ -600,24 +602,23 @@ Prebid Server adapters can support the [Prebid.js User ID modules](/dev-docs/mod ``` { - "user": { - "ext": { - "eids": [{ - "source": "adserver.org", - "uids": [{ - "id": "111111111111", - "ext": { - "rtiPartner": "TDID" - } - }] - }, - { - "source": "pubcid.org", - "id":"11111111" - } - ] - } + "user": { + "ext": { + "eids": [{ + "source": "adserver.org", + "uids": [{ + "id": "111111111111", + "ext": { + "rtiPartner": "TDID" + } + }] + }, + { + "source": "pubcid.org", + "id":"11111111" + }] } + } } ``` @@ -627,17 +628,17 @@ Publishers can constrain which bidders receive which user.ext.eids entries. See ``` { - ext: { - prebid: { - data: { - eidpermissions: [ // prebid server will use this to filter user.ext.eids - {"source": "sharedid.org", "bidders": ["*"]}, // * is the default - {"source": "neustar.biz", "bidders": ["bidderB"]}, - {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} - ] - } - } + "ext": { + "prebid": { + "data": { + "eidpermissions": [ // prebid server will use this to filter user.ext.eids + {"source": "sharedid.org", "bidders": ["*"]}, // * is the default + {"source": "neustar.biz", "bidders": ["bidderB"]}, + {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} + ] + } } + } } ``` @@ -678,24 +679,34 @@ When a storedauctionresponse ID is specified: This request: ``` { - "test":1, - "tmax":500, + "test": 1, + "tmax": 500, "id": "test-auction-id", "app": { ... }, "ext": { - "prebid": { - "targeting": {}, - "cache": { "bids": {} } - } + "prebid": { + "targeting": {}, + "cache": { + "bids": {} + } + } }, "imp": [ { "id": "a", - "ext": { "prebid": { "storedauctionresponse": { "id": "1111111111" } } } + "ext": { + "prebid": { + "storedauctionresponse": { "id": "1111111111" } + } + } }, { "id": "b", - "ext": { "prebid": { "storedauctionresponse": { "id": "22222222222" } } } + "ext": { + "prebid": { + "storedauctionresponse": { "id": "22222222222" } + } + } } ] } @@ -704,16 +715,16 @@ This request: Will result in this response, assuming that the ids exist in the appropriate DB table read by Prebid Server: ``` { - "id": "test-auction-id", - "seatbid": [ - { - // BidderA bids from storedauctionresponse=1111111111 - // BidderA bids from storedauctionresponse=22222222 - }, - { - // BidderB bids from storedauctionresponse=1111111111 - // BidderB bids from storedauctionresponse=22222222 - } + "id": "test-auction-id", + "seatbid": [ + { + // BidderA bids from storedauctionresponse=1111111111 + // BidderA bids from storedauctionresponse=22222222 + }, + { + // BidderB bids from storedauctionresponse=1111111111 + // BidderB bids from storedauctionresponse=22222222 + } ] } ``` @@ -724,37 +735,37 @@ In contrast to what's outlined above, this approach lets some real auctions take ``` { - "test":1, - "tmax":500, + "test": 1, + "tmax": 500, "id": "test-auction-id", "app": { ... }, "ext": { - "prebid": { - "targeting": {}, - "cache": { "bids": {} } - } + "prebid": { + "targeting": {}, + "cache": { "bids": {} } + } }, "imp": [ { "id": "a", "ext": { - "prebid": { - "storedbidresponse": [ - { "bidder": "BidderA", "id": "333333" }, - { "bidder": "BidderB", "id": "444444" }, - ] - } + "prebid": { + "storedbidresponse": [ + { "bidder": "BidderA", "id": "333333" }, + { "bidder": "BidderB", "id": "444444" }, + ] + } } }, { "id": "b", "ext": { - "prebid": { - "storedbidresponse": [ - { "bidder": "BidderA", "id": "5555555" }, - { "bidder": "BidderB", "id": "6666666" }, - ] - } + "prebid": { + "storedbidresponse": [ + { "bidder": "BidderA", "id": "5555555" }, + { "bidder": "BidderB", "id": "6666666" }, + ] + } } } ] @@ -764,18 +775,18 @@ Could result in this response: ``` { - "id": "test-auction-id", - "seatbid": [ - { - "bid": [ - // contents of storedbidresponse=3333333 as parsed by bidderA adapter - // contents of storedbidresponse=5555555 as parsed by bidderA adapter - ] - }, - { - // contents of storedbidresponse=4444444 as parsed by bidderB adapter - // contents of storedbidresponse=6666666 as parsed by bidderB adapter - } + "id": "test-auction-id", + "seatbid": [ + { + "bid": [ + // contents of storedbidresponse=3333333 as parsed by bidderA adapter + // contents of storedbidresponse=5555555 as parsed by bidderA adapter + ] + }, + { + // contents of storedbidresponse=4444444 as parsed by bidderB adapter + // contents of storedbidresponse=6666666 as parsed by bidderB adapter + } ] } ``` @@ -793,49 +804,52 @@ It specifies where in the OpenRTB request non-standard attributes should be pass ``` { + "ext": { + "prebid": { + "data": { "bidders": [ "rubicon", "appnexus" ] } // these are the bidders allowed to see protected data + } + }, + "site": { + "keywords": "", + "search": "", "ext": { - "prebid": { - "data": { "bidders": [ "rubicon", "appnexus" ] } // these are the bidders allowed to see protected data - } - }, - "site": { - "keywords": "", - "search": "", - "ext": { - data: { GLOBAL SITE DATA } // only seen by bidders named in ext.prebid.data.bidders[] - } - }, - "user": { - "keywords": "", - "gender": "", - "yob": 1999, - "geo": {}, - "ext": { - data: { GLOBAL USER DATA } // only seen by bidders named in ext.prebid.data.bidders[] + "data": { GLOBAL SITE DATA } // only seen by bidders named in ext.prebid.data.bidders[] + } + }, + "user": { + "keywords": "", + "gender": "", + "yob": 1999, + "geo": {}, + "ext": { + "data": { GLOBAL USER DATA } // only seen by bidders named in ext.prebid.data.bidders[] + } + }, + "imp": [ + { + ... + "ext": { + "data": { + ADUNIT SPECFIC CONTEXT DATA // can be seen by all bidders } - }, - "imp": [ - ... - "ext": { - "data": { - ADUNIT SPECFIC CONTEXT DATA // can be seen by all bidders - } - } - ] + } + } + ] +} ``` Bidder-specific data can be defined with ext.prebid.bidderconfig: ``` -ext: { - prebid: { - bidderconfig: - bidders: ["bidderA", "bidderB"], - config: [ - ortb2: { - site: { ... }, - user: { ... } - } - ] +"ext": { + "prebid": { + "bidderconfig": { + "bidders": ["bidderA", "bidderB"] + }, + "config": { + "ortb2": { + "site": { ... }, + "user": { ... } + } } } } @@ -858,20 +872,21 @@ An OpenRTB extension, whether in the the original request or the [stored-request The OpenRTB field is `ext.prebid.adservertargeting`. Here's an example: ``` - ext.prebid.adservertargeting: [{ - "key": "hb_amp_ow", // the targeting key - "source": "bidrequest", // pull the value from the path specified in the bid request object - "value": "ext.prebid.amp.data.ow" // path to value in the bidrequest - },{ - "key": "hb_static_thing", - "source": "static", // just use the 'value' provided - "value": "my-static-value" - },{ - "key": "{{BIDDER}}_custom1", // {{BIDDER}} is a macro to be resolved - "source": "bidresponse", // pull the value from the path specified in the bid response object - "value": "seatbid.bid.ext.custom1" - } - }] +"ext.prebid.adservertargeting": [ + { + "key": "hb_amp_ow", // the targeting key + "source": "bidrequest", // pull the value from the path specified in the bid request object + "value": "ext.prebid.amp.data.ow" // path to value in the bidrequest + },{ + "key": "hb_static_thing", + "source": "static", // just use the 'value' provided + "value": "my-static-value" + },{ + "key": "{% raw %}{{BIDDER}}{% endraw %}_custom1", // {% raw %}{{BIDDER}}{% endraw %} is a macro to be resolved + "source": "bidresponse", // pull the value from the path specified in the bid response object + "value": "seatbid.bid.ext.custom1" + } +] ``` `ext.prebid.adservertargeting` is an array objects. Each object has the following format: @@ -884,30 +899,30 @@ The OpenRTB field is `ext.prebid.adservertargeting`. Here's an example: In order to pull AMP parameters out into targeting, Prebid Server places AMP query string parameters in ext.prebid.amp.data. e.g. ``` - "ext": { - "prebid": { - "amp": { - "data": { - "adc": "GA1.2.662776284.1602172186", - "curl": "https://example.com/index.html", - "debug": "1", - "pvid": "", // page view ID - "ms": "", // multi-size - "ow": "", // override-width - "oh": "", // override-height - "w": "300", - "h": "50", - "gdpr_consent": "", - "purl": "https://example.com/index.html", - "slot": "/11111/amp_test", - "timeout": "1000", - "targeting": "{\"site\":{\"attr\":\"val\"}}", - "tag_id": "amp-AMP_Test-300x250", - "account": "22222" - } - } - } +"ext": { + "prebid": { + "amp": { + "data": { + "adc": "GA1.2.662776284.1602172186", + "curl": "https://example.com/index.html", + "debug": "1", + "pvid": "", // page view ID + "ms": "", // multi-size + "ow": "", // override-width + "oh": "", // override-height + "w": "300", + "h": "50", + "gdpr_consent": "", + "purl": "https://example.com/index.html", + "slot": "/11111/amp_test", + "timeout": "1000", + "targeting": "{\"site\":{\"attr\":\"val\"}}", + "tag_id": "amp-AMP_Test-300x250", + "account": "22222" + } } + } +} ``` ##### EID Permissions (PBS-Go only) @@ -917,17 +932,17 @@ in user.ext.eids is allowed to be passed to which bid adapter. For example: ``` { - ext: { - prebid: { - data: { - eidpermissions: [ // prebid server will use this to filter user.ext.eids - {"source": "sharedid.org", "bidders": ["*"]}, // * is the default - {"source": "neustar.biz", "bidders": ["bidderB"]}, - {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} - ] - } - } + "ext": { + "prebid": { + "data": { + "eidpermissions": [ // prebid server will use this to filter user.ext.eids + {"source": "sharedid.org", "bidders": ["*"]}, // * is the default + {"source": "neustar.biz", "bidders": ["bidderB"]}, + {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} + ] + } } + } } ``` @@ -942,19 +957,19 @@ The Prebid extension to the OpenRTB protocol is `ext.prebid.multibid`. For examp ``` { - ext: { - prebid: { - multibid: [{ - bidder: "bidderA", - maxbids: 2, - targetbiddercodeprefix: "bidA" - },{ - bidder: "bidderB", - maxbids: 3, - targetbiddercodeprefix: "bidB" - },{ - bidders: ["bidderC", "bidderD"] - maxbids: 2 + "ext": { + "prebid": { + "multibid": [{ + "bidder": "bidderA", + "maxbids": 2, + "targetbiddercodeprefix": "bidA" + }, { + "bidder": "bidderB", + "maxbids": 3, + "targetbiddercodeprefix": "bidB" + }, { + "bidders": ["bidderC", "bidderD"], + "maxbids": 2 }] } } @@ -980,36 +995,36 @@ Prebid Server core does the following when it sees `ext.prebid.multibid`: Here's an example response: ``` { -seatbid: [{ - seat: "bidderA", - bid: [{ - id: "bid1", - impid: "imp1", - price: 1.04, - ext: { - prebid: { - targeting: { - hb_pb_bidderA: 1.00 - }, - targetbiddercode: "bidderA" + "seatbid": [{ + "seat": "bidderA", + "bid": [{ + "id": "bid1", + "impid": "imp1", + "price": 1.04, + "ext": { + "prebid": { + "targeting": { + "hb_pb_bidderA": 1.00 + }, + "targetbiddercode": "bidderA" } - } - ... - },{ - id: "bid2", - impid: "imp1", // same imp as above - price:0.8, - ext: { - prebid: { - targeting: { - hb_pb_bidA2: 0.50 - }, - targetbiddercode: "bidA2" + } + ... + }, { + "id": "bid2", + "impid": "imp1", // same imp as above + "price": 0.8, + "ext": { + "prebid": { + "targeting": { + "hb_pb_bidA2": 0.50 + }, + "targetbiddercode": "bidA2" } - } - ... + } + ... + }] }] -}] } ``` @@ -1022,24 +1037,25 @@ which causes PBS-core to place the video-related attributes on the response. ``` { - ... - - "imp": [ - { - "id": "123456789", - "video": { ... }, - "ext": { - "prebid": { - "storedrequest": { "id": "xxx" }, - "options": { - "echovideoattrs": true - } - } - }, - ... + ... + "imp": [{ + "id": "123456789", + "video": { + ... + }, + "ext": { + "prebid": { + "storedrequest": { + "id": "xxx" + }, + "options": { + "echovideoattrs": true } - ] + } + }, ... + }] + ... } ``` 1. Prebid Server receives this request and expands the `storedrequest` value, merging it with the imp object. @@ -1047,31 +1063,26 @@ which causes PBS-core to place the video-related attributes on the response. ``` { - "seatbid": [{ - "bid": [{ - ... - "ext": { - "prebid": { - "storedrequestattributes":{ - "maxduration": 60, - "mimes": [ - "video/mp4" - ], - "minduration": 15, - "protocols": [ - 1, - 2 - ], - "skipafter": 0, - "skipmin": 0, - "startdelay": 0, - "playbackmethod": [1] - } - } - } - }] - }], -... + "seatbid": [{ + "bid": [{ + ... + "ext": { + "prebid": { + "storedrequestattributes": { + "maxduration": 60, + "mimes": ["video/mp4"], + "minduration": 15, + "protocols": [1, 2], + "skipafter": 0, + "skipmin": 0, + "startdelay": 0, + "playbackmethod": [1] + } + } + } + }] + }], + ... } ``` @@ -1133,31 +1144,31 @@ Prebid Server will generate ad server targeting variables as defined by request ``` { -seatbid: [{ - seat: "bidderA", - bid: [{ - id: "bid1", - impid: "imp1", - price: 1.04, - ext: { - prebid: { - targeting: { - hb_pb: 1.00, // values without prefixes on the winning bids only - hb_pb_bidderA: 1.00, // only if includebidderkeys is true - hb_bidder: "bidderA", - hb_size: "300x250", - hb_size_bidderA: "300x250", - hb_format: "video" // only if includeformat is specified - hb_deal: "123" // only if bid response contains a deal - } + "seatbid": [{ + "seat": "bidderA", + "bid": [{ + "id": "bid1", + "impid": "imp1", + "price": 1.04, + "ext": { + "prebid": { + "targeting": { + "hb_pb": 1.00, // values without prefixes on the winning bids only + "hb_pb_bidderA": 1.00, // only if includebidderkeys is true + "hb_bidder": "bidderA", + "hb_size": "300x250", + "hb_size_bidderA": "300x250", + "hb_format": "video", // only if includeformat is specified + "hb_deal": "123" // only if bid response contains a deal + } } - } - ... + } + ... + }] }] -}] +} ``` - ##### Debug Output `response.ext.debug.httpcalls.{bidder}` will be populated only if `test:1` or `ext.prebid.debug:true`. @@ -1170,20 +1181,16 @@ It is only returned on `test` bids for performance reasons, but may be useful du This contains the request after the resolution of stored requests and implicit information (e.g. site domain, device user agent). ``` - "ext": { - "debug": { - "httpcalls": { - "bidderA": [ - ... - ] - }, - "resolvedrequest": { - ... - }, - "responsetimemillis": { - ... - } - ... +"ext": { + "debug": { + "httpcalls": { + "bidderA": [ ... ] + }, + "resolvedrequest": { ... }, + "responsetimemillis": { ... } + ... + } +} ``` ##### Original Bid CPM (PBS-Java only) @@ -1244,9 +1251,9 @@ The PBJS version comes from ext.prebid.channel: `{name: "pbjs", version: "4.39"} The Prebid SDK version comes from: ``` -app.ext.prebid: { - source: "prebid-mobile" - version: "1.2.3" +"app.ext.prebid": { + "source": "prebid-mobile" + "version": "1.2.3" } ``` diff --git a/prebid-server/endpoints/pbs-endpoint-event.md b/prebid-server/endpoints/pbs-endpoint-event.md index 0c354142a3..28a4f38b05 100644 --- a/prebid-server/endpoints/pbs-endpoint-event.md +++ b/prebid-server/endpoints/pbs-endpoint-event.md @@ -7,7 +7,7 @@ title: Prebid Server | Endpoints | Events # Prebid Server | Endpoints | Events (Java-only) -PBS-Java supports events as described in these GitHub issues: +Prebid Server supports events as described in these GitHub issues: - [Prebid Server Event Notification proposal](https://github.com/prebid/prebid-server/issues/800) - [Prebid Server Event Updates](https://github.com/prebid/prebid-server/issues/1202) diff --git a/prebid-server/endpoints/pbs-endpoint-overview.md b/prebid-server/endpoints/pbs-endpoint-overview.md index 502dcfe7b1..e6f0e6c739 100644 --- a/prebid-server/endpoints/pbs-endpoint-overview.md +++ b/prebid-server/endpoints/pbs-endpoint-overview.md @@ -22,8 +22,8 @@ The API endpoints recognized by Prebid Server: | [GET /getuids](/prebid-server/endpoints/pbs-endpoint-getuids.html) | Parses the `uids` cookie and returns JSON. | | [GET /status](/prebid-server/endpoints/pbs-endpoint-status.html) | A health check. | | [GET /info](/prebid-server/endpoints/info/pbs-endpoint-info.html) | Returns various information about how the server is configured. | -| [GET /event](/prebid-server/endpoints/pbs-endpoint-event.html) | (PBS-Java only) Alerts Prebid Server to process an event. | -| [POST /vtrack](/prebid-server/endpoints/pbs-endpoint-event.html) | (PBS-Java only) Cache VAST XML after inserting tracking string. | +| [GET /event](/prebid-server/endpoints/pbs-endpoint-event.html) | Alerts Prebid Server to process an event. | +| [POST /vtrack](/prebid-server/endpoints/pbs-endpoint-event.html) | Cache VAST XML after inserting tracking string. | | [/currency/rates](/prebid-server/endpoints/pbs-endpoint-admin.html) | (Admin port only) Retrieves the server's current currency conversion rates. | ## Prebid Cache diff --git a/prebid-server/endpoints/pbs-endpoint-setuid.md b/prebid-server/endpoints/pbs-endpoint-setuid.md index ea379418ac..eb47472dd5 100644 --- a/prebid-server/endpoints/pbs-endpoint-setuid.md +++ b/prebid-server/endpoints/pbs-endpoint-setuid.md @@ -16,7 +16,7 @@ This endpoint saves a UserID for a Bidder in the Cookie. Saved IDs will be recog ### Query Params -- `bidder`: The FamilyName of the Usersyncer (`../../usersync/usersync.go`) which is being synced. +- `bidder`: The key of the bidder which is being synced. This may not always match the bidder name,. - `uid`: The ID which the Bidder uses to recognize this user. If undefined, the UID for `bidder` will be deleted. - `gdpr`: This should be `1` if GDPR is in effect, `0` if not, and undefined if the caller isn't sure - `gdpr_consent`: This is required if `gdpr` is one, and optional (but encouraged) otherwise. If present, it should be an [unpadded base64-URL](https://tools.ietf.org/html/rfc4648#page-7) encoded [Vendor Consent String](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/Consent%20string%20and%20vendor%20list%20formats%20v1.1%20Final.md). @@ -38,16 +38,8 @@ If in doubt, contact the company hosting Prebid Server and ask if they're GDPR-r ### Return Values -PBS-Go: - -- HTTP 200 - - Success: blank body with Set-Cookies header - - Failure: error message in body - -PBS-Java: - - HTTP 400 - The request is in GDPR scope and the consent string is missing or invalid. -- HTTP 451 - PBS does not have permission to set a cookie due to GDPR or other privacy rule. +- HTTP 451 - PBS does not have permission to set a cookie due to GDPR or another privacy rule. - HTTP 200 - Success with image response: if the f=i parameter is specified or if the named bidder prefers redirect cookie_syncs, then PBS responds with a blank 1x1 PNG, set the Content-Length to the appropriate number of bytes, and set Content-Type to image/png - Success with empty response: if the f=b parameter is specified or if the named bidder prefers iframe cookie_syncs, then PBS responds with empty HTML, Content-Length 0 and Content-Type to text/html diff --git a/prebid-server/features/pbs-currency.md b/prebid-server/features/pbs-currency.md index 3fe503fe98..67cc607f0b 100644 --- a/prebid-server/features/pbs-currency.md +++ b/prebid-server/features/pbs-currency.md @@ -84,13 +84,13 @@ Rates can be passed in on the request: ``` "ext": { - "prebid": { - "currency": { - "rates": { - "USD": { "UAH": 24.47, "ETB": 32.04, "EUR": 0.92, ... } - }, - "usepbsrates": false // defaults to true - } + "prebid": { + "currency": { + "rates": { + "USD": { "UAH": 24.47, "ETB": 32.04, "EUR": 0.92, ... } + }, + "usepbsrates": false // defaults to true + } } } ``` diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md index dec47eb023..7c36297221 100644 --- a/prebid-server/features/pbs-feature-idx.md +++ b/prebid-server/features/pbs-feature-idx.md @@ -11,8 +11,8 @@ title: Prebid Server | Features | Feature Set | Feature | Description | PBS-Go | PBS-Java | |-------------+---------+-------------+--------+----------| | [Currency](/prebid-server/features/pbs-currency.html) | Core | Loads currency conversions from an outside source, allows non-supported currencies to come in on the OpenRTB2 request, converts bid currencies to the request's prefered currency. | | | -| [Currency](/prebid-server/features/pbs-currency.html) | Request-Defined Rates | Allows the request to define its own currency rates. | | | -| Currency | pbsConvertCurrency method | Allows adapters to convert bid floors to a different currency if needed. | | | +| [Currency](/prebid-server/features/pbs-currency.html) | Request-Defined Rates | Allows the request to define its own currency rates. | | | +| Currency | Convert Currency Method | Allows adapters to convert bid floors to a different currency if needed. | | | | [Deals](/prebid-server/features/pbs-deals.html) | Core | Basic deal support, creating hb_deal targeting when appropriate. | | | | Deals | Deal prioritization | Supports the 'preferdeals' [targeting flag](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting) to give deals the priority when PBS returns ad server targeting. | | | | [AMP](/prebid-server/use-cases/pbs-amp.html) | Core | Reads and responds to the /openrtb2/amp endpoint | | | @@ -49,25 +49,25 @@ title: Prebid Server | Features | [Supply Chain](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#supply-chain-support) | Bidder-specific schains | Accepts bidder-specific schain | | | | Supply Chain | Host SChain | The host company can supply a global schain that's appended to the list of incoming nodes in source.ext.schain. | | | | Publisher Accounts | Core | Ability to enforce that requests coming in have a valid account ID. | | | -| Publisher Accounts | AMP account parameter | Accept the account parameter on the AMP request. | | | +| Publisher Accounts | AMP account parameter | Accept the account parameter on the AMP request. | | | | Publisher Accounts | Account-specific TTLs | Allow each account ID to have a custom PBC time-to-live for banner and video. | | | | [Video](/formats/video.html) | Core | Support for basic instream and outstream video: passes video parameters to adapters, stores VAST responses when instructed. | | | | Video | Outstream renderers | Support for bidders specifying their own renderers for outstream video. | | | | Video | Long-form video | Support for the [long-form video endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-video.html). | | | | Video | IAB advertiser category mapping | Able to map IAB advertiser categories to a supplied mapping table. | | | -| Video | [Echo video attributes](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#echo-storedrequest-video-attributes-pbs-java-only) | To support mobile video, copies stored request video attributes to the response. | | | +| Video | [Echo video attributes](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#echo-storedrequest-video-attributes-pbs-java-only) | To support mobile video, copies stored request video attributes to the response. | | | | [Interstitials](/prebid-server/features/pbs-interstitials.html) | Core | Support device.ext.prebid.interstitial.minwidthperc and device.ext.prebid.interstitial.minheightperc parameters, [dynamically updating the impression format object](https://github.com/prebid/prebid-server/issues/755) from a configurable list of sizes filtered by these parameters. | | | | [Aliases](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-aliases) | Core | Maps a biddercode on an incoming request to a specific server-side bid adapter named in the request or defined in config. | | | | Aliases | [GVL ID support](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-alias-gvl-ids-pbs-java-only) | Define the IAB GVL ID for an aliased biddercode. | | | | [User ID Sync](/prebid-server/developers/pbs-cookie-sync.html) | Core | Implements the /cookie_sync and /setuid endpoints. Bidders may choose either redirect or iframe method. | | | -| User ID Sync | Multi-Method | Bidders can supply both pixel redirects as well as iframe syncs. | | | -| User ID Sync | Cooperative sync | Does a pixel sync with more than just the bidders on the page. | | | +| User ID Sync | Multi-Method | Bidders can supply both pixel redirects as well as iframe syncs. | | | +| User ID Sync | Cooperative sync | Does a pixel sync with more than just the bidders on the page. | | | | User ID Permissions | Extended ID Permissions | Allows publishers to determine which bidders are allowed to receive which extended ID. | | | | User ID Sync | Account override | Allows accounts to override the cooperative sync feature and bidder limits. | | | | User ID | [EID Permissions](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#eid-permissions) | The Publisher can define which bidders receive which extended user IDs. | | | -| [Events](https://docs.google.com/document/d/1ry0X4C2EV-R0pMrm1IQk9BstxaT395UCl3KKqTGa5c8/edit#heading=h.7w5yevygp2gz) | Events | Ability to process the /event endpoint, place /event URLs in the OpenRTB response, and place /event URLs in VAST XML. | | | -| Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | -| Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | +| [Events](https://docs.google.com/document/d/1ry0X4C2EV-R0pMrm1IQk9BstxaT395UCl3KKqTGa5c8/edit#heading=h.7w5yevygp2gz) | Events | Ability to process the /event endpoint, place /event URLs in the OpenRTB response, and place /event URLs in VAST XML. | | | +| Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | +| Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | | Auction | [MultiBid](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#multibid-pbs-java-only) | Allow named bidders to supply more than one response. | | | | Analytics | Analytics module support | Allows developers to plug in a [custom analytics adapter](/developers/pbs-build-an-analytics-adapter.html). | | | | Bid Response Validation | Validate secure markup | PBS can configurably reject bid responses that don't supply a secure creative when in a secure context. | | | diff --git a/prebid-server/features/pbs-privacy.md b/prebid-server/features/pbs-privacy.md index bceda67ffe..bc83cc5a6c 100644 --- a/prebid-server/features/pbs-privacy.md +++ b/prebid-server/features/pbs-privacy.md @@ -58,7 +58,7 @@ There are a number of GDPR configuration settings that PBS Host Companies must consider: - **GDPR enabled** - Allows the host company to turn off GDPR support. Default setting is enabled=true. -- **Default GDPR applies** - How Prebid Server should respond if the incoming request doesn't have the `gdpr` flag. (Note: this config is currently called `usersync_if_ambiguous` in PBS-Go and gdpr.default-value in PBS-Java.) +- **Default GDPR applies** - How Prebid Server should respond if the incoming request doesn't have the `gdpr` flag. (Note: this config is currently called `gdpr.default_value` in PBS-Go and `gdpr.default-value` in PBS-Java.) - **Host company GVL ID** - Currently PBS requires the host company to have a GVL-ID or the setting of the `uids` cookie in GDPR scope will fail. - **GDPR enforcement flags** - for each Purpose - **Host Cookie TTL** - The default expiration time of the `uids` cookie set in the host company domain should be defined to match what's in the TCF 2.1 `maxCookieAgeSeconds` GVL field. (This is the host-cookie.ttl-days setting in both Go and Java.) diff --git a/prebid-server/hosting/pbs-database.md b/prebid-server/hosting/pbs-database.md index 4dfde3d158..08efe50163 100644 --- a/prebid-server/hosting/pbs-database.md +++ b/prebid-server/hosting/pbs-database.md @@ -99,7 +99,7 @@ create a view as desired. We'll fix this someday. Account data is queried on every request to pull in important data. There is an LRU cache in the server so the database isn't actually hit on every request. -In PBS-Java, many account-configuration options come from the database, while in PBS-Go, those options are available in YAML configuration. +In PBS-Java, many account-configuration options come from the database. In PBS-Go, those options are available in either a YAML configuration or from an HTTP API. In both versions the server can optionally validate the account against this database and reject accounts from unknown sources. @@ -108,7 +108,7 @@ The algorithm the server uses for determining the account ID of the incoming req 1. look in site.publisher.id 2. look in app.publisher.id -3. if AMP, look for the 'account' parameter on the query string (PBS-Java only) +3. if AMP, look for the 'account' parameter on the query string Here are the fields the server can recognize in the database response: diff --git a/prebid-server/hosting/pbs-hosting.md b/prebid-server/hosting/pbs-hosting.md index 96402bd87c..144fd0f196 100644 --- a/prebid-server/hosting/pbs-hosting.md +++ b/prebid-server/hosting/pbs-hosting.md @@ -68,7 +68,7 @@ populating data from their internal systems. You'll want to hook both Prebid Server and Prebid Cache up to an operational monitoring system. -- PBS-Go currently supports Influx and Promotheus +- PBS-Go currently supports Influx and Prometheus - PBS-Java currently supports Influx and Graphite ## Installing the Software diff --git a/prebid-server/versions/pbs-versions-go.md b/prebid-server/versions/pbs-versions-go.md index 9f6a45ea99..d2de934923 100644 --- a/prebid-server/versions/pbs-versions-go.md +++ b/prebid-server/versions/pbs-versions-go.md @@ -28,7 +28,7 @@ The Go version of Prebid Server is for those who: ## Features -PBS-Go has all the core PBS features, but does have a backlog of newer [features](/prebid-server/features/pbs-feature-idx.html), so you'll want to look over the list to be familiar with the differences. +We recommend you review the [feature comparison list](/prebid-server/features/pbs-feature-idx.html) to familiarize yourself with the differences between this and PBS-Java in deciding which version is right for you. ## Code Repositories diff --git a/prebid-server/versions/pbs-versions-java.md b/prebid-server/versions/pbs-versions-java.md index d024930727..7f68600244 100644 --- a/prebid-server/versions/pbs-versions-java.md +++ b/prebid-server/versions/pbs-versions-java.md @@ -27,7 +27,7 @@ The Java version of Prebid Server is for those who: ## Features -PBS-Java look over the [feature list](/prebid-server/features/pbs-feature-idx.html) to be familiar with the differences. +We recommend you review the [feature comparison list](/prebid-server/features/pbs-feature-idx.html) to familiarize yourself with the differences between this and PBS-Go in deciding which version is right for you. ## Code Repositories From b9a8e72f5f2a32cc3d7d4c3644ef00a5ad2d3090 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Tue, 28 Sep 2021 17:16:53 -0400 Subject: [PATCH 470/536] Update firstPartyData.md with app.content.data example (#3299) * Update firstPartyData.md * Update firstPartyData.md * fixing indentation Co-authored-by: bretg --- features/firstPartyData.md | 50 +++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/features/firstPartyData.md b/features/firstPartyData.md index cceb41322d..1d8f94ca29 100644 --- a/features/firstPartyData.md +++ b/features/firstPartyData.md @@ -63,7 +63,7 @@ pbjs.setConfig({ userrating: "4", data: [{ name: "www.dataprovider1.com", - ext: { "segtax": 1 }, + ext: { segtax: 4 }, segment: [ { id: "687" }, { id: "123" } @@ -177,6 +177,54 @@ pbjs.setBidderConfig({ // different bidders can receive different data }); {% endhighlight %} +### Supplying App Content Data + +Occasionally, an app which embeds a webview might run Prebid.js. In this case, the app object is often specified for OpenRTB, and the site object would be invalid. When this happens, one should specify app.content.data in place of site.content.data. + +{% highlight js %} +pbjs.setConfig({ + ortb2: { + app: { + name: "myappname", + keywords: "power tools, drills", + content: { + data: [ + { + name: "www.dataprovider1.com", + ext: { + segtax: 6 + }, + segment: [ + { + id: "687" + }, + { + id: "123" + } + ] + }, + { + name: "www.dataprovider1.com", + ext: { + segtax: 7 + }, + segment: [ + { + id: "456" + }, + { + id: "789" + } + ] + } + ] + } + } + } +) + +{% endhighlight %} + ## Segments and Taxonomy The [IAB](https://iab.com) offers standard content and audience taxonomies for categorizing sites and users. Prebid supports defining these values as first party data in `site.content.data` or `user.data` as shown in the examples above. From 58bc4fc2fdbbde45501433a26cda383115d0f5c7 Mon Sep 17 00:00:00 2001 From: Alex Maltsev Date: Wed, 29 Sep 2021 21:50:39 +0300 Subject: [PATCH 471/536] Update docs to match with pbj (#3280) * Fixed typo * Updated docs to match with current PBJ state. * Added default configuration section * Removed redundant space between parentheses * tweaked default configs * Updated default config documentation to match with pbj * Update add-new-bidder-java.md * Reverted invalid changes * Synced with pbj * Added information about unmodifiable defaults, cleaned up bidder alias example. * Removed obsolete field pbs-enforces-gdpr Co-authored-by: bretg Co-authored-by: MartianTribe --- .../developers/add-new-bidder-java.md | 32 ++++--------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/prebid-server/developers/add-new-bidder-java.md b/prebid-server/developers/add-new-bidder-java.md index a40bebcad0..99c3d2a78f 100644 --- a/prebid-server/developers/add-new-bidder-java.md +++ b/prebid-server/developers/add-new-bidder-java.md @@ -104,7 +104,6 @@ adapters: Modify this template for your bid adapter: - Change the maintainer email address to a group distribution list on your ad server's domain. A distribution list is preferred over an individual mailbox to allow for robustness, as roles and team members naturally change. - Change the `modifying-vast-xml-allowed` value to `false` if you'd like to opt out of video impression tracking. It defaults to `true`. -- Change the `pbs-enforces-gdpr` to `false` if you'd like to disable gdpr enforcement. Defaults to `true`. - Change the `pbs-enforces-ccpa` to `false` if you'd like to disable ccpa enforcement. Defaults to `true`. - Change the `vendor-id` value to id of your bidding server as registered with the [GDPR Global Vendor List (GVL)](https://iabeurope.eu/vendor-list-tcf-v2-0/). Leave this as `0` if you are not registered with IAB Europe. - Remove the `capabilities` (app/site) and `mediaTypes` (banner/video/audio/native) combinations which your adapter does not support. @@ -129,13 +128,15 @@ Default configuration: ```yaml adapter-defaults: enabled: false - pbs-enforces-gdpr: true pbs-enforces-ccpa: true - deprecated-names: - aliases: {} modifying-vast-xml-allowed: true ``` +There are also some default properties which can't be overridden in adapter-defaults, but rather in particular adapter's config: +- `aliases`: Defaults to empty +- `deprecated-names`: Defaults to empty +- `extra-info`: Defaults to empty + ### Create bidder alias If you want to add bidder that is an alias of existing bidder, you need just to update configuration of parent bidder: @@ -143,7 +144,7 @@ Example of adding bidder alias: ```yaml adapters: yourBidderCode: - endpoint: http://possible.endpoint + ... aliases: yourBidderAlias: endpoint: http://possible.alias/endpoint @@ -155,26 +156,6 @@ adapters: - video usersync: cookie-family-name: yourBidderCode - meta-info: - maintainer-email: maintainer@email.com - app-media-types: - - banner - - video - - audio - - native - site-media-types: - - banner - - video - - audio - - native - supported-vendors: - vendor-id: your_vendor_id - usersync: - url: your_bid_adapter_usersync_url - redirect-url: /setuid?bidder=yourBidderCode&gdpr={%raw%}{{gdpr}}{%endraw%}&gdpr_consent={%raw%}{{gdpr_consent}}{%endraw%}&us_privacy={%raw%}{{us_privacy}}{%endraw%} - cookie-family-name: yourBidderCode - type: redirect - support-cors: false ``` Aliases are configured by adding child configuration object at `adapters.yourBidderCode.aliases.yourBidderAlias` @@ -814,7 +795,6 @@ Go to `test-application.properties` file and add folowing properties ```yaml adapters.{bidder}.enabled=true adapters.{bidder}.endpoint=http://localhost:8090/{bidder}-exchange -adapters.{bidder}.pbs-enforces-gdpr=true adapters.{bidder}.usersync.url=//{bidder}-usersync ``` From 40cceda31560395ea66835b04557599d013adcc8 Mon Sep 17 00:00:00 2001 From: Gena Date: Wed, 29 Sep 2021 21:53:46 +0300 Subject: [PATCH 472/536] Viewdeos page pbs separation (#3282) * add Bidsxchange page * Add openweb doc * change params * add ViewDeos pbs page --- dev-docs/bidders/viewdeos.md | 39 ++++++++++++++++++++++++++++++++++ dev-docs/bidders/viewdeosDX.md | 8 +++---- 2 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 dev-docs/bidders/viewdeos.md diff --git a/dev-docs/bidders/viewdeos.md b/dev-docs/bidders/viewdeos.md new file mode 100644 index 0000000000..aacb4a2a6d --- /dev/null +++ b/dev-docs/bidders/viewdeos.md @@ -0,0 +1,39 @@ +--- +layout: bidder +title: Viewdeos Server +description: Prebid Server ViewDeos Adapter +pbjs: false +pbs: true +biddercode: viewdeos +media_types: banner,video +gdpr_supported: true +gvl_id: 924 +--- + +### Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|---------------------------------|----------|-----------| +| `aid` | required | The source ID from member zone | `350975` | `integer` | + +### Test Parameters +``` + var adUnits = [ + // Banner adUnit + { + code: 'div-test-div', + mediaTypes: { + banner: { + sizes:[[300, 250]] + } + }, + bids: [{ + bidder: 'viewdeos', + params: { + aid: 672854 + } + }] + } + ]; +``` diff --git a/dev-docs/bidders/viewdeosDX.md b/dev-docs/bidders/viewdeosDX.md index 2756611309..3c8ee83b72 100644 --- a/dev-docs/bidders/viewdeosDX.md +++ b/dev-docs/bidders/viewdeosDX.md @@ -1,16 +1,16 @@ --- layout: bidder -title: Viewdeos -description: Prebid ViewDeos Bidder Adaptor +title: ViewdeosDX Client +description: Prebid.js ViewDeos Bidder Adapter pbjs: true -pbs: true +pbs: false biddercode: viewdeosDX media_types: banner,video gdpr_supported: true gvl_id: 924 --- -Note that for Prebid Server, viewdeosDX is an alias of the Adtelligent server-side bid adapter. It has its own Prebid.js adapter. +Note that for Prebid Server, use "viewdeos" bidder code. ### Bid params From d613041dfec1d2b4abe5129759a3b0d381707463 Mon Sep 17 00:00:00 2001 From: oath-jac <45564796+oath-jac@users.noreply.github.com> Date: Wed, 29 Sep 2021 21:55:10 +0300 Subject: [PATCH 473/536] Rebranding yssp adapter to yahoossp. (#3283) Co-authored-by: oath-jac --- dev-docs/bidders/yahoossp.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 dev-docs/bidders/yahoossp.md diff --git a/dev-docs/bidders/yahoossp.md b/dev-docs/bidders/yahoossp.md new file mode 100644 index 0000000000..3b3fd3805e --- /dev/null +++ b/dev-docs/bidders/yahoossp.md @@ -0,0 +1,18 @@ +--- +layout: bidder +title: YahooSSP +pbs: true +media_types: banner +biddercode: yahoossp +prebid_member: true +gdpr_supported: true +gvl_id: 25 +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------|----------|------------------------|---------|----------| +| dcn | required | Site ID provided by One Mobile | 'site1' | string | +| pos | required | Placement ID | 'placement1' | string | From 318b3c39a01da41223b72554670beac2bbf53153 Mon Sep 17 00:00:00 2001 From: Ignat Khaylov Date: Wed, 29 Sep 2021 21:55:59 +0300 Subject: [PATCH 474/536] update between doc (#3284) Co-authored-by: khaylov --- dev-docs/bidders/between.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dev-docs/bidders/between.md b/dev-docs/bidders/between.md index 748f0d23fc..b37304b1b5 100644 --- a/dev-docs/bidders/between.md +++ b/dev-docs/bidders/between.md @@ -11,6 +11,7 @@ pbs_app_supported: true userIds: all gvl_id: 724 usp_supported: true +safeframes_ok: false --- ### Prebid.js Bid Params @@ -19,8 +20,6 @@ usp_supported: true | Name | Scope | Description | Example | Type | |---------------|----------|-------------|---------|----------| | `s` | required | Section ID from Between SSP control panel | 999999 | `integer` | -| `w` | required | width of placement(Number) | 240 | -| `h` | required | height of placement(Number) | 400 | ### Prebid-Server Bid Params From 7707e5413aa5d9a7ebced1b88174ccb2a531f481 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Wed, 29 Sep 2021 11:58:24 -0700 Subject: [PATCH 475/536] Download: fix akamai typo on download page (#3292) --- download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/download.md b/download.md index 6d4c3be385..36b1908272 100644 --- a/download.md +++ b/download.md @@ -252,7 +252,7 @@ These modules may require accounts with a service provider.
- +
From f1aecb619ca4c9ef4d2d620c36a8a6635a8cd0bb Mon Sep 17 00:00:00 2001 From: jsut Date: Wed, 29 Sep 2021 15:55:39 -0400 Subject: [PATCH 476/536] fix links on modules/index.html (#3296) --- dev-docs/modules/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index 35f1311756..a7f5965270 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -33,7 +33,7 @@ Prebid.org highly recommends that publishers utilize the following modules: {% for page in module_pages %}{% if page.recommended == true %} - {{page.display_name}} + {{page.display_name}} {{page.description}} {% endif %}{% endfor %} From a48b9d11c2b5a4e51c51121876306484b6f48a59 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Wed, 29 Sep 2021 14:47:17 -0700 Subject: [PATCH 477/536] Just Premium Bid Adapter: update schain support (#3301) per pr https://github.com/prebid/Prebid.js/pull/7506 --- dev-docs/bidders/justpremium.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/justpremium.md b/dev-docs/bidders/justpremium.md index 20732ff502..f5eebddc3c 100644 --- a/dev-docs/bidders/justpremium.md +++ b/dev-docs/bidders/justpremium.md @@ -6,6 +6,7 @@ pbjs: true biddercode: justpremium gdpr_supported: true usp_supported: true +schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId --- From b892f421120a2bdc1fff969db2a2a4ef4a928ac7 Mon Sep 17 00:00:00 2001 From: Nick Jacob Date: Wed, 29 Sep 2021 17:48:34 -0400 Subject: [PATCH 478/536] change tagId to be required, and add note about test tagId value (#3303) --- dev-docs/bidders/amx.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/amx.md b/dev-docs/bidders/amx.md index bddf72a938..44b91b61e0 100644 --- a/dev-docs/bidders/amx.md +++ b/dev-docs/bidders/amx.md @@ -22,8 +22,8 @@ gvl_id: 737 {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |-------------|----------|-----------------------------------------------------------------|---------------------------------|----------| +| `tagId` | required | Tag ID | `'cHJlYmlkLm9yZw'` | `string` | | `testMode` | optional | Activate 100% fill ads | `true` | `boolean`| -| `tagId` | optional | Tag ID | `'cHJlYmlkLm9yZw'` | `string` | | `adUnitId` | optional | Ad Unit ID used in reporting. Will default to `bid.adUnitCode` | `'sticky_banner'` | `string` | ### Test Parameters @@ -37,4 +37,6 @@ To enable 100% fill test ads, you can use the following `params`: } ``` -Note that the `tagId` is case-sensitive. This will produce a bid at $10 with a test creative. +This will produce a bid at $10 with a test creative. + +Note that the `tagId` is case-sensitive. Do not use `cHJlYmlkLm9yZw` in production environments: this ID is for testing only. From d096299b911603627abd3583cf2acf30cdca6dbd Mon Sep 17 00:00:00 2001 From: ym-abaranov <78230460+ym-abaranov@users.noreply.github.com> Date: Wed, 29 Sep 2021 15:01:15 -0700 Subject: [PATCH 479/536] yieldmo: multiple changes (#3246) * multiple changes * schain support for video ads * device.ip support * gpid support * device.ip support cleaned up --- dev-docs/bidders/yieldmo.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/dev-docs/bidders/yieldmo.md b/dev-docs/bidders/yieldmo.md index 18a5a691bb..86998b1c85 100644 --- a/dev-docs/bidders/yieldmo.md +++ b/dev-docs/bidders/yieldmo.md @@ -4,7 +4,7 @@ title: Yieldmo description: Prebid Yieldmo Bidder Adaptor biddercode: yieldmo media_types: banner, video -userIds: pubCommonId, unifiedId, criteo +userIds: pubCommonId, unifiedId, criteo, sharedId gdpr_supported: true usp_supported: true schain_supported: true @@ -14,7 +14,7 @@ pbs: true --- # Registration -## In order to use Yieldmo adapter please reach out to your Yieldmo account's person or support@yieldmo.com for more information. +### Note: In order to use Yieldmo adapter please reach out to your Yieldmo account's person or support@yieldmo.com for more information.
### Bid Params @@ -52,7 +52,6 @@ In addition, Yieldmo adapter relies on parameters specified in the `mediaTypes.v |-------------------|----------|--------------------------------------------------------|-----------------|------------------| | `playerSize` | required | Width and height of the player | `[640, 480]` | `Array` | | `context` | required | `instream` or `outstream ` are only supported | `instream` | `string` | - ### Example of in-stream Video Ad-unit ```javascript var videoAdUnits = [{ @@ -77,7 +76,7 @@ var videoAdUnits = [{ bids: [{ bidder: 'yieldmo', params: { - placementId: '1524592390382976659' // required + placementId: '1524592390382976659',// required, } }] }]; @@ -88,23 +87,23 @@ var videoAdUnit = [{ code: 'div-video-ad-1234567890', mediaTypes: { video: { - playerSize: [640, 480], // required + playerSize: [640, 480], // required context: 'outstream', - mimes: ['video/mp4'], // required, array of strings - placement: 3, // required, integer ( 3,4,5 ) - maxduration: 30, // required, integer - protocols: [2, 3], // required, array of integers - api: [2, 3], // required, array of integers - playbackmethod: [1,2] // required, array of integers + mimes: ['video/mp4'], // required, array of strings + placement: 3, // required, integer ( 3,4,5 ) + maxduration: 30, // required, integer + protocols: [2, 3], // required, array of integers + api: [2, 3], // required, array of integers + playbackmethod: [1,2] // required, array of integers } }, bids: [{ bidder: 'yieldmo', params: { - placementId: '1524592390382976659' // required + placementId: '1524592390382976659', // required } }] }]; ``` -> Prebid out-stream demo - https://prebid-outstream-qa.yieldmo.com/prebid-outstream.html +> [Prebid out-stream demo](https://prebid-outstream-qa.yieldmo.com/prebid-outstream.html) From bc15dc781b83e564a070d58480042081b7253dea Mon Sep 17 00:00:00 2001 From: Luigi Sayson <48766825+luigi-sayson@users.noreply.github.com> Date: Thu, 30 Sep 2021 06:21:23 -0700 Subject: [PATCH 480/536] Add doc for timeout rtd module (#3266) * Add doc for timeout rtd module * Remove 'sets' --- dev-docs/modules/timeoutRtdProvider.md | 152 +++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 dev-docs/modules/timeoutRtdProvider.md diff --git a/dev-docs/modules/timeoutRtdProvider.md b/dev-docs/modules/timeoutRtdProvider.md new file mode 100644 index 0000000000..f0db6239be --- /dev/null +++ b/dev-docs/modules/timeoutRtdProvider.md @@ -0,0 +1,152 @@ +--- +layout: page_v2 +title: Timeout Rtd Module +description: Module for managing timeouts in real time +page_type: module +module_type: rtd +module_code : example +enable_download : true +sidebarType : 1 +--- + +## Overview +The timeout RTD module enables publishers to set rules that determine the timeout based on +certain features. It supports rules dynamically retrieved from a timeout provider as well as rules +set directly via configuration. +Build the timeout RTD module into the Prebid.js package with: +``` +gulp build --modules=timeoutRtdProvider,rtdModule... +``` + +## Configuration +The module is configured in the realTimeData.dataProviders object. The module will override +`bidderTimeout` in the pbjs config. + +### Timeout Data Provider interface +The timeout RTD module provides an interface of dynamically fetching timeout rules from +a data provider just before the auction begins. The endpoint url is set in the config just as in +the example below, and the timeout data will be used when making bid requests. + +``` +pbjs.setConfig({ + ... + "realTimeData": { + "dataProviders": [{ + "name": 'timeout', + "params": { + "endpoint": { + "url": "http://{cdn-link}.json" + } + } + } + ]}, + + // This value below will be modified by the timeout RTD module if it successfully + // fetches the timeout data. + "bidderTimeout": 1500, + ... +}); +``` + +Sample Endpoint Response: +``` +{ + "rules": { + "includesVideo": { + "true": 200, + "false": 50 + }, + "numAdUnits" : { + "1-5": 100, + "6-10": 200, + "11-15": 300 + }, + "deviceType": { + "2": 50, + "4": 100, + "5": 200 + }, + "connectionSpeed": { + "slow": 200, + "medium": 100, + "fast": 50, + "unknown": 10 + }, +} +``` + +### Rule Handling: +The rules retrieved from the endpoint will be used to add time to the `bidderTimeout` based on certain features such as +the user's deviceType, connection speed, etc. These rules can also be configured statically on page via a `rules` object. +Note that the timeout Module will ignore the static rules if an endpoint url is provided. The timeout rules follow the +format: +``` +{ + '': { + '': + } +} +``` +See bottom of page for examples. + +Currently supported features: + +|Name |Description | Keys | Example +| :------------ | :------------ | :------------ |:------------ | +| includesVideo | Adds time to the timeout based on whether there is a video ad unit in the auction or not | 'true'/'false'| { "true": 200, "false": 50 } | +| numAdUnits | Adds time based on the number of ad units. Ranges in the format `'lowerbound-upperbound` are accepted. This range is inclusive | numbers or number ranges | {"1": 50, "2-5": 100, "6-10": 200} | +| deviceType | Adds time based on device type| 2, 4, or 5| {"2": 50, "4": 100} | +| connectionSpeed | Adds time based on connection speed. `connectionSpeed` defaults to 'unknown' if connection speed cannot be determined | slow, medium, fast, or unknown | { "slow": 200} | + +If there are multiple rules set, all of them would be used and any that apply will be added to the base timeout. For example, if the rules object contains: +``` +{ + "includesVideo": { + "true": 200, + "false": 50 + }, + "numAdUnits" : { + "1-3": 100, + "4-5": 200 + } +} +``` +and there are 3 ad units in the auction, all of which are banner, then the timeout to be added will be 150 milliseconds (50 for `includesVideo[false]` + 100 for `numAdUnits['1-3']`). + +Full example: +``` +pbjs.setConfig({ + ... + "realTimeData": { + "dataProviders": [{ + "name": 'timeout', + "params": { + "rules": { + "includesVideo": { + "true": 200, + "false": 50 + }, + "numAdUnits" : { + "1-5": 100, + "6-10": 200, + "11-15": 300 + }, + "deviceType": { + "2": 50, + "4": 100, + "5": 200 + }, + "connectionSpeed": { + "slow": 200, + "medium": 100, + "fast": 50, + "unknown": 10 + } + } + } + ]} + } + ... + // The timeout RTD module will add time to `bidderTimeout` based on the rules set above. + "bidderTimeout": 1500, +``` From 04187d368a27f344b63a9c5fb9091ad0a00a911b Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 1 Oct 2021 20:33:49 -0400 Subject: [PATCH 481/536] fixing 404 for other module types (#3313) --- dev-docs/modules/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index a7f5965270..11ac8c2ecf 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -59,7 +59,7 @@ than others. See [the realTimeData setConfig](/dev-docs/publisher-api-reference/ {% for page in module_pages %}{% if page.recommended == true or page.vendor_specific == true %}{% continue %}{% endif %} - {{page.display_name}} + {{page.display_name}} {{page.description}} {% if page.module_type == "rtd" %}yes{% else %}no{% endif %} @@ -80,7 +80,7 @@ These modules may require accounts with a service provider. {% for page in module_pages %}{% if page.recommended == true %}{% continue %}{% endif %}{% if page.vendor_specific == true %} - {{page.display_name}} + {{page.display_name}} {{page.description}} {% if page.module_type == "rtd" %}yes{% else %}no{% endif %} From 57034253a74e985c3151ca9cf6120d3e2e3505b4 Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 1 Oct 2021 21:28:30 -0400 Subject: [PATCH 482/536] another batch of dead links (#3314) --- debugging/debugging.md | 2 +- dev-docs/adunit-reference.md | 2 +- dev-docs/bidders.md | 16 ++++++++-------- dev-docs/modules/gpt-pre-auction.md | 2 +- download.md | 6 +++--- prebid-server/features/pbs-default-request.md | 2 +- prebid-server/features/pbs-feature-idx.md | 2 +- prebid-video/video-getting-started.md | 2 +- troubleshooting/troubleshooting-guide.md | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/debugging/debugging.md b/debugging/debugging.md index 5c88a7050b..906dba744c 100644 --- a/debugging/debugging.md +++ b/debugging/debugging.md @@ -20,4 +20,4 @@ benefit from implementation improvements. Further Reading -+ [Prebid.js Troubleshooting Guide]({{site.github.url}}/dev-docs/prebid-troubleshooting-guide.html) ++ [Prebid.js Troubleshooting Guide](/dev-docs/prebid-troubleshooting-guide.html) diff --git a/dev-docs/adunit-reference.md b/dev-docs/adunit-reference.md index f8be5d59ad..ad7436892b 100644 --- a/dev-docs/adunit-reference.md +++ b/dev-docs/adunit-reference.md @@ -594,7 +594,7 @@ For more information on Interstitial ads, reference the [Interstitial feature pa ## Related Topics -+ [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference/) ++ [Publisher API Reference]({{site.baseurl}}/dev-docs/publisher-api-reference) + [Conditional Ad Units][conditionalAds] + [Show Native Ads]({{site.baseurl}}/dev-docs/show-native-ads.html) + [Show Video Ads]({{site.baseurl}}/dev-docs/show-video-with-a-dfp-video-tag.html) diff --git a/dev-docs/bidders.md b/dev-docs/bidders.md index 98cb8f9906..523c77f224 100644 --- a/dev-docs/bidders.md +++ b/dev-docs/bidders.md @@ -41,7 +41,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "0" or firstletter == "1" or firstletter == "2" or firstletter == "3" or firstletter == "4" or firstletter == "5" or firstletter == "6" or firstletter == "7" or firstletter == "8" or firstletter == "9" or firstletter == "a" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -52,7 +52,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "b" or firstletter == "c" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -63,7 +63,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "d" or firstletter == "e" or firstletter == "f" or firstletter == "g" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -74,7 +74,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "h" or firstletter == "i" or firstletter == "j" or firstletter == "k" or firstletter == "l" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -85,7 +85,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "m" or firstletter == "n" or firstletter == "o" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -96,7 +96,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "p" or firstletter == "q" or firstletter == "r" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -107,7 +107,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "s" or firstletter == "t" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -118,7 +118,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "u" or firstletter == "v" or firstletter == "w" or firstletter == "x" or firstletter == "y" or firstletter == "z" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} diff --git a/dev-docs/modules/gpt-pre-auction.md b/dev-docs/modules/gpt-pre-auction.md index 1f53ca3ff6..504b648e59 100644 --- a/dev-docs/modules/gpt-pre-auction.md +++ b/dev-docs/modules/gpt-pre-auction.md @@ -43,7 +43,7 @@ Optional initialization parameters: {: .table .table-bordered .table-striped } | Param | Required? | Type | Description | Example | | enabled | no | boolean | allows turning off of module. Default value is true | true | -| customGptSlotMatching | no | function | GPT slot matching function should match the customSlotMatching function sent to [setTargetingForGptAsync](/publisher-api-reference/setTargetingForGPTAsync.html) | | +| customGptSlotMatching | no | function | GPT slot matching function should match the customSlotMatching function sent to [setTargetingForGptAsync](/dev-docs/publisher-api-reference/setTargetingForGPTAsync.html) | | | customPbAdSlot | no | function | Custom PB AdSlot function | | | mcmEnabled | no | boolean | Removes extra network IDs when Multiple Customer Management is active. Default is false. | true | diff --git a/download.md b/download.md index 36b1908272..bf78bbb148 100644 --- a/download.md +++ b/download.md @@ -227,19 +227,19 @@ Prebid.js is open source software that is offered for free as a convenience. Whi

    Recommended Modules

    Prebid.org highly recommends that publishers utilize the following modules:
    -{% for page in module_pages %}{% if page.recommended == true %}
    {% endif %}{% endfor %} +{% for page in module_pages %}{% if page.recommended == true %}
    {% endif %}{% endfor %}

    General Modules

    {% for page in module_pages %}{% if page.enable_download == false or page.recommended == true or page.vendor_specific == true %}{% continue %}{% endif %}{% endfor %}

    Vendor-Specific Modules

    These modules may require accounts with a service provider.
    - {% for page in module_pages %}{% if page.enable_download == false or page.recommended == true %}{% continue %}{% endif %}{% if page.vendor_specific == true %}
    + {% for page in module_pages %}{% if page.enable_download == false or page.recommended == true %}{% continue %}{% endif %}{% if page.vendor_specific == true %}{% endif %}{% endfor %}
    diff --git a/prebid-server/features/pbs-default-request.md b/prebid-server/features/pbs-default-request.md index 3badc95482..d11b01a092 100644 --- a/prebid-server/features/pbs-default-request.md +++ b/prebid-server/features/pbs-default-request.md @@ -21,7 +21,7 @@ default_request: alias_info: false ``` -The `file.name` option is the path/filename of a JSON file containing default request JSON. See the [stored request doc](/prebid-server/features/pbs-storedreqs.html) and the [openrtb2/auction endpoint doc](/prebid-server/endpoints/openrtb2/auction.html) for details about the syntax. +The `file.name` option is the path/filename of a JSON file containing default request JSON. See the [stored request doc](/prebid-server/features/pbs-storedreqs.html) and the [openrtb2/auction endpoint doc](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html) for details about the syntax. PBS-Java has a slightly different configuration in application.yaml: ``` diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md index 7c36297221..c7bcf46a02 100644 --- a/prebid-server/features/pbs-feature-idx.md +++ b/prebid-server/features/pbs-feature-idx.md @@ -69,7 +69,7 @@ title: Prebid Server | Features | Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | | Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | | Auction | [MultiBid](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#multibid-pbs-java-only) | Allow named bidders to supply more than one response. | | | -| Analytics | Analytics module support | Allows developers to plug in a [custom analytics adapter](/developers/pbs-build-an-analytics-adapter.html). | | | +| Analytics | Analytics module support | Allows developers to plug in a [custom analytics adapter](/prebid-server/developers/pbs-build-an-analytics-adapter.html). | | | | Bid Response Validation | Validate secure markup | PBS can configurably reject bid responses that don't supply a secure creative when in a secure context. | | | | Bid Response Validation | Validate bid sizes | PBS can configurably reject bid responses with sizes that are bigger than the request dimensions. | | | | [Bidder Info Endpoints](/prebid-server/endpoints/info/pbs-endpoint-info.html) | Core | Provides details on which bidders and parameters exist in this Prebid Server. | | | diff --git a/prebid-video/video-getting-started.md b/prebid-video/video-getting-started.md index 82bc941d97..fbc05431c3 100644 --- a/prebid-video/video-getting-started.md +++ b/prebid-video/video-getting-started.md @@ -137,7 +137,7 @@ And this is where setups for instream and outstream diverge. Please follow one o Be sure to note the setting for price granularity. You might need to set up a custom price granularity. (See “Custom CPM Bucket Sizing” under [Price Granularity](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Price-Granularity). Or, if you’re monetizing both banner and video inventory with Prebid, you might need to define format-specific price granularity settings through [mediaTypePriceGranularity](/dev-docs/publisher-api-reference/setConfig.html#setConfig-MediaType-Price-Granularity). {: .alert.alert-info :} -**Prebid Server** If you’re using Prebid Server, you also need to configure your server-to-server bidder adapters. See [Getting Started with Prebid Server]({{site.github.url}}/dev-docs/get-started-with-prebid-server.html#step-4-configure-s2s-bidder-adapters) for details and examples. +**Prebid Server** If you’re using Prebid Server, you also need to configure your server-to-server bidder adapters. See [Getting Started with Prebid Server](/overview/prebid-server-overview.html). ### Examples diff --git a/troubleshooting/troubleshooting-guide.md b/troubleshooting/troubleshooting-guide.md index 7dd94f51f8..12843faac9 100644 --- a/troubleshooting/troubleshooting-guide.md +++ b/troubleshooting/troubleshooting-guide.md @@ -182,7 +182,7 @@ Here's another scenario using the 'debugging' feature described in the previous This section covers cases in which a particular server-side bidder doesn't always respond with a bid, or you want to try specific bid CPM values to verify line item setup. -If you're using Prebid Server (i.e. the [s2sConfig](/dev-docs/publisher-api-reference/setconfig#setConfig-Server-to-Server) option), you can force it to respond with a particular canned response on any page by defining a storedAuctionResponse ID on the javascript console: +If you're using Prebid Server (i.e. the [s2sConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Server-to-Server) option), you can force it to respond with a particular canned response on any page by defining a storedAuctionResponse ID on the javascript console: ```javascript javascript console> pbjs.setConfig({ From d1209b960a91b3cd7725a5ceb129370e0c6b3dd4 Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 4 Oct 2021 09:23:41 -0400 Subject: [PATCH 483/536] download page 404 for modules (#3316) --- download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/download.md b/download.md index bf78bbb148..c648268a4d 100644 --- a/download.md +++ b/download.md @@ -232,7 +232,7 @@ Prebid.org highly recommends that publishers utilize the following modules:

    General Modules

    {% for page in module_pages %}{% if page.enable_download == false or page.recommended == true or page.vendor_specific == true %}{% continue %}{% endif %}{% endfor %}
    From d14084cae9a7c908a94e0c5d80f38ef3d615ac4b Mon Sep 17 00:00:00 2001 From: Bill Newman Date: Mon, 4 Oct 2021 16:26:32 +0300 Subject: [PATCH 484/536] Colossus Bid Adapter: Unified ID 2.0 (#3236) * Updated docs Colossusssp Adapter * Update colossusssp.md Add media types * Update colossusssp.md add usp consent support * adding schain flag * gdpr and user ids * id5id support * Prebid server info * Remove PBS params * Add colossus PBS docs * Add short note for pbs adapter parametres * Add note for pbjs parametres * Fix * remove duplicate string * Update colossusssp.md Ad biddflorr parameter * add uid2 * fix * fix Co-authored-by: Vladislav Isaiko Co-authored-by: bretg Co-authored-by: Aiholkin --- dev-docs/bidders/colossus.md | 2 +- dev-docs/bidders/colossusssp.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/colossus.md b/dev-docs/bidders/colossus.md index a01899d0af..e7b322df75 100644 --- a/dev-docs/bidders/colossus.md +++ b/dev-docs/bidders/colossus.md @@ -6,7 +6,7 @@ biddercode: colossus usp_supported: true schain_supported: true media_types: banner, video, native -userIds: britepoolid, identityLink, unifiedId, id5Id +userIds: britepoolid, identityLink, unifiedId, id5Id, uid2 gdpr: true pbjs: false pbs: true diff --git a/dev-docs/bidders/colossusssp.md b/dev-docs/bidders/colossusssp.md index e64677b05d..6a9aafeca4 100644 --- a/dev-docs/bidders/colossusssp.md +++ b/dev-docs/bidders/colossusssp.md @@ -6,7 +6,7 @@ biddercode: colossusssp usp_supported: true schain_supported: true media_types: banner, video, native -userIds: britepoolid, identityLink, unifiedId, id5Id +userIds: britepoolid, identityLink, unifiedId, id5Id, uid2 gdpr: true pbjs: true pbs: false From 40dbcba35a56220b6fece4249eefc4a86042278d Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 4 Oct 2021 12:17:44 -0400 Subject: [PATCH 485/536] Fix timeout rtd (#3317) * download page 404 for modules * fixed modulecode for timeout RTD --- dev-docs/modules/timeoutRtdProvider.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/timeoutRtdProvider.md b/dev-docs/modules/timeoutRtdProvider.md index f0db6239be..969b9311aa 100644 --- a/dev-docs/modules/timeoutRtdProvider.md +++ b/dev-docs/modules/timeoutRtdProvider.md @@ -4,7 +4,7 @@ title: Timeout Rtd Module description: Module for managing timeouts in real time page_type: module module_type: rtd -module_code : example +module_code : timeoutRtdProvider enable_download : true sidebarType : 1 --- From f021e9a5ccf4f60c8bc637dd04955e8d34686cf8 Mon Sep 17 00:00:00 2001 From: Denis Logachov Date: Wed, 6 Oct 2021 21:06:44 +0300 Subject: [PATCH 486/536] Adkernel: documenting ergadx alias (#3324) Documenting https://github.com/prebid/Prebid.js/pull/7544 --- dev-docs/bidders/ergadx.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 dev-docs/bidders/ergadx.md diff --git a/dev-docs/bidders/ergadx.md b/dev-docs/bidders/ergadx.md new file mode 100644 index 0000000000..2aedf405a1 --- /dev/null +++ b/dev-docs/bidders/ergadx.md @@ -0,0 +1,27 @@ +--- +layout: bidder +title: eRGADX +description: eRGADX Bidder Adaptor +pbjs: true +pbs: true +biddercode: ergadx +aliasCode : adkernel +media_types: banner, native, video +gdpr_supported: true +usp_supported: true +coppa_supported: true +pbs_app_supported: true +schain_supported: true +--- + +### Note: + +The eRGADX bidding adapter requires setup and approval before implementation. Please reach out to for more details. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | RTB host | `'cpm.ergadx.com'` | `string` | +| `zoneId` | required | Zone Id | 30164 | `integer` | From 3f2af06e50446e03035a6e2e9c29dea187a68f72 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 6 Oct 2021 14:07:38 -0400 Subject: [PATCH 487/536] Update InterstitialAds.md (#3319) --- features/InterstitialAds.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/InterstitialAds.md b/features/InterstitialAds.md index 3eda2187fa..e034212528 100644 --- a/features/InterstitialAds.md +++ b/features/InterstitialAds.md @@ -54,7 +54,7 @@ pbjs.addAdUnits({ } }, ortb2Imp: { - intl:1 + instl:1 }, ... }); From dbe99db6519e0652ffba05a8952efc24f0594521 Mon Sep 17 00:00:00 2001 From: nllerandi3lift <75995508+nllerandi3lift@users.noreply.github.com> Date: Wed, 6 Oct 2021 14:08:24 -0400 Subject: [PATCH 488/536] adds disclaimer (#3318) --- dev-docs/bidders/triplelift.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dev-docs/bidders/triplelift.md b/dev-docs/bidders/triplelift.md index 9406329245..dfc94cf0e9 100644 --- a/dev-docs/bidders/triplelift.md +++ b/dev-docs/bidders/triplelift.md @@ -19,6 +19,11 @@ pbs_app_supported: true gvl_id: 28 --- +{% capture version2 %} +The Triplelift Prebid Server bidding adapter and user sync endpoint require setup before beginning. Please contact us at prebid@triplelift.com. +{% endcapture %} +{% include alerts/alert_important.html content=version2 %} + ### Bid Params {: .table .table-bordered .table-striped } From 10693bb6a8c837c1c64a74b84392c452f8bbcb62 Mon Sep 17 00:00:00 2001 From: jsfledd Date: Wed, 6 Oct 2021 11:09:51 -0700 Subject: [PATCH 489/536] Nativo Bid Adapter: Bid Params Update (#3307) * Added nativo markup documentation to dev-docs/bidders * Added IAB Global Vendor List ID number. * Adjusted placementId Type to be integer * Changed pbjs value to true * Added optional url parameter * Updated placementId parameter to be optional --- dev-docs/bidders/nativo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/nativo.md b/dev-docs/bidders/nativo.md index 67d7921d18..9c72c55f07 100644 --- a/dev-docs/bidders/nativo.md +++ b/dev-docs/bidders/nativo.md @@ -18,5 +18,5 @@ The Nativo Bidder adapter requires setup before beginning. Please contact us at {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|---------------------------------------------------------------------------------|--------------|-----------| -| `placementId` | required | Publication placement ID value from the Nativo Platform | `13144370` | `integer` | +| `placementId` | optional | Publication placement ID value from the Nativo Platform | `13144370` | `integer` | | `url` | optional | Publication url value associated with placement ID value in the Nativo Platform | `https://test-sites.internal.nativo.net/testing/prebid_adpater.html` | `string` | From 3afec767b04362333ba118d95baa7b6c83c35d17 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 6 Oct 2021 11:10:25 -0700 Subject: [PATCH 490/536] PubLink adds params for site id and api key. (#3306) --- dev-docs/modules/userId.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index ac7d756f47..5c321ac786 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -1411,11 +1411,11 @@ traffic. Publisher first-party authenticated data and a user's unique encrypted Epsilon CORE ID. By utilizing Publisher Link, publishers are able to reap the benefits of Epsilon's CORE ID. #### Publisher Link Registration -There is no registration needed. +Please contact [Epsilon](mailto:PublisherSupport@Epsilon.com) to sign up. The Epsilon privacy is covered in the [Epsilon Privacy Policy](https://www.epsilon.com/us/privacy-policy). -The Publisher Link opt-out is include [here](https://www.epsilon.com/privacy/dms/opt-out/email) +The Publisher Link opt-out is included [here](https://www.epsilon.com/privacy/dms/opt-out/email) #### Publisher Link Configuration @@ -1425,8 +1425,10 @@ In addition to the parameters documented above in the Basic Configuration sectio | Param under userSync.userIds[] | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | | name | Required | String | The name of this module. | `'publinkId'` | -| params | Required | Object | Customized parameters | | -| params.e | Required | String | Hashed email address of the user | `e80b5017098950fc58aad83c8c14978e` | +| params | Required | Object | Customized parameters. | | +| params.e | Required | String | Hashed email address of the user. Supports MD5 and SHA256. | `'7D320454942620664D96EF78ED4E3A2A'` | +| params.site_id | Required | String | Site ID provided by Epsilon. | `'123456'` | +| params.api_key | Required | String | API key provided by Epsilon. | `'7ab62359-bdc0-4095-b573-ef474fb55d2'` #### Publisher Link Examples ```javascript @@ -1440,7 +1442,9 @@ In addition to the parameters documented above in the Basic Configuration sectio expires: 30 }, params: { - e: "e80b5017098950fc58aad83c8c14978e", // example hashed email (md5) + e: "7D320454942620664D96EF78ED4E3A2A", // example hashed email (md5) + site_id: "123456", + api_key: "7ab62359-bdc0-4095-b573-ef474fb55d2" } }] } From 1f7d3c1fb6d3ec9fd893a189002f14e494bca23e Mon Sep 17 00:00:00 2001 From: bretg Date: Wed, 6 Oct 2021 14:11:02 -0400 Subject: [PATCH 491/536] Slimcut: removing 5.x note (#3305) --- dev-docs/bidders/slimcut.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dev-docs/bidders/slimcut.md b/dev-docs/bidders/slimcut.md index c308a7322a..598794aeac 100644 --- a/dev-docs/bidders/slimcut.md +++ b/dev-docs/bidders/slimcut.md @@ -1,12 +1,11 @@ --- layout: bidder title: Slimcut -description: SlimCut Bidder Adaptor +description: SlimCut Bidder Adapter pbjs: true biddercode: slimcut media_types: video, banner gdpr_supported: true -pbjs_version_notes: not in 5.x --- ### Overview From 90ae17cb1820bbacd6ce6baae40a93b8a9a674a9 Mon Sep 17 00:00:00 2001 From: Amanda Dillon <41923726+agdillon@users.noreply.github.com> Date: Wed, 6 Oct 2021 12:12:40 -0600 Subject: [PATCH 492/536] SpotX: add support for price floors module (#3293) --- dev-docs/bidders/spotx.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/spotx.md b/dev-docs/bidders/spotx.md index 9a63dfb00d..b52eef3265 100644 --- a/dev-docs/bidders/spotx.md +++ b/dev-docs/bidders/spotx.md @@ -12,6 +12,7 @@ usp_supported: true safeframes_ok: false pbjs: true gvl_id: 165 +getFloor: true pbjs_version_notes: avoid 4.31-4.35 --- @@ -32,7 +33,7 @@ Publishers using SpotX that haven't yet updated their ad server line items and t | `secure` | optional | Boolean identifying whether the requests should be https or not (used to override the protocol if the page isn't secure). | `true` | `boolean` | | `mimes` | optional | List of MIME types to allow in ad. | `['application/javascript', 'video/mp4', 'video/webm']` | `array` | | `ad_volume` | optional | Value between 0 and 1 to denote the volume the ad should start at | `0.7` | `float` | -| `price_floor` | optional | Set the current channel price floor in real time. | `10` | `integer` | +| `price_floor` | optional | Set the current channel price floor in real time. | `10` | `float` | | `hide_skin` | optional | Set to true to hide the SpotX skin | | `boolean` | | `custom` | optional | An object containing key-value pairs for reporting. See SpotX documentation [here](https://developer.spotxchange.com/content/local/docs/sdkDocs/DirectSdk/dsdk-custom-configs.md#custom-key-value-pair-reporting) | | `object` | | `min_duration` | optional | Minimum video ad duration in seconds | | `integer` | From d77d1fd9f652f214acc1caf6e0a9366a5790082a Mon Sep 17 00:00:00 2001 From: Abimael Martinez Date: Wed, 6 Oct 2021 12:13:26 -0600 Subject: [PATCH 493/536] Update NextRoll BidAdapter docs for v5 (#3286) * Update NextRoll BidAdapter docs for v5 * Add comment to `floors` section in example --- dev-docs/bidders/nextroll.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/nextroll.md b/dev-docs/bidders/nextroll.md index accca4ab35..c99e92a4b3 100644 --- a/dev-docs/bidders/nextroll.md +++ b/dev-docs/bidders/nextroll.md @@ -8,7 +8,6 @@ media_types: display, native gdpr_supported: false usp_supported: true prebid_member: true -pbjs_version_notes: not in 5.x --- ### Bid Params @@ -19,7 +18,7 @@ pbjs_version_notes: not in 5.x | `sellerId` | required | The seller ID from NextRoll.Please reach out your NextRoll representative for more details. | `'541459'` | `string` | | `publisherId` | optional | The publisher ID from NextRoll.Please reach out your NextRoll representative for more details. | `'956812'` | `string` | | `zoneId` | optional | Descriptive or unique identifier for the ad position | `'main-banner-505/600x160'` | `string` | -| `bidfloor` | optional | Per ad-unit bid floor | `2.3` | `number` | +| `bidfloor` | optional | Per ad-unit bid floor, used if the floor module is not available | `2.3` | `number` | #### Example of Banner Ad-unit ``` @@ -29,6 +28,17 @@ var adUnits = [ mediaTypes: { banner: {sizes: [[300, 250], [160, 600]]} }, + // If floors module is enabled + floors: { + currency: "USD", + schema: { + delimiter: "|", + fields: ["mediaType", "size"] + }, + values: { + "*|*": 2.0 + } + }, bids: [{ bidder: 'nextroll', params: { From bb4a8b5cc3d7c7df213103a8db45cbacca3632c8 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Wed, 6 Oct 2021 11:13:50 -0700 Subject: [PATCH 494/536] Mytarget Bid Adapter: update Prebid 5 compliance (#3285) Per pr -> https://github.com/prebid/Prebid.js/pull/7397 --- dev-docs/bidders/mytarget.md | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-docs/bidders/mytarget.md b/dev-docs/bidders/mytarget.md index cf96c21dff..d53cbca13a 100644 --- a/dev-docs/bidders/mytarget.md +++ b/dev-docs/bidders/mytarget.md @@ -4,7 +4,6 @@ title: myTarget description: Prebid myTarget Bidder Adapter pbjs: true biddercode: mytarget -pbjs_version_notes: not in 5.x --- From aff552a1d4eac1540ff8abacc6b668094c26e306 Mon Sep 17 00:00:00 2001 From: Jeremy Sadwith Date: Wed, 6 Oct 2021 14:14:55 -0400 Subject: [PATCH 495/536] Added video support (#3281) --- dev-docs/bidders/kargo.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/kargo.md b/dev-docs/bidders/kargo.md index 926a62f1a1..562d797b4d 100644 --- a/dev-docs/bidders/kargo.md +++ b/dev-docs/bidders/kargo.md @@ -4,6 +4,7 @@ title: Kargo description: Prebid Kargo Bidder Adaptor pbjs: true biddercode: kargo +media_types: banner, video gdpr_supported: true userIds: unifiedId usp_supported: true From 1336b5057cd3013b2c9bd16c8bf22f4432546904 Mon Sep 17 00:00:00 2001 From: wojciech-bialy-wpm <67895844+wojciech-bialy-wpm@users.noreply.github.com> Date: Wed, 6 Oct 2021 20:15:31 +0200 Subject: [PATCH 496/536] [sspbc-adapter] update dev-docs for adapter (native & video support) (#3279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wojciech Biały --- dev-docs/bidders/sspBC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/sspBC.md b/dev-docs/bidders/sspBC.md index 41a319747a..48c9ffa1e0 100644 --- a/dev-docs/bidders/sspBC.md +++ b/dev-docs/bidders/sspBC.md @@ -4,7 +4,7 @@ title: sspBC description: Prebid sspBC Bidder Adaptor pbjs: true biddercode: sspBC -media_types: banner +media_types: banner, video, native getFloor: true gdpr_supported: true gvl_id: 676 From f456d239a041b6558c5c6a533f566e3f10beb919 Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 6 Oct 2021 20:16:30 +0200 Subject: [PATCH 497/536] Prebid Server Support (#3273) Add the prebid server support --- dev-docs/bidders/impactify.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/impactify.md b/dev-docs/bidders/impactify.md index 4cb59868c8..5b36a8eeae 100644 --- a/dev-docs/bidders/impactify.md +++ b/dev-docs/bidders/impactify.md @@ -3,7 +3,7 @@ layout: bidder title: Impactify description: Prebid Impactify Bidder Adapter pbjs: true -pbs: false +pbs: true biddercode: impactify gdpr_supported: true tcf2_supported: true From becec5abd93c3daa3201076187468e7fe5d6e56e Mon Sep 17 00:00:00 2001 From: relaido <63339139+relaido@users.noreply.github.com> Date: Thu, 7 Oct 2021 03:17:09 +0900 Subject: [PATCH 498/536] Relaido Bid Adapter: add support imuid (#3272) * add relaido adapter * Add support for imuid Co-authored-by: ishigami_shingo Co-authored-by: cmertv-sishigami --- dev-docs/bidders/relaido.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/relaido.md b/dev-docs/bidders/relaido.md index 451554d9d4..08ef84f34f 100644 --- a/dev-docs/bidders/relaido.md +++ b/dev-docs/bidders/relaido.md @@ -3,6 +3,7 @@ layout: bidder title: Relaido description: Prebid Relaido Bidder Adapter biddercode: relaido +userIds: imuid pbjs: true media_types: banner, video --- From 38491fde4812767d52f152ab70d6a09333e3dd2a Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 6 Oct 2021 20:18:07 +0200 Subject: [PATCH 499/536] Impactify - Add UserID module (#3245) Add UserID support in documentation --- dev-docs/bidders/impactify.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/impactify.md b/dev-docs/bidders/impactify.md index 5b36a8eeae..20c55f326b 100644 --- a/dev-docs/bidders/impactify.md +++ b/dev-docs/bidders/impactify.md @@ -11,6 +11,7 @@ usp_supported: true schain_supported: true coppa_supported: true media_types: video +userIds: criteo, id5Id, pubCommonId, unifiedId, uid2, netId gvl_id: 606 --- From 1f14efc409f4f3a8b9cd61c49f74a81644173105 Mon Sep 17 00:00:00 2001 From: bretg Date: Wed, 6 Oct 2021 15:24:20 -0400 Subject: [PATCH 500/536] Added First Party Data to feature list (#3325) * added fpd_supported, renamed getFloor and deals * removing stray file --- _layouts/bidder.html | 8 ++++---- dev-docs/bidder-adaptor.md | 14 ++++++++------ dev-docs/bidder-data.csv | 4 ++-- dev-docs/bidders/33across.md | 2 +- dev-docs/bidders/aceex.md | 2 +- dev-docs/bidders/acuityads.md | 2 +- dev-docs/bidders/adagio.md | 3 ++- dev-docs/bidders/adf.md | 3 ++- dev-docs/bidders/admixer.md | 1 + dev-docs/bidders/adnuntius.md | 1 + dev-docs/bidders/adpone.md | 2 +- dev-docs/bidders/adquery.md | 2 +- dev-docs/bidders/adrelevantis.md | 1 + dev-docs/bidders/adriver.md | 4 ++-- dev-docs/bidders/adxcg.md | 2 +- dev-docs/bidders/adyoulike.md | 2 +- dev-docs/bidders/amx.md | 1 + dev-docs/bidders/apacdex.md | 4 ++-- dev-docs/bidders/appnexus.md | 3 ++- dev-docs/bidders/aso.md | 6 +++--- dev-docs/bidders/automatad.md | 1 + dev-docs/bidders/beachfront.md | 2 +- dev-docs/bidders/beop.md | 1 + dev-docs/bidders/bidmachine.md | 2 +- dev-docs/bidders/bizzclick.md | 2 +- dev-docs/bidders/bmtm.md | 2 +- dev-docs/bidders/brave.md | 2 +- dev-docs/bidders/colossusssp.md | 1 + dev-docs/bidders/connectad.md | 2 +- dev-docs/bidders/contentexchange.md | 2 +- dev-docs/bidders/criteo.md | 3 ++- dev-docs/bidders/datablocks.md | 1 + dev-docs/bidders/districtmdmx.md | 2 +- dev-docs/bidders/epom.md | 2 +- dev-docs/bidders/etarget.md | 1 + dev-docs/bidders/getintent.md | 2 +- dev-docs/bidders/gothamads.md | 2 +- dev-docs/bidders/grid.md | 3 ++- dev-docs/bidders/gridNM.md | 1 + dev-docs/bidders/gumgum.md | 3 ++- dev-docs/bidders/huaweiads.md | 2 +- dev-docs/bidders/inmar.md | 3 ++- dev-docs/bidders/integr8.md | 2 +- dev-docs/bidders/iqm.md | 2 +- dev-docs/bidders/ix.md | 3 ++- dev-docs/bidders/jixie.md | 2 +- dev-docs/bidders/kobler.md | 4 ++-- dev-docs/bidders/logicad.md | 2 +- dev-docs/bidders/marsmedia.md | 2 +- dev-docs/bidders/mathildeads.md | 2 +- dev-docs/bidders/mediakeys.md | 4 ++-- dev-docs/bidders/medianet.md | 3 ++- dev-docs/bidders/nobid.md | 1 + dev-docs/bidders/ogury.md | 4 ++-- dev-docs/bidders/openx.md | 3 ++- dev-docs/bidders/operaads.md | 4 ++-- dev-docs/bidders/optout.md | 1 + dev-docs/bidders/ozone.md | 3 ++- dev-docs/bidders/pangle.md | 2 +- dev-docs/bidders/pixfuture.md | 1 + dev-docs/bidders/proxistore.md | 1 + dev-docs/bidders/pubgenius.md | 2 +- dev-docs/bidders/pubmatic.md | 3 ++- dev-docs/bidders/pwbid.md | 2 +- dev-docs/bidders/quantumdex.md | 4 ++-- dev-docs/bidders/rise.md | 3 ++- dev-docs/bidders/roundel.md | 2 +- dev-docs/bidders/rubicon.md | 5 +++-- dev-docs/bidders/sharethrough.md | 1 + dev-docs/bidders/smaato.md | 3 ++- dev-docs/bidders/smartadserver.md | 2 +- dev-docs/bidders/smartyads.md | 2 +- dev-docs/bidders/sonobi.md | 1 + dev-docs/bidders/sortable.md | 2 +- dev-docs/bidders/sovrn.md | 3 ++- dev-docs/bidders/spotx.md | 2 +- dev-docs/bidders/sspBC.md | 5 +++-- dev-docs/bidders/stroeerCore.md | 2 +- dev-docs/bidders/targetvideo.md | 2 +- dev-docs/bidders/teads.md | 2 +- dev-docs/bidders/triplelift.md | 5 +++-- dev-docs/bidders/triplelift_native.md | 4 ++-- dev-docs/bidders/trustx.md | 1 + dev-docs/bidders/ucfunnel.md | 2 +- dev-docs/bidders/unruly.md | 4 ++-- dev-docs/bidders/valueimpression.md | 4 ++-- dev-docs/bidders/visx.md | 2 +- dev-docs/bidders/winr.md | 3 ++- dev-docs/bidders/yieldmo.md | 1 + dev-docs/bidders/zeta_global.md | 2 +- dev-docs/bidders/zeta_global_ssp.md | 3 ++- dev-docs/pbs-bidders.md | 3 ++- prebid-server/developers/add-new-bidder-go.md | 8 ++++++-- prebid-server/developers/add-new-bidder-java.md | 8 ++++++-- 94 files changed, 151 insertions(+), 102 deletions(-) diff --git a/_layouts/bidder.html b/_layouts/bidder.html index 35f39c9de1..ef9165c1cd 100644 --- a/_layouts/bidder.html +++ b/_layouts/bidder.html @@ -76,7 +76,7 @@

    Features

    Supports Deals - {% if page.bidder_supports_deals == false %}no{% elsif page.bidder_supports_deals == true %}yes{% else %}check with bidder{% endif %} + {% if page.deals_supported == false %}no{% elsif page.deals_supported == true %}yes{% else %}check with bidder{% endif %} Prebid.js Adapter yes @@ -88,9 +88,9 @@

    Features

    Floors Module Support - {% if page.getFloor == true %}yes{% else %}no{% endif %} - - + {% if page.floors_supported == true %}yes{% else %}no{% endif %} + First Party Data Support + {% if page.fpd_supported == true %}yes{% elsif page.fpd_supported == false %}no{% else %}check with bidder{% endif %} diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index 6550c9f546..ba6b96ced5 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -1069,15 +1069,16 @@ registerBidder(spec); - Add `pbjs: true`. If you also have a [Prebid Server bid adapter](/prebid-server/developers/add-new-bidder-go.html), add `pbs: true`. Default is false for both. - If you're on the IAB Global Vendor List, add your ID number in `gvl_id`. - If you support the GDPR consentManagement module and have a GVL ID, you may add `gdpr_supported: true`. Default is false. - - If you have an IAB Global Vendor List ID, add `gvl_id: ID`. There's no default. - If you support the US Privacy consentManagementUsp module, add `usp_supported: true`. Default is false. - If you support one or more userId modules, add `userId: (list of supported vendors)`. No default value. - If you support video and/or native mediaTypes add `media_types: video, native`. Note that display is added by default. If you don't support display, add "no-display" as the first entry, e.g. `media_types: no-display, native`. No default value. - If you support COPPA, add `coppa_supported: true`. Default is false. - If you support the [supply chain](/dev-docs/modules/schain.html) feature, add `schain_supported: true`. Default is false. - - If you support passing a demadn chain on the response, add `dchain_supported: true`. Default is false. + - If you support passing a demand chain on the response, add `dchain_supported: true`. Default is false. - If your bidder doesn't work well with safeframed creatives, add `safeframes_ok: false`. This will alert publishers to not use safeframed creatives when creating the ad server entries for your bidder. No default value. - - If you support deals, set `bidder_supports_deals: true`. No default value.. + - If you support deals, set `deals_supported: true`. No default value.. + - If you support floors, set `floors_supported: true`. No default value.. + - If you support first party data, set `fpd_supported: true`. No default value.. - If you're a member of Prebid.org, add `prebid_member: true`. Default is false. - Submit both the code and docs pull requests @@ -1090,7 +1091,7 @@ description: Prebid example Bidder Adapter biddercode: example aliasCode: fileContainingPBJSAdapterCodeIfDifferentThenBidderCode gdpr_supported: true/false -gvl_id: 111 +gvl_id: none usp_supported: true/false coppa_supported: true/false schain_supported: true/false @@ -1098,11 +1099,12 @@ dchain_supported: true/false userId: (list of supported vendors) media_types: banner, video, native safeframes_ok: true/false -bidder_supports_deals: true/false +deals_supported: true/false +floors_supported: true/false +fpd_supported: true/false pbjs: true/false pbs: true/false prebid_member: true/false -gvl_id: none --- ### Note: diff --git a/dev-docs/bidder-data.csv b/dev-docs/bidder-data.csv index 0cbf9761ab..b633024b54 100644 --- a/dev-docs/bidder-data.csv +++ b/dev-docs/bidder-data.csv @@ -2,6 +2,6 @@ layout: none search: exclude --- -bidder-code,bidder-name,banner,video,native,gdpr,schain,coppa,usp,safeframes,deals,client-adapter,server-adapter,user-ids,usp,mobile-apps,floors,prebid-member -{% assign bidder_pages = site.pages | where: "layout", "bidder" %}{% for page in bidder_pages %}{{ page.biddercode }},{{ page.title }},{% if page.media_types contains 'banner' %}yes{% else %}no{% endif %},{% if page.media_types contains 'video' %}yes{% else %}no{% endif %},{% if page.media_types contains 'native' %}yes{% else %}no{% endif %},{% if page.gdpr_supported == true %}yes{% else %}no{% endif %},{% if page.schain_supported == true %}yes{% else %}no{% endif %},{% if page.coppa_supported == true %}yes{% else %}no{% endif %},{% if page.usp_supported == true %}yes{% else %}no{% endif %},{% if page.safeframes_ok and page.safeframes_ok == false %}no{% elsif page.safeframes_ok and page.safeframes_ok == true %}yes{% else %}check with bidder{% endif %},{% if page.bidder_supports_deals and page.bidder_supports_deals == false %}no{% else %}yes{% endif %},{% if page.pbjs == true %}yes{% else %}no{% endif %},{% if page.pbs == true %}yes{% else %}no{% endif %},{% if page.userIds and page.userIds != '' %}"{{page.userIds}}"{% else %}none{% endif %},{% if page.usp_supported == true %}yes{% else %}no{% endif %},{% if page.pbs_app_supported and page.pbs_app_supported == false %}no{% elsif page.pbs_app_supported and page.pbs_app_supported == true %}yes{% elsif page.pbs and page.pbs == false %}no{% elsif page.pbs==nil %}no{% else %}check with bidder{% endif %},{% if page.getFloor == true %}yes{% else %}no{% endif %},{% if page.prebid_member == true %}yes{% else %}no{% endif %} +bidder-code,bidder-name,banner,video,native,gdpr,schain,coppa,usp,safeframes,deals,client-adapter,server-adapter,user-ids,usp,mobile-apps,floors,fpd,prebid-member +{% assign bidder_pages = site.pages | where: "layout", "bidder" %}{% for page in bidder_pages %}{{ page.biddercode }},{{ page.title }},{% if page.media_types contains 'banner' %}yes{% else %}no{% endif %},{% if page.media_types contains 'video' %}yes{% else %}no{% endif %},{% if page.media_types contains 'native' %}yes{% else %}no{% endif %},{% if page.gdpr_supported == true %}yes{% else %}no{% endif %},{% if page.schain_supported == true %}yes{% else %}no{% endif %},{% if page.coppa_supported == true %}yes{% else %}no{% endif %},{% if page.usp_supported == true %}yes{% else %}no{% endif %},{% if page.safeframes_ok and page.safeframes_ok == false %}no{% elsif page.safeframes_ok and page.safeframes_ok == true %}yes{% else %}check with bidder{% endif %},{% if page.deals_supported and page.deals_supported == false %}no{% else %}yes{% endif %},{% if page.pbjs == true %}yes{% else %}no{% endif %},{% if page.pbs == true %}yes{% else %}no{% endif %},{% if page.userIds and page.userIds != '' %}"{{page.userIds}}"{% else %}none{% endif %},{% if page.usp_supported == true %}yes{% else %}no{% endif %},{% if page.pbs_app_supported and page.pbs_app_supported == false %}no{% elsif page.pbs_app_supported and page.pbs_app_supported == true %}yes{% elsif page.pbs and page.pbs == false %}no{% elsif page.pbs==nil %}no{% else %}check with bidder{% endif %},{% if page.floors_supported == true %}yes{% else %}no{% endif %},{% if page.fpd_supported == true %}yes{% elsif page.fpd_supported == false %}no{% else %}check with bidder{% endif %},{% if page.prebid_member == true %}yes{% else %}no{% endif %} {% endfor %} diff --git a/dev-docs/bidders/33across.md b/dev-docs/bidders/33across.md index 17d07de9f0..cc457b8713 100644 --- a/dev-docs/bidders/33across.md +++ b/dev-docs/bidders/33across.md @@ -7,7 +7,7 @@ pbs: true biddercode: 33across media_types: banner, video gdpr_supported: true -getFloor: true +floors_supported: true schain_supported: true usp_supported: true userIds: all diff --git a/dev-docs/bidders/aceex.md b/dev-docs/bidders/aceex.md index 23da889ad2..e380d3aa54 100644 --- a/dev-docs/bidders/aceex.md +++ b/dev-docs/bidders/aceex.md @@ -10,7 +10,7 @@ schain_supported: true userId: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: false pbs: true --- diff --git a/dev-docs/bidders/acuityads.md b/dev-docs/bidders/acuityads.md index a6f10c6e20..95d4784821 100644 --- a/dev-docs/bidders/acuityads.md +++ b/dev-docs/bidders/acuityads.md @@ -10,7 +10,7 @@ schain_supported: true userId: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: false pbs: true --- diff --git a/dev-docs/bidders/adagio.md b/dev-docs/bidders/adagio.md index 529051555c..8c311afc1a 100644 --- a/dev-docs/bidders/adagio.md +++ b/dev-docs/bidders/adagio.md @@ -6,7 +6,7 @@ pbjs: true biddercode: adagio media_types: banner, native, video userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, pubProvidedId, sharedId, unifiedId -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true coppa_supported: true @@ -14,6 +14,7 @@ schain_supported: true gvl_id: 617 prebid_member: true pbs: true +fpd_supported: true --- ### Note diff --git a/dev-docs/bidders/adf.md b/dev-docs/bidders/adf.md index 44045bed9f..128386ea0a 100644 --- a/dev-docs/bidders/adf.md +++ b/dev-docs/bidders/adf.md @@ -13,7 +13,8 @@ schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, sharedId, unifiedId gvl_id: 50 prevBiddercode: adformOpenRTB -getFloor: true +floors_supported: true +fpd_supported: true --- ### Bid params diff --git a/dev-docs/bidders/admixer.md b/dev-docs/bidders/admixer.md index 564b39711d..67ebf06294 100644 --- a/dev-docs/bidders/admixer.md +++ b/dev-docs/bidders/admixer.md @@ -9,6 +9,7 @@ media_types: video gdpr_supported: true usp_supported: true schain_supported: true +fpd_supported: true gvl_id: 511 --- diff --git a/dev-docs/bidders/adnuntius.md b/dev-docs/bidders/adnuntius.md index cdb2766ccd..37b643c393 100644 --- a/dev-docs/bidders/adnuntius.md +++ b/dev-docs/bidders/adnuntius.md @@ -6,6 +6,7 @@ pbjs: true biddercode: adnuntius media_types: banner gdpr_supported: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/adpone.md b/dev-docs/bidders/adpone.md index 608b228ff1..c2da708ebd 100644 --- a/dev-docs/bidders/adpone.md +++ b/dev-docs/bidders/adpone.md @@ -5,7 +5,7 @@ description: Prebid Adpone Bidder Adaptor pbjs: true pbs: true biddercode: adpone -bidder_supports_deals: false +deals_supported: false media_types: banner gvl_id: 799 --- diff --git a/dev-docs/bidders/adquery.md b/dev-docs/bidders/adquery.md index 6276c9650c..8ab327d42b 100644 --- a/dev-docs/bidders/adquery.md +++ b/dev-docs/bidders/adquery.md @@ -16,4 +16,4 @@ gvl_id: 902 | Name | Scope | Description | Example | Type | |---------------|----------|---------------|-------------------------------------------|-----------| | `placementId` | required | Placement ID | `6d93f2a0e5f0fe2cc3a6e9e3ade964b43b07f897`| `string` | -| `type` | required | Ad Type | `banner300x250` | `string` | \ No newline at end of file +| `type` | required | Ad Type | `banner300x250` | `string` | diff --git a/dev-docs/bidders/adrelevantis.md b/dev-docs/bidders/adrelevantis.md index 97ceab7c8a..1d132f2b03 100644 --- a/dev-docs/bidders/adrelevantis.md +++ b/dev-docs/bidders/adrelevantis.md @@ -4,6 +4,7 @@ title: Adrelevantis description: Prebid Adrelevantis (adrelevantis.xyz) Bidder Adaptor biddercode: adrelevantis media_types: banner, video, native +fpd_supported: true pbjs: true --- diff --git a/dev-docs/bidders/adriver.md b/dev-docs/bidders/adriver.md index 3461aceb2c..1a69fb4108 100644 --- a/dev-docs/bidders/adriver.md +++ b/dev-docs/bidders/adriver.md @@ -4,9 +4,9 @@ title: adriver description: Adriver adapter biddercode: adriver pbjs: true -bidder_supports_deals: true +deals_supported: true userIds: sharedId, id5Id, uid2Id -getFloor: true +floors_supported: true --- diff --git a/dev-docs/bidders/adxcg.md b/dev-docs/bidders/adxcg.md index 9f85e7170e..f7803f0ac5 100644 --- a/dev-docs/bidders/adxcg.md +++ b/dev-docs/bidders/adxcg.md @@ -2,7 +2,7 @@ layout: bidder title: adxcg description: Prebid adxcg bidder adaptor -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/adyoulike.md b/dev-docs/bidders/adyoulike.md index 75de6f1c3d..a8f6b5a454 100644 --- a/dev-docs/bidders/adyoulike.md +++ b/dev-docs/bidders/adyoulike.md @@ -8,7 +8,7 @@ media_types: banner, video, native biddercode: adyoulike gdpr_supported: true usp_supported: true -getFloor: true +floors_supported: true --- ### Note: diff --git a/dev-docs/bidders/amx.md b/dev-docs/bidders/amx.md index 44b91b61e0..f8f3ff6574 100644 --- a/dev-docs/bidders/amx.md +++ b/dev-docs/bidders/amx.md @@ -14,6 +14,7 @@ media_types: banner, video pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 737 --- diff --git a/dev-docs/bidders/apacdex.md b/dev-docs/bidders/apacdex.md index 73af7e1fab..9fd5058aa6 100644 --- a/dev-docs/bidders/apacdex.md +++ b/dev-docs/bidders/apacdex.md @@ -9,7 +9,7 @@ gdpr_supported: true schain_supported: true usp_supported: true userIds: all -getFloor: true +floors_supported: true --- ### Table of Contents @@ -171,4 +171,4 @@ var outstreamAdUnit = { }; ``` mediaTypes.video object reference to section 3.2.7 Object: Video in the OpenRTB 2.5 document -You must review all video parameters to ensure validity for your player and DSPs \ No newline at end of file +You must review all video parameters to ensure validity for your player and DSPs diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md index 6e848d7215..0d9360bb28 100644 --- a/dev-docs/bidders/appnexus.md +++ b/dev-docs/bidders/appnexus.md @@ -10,7 +10,8 @@ userIds: criteo, unifiedId, netId, identityLink, flocId, uid2 schain_supported: true coppa_supported: true usp_supported: true -getFloor: true +floors_supported: true +fpd_supported: true pbjs: true pbs: true gvl_id: 32 diff --git a/dev-docs/bidders/aso.md b/dev-docs/bidders/aso.md index c1e59bccab..8e4fae6934 100644 --- a/dev-docs/bidders/aso.md +++ b/dev-docs/bidders/aso.md @@ -7,10 +7,10 @@ gdpr_supported: true usp_supported: true media_types: video safeframes_ok: true -bidder_supports_deals: false +deals_supported: false pbjs: true pbs: false -getFloor: true +floors_supported: true --- ### Note: @@ -55,4 +55,4 @@ pbjs.setConfig({ url: 'https://prebid.adnxs.com/pbc/v1/cache' } }); -``` \ No newline at end of file +``` diff --git a/dev-docs/bidders/automatad.md b/dev-docs/bidders/automatad.md index cd1c2045b4..27714c6d15 100644 --- a/dev-docs/bidders/automatad.md +++ b/dev-docs/bidders/automatad.md @@ -5,6 +5,7 @@ description: Automatad OpenRTB Bid Adapter biddercode: automatad pbjs: true media_types: banner +fpd_supported: true --- #### Bid Params diff --git a/dev-docs/bidders/beachfront.md b/dev-docs/bidders/beachfront.md index 439bd85d1e..aa28971a92 100644 --- a/dev-docs/bidders/beachfront.md +++ b/dev-docs/bidders/beachfront.md @@ -4,7 +4,7 @@ title: Beachfront description: Prebid Beachfront Bidder Adapter biddercode: beachfront media_types: video -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true userIds: unifiedId, identityLink, uid2, haloId diff --git a/dev-docs/bidders/beop.md b/dev-docs/bidders/beop.md index f1728716d5..3f7786d8b7 100644 --- a/dev-docs/bidders/beop.md +++ b/dev-docs/bidders/beop.md @@ -4,6 +4,7 @@ title: BeOp description: BeOp Bidder Adaptor pbjs: true biddercode: beop +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/bidmachine.md b/dev-docs/bidders/bidmachine.md index c314667874..82f1dd997e 100644 --- a/dev-docs/bidders/bidmachine.md +++ b/dev-docs/bidders/bidmachine.md @@ -11,7 +11,7 @@ schain_supported: true dchain_supported: false media_types: banner, video safeframes_ok: true -bidder_supports_deals: false +deals_supported: false pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/bizzclick.md b/dev-docs/bidders/bizzclick.md index ca37393154..57846d529e 100644 --- a/dev-docs/bidders/bizzclick.md +++ b/dev-docs/bidders/bizzclick.md @@ -9,7 +9,7 @@ coppa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true --- diff --git a/dev-docs/bidders/bmtm.md b/dev-docs/bidders/bmtm.md index df49410149..3d99a82779 100644 --- a/dev-docs/bidders/bmtm.md +++ b/dev-docs/bidders/bmtm.md @@ -4,7 +4,7 @@ title: Bright Mountain Media description: Prebid Bright Mountain Media Bidder Adapter biddercode: bmtm media_types: banner, video -getFloor: true +floors_supported: true schain_supported: true pbjs: true pbs: true diff --git a/dev-docs/bidders/brave.md b/dev-docs/bidders/brave.md index b9d9213a0b..e26f0f7249 100644 --- a/dev-docs/bidders/brave.md +++ b/dev-docs/bidders/brave.md @@ -9,7 +9,7 @@ coppa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: false --- diff --git a/dev-docs/bidders/colossusssp.md b/dev-docs/bidders/colossusssp.md index 6a9aafeca4..50931a7c99 100644 --- a/dev-docs/bidders/colossusssp.md +++ b/dev-docs/bidders/colossusssp.md @@ -8,6 +8,7 @@ schain_supported: true media_types: banner, video, native userIds: britepoolid, identityLink, unifiedId, id5Id, uid2 gdpr: true +fpd_supported: true pbjs: true pbs: false --- diff --git a/dev-docs/bidders/connectad.md b/dev-docs/bidders/connectad.md index 2a8c0e1558..b5f67acab3 100644 --- a/dev-docs/bidders/connectad.md +++ b/dev-docs/bidders/connectad.md @@ -11,7 +11,7 @@ schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId prebid_member: true safeframes_ok: true -getFloor: true +floors_supported: true pbjs: true pbs: true gvl_id: 138 diff --git a/dev-docs/bidders/contentexchange.md b/dev-docs/bidders/contentexchange.md index 10ea1669c4..364ee93d6f 100644 --- a/dev-docs/bidders/contentexchange.md +++ b/dev-docs/bidders/contentexchange.md @@ -18,4 +18,4 @@ pbs_app_supported: false | Name | Scope | Description | Example | Type | |----------------|----------|----------------------------------------------------------|------------|-----------| | `placementId` | required | Placement Id will be generated on ContentExchange Platform. | `'1234'` | `string` | -| `adFormat` | required | `[banner, video, native]` | `'banner'` | `string` | \ No newline at end of file +| `adFormat` | required | `[banner, video, native]` | `'banner'` | `string` | diff --git a/dev-docs/bidders/criteo.md b/dev-docs/bidders/criteo.md index fe5d109427..25221baaae 100644 --- a/dev-docs/bidders/criteo.md +++ b/dev-docs/bidders/criteo.md @@ -10,7 +10,8 @@ gdpr_supported: true usp_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, pubProvidedId, sharedId, unifiedId prebid_member: true -getFloor: false* +floors_supported: false +fpd_supported: true gvl_id: 91 --- ### Notes diff --git a/dev-docs/bidders/datablocks.md b/dev-docs/bidders/datablocks.md index 761405f240..58aea81085 100644 --- a/dev-docs/bidders/datablocks.md +++ b/dev-docs/bidders/datablocks.md @@ -12,6 +12,7 @@ pbs_app_supported: true schain_supported: true usp_supported: true userIds: criteo,unifiedId,netId,pubcid +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/districtmdmx.md b/dev-docs/bidders/districtmdmx.md index 5aa40aa58a..fef2443cc5 100644 --- a/dev-docs/bidders/districtmdmx.md +++ b/dev-docs/bidders/districtmdmx.md @@ -6,7 +6,7 @@ pbjs: true biddercode: districtmDMX gdpr_supported: true schain_supported: true -getFloor: true +floors_supported: true usp_supported: true coppa_supported: true userIds: britepoolId, criteo, id5Id, identityLink, intentiq, liveIntentId, netId, parrableId, pubCommonId, unifiedId diff --git a/dev-docs/bidders/epom.md b/dev-docs/bidders/epom.md index 228670bceb..d1d5897a28 100644 --- a/dev-docs/bidders/epom.md +++ b/dev-docs/bidders/epom.md @@ -10,7 +10,7 @@ coppa_supported: true schain_supported: false media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/etarget.md b/dev-docs/bidders/etarget.md index 251697a776..41c3198529 100644 --- a/dev-docs/bidders/etarget.md +++ b/dev-docs/bidders/etarget.md @@ -6,6 +6,7 @@ pbjs: true biddercode: etarget media_types: banner, video gdpr_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/getintent.md b/dev-docs/bidders/getintent.md index 30fffcabfd..671ec6fe1f 100644 --- a/dev-docs/bidders/getintent.md +++ b/dev-docs/bidders/getintent.md @@ -5,7 +5,7 @@ description: Prebid GetIntent Bidder Adaptor pbjs: true biddercode: getintent media_types: video, banner -getFloor: true +floors_supported: true --- diff --git a/dev-docs/bidders/gothamads.md b/dev-docs/bidders/gothamads.md index e3fabc29e7..d41aa86cbd 100644 --- a/dev-docs/bidders/gothamads.md +++ b/dev-docs/bidders/gothamads.md @@ -10,7 +10,7 @@ ccpa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true --- diff --git a/dev-docs/bidders/grid.md b/dev-docs/bidders/grid.md index c6a619cc28..8ca173f0fd 100644 --- a/dev-docs/bidders/grid.md +++ b/dev-docs/bidders/grid.md @@ -9,10 +9,11 @@ media_types: banner, video gdpr_supported: true usp_supported: true schain_supported: true -getFloor: true +floors_supported: true userIds: all tcf2_supported: true coppa_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/gridNM.md b/dev-docs/bidders/gridNM.md index 3524b8df87..fc92e91a17 100644 --- a/dev-docs/bidders/gridNM.md +++ b/dev-docs/bidders/gridNM.md @@ -7,6 +7,7 @@ biddercode: gridNM media_types: video gdpr_supported: true usp_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/gumgum.md b/dev-docs/bidders/gumgum.md index b3427cf8b4..c655f75fd9 100644 --- a/dev-docs/bidders/gumgum.md +++ b/dev-docs/bidders/gumgum.md @@ -8,10 +8,11 @@ pbs_app_supported: true biddercode: gumgum media_types: banner, video schain_supported: true -getFloor: true +floors_supported: true userIds: unifiedId, identityLink gdpr_supported: true usp_supported: true +fpd_supported: true --- ### Note: diff --git a/dev-docs/bidders/huaweiads.md b/dev-docs/bidders/huaweiads.md index 913f164f37..1211990c2b 100644 --- a/dev-docs/bidders/huaweiads.md +++ b/dev-docs/bidders/huaweiads.md @@ -6,7 +6,7 @@ biddercode: huaweiads gvl_id: 856 media_types: banner, video, native safeframes_ok: false -bidder_supports_deals: true +deals_supported: true pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/inmar.md b/dev-docs/bidders/inmar.md index 23f028e296..f00dc47243 100644 --- a/dev-docs/bidders/inmar.md +++ b/dev-docs/bidders/inmar.md @@ -8,7 +8,8 @@ usp_supported: true userIds: identityLink, liveIntentId, unifiedId, pubCommonId, pubProvidedId, sharedId media_types: banner, video safeframes_ok: false -bidder_supports_deals: true +deals_supported: true +fpd_supported: true pbjs: true --- ### Note: diff --git a/dev-docs/bidders/integr8.md b/dev-docs/bidders/integr8.md index 6f1e4a71ab..27662ef942 100644 --- a/dev-docs/bidders/integr8.md +++ b/dev-docs/bidders/integr8.md @@ -14,4 +14,4 @@ media_types: banner, video |---------------|----------|------------------------------------------------------------------------|--------------------|-----------| | `propertyId` | required |Property id | `"12345"` | `string` | | `placementId` | required |Placement id | `"54321"` | `string` | -| `data` | optional |Catalog data (contents) and/or inventory data (custom key/value pairs) | `{catalogs: [{ catalogId: "699229", items: ["193", "4", "1"] }], inventory: { category: ["tech"], query: ["iphone 12"] }}` | `object` | \ No newline at end of file +| `data` | optional |Catalog data (contents) and/or inventory data (custom key/value pairs) | `{catalogs: [{ catalogId: "699229", items: ["193", "4", "1"] }], inventory: { category: ["tech"], query: ["iphone 12"] }}` | `object` | diff --git a/dev-docs/bidders/iqm.md b/dev-docs/bidders/iqm.md index f4159f0ec0..a3251a5a72 100644 --- a/dev-docs/bidders/iqm.md +++ b/dev-docs/bidders/iqm.md @@ -80,4 +80,4 @@ var adUnits = [{ }] }; -``` \ No newline at end of file +``` diff --git a/dev-docs/bidders/ix.md b/dev-docs/bidders/ix.md index 006fac2fc4..c19447d1ee 100644 --- a/dev-docs/bidders/ix.md +++ b/dev-docs/bidders/ix.md @@ -10,9 +10,10 @@ pbs_app_supported: true schain_supported: true coppa_supported: true gdpr_supported: true -getFloor: true +floors_supported: true usp_supported: true media_types: banner, video +fpd_supported: true gvl_id: 10 prebid_member: yes --- diff --git a/dev-docs/bidders/jixie.md b/dev-docs/bidders/jixie.md index b9241665de..e2945d6bc5 100644 --- a/dev-docs/bidders/jixie.md +++ b/dev-docs/bidders/jixie.md @@ -5,7 +5,7 @@ description: Prebid Jixie Bidder Adaptor pbjs: true pbs: true biddercode: jixie -bidder_supports_deals: false +deals_supported: false media_types: banner, video gdpr_supported: false --- diff --git a/dev-docs/bidders/kobler.md b/dev-docs/bidders/kobler.md index a93b1032b3..3a2951ce6d 100644 --- a/dev-docs/bidders/kobler.md +++ b/dev-docs/bidders/kobler.md @@ -5,8 +5,8 @@ description: Kobler Bidder Adapter biddercode: kobler pbjs: true media_types: banner -getFloor: true -bidder_supports_deals: true +floors_supported: true +deals_supported: true --- ### Note: diff --git a/dev-docs/bidders/logicad.md b/dev-docs/bidders/logicad.md index 57b554c012..f0c28c3825 100644 --- a/dev-docs/bidders/logicad.md +++ b/dev-docs/bidders/logicad.md @@ -6,7 +6,7 @@ pbjs: true pbs: true pbs_app_supported: true biddercode: logicad -bidder_supports_deals: false +deals_supported: false media_types: banner, native userIds: all gdpr_supported: false diff --git a/dev-docs/bidders/marsmedia.md b/dev-docs/bidders/marsmedia.md index a38b704088..8281cb732f 100644 --- a/dev-docs/bidders/marsmedia.md +++ b/dev-docs/bidders/marsmedia.md @@ -7,7 +7,7 @@ pbs: true biddercode: marsmedia media_types: video, banner gdpr_supported: true -getFloor: true +floors_supported: true schain_supported: true usp_supported: true coppa_supported: true diff --git a/dev-docs/bidders/mathildeads.md b/dev-docs/bidders/mathildeads.md index f4e21f84af..c7dbe99b03 100644 --- a/dev-docs/bidders/mathildeads.md +++ b/dev-docs/bidders/mathildeads.md @@ -17,4 +17,4 @@ pbs_app_supported: false {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |----------------|----------|----------------------------------------------------------|------------|-----------| -| `placementId` | required | Placement Id will be generated on MathildeAds Platform. | `'1234'` | `string` | \ No newline at end of file +| `placementId` | required | Placement Id will be generated on MathildeAds Platform. | `'1234'` | `string` | diff --git a/dev-docs/bidders/mediakeys.md b/dev-docs/bidders/mediakeys.md index 931809f02a..8c9a8d5c81 100644 --- a/dev-docs/bidders/mediakeys.md +++ b/dev-docs/bidders/mediakeys.md @@ -6,14 +6,14 @@ biddercode: mediakeys media_types: banner gvl_id: 498 pbjs: true -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true safeframes_ok: true userIds: all - +fpd_supported: true --- ### Note: diff --git a/dev-docs/bidders/medianet.md b/dev-docs/bidders/medianet.md index 73de20eb45..594e349bc7 100644 --- a/dev-docs/bidders/medianet.md +++ b/dev-docs/bidders/medianet.md @@ -11,7 +11,8 @@ prebid_member: true pbjs: true gvl_id: 142 schain_supported: true -getFloor: true +floors_supported: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/nobid.md b/dev-docs/bidders/nobid.md index 7f8cfd41dd..02d54e53c0 100644 --- a/dev-docs/bidders/nobid.md +++ b/dev-docs/bidders/nobid.md @@ -13,6 +13,7 @@ schain_supported: true coppa_supported: true userId: criteo, unifiedId, id5Id safeframes_ok: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/ogury.md b/dev-docs/bidders/ogury.md index 8b9865d7ab..a1ae8c5f42 100644 --- a/dev-docs/bidders/ogury.md +++ b/dev-docs/bidders/ogury.md @@ -8,11 +8,11 @@ gvl_id: 31 usp_supported: false coppa_supported: false schain_supported: false -getFloor: true +floors_supported: true dchain_supported: false media_types: banner safeframes_ok: false -bidder_supports_deals: false +deals_supported: false pbjs: true pbs: false prebid_member: false diff --git a/dev-docs/bidders/openx.md b/dev-docs/bidders/openx.md index 318a44406b..3adddca5d9 100644 --- a/dev-docs/bidders/openx.md +++ b/dev-docs/bidders/openx.md @@ -10,9 +10,10 @@ schain_supported: true gdpr_supported: true usp_supported: true coppa_supported: true -getFloor: true +floors_supported: true userIds: admixerId, amxId, britepoolId, criteo, dapId, deepintentId, dmdId, fabrickId, flocId, haloId, id5Id, identityLink, idxId, intentIqId, liveIntentId, lotamePanoramaId, merkleId, mwOpenLinkId, netId, nextrollId, novatiq, parrableId, pubCommonId, quantcastId, sharedId, tapadId, uid2, unifiedId, verizonMediaId, zeotapIdPlus prebid_member: true +fpd_supported: true gvl_id: 69 --- diff --git a/dev-docs/bidders/operaads.md b/dev-docs/bidders/operaads.md index b10965607c..49393966e3 100644 --- a/dev-docs/bidders/operaads.md +++ b/dev-docs/bidders/operaads.md @@ -11,7 +11,7 @@ schain_supported: true dchain_supported: false media_types: banner, video, native safeframes_ok: false -bidder_supports_deals: false +deals_supported: false pbjs: true pbs: true prebid_member: false @@ -28,4 +28,4 @@ If you have any questions regarding set up, please reach out to your account man |-------------|----------|------------------------|------------------|----------| | `placementId`| required | Placement Id | `s12345678` | `string` | | `endpointId`| required | Endpoint ID | `ep1234566` | `string` | -| `publisherId`| required | Publisher ID | `pub123456` | `string` | \ No newline at end of file +| `publisherId`| required | Publisher ID | `pub123456` | `string` | diff --git a/dev-docs/bidders/optout.md b/dev-docs/bidders/optout.md index dc558f411a..a4a0ebb62c 100644 --- a/dev-docs/bidders/optout.md +++ b/dev-docs/bidders/optout.md @@ -6,6 +6,7 @@ pbjs: true pbs: true biddercode: optout gdpr_supported: true +fpd_supported: true gvl_id: 227 --- diff --git a/dev-docs/bidders/ozone.md b/dev-docs/bidders/ozone.md index 8b59183e35..d576a29689 100644 --- a/dev-docs/bidders/ozone.md +++ b/dev-docs/bidders/ozone.md @@ -8,7 +8,8 @@ media_types: banner gdpr_supported: true userIds: criteo, id5Id, tdid, identityLink, liveIntentId, parrableId, pubCommonId, lotamePanoramaId, sharedId, fabrickId gvl_id: 524 -bidder_supports_deals: true +deals_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/pangle.md b/dev-docs/bidders/pangle.md index b7168ad589..6d4da22aea 100644 --- a/dev-docs/bidders/pangle.md +++ b/dev-docs/bidders/pangle.md @@ -8,7 +8,7 @@ coppa_supported: true schain_supported: false media_types: banner, video, native safeframes_ok: false -bidder_supports_deals: false +deals_supported: false pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/pixfuture.md b/dev-docs/bidders/pixfuture.md index c718b385dc..58159bb843 100644 --- a/dev-docs/bidders/pixfuture.md +++ b/dev-docs/bidders/pixfuture.md @@ -8,6 +8,7 @@ gdpr_supported: true prebid_member: false coppa_supported: true usp_supported: true +fpd_supported: true userIds: flocId, criteoId, unifiedId, id5Id, sharedId, identityLink, liveIntentId, fabrickId pbs: false pbjs: true diff --git a/dev-docs/bidders/proxistore.md b/dev-docs/bidders/proxistore.md index 172c18cc8b..1b111d30da 100644 --- a/dev-docs/bidders/proxistore.md +++ b/dev-docs/bidders/proxistore.md @@ -5,6 +5,7 @@ description: Prebid Proxistore Bidder Adapter pbjs: true biddercode: proxistore gdpr_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/pubgenius.md b/dev-docs/bidders/pubgenius.md index 23cb4e5fab..3085968a32 100644 --- a/dev-docs/bidders/pubgenius.md +++ b/dev-docs/bidders/pubgenius.md @@ -5,7 +5,7 @@ description: Prebid pubGENIUS Bidder Adaptor pbjs: true biddercode: pubgenius media_types: banner -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true schain_supported: true diff --git a/dev-docs/bidders/pubmatic.md b/dev-docs/bidders/pubmatic.md index 0265738a9f..f8cbcd0a12 100644 --- a/dev-docs/bidders/pubmatic.md +++ b/dev-docs/bidders/pubmatic.md @@ -8,13 +8,14 @@ gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true userIds: all prebid_member: true safeframes_ok: true pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 76 --- diff --git a/dev-docs/bidders/pwbid.md b/dev-docs/bidders/pwbid.md index 48c08c33b4..26715707a2 100644 --- a/dev-docs/bidders/pwbid.md +++ b/dev-docs/bidders/pwbid.md @@ -12,7 +12,7 @@ schain_supported: true prebid_member: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, pubProvidedId, sharedId, unifiedId tcf1_supported: true -getFloor: false +floors_supported: false gvl_id: 842 --- diff --git a/dev-docs/bidders/quantumdex.md b/dev-docs/bidders/quantumdex.md index 1119a035c4..bc03315282 100644 --- a/dev-docs/bidders/quantumdex.md +++ b/dev-docs/bidders/quantumdex.md @@ -10,8 +10,8 @@ gdpr_supported: true schain_supported: true usp_supported: true userIds: all -getFloor: true +floors_supported: true --- # Description -Quantumdex is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. \ No newline at end of file +Quantumdex is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. diff --git a/dev-docs/bidders/rise.md b/dev-docs/bidders/rise.md index b66676d156..01585fbb75 100644 --- a/dev-docs/bidders/rise.md +++ b/dev-docs/bidders/rise.md @@ -8,8 +8,9 @@ media_types: video schain_supported: true gdpr_supported: true usp_supported: true -getFloor: true +floors_supported: true userIds: all +fpd_supported: true gvl_id: 1043 --- diff --git a/dev-docs/bidders/roundel.md b/dev-docs/bidders/roundel.md index 61fa4d03b5..fed8e9a1f5 100644 --- a/dev-docs/bidders/roundel.md +++ b/dev-docs/bidders/roundel.md @@ -22,4 +22,4 @@ Roundel is an aliased bidder for Index Exchange and must be configured alongside ## Bid Params Bidder params for roundel follow the same structure as the Index Exchange bidder. Please reference configuration examples [here](/dev-docs/bidders/ix). - \ No newline at end of file + diff --git a/dev-docs/bidders/rubicon.md b/dev-docs/bidders/rubicon.md index bacf84b2f8..aa23cbfb44 100644 --- a/dev-docs/bidders/rubicon.md +++ b/dev-docs/bidders/rubicon.md @@ -7,15 +7,16 @@ gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true media_types: video userIds: all prebid_member: true safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 52 --- diff --git a/dev-docs/bidders/sharethrough.md b/dev-docs/bidders/sharethrough.md index f3f12448a7..9054f5e354 100644 --- a/dev-docs/bidders/sharethrough.md +++ b/dev-docs/bidders/sharethrough.md @@ -9,6 +9,7 @@ media_types: native schain_supported: true userIds: pubCommonId, unifiedId, identityLink, id5Id, sharedId, liveIntentId usp_supported: true +fpd_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/smaato.md b/dev-docs/bidders/smaato.md index 1959707e16..e8eab58473 100644 --- a/dev-docs/bidders/smaato.md +++ b/dev-docs/bidders/smaato.md @@ -13,7 +13,8 @@ pbjs: true pbs: true pbs_app_supported: true prebid_member: true -getFloor: true +floors_supported: true +fpd_supported: true --- ### Table of Contents diff --git a/dev-docs/bidders/smartadserver.md b/dev-docs/bidders/smartadserver.md index 94b852f4f0..12db35618c 100644 --- a/dev-docs/bidders/smartadserver.md +++ b/dev-docs/bidders/smartadserver.md @@ -10,7 +10,7 @@ usp_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId pbjs: true pbs: true -getFloor: true +floors_supported: true --- ### Registration diff --git a/dev-docs/bidders/smartyads.md b/dev-docs/bidders/smartyads.md index 3b0738bee3..671cf75ef0 100644 --- a/dev-docs/bidders/smartyads.md +++ b/dev-docs/bidders/smartyads.md @@ -9,7 +9,7 @@ coppa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/sonobi.md b/dev-docs/bidders/sonobi.md index a484ffb450..73d3b538ff 100644 --- a/dev-docs/bidders/sonobi.md +++ b/dev-docs/bidders/sonobi.md @@ -12,6 +12,7 @@ usp_supported: true coppa_supported: true schain_supported: true pbs_app_supported: true +fpd_supported: true --- ### Note: diff --git a/dev-docs/bidders/sortable.md b/dev-docs/bidders/sortable.md index 95621f2f67..2ac98e8707 100644 --- a/dev-docs/bidders/sortable.md +++ b/dev-docs/bidders/sortable.md @@ -10,7 +10,7 @@ usp_supported: true schain_supported: true prebid_member: true gvl_id: 145 -getFloor: true +floors_supported: true userIds: all --- diff --git a/dev-docs/bidders/sovrn.md b/dev-docs/bidders/sovrn.md index 3905d8c32e..98c383cbeb 100644 --- a/dev-docs/bidders/sovrn.md +++ b/dev-docs/bidders/sovrn.md @@ -11,7 +11,8 @@ userIds: all prebid_member: true schain_supported: true gvl_id: 13 -getFloor: true +floors_supported: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/spotx.md b/dev-docs/bidders/spotx.md index b52eef3265..db387ff88f 100644 --- a/dev-docs/bidders/spotx.md +++ b/dev-docs/bidders/spotx.md @@ -12,7 +12,7 @@ usp_supported: true safeframes_ok: false pbjs: true gvl_id: 165 -getFloor: true +floors_supported: true pbjs_version_notes: avoid 4.31-4.35 --- diff --git a/dev-docs/bidders/sspBC.md b/dev-docs/bidders/sspBC.md index 48c9ffa1e0..18889255a4 100644 --- a/dev-docs/bidders/sspBC.md +++ b/dev-docs/bidders/sspBC.md @@ -5,8 +5,9 @@ description: Prebid sspBC Bidder Adaptor pbjs: true biddercode: sspBC media_types: banner, video, native -getFloor: true +floors_supported: true gdpr_supported: true +fpd_supported: true gvl_id: 676 --- @@ -21,4 +22,4 @@ gvl_id: 676 | `publisherId` | optional | publisher id | `'728'` | `string` | | `domain` | optional | site domain | `'somesite.com'` | `string` | | `page` | optional | page url | `'somesite.com/index.html'` | `string` | -| `tmax` | optional | tmax for server connection | `400` | `integer` | \ No newline at end of file +| `tmax` | optional | tmax for server connection | `400` | `integer` | diff --git a/dev-docs/bidders/stroeerCore.md b/dev-docs/bidders/stroeerCore.md index 9c0bae38c6..307ccd4b25 100644 --- a/dev-docs/bidders/stroeerCore.md +++ b/dev-docs/bidders/stroeerCore.md @@ -13,7 +13,7 @@ prebid_member: false pbjs: true pbs: false gvl_id: 136 -bidder_supports_deals: true +deals_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/targetvideo.md b/dev-docs/bidders/targetvideo.md index 1254581744..945d941235 100644 --- a/dev-docs/bidders/targetvideo.md +++ b/dev-docs/bidders/targetvideo.md @@ -10,7 +10,7 @@ userIds: criteo, unifiedId, netId, identityLink, flocId, uid2 schain_supported: true coppa_supported: true usp_supported: true -getFloor: true +floors_supported: true pbjs: true pbs: true gvl_id: 32 diff --git a/dev-docs/bidders/teads.md b/dev-docs/bidders/teads.md index ffa3ca3629..905567f301 100644 --- a/dev-docs/bidders/teads.md +++ b/dev-docs/bidders/teads.md @@ -10,7 +10,7 @@ schain_supported: true userIds: flocId, uid2Id media_types: banner, video gvl_id: 132 -bidder_supports_deals: true +deals_supported: true --- ### Note: diff --git a/dev-docs/bidders/triplelift.md b/dev-docs/bidders/triplelift.md index dfc94cf0e9..24f4b522f3 100644 --- a/dev-docs/bidders/triplelift.md +++ b/dev-docs/bidders/triplelift.md @@ -7,15 +7,16 @@ gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true media_types: banner, video userIds: criteo, identityLink, unifiedId, pubCommonId prebid_member: true safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 28 --- diff --git a/dev-docs/bidders/triplelift_native.md b/dev-docs/bidders/triplelift_native.md index 09829e00cf..8a8c2e00af 100644 --- a/dev-docs/bidders/triplelift_native.md +++ b/dev-docs/bidders/triplelift_native.md @@ -8,12 +8,12 @@ tcf2_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true media_types: banner, video, native userIds: criteo, identityLink, unifiedId prebid_member: true safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/trustx.md b/dev-docs/bidders/trustx.md index 7f530c9f1a..d0d938c60d 100644 --- a/dev-docs/bidders/trustx.md +++ b/dev-docs/bidders/trustx.md @@ -8,6 +8,7 @@ biddercode: trustx media_types: banner, video gdpr_supported: true usp_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/ucfunnel.md b/dev-docs/bidders/ucfunnel.md index ebdfcd4052..a825957ad8 100644 --- a/dev-docs/bidders/ucfunnel.md +++ b/dev-docs/bidders/ucfunnel.md @@ -60,4 +60,4 @@ Sizes set in the `adUnit` object will also apply to the ucfunnel bid requests. | `adunitid` | required | ID for ad unit | | `string` | | `partnerid` | required | ID for partner | | `string` | -``` \ No newline at end of file +``` diff --git a/dev-docs/bidders/unruly.md b/dev-docs/bidders/unruly.md index 855719bd4c..89bdd181cd 100644 --- a/dev-docs/bidders/unruly.md +++ b/dev-docs/bidders/unruly.md @@ -7,12 +7,12 @@ gdpr_supported: true usp_supported: true coppa_supported: false schain_supported: true -getFloor: true +floors_supported: true media_types: banner, video userIds: all prebid_member: false safeframes_ok: check with bidder -bidder_supports_deals: check with bidder +deals_supported: check with bidder pbjs: true pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/valueimpression.md b/dev-docs/bidders/valueimpression.md index 75e9352402..38b86c78ca 100644 --- a/dev-docs/bidders/valueimpression.md +++ b/dev-docs/bidders/valueimpression.md @@ -10,9 +10,9 @@ gdpr_supported: true schain_supported: true usp_supported: true userIds: all -getFloor: true +floors_supported: true pbs: true --- # Description -Valueimpression is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. \ No newline at end of file +Valueimpression is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. diff --git a/dev-docs/bidders/visx.md b/dev-docs/bidders/visx.md index 9fdb7cb190..f39b0db05d 100644 --- a/dev-docs/bidders/visx.md +++ b/dev-docs/bidders/visx.md @@ -9,7 +9,7 @@ gvl_id: 154 schain_supported: true userIds: id5Id, unifiedId media_types: banner, video -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/winr.md b/dev-docs/bidders/winr.md index ba15ca619d..38a0bc7a59 100644 --- a/dev-docs/bidders/winr.md +++ b/dev-docs/bidders/winr.md @@ -9,9 +9,10 @@ userIds: criteo, unifiedId, netId, identityLink, flocId, uid2 schain_supported: true coppa_supported: true usp_supported: true -getFloor: true +floors_supported: true pbjs: true safeframes_ok: false +fpd_supported: true --- ### Note: diff --git a/dev-docs/bidders/yieldmo.md b/dev-docs/bidders/yieldmo.md index 86998b1c85..9ec5b17793 100644 --- a/dev-docs/bidders/yieldmo.md +++ b/dev-docs/bidders/yieldmo.md @@ -9,6 +9,7 @@ gdpr_supported: true usp_supported: true schain_supported: true prebid_member: true +fpd_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/zeta_global.md b/dev-docs/bidders/zeta_global.md index 1167b31a9c..08a51def28 100644 --- a/dev-docs/bidders/zeta_global.md +++ b/dev-docs/bidders/zeta_global.md @@ -4,7 +4,7 @@ title: Zeta Global description: Zeta Global Prebid Bidder Adapter pbjs: true biddercode: zeta_global -bidder_supports_deals: false +deals_supported: false media_types: banner gdpr_supported: true tcf2_supported: true diff --git a/dev-docs/bidders/zeta_global_ssp.md b/dev-docs/bidders/zeta_global_ssp.md index 74c092c0fb..1a375294cc 100644 --- a/dev-docs/bidders/zeta_global_ssp.md +++ b/dev-docs/bidders/zeta_global_ssp.md @@ -4,13 +4,14 @@ title: Zeta Global Ssp description: Zeta Global Ssp Prebid Bidder Adapter pbjs: true biddercode: zeta_global_ssp -bidder_supports_deals: false +deals_supported: false media_types: banner gdpr_supported: true usp_supported: true coppa_supported: true userIds: all prebid_member: true +fpd_supported: true gvl_id: 833 --- diff --git a/dev-docs/pbs-bidders.md b/dev-docs/pbs-bidders.md index 491c6d70a2..d9b5ccee80 100644 --- a/dev-docs/pbs-bidders.md +++ b/dev-docs/pbs-bidders.md @@ -49,8 +49,9 @@ You can also download the full CSV | **User IDs** | {% if page.userIds and page.userIds != '' %}{{page.userIds}}{% else %}none{% endif %} | **USP/CCPA Support** | {% if page.usp_supported == true %}yes{% else %}no{% endif %} | | **Supply Chain Support** | {% if page.schain_supported == true %}yes{% else %}no{% endif %} | **COPPA Support** | {% if page.coppa_supported == true %}yes{% else %}no{% endif %} | | **Demand Chain Support** | {% if page.dchain_supported == true %}yes{% else %}no{% endif %} | **Safeframes OK** | {% if page.safeframes_ok and page.safeframes_ok == false %}no{% elsif page.safeframes_ok and page.safeframes_ok == true %}yes{% else %}check with bidder{% endif %} | -| **Supports Deals** | {% if page.bidder_supports_deals and page.bidder_supports_deals == false %}no{% else %}yes{% endif %} | **Prebid.js Adapter** | {% if page.pbjs == true %}yes{% else %}no{% endif %} | +| **Supports Deals** | {% if page.deals_supported and page.deals_supported == false %}no{% else %}yes{% endif %} | **Prebid.js Adapter** | {% if page.pbjs == true %}yes{% else %}no{% endif %} | | **Mobile App Support** | {% if page.pbs_app_supported and page.pbs_app_supported == false %}no{% elsif page.pbs_app_supported and page.pbs_app_supported == true %}yes{% else %}check with bidder{% endif %} | **Prebid Server Adapter** | yes | +| **Floors Support** | {% if page.floors_supported == false %}no{% elsif page.floors_supported == true %}yes{% else %}check with bidder{% endif %} | **First Party Data Support** | {% if page.fpd_supported == true %}yes{% elsif page.fpd_supported == false %}no{% else %}check with bidder{% endif %} |

    "Send All Bids" Ad Server Keys

    diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md index 3acc766ae2..83e4e47a06 100644 --- a/prebid-server/developers/add-new-bidder-go.md +++ b/prebid-server/developers/add-new-bidder-go.md @@ -1166,7 +1166,9 @@ dchain_supported: true/false userId: media_types: banner, video, audio, native safeframes_ok: true/false -bidder_supports_deals: true/false +deals_supported: true/false +floors_supported: true/false +fpd_supported: true/false pbjs: true/false pbs: true/false pbs_app_supported: true/false @@ -1196,7 +1198,9 @@ Notes on the metadata fields: - If you support adding a demand chain on the bid response, add `dchain_supported: true`. Default is false. - If your bidder doesn't work well with safeframed creatives, add `safeframes_ok: false`. This will alert publishers to not use safeframed creatives when creating the ad server entries for your bidder. No default. - If your bidder supports mobile apps, set `pbs_app_supported: true`. No default value. -- If your bidder supports deals, set `bidder_supports_deals: true`. No default value. +- If your bidder supports deals, set `deals_supported: true`. No default value. +- If your bidder supports floors, set `floors_supported: true`. No default value. +- If your bidder supports first party data, set `fpd_supported: true`. No default value. - If you're a member of Prebid.org, add `prebid_member: true`. Default is false. diff --git a/prebid-server/developers/add-new-bidder-java.md b/prebid-server/developers/add-new-bidder-java.md index 99c3d2a78f..61471a929d 100644 --- a/prebid-server/developers/add-new-bidder-java.md +++ b/prebid-server/developers/add-new-bidder-java.md @@ -1168,7 +1168,9 @@ dchain_supported: true/false userId: media_types: banner, video, audio, native safeframes_ok: true/false -bidder_supports_deals: true/false +deals_supported: true/false +floors_supported: true/false +fpd_supported: true/false pbjs: true/false pbs: true/false pbs_app_supported: true/false @@ -1198,7 +1200,9 @@ Notes on the metadata fields: - If you support adding a demand chain on the bid response, add `dchain_supported: true`. Default is false. - If your bidder doesn't work well with safeframed creatives, add `safeframes_ok: false`. This will alert publishers to not use safeframed creatives when creating the ad server entries for your bidder. No default. - If your bidder supports mobile apps, set `pbs_app_supported`: true. No default value. -- If your bidder supports deals, set `bidder_supports_deals: true`. No default value. +- If your bidder supports deals, set `deals_supported: true`. No default value. +- If your bidder supports floors, set `floors_supported: true`. No default value. +- If your bidder supports first party data, set `fpd_supported: true`. No default value. - If you're a member of Prebid.org, add `prebid_member: true`. Default is false. From 325c9f235b257d4db0af51cda1249e4926cf0d0e Mon Sep 17 00:00:00 2001 From: Mikael Lundin Date: Wed, 6 Oct 2021 22:00:05 +0200 Subject: [PATCH 501/536] Updated bidder: Adnuntius (#3312) * Adnuntius Bidder documentation added * Fixed targeting text. * Added documentation for passing segments in the bidder config. * changed the way to send user segments to bidder. * Moved string to type + examples. * Adnuntius update for prebid server. --- dev-docs/bidders/adnuntius.md | 57 ++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/dev-docs/bidders/adnuntius.md b/dev-docs/bidders/adnuntius.md index 37b643c393..08603cfcbe 100644 --- a/dev-docs/bidders/adnuntius.md +++ b/dev-docs/bidders/adnuntius.md @@ -3,10 +3,12 @@ layout: bidder title: Adnuntius description: Prebid Adnuntius Bidder Adaptor pbjs: true +pbs: true biddercode: adnuntius media_types: banner gdpr_supported: true fpd_supported: true +gvl_id: 855 --- ### Bid Params @@ -54,23 +56,44 @@ Here's an example of sending targeting information about categories to adnuntius There's an option to send segment id in the bidder config that will be picked up and sent to the ad server. Below is an example on how to do this: ``` +pbjs.setBidderConfig({ + bidders: ['adnuntius', 'bidderB'], + config: { + ortb2: { + user: { + data: [{ + name: "adnuntius", + segment: [ + { id: "1" }, + { id: "2" } + ] + }] + } + } + } +}); +``` + +### Prebid Server Test Request - pbjs.setBidderConfig({ - bidders: ['adnuntius', 'bidderB'], - config: { - ortb2: { - user: { - data: [{ - name: "adnuntius", - segment: [ - { id: "1" }, - { id: "2" } - ] - }] - } - } - } - }); +The following test parameters can be used to verify that Prebid Server is working properly with the server-side Adnuntius adapter. the `auId` below will not return a creative. Please substitute it with your own. -´´´ +``` +"imp": [{ + "id": "impression-id", + "banner": { + "format": [{ + "w": 980, + "h": 240 + }, { + "w": 980, + "h": 360 + }] + }, + "ext": { + "adnuntius": { + "auId": "abc123" + } + } +}] ``` From 1174621dbc456ba79a44d4d2de4055fcab547f33 Mon Sep 17 00:00:00 2001 From: Mike Chowla Date: Thu, 7 Oct 2021 07:36:26 -0700 Subject: [PATCH 502/536] Added info that custom price granularity is needed when using currrencies where the nominal CPM range is greatly differnt than USD (#3326) --- prebid-server/features/pbs-currency.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/prebid-server/features/pbs-currency.md b/prebid-server/features/pbs-currency.md index 67cc607f0b..347abf63e6 100644 --- a/prebid-server/features/pbs-currency.md +++ b/prebid-server/features/pbs-currency.md @@ -104,3 +104,9 @@ Note that the `usepbsrates` flag allows you to define which rates to use when PB A dedicated endpoint on the Admin port will allow you to see what's happening within the currency converter. See [currency rates endpoint](/prebid-server/endpoints/pbs-endpoint-admin.html) for more details. + +## Price Granularity + +When converting to a currency where the typical nominal CPMs are much different than USD such as JPY or INR, use a custom price granularity that reflects the typical range of CPMs in that currency. + +The predefined price granularities such as `medium` or `dense` will not be correctly scaled and thus almost every bid will end in the top bucket. Unlike Prebid.js, Prebid Server does not support `granularityMultiplier` to scale granularities so a custom price granularity needs to be used. \ No newline at end of file From b3fdabf310f99331fc0a99e4b68bb13849a7696c Mon Sep 17 00:00:00 2001 From: Tiago Peczenyj Date: Sat, 9 Oct 2021 05:01:36 +0200 Subject: [PATCH 503/536] fix weborama conf example as in Prebid.js/modules/weboramaRtdProvider.md (#3330) * fix weborama conf example as in Prebid.js/modules/weboramaRtdProvider.md * fix closing parentesis * fix ponctuation --- dev-docs/modules/weboramaRtdProvider.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/modules/weboramaRtdProvider.md b/dev-docs/modules/weboramaRtdProvider.md index b4b1e632c9..8a686b1708 100644 --- a/dev-docs/modules/weboramaRtdProvider.md +++ b/dev-docs/modules/weboramaRtdProvider.md @@ -43,7 +43,7 @@ pbjs.setConfig( auctionDelay: 1000, dataProviders: [ { - name: "WeboramaRTDModule", + name: "weborama", waitForIt: true, params: { token: "" @@ -52,7 +52,7 @@ pbjs.setConfig( ] } ... -} +); ``` ### Parameter Descriptions for the Weborama Configuration Section From eb5d9f67f2ac3ebd1e0678263f1d323d81a55bfe Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Fri, 8 Oct 2021 20:02:29 -0700 Subject: [PATCH 504/536] Ad Generation Bid Adapter: update prebid 5 complia (#3329) per pr -> https://github.com/prebid/Prebid.js/pull/7150 (reference pr https://github.com/prebid/Prebid.js/pull/7533 as well) --- dev-docs/bidders/adgeneration.md | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-docs/bidders/adgeneration.md b/dev-docs/bidders/adgeneration.md index 812cfbecd7..8ff03a0902 100644 --- a/dev-docs/bidders/adgeneration.md +++ b/dev-docs/bidders/adgeneration.md @@ -6,7 +6,6 @@ pbjs: true pbs: true biddercode: adgeneration media_types: native -pbjs_version_notes: not in 5.x --- From 38de32ffa2421bf5f867f87b89467c51ea4b2a8a Mon Sep 17 00:00:00 2001 From: thuyhq <61451682+thuyhq@users.noreply.github.com> Date: Tue, 12 Oct 2021 11:39:50 +0700 Subject: [PATCH 505/536] Update apacdex.md (#3332) I was missing a newline in the apacdex.md file. This causes it to display falsely on https://docs.prebid.org/dev-docs/bidders/apacdex#apacdex-bid-params --- dev-docs/bidders/apacdex.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/apacdex.md b/dev-docs/bidders/apacdex.md index 9fd5058aa6..a7a7da140b 100644 --- a/dev-docs/bidders/apacdex.md +++ b/dev-docs/bidders/apacdex.md @@ -32,6 +32,7 @@ floors_supported: true | `siteId`* | required | Publisher site ID from Apacdex | `'apacdex1234'` | `string` | | `floorPrice` | optional | CPM bidfloor in USD | `0.03` | `float` | | `geo` | optional | GEO data of device. See [Geo Object](#apacdex-geo-object) for details. | `{"lat":17.98928,"lon":99.7741712,"accuracy":20}` | `object` | + (*) Please do not use `placementId` and `siteId` at the same time.
    From d46c1ad481b72ac237442d906d41c64eb421e133 Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 12 Oct 2021 10:28:21 -0400 Subject: [PATCH 506/536] fixing PBJS adapter example (#3339) --- dev-docs/bidder-adaptor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index ba6b96ced5..b7a355ebb8 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -993,8 +993,8 @@ export const spec = { ad: CREATIVE_BODY }; bidResponses.push(bidResponse); + return bidResponses; }; - return bidResponses; }, /** From 46913c1d78db0ad37bfbfbf054a1c32518133fb2 Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 12 Oct 2021 10:50:54 -0400 Subject: [PATCH 507/536] added PBS config faq entries (#3340) --- faq/prebid-server-faq.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/faq/prebid-server-faq.md b/faq/prebid-server-faq.md index 897921131b..8ae4ce15de 100644 --- a/faq/prebid-server-faq.md +++ b/faq/prebid-server-faq.md @@ -168,3 +168,37 @@ Another way is to [register for our host company mailing list](/prebid-server/ho Prebid Server is not a full-fledged SSP. Any DSP bid adapters should keep this in mind when it comes to assuming SSP functionality like resolving OpenRTB macros. We debated building this functionality into PBS, but realized it would take precious milliseconds away from the overall header bidding auction to scan kilobytes of bidder creatives for the 9 different OpenRTB macros. Since so few bidders require this functionality, it makes sense to have those adapters do it themselves. If an adapter doesn't resolve its own macros, AUCTION_PRICE will eventually get resolved by the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative), but by then the bid price will be in the ad server currency and quantized by the price granularity. This will likely cause reporting discrepancies. + +## Does Prebid Server support region-specific endpoints for bidders? + +Yes. This is handled by the PBS host company in their datacenter config. +Bidders that want to make use of region-specific endpoints will need to work +with each PBS host company: + +- determine which regions the host company supports +- map the regions to the bidder's endpoints +- the host company overrides the bidder's default auction endpoint when they deploy the configuration for each region. + +We recognize that it's inconvenient for bidders to be required to have this +conversation with each host company, but there's really not a better way +in an open source project. Any number of companies may choose to host +PBS and we cannot constrain them into a defined set of regions. + +## Can bidder endpoints differ by publisher? + +You may not use an endpoint domain as a bidder parameter. Prebid Server is not +an open proxy. If absolutely necessary, you may specify a portion of the +domain as a parameter to support geo regions or account specific servers. +However, this is discouraged and may degrade the performance of your adapter +since the server needs to maintain more outgoing connections. Host companies +may choose to disable your adapter if it uses a dynamically configured domain. + +e.g. this config is not allowed because the entire domain name is a variable: + +``` +endpoint: "https://{host}/path" +``` +but this would be ok: +``` +endpoint: "https://{host}.example.com/path" +``` From 9426dad027df17779ea9920b7db0d9e947d0b457 Mon Sep 17 00:00:00 2001 From: Viktor Davidiants <57586844+vdavidiants@users.noreply.github.com> Date: Wed, 13 Oct 2021 21:46:10 +0300 Subject: [PATCH 508/536] Change documentation in order to AdPartner Adapter (#3328) --- dev-docs/bidders/adpartner.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidders/adpartner.md b/dev-docs/bidders/adpartner.md index 097e67e26a..ead43860ca 100644 --- a/dev-docs/bidders/adpartner.md +++ b/dev-docs/bidders/adpartner.md @@ -10,6 +10,6 @@ media_types: banner ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|----------|----------|-------------|----------------------|-----------| -| `unitId` | required | Unit ID. | `5809` | `integer` | +| Name | Scope | Description | Example | Type | +|-------------|----------|-------------|----------------------|-----------| +| `partnerId` | required | Partner ID. | `5809` | `integer` | From 16a8386b4605ccdd1f962c2a11702237a6a9ca87 Mon Sep 17 00:00:00 2001 From: Luigi Sayson <48766825+luigi-sayson@users.noreply.github.com> Date: Thu, 14 Oct 2021 03:37:37 -0700 Subject: [PATCH 509/536] Fix timeout module doc missing link (#3345) * Fix timeout rtd module doc * Add display_name to sample doc header --- dev-docs/add-rtd-submodule.md | 1 + dev-docs/modules/timeoutRtdProvider.md | 1 + 2 files changed, 2 insertions(+) diff --git a/dev-docs/add-rtd-submodule.md b/dev-docs/add-rtd-submodule.md index f025d6f5ad..b965c92cf9 100644 --- a/dev-docs/add-rtd-submodule.md +++ b/dev-docs/add-rtd-submodule.md @@ -280,6 +280,7 @@ Once everything looks good, submit the code, tests, and markdown as a pull reque --- layout: page_v2 title: Example Module + display_name: Example description: Useful statement for what this does page_type: module module_type: rtd diff --git a/dev-docs/modules/timeoutRtdProvider.md b/dev-docs/modules/timeoutRtdProvider.md index 969b9311aa..7c22f6cec0 100644 --- a/dev-docs/modules/timeoutRtdProvider.md +++ b/dev-docs/modules/timeoutRtdProvider.md @@ -1,6 +1,7 @@ --- layout: page_v2 title: Timeout Rtd Module +display_name: Timeout RTD description: Module for managing timeouts in real time page_type: module module_type: rtd From 165d53d2ff931807fd97d26da66714d57af81f91 Mon Sep 17 00:00:00 2001 From: Tiago Peczenyj Date: Thu, 14 Oct 2021 12:40:06 +0200 Subject: [PATCH 510/536] weborama RTD submodule fix typo in example conf (#3337) * fix typo in example conf * fix flag --- dev-docs/modules/weboramaRtdProvider.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dev-docs/modules/weboramaRtdProvider.md b/dev-docs/modules/weboramaRtdProvider.md index 8a686b1708..9fc5ec5e10 100644 --- a/dev-docs/modules/weboramaRtdProvider.md +++ b/dev-docs/modules/weboramaRtdProvider.md @@ -46,7 +46,9 @@ pbjs.setConfig( name: "weborama", waitForIt: true, params: { - token: "" + weboCtxConf: { + token: "" + } } } ] From 6ab15614356e8e7d8c7f4ab866f976d89520daa2 Mon Sep 17 00:00:00 2001 From: Adam Browning <19834421+adam-browning@users.noreply.github.com> Date: Fri, 15 Oct 2021 11:38:40 +0300 Subject: [PATCH 511/536] Yahoo SSP Bid Adapter (#3311) * yahoossp update * yahoossp update * legacy adapter messages * remove yssp.md * change inventoryId to siteId * formatting --- dev-docs/bidders/aol.md | 13 +++++++++++++ dev-docs/bidders/oneVideo.md | 14 ++++++++++++++ dev-docs/bidders/onedisplay.md | 12 ++++++++++++ dev-docs/bidders/onemobile.md | 12 ++++++++++++ dev-docs/bidders/yahoossp.md | 34 ++++++++++++++++++++++++++++++---- dev-docs/bidders/yssp.md | 18 ------------------ 6 files changed, 81 insertions(+), 22 deletions(-) delete mode 100644 dev-docs/bidders/yssp.md diff --git a/dev-docs/bidders/aol.md b/dev-docs/bidders/aol.md index a7b454b426..fb266cb690 100644 --- a/dev-docs/bidders/aol.md +++ b/dev-docs/bidders/aol.md @@ -10,6 +10,19 @@ gvl_id: 25 userIds: verizonMediaId --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `aol` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. + +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `oneVideo` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP ### Note: This adapter allows use of both ONE by AOL: Display and ONE by AOL: Mobile platforms. In order to differentiate these sources of demand in your ad server and reporting, you may use the optional `onedisplay` and `onemobile` adapter aliases instead. diff --git a/dev-docs/bidders/oneVideo.md b/dev-docs/bidders/oneVideo.md index d77c059d67..4b50d23c55 100644 --- a/dev-docs/bidders/oneVideo.md +++ b/dev-docs/bidders/oneVideo.md @@ -9,6 +9,20 @@ gdpr_supported: true usp_supported: true --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `oneVideo` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. + +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `oneVideo` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP + ### Note: One Video adapter only supports video ads. diff --git a/dev-docs/bidders/onedisplay.md b/dev-docs/bidders/onedisplay.md index d7d4002b83..e0749df141 100644 --- a/dev-docs/bidders/onedisplay.md +++ b/dev-docs/bidders/onedisplay.md @@ -6,7 +6,19 @@ pbjs: true biddercode: onedisplay aliasCode : aol --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `onedisplay` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `onedisplay` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP ### Bid Params diff --git a/dev-docs/bidders/onemobile.md b/dev-docs/bidders/onemobile.md index c830acf841..aabc65de76 100644 --- a/dev-docs/bidders/onemobile.md +++ b/dev-docs/bidders/onemobile.md @@ -7,7 +7,19 @@ biddercode: onemobile aliasCode : aol --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `onemobile` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `onemobile` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP ### Bid Params diff --git a/dev-docs/bidders/yahoossp.md b/dev-docs/bidders/yahoossp.md index 3b3fd3805e..4f6324795b 100644 --- a/dev-docs/bidders/yahoossp.md +++ b/dev-docs/bidders/yahoossp.md @@ -1,18 +1,44 @@ --- layout: bidder -title: YahooSSP +title: Yahoo SSP +description: Yahoo SSP Bid Adapter pbs: true -media_types: banner +pbjs: true +media_types: banner, video biddercode: yahoossp prebid_member: true gdpr_supported: true +usp_supported: true +schain_supported: true +coppa_supported: true gvl_id: 25 +userIds: All --- ### Bid Params +The 'yahoossp' bid adapter supports 2 integration types: +1. **dcn & pos** (Site/App & Position explicit targeting) - For legacy "aol", "oneMobile" adapter partners/publishers. +2. **pubId** (Publisher ID) - For New partners/publishers joining Yahoo SSP and legacy "oneVideo" partners/publishers migrating to the Yahoo SSP. + + +**Important:** pubId integration (option 2) is only possible when your Seller account is setup for "Inventory Mapping", Please contact your Account Manager to verify your setup. + +#### DCN & POS Integration Parameters +For legacy "aol", "oneMobile" adapter partners/publishers. + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------|----------|------------------------|---------|----------| +| dcn | Required | Site ID provided by Yahoo SSP | 'site1' | string | +| pos | Required | Placement ID provided by Yahoo SSP | 'placement1' | string | + +#### PubId Integration Parameters +For New partners/publishers joining Yahoo SSP +floors_supported: true and legacy "oneVideo" partners/publishers migrating to the Yahoo SSP. {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |------------|----------|------------------------|---------|----------| -| dcn | required | Site ID provided by One Mobile | 'site1' | string | -| pos | required | Placement ID | 'placement1' | string | +| pubId | Required | Your Publisher External ID provided by Yahoo SSP | 'DemoPublisher' | string | +| siteId | Optional | Ability to target a specific Site using an External ID provided by Yahoo SSP | '1234567' | string | +| placementId | Optional | Ability to target a specific Placement using an External ID provided by Yahoo SSP | 'header' | string | diff --git a/dev-docs/bidders/yssp.md b/dev-docs/bidders/yssp.md deleted file mode 100644 index 58be3bee3c..0000000000 --- a/dev-docs/bidders/yssp.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: bidder -title: YSSP -pbs: true -media_types: banner -biddercode: yssp -prebid_member: true -gdpr_supported: true -gvl_id: 25 ---- - -### Bid Params - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|------------|----------|------------------------|---------|----------| -| dcn | required | Site ID provided by One Mobile | 'site1' | string | -| pos | required | Placement ID | 'placement1' | string | From db91e282c3e4544e0d6eaa1083994e311e5babd0 Mon Sep 17 00:00:00 2001 From: Denis Logachov Date: Fri, 15 Oct 2021 17:47:05 +0300 Subject: [PATCH 512/536] Adkernel: documenting turktelekom alias (#3341) * Adkernel: documenting turktelekom alias Documenting https://github.com/prebid/Prebid.js/pull/7559 * Update bidder traits --- dev-docs/bidders/turktelekom.md | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/dev-docs/bidders/turktelekom.md b/dev-docs/bidders/turktelekom.md index a6b2395bca..d845c7e845 100644 --- a/dev-docs/bidders/turktelekom.md +++ b/dev-docs/bidders/turktelekom.md @@ -1,19 +1,29 @@ --- layout: bidder title: Türk Telekom -description: Prebid Türk Telekom Bidder Adaptor +description: Türk Telekom Bidder Adaptor pbjs: true +pbs: true biddercode: turktelekom -media_types: banner, video +aliasCode : adkernel +media_types: banner, native, video gdpr_supported: true -pbjs_version_notes: not in 5.x +usp_supported: true +coppa_supported: true +pbs_app_supported: true +schain_supported: true +pbjs_version_notes: v5.18+ +safeframes_ok: true --- +### Note: + +The Türk Telekom bidding adapter requires setup and approval before implementation. Please reach out to for more details. ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|-----------| -| `uid` | required | Represents the Türk Telekom bidder system Ad Slot ID associated with the respective div id from the site page. | `42` | `integer` | -| `priceType` | optional | Can take the values `gross` or `net`, default value is `net`. Net represents the header bid price with the Türk Telekom header bidder margin already extracted. Gross price does contain the Türk Telekom bidder margin within. | `'gross'` | `string` | +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | RTB host | `'cpm.programattik.com'` | `string` | +| `zoneId` | required | Zone Id | 30164 | `integer` | From 92b810d0f3e20eca82f2e961d1db4bbbf6b603f0 Mon Sep 17 00:00:00 2001 From: natexo-technical-team <91968830+natexo-technical-team@users.noreply.github.com> Date: Fri, 15 Oct 2021 16:49:04 +0200 Subject: [PATCH 513/536] Create talkads.md (#3323) * Create talkads.md * Update talkads.md * Add test feature with fake test bid --- dev-docs/bidders/talkads.md | 74 +++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 dev-docs/bidders/talkads.md diff --git a/dev-docs/bidders/talkads.md b/dev-docs/bidders/talkads.md new file mode 100644 index 0000000000..8a8dfe4419 --- /dev/null +++ b/dev-docs/bidders/talkads.md @@ -0,0 +1,74 @@ +--- +layout: bidder +title: Talkads +description: Talkads Prebid Bidder Adapter +biddercode: talkads +gdpr_supported: true +gvl_id: +usp_supported: false +coppa_supported: false +media_types: banner, native +safeframes_ok: false +pbjs: true +pbs: false +prebid_member: false +pbjs_version_notes: v4.35 and later +--- + +### Registration + +The Talkads Adapter requires setup before beginning. Please contact us at www.natexo.com and register to the publisher side. + +### Configuration + +#### Prebid.js + +The TalkAds adapter does not work without setting the correct tag ID and bidder URL. +These parameters are totally specific to each Publisher, you will receive them when contacting us. + +### Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|--------------|----------|----------------------------------------------------------------|---------------------------------------------------------|----------------| +| `tag_id` | required | The publisher tag id given by the Natexo team | `99` | `number` | +| `bidder_url` | required | The publisher bidder url given by the Natexo team | `'https://test.natexo-programmatic.com/tad/tag/prebid'` | `string` | + +#### Native example + +``` +var adUnits = [ + code: '/19968336/prebid_native_example_1', + mediaTypes: { + native: { + } + }, + bids: [{ + bidder: 'talkads', + params: { + tag_id: 0, + bidder_url: 'https://d.natexo-programmatic.com/tad/tag/testbid', + }, + }] +]; +``` + +#### Banner example +``` +var adUnits = [ + code: '/19968336/prebid_display_example_1', + mediaTypes: { + banner: { + sizes: [[300, 250]] + } + }, + bids: [{ + bidder: 'talkads', + params: { + tag_id: 0, + bidder_url: 'https://d.natexo-programmatic.com/tad/tag/testbid', + }, + }] +]; +``` From bd138dadab3049bc6d0fed76f9ef0f8edea9db65 Mon Sep 17 00:00:00 2001 From: allanjun Date: Mon, 18 Oct 2021 19:39:45 +0200 Subject: [PATCH 514/536] Criteo: update instructions for Native and Floor module currency (#3350) Co-authored-by: Allan Jun Hirata --- dev-docs/bidders/criteo.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/dev-docs/bidders/criteo.md b/dev-docs/bidders/criteo.md index 25221baaae..37bdc717a4 100644 --- a/dev-docs/bidders/criteo.md +++ b/dev-docs/bidders/criteo.md @@ -16,12 +16,8 @@ gvl_id: 91 --- ### Notes {: .alert.alert-warning :} -For Native Ads, in order to avoid further decoding issues of special characters, the assets need to be sent as placeholders. -That means, `sendId: true` becomes mandatory for all fields receiving URLs, notably: `icon`, `image`, `clickUrl`, `privacyLink`, `privacyIcon`. +*Criteo currently only supports getFloor if floors are in USD and if the publisher is enabling the Criteo Publisher Tag external js call. -*Criteo currently only supports getFloor if floors are in Euros and if the publisher is enabling the Criteo Publisher Tag external js call. - -See [Sending Asset Placeholders]({{site.baseurl}}/dev-docs/show-native-ads.html#sending-asset-placeholders). {: .alert.alert-warning :} Prebid-Server support is on alpha test and is currently a non-finished product. Activation requires setup and approval before beginning. Please reach out to your account manager or publishers@criteo.com for more details. From 3eb1a3976a224265333d4fbacbb303173ea575a3 Mon Sep 17 00:00:00 2001 From: bretg Date: Wed, 20 Oct 2021 15:42:23 -0400 Subject: [PATCH 515/536] floors wordsmithing (#3359) --- dev-docs/modules/floors.md | 424 +++++++++++++++++++------------------ 1 file changed, 214 insertions(+), 210 deletions(-) diff --git a/dev-docs/modules/floors.md b/dev-docs/modules/floors.md index 212b6fa9ad..3ad72224b4 100644 --- a/dev-docs/modules/floors.md +++ b/dev-docs/modules/floors.md @@ -17,11 +17,11 @@ sidebarType : 1 ## Overview -The Floors module provides an open source framework in Prebid for Publishers to configure Prebid price floors on their own or to work with a vendor who can provide floors. +The Price Floors Module provides an open source framework in Prebid for Publishers to configure Prebid price floors on their own or to work with a vendor who can provide floors. A ‘floor’ is defined as the lowest CPM price a bid will need to meet for each Prebid auction. It’s a way for publishers to signal to bidders the price to beat, thereby protecting the value of their inventory. -The module provides several ways for Prebid floors to be defined, that are used by bidder adapters to read floors and enforced on bid responses in any supported currency. The floors utilized by the Prebid.js floors module are defined by one or more set of rules containing any or all of the following dimensions: +The module provides several ways for Prebid floors to be defined, that are used by bidder adapters to read floors and enforced on bid responses in any supported currency. The floors utilized by the Price Floors Module are defined by one or more set of rules containing any or all of the following dimensions: - AdUnit @@ -32,31 +32,31 @@ The module provides several ways for Prebid floors to be defined, that are used - "custom dimensions" {: .alert.alert-warning :} -When using GPT Slot name, the gpt library is required to load first. Failing to do so may yield unexpected results and could impact revenue performance. +When using GPT Slot name, the GPT library is required to load first. Failing to do so may yield unexpected results and could impact revenue performance. -The entire set of Prebid floors selected by the Floors Module for a given auction is called a “Rule Location”. A Rule Location can be any one of: +The entire set of floors selected by the Price Floors Module for a given auction is called a "Rule Location". A Rule Location can be any one of: 1. Within the AdUnit (AdUnit) 2. Within setConfig (Package) 3. Retrieved from a real-time data service (Dynamic) {: .alert.alert-info :} -Even though floors are defined with five pre-configured dimensions, it’s possible to extend the list of dimensions to attributes of the page, user, auction or other data by supplying a dimension matching function. For example, a publisher can provide a matching function that returns the device type to allow the price floor module to use device type as an attribute within a prebid floor rules file. +Even though floors are defined with five pre-configured dimensions, it’s possible to extend the list of dimensions to attributes of the page, user, auction or other data by supplying a dimension matching function. For example, a publisher can provide a matching function that returns the device type to allow the Floor module to use device type as an attribute within a prebid floor rules file. ## How it Works -There are several places where the Floor module changes the behavior of the Prebid.js auction process. Below is a diagram describing the general flow of the Floors Module: +There are several places where the Floor module changes the behavior of the Prebid.js auction process. Below is a diagram describing the general flow of the Price Floors Module: ![Floors Module Flow](/assets/images/floors/floors_flow.png) -1. When building the Prebid.js package, the Floors module (and any analytics adapters) needs to be included with 'gulp build --modules=priceFloors,...' -2. As soon as the setConfig({floors}) call is initiated, the Floors Module will build an internal hash table for each auction derived from a Rule Location (one of Dynamic, setConfig or adUnit) - - a. If an endpoint URL (a Dynamic Floor) is defined, the Floors Module will attempt to fetch floor data from the Floor Provider's endpoint. When requestBids is called, the Floors Module will delay the auction up to the supplied amount of time in floors.auctionDelay or as soon as the dynamic endpoint returns data, whichever is first. -3. Bid Adapters are responsible for utilizing the getFloors() from the bidRequest object for each ad slot media type, size combination. The Floors Module will perform currency conversion if the bid adapter requests floors in a different currency from the defined floor data currency. +1. When building the Prebid.js package, the Price Floors Module (and any analytics adapters) needs to be included with 'gulp build --modules=priceFloors,...' +2. As soon as the setConfig({floors}) call is initiated, the Price Floors Module will build an internal hash table for each auction derived from a Rule Location (one of Dynamic, setConfig or adUnit) + - a. If an endpoint URL (a Dynamic Floor) is defined, the Price Floors Module will attempt to fetch floor data from the Floor Provider's endpoint. When requestBids is called, the Price Floors Module will delay the auction up to the supplied amount of time in floors.auctionDelay or as soon as the dynamic endpoint returns data, whichever is first. +3. Bid Adapters are responsible for utilizing the getFloor() from the bidRequest object for each ad slot media type, size combination. The Price Floors Module will perform currency conversion if the bid adapter requests floors in a different currency from the defined floor data currency. 4. Bid Adapters will pass the floor values to their bidding endpoints, to request bids, responding with any bids that meet or exceed the provided floor -5. Bid adapters will submit bids to back to Prebid core, where the Floors Module will perform enforcement on each bid -6. The Floors Module will mark all bids below the floor as bids rejected. Prebid core will submit all eligible bids to the publisher ad server - - a. The Floors module emits floor event / bid data to Analytics adapters to allow Floor Providers a feedback loop on floor performance for model training +5. Bid adapters will submit bids to back to Prebid core, where the Price Floors Module will perform enforcement on each bid +6. The Price Floors Module will mark all bids below the floor as bids rejected. Prebid core will submit all eligible bids to the publisher ad server + - a. The Price Floors Module emits floor event / bid data to Analytics adapters to allow Floor Providers a feedback loop on floor performance for model training ## Defining Floors @@ -107,7 +107,7 @@ Below are some basic principles of ad unit floor definitions: {% endhighlight %} {: .alert.alert-info :} -When defining floors at the adUnit level, the Floors Module requires the floors object to be defined in setConfig, even if the definition is an empty object as shown below: {% highlight js %}pbjs.setConfig({ floors: {} });{% endhighlight %} +When defining floors at the adUnit level, the Price Floors Module requires the floors object to be defined in setConfig, even if the definition is an empty object as shown below: {% highlight js %}pbjs.setConfig({ floors: {} });{% endhighlight %} Floor definitions are set in the “values” object containing one or more rules, where the rule is the criteria that needs to be met for that given ad unit, with an associated CPM floor. In the above example, the floors are enforced when the bid from a bidder matches the “mediaType” and “size” combination. Since many bid adapters are not able to ingest floors per size, a simpler setup can be: @@ -126,7 +126,7 @@ floors: { } {% endhighlight %} -For more advanced publisher setups, values can accept a “\*” to denote a catch all when a bid comes back that the floors module does not have an exact match and for bid adapters who are not able to use a floor per size, the bid adapter will automatically receive the “\*” rule’s floor if available. Example setup can be: +For more advanced publisher setups, values can accept a “\*” to denote a catch-all when a bid comes back that the Price Floors Module does not have an exact match and for bid adapters who are not able to use a floor per size, the bid adapter will automatically receive the “\*” rule’s floor if available. Example setup can be: {% highlight js %} floors: { @@ -191,7 +191,7 @@ pbjs.setConfig({ }); {% endhighlight %} -By defining floor data with setConfig, the Floors module will map GPT ad slots to AdUnits as needed. It does this in the same way as the setTargetingForGPTAsync() function – first looking for an AdUnit.code that matches the slot name, then looking for an AdUnit.code that matches the div id of the named GPT slot. +By defining floor data with setConfig, the Price Floors Module will map GPT ad slots to AdUnits as needed. It does this in the same way as the setTargetingForGPTAsync() function – first looking for an AdUnit.code that matches the slot name, then looking for an AdUnit.code that matches the div id of the named GPT slot. Here’s another example that includes more fields: @@ -206,10 +206,10 @@ pbjs.setConfig({ fields: [ 'domain', 'gptSlot', 'mediaType', 'size'] }, values: { - 'www.plublisher.com|/1111/homepage/top-rect|banner|300x250': 0.80, - 'www.publisher.com|/1111/homepage/top-rect|video|300x250': 2.20, - 'www.plublisher.com|/1111/homepage/left-nav|banner|300x250': 1.77, - 'www.publisher.com|/1111/homepage/left-nav|video|300x250': 2.88 + 'www.examplepub.com|/1111/homepage/top-rect|banner|300x250': 0.80, + 'www.examplepub.com|/1111/homepage/top-rect|video|300x250': 2.20, + 'www.examplepub.com|/1111/homepage/left-nav|banner|300x250': 1.77, + 'www.examplepub.com|/1111/homepage/left-nav|video|300x250': 2.88 ... } } @@ -240,7 +240,7 @@ pbjs.setConfig({ }); {% endhighlight %} -The floors module is flexible to handle floors set in multiple locations. Like in the below example a publisher can configure Dynamic floors in addition to Package floors (in setConfig). While the floors module is only able to use one set of rules (either Package, adUnit or Dynamic) defined as a Floor Location, setting floors in the Package will be utilized when the Dynamic floors fail to return data or another error condition occurs with the Dynamic fetch. +The Price Floors Module is flexible to handle floors set in multiple locations. Like in the below example a publisher can configure Dynamic floors in addition to Package floors (in setConfig). While the Price Floors Module is only able to use one set of rules (either Package, adUnit or Dynamic) defined as a Floor Location, setting floors in the Package will be utilized when the Dynamic floors fail to return data or another error condition occurs with the Dynamic fetch. {% highlight js %} pbjs.setConfig({ @@ -272,7 +272,7 @@ pbjs.setConfig({ ## Floors Syntax -The examples above covered several different scenarios where floors can be applied. Below we will cover the syntax and definition of the floors data schema. As of Prebid.js version 3.24, the Floors module supports a second data schema with the ability to add new schemas to future-proof the needs of additional design changes while keeping backwards compatibility. +The examples above covered several different scenarios where floors can be applied. Below we will cover the syntax and definition of the floors data schema. As of Prebid.js version 3.24, the Price Floors Module supports a second data schema with the ability to add new schemas to future-proof the needs of additional design changes while keeping backwards compatibility. ### Schema 1 @@ -282,21 +282,21 @@ Schema 1 restricts floors providers or publishers to applying only one data grou {: .table .table-bordered .table-striped } | Param | Type | Description | Default | |---+---+---+---+---| -| floorMin | float | The mimimum CPM floor used by the Floors Module (as of 4.13). The Floors Module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors. | - | +| floorMin | float | The mimimum CPM floor used by the Price Floors Module (as of 4.13). The Price Floors Module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors. | - | | floorProvider | string | Optional atribute (as of prebid version 4.1) used to signal to the Floor Provider's Analytics adapter their floors are being applied. They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in both the top level of the floors object and within the data object, the data object's configuration shall prevail.| - | -| enforcement | object | Controls the enforcement behavior within the Floors Module.| - | -| skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Floors Module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail. | 0 | -| enforcement.enforceJS | boolean | If set to true, the floors module will provide floors to bid adapters for bid request matched rules and suppress any bids not exceeding a matching floor. If set to false, the prebid floors module will still provide floors for bid adapters, there will be no floor enforcement.| true | -| enforcement.enforcePBS | boolean | If set to true, the Prebid.js floors module will signal to Prebid Server to pass floors to it’s bid adapters and enforce floors. If set to false, the pbjs should still pass matched bid request floor data to PBS, however no enforcement will take place. | false | +| enforcement | object | Controls the enforcement behavior within the Price Floors Module.| - | +| skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Price Floors Module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail. | 0 | +| enforcement.enforceJS | boolean | If set to true, the Price Floors Module will provide floors to bid adapters for bid request matched rules and suppress any bids not exceeding a matching floor. If set to false, the Price Floors Module will still provide floors for bid adapters, there will be no floor enforcement.| true | +| enforcement.enforcePBS | boolean | If set to true, the Price Floors Module will signal to Prebid Server to pass floors to it’s bid adapters and enforce floors. If set to false, the pbjs should still pass matched bid request floor data to PBS, however no enforcement will take place. | false | | enforcement.floorDeals | boolean | Enforce floors for deal bid requests. | false | -| enforcement.bidAdjustment | boolean | If true, the Floors Module will use the bidAdjustment function to adjust the floor per bidder. If false (or no bidAdjustment function is provided), floors will not be adjusted. Note: Setting this parameter to false may have unexpected results, such as signaling a gross floor when expecting net or vice versa. | true | +| enforcement.bidAdjustment | boolean | If true, the Price Floors Module will use the bidAdjustment function to adjust the floor per bidder. If false (or no bidAdjustment function is provided), floors will not be adjusted. Note: Setting this parameter to false may have unexpected results, such as signaling a gross floor when expecting net or vice versa. | true | | endpoint | object | Controls behavior for dynamically retrieving floors. | - | | endpoint.url | string | URL of endpoint to retrieve dynamic floor data. | - | -| data | object (required) | Floor data used by the Floors Module to pass floor data to bidders and floor enforcement. | - | +| data | object (required) | Floor data used by the Price Floors Module to pass floor data to bidders and floor enforcement. | - | | data.floorProvider | string | Optional atribute (as of prebid version 4.2) used to signal to the Floor Provider's Analytics adapter their floors are being applied. They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in both the top level of the floors object and within the data object, the data object's configuration shall prevail.| - | | data.currency | string | Currency of floor data. Floor Module will convert currency where necessary. See Currency section for more details. | 'USD' | -| data.skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Floors Module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail. | 0 | -| data.floorsSchemaVersion | string | The Floors Module supports two versions of the data schema. Version 1 allows for only one model to be applied in a given data set, whereas Version 2 allows you to sample multiple models selected by supplied weights. If no schema version is provided, the Floors Module will assume version 1 for the sake of backwards compatiblity. For schema version 2 see the next section. | 1 | +| data.skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Price Floors Module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail. | 0 | +| data.floorsSchemaVersion | string | The module supports two versions of the data schema. Version 1 allows for only one model to be applied in a given data set, whereas Version 2 allows you to sample multiple models selected by supplied weights. If no schema version is provided, the module will assume version 1 for the sake of backwards compatiblity. For schema version 2 see the next section. | 1 | | data.modelVersion | string | Used by floor providers to train on model version performance. The expectation is a floor provider’s analytics adapter will pass the model verson back for algorithm training. | - | | data.modelTimestamp | int | Epoch timestamp associated with modelVersion. Can be used to track model creation of floor file for post auction analysis.| - | | data.schema | object |allows for flexible definition of how floor data is formatted. | - | @@ -314,14 +314,14 @@ Schema 1 restricts floors providers or publishers to applying only one data grou ### Schema 2 -Schema 2 allows floors providers to A / B one or more floor groups, determined at auction time. +Schema 2 allows floors providers to A/B-test one or more floor groups, determined at auction time. The following principles apply to schema 2: - The below attributes are required: - data.floorsSchemaVersion to be set to 2 - A valid modelGroups object must be set - The field modelGroups.modelWeight is required for each model group - - If one of the model weights is missing, no schema 2 floor will be set and the Floors Module will look in other locations for floor definitions + - If one of the model weights is missing, no schema 2 floor will be set and the Price Floors Module will look in other locations for floor definitions - If common attributes are set in both the modelGroups and root level of the data object, modelGroups attributes prevail - The Schema 2 data model can only be applied in Package level (i.e. directly in setConfig) or Dynamic level - Sampling weights are applied at the auction level. Each new auction the dice will be rolled @@ -333,27 +333,27 @@ While some attributes are common in both schema versions, for completeness, all {: .table .table-bordered .table-striped } | Param | Type | Description | Default | |---+---+---+---+---| -| floorMin | float | The mimimum CPM floor used by the Floors Module (as of 4.13). The Floors Module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors. | - | +| floorMin | float | The mimimum CPM floor used by the module (as of 4.13). The module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors. | - | | floorProvider | string | Optional atribute (as of prebid version 4.1) used to signal to the Floor Provider's Analytics adapter their floors are being applied. They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in both the top level of the floors object and within the data object, the data object's configuration shall prevail.| - | -| enforcement | object | Controls the enforcement behavior within the Floors Module.| - | -| skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Floors Module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail. | 0 | -| enforcement.enforceJS | boolean | If set to true, the floors module will provide floors to bid adapters for bid request matched rules and suppress any bids not exceeding a matching floor. If set to false, the prebid floors module will still provide floors for bid adapters, but there will be no floor enforcement.| true | -| enforcement.enforcePBS | boolean | If set to true, the Prebid.js floors module will signal to Prebid Server to pass floors to it’s bid adapters and enforce floors. If set to false, Prebid.js should still pass matched bid request floor data to Prebid Server, however no enforcement will take place. | false | +| enforcement | object | Controls the enforcement behavior within the module.| - | +| skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail. | 0 | +| enforcement.enforceJS | boolean | If set to true, the module will provide floors to bid adapters for bid request matched rules and suppress any bids not exceeding a matching floor. If set to false, the module will still provide floors for bid adapters, but there will be no floor enforcement.| true | +| enforcement.enforcePBS | boolean | If set to true, the module will signal to Prebid Server to pass floors to it’s bid adapters and enforce floors. If set to false, Prebid.js should still pass matched bid request floor data to Prebid Server, however no enforcement will take place. | false | | enforcement.floorDeals | boolean | Enforce floors for deal bid requests. | false | -| enforcement.bidAdjustment | boolean | If true, the Floors Module will use the bidAdjustment function to adjust the floor per bidder. If false (or no bidAdjustment function is provided), floors will not be adjusted. Note: Setting this parameter to false may have unexpected results, such as signaling a gross floor when expecting net or vice versa. | true | +| enforcement.bidAdjustment | boolean | If true, the module will use the bidAdjustment function to adjust the floor per bidder. If false (or no bidAdjustment function is provided), floors will not be adjusted. Note: Setting this parameter to false may have unexpected results, such as signaling a gross floor when expecting net or vice versa. | true | | endpoint | object | Controls behavior for dynamically retrieving floors. | - | | endpoint.url | string | URL of endpoint to retrieve dynamic floor data. | - | -| data | object (required) | Floor data used by the Floors Module to pass floor data to bidders and floor enforcement. | - | +| data | object (required) | Floor data used by the module to pass floor data to bidders and floor enforcement. | - | | data.floorProvider | string | Optional atribute (as of prebid version 4.2) used to signal to the Floor Provider's Analytics adapter their floors are being applied. They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in both the top level of the floors object and within the data object, the data object's configuration shall prevail.| - | -| data.currency | string | Currency of floor data. Floors Module will convert currency where necessary. See Currency section for more details. | 'USD' | -| data.skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Floors Module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail.| 0 | -| data.floorsSchemaVersion | string | The Floors Module supports two version of the data schema. Version 1 allows for only one model to be applied in a given data set, whereas Version 2 allows you to sample multiple models selected by supplied weights. If no schema version is provided, the Floors Module will assume version 1 for the sake of backwards compatiblity.| 1 | +| data.currency | string | Currency of floor data. The module will convert currency where necessary. See Currency section for more details. | 'USD' | +| data.skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the module is in floors mode. If skipRate is supplied in both the root level of the floors object and within the data object, the skipRate configuration within the data object shall prevail.| 0 | +| data.floorsSchemaVersion | string | The module supports two version of the data schema. Version 1 allows for only one model to be applied in a given data set, whereas Version 2 allows you to sample multiple models selected by supplied weights. If no schema version is provided, the module will assume version 1 for the sake of backwards compatiblity.| 1 | | data.modelTimestamp | int | Epoch timestamp associated with modelVersion. Can be used to track model creation of floor file for post auction analysis.| - | | data.modelGroups | array of objects | Array of model objects to be used for A/B sampling multiple models. This field is only used when data.floorsSchemaVersion = 2 | - | | data.modelGroups[].currency | string | Currency of floor data. Floor Module will convert currency where necessary. See Currency section for more details. | 'USD' | -| data.modelGroups[].skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the Floors Module is in floors mode. | 0 | +| data.modelGroups[].skipRate | integer | skipRate is a random function whose input value is any integer 0 through 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data. The use case is for publishers or floor providers to learn bid behavior when floors are applied or skipped. Analytics adapters will have access to model version (if defined) when skipped is true to signal the module is in floors mode. | 0 | | data.modelGroups[].modelVersion | string | Used by floor providers to train on model version performance. The expectation is a floor provider’s analytics adapter will pass the model verson back for algorithm training. | - | -| data.modelGroups[].modelWeight | integer | Used by the Floors Module to determine when to apply the specific model. All weights will be normalized and appllied at runtime. Futher clarification will be provided in examples below. | - | +| data.modelGroups[].modelWeight | integer | Used by the module to determine when to apply the specific model. All weights will be normalized and applied at runtime. Futher clarification will be provided in examples below. | - | | data.schema | object | Allows for flexible definition of how floor data is formatted. | - | | data.modelGroups[].schema.delimiter | string | Character separating the floor keys. | '\|' | | data.modelGroups[].schema.fields | array of strings | Supported pre-defined values are: gptSlot, adUnitCode, mediaType, size | - | @@ -370,65 +370,70 @@ While some attributes are common in both schema versions, for completeness, all Model weights add up to 100 and are sampled at a 25%, 25%, 50% distribution. Additionally, each model group has diffirent schema fields: {% highlight js %} -{ - "currency": "EU", - "skipRate": 20, - "floorsSchemaVersion":2, - "modelGroups": [ - { - "modelWeight":25, - "modelVersion": "Model1", - "schema": { - "fields": [ "domain", "gptSlot", "mediaType", "size" ] - }, - "values": { - "www.publisher.com|/1111/homepage/top-banner|banner|728x90": 1.00, - "www.publisher.com|/1111/homepage/top-rect|banner|300x250": 1.20, - "www.publisher.com|/1111/homepage/top-rect|banner|300x600": 1.80, - ... - "www.domain.com|/1111/homepage/top-banner|banner|728x90": 2.11 - ... - "www.publisher.com|*|*|*": 0.80, - }, - "default": 0.75 - }, - { - "modelWeight": 25, - "modelVersion": "Model2", - "schema": { - "fields": [ "domain", "mediaType", "size" ] - }, - "values": { - "www.publisher.com|banner|728x90": 1.00, - "www.publisher.com|banner|300x250": 1.20, - "www.publisher.com|banner|300x600": 1.80, - ... - "www.domain.com|banner|728x90": 2.11 - ... - "www.publisher.com|*|*|*": 0.80, - }, - "default": 0.75 - }, - { - "modelWeight": 50, - "modelVersion": "Model3", - "schema": { - "fields": [ "gptSlot", "mediaType", "size" ] - }, - "values": { - "/1111/homepage/top-banner|banner|728x90": 1.00, - "/1111/homepage/top-rect|banner|300x250": 1.20, - "/1111/homepage/top-rect|banner|300x600": 1.80, - ... - "/1111/homepage/top-banner|banner|728x90": 2.11 - ... - "*|banner|*": 0.80, - }, - "default": 0.75 - } - ] - -} +pbjs.setConfig({ + floors: { + enforcement: { ... }, + ... + data: { + "currency": "EU", + "skipRate": 20, + "floorsSchemaVersion":2, + "modelGroups": [ + { + "modelWeight":25, + "modelVersion": "Model1", + "schema": { + "fields": [ "domain", "gptSlot", "mediaType", "size" ] + }, + "values": { + "www.publisher.com|/1111/homepage/top-banner|banner|728x90": 1.00, + "www.publisher.com|/1111/homepage/top-rect|banner|300x250": 1.20, + "www.publisher.com|/1111/homepage/top-rect|banner|300x600": 1.80, + ... + "www.domain.com|/1111/homepage/top-banner|banner|728x90": 2.11 + ... + "www.publisher.com|*|*|*": 0.80, + }, + "default": 0.75 + }, + { + "modelWeight": 25, + "modelVersion": "Model2", + "schema": { + "fields": [ "domain", "mediaType", "size" ] + }, + "values": { + "www.publisher.com|banner|728x90": 1.00, + "www.publisher.com|banner|300x250": 1.20, + "www.publisher.com|banner|300x600": 1.80, + ... + "www.domain.com|banner|728x90": 2.11 + ... + "www.publisher.com|*|*|*": 0.80, + }, + "default": 0.75 + }, + { + "modelWeight": 50, + "modelVersion": "Model3", + "schema": { + "fields": [ "gptSlot", "mediaType", "size" ] + }, + "values": { + "/1111/homepage/top-banner|banner|728x90": 1.00, + "/1111/homepage/top-rect|banner|300x250": 1.20, + "/1111/homepage/top-rect|banner|300x600": 1.80, + ... + "/1111/homepage/top-banner|banner|728x90": 2.11 + ... + "*|banner|*": 0.80, + }, + "default": 0.75 + } + ] + } + } +}); {% endhighlight %} *Example 2* @@ -439,66 +444,69 @@ model2 = 50 -> 50 / (20 + 50) = 71% of auctions model 2 will be applied Additionally skipRate is supplied at model group level where model1 will skip floors 20% of times when model1 is selected, whereas model2 will skip 50% of auctions when model2 is selected. {% highlight js %} -{ - "currency": "EU", - "floorsSchemaVersion":2, - "modelGroups": [ - { - "modelWeight":25, - "skipRate": 20, - "modelVersion": "Model1", - "schema": { - "fields": [ "domain", "gptSlot", "mediaType", "size" ] - }, - "values": { - "www.publisher.com|/1111/homepage/top-banner|banner|728x90": 1.00, - "www.publisher.com|/1111/homepage/top-rect|banner|300x250": 1.20, - "www.publisher.com|/1111/homepage/top-rect|banner|300x600": 1.80, - ... - "www.domain.com|/1111/homepage/top-banner|banner|728x90": 2.11 - ... - "www.publisher.com|*|*|*": 0.80, - }, - "default": 0.75 - }, - { - "modelWeight": 50, - "skipRate": 50, - "modelVersion": "Model2", - "schema": { - "fields": [ "gptSlot", "mediaType", "size" ] - }, - "values": { - "/1111/homepage/top-banner|banner|728x90": 1.00, - "/1111/homepage/top-rect|banner|300x250": 1.20, - "/1111/homepage/top-rect|banner|300x600": 1.80, - ... - "/1111/homepage/top-banner|banner|728x90": 2.11 - ... - "*|banner|*": 0.80, - }, - "default": 0.75 - } - ] - -} +pbjs.setConfig({ + floors: { + enforcement: { ... }, + ... + data: { + "currency": "EU", + "floorsSchemaVersion":2, + "modelGroups": [ + { + "modelWeight":25, + "skipRate": 20, + "modelVersion": "Model1", + "schema": { + "fields": [ "domain", "gptSlot", "mediaType", "size" ] + }, + "values": { + "www.publisher.com|/1111/homepage/top-banner|banner|728x90": 1.00, + "www.publisher.com|/1111/homepage/top-rect|banner|300x250": 1.20, + "www.publisher.com|/1111/homepage/top-rect|banner|300x600": 1.80, + ... + "www.domain.com|/1111/homepage/top-banner|banner|728x90": 2.11 + ... + "www.publisher.com|*|*|*": 0.80, + }, + "default": 0.75 + }, + { + "modelWeight": 50, + "skipRate": 50, + "modelVersion": "Model2", + "schema": { + "fields": [ "gptSlot", "mediaType", "size" ] + }, + "values": { + "/1111/homepage/top-banner|banner|728x90": 1.00, + "/1111/homepage/top-rect|banner|300x250": 1.20, + "/1111/homepage/top-rect|banner|300x600": 1.80, + ... + "/1111/homepage/top-banner|banner|728x90": 2.11 + ... + "*|banner|*": 0.80, + }, + "default": 0.75 + } + ] + } + } +}); {% endhighlight %} ## Custom Schema Fields -Custom schema fields are fields the Floors Module does not support out of the box. To use a custom schema field, one needs to perform twp steps: +Out of the box, the Price Floors Module only supports looking up floors by AdUnit, GPT Slot, MediaType, ad size, and domain. Custom schema fields can be added to support other lookup dimensions. Here are the steps: -1. Create lookup function to give the Floors Module context of the value of custom fields for that given auction +1. Create a lookup function to give context of the value of custom fields for that given auction 1. Define, Set and Map Custom Schema Attributes ### Create Lookup Function -Create a function to allow the Floors Module to understand context of a given auction. In the below example, we must create a lookup function to give the Floors Module what deviceType this auction is. - -Here is an example lookup function: +Create a function to allow the module to understand context of a given auction. In the below example, a lookup function provides details about what deviceType this auction is for. +e.g. {% highlight js %} - function deviceTypes (bidRequest, bidResponse) { //while bidRequest and bidResponse are not required for this function, they are available for custom attribute mapping @@ -517,9 +525,9 @@ Here is an example lookup function: ### Define, Set and Map Custom Schema Attributes -After defining a lookup function for the given context of the auction, the custom schema field(s) need to be defined in the `floors.schema.fields` array. Once your custom field is defined you can assign rule values in `floors.data.values` derived from said field(s). The last step would be to supply the lookup function(s) that map from each custom field to a value of the context wthin that auction by using the `floors.additionalSchemaFields` attribute as seen below. +After defining a lookup function for the given context of the auction, the custom schema field(s) need to be defined in the `floors.schema.fields` array. Once your custom field is defined you can assign rule values in `floors.data.values` derived from these field(s). The last step would be to supply the lookup function(s) that map from each custom field to a value of the context wthin that auction by using the `floors.additionalSchemaFields` attribute as seen below. -In the below example, `deviceType` is a custom field not currently supported by default in the Floors Module whose values are one of "mobile", "desktop" or "tablet". +In the below example, `deviceType` is a custom field not currently supported by default in the Price Floors Module whose values are one of "mobile", "desktop" or "tablet". {% highlight js %} @@ -554,28 +562,26 @@ In the below example, `deviceType` is a custom field not currently supported by {% endhighlight %} - - ## Rule Handling ### Rule Location Priority -As defined in the overview, a Rule Location is where a particular rule is located, either defined in the Ad Unit, within setConfig or via a fetch from the browser (named Dynamic) for fresh rules. It may be possible (rather more than likely) that floor rules can be set in one or more locations for a given Prebid auction (i.e. on requestBids). At auction, the Floors Module will only ever use rules from one Rule Location, decided at run-time. Each auction will be assigned an immutable set of rules from one Rule Location, even if the rules change prior to auction complete. +As defined in the overview, a Rule Location is where a particular rule is located, either defined in (1) the Ad Unit, (2) within setConfig or (3) via a fetch from the browser. It's likely that floor rules are set in one or more location for a given Prebid auction. During an auction, the Price Floors Module will only ever use rules from one Rule Location, decided at run-time. Each auction will be assigned an immutable set of rules from one Rule Location, even if the rules change prior to auction complete. -The Floors Module will use the below prioritization scheme on determining which Rule Location is selected at run-time: +The module uses the below prioritization scheme on determining which Rule Location is selected at run-time: -- Dynamic +- dynamic - setConfig - adUnit ### Rule Selection Process -The job of the Prebid floors module is to select a matching Prebid floor rule for enforcement \(when a bid adapter bids in the auction\) given the context of each Ad Unit. With the usage of “\*” values in rules definitions \(where “\*” applies when no specific value matches\) multiple Prebid floor rules can match for a given ad unit auction. +The job of the Price Floors Module is to select a matching floor rule for enforcement given the context of each Ad Unit. With the usage of “\*” values in rules definitions multiple floor rules can match for a given ad unit auction. -The Prebid Floors module algorithm will produce a list of every possible permutation for each ad unit auction based on the defined schema types. The best matching rule for each enforced bid request and getFloor is based on specificity of values \(meaning match an exact value\) weighted from left to right, where the specificity of a value in the left most column would match over a rule with it’s “\*” equivalent if “\*” is supplied. +The module algorithm will produce a list of every possible permutation for each ad unit auction based on the defined schema types. The best matching rule for each enforced bid request and call to `getFloor()` is based on specificity of values \(meaning match an exact value\) weighted from left to right, where the specificity of a value in the left most column would match over a rule with its “\*” equivalent if “\*” is supplied. -Priority order behavior where “\_” is a specific value, and the “\*” is a catch all +Priority order behavior where “\_” is a specific value, and the “\*” is a catch-all Priority order for one column rule sets: @@ -646,7 +652,7 @@ mediaType = banner Size = 300x600 Domain context = www.website.com -The Price Floor Module produces an internal hash table of all possible permutations of “banner”, “300x600”, “www.website.com” and “\*” with the most specific hash values up top, weighting rules priority from left column specific values to right. Each left value will weigh more than the subsequent column’s specific values. The Floors Module attempt to find the matching rule by cycling through each below possible rule (from top to bottom) against the above rule provider data set. +The Floor module produces an internal hash table of all possible permutations of “banner”, “300x600”, “www.website.com” and “\*” with the most specific hash values up top, weighting rules priority from left column specific values to right. Each left value will weigh more than the subsequent column’s specific values. The module attempts to find the matching rule by cycling through each below possible rule (from top to bottom) against the above rule provider data set. {% highlight js %} { @@ -845,14 +851,14 @@ As a floor provider, your goal is to provide effective floors, with minimal page - Work with publishers on setting appropriate auction delays to retrieve dynamic data - Implement client-side caching (such as max-age headers) whenever possible - Evaluate data freshness vs frequency of new fetches to the CDN to reduce unnecessary calls -- Be aware of file sizes returned to the browser, implementing trimmiming algorithms for extremely large data sets +- Be aware of file sizes returned to the browser, implementing trimming algorithms for extremely large data sets {% endcapture %} {% include /alerts/alert_important.html content=warning_note %} -For Dynamic fetches, the floors module will perform a GET request to the supplied endpoint, that must return valid JSON, formatted like the data object in the “setConfig” Package configuration. +For Dynamic fetches, the Price Floors Module will perform a GET request to the supplied endpoint, that must return valid JSON, formatted like the data object in the “setConfig” Package configuration. -On rule creation, we recommend supplying various rules with catch all \(“\*”\) values with associated floors. This is to accommodate bid adapters who cannot retrieving floors on a per size basis, as well as using various permutations of rules with “\*” values to match auctions that do not have an exact match on a specific rule. Please refer to the Rule Selection Process when determining floors as attribute order and number of “\*”s may have an impact on which rule is selected. +On rule creation, we recommend supplying various rules with catch-all \(“\*”\) values with associated floors. This is to accommodate bid adapters who cannot retrieve floors on a per size basis, as well as using various permutations of rules with “\*” values to match auctions that do not have an exact match on a specific rule. Please refer to the Rule Selection Process when determining floors as attribute order and number of “\*”s may have an impact on which rule is selected. #### Example Dynamic fetch @@ -980,31 +986,29 @@ Floors Schema version 2 ### Bid Adapter Interface -The Prebid Floors Module is capable of handling an arbitrarily large set of floor rules of any combination of supported dimensions. To reduce the need for each bid adapter to process each and every rule in the selected rule data set, an encapsulated function (getFloor) was created to allow bid adapters to query the Floors Module for a floor for each mediaType, size and currency the bid adapter needs. - -If the price floors module is enabled for a given auction, the Floors Module will add to the bidRequest object the getFloor function. All bid adapters are recommended to call getFloor to retrieve a desired floor. The job of the getFloor function will be to return the floor CPM of a matched rule based on the rule selection process (written out above), using the getFloor inputs. +The Prebid Floors Module is capable of handling an arbitrarily large set of floor rules of any combination of supported dimensions. To reduce the need for each bid adapter to process each and every rule in the selected rule data set, an encapsulated function (getFloor) was created to allow bid adapters to query the module for a floor for each mediaType, size and currency the bid adapter needs. -Intended changes for bid adapters: +If the Price Floors Module is enabled for a given auction, it will add the getFloor() function to the bidRequest object. All bid adapters are recommended to call the getFloor() to retrieve a desired floor. The job of this function is to return the floor CPM of a matched rule based on the rule selection process (written out above), using the getFloor() inputs. +Changes for bid adapters: -1. Check for presence of getFloor within the bidRequest obect -1. If getFloors exists, call getFloor with desired parameters +1. Check for presence of getFloor() within the bidRequest obect +1. If getFloor() exists, call it with desired parameters 1. Parse floor and currency response 1. Pass floor and / or currency to bid adapter endpoint -getFloor takes in a single object with the following params: +getFloor() takes in a single object with the following params: {% highlight js %} - - getFloor({ + if (typeof bidRequest.getFloor === 'function') { + floorInfo = bidRequest.getFloor({ currency: string, - mediaType: string //Required + mediaType: string, size : [ w, h] OR "*" }); - +} {% endhighlight %} - {: .alert.alert-warning :} Consider how floors will behave in multi-currency scenarios. A common pitfall is requesting floors without specifying currency, or specifying the wrong currency back to the bid adapter's platform. This may lead to bidders requesting one currency and bidding in an alternate currency. @@ -1012,12 +1016,11 @@ Consider how floors will behave in multi-currency scenarios. A common pitfall is {: .table .table-bordered .table-striped } | Param | Type | Description | Default | |---+---+---+---| -| bidRequest | object | bidRequest object passed to buildRequests function | none | -| mediaType | string | The media type within the current bidRequest context to receive a floor from the Floors Module. Floors Module will return best matching floor. Possible values are one of “banner”, “video”, “Native” or "\*" | "banner" | -| size | Size array or ‘\*’ (required) | The size within the current bidRequest context to receive a floor from the Floors Module. Defaults to ‘\*’Array of size [w, h] for a specific size. If your bid adapter cannot handle size specific floors, use ‘\*’ to retrieve catch all size floor if defined by the publisher or floor provider | "\*" | +| mediaType | string | The media type within the current bidRequest context to receive a floor from the module. It will return best matching floor. Possible values are one of “banner”, “video”, “Native” or "\*" | "banner" | +| size | Size array or ‘\*’ (required) | The size within the current bidRequest context to receive a floor from the module. Defaults to ‘\*’Array of size [w, h] for a specific size. If your bid adapter cannot handle size specific floors, use ‘\*’ to retrieve catch-all size floor if defined by the publisher or floor provider | "\*" | | currency | String | The desired currency to return the floor in. Please refer to the currency section to understand how currency conversion is applied. If no currency is supplied, the floor module will assume USD. If the Floor Module cannot convert a floor to the supplied currency, bid adapters will be required to handle the supplied floor. | "USD" | -#### getFloor Response +#### getFloor() Response {% highlight js %} @@ -1036,9 +1039,9 @@ Or empty object if a floor was not found for a given input {% endhighlight %} -#### Example getFloor scenarios +#### Example getFloor() scenarios -Example rules file used for getFloor +Example rules file used for getFloor() {% highlight js %} @@ -1061,16 +1064,16 @@ Example rules file used for getFloor {% endhighlight %} -**Example getFloor 1** +**Example getFloor() 1** -getFloor for media type Banner for a bid request in the context of the gpt slot “/1111/homepage/top-rect” where the bid adapter does not support floors per size. +getFloor() for media type Banner for a bid request in GPT slot “/1111/homepage/top-rect” where the bid adapter does not support floors per size. {% highlight js %} getFloor({ currency: 'USD', mediatype: ‘banner’, - Size: ‘*’ + size: ‘*’ }); {% endhighlight %} @@ -1083,7 +1086,7 @@ getFloor for media type Banner for a bid request in the context of the gpt slot } {% endhighlight %} -To aid in the accuracy of floor selection when using size ”\*” in getFloor, the Floors Module has built-in smart rule selection when an ad unit in the internal bidRequest to the bid adapters interface has one ad unit type and one size. In the above example, if the ad unit within the bidRequest object has an ad unit type of “banner” with only one size, say “300x250”, the Floors Module will intelligently select the rule with "banner\|300x250" in it, as opposed to the "banner\|\*" rule producing the following response: +To aid in the accuracy of floor selection when using size ”\*” in getFloor(), the Price Floors Module has built-in smart rule selection when an ad unit in the internal bidRequest to the bid adapters interface has one ad unit type and one size. In the above example, if the ad unit within the bidRequest object has an ad unit type of “banner” with only one size, say “300x250”, the module will intelligently select the rule with "banner\|300x250" in it, as opposed to the "banner\|\*" rule producing the following response: {% highlight js %} { @@ -1093,9 +1096,9 @@ To aid in the accuracy of floor selection when using size ”\*” in getFloor, {% endhighlight %} -**Example getFloor 2** +**Example getFloor() 2** -getFloor for media type Banner for a bid requests in the context of the gpt slot “/1111/homepage/top-rect” with size of 300x600 where bid adapter does support floors per size. +getFloor() for media type Banner for a bid requests in GPT slot “/1111/homepage/top-rect” with size of 300x600 where bid adapter does support floors per size. {% highlight js %} getFloor({ @@ -1114,7 +1117,7 @@ getFloor({ } {% endhighlight %} -Here are some examples of how a bid adapter may wish to configure their adapter to handle getFloor function: +Here are some examples of how a bid adapter may wish to configure their adapter to handle getFloor() function: For a bid adapter who does not wish to handle making a request for each size in a given bid request they can leverage the \* attribute which is meant to be a skewed average for a floor. @@ -1131,23 +1134,23 @@ For a bid adapter who does not wish to handle making a request for each size in ### Analytics Adapter Interface -Price Floors providers will most likely rely heavily on their associated (or their partner’s) prebid analytics adapter in order to make the most informed and optimal price floor rule sets. Because of this, the price floors module needs to relay important information about the flooring and decisions made in the lifecycle of an auction. +Floor providers rely on an analytics adapter in order to make the most informed and optimal price floor rule sets. Because of this, the Price Floors Module needs to relay important information about the flooring and decisions made in the lifecycle of an auction. -The price floors module will do this by leveraging the already existing implementation for prebid analytics adapters by exposing floorData information onto the bidRequest and bidResponse objects. Thus, when an analytics adapter hooks into these prebid events, it will be able to pick out the price floors data and pass it along to their servers. +The module will do this by leveraging the already-existing implementation for analytics adapters by exposing floorData information onto the bidRequest and bidResponse objects. Thus, when an analytics adapter hooks into these objects, it will be able to pick out the price floors data and pass it along to their servers. **bidRequest**: Bid Requests objects are updated to contain some basic top level information which a floor provider may need: {: .table .table-bordered .table-striped } | bidRequest.floorData. | Type | Description | example | |---+---+---+---+---| -| fetchStatus | String | Provides details on the status of a fetch for a JSON floors file when fetches are attempted. Valid values are: 'success' (when fetch returns an http 200 status), 'timeout' (when fetch results not returned before either auction delay or prebid timeout) or 'error' (any http status other than 200 or other error condition). To determine if fetch succeeds but returns invalid floors data, refer to the location field to infer invalid data if 'fetch' is not resultant value. | ‘success’ | -| floorMin | float | The mimimum CPM floor used by the Floors Module (as of 4.13). The Floors Module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors. | 0.10 | +| fetchStatus | String | Provides details on the status of a fetch for a JSON floors file when fetches are attempted. Valid values are: 'success' (when fetch returns an http 200 status), 'timeout' (when fetch results not returned before either auction delay or prebid timeout) or 'error' (any http status other than 200 or other error condition). Note: if data is received successfully, but isn't valid upon parsing, fetchStatus will be 'success', but the `location` field (below) will have a value other than 'fetch' because the system will fall back to another source. | ‘success’ | +| floorMin | float | The mimimum CPM floor used by the module (as of 4.13). The module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors. Note that the currency of this floor is the same as bidResponse.floorData.floorCurrency. | 0.10 | | floorProvider | string | Optional atribute (as of prebid version 4.1) used to signal to the Floor Provider's Analytics adapter their floors are being applied. They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in both the top level of the floors object and within the data object, the data object's configuration shall prevail.| "rubicon" | -| location | String | Where the Floors Module derived the rule set. Values are one of 'adUnit', 'setConfig', 'fetch' or 'noData'. If the Floors Module code is invoked and no floors object is able to be found (either by error or other condition) the floorsModule will set location to 'noData'. When on data is found, it is up to the analtyics adapter to decide what to log. All available values will be provided in teh bidRequest object. | ‘fetch’ | +| location | String | Where the module derived the rule set. Values are one of 'adUnit', 'setConfig', 'fetch' or 'noData'. If the module code is invoked and no floors object is able to be found (either by error or other condition) the floorsModule will set location to 'noData'. When on data is found, it is up to the analtyics adapter to decide what to log. All available values will be provided in the bidRequest object. | ‘fetch’ | | modelVersion | String | The name of the model| ‘floor-model-4.3’ | | modelWeight | integer | The weight of the model selected (for schema 2 version only)| 50 | | modelTimestamp | integer | Epoch timestamp associated with the modelVersion to be used for post auction analysis.| 1607126814 | -| skipRate | integer | skipRate will be populated when a skip rate is configured in the Prebid Floors Module, even if the skipRate is evaluated to false. Skip Rate is used to determine when to skip all floors logic. | 15 | +| skipRate | integer | skipRate will be populated when a skip rate is configured in the module, even if the skipRate is evaluated to false. Skip Rate is used to determine when to skip all floors logic. | 15 | | skipped | Boolean | Whether the skipRate resolved to be true or false| true | **bidResponse**: When a bid response is being processed it is important for analytics adapters to know the decision which was made and the context of the rule selection. Here is the data which is attached to each bidResponse: @@ -1165,28 +1168,29 @@ The price floors module will do this by leveraging the already existing implemen ### Prebid Server Interface -Not supported in initial build. S2S config support will be coming in the subsequent release. +The PrebidServerBidAdapter calls `getFloor()` like any other bid adapter +and passes it to the server side as imp.bidfloor and imp.bidfloorcur. ## Currency -The floors module will default the floor CPM currency with any associated rule to USD if none is supplied in the data object of the floors configuration. For any non-USD currency support, a publisher is required to specify the desired currency. If you are working with a floor provider, please speak to them about supplying the desired currency for your integration. +The Price Floors Module defaults the floor currency to USD if none is supplied in the data object of the floors configuration. For any non-USD currency support, a publisher is required to specify the desired currency. If you are working with a floor provider, please speak to them about supplying the desired currency for your integration. {% capture warning_note %} -For publishers seeking to perform currency conversions within the floors module (for example if the floors data currency is not the same as a bid adapter’s supported currency), failure to include the currency module may result in unexpected behavior and / or may impact revenue performance. +For publishers requiring currency conversions (for example if the floors data currency is not the same as a bid adapter’s supported currency), **failure to include the currency module may result in unexpected behavior** and / or may impact revenue performance. {% endcapture %} {% include /alerts/alert_warning.html content=warning_note %} Currency conversion can occur in two areas of the Floor Module code: -- On the **getFloor** call when Bid Adapters request a floor +- On the **getFloor()** call when Bid Adapters request a floor - On the **enforcement** side when each bidder submits a bidResponse -**getFloor** +**Currency and getFloor()** -The job of the getFloor method is to retrieve an appropriate floor for the requesting Bid Adapter, for a given auction context. If a Bid Adapter performs a getFloor call with a currency different than the currency of the floor data, the Floors Module will attempt to perform a currency conversion, utilizing the convertCurrency function in the global Prebid object. +The job of the getFloor() function is to retrieve an appropriate floor for the requesting Bid Adapter, for a given auction context. If a Bid Adapter performs a getFloor() call with a currency different than the currency of the floor data, the module will attempt to perform a currency conversion, utilizing the convertCurrency function in the global Prebid object. -If a currency conversion is successful in getFloor, the resulting floor will be returned to the requesting Bid Adapter. If the conversion failed, the Floors Module will return the original floor currency defined within the selected rule location data set. +If a currency conversion is successful in getFloor(), the resulting floor will be returned to the requesting Bid Adapter. If the conversion failed, the module will return the original floor currency defined within the selected rule location data set. Example Rule: currency = ‘USD’, @@ -1209,7 +1213,7 @@ If successfully returned the requested currency: } {% endhighlight %} -If unsuccessfully returned the requested currency: +If currency conversion is unsuccessful: {% highlight js %} { @@ -1228,9 +1232,9 @@ Currency conversion can fail for the following reasons: - Bidder passes in a currency code which does not have a conversion rate - Floors was set with a currency which does not have a conversion rate -**Enforcement** +**Currency and Floor Enforcement** -Enforcement in the Floors module occurs when bidders respond (i.e. bid) with a bidResponse object into the Prebid auction. The Floors Module will read the bid submitted within each valid bidResponse and its associated currency, performing currency conversion where necessary. +Enforcement in the Price Floors Module occurs when bidders respond with a bidResponse object into the Prebid auction. The module reads the bid submitted within each valid bidResponse and its associated currency, performing currency conversion where necessary. There exist three locations where currencies can differ within enforcement: @@ -1238,14 +1242,14 @@ There exist three locations where currencies can differ within enforcement: - Price Floor Currency: Currency set in the price floors data object - bidResponse Currency: The currency the bidder returned with their bidResponse back to Prebid -When a bid adapter submits a bid into the auction, the currency module will first determine if any conversion logic is necessary, afterwhich the bid is passed to the Floors Module. If currency conversion occurs at this stage, the bidResponse object will have the following attributes: +When a bid adapter submits a bid into the auction, the currency module will first determine if any conversion logic is necessary, afterwhich the bid is passed to the module. If currency conversion occurs at this stage, the bidResponse object will have the following attributes: - Cpm: The adServerCurrency converted CPM currency - Currency: The currency the adServerCurrency was set in - originalCpm: The original CPM the bidder responded with - originalCurrency: The original currency the bidder responded with -Below is a chart explaining the behavior of currency conversion, if necessary, within the Floors Module when comparing bid CPM to floor CPM for enforcement: +Below is a chart explaining the behavior of currency conversion, if necessary, within the module when comparing bid CPM to floor CPM for enforcement: {: .table .table-bordered .table-striped } | bid.currency | bid.originalCurrency | floor.currency | result | From 0c9006893b52ab4aeadf7c137ffa8992bf903988 Mon Sep 17 00:00:00 2001 From: Gena Date: Thu, 21 Oct 2021 00:59:43 +0300 Subject: [PATCH 516/536] Streamkey doc (#3357) * add Bidsxchange page * Add openweb doc * change params * add streamkey doc --- dev-docs/bidders/streamkey.md | 57 +++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 dev-docs/bidders/streamkey.md diff --git a/dev-docs/bidders/streamkey.md b/dev-docs/bidders/streamkey.md new file mode 100644 index 0000000000..1da16ba537 --- /dev/null +++ b/dev-docs/bidders/streamkey.md @@ -0,0 +1,57 @@ +--- +layout: bidder +title: Streamkey +description: Prebid Streamkey.tv Bidder Adapter +pbjs: true +biddercode: streamkey +aliasCode: adtelligent +media_types: video +--- + +### Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|---------------------------------|----------|-----------| +| `aid` | required | The traffic source ID | `232131` | `integer` | + + +### Test Parameters +``` + var adUnits = [ + + // Video instream adUnit + { + code: 'div-test-div', + sizes: [[640, 480]], + mediaTypes: { + video: { + context: 'instream' + } + }, + bids: [{ + bidder: 'streamkey', + params: { + aid: 331133 + } + }] + }, + + // Video outstream adUnit + { + code: 'outstream-test-div', + sizes: [[640, 480]], + mediaTypes: { + video: { + context: 'outstream' + } + }, + bids: [{ + bidder: 'streamkey', + params: { + aid: 331133 + } + }] + }, + ]; +``` From ccbe2ec00813fad61ec2f45b9d6d5dec5414a44a Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Wed, 20 Oct 2021 15:00:02 -0700 Subject: [PATCH 517/536] NextMillenium Bid Adapter: add gdpr support (#3356) per pr -> https://github.com/prebid/Prebid.js/pull/7593 --- dev-docs/bidders/nextMillennium.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/nextMillennium.md b/dev-docs/bidders/nextMillennium.md index 4d781616af..d4ea8f2998 100644 --- a/dev-docs/bidders/nextMillennium.md +++ b/dev-docs/bidders/nextMillennium.md @@ -5,6 +5,7 @@ description: NextMillennium bid adapter pbjs: true biddercode: nextMillennium media_types: banner +gdpr_supported: true --- ### bid params From 03abdc971ecd2d143cec34d58e182e98dc44c1c3 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Wed, 20 Oct 2021 15:00:09 -0700 Subject: [PATCH 518/536] Undertone Bid Adapter: update schain support (#3352) per pr -> https://github.com/prebid/Prebid.js/pull/7590/files --- dev-docs/bidders/undertone.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/undertone.md b/dev-docs/bidders/undertone.md index 94d743d670..3c079518d2 100644 --- a/dev-docs/bidders/undertone.md +++ b/dev-docs/bidders/undertone.md @@ -6,6 +6,7 @@ biddercode: undertone media_types: display, video gdpr_supported: true usp_supported: true +schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId pbjs: true --- From b9c6e6eb9022d1d00f376cfe6b204bf967fea0b0 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 20 Oct 2021 18:00:30 -0400 Subject: [PATCH 519/536] Update index.md (#3361) --- examples/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/index.md b/examples/index.md index 4a488d159c..c9d62bb27e 100644 --- a/examples/index.md +++ b/examples/index.md @@ -13,7 +13,7 @@ sidebarType: - [Basic Example]({{site.baseurl}}/dev-docs/examples/basic-example.html) - [Prebid Native]({{site.baseurl}}/dev-docs/examples/native-ad-example.html) -- [Prebid Mutli-Format]({{site.baseurl}}/dev-docs/examples/multi-format-example.html) +- [Prebid Multi-Format]({{site.baseurl}}/dev-docs/examples/multi-format-example.html) ## Prebid Video From a3ba7d5b182cad5e95d2a45144913d3fd2d7eff6 Mon Sep 17 00:00:00 2001 From: tamirnPerion <44399211+tamirnPerion@users.noreply.github.com> Date: Thu, 21 Oct 2021 01:06:16 +0300 Subject: [PATCH 520/536] CodeFuel-doc (#3348) --- dev-docs/bidders/codefuel.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 dev-docs/bidders/codefuel.md diff --git a/dev-docs/bidders/codefuel.md b/dev-docs/bidders/codefuel.md new file mode 100644 index 0000000000..f2b9b20833 --- /dev/null +++ b/dev-docs/bidders/codefuel.md @@ -0,0 +1,35 @@ +--- +layout: bidder +title: CodeFuel +description: CodeFuel Prebid Bidder Adapter +pbjs: true +pbs: true +media_types: banner +biddercode: CodeFuel +gdpr_supported: false +usp_supported: false +floors_supported: false +--- + +### Description + +Module that connects to Codefuel bidder to fetch bids. +Display format is supported but not native format. Using OpenRTB standard. + +### Bid Params +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-------------------------------------|------------------------------------------|----------| +| `placementId` | required | Placement-Id defined by the caller | `'0111f8ac-2d40-4613-8557-b47dbf622fff'` | `string` | + + +### Configuration + + +```javascript + pbjs.setConfig({ + codefuel: { + bidderUrl: 'https://prebidtest.zemanta.com/api/bidder/prebidtest/bid/' + } +}); +``` From ffa458c0fff77875301260ec1c33b23cc2106440 Mon Sep 17 00:00:00 2001 From: Chris Huie Date: Wed, 20 Oct 2021 15:06:40 -0700 Subject: [PATCH 521/536] Engageya Bid Adapter: update Prebid 5 compliance (#3346) Per pr -> https://github.com/prebid/Prebid.js/pull/7579 --- dev-docs/bidders/engageya.md | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-docs/bidders/engageya.md b/dev-docs/bidders/engageya.md index 1e8066d8c4..a085c9bd45 100644 --- a/dev-docs/bidders/engageya.md +++ b/dev-docs/bidders/engageya.md @@ -6,7 +6,6 @@ media_type: banner, native biddercode: engageya pbjs: true gdpr_supported: true -pbjs_version_notes: not in 5.x --- ### Bid params From 74768fbdf49f97e4f182a87739ba03ac0522a4ad Mon Sep 17 00:00:00 2001 From: Jurij Sinickij Date: Thu, 21 Oct 2021 01:08:44 +0300 Subject: [PATCH 522/536] Adf adapter: new params added, multiformat bids supported (#3343) --- dev-docs/bidders/adf.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/dev-docs/bidders/adf.md b/dev-docs/bidders/adf.md index 128386ea0a..6854ef685e 100644 --- a/dev-docs/bidders/adf.md +++ b/dev-docs/bidders/adf.md @@ -20,13 +20,15 @@ fpd_supported: true ### Bid params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------------|----------|----------------------|--------------------|-----------| -| `mid` | required | | `12345` | `integer` | -| `adxDomain` | optional | The Adform domain | `'adx.adform.net'` | `string` | -| `priceType` | optional | Price type | `'gross'` | `string` | +| Name | Scope | Description | Example | Type | +|-------------|----------------------------|----------------------|--------------------|-----------| +| `mid` | required, if `inv` and `nmane` not set | Placement ID | `12345` | `integer` | +| `inv` | required, if `mid` not set | Inventory source ID | `1234` | `integer` | +| `mname` | required, if `mid` not set | Placement name | `"Leaderboard"` | `string` | +| `adxDomain` | optional, Prebid.js only | The Adform domain | `"adx.adform.net"` | `string` | +| `priceType` | optional, Prebid.js only | Price type | `"gross"` | `string` | -Note: prebid-server adapter supports only `mid` parameter - other params could be set by adjusting prebid-server openRTB request. +Note: Bid placement should be defined using the `mid` parameter or `inv` and `mname` parameters (dynamic master tag) but not both. ### OpenRTB request config @@ -41,7 +43,3 @@ pbjs.setConfig({ } }); ``` - -### Multi-format ads - -Adform bid adapter does not support multi-format ad unit setup. Please use [twin ad unit codes]({{site.baseurl}}/dev-docs/adunit-reference.html#twin-adunit-codes) to enable multi-format auctions. From f34fa1abeccf5711b125aa2cbbd07cc151987aeb Mon Sep 17 00:00:00 2001 From: bretg Date: Thu, 21 Oct 2021 09:16:50 -0400 Subject: [PATCH 523/536] update (#3364) Replacement for https://github.com/prebid/prebid.github.io/pull/3336, easier than fixing those conflicts --- dev-docs/bidders/nextMillennium.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/nextMillennium.md b/dev-docs/bidders/nextMillennium.md index d4ea8f2998..6b863fd025 100644 --- a/dev-docs/bidders/nextMillennium.md +++ b/dev-docs/bidders/nextMillennium.md @@ -1,11 +1,21 @@ --- layout: bidder title: NextMillennium -description: NextMillennium bid adapter +gdpr_supported: true +usp_supported: true +coppa_supported: false +schain_supported: false +dchain_supported: false +safeframes_ok: false +deals_supported: false +floors_supported: false +fpd_supported: false +pbs_app_supported: false pbjs: true +pbs: true biddercode: nextMillennium media_types: banner -gdpr_supported: true +description: NextMillennium bid adapter --- ### bid params @@ -14,3 +24,6 @@ gdpr_supported: true | Name | Scope | Description | Example | Type | |----------------+----------+------------------------------------------+-----------|---------| | `placement_id` | required | Placement ID, provided by nextMillennium | `'12345'` | String | + +As input parameters, it accepts only `placement_id`, which is issued when registering in NextMillennium. +Further information for the auction on NextMillennium side is generated automatically. From ffc13661ace1374bfef0ee7c38c08dd29a1bc379 Mon Sep 17 00:00:00 2001 From: Samuel Adu Date: Thu, 21 Oct 2021 14:20:20 +0100 Subject: [PATCH 524/536] Company rebranding of ConnectID from Verizon Media -> Yahoo (#3334) * Company rebranding of ConnectID from Verizon Media -> Yahoo * Change module references following source code changes * Fix typo Co-authored-by: slimkrazy --- dev-docs/bidders/aol.md | 2 +- dev-docs/modules/userId.md | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dev-docs/bidders/aol.md b/dev-docs/bidders/aol.md index fb266cb690..6e162546aa 100644 --- a/dev-docs/bidders/aol.md +++ b/dev-docs/bidders/aol.md @@ -7,7 +7,7 @@ biddercode: aol gdpr_supported: true usp_supported: true gvl_id: 25 -userIds: verizonMediaId +userIds: connectId --- ### IMPORTANT NOTICE! diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 5c321ac786..277102ba3d 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -1926,52 +1926,52 @@ pbjs.setConfig({ {% endhighlight %} -### Verizon Media ConnectID +### Yahoo ConnectID -Verizon Media ConnectID is a person based ID and does not depend on 3rd party cookies. It enables ad tech platforms to recognize and match users consistently across the open web. Built on top of Verizon Media’s robust and proprietary ID Graph it delivers a higher find rate of audiences on publishers’ sites user targeting that respects privacy. +Yahoo ConnectID is a person based ID and does not depend on 3rd party cookies. It enables ad tech platforms to recognize and match users consistently across the open web. Built on top of Yahoo’s robust and proprietary ID Graph it delivers a higher find rate of audiences on publishers’ sites user targeting that respects privacy. -Verizon Media ConnectID honors privacy choices from the [Verizon Media Privacy Dashboard](https://www.verizonmedia.com/policies/us/en/verizonmedia/privacy/dashboard/index.html) as well as global privacy acts. +Verizon Media ConnectID honors privacy choices from the [Yahoo Privacy Dashboard](https://legal.yahoo.com/us/en/yahoo/privacy/dashboard/index.html) as well as global privacy acts. -Add support for Verizon Media ConnectID to your Prebid.js package with: +Add support for Yahoo ConnectID to your Prebid.js package with: {: .alert.alert-info :} -gulp build --modules=userId,verizonMediaIdSystem +gulp build --modules=userId,connectIdSystem -#### Verizon Media ConnectID Registration +#### Yahoo ConnectID Registration -A Verizon Media supplied publisher specific pixel Id is required. Reach out to your account manager for assistance with setup. +A Yahoo supplied publisher specific pixel Id is required. Please reach out to your account manager for assistance with setup. -#### Verizon Media ConnectID Configuration +#### Yahoo ConnectID Configuration
    | Param under userSync.userIds[] | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | -| name | Required | String | The name of this module. | `'verizonMediaId'` | +| name | Required | String | The name of this module. | `'connectId'` | | params | Required | Object | Container of all module params. || -| params.pixelId | Required | Number | The Verizon Media supplied publisher specific pixel Id | `8976` | +| params.pixelId | Required | Number | The Yahoo supplied publisher specific pixel Id | `8976` | | params.he | Required | String | The SHA-256 hashed user email address |`'ed8ddbf5a171981db8ef938596ca297d5e3f84bcc280041c5880dba3baf9c1d4'`| | storage | Required | Object | Defines where and for how long the results of the call to get a user ID will be stored. | | | storage.type | Required | String | Defines where the resolved user ID will be stored (either `'cookie'` or `'html5'` localstorage).| `'html5'` | -| storage.name | Required | String | The name of the cookie or html5 localstorage where the resolved user ID will be stored. | `'connectid'` | +| storage.name | Required | String | The name of the cookie or html5 localstorage where the resolved user ID will be stored. | `'connectId'` | | storage.expires | Recommended | Integer | How long (in days) the user ID information will be stored. The recommended value is `15` | `15` | {: .table .table-bordered .table-striped }
    -#### Verizon Media ConnectID Examples +#### Yahoo ConnectID Examples ``` pbjs.setConfig({ userSync: { userIds: [{ - name: "verizonMediaId", + name: "connectId", params: { pixelId: 8976, he: "ed8ddbf5a171981db8ef938596ca297d5e3f84bcc280041c5880dba3baf9c1d4" }, storage: { type: "html5", - name: "connectid", - expires: 1 + name: "connectId", + expires: 15 } }] } @@ -2031,7 +2031,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | SharedID (PBJS 5.x) | n/a | pubcid | pubcid.org | "1111" | | SharedID (PBJS 4.x)| Prebid | sharedid | sharedid.org | {"id":"01EAJWWN...", "third":"01EAJ..."} | | Unified ID | Trade Desk | tdid | adserver.org | "1111" | -| Verizon Media ConnectID | Verizon Media | connectid | verizonmedia.com | "72d04af6..." | +| ConnectID | Yahoo | connectId | yahoo.com | "72d04af6..." | For example, the adapter code might do something like: From 8504618a7fa56027ef6d81c1caf2d49dc35e58cc Mon Sep 17 00:00:00 2001 From: Bugxyb Date: Thu, 21 Oct 2021 21:21:51 +0800 Subject: [PATCH 525/536] Algorix: add placementId Support (#3333) * fix comment for placement id * change required to optional Co-authored-by: xunyunbo --- dev-docs/bidders/algorix.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/algorix.md b/dev-docs/bidders/algorix.md index c9ebaa0fea..48ab5b9694 100644 --- a/dev-docs/bidders/algorix.md +++ b/dev-docs/bidders/algorix.md @@ -17,7 +17,7 @@ prebid_member: true ### Note: -Algorix adapter requires setup and approval from the Algorix team, even for existing in-app developers and publishers. Please reach out to your account team or email to prebid@algorix.co for more information. +AlgoriX adapter requires setup and approval from the AlgoriX team, even for existing in-app developers and publishers. Please reach out to your account team or email to prebid@algorix.co for more information. ### Bid Params @@ -26,5 +26,9 @@ Algorix adapter requires setup and approval from the Algorix team, even for exis |---------------|----------|---------------|--------------------------------------|----------| | `sid` | required | Sid | `'30014'` | `string` | | `token` | required | Token | `'028bca2d3b5c4f0ba155fa34864b0c4d'` | `string` | +| `placementId` | optional | Placement Id | `'123456'` | `string` | +| `appId` | optional | App Id | `'asdasdasd'` | `string` | -Note: Prebid Server adapter only checks for and uses first imp bid params. All other imp bid params are ignored. +Note: +* Prebid Server adapter only checks for and uses first imp bid params. All other imp bid params are ignored. +* placementId and appId will be generated on AlgoriX Platform. From 5524167fc43a1af345ffeba637acbc09fb609538 Mon Sep 17 00:00:00 2001 From: johnwier <49074029+johnwier@users.noreply.github.com> Date: Thu, 21 Oct 2021 06:33:26 -0700 Subject: [PATCH 526/536] Add Publisher Id userid module to the download page (#3331) --- dev-docs/modules/userId.md | 1 + download.md | 3 +++ 2 files changed, 4 insertions(+) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 277102ba3d..ba6ebade2e 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -2025,6 +2025,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | NextRoll ID | NextRoll | nextrollId | nextroll.com | "bf3Ka.../SjP/zpVGr09voA" | | Novatiq ID | Novatiq | novatiqId | novatiq.com | "1111" | | Parrable ID | Parrable | parrableId | parrable.com | {"eid":"01.15946..."} | +| Publisher Link ID | n/a | publinkId | epsilon.com | | | PubProvided ID | n/a | pubProvidedId | publisher domain | "1111" | | Quantcast ID | n/a | quantcastId | quantcast.com | "1111" | | Tapad ID | Tapad | tapadId | tapad.com | "1111" | diff --git a/download.md b/download.md index c648268a4d..d34490f91d 100644 --- a/download.md +++ b/download.md @@ -315,6 +315,9 @@ These modules may require accounts with a service provider.
    + +
    +
    From 988a17d904a3997e97fb679b50efdb8a0a1d3d25 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Thu, 21 Oct 2021 15:39:46 +0200 Subject: [PATCH 527/536] update: Add new format (#3320) --- dev-docs/bidders/bliink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/bliink.md b/dev-docs/bidders/bliink.md index a75f4c10eb..5344187d2b 100644 --- a/dev-docs/bidders/bliink.md +++ b/dev-docs/bidders/bliink.md @@ -4,7 +4,7 @@ title: BLIINK description: Prebid BLIINK Bidder Adaptor pbjs: true pbs: false -media_types: video +media_types: video, banner biddercode: bliink gdpr_supported: true usp_supported: false From 30bb95633bd98ed9dd9e5827d843e7a461654cd8 Mon Sep 17 00:00:00 2001 From: Andrea Fassina Date: Thu, 21 Oct 2021 16:26:18 +0200 Subject: [PATCH 528/536] PBjs core: new BIDDER_ERROR event and onBidderError function called when ajax call fail (#3308) --- dev-docs/bidder-adaptor.md | 39 ++++++++++++++++++- dev-docs/publisher-api-reference/getEvents.md | 1 + troubleshooting/troubleshooting-guide.md | 4 ++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index b7a355ebb8..7050602302 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -194,7 +194,8 @@ export const spec = { getUserSyncs: function(syncOptions, serverResponses, gdprConsent, uspConsent) {}, onTimeout: function(timeoutData) {}, onBidWon: function(bid) {}, - onSetTargeting: function(bid) {} + onSetTargeting: function(bid) {}, + onBidderError: function({ error, bidderRequest }) } registerBidder(spec); @@ -555,6 +556,34 @@ Sample data received by this function: } {% endhighlight %} +### Registering on Bidder Error + +The `onBidderError` function will be called when the bidder responded with an error. Which means that the HTTP response status code is not between `200-299` and not equal to `304`. + +Sample data received by this function: + +{% highlight js %} +{ + error: XMLHttpRequest, + bidderRequest: { + { + auctionId: "b06c5141-fe8f-4cdf-9d7d-54415490a917", + auctionStart: 1579746300522, + bidderCode: "myBidderCode", + bidderRequestId: "15246a574e859f", + bids: [{...}], + gdprConsent: {consentString: "BOtmiBKOtmiBKABABAENAFAAAAACeAAA", vendorData: {...}, gdprApplies: true}, + refererInfo: { + canonicalUrl: undefined, + numIframes: 0, + reachedTop: true, + referer: "http://mypage?pbjs_debug=true" + } + } + } +} +{% endhighlight %} + ### Adding adapter aliases Use aliases if you want to reuse your adapter using other name for your partner/client, or just a shortcut name. @@ -1052,6 +1081,14 @@ export const spec = { onSetTargeting: function(bid) { // Bidder specific code } + + /** + * Register bidder specific code, which will execute if the bidder responded with an error + * @param {error, bidderRequest} An object with the XMLHttpRequest error and the bid request object + */ + onBidderError: function({ error, bidderRequest }) { + // Bidder specific code + } } registerBidder(spec); diff --git a/dev-docs/publisher-api-reference/getEvents.md b/dev-docs/publisher-api-reference/getEvents.md index fb1168f5fd..5964c66b5d 100644 --- a/dev-docs/publisher-api-reference/getEvents.md +++ b/dev-docs/publisher-api-reference/getEvents.md @@ -39,6 +39,7 @@ The available events are: | adRenderSucceeded | Ad rendering succeeded| Object containing the document containing the ad, the bid, and the adId | | auctionDebug | An error was logged to the console | Object containing 'type' and 'arguments' | | bidderDone | A bidder has signaled they are done responding | Bid request object | +| bidderError | A bidder responded with an error | Object with the XMLHttpRequest error and the bid request object `{ error, bidderRequest }` | | tcf2Enforcement | There was a TCF2 enforcement action taken | `{ storageBlocked: ['moduleA', 'moduleB'], biddersBlocked: ['moduleB'], analyticsBlocked: ['moduleC'] }` | The example below shows how these events can be used. diff --git a/troubleshooting/troubleshooting-guide.md b/troubleshooting/troubleshooting-guide.md index 12843faac9..4871292518 100644 --- a/troubleshooting/troubleshooting-guide.md +++ b/troubleshooting/troubleshooting-guide.md @@ -484,6 +484,10 @@ function auctionOptionsLogging() { console.log(`Auction Options: Auction End! Timed Out! Bidders: ${Array.from(new Set(timedOutBidders.map(each => each.bidder))).join(',')} - ${auctionId}`); }) + pbjs.onEvent('bidderError', { error, bidderRequest } => { + console.log(`Auction Error: Bidder ${bidderRequest.bidderCode} responded with ${error.status} ${error.statusText} - ${bidderRequest.auctionId}`); + }) + pbjs.onEvent('auctionEnd', auction => { let auctionId = auction.bidderRequests.length > 0 ? auction.bidderRequests[0].auctionId : 0 let auctionStart = auction.bidderRequests.length > 0 ? auction.bidderRequests[0].auctionStart : 0 From 07d0279da51f98b8076e740ab1840dab7749d1a4 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Thu, 21 Oct 2021 11:49:33 -0400 Subject: [PATCH 529/536] A few gpt location fixes (#3360) * Update simple.html * Update pb-os-app.html * Update pb-os-rd.html * Update pb-os-nas.html * Update pb-os-dfp.html --- _includes/video/pb-os-app.html | 4 ++-- _includes/video/pb-os-dfp.html | 2 +- _includes/video/pb-os-nas.html | 2 +- _includes/video/pb-os-rd.html | 4 ++-- examples/legacy/simple.html | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/_includes/video/pb-os-app.html b/_includes/video/pb-os-app.html index ad8d7977ae..554cdf1a6e 100644 --- a/_includes/video/pb-os-app.html +++ b/_includes/video/pb-os-app.html @@ -4,8 +4,8 @@ {% include head--common.html %} - - + + diff --git a/_includes/video/pb-os-dfp.html b/_includes/video/pb-os-dfp.html index 39dd69f517..fd22f18c4e 100644 --- a/_includes/video/pb-os-dfp.html +++ b/_includes/video/pb-os-dfp.html @@ -4,7 +4,7 @@ {% include head--common.html %} - + diff --git a/_includes/video/pb-os-nas.html b/_includes/video/pb-os-nas.html index 51bebd75aa..e995efd511 100644 --- a/_includes/video/pb-os-nas.html +++ b/_includes/video/pb-os-nas.html @@ -4,7 +4,7 @@ {% include head--common.html %} - + diff --git a/_includes/video/pb-os-rd.html b/_includes/video/pb-os-rd.html index 3c93ee2988..a68d4d5627 100644 --- a/_includes/video/pb-os-rd.html +++ b/_includes/video/pb-os-rd.html @@ -4,8 +4,8 @@ {% include head--common.html %} - - + + diff --git a/examples/legacy/simple.html b/examples/legacy/simple.html index c9a3dd9aa1..2cc6b3fd00 100644 --- a/examples/legacy/simple.html +++ b/examples/legacy/simple.html @@ -2,8 +2,8 @@ - - + +