From a85fe485650ea8309814e4da4a38416b14eb1744 Mon Sep 17 00:00:00 2001
From: denys-berzoy-confiant
<50574764+denys-berzoy-confiant@users.noreply.github.com>
Date: Wed, 28 Dec 2022 20:29:31 +0300
Subject: [PATCH 001/763] Confiant RTD Provider: (#4202)
- initial docs push
---
dev-docs/modules/confiantRtdProvider.md | 57 +++++++++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100644 dev-docs/modules/confiantRtdProvider.md
diff --git a/dev-docs/modules/confiantRtdProvider.md b/dev-docs/modules/confiantRtdProvider.md
new file mode 100644
index 0000000000..538b5452d2
--- /dev/null
+++ b/dev-docs/modules/confiantRtdProvider.md
@@ -0,0 +1,57 @@
+---
+layout: page_v2
+title: Confiant Real-Time Data Provider
+display_name: Confiant Real-Time Protection Module
+description: Confiant Real-Time detection and blocking of bad ads to protect your users and brand reputation
+page_type: module
+module_type: rtd
+module_code : confiantRtdProvider
+enable_download : true
+vendor_specific: true
+sidebarType : 1
+---
+
+# Confiant Real-Time Protection Module
+
+## Overview
+
+Confiant’s module provides comprehensive detection of security, quality, and privacy threats across your ad stack.
+Confiant is the industry leader in real-time detecting and blocking of bad ads when it comes to protecting your users and brand reputation.
+
+To start using this module, please contact [Confiant](https://www.confiant.com/contact) to get an account and customer key.
+
+
+{: .alert.alert-warning :}
+Disclosure: When configured, this module will insert a script, that is loaded from Confiant's CDN and has proprietary code.
+
+## Integration
+
+1) Build Prebid bundle with Confiant module included:
+
+
+```
+gulp build --modules=confiantRtdProvider,...
+```
+
+2) Include the resulting bundle on your page.
+
+# Configuration
+
+Configuration of Confiant module is plain simple:
+
+```javascript
+pbjs.setConfig({
+ realTimeData: {
+ dataProviders: [{
+ name: 'confiant',
+ params: {
+ // so please get in touch with us so we could help you to set up the module with proper parameters
+ propertyId: '', // required, string param, obtained from Confiant Inc.
+ prebidExcludeBidders: '', // optional, comma separated list of bidders to exclude from Confiant's prebid.js integration
+ prebidNameSpace: '', // optional, string param, namespace for prebid.js integration
+ shouldEmitBillableEvent: false, // optional, boolean param, upon being set to true enables firing of the BillableEvent upon Confiant's impression scanning
+ }
+ }]
+ }
+});
+```
From 727871e5139265332d705b6e4040cfcfbed009ee Mon Sep 17 00:00:00 2001
From: Jean Stemp <38964447+jeanstemp@users.noreply.github.com>
Date: Tue, 3 Jan 2023 07:31:35 -0800
Subject: [PATCH 002/763] Reworked example template (#4233)
* Reworked example template
* adding note about modules
Co-authored-by: Jean Stemp
Co-authored-by: bretg
---
.../dev-docs/build-from-source-warning.md | 5 +-
.../dev-docs/not-for-production-warning.md | 1 +
_layouts/example.html | 50 ++++++++++++-------
dev-docs/examples/adunit-refresh.md | 4 +-
dev-docs/examples/basic-example.md | 2 +-
dev-docs/examples/custom-price-buckets.md | 4 +-
dev-docs/examples/instream-banner-mix.md | 3 ++
dev-docs/examples/legacy-browser-example.md | 4 +-
dev-docs/examples/meta-bid-filtering.md | 2 +-
dev-docs/examples/multi-format-example.md | 2 +-
dev-docs/examples/no-adserver.md | 2 +-
dev-docs/examples/postbid.md | 2 +-
dev-docs/examples/size-mapping.md | 2 +-
dev-docs/examples/sync-tid.md | 2 +-
.../use-prebid-with-appnexus-ad-server.md | 6 +--
15 files changed, 52 insertions(+), 39 deletions(-)
create mode 100644 _includes/dev-docs/not-for-production-warning.md
diff --git a/_includes/dev-docs/build-from-source-warning.md b/_includes/dev-docs/build-from-source-warning.md
index 29b8d3700d..a05f683ee5 100644
--- a/_includes/dev-docs/build-from-source-warning.md
+++ b/_includes/dev-docs/build-from-source-warning.md
@@ -1,4 +1 @@
-
-
-This example uses a test version of Prebid.js hosted on our CDN that is not recommended for production use. It includes all available adapters. Production implementations should build from source or customize the build using the Download page to make sure only the necessary bidder adapters are included.
-
+
This example includes all available adapters and modules. Production implementations should build from source or customize the build using the Download page to make sure only the necessary bidder adapters and modules are included.
diff --git a/_includes/dev-docs/not-for-production-warning.md b/_includes/dev-docs/not-for-production-warning.md
new file mode 100644
index 0000000000..6a6837a7dc
--- /dev/null
+++ b/_includes/dev-docs/not-for-production-warning.md
@@ -0,0 +1 @@
+
This example uses a test version of Prebid.js hosted on our CDN that is not recommended for production use.
\ No newline at end of file
diff --git a/_layouts/example.html b/_layouts/example.html
index c917458838..c86ea1d509 100644
--- a/_layouts/example.html
+++ b/_layouts/example.html
@@ -33,7 +33,7 @@
+
+
+
+
+
diff --git a/dev-docs/examples/adunit-refresh.md b/dev-docs/examples/adunit-refresh.md
index b5fb6488ce..4948da6ff5 100644
--- a/dev-docs/examples/adunit-refresh.md
+++ b/dev-docs/examples/adunit-refresh.md
@@ -6,8 +6,8 @@ description: Individual Ad Unit Refresh / Infinite Scroll
sidebarType: 1
about:
-- Ability to refresh individual ad units - useful for infinite scrolling ad slots
-- When auto-refreshing is done incorrectly, it could cause the same bids to be rendered repeatedly. For instance, when googletag.pubads.refresh() is called directly without removing the PBJS targeting, the same hb_ variables get re-sent to GAM, re-chosen, and re-rendered. Over and over without ever asking PBJS for updated targeting variables. Please see Auction Options for more info.
+- Demonstrates the ability to refresh individual ad units. This is useful for infinite scrolling ad slots.
+- Keep in mind that when auto-refreshing is done incorrectly, it could cause the same bids to be rendered repeatedly. For instance, when googletag.pubads.refresh() is called directly without removing the PBJS targeting, the same hb_ variables get re-sent to GAM, re-chosen, and re-rendered over and over without ever asking PBJS for updated targeting variables. See Auction Options for more info.
jsfiddle_link: jsfiddle.net/Prebid_Examples/cu7tpexf/embedded/html,result
diff --git a/dev-docs/examples/basic-example.md b/dev-docs/examples/basic-example.md
index 929567b8d4..c0690ec44e 100644
--- a/dev-docs/examples/basic-example.md
+++ b/dev-docs/examples/basic-example.md
@@ -7,7 +7,7 @@ sidebarType: 1
about:
-- Asynchronous Prebid.js integration with single Google Ad Manager ad slot
+- This example demonstrates asynchronous Prebid.js integration with a single Google Ad Manager ad slot
- Default keyword targeting setup (reference)
- Default price granularity
diff --git a/dev-docs/examples/custom-price-buckets.md b/dev-docs/examples/custom-price-buckets.md
index b3097c781d..99bb9da56b 100644
--- a/dev-docs/examples/custom-price-buckets.md
+++ b/dev-docs/examples/custom-price-buckets.md
@@ -6,8 +6,8 @@ description: Custom Price Granularity Buckets
sidebarType: 1
about:
-- Custom price granularity buckets using pbjs.setConfig()
-- See the the API reference for more detail.
+- This example shows custom price granularity buckets using pbjs.setConfig().
+- See the API reference for more detail.
jsfiddle_link: jsfiddle.net/Prebid_Examples/vq05dhnj/embedded/html,result
diff --git a/dev-docs/examples/instream-banner-mix.md b/dev-docs/examples/instream-banner-mix.md
index 2a315ef437..0394bafa15 100644
--- a/dev-docs/examples/instream-banner-mix.md
+++ b/dev-docs/examples/instream-banner-mix.md
@@ -5,6 +5,9 @@ description: An example of displaying both instream video and banner ads using P
sidebarType: 1
+about:
+- This example shows how to display instream video and banner ads within the same configuration.
+
jsfiddle_link: jsfiddle.net/Prebid_Examples/nowfejh7/embedded/html,result/
code_height: 3050
diff --git a/dev-docs/examples/legacy-browser-example.md b/dev-docs/examples/legacy-browser-example.md
index 253e67c547..cae6e4c6c0 100644
--- a/dev-docs/examples/legacy-browser-example.md
+++ b/dev-docs/examples/legacy-browser-example.md
@@ -8,8 +8,8 @@ sidebarType: 1
about:
- In Prebid 6.0, support for legacy browsers is no longer assured.
- Publishers may conditionally deploy the 5.x branch and add polyfills
-- One strategy to do this is simply the module/nomodule approach discussed here https://philipwalton.com/articles/deploying-es2015-code-in-production-today/
-- Another strategy is to detect the user agent or the 'currentScript' mechanism as described here https://stackoverflow.com/questions/29987969/how-to-load-a-script-only-in-ie
+- One strategy to do this is simply the module/nomodule approach discussed here https://philipwalton.com/articles/deploying-es2015-code-in-production-today/
+- Another strategy is to detect the user agent or the 'currentScript' mechanism as described here https://stackoverflow.com/questions/29987969/how-to-load-a-script-only-in-ie
- Another strategy is to conditionally serve one file or another based on instructions to your cdn
jsfiddle_link: jsfiddle.net/Prebid_Examples/kqe8L2jf/embedded/html,result
diff --git a/dev-docs/examples/meta-bid-filtering.md b/dev-docs/examples/meta-bid-filtering.md
index 0d6433a202..f31e6bcd0c 100644
--- a/dev-docs/examples/meta-bid-filtering.md
+++ b/dev-docs/examples/meta-bid-filtering.md
@@ -6,8 +6,8 @@ description: Bid filtering on meta object example
sidebarType: 1
about:
-- Bidders can supply metadata about the bid such as advertiser domain. See the "meta" fields in the bid response for the full list.
- This is an example that filters bid responses based on the metadata object.
+- Bidders can supply metadata about the bid such as advertiser domain. See the "meta" fields in the bid response for the full list of metadata.
jsfiddle_link: jsfiddle.net/Prebid_Examples/0s4eug1d/embedded/html,result
diff --git a/dev-docs/examples/multi-format-example.md b/dev-docs/examples/multi-format-example.md
index 91672d749d..781c7bf5c9 100644
--- a/dev-docs/examples/multi-format-example.md
+++ b/dev-docs/examples/multi-format-example.md
@@ -6,7 +6,7 @@ description: Multi-Format Ad Units
sidebarType: 1
about:
-- A multi-format ad unit allows you receive any combination of banner, video, or native demand
+- A multi-format ad unit allows you to receive any combination of banner, video, or native demand
- Any bidder that supports at least one of the listed media types can participate in the auction for that ad unit
- For engineering setup instructions, see Show Multi-Format Ads
- For ad ops setup instructions, see Google Ad Manager with Prebid Step by Step
diff --git a/dev-docs/examples/no-adserver.md b/dev-docs/examples/no-adserver.md
index a1e7d3d11b..70fb772aac 100644
--- a/dev-docs/examples/no-adserver.md
+++ b/dev-docs/examples/no-adserver.md
@@ -6,7 +6,7 @@ description: Running Prebid.js without an ad server
sidebarType: 1
about:
-- Running an auction and rendering without an ad server
+- This example demonstrates running an auction and rendering without an ad server.
jsfiddle_link: jsfiddle.net/Prebid_Examples/svumodbe/embedded/html,result
diff --git a/dev-docs/examples/postbid.md b/dev-docs/examples/postbid.md
index 9552400247..2a64381aa2 100644
--- a/dev-docs/examples/postbid.md
+++ b/dev-docs/examples/postbid.md
@@ -10,7 +10,7 @@ why_link: /overview/what-is-post-bid.html
about:
- Postbid is a third-party tag creative you setup in your ad server that loads the whole Prebid.js package. Create a line item in the ad server targeting each ad unit on your page. The creative will contain the code below.
-- If the ad unit supports multiple sizes, you'll need to do one of two things -- either create a Postbid creative for each desired size with that size hardcoded in the PBJS adunit, or use ad server macros to pass the size through to the creative. e.g. in GAM, there are HEIGHT and WIDTH macros.
+- If the ad unit supports multiple sizes, you'll need to do one of two things -- either create a Postbid creative for each desired size with that size hardcoded in the PBJS adunit, or use ad server macros to pass the size through to the creative. For example, in Google Ad Manager there are HEIGHT and WIDTH macros.
- There is no need to create line items for each price bucket as the postbid creative is served after the ad server has chosen the line item.
- This postbid creative supports passback. See how this works below.
diff --git a/dev-docs/examples/size-mapping.md b/dev-docs/examples/size-mapping.md
index fc96faeefe..eb87f20109 100644
--- a/dev-docs/examples/size-mapping.md
+++ b/dev-docs/examples/size-mapping.md
@@ -7,7 +7,7 @@ sidebarType: 1
about:
-- Dynamic filtering on ad unit sizes
+- This example demonstrates dynamic filtering on ad unit sizes
- Ad unit labels applied based on CSS media queries
jsfiddle_link: jsfiddle.net/Prebid_Examples/qourvse1/embedded/html,result
diff --git a/dev-docs/examples/sync-tid.md b/dev-docs/examples/sync-tid.md
index 16b173aa13..acba990c8d 100644
--- a/dev-docs/examples/sync-tid.md
+++ b/dev-docs/examples/sync-tid.md
@@ -8,7 +8,7 @@ sidebarType: 1
about:
- imp.ext.tid sync
-- This example demonstrates sending the same impression transaction identifier (imp.ext.tid) to two on page libraries
+- This example demonstrates sending the same impression transaction identifier (imp.ext.tid) to two on page libraries.
jsfiddle_link: jsfiddle.net/50aqtrck/1/embedded/html,result
diff --git a/dev-docs/examples/use-prebid-with-appnexus-ad-server.md b/dev-docs/examples/use-prebid-with-appnexus-ad-server.md
index dba3c03674..3b68747f7d 100644
--- a/dev-docs/examples/use-prebid-with-appnexus-ad-server.md
+++ b/dev-docs/examples/use-prebid-with-appnexus-ad-server.md
@@ -6,9 +6,9 @@ description: Using Prebid.js with Xandr Publisher Ad Server
sidebarType: 1
about:
-- An example showing how to use Prebid.js with Xandr Publisher Ad Server
-- See the Seller Tag (AST) documentation for more information
-- To configure the Seller Tag to use SafeFrames, refer to the SafeFrame API Reference.
+- This example shows how to use Prebid.js with Xandr Publisher Ad Server.
+- See the Seller Tag (AST) documentation for more information.
+- To configure the Seller Tag to use SafeFrames, refer to the SafeFrame API Reference.
jsfiddle_link: jsfiddle.net/Prebid_Examples/tr1djf9e/embedded/html,result
code_height: 2404
From aae2dd8f09fdbb9b6f4f6e15e2133aa19d7711d6 Mon Sep 17 00:00:00 2001
From: Jean Stemp <38964447+jeanstemp@users.noreply.github.com>
Date: Tue, 3 Jan 2023 07:36:06 -0800
Subject: [PATCH 003/763] Site cleanup for minor issues (#4239)
* Site cleanup for minor issues
* typo
Co-authored-by: Jean Stemp
Co-authored-by: bretg
---
debugging/debugging.md | 10 ++---
dev-docs/add-video-submodule.md | 11 ++---
dev-docs/bidder-adaptor.md | 4 +-
dev-docs/common-issues.md | 5 ++-
dev-docs/conditional-ad-units.md | 12 +++---
features/adServerKvps.md | 40 +++++++++----------
formats/amp.md | 2 +-
.../openrtb2/pbs-endpoint-auction.md | 33 +++++++--------
prebid-server/features/pbs-feature-idx.md | 2 +-
support/index.md | 8 ++--
10 files changed, 64 insertions(+), 63 deletions(-)
diff --git a/debugging/debugging.md b/debugging/debugging.md
index 906dba744c..3bc3f007f8 100644
--- a/debugging/debugging.md
+++ b/debugging/debugging.md
@@ -9,15 +9,15 @@ sidebarType: 1
# Chrome Extension for Debugging Prebid.js
-Prebid.Org supports the Chrome extension [Headerbid Expert](https://chrome.google.com/webstore/detail/headerbid-expert/cgfkddgbnfplidghapbbnngaogeldmop). Web publishers can use this tool to understand how their Prebid.js header bidding partners are doing:
+Prebid.Org supports the Chrome extension [Headerbid Expert](https://chrome.google.com/webstore/detail/headerbid-expert/cgfkddgbnfplidghapbbnngaogeldmop). Web publishers can use this tool to understand how their Prebid.js header bidding partners are doing. For example:
-1. What's the latency from each header bidding partner?
-1. Do they load asynchronously or are they blocking my pages?
-1. Are they all loaded together in parallel?
+- What's the latency from each header bidding partner?
+- Do they load asynchronously or are they blocking my pages?
+- Are they all loaded together in parallel?
Use the tool to determine whether a page might be under-monetized or could
benefit from implementation improvements.
-Further Reading
+## Further Reading
+ [Prebid.js Troubleshooting Guide](/dev-docs/prebid-troubleshooting-guide.html)
diff --git a/dev-docs/add-video-submodule.md b/dev-docs/add-video-submodule.md
index e0ee0109bf..811494d780 100644
--- a/dev-docs/add-video-submodule.md
+++ b/dev-docs/add-video-submodule.md
@@ -15,7 +15,7 @@ Video submodules interact with the Video Module to integrate Prebid with Video P
- populate the oRTB Video Impression and Content params in the bid request.
* TOC
- {:toc }
+{:toc }
## Overview
@@ -44,7 +44,7 @@ Working with any Prebid project requires using Github. In general, we recommend
4. Open a [pull request](https://help.github.com/en/desktop/contributing-to-projects/creating-a-pull-request) to the appropriate repository's master branch with a good description of the feature/bug fix.
5. If there's something that needs to change on the prebid.org website, follow the above steps for the [website repo](https://github.com/prebid/prebid.github.io).
-### Step 1: Add a markdown file describing the submodule
+### Step 1: Add a Markdown File Describing the Submodule
Create a markdown file under `modules` with the name of the module suffixed with 'VideoProvider', i.e. `exampleVideoProvider.md`.
@@ -77,7 +77,7 @@ i.e. in `vendorCodes.js`:
export const EXAMPLE_PLAYER_VENDOR = 3;
{% endhighlight %}
-### Step 2: Build the Module
+### Step 3: Build the Module
Now create a javascript file under `modules` with the name of the module suffixed with 'VideoProvider', e.g., `exampleVideoProvider.js`.
@@ -107,6 +107,7 @@ submodule('video', exampleSubmoduleFactory);
#### The Submodule object
The submodule object must adhere to the following interface:
+
{: .table .table-bordered .table-striped }
| param name | type | Scope | Description | Arguments | Return type |
| :---------- | :---- | :---- | :---------- | :-------- | :---------- |
@@ -135,7 +136,7 @@ const exampleSubmodule = {
-#### Event registration
+#### Event Registration
Submodules must support attaching and detaching event listeners on the video player. The list of events and their respective params are defined in the [Video Module docs's Events section]({{site.github.url}}/prebid-video/video-module.html#events).
@@ -167,7 +168,7 @@ In prebid.js, add your new submodule to `.submodules.json` under the `videoModul
}
{% endhighlight %}
-### Shared resources for developers
+## Shared Resources for Developers
A video library containing reusable code and constants has been added to Prebid.js for your convenience. We encourage you to import from this library.
Constants such as event names can be found in the `libraries/video/constants/` folder.
diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md
index f8d49607fc..d2933faf24 100644
--- a/dev-docs/bidder-adaptor.md
+++ b/dev-docs/bidder-adaptor.md
@@ -1199,7 +1199,7 @@ registerBidder(spec);
- Create a docs pull request against [prebid.github.io](https://github.com/prebid/prebid.github.io)
- Fork the repo
- Copy a file in [dev-docs/bidders](https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders) and name it to exactly the same as your biddercode. Add the following metadata to the header of your .md file:
- - Add 'biddercode' and set it to the code that publishers should be using to reference your bidder in an AdUnit. This needs to be the same name as the docs file!
+ - Add 'biddercode' and set it to the code that publishers should be using to reference your bidder in an AdUnit. *This needs to be the same name as the docs file!*
- Add 'aliasCode' if your biddercode is not the same name as your PBJS implementation file. e.g. if your biddercode is "ex", but the file in the PBJS repo is exampleBidAdapter.js, this value needs to be "example".
- 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`.
@@ -1217,6 +1217,7 @@ registerBidder(spec);
- If you support any OpenRTB blocking parameters, you must document what exactly is supported and then you may set `ortb_blocking_supported` to 'true','partial', or 'false'. No default value. In order to set 'true', you must support: bcat, badv, battr, and bapp.
- Let publishers know how you support multiformat requests -- those with more than one mediatype (e.g. both banner and video). Here are the options: will-bid-on-any, will-bid-on-one, will-not-bid
- If you're a member of Prebid.org, add `prebid_member: true`. Default is false.
+ - Always add `sidebarType: 1`. This is required for docs.prebid.org site navigation.
- Submit both the code and docs pull requests
For example:
@@ -1244,6 +1245,7 @@ pbs: true/false
prebid_member: true/false
multiformat_supported: will-bid-on-any, will-bid-on-one, will-not-bid
ortb_blocking_supported: true/partial/false
+sidebarType: 1
---
### Note:
diff --git a/dev-docs/common-issues.md b/dev-docs/common-issues.md
index ac9cd05993..24138d7695 100644
--- a/dev-docs/common-issues.md
+++ b/dev-docs/common-issues.md
@@ -37,7 +37,8 @@ Check the bid prices. If they are low and are getting reduced to $0 due to price
## Related Reading
{:toc}
-+ [Prebid.js FAQ](/dev-docs/faq.html)
-+ [Prebid Tips for Troubleshooting](/troubleshooting/troubleshooting-guide.html)
+- [Prebid.js FAQ](/dev-docs/faq.html)
+- [Prebid Tips for Troubleshooting](/troubleshooting/troubleshooting-guide.html)
+- [Price Granularity](/adops/price-granularity.html)
diff --git a/dev-docs/conditional-ad-units.md b/dev-docs/conditional-ad-units.md
index 586416930b..dfcfbbc799 100644
--- a/dev-docs/conditional-ad-units.md
+++ b/dev-docs/conditional-ad-units.md
@@ -13,12 +13,12 @@ sidebarType: 1
# Conditional Ad Units
{:.no_toc}
-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:
+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}
-By supporting these scenarios, header bidding can be more efficient - the browser can send bids to a more surgical set of bidders based on device size or other attributes the page code can create.
+By supporting these scenarios, header bidding can be more efficient; the browser can send bids to a more surgical set of bidders based on device size or other attributes the page code can create.
The basic steps are:
@@ -27,7 +27,7 @@ The basic steps are:
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?
+## Some Bidders Should Be Skipped for Some Devices
{: .alert.alert-info :}
See the [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) for another way to handle this scenario. Note that you must use Advanced Size Mapping for mediaTypes other than banner.
@@ -95,7 +95,7 @@ How this works:
1. The first bid doesn't have any conditional logic, so is present in every auction.
1. The second bid requires that "phone" be present in the label array, otherwise it won't be part of the auction.
-## What if some bidders have different parameters for different devices?
+## Some Bidders Have Different Parameters for Different Devices
For reporting and targeting purposes, Publishers and SSPs sometimes break out different inventory structures for different platforms.
@@ -188,7 +188,7 @@ var AdUnits = [{
{% endhighlight %}
-## What if some ad unit auctions should be skipped entirely for some devices?
+## Some Ad Unit Auctions Should Be Skipped Entirely for Some Devices
Say there's a responsive page where one of the ad units only supports larger sizes, so it doesn't make sense
on phones. To suppress the ad unit for mobile users, we can apply conditional logic to the entire ad unit. Here's an example using the global sizeConfig approach (banner only):
@@ -223,7 +223,7 @@ See the [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) if
{% endhighlight %}
-## What if some bid requests apply only to users originating certain from countries?
+## Some Bid Requests Apply Only to Users Originating from Certain 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()`](/dev-docs/publisher-api-reference/requestBids.html) function as an argument.
diff --git a/features/adServerKvps.md b/features/adServerKvps.md
index 0db05e0539..8d13a0e1cf 100644
--- a/features/adServerKvps.md
+++ b/features/adServerKvps.md
@@ -37,20 +37,19 @@ How a publisher should configure Prebid.js to report auction results
will depend on how the final ad decision will be made. These approaches
need to be in sync.
-There are four main scenarios that follow.
+There are four main scenarios, described in the following sections.
### Ad Server Line Items are Created Per-Bidder
In order to have header bidding compete with direct-sold demand,
a publisher can set up placeholder line items in their ad server.
-Prebid.org recommends setting up separate line items
-for each bidder. Benefits:
-- use ad server reporting to get a view of which bidders are performing well
-- control ad decisions with the ad server
-- video bids have a fallback available
+Prebid.org recommends setting up separate line items for each bidder. Benefits to this approach include:
+- You can use ad server reporting to get a view of which bidders are performing well.
+- You can control ad decisions with the ad server.
+- Video bids have a fallback available.
-There are more details on this scenario in the [Ad Ops section](/adops/before-you-start.html#one-set-of-line-items-for-each-bidder).
+There are more details on this scenario in the [Ad Ops section](/adops/send-all-vs-top-price.html).
Once implemented in the ad server, setting this up in Prebid.js is
simple, as it is the default [Send All Bids](#send-all-kvps) mode. However
@@ -65,11 +64,10 @@ publishers monitor the key traffic and [control](#controls) as necessary.
### Only One Set of Ad Server Line Items are Created
-However, there are reasons a publisher may not want to create
-separate line items for each bidder:
-- some ad servers have a limit on how many line items can be created
-- it takes work to set up line items
-- the volume of key-value pairs can be a factor
+There are reasons a publisher may not want to create separate line items for each bidder. For example:
+- Some ad servers have a limit on how many line items can be created.
+- It takes work to set up line items.
+- The volume of key-value pairs (KVPs) can be a factor.
So the other ad-server based solution is to create one set of line
items that is used by all bidders.
@@ -77,6 +75,8 @@ items that is used by all bidders.
Setting this mode up in Prebid.js is done by setting [enableSendAllBids](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Send-All-Bids)
to false. See the [Bare Minimum solution](#the-bare-minimum-for-display-ads) for reference.
+See [Send All Bids vs Top Price](/adops/send-all-vs-top-price.html) for ad ops details on this scenario.
+
### Post-Bid
Sometimes Prebid.js is used as a fallback. This mode is called [PostBid](/overview/what-is-post-bid.html)
@@ -97,7 +97,7 @@ In early versions of Prebid.js, there were a couple of basic functions
publishers could use to get the auction results:
- [pbjs.setTargetingForGPTAsync](/dev-docs/publisher-api-reference/setTargetingForGPTAsync.html) - matches Google Publisher Toolkit ad slots to Prebid.js AdUnits, obtains the auction results for that adunit, and adds "targeting" values using GPT-provided functions.
-- [pbjs.getAdserverTargeting](/dev-docs/publisher-api-reference/getAdserverTargeting.html) - a more generic interface for obtaining KVPs
+- [pbjs.getAdserverTargeting](/dev-docs/publisher-api-reference/getAdserverTargeting.html) - a more generic interface for obtaining KVPs.
All of the other functions available in the [publisher API](/dev-docs/publisher-api-reference.html) for obtaining auction bids came later.
@@ -110,7 +110,7 @@ That approach has been deprecated -- all implementations should now use [one of
### Video
Video's always been a different implementation than banners because
-it's the video player that controls the ad call, not in-page javascript like
+it's the video player that controls the ad call, not in-page JavaScript like
the GPT library. So the [Google Ad Manager Video module](/dev-docs/modules/dfp_video.html) includes the [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) function.
Publishers using other ad servers need to integrate on their own
@@ -128,10 +128,7 @@ targeting configuration](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.
## Controls
-Over the years, quite a few options have been added to to Prebid.js to adjust the number of bids and the exact set of KVPs sent to the ad server. This is an overlapping-but-powerful set of controls. There are often
-
-multiple ways to implement the same requirements, and there's no "wrong"
-way to do it.
+Over the years, quite a few options have been added to to Prebid.js to adjust the number of bids and the exact set of KVPs sent to the ad server. This is an overlapping-but-powerful set of controls. There are often multiple ways to implement the same requirements, and there's no "wrong" way to do it.
The list is ordered by those functions that Prebid recommends starting with:
@@ -178,7 +175,7 @@ pbjs.setConfig({
});
```
-Note: this example lacks video support, deal support, and doesn't even tell you which bidder won.
+Note: This example lacks video support, deal support, and doesn't even tell you which bidder won.
#### Top Two Bids and Deals
@@ -194,8 +191,7 @@ pbjs.setConfig({
}
});
```
-Notes:
-- this assumes that video creatives are set up refering to HB_UUID rather than bidder-specific UUID values.
+Note: This assumes that video creatives are set up refering to HB_UUID rather than bidder-specific UUID values.
#### Completely Custom KVPs
@@ -237,7 +233,7 @@ pbjs.bidderSettings={
};
```
-## Related Topics
+## Further Reading
- [Prebid.js Publisher API setConfig() routine](/dev-docs/publisher-api-reference/setConfig.html)
- [Ad Ops and Prebid](/adops/before-you-start.html)
diff --git a/formats/amp.md b/formats/amp.md
index 6a56c9d5aa..aa21216ab0 100644
--- a/formats/amp.md
+++ b/formats/amp.md
@@ -22,7 +22,7 @@ At a high level, setting up AMP pages for header bidding with Prebid has these s
## Ad Ops
-+ [Google Ad Manager with Prebid Stpe by Step](/adops/step-by-step.html)
++ [Google Ad Manager with Prebid Step by Step](/adops/step-by-step.html)
## Developers
diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
index ea81a30ce9..73c53f7ef5 100644
--- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
+++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
@@ -61,7 +61,7 @@ This endpoint will respond with either:
- HTTP 400 if the request is malformed, or
- HTTP 503 if the account or app specified in the request is blacklisted
-This is a corresponding sample response to sample OpenRTB 2.5 bid request:
+This is a corresponding sample response to a sample OpenRTB 2.5 bid request:
```
{
@@ -261,10 +261,10 @@ Note that video-outstream is defined to be imp[].video requests where imp[].vide
##### Targeting
-Targeting refers to strings which are sent to the adserver to
-[make header bidding possible](/overview/intro.html#how-does-prebid-work).
+Targeting refers to strings that are sent to the adserver to
+[make header bidding possible](/overview/intro.html).
-`request.ext.prebid.targeting` is an optional property which causes Prebid Server
+`request.ext.prebid.targeting` is an optional property that causes Prebid Server
to set these params on the response at `response.seatbid[i].bid[j].ext.prebid.targeting`.
{: .table .table-bordered .table-striped }
@@ -311,9 +311,9 @@ to set these params on the response at `response.seatbid[i].bid[j].ext.prebid.ta
}
}
```
-The list of price granularity ranges must be given in order of increasing `max` values. If `precision` is omitted, it will default to `2`. The minimum of a range will be 0 or the previous `max`. Any cmp above the largest `max` will go in the `max` pricebucket.
+The list of price granularity ranges must be given in order of increasing `max` values. If `precision` is omitted, it will default to `2`. The minimum of a range will be 0 or the previous `max`. Any cpm above the largest `max` will go in the `max` pricebucket.
-For backwards compatibility the following strings will also be allowed as price granularity definitions. There is no guarantee that these will be honored in the future. "One of ['low', 'med', 'high', 'auto', 'dense']" See [price granularity definitions](/adops/price-granularity.html)
+For backwards compatibility the following strings will also be allowed as price granularity definitions. There is no guarantee that these will be honored in the future. "One of ['low', 'med', 'high', 'auto', 'dense']" See [price granularity definitions](/adops/price-granularity.html).
One of "includewinners" or "includebidderkeys" must be true (both default to false if unset). If both are false, then no targeting keys will be set, which is better configured by omitting targeting altogether.
@@ -608,7 +608,7 @@ If the keys exist, the values can be used to fetch the bid's VAST XML from Prebi
##### GDPR
-Prebid Server supports the IAB's GDPR recommendations, which can be found [here](https://iabtechlab.com/wp-content/uploads/2018/02/OpenRTB_Advisory_GDPR_2018-02.pdf).
+Prebid Server supports the IAB's [GDPR recommendations](https://iabtechlab.com/wp-content/uploads/2018/02/OpenRTB_Advisory_GDPR_2018-02.pdf).
This adds two optional properties:
@@ -619,8 +619,8 @@ These fields will be forwarded to each Bidder, so they can decide how to process
##### Interstitial support
Additional support for interstitials is enabled through the addition of two fields to the request:
-device.ext.prebid.interstitial.minwidthperc and device.ext.interstitial.minheightperc
-The values will be numbers that indicate the minimum allowed size for the ad, as a percentage of the base side. For example, a width of 600 and "minwidthperc": 60 would allow ads with widths from 360 to 600 pixels inclusive.
+`device.ext.prebid.interstitial.minwidthperc` and `device.ext.interstitial.minheightperc`.
+The values will be numbers that indicate the minimum allowed size for the ad, as a percentage of the base side. For example, a width of 600 and `"minwidthperc": 60` would allow ads with widths from 360 to 600 pixels inclusive.
Example:
```
@@ -647,8 +647,9 @@ Example:
}
```
-PBS receiving a request for an interstitial imp and these parameters set, it will rewrite the format object within the interstitial imp. If the format array's first object is a size, PBS will take it as the max size for the interstitial. If that size is 1x1, it will look up the device's size and use that as the max size. If the format is not present, it will also use the device size as the max size. (1x1 support so that you don't have to omit the format object to use the device size)
-PBS with interstitial support will come preconfigured with a list of common ad sizes. Preferentially organized by weighing the larger and more common sizes first. But no guarantees to the ordering will be made. PBS will generate a new format list for the interstitial imp by traversing this list and picking the first 10 sizes that fall within the imp's max size and minimum percentage size. There will be no attempt to favor aspect ratios closer to the original size's aspect ratio. The limit of 10 is enforced to ensure we don't overload bidders with an overlong list. All the interstitial parameters will still be passed to the bidders, so they may recognize them and use their own size matching algorithms if they prefer.
+If PBS receives a request for an interstitial imp and these parameters are set, it will rewrite the format object within the interstitial imp. If the format array's first object is a size, PBS will take it as the max size for the interstitial. If that size is 1x1, it will look up the device's size and use that as the max size. If the format is not present, it will also use the device size as the max size (1x1 support so that you don't have to omit the format object to use the device size).
+
+PBS with interstitial support will come preconfigured with a list of common ad sizes,preferentially organized by weighing the larger and more common sizes first. But no guarantees to the ordering will be made. PBS will generate a new format list for the interstitial imp by traversing this list and picking the first 10 sizes that fall within the imp's max size and minimum percentage size. There will be no attempt to favor aspect ratios closer to the original size's aspect ratio. The limit of 10 is enforced to ensure we don't overload bidders with an overlong list. All the interstitial parameters will still be passed to the bidders, so they may recognize them and use their own size matching algorithms if they prefer.
##### Currency Support
@@ -673,7 +674,7 @@ define ext.prebid.currency.rates.
}
```
-If it exists, a rate defined in ext.prebid.currency.rates has the highest priority.
+If it exists, a rate defined in `ext.prebid.currency.rates` has the highest priority.
If a currency rate doesn't exist in the request, the external file will be used.
An additional option is `usepbsrates`. When `true`, this flag indicates that dynamic currency exchange rates should be preferred over any supplied static rates. When `false`, it indicates that dynamic exchange rates should not be used. The default is 'true'.
@@ -825,7 +826,7 @@ This request:
}
```
-Will result in this response, assuming that the ids exist in the appropriate DB table read by Prebid Server:
+will result in this response, assuming that the ids exist in the appropriate DB table read by Prebid Server:
```
{
"id": "test-auction-id",
@@ -958,11 +959,11 @@ Could result in this response:
```
Notes:
-- the DB entries for this stored-response scenario are quite different: they need to be in whatever format the bid adapter's endpoint responds with. i.e. the host company will need to capture an actual bid response from the specific bidders and enter it into the DB table.
-- the `replaceimpid` parameter tells PBS to ignore the impid supplied in the DB and instead create/overwrite seatbid.bid.impid with the value that matches the incoming request. This simplifies debugging.
+- The DB entries for this stored-response scenario are quite different: they need to be in whatever format the bid adapter's endpoint responds with. i.e. the host company will need to capture an actual bid response from the specific bidders and enter it into the DB table.
+- The `replaceimpid` parameter tells PBS to ignore the impid supplied in the DB and instead create/overwrite seatbid.bid.impid with the value that matches the incoming request. This simplifies debugging.
- `replaceimpid` doesn't work in PBS-Java. Instead, the implementation there is to use the `##PBSIMPID##` macro in the body of the stored response, which will be replaced by PBS-core.
-See Prebid.org troubleshooting pages for how to utilize this feature within the context of the browser.
+See Prebid.org [troubleshooting pages](/troubleshooting/pbs-troubleshooting.html#manual-specification-of-stored-responses-in-openrtb) for how to utilize this feature within the context of the browser.
##### First Party Data Support
diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md
index a82477f4da..33a6c84fb2 100644
--- a/prebid-server/features/pbs-feature-idx.md
+++ b/prebid-server/features/pbs-feature-idx.md
@@ -90,4 +90,4 @@ title: Prebid Server | Features
| Modules | [ortb2-blocking](/prebid-server/pbs-modules/ortb2-blocking.html) | Configure per-account OpenRTB blocking details. | | |
| Anti-Fraud | Ads.Cert 2.0 Authenticated Connections | Includes authenticated connection signing header on outgoing bid requests to supported adapters. * | | |
-* Experimental feature not yet recommended for production.
+\* Experimental feature not yet recommended for production.
diff --git a/support/index.md b/support/index.md
index a6db9daf8e..e32704288e 100644
--- a/support/index.md
+++ b/support/index.md
@@ -16,14 +16,14 @@ There are several ways to ask for help or get involved with Prebid. See below f
## Overview
-For technical & feature requests or questions, it's best to use the GitHub or Stack Overflow forums. Prebid is worked on full-time by engineering teams from AppNexus and Rubicon Project. There are also many publishers using and contributing to the project.
+For technical and feature requests or questions, it's best to use the GitHub or Stack Overflow forums. Prebid is worked on full-time by engineering teams from Xandr and Magnite. There are also many publishers using and contributing to the project.
-For questions about how an adapter works, it's best to reach out to the company directly, or ask on GitHub. Each demand adapter should be maintained by the SSPs or exchange behind that adapter.
+For questions about how an adapter works, it's best to reach out to the company directly, or raise an issue on GitHub. Each demand adapter should be maintained by the SSPs or exchange behind that adapter.
For Prebid news or general questions, we recommend the Ad Ops Slack Channel, Quora, or Twitter.
{: .alert.alert-success :}
-There are serveral Prebid.org members that will install & maintain Prebid on a publisher's behalf. See the list of [Managed Prebid Solutions](https://prebid.org/product-suite/managed-services/).
+There are serveral Prebid.org members that will install and maintain Prebid on a publisher's behalf. See the list of [Managed Prebid Solutions](https://prebid.org/product-suite/managed-services/).
## GitHub
@@ -46,7 +46,7 @@ If you ask questions on [Stack Overflow](https://stackoverflow.com/), please use
## Ad Ops Slack Channel
-Join the [Ad Ops Reddit Slack](https://redditadops.slack.com/messages/C0HVALS8P/) (specifically the `#HeaderBidding` channel) to connect with other publishers & developers using Prebid.
+Join the [Ad Ops Reddit Slack](https://redditadops.slack.com/messages/C0HVALS8P/) (specifically the `#HeaderBidding` channel) to connect with other publishers and developers using Prebid.
## Reddit
From 898a0973ee234eec2c855929aa5d6629992e3a72 Mon Sep 17 00:00:00 2001
From: Jean Stemp <38964447+jeanstemp@users.noreply.github.com>
Date: Tue, 3 Jan 2023 07:37:23 -0800
Subject: [PATCH 004/763] Added missing linksto analytics adapter docs (#4240)
Co-authored-by: Jean Stemp
---
dev-docs/analytics/adomik.md | 2 +-
dev-docs/analytics/adxcg.md | 2 +-
dev-docs/analytics/concert.md | 2 +-
dev-docs/analytics/eplanning.md | 2 +-
dev-docs/analytics/marsmedia.md | 2 +-
dev-docs/analytics/roxot.md | 2 +-
dev-docs/analytics/sharethrough.md | 2 +-
dev-docs/analytics/sigmoid.md | 2 +-
dev-docs/analytics/sonobi.md | 2 +-
dev-docs/analytics/zeta_global_ssp.md | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/dev-docs/analytics/adomik.md b/dev-docs/analytics/adomik.md
index 6adc0cece7..75353bda5b 100644
--- a/dev-docs/analytics/adomik.md
+++ b/dev-docs/analytics/adomik.md
@@ -8,5 +8,5 @@ prebid_member: true
#### Registration
-Please visit []() for more information.
+Please visit [https://www.adomik.com/](https://www.adomik.com/) for more information.
diff --git a/dev-docs/analytics/adxcg.md b/dev-docs/analytics/adxcg.md
index 27a8f24932..527c436b0c 100644
--- a/dev-docs/analytics/adxcg.md
+++ b/dev-docs/analytics/adxcg.md
@@ -7,5 +7,5 @@ modulecode: adxcg
#### Registration
-Please visit []() for more information.
+Please visit [https://www.adxcg.com/](https://www.adxcg.com/) for more information.
diff --git a/dev-docs/analytics/concert.md b/dev-docs/analytics/concert.md
index 704bdadfe3..f9073b92bb 100644
--- a/dev-docs/analytics/concert.md
+++ b/dev-docs/analytics/concert.md
@@ -8,5 +8,5 @@ enable_download: false
#### Registration
-Please visit []() for more information.
+Please visit [https://concert.io/](https://concert.io/) for more information.
diff --git a/dev-docs/analytics/eplanning.md b/dev-docs/analytics/eplanning.md
index 1971ed579c..3f64900bc1 100644
--- a/dev-docs/analytics/eplanning.md
+++ b/dev-docs/analytics/eplanning.md
@@ -7,5 +7,5 @@ modulecode: eplanning
#### Registration
-Please visit []() for more information.
+Please visit [https://www.e-planning.net/](https://www.e-planning.net/) for more information.
diff --git a/dev-docs/analytics/marsmedia.md b/dev-docs/analytics/marsmedia.md
index 725e6c6b5d..18b7872e5c 100644
--- a/dev-docs/analytics/marsmedia.md
+++ b/dev-docs/analytics/marsmedia.md
@@ -7,5 +7,5 @@ modulecode: marsmedia
#### Registration
-Please visit []() for more information.
+Please visit [https://mars.media/](https://mars.media/#!group) for more information.
diff --git a/dev-docs/analytics/roxot.md b/dev-docs/analytics/roxot.md
index b93ff5aa81..b0ab67b2e9 100644
--- a/dev-docs/analytics/roxot.md
+++ b/dev-docs/analytics/roxot.md
@@ -7,5 +7,5 @@ modulecode: roxot
#### Registration
-Please visit []() for more information.
+Please visit [https://roxot.com/](https://roxot.com/) for more information.
diff --git a/dev-docs/analytics/sharethrough.md b/dev-docs/analytics/sharethrough.md
index 2b74809f18..e771d65fc2 100644
--- a/dev-docs/analytics/sharethrough.md
+++ b/dev-docs/analytics/sharethrough.md
@@ -7,5 +7,5 @@ modulecode: sharethrough
#### Registration
-Please visit []() for more information.
+Please visit [https://www.sharethrough.com/](https://www.sharethrough.com/) for more information.
diff --git a/dev-docs/analytics/sigmoid.md b/dev-docs/analytics/sigmoid.md
index a2795e8711..b12b58c087 100644
--- a/dev-docs/analytics/sigmoid.md
+++ b/dev-docs/analytics/sigmoid.md
@@ -7,5 +7,5 @@ modulecode: sigmoid
#### Registration
-Please visit []() for more information.
+Please visit [https://www.sigmoid.com/identity-graph-adtech/](https://www.sigmoid.com/identity-graph-adtech/) for more information.
diff --git a/dev-docs/analytics/sonobi.md b/dev-docs/analytics/sonobi.md
index 8ef0c86ff7..6d1e0ef2f4 100644
--- a/dev-docs/analytics/sonobi.md
+++ b/dev-docs/analytics/sonobi.md
@@ -8,5 +8,5 @@ enable_download: false
#### Registration
-Please visit []() for more information.
+Please visit [https://sonobi.com/](https://sonobi.com/) for more information.
diff --git a/dev-docs/analytics/zeta_global_ssp.md b/dev-docs/analytics/zeta_global_ssp.md
index 934b95cf4e..dcd84908d1 100644
--- a/dev-docs/analytics/zeta_global_ssp.md
+++ b/dev-docs/analytics/zeta_global_ssp.md
@@ -14,7 +14,7 @@ pbjs_version_notes: v6.5.0 and later
#### Registration
-Please visit []() for more information.
+Please visit [https://zetaglobal.com/](https://zetaglobal.com/) for more information.
#### Analytics Options
From 688cbe1b03d05ee85ad80006440cba7739bf8969 Mon Sep 17 00:00:00 2001
From: Jean Stemp <38964447+jeanstemp@users.noreply.github.com>
Date: Tue, 3 Jan 2023 07:43:53 -0800
Subject: [PATCH 005/763] Update guide with instructions for files not in
sidebar (#4241)
* Update guide with instructions for files not in sidebar
* typo
Co-authored-by: Jean Stemp
Co-authored-by: bretg
---
guide.md | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/guide.md b/guide.md
index 8baa2a74c7..c402b73371 100644
--- a/guide.md
+++ b/guide.md
@@ -243,10 +243,17 @@ Each menu item is represented in the YML map as a collection of key value pairs
| sbCollapseId | string | overview | Required if isSectionHeader = 1. Used to identify which div object is being toggled. |
**Code Use**
-This data file is read in the page_v2.html file using Liquid.
+This data file is read in the left_nav.html file using Liquid. (__includes/left_nav.html)
-**Code Use**
-This data file is read in the home.html file using Liquid.
+**Files Not in the Sidebar**
+If a page is open that is not listed in the sidebar.yml file, by default the sidebar will display only top-level options, with no options expanded or selected.
+
+In certain cases, it is helpful to the user to highlight a page in the left navigation that is not currently open. For example, when a bidder page is open (such as [https://docs.prebid.org/dev-docs/bidders/1ad4good.html](https://docs.prebid.org/dev-docs/bidders/1ad4good.html)), we don't want hundreds of bidders displayed in the left nav, but we want the user to be oriented to where they are in the documentation. In this case, that would be under Prebid.js > Reference > Bidder Params. To accomplish this, you must do two things:
+
+- Add `sidebarType: 1` to all bidder pages. This opens the Prebid.js menu. (If you want to extend this functionality to other pages, use the sbSecId in the sidebar.yml file of the top-level menu as the value for sidebarType.)
+- Modified the left_nav.html file's Liquid code to highlight Reference > Bidder Params anytime a page with layout=bidder is open.
+
+This has been done for both bidders pages (pages with `layout: bidder`) and the Publisher API Reference (`layout: api_prebidjs` and highlighting Prebid.js > Reference > Publish API Reference in the left nav), but can be extended to other pages as needed.
## Bidder Files
@@ -269,6 +276,7 @@ The attributes in the Jekyll 'front matter' drive various behaviors and dynamic
| filename | no | bid adapter that actually implements this adapter | Used when a bid adapter is created with a filename that is not the bidder code. This completely overrides what is passed into the gulp build command, so needs to be fully specified. e.g. bidderaBidAdapter |
| prevBiddercode | no | secondary bidder code | Adds a note about an alternate code that may have been used. |
| pbjs_version_notes | no | string | Displays on the download page |
+| sidebarType | yes | `1` | Used for navigation. This opens the Prebid.js portion of the menu so the sidebar can display the Reference/Prebid Params menu option when a bidder page is open.
| 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.
From 07da5062b8d79b8d8e23dc036a82f1117904879f Mon Sep 17 00:00:00 2001
From: bretg
Date: Wed, 4 Jan 2023 13:49:58 -0500
Subject: [PATCH 006/763] fledge doc - fixing tables (#4246)
* fledge doc - fixing tables
* typo
* another typo
---
dev-docs/modules/fledgeForGpt.md | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/dev-docs/modules/fledgeForGpt.md b/dev-docs/modules/fledgeForGpt.md
index 73ce049110..265944e720 100644
--- a/dev-docs/modules/fledgeForGpt.md
+++ b/dev-docs/modules/fledgeForGpt.md
@@ -32,8 +32,9 @@ settings exist at the module level, the bidder level, and the adunit level.
### Module Configuration
This module exposes the following settings:
+{: .table .table-bordered .table-striped }
|Name |Type |Description |Notes |
-| :------------ | :------------ | :------------ |:------------ |
+| ------------ | ------------ | ------------ |------------ |
|enabled | Boolean |Enable/disable the module |Defaults to `false` |
As noted above, FLEDGE support is disabled by default. To enable it, set the `enabled` value to `true` for this module
@@ -52,8 +53,9 @@ pbjs.que.push(function() {
### Bidder Configuration
This module adds the following setting for bidders:
+{: .table .table-bordered .table-striped }
|Name |Type |Description |Notes |
-| :------------ | :------------ | :------------ |:------------ |
+| ------------ | ------------ | ------------ |------------ |
| fledgeEnabled | Boolean | Enable/disable a bidder to participate in FLEDGE | Defaults to `false` |
In addition to enabling FLEDGE at the module level, individual bidders must also be enabled. This allows publishers to
@@ -73,8 +75,9 @@ pbjs.setBidderConfig({
Enabling an adunit for FLEDGE eligibility is accomplished by setting an attribute of the `ortb2Imp` object for that
adunit.
+{: .table .table-bordered .table-striped }
|Name |Type |Description |Notes |
-| :------------ | :------------ | :------------ |:------------ |
+| ------------ | ------------ | ------------ |------------ |
| ortb2Imp.ext.ae | Integer | Auction Environment: 1 indicates FLEDGE eligible, 0 indicates it is not | Absence indicates this is not FLEDGE eligible |
The `ae` field stands for Auction Environment and was chosen to be consistent with the field that GAM passes to bidders
@@ -116,7 +119,7 @@ the [`buildRequests`](/dev-docs/bidder-adaptor.html#building-the-request) method
who wish to participate should read this flag and pass it to their server. FLEDGE eligibility depends on a number of parameters:
1. Chrome enablement
-2. Publisher participatipon in the [Origin Trial](https://developer.chrome.com/docs/privacy-sandbox/unified-origin-trial/#configure)
+2. Publisher participation in the [Origin Trial](https://developer.chrome.com/docs/privacy-sandbox/unified-origin-trial/#configure)
3. Publisher Prebid.js configuration (detailed above)
When a bid request is FLEDGE enabled, a bid adapter can return a tuple consisting of bids and AuctionConfig objects rather than just a list of bids:
From 5fafb3f02ef5f9ed7f4044922ea261a4c623d9c9 Mon Sep 17 00:00:00 2001
From: bretg
Date: Wed, 4 Jan 2023 17:11:54 -0500
Subject: [PATCH 007/763] antitrust updates from legal review (#4247)
---
policies/antitrust.md | 75 +++++++++++++++++++++++++++++++++----------
1 file changed, 58 insertions(+), 17 deletions(-)
diff --git a/policies/antitrust.md b/policies/antitrust.md
index 8d05f42b97..944578e9af 100644
--- a/policies/antitrust.md
+++ b/policies/antitrust.md
@@ -9,21 +9,62 @@ sidebarType: 0
# Antitrust Policy
-Prebid.Org, Inc. (the “Corporation”) is intended to promote cooperation in the development of certain open source technology and related materials. The goal of the Corporation is to develop an open standard for transparent and interoperable header bidding solutions. The Corporation is narrowly tailored to achieving this goal. The Corporation is not organized to and does not play any role in the competitive business decisions of its members, nor does it intend to restrict competition among members or potential members. The Corporation’s members shall not discuss or coordinate individual bidding activity, strategy, or pricing (including the development of price floors). It is the express policy of the Corporation to comply with all applicable federal, state, and foreign antitrust laws. This Policy has been prepared to inform Corporation members of this obligation.
-
-1. Antitrust Laws
- 1. Agreements among competitors to fix prices are unlawful. Corporation members must not discuss or exchange information about member company prices, price levels, or other competitively sensitive information. Members shall not discuss any element of a company's operations which might influence pricing decisions, such as:
- 1. Cost of operations, supplies, services and technology;
- 2. Allowance for discounts;
- 3. Terms of sales and licensing, including credit arrangements;
- 4. Profit margins and mark ups;
- 5. Market shares for any product or for all products; and
- 6. Actual or projected changes in production, output, capacity, or inventory.
- 2. Antitrust laws expressly prohibit any agreement between competitors to divide or allocate markets, including allocations by geography, product type, and customer. Even an informal agreement whereby one member agrees to stay out of another’s territory or product market may constitute a violation of the antitrust laws and must be avoided.
- 3. Agreements among Corporation members to “boycott” or exclude a competitor from a market or a competitive activity are unlawful. Illegal boycotts include “blacklisting” or refusing to deal with a particular distributor or supplier.
-2. General Operating Procedures
- 1. In order to ensure that Corporation activities are conducted fairly in a manner that does not unduly benefit some competitors to the detriment of others, an agenda shall be distributed prior to meetings and meetings shall adhere to the agenda.
- 2. This Policy and standard of conduct set forth above shall apply to Board meetings, committee meetings, informal member meetings, social events, such as luncheons, receptions, and dinners, and any other activity related to the Corporation.
- 3. Members should report any violations of this Policy concerning Corporation activities to the Board of Directors.
-
+Prebid.Org, Inc. (the “Corporation”) is intended to promote cooperation in the development of certain open source technology and related materials. The Corporation is necessary to enable its members to develop an open standard for transparent and interoperable header bidding solutions. The Corporation is narrowly tailored to achieving this goal. The Corporation is not organized to and does not play any role in the competitive business decisions of its members or potential members, nor does it in any way restrict competition among members or potential members. The Corporation’s members shall not discuss or coordinate individual bidding activity, strategy, customers, costs, employee compensation, hiring, or pricing (including the development of price ceilings, floors, or ranges). It is the express Policy of the Corporation to comply with all applicable federal, state, and foreign antitrust laws. This Policy has been prepared to inform Corporation members, staff and participants of this obligation.
+It is the responsibility of each member, staff and participant to comply with the antitrust laws and this Policy.
+
+## 1. Antitrust Laws
+
+### 1.a. Prices, Bids, and Compensation
+Agreements among competitors to fix prices or coordinate bids are per se unlawful and can result in criminal liability. Corporation members shall not discuss, signal, or exchange information about member company bids, sales opportunities, customers, costs, employee compensation, hiring, prices, or other competitively sensitive information. Members **SHALL NOT** discuss any element of a company's operations which might influence pricing, bids or compensation decisions, such as:
+
+1. Cost of operations, supplies, services and technology;
+1. Allowance for discounts or rebates;
+1. Terms of sales and licensing, including credit arrangements;
+1. Profit margins and mark ups;
+1. Transaction-specific past, present or future prices or costs;
+1. Requests For Proposal, bids, or bidding opportunities;
+1. Business, product, or marketing plans;
+1. Employee compensation, benefits, recruitment, or hiring;
+1. Market shares for any product or for all products; and
+1. Actual or projected changes in production, output, capacity, or inventory.
+
+### 1.b. Markets
+
+Antitrust laws expressly prohibit any agreement between competitors to divide or allocate markets, including by geography, distribution channel, product type, and customers. Even an informal agreement whereby one member merely implies that it will stay away from another member’s territory or customers in exchange for reciprocity may constitute a per se violation of the antitrust laws and must be avoided. Members **SHALL NOT** discuss who will and will not compete for business along any of these dimensions. Agreements not to compete in any fashion, including in the hiring or poaching of employees, is forbidden.
+
+### 1.c. Exclusion
+
+Agreements among Corporation members to “boycott” or exclude a competitor from a market or a competitive activity are unlawful. Illegal group boycotts include “blacklisting” or agreeing to refuse to deal with a particular distributor or supplier. Members **SHALL NOT** discuss excluding or discriminating against other companies from any product, geography, technical standard, customer, source of supply, or distribution channel.
+
+## 2. Membership
+
+Corporation membership is subject to conditions that are non-discriminatory and objective. Membership to the Corporation is voluntary and each member of the Corporation retains absolute commercial freedom. No member is required to apply Corporation-compliant standards. The Corporation **SHALL NOT**:
+
+1. Exclude qualified competitors from membership in the Corporation for any anticompetitive purpose;
+1. Restrict Corporation members from dealing with non-members or
+1. Limit access to information developed by the Corporation unless such limitation is firmly grounded upon the need to protect trade secrets or other intellectual property rights.
+
+## 3. General Operating Procedures
+
+a. Understanding and sharing information on industry trends and conditions will be important for the Corporation to succeed in achieving its purpose of enabling its members to develop an open standard for transparent and interoperable header bidding solutions. Fortunately, antitrust enforcers recognize that sharing some types of information with competitors can benefit markets, businesses, and consumers alike if done with “adequate safeguards.”
+
+b. Keeping your conversations within these simple guardrails will ensure that you stay within the lanes of the law:
+1. You **MUST** hold discussions in open settings and avoid situations that could be seen as secretive.
+1. In order to ensure that Corporation activities are conducted fairly in a manner that does not unduly benefit some competitors to the detriment of others, an agenda MUST be distributed prior to meetings and meetings shall adhere to the agenda. Meeting minutes shall be prepared and MUST accurately reflect the matters that transpired and MUST comply with this Policy.
+1. You CAN discuss high-level, aggregate information regarding industry trends and expectations, rather than transaction-specific or company-specific data.
+1. Generally, you CAN discuss industry public relations, litigation, legislation, lobbying, and long-term trends are generally appropriate.
+
+c. Antitrust violations can be inferred from the parties’ conduct and so it is important to avoid even the appearance of improper discussions.
+
+1. If you believe a conversation is approaching an improper subject, you must report any violations of this Policy concerning Corporation activities to the Corporation’s counsel; and MUST clearly state that:
+ 1. You have concerns about the comment or suggestion;
+ 2. Discussion on that topic must stop; and
+ 3. You will discuss this with counsel before deciding if it can proceed.
+1. If the request is ignored, the meeting SHOULD stop and counsel should be advised.
+
+d. **No** Corporation member, staff or participant **SHALL** have authority to communicate with government officials regarding matters related to the Corporation without prior approval of the Corporation’s counsel.
+
+e. This Policy and standards of conduct set forth above **SHALL** apply to Board meetings, committee meetings, informal member meetings, social events, such as luncheons, receptions, and dinners, and any other activity related to the Corporation.
+
+f. All Corporation members, staff and participants staff **SHALL** report any violation of this Policy to the Corporation’s counsel.
From 259ee136584c9004982e2bb902568dc50021cfd3 Mon Sep 17 00:00:00 2001
From: Chris Huie
Date: Thu, 5 Jan 2023 07:32:09 -0700
Subject: [PATCH 008/763] How to add a bid adapter old doc cleanup (#4248)
* Remove how to add 1.0 bidder
* remove redirected bidder file
---
dev-docs/bidder-adapter-1.md | 9 ---------
dev-docs/bidder-adapter.md | 7 -------
2 files changed, 16 deletions(-)
delete mode 100644 dev-docs/bidder-adapter-1.md
delete mode 100644 dev-docs/bidder-adapter.md
diff --git a/dev-docs/bidder-adapter-1.md b/dev-docs/bidder-adapter-1.md
deleted file mode 100644
index c068947168..0000000000
--- a/dev-docs/bidder-adapter-1.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-redirect_to: "/dev-docs/bidder-adaptor.html"
-layout: page_v2
-title: How to add a Prebid 1.0 Bidder Adapter
-description: Documentation on how to add a new bidder adapter
-top_nav_section: dev_docs
-nav_section: adapters
-
----
diff --git a/dev-docs/bidder-adapter.md b/dev-docs/bidder-adapter.md
deleted file mode 100644
index 1c04202589..0000000000
--- a/dev-docs/bidder-adapter.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-redirect_to: "/dev-docs/bidder-adaptor.html"
-layout: page_v2
-top_nav_section: dev_docs
-nav_section: adapters
-
----
From eac49d891a7c070645c06964136781a2f1af2c57 Mon Sep 17 00:00:00 2001
From: Chris Huie
Date: Thu, 5 Jan 2023 09:33:47 -0700
Subject: [PATCH 009/763] Adds gpp_supported flag (#4249)
* add gpp_supported to bid adapter docs
* add to java bidder docs
* add to go bidder docs
* add gpp supported adapters
* add gpp_supported to csv
* remove spaces
* update bidder params display
* adding a blank cell on the new row
Co-authored-by: bretg
---
_layouts/bidder.html | 10 ++++++++--
dev-docs/bidder-adaptor.md | 2 ++
dev-docs/bidder-data.csv | 4 ++--
dev-docs/bidders/appnexus.md | 1 +
dev-docs/bidders/improvedigital.md | 1 +
dev-docs/bidders/taboola.md | 1 +
dev-docs/bidders/ttd.md | 1 +
prebid-server/developers/add-new-bidder-go.md | 2 ++
prebid-server/developers/add-new-bidder-java.md | 2 ++
9 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/_layouts/bidder.html b/_layouts/bidder.html
index a0a05bbe35..d7d5f72ba8 100644
--- a/_layouts/bidder.html
+++ b/_layouts/bidder.html
@@ -77,8 +77,8 @@
Features
Demand Chain Support
{% if page.dchain_supported == true %}yes{% else %}no{% endif %}
-
Safeframes OK
-
{% if page.safeframes_ok == false %}no{% elsif page.safeframes_ok == true %}yes{% else %}check with bidder{% endif %}
+
GPP Support
+
{% if page.gpp_supported == true %}yes{% else %}no{% endif %}
{% if page.safeframes_ok == false %}no{% elsif page.safeframes_ok == true %}yes{% else %}check with bidder{% endif %}
+
+
+
"Send All Bids" Ad Server Keys
diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md
index d2933faf24..fc86aba6d5 100644
--- a/dev-docs/bidder-adaptor.md
+++ b/dev-docs/bidder-adaptor.md
@@ -1208,6 +1208,7 @@ registerBidder(spec);
- 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 GPP, add `gpp_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 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.
@@ -1232,6 +1233,7 @@ gdpr_supported: true/false
gvl_id: none
usp_supported: true/false
coppa_supported: true/false
+gpp_supported: true/false
schain_supported: true/false
dchain_supported: true/false
userId: (list of supported vendors)
diff --git a/dev-docs/bidder-data.csv b/dev-docs/bidder-data.csv
index fd0fd97160..3b031caca0 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,fpd,prebid-member,ortb-blocking
-{% 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 %},{% if page.ortb_blocking_supported == true %}yes{% elsif page.ortb_blocking_supported == false %}no{% elsif page.ortb_blocking_supported == 'partial' %}partial{% else %}check with bidder{% endif %}
+bidder-code,bidder-name,banner,video,native,gdpr,schain,coppa,gpp,usp,safeframes,deals,client-adapter,server-adapter,user-ids,usp,mobile-apps,floors,fpd,prebid-member,ortb-blocking
+{% 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.gpp_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 %},{% if page.ortb_blocking_supported == true %}yes{% elsif page.ortb_blocking_supported == false %}no{% elsif page.ortb_blocking_supported == 'partial' %}partial{% else %}check with bidder{% endif %}
{% endfor %}
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md
index 75017fe3be..207a1a0a5e 100644
--- a/dev-docs/bidders/appnexus.md
+++ b/dev-docs/bidders/appnexus.md
@@ -9,6 +9,7 @@ prebid_member: true
userIds: criteo, identityLink, netId, pubProvidedId, uid2, unifiedId,
schain_supported: true
coppa_supported: true
+gpp_supported: true
usp_supported: true
floors_supported: true
fpd_supported: true
diff --git a/dev-docs/bidders/improvedigital.md b/dev-docs/bidders/improvedigital.md
index 2c070ef151..9a086131c8 100755
--- a/dev-docs/bidders/improvedigital.md
+++ b/dev-docs/bidders/improvedigital.md
@@ -6,6 +6,7 @@ biddercode: improvedigital
pbjs: true
pbs: true
coppa_supported: true
+gpp_supported: true
gdpr_supported: true
usp_supported: true
userIds: all
diff --git a/dev-docs/bidders/taboola.md b/dev-docs/bidders/taboola.md
index c96c64949d..956ed22219 100644
--- a/dev-docs/bidders/taboola.md
+++ b/dev-docs/bidders/taboola.md
@@ -8,6 +8,7 @@ biddercode: taboola
gdpr_supported: true
usp_supported: true
coppa_supported: true
+gpp_supported: true
schain_supported: false
media_types: banner
gvl_id: 42
diff --git a/dev-docs/bidders/ttd.md b/dev-docs/bidders/ttd.md
index daa7aac1be..7820fe3ed5 100644
--- a/dev-docs/bidders/ttd.md
+++ b/dev-docs/bidders/ttd.md
@@ -7,6 +7,7 @@ gdpr_supported: true
gvl_id: 21
usp_supported: true
coppa_supported: true
+gpp_supported: true
schain_supported: true
dchain_supported: false
userIds: unifiedId, uid2
diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md
index a25025db14..d72ec66bb6 100644
--- a/prebid-server/developers/add-new-bidder-go.md
+++ b/prebid-server/developers/add-new-bidder-go.md
@@ -1196,6 +1196,7 @@ gdpr_supported: true/false
gvl_id: 111
usp_supported: true/false
coppa_supported: true/false
+gpp_supported: true/false
schain_supported: true/false
dchain_supported: true/false
userId:
@@ -1231,6 +1232,7 @@ Notes on the metadata fields:
- If you support one or more userId modules, add `userId: (list of supported vendors)`. Default is none.
- If you support video, native, or audio mediaTypes add `media_types: video, native, audio`. 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 defaults.
- If you support COPPA, add `coppa_supported: true`. Default is false.
+- If you support GPP, add `gpp_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 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.
diff --git a/prebid-server/developers/add-new-bidder-java.md b/prebid-server/developers/add-new-bidder-java.md
index 11f94851d9..de755f60a8 100644
--- a/prebid-server/developers/add-new-bidder-java.md
+++ b/prebid-server/developers/add-new-bidder-java.md
@@ -1237,6 +1237,7 @@ gdpr_supported: true/false
gvl_id: 111
usp_supported: true/false
coppa_supported: true/false
+gpp_supported: true/false
schain_supported: true/false
dchain_supported: true/false
userId:
@@ -1272,6 +1273,7 @@ Notes on the metadata fields:
- If you support one or more userId modules, add `userId: (list of supported vendors)`. Default is none.
- If you support video, native, or audio mediaTypes add `media_types: video, native, audio`. 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 defaults.
- If you support COPPA, add `coppa_supported: true`. Default is false.
+- If you support GPP, add `gpp_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 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.
From 01f067badd3b0a6912fde2e33357a038896e27b0 Mon Sep 17 00:00:00 2001
From: jsnellbaker <31102355+jsnellbaker@users.noreply.github.com>
Date: Thu, 5 Jan 2023 14:09:28 -0500
Subject: [PATCH 010/763] consentManagement GPP module docs (#4216)
* consentManagement GPP module docs
* Update consentManagementGpp.md
* fix wording in legal notice
Co-authored-by: Patrick McCann
---
dev-docs/bidders/appnexus.md | 1 +
dev-docs/modules/consentManagementGpp.md | 206 +++++++++++++++++++++++
features/firstPartyData.md | 4 +
3 files changed, 211 insertions(+)
create mode 100644 dev-docs/modules/consentManagementGpp.md
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md
index 207a1a0a5e..e11bd262cb 100644
--- a/dev-docs/bidders/appnexus.md
+++ b/dev-docs/bidders/appnexus.md
@@ -11,6 +11,7 @@ schain_supported: true
coppa_supported: true
gpp_supported: true
usp_supported: true
+gpp_supported: true
floors_supported: true
fpd_supported: true
pbjs: true
diff --git a/dev-docs/modules/consentManagementGpp.md b/dev-docs/modules/consentManagementGpp.md
new file mode 100644
index 0000000000..98890dac0a
--- /dev/null
+++ b/dev-docs/modules/consentManagementGpp.md
@@ -0,0 +1,206 @@
+---
+layout: page_v2
+page_type: module
+title: Consent Management - GPP
+description: If you have users in regions of the world that adhere to the Global Privacy Platform, this module works with your Consent Management Platform to pass consent info to bidders and help align with regional regulations.
+module_code : consentManagementGpp
+display_name : Consent Management - GPP
+enable_download : true
+recommended: true
+sidebarType : 1
+---
+
+# GPP Consent Management Module
+{: .no_toc }
+
+* TOC
+{: toc }
+
+{% capture legalNotice %}
+ This resource should not be construed as legal advice and Prebid.org makes no guarantees about compliance with any law or regulation. Please note that because every company's collection, use, and storage of personal data is different, you should seek independent legal advice relating to obligations under European, Canadian and /or US regulations, including the GDPR, the ePrivacy Directive and CCPA. Only a lawyer can provide you with legal advice specifically tailored to your situation. Nothing in this guide is intended to provide you with, or should be used as a substitute for, legal advice tailored to your business.
+ {% endcapture %}
+
+{% include /alerts/alert_important.html content=legalNotice %}
+
+## Overview
+
+This consent management module is designed to support the Global Privacy Platform ([GPP](https://iabtechlab.com/gpp/))
+
+This module works with supported [Consent Management Platforms](https://www.cmswire.com/information-management/what-is-a-consent-management-platform/) (CMPs) to fetch an encoded string representing the user's consent choices (for their repsective region) and make it available for adapters to consume and process.
+
+{: .alert.alert-warning :}
+Prebid functionality created to address regulatory requirements does not replace each party's responsibility to determine its own legal obligations and comply with all applicable laws.
+**We recommend consulting with your legal counsel before determining how to utilize these features in support of your overall privacy approach. This module is not yet intended to replace other consent modules; it supplements them.**
+
+Below is a summary of the actions performed by the GPP consent management module:
+
+1. Fetch the user's GPP consent data from the IAB compliant CMP.
+2. Incorporate this data into the auction objects for adapters to collect.
+3. Proceed with the auction.
+
+In the case of a new user, CMPs will generally respond only after there is consent information available (i.e., the user has made their consent choices).
+Making these selections can take some time for the average user, so the module provides timeout settings.
+
+If the timeout period expires or an error from the CMP is thrown, one of these actions occurs:
+
+- The auction is canceled outright.
+- The auction proceeds without the user's consent information.
+
+## Page Integration
+
+To utilize this module, a Consent Management Platform (CMP) compatible with the [IAB GPP CMP spec](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Core/CMP%20API%20Specification.md) 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 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.
+
+Here are the parameters supported in the `consentManagement` object specific for the GPP consent module:
+
+{: .table .table-bordered .table-striped }
+| Param | Type | Description | Example |
+| --- | --- | --- | --- |
+| gpp | `Object` | | |
+| gpp.cmpApi | `string` | The CMP interface that is in use. Supported values are **'iab'** or **'static'**. Static allows integrations where IAB-formatted consent strings are provided in a non-standard way. Default is `'iab'`. | `'iab'` |
+| gpp.timeout | `integer` | Length of time (in milliseconds) to allow the CMP to obtain the GPP consent information. Default is `10000`. | `10000` |
+| gpp.consentData | `Object` | An object representing the IAB GPP consent data being passed directly; only used when cmpApi is 'static'. Default is `undefined`. | |
+| gpp.consentData.sectionId | `integer` | Indicates the header section of the GPP consent string, recommended to be `3`. | |
+| gpp.consentData.gppVersion | `integer` | The version number parsed from the header of the GPP consent string. | |
+| gpp.consentData.sectionList | `Array of integers` | The sections contained within the encoded GPP string as parsed from the header. | |
+| gpp.consentData.applicableSections | `Array of integers` | Section ID considered to be in force for this transaction. In most cases, this field should have a single section ID. In rare occasions where such a single section ID can not be determined, the field may contain up to 2 values. The value can be 0 or a Section ID specified by the Publisher / Advertiser, during stub / load. When no section is applicable, the value will be -1. | |
+| gpp.consentData.gppString | `String` | The complete encoded GPP string. | |
+| gpp.consentData.pingData | `Object` | An object representing the current status of the CMP at the time consent data was fetched. See PingReturn in [IAB's CMP API doc](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Core/CMP%20API%20Specification.md#ping) for further information. | |
+
+{: .alert.alert-info :}
+In addition to the static approach described above, there is another means to pass already known GPP consent data of a user via the Prebid.js [First Party Data](https://docs.prebid.org/features/firstPartyData.html) feature. The values for `gppString` and `applicableSections` can be passed via the `ortb2.regs.gpp` and `ortb2.regs.gpp_sid` fields respectively; other fields in the GPP data object listed above are not available via the `ortb2` structure. If the GPP consent module is present and successfully obtains the consent information from the CMP, it will override the GPP values set originally in the `ortb2` object (as we assume the CMP's values will be more up-to-date). Please visit the [First Party Data](https://docs.prebid.org/features/firstPartyData.html) page for more overall information and examples.
+
+### Examples
+
+Example 1: IAB CMP using a custom timeout
+
+{% highlight js %}
+ var pbjs = pbjs || {};
+ pbjs.que = pbjs.que || [];
+ pbjs.que.push(function() {
+ pbjs.setConfig({
+ consentManagement: {
+ gpp: {
+ cmpApi: 'iab',
+ timeout: 8000
+ }
+ }
+ });
+ });
+{% endhighlight %}
+
+Example 2: Static CMP using custom data passing.
+
+{% highlight js %}
+ var pbjs = pbjs || {};
+ pbjs.que = pbjs.que || [];
+ pbjs.que.push(function() {
+ pbjs.setConfig({
+ consentManagement: {
+ gpp: {
+ cmpApi: 'static',
+ consentData: {
+ sectionId: 3,
+ gppVersion: 1,
+ sectionList: [5, 7]
+ applicableSections: [7]
+ gppString: 'DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN',
+ pingData: {...}
+ }
+ }
+ }
+ });
+ });
+{% endhighlight %}
+
+## Build the Package
+
+Follow the basic build instructions in the GitHub Prebid.js repo's main [README](https://github.com/prebid/Prebid.js/blob/master/README.md). To include the consent management module, an additional option must be added to the **gulp build** command:
+
+{% highlight bash %}
+gulp build --modules=consentManagementGpp,bidAdapter1,bidAdapter2
+{% endhighlight %}
+
+You can also use the [Prebid.js Download](/download.html) page.
+
+## Adapter Integration
+
+{: .alert.alert-info :}
+
+If you are submitting changes to an adapter to support GPP, please also submit a PR to the [docs repo](https://github.com/prebid/prebid.github.io) to add the `gpp_supported: true` variable to your respective page in the [bidders directory](https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders). **This will ensure that your adapter's name will automatically appear on the list of adapters supporting GPP.**
+
+### Bidder Adapter GPP Integration
+
+To find the GPP consent information to pass along to your system, adapters should look for the `bidderRequest.gppConsent` field in their `buildRequests()` method; this field includes a copy of the full GPPData object from the CMP, in case additional information (beyond the gppString and applicableSections values) is needed. Alternatively if only the consent string and/or the applicableSections values are needed, these two values can also be found in the `bidderRequest.ortb2.regs` field under the OpenRTB 2.6 field names (`gpp` and `gpp_sid`).
+Here is a sample of how the data is structured in the `bidderRequest` object:
+
+{% highlight js %}
+{
+ "bidderCode": "bidderA",
+ "auctionId": "e3a336ad-2222-4a1c-bbbb-ecc7c5294a34",
+ ...
+ "timeout": 3000,
+ "gppConsent": {
+ "gppString": "BOJ/P2HOJ/P2HABABMAAAAAZ+A==",
+ "fullGppData": {...},
+ "applicableSections": [7]
+ },
+ "ortb2": {
+ "regs": {
+ "gpp": "BOJ/P2HOJ/P2HABABMAAAAAZ+A==",
+ "gpp_sid": [7]
+ }
+ },
+ ...
+}
+{% endhighlight %}
+
+### UserSync Integration
+
+The `gppConsent` object is also available when registering `userSync` pixels.
+The object can be accessed by including it as an argument in the `getUserSyncs` function:
+
+{% highlight js %}
+getUserSyncs: function(syncOptions, responses, gdprConsent, usPrivacy, gppConsent) {
+...
+}
+{% endhighlight %}
+
+Depending on your needs, you could include the consent information in a query of your pixel and/or, given the consent choices, determine if you should drop the pixels at all.
+
+## Adapters Supporting GPP
+
+Bidders on this list have self-declared their GPP support in their https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders md file by adding "gpp_supported: true".
+
+
+
+
+
+
+
+
+
+## Further Reading
+
+- [IAB Global Privacy Platform Full Specification Repository](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform)
+- [IAB Global Privacy Platform CMP API Specification](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Core/CMP%20API%20Specification.md)
+- [Prebid Consent Management - GDPR Module](/dev-docs/modules/consentManagement.html)
+- [Prebid Consent Management - US Privacy Module](/dev-docs/modules/consentManagementUsp.html)
+- [CMP Best Practices](https://docs.prebid.org/dev-docs/cmp-best-practices.html)
diff --git a/features/firstPartyData.md b/features/firstPartyData.md
index 46718011b0..2aab129584 100644
--- a/features/firstPartyData.md
+++ b/features/firstPartyData.md
@@ -98,6 +98,10 @@ pbjs.setConfig({
interests: ["cars"]
}
}
+ },
+ regs: {
+ gpp: "abc1234",
+ gpp_sid: [7]
}
}
});
From 2ab5bd2d78145cacb1dfdf87ec7cf5cf67815628 Mon Sep 17 00:00:00 2001
From: bretg
Date: Thu, 5 Jan 2023 14:18:32 -0500
Subject: [PATCH 011/763] gpp flag update (#4251)
---
dev-docs/bidders/appnexus.md | 1 -
dev-docs/bidders/openx.md | 1 +
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md
index e11bd262cb..dc8f9578fc 100644
--- a/dev-docs/bidders/appnexus.md
+++ b/dev-docs/bidders/appnexus.md
@@ -9,7 +9,6 @@ prebid_member: true
userIds: criteo, identityLink, netId, pubProvidedId, uid2, unifiedId,
schain_supported: true
coppa_supported: true
-gpp_supported: true
usp_supported: true
gpp_supported: true
floors_supported: true
diff --git a/dev-docs/bidders/openx.md b/dev-docs/bidders/openx.md
index 026d1852bf..7e3fc168e3 100644
--- a/dev-docs/bidders/openx.md
+++ b/dev-docs/bidders/openx.md
@@ -10,6 +10,7 @@ schain_supported: true
gdpr_supported: true
usp_supported: true
coppa_supported: true
+gpp_supported: true
floors_supported: true
userIds: admixerId, adtelligentId, amxId, britepoolId, criteo, dapId, deepintentId, dmdId, fabrickId, hadronId, id5Id, identityLink, idxId, imuId, intentIqId, kinessoId, liveIntentId, lotamePanoramaId, merkleId, mwOpenLinkId, naveggId, netId, novatiq, parrableId, pubCommonId, publinkId, quantcastId, sharedId, tapadId, uid2, unifiedId, verizonMediaId, zeotapIdPlus
prebid_member: true
From 5798978da0a3cf3240ddd99a5aac880b481bcfe0 Mon Sep 17 00:00:00 2001
From: Matt Crute <872334+mbcrute@users.noreply.github.com>
Date: Fri, 6 Jan 2023 14:18:26 -0500
Subject: [PATCH 012/763] Deprecate zeusPrimeRtdProvider (#4226)
Added a deprecation warning to the zeusPrimeRtdProvider's docs.
---
dev-docs/modules/zeusPrimeRtdProvider.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/dev-docs/modules/zeusPrimeRtdProvider.md b/dev-docs/modules/zeusPrimeRtdProvider.md
index 93df3cd365..a19df8cd38 100644
--- a/dev-docs/modules/zeusPrimeRtdProvider.md
+++ b/dev-docs/modules/zeusPrimeRtdProvider.md
@@ -9,10 +9,15 @@ module_type: rtd
enable_download: true
vendor_specific: true
sidebarType: 1
+enable_download: false
---
# Zeus Prime Real Time Data Module
+# NOTE: ZEUS PRIME HAS BEEN DEPRECATED!
+# THIS MODULE NO LONGER FUNCTIONS AND WILL BE REMOVED FROM A
+# FUTURE VERSION OF PREBID.
+
The Zeus Prime RTD Provider provides integration of Zeus Prime onto sites with Prebid. This module will request information from Zeus Prime servers to add the page level targeting required for Prime into the customer's ad setup.
Zeus Prime runs as soon as the code is initialized, so it can retrieve the information required from the Zeus Prime server to create the targeting key-values. Zeus Prime will provide two page level key-values: `zeus_` and `zeus_insights`. Zeus Prime provides contextual information about a pages content, and does not provide user information that could present privacy implications.
From 28e998b11cb5a65cfc5368a118397a6be229385a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 6 Jan 2023 12:36:39 -0700
Subject: [PATCH 013/763] Bump json5 from 1.0.1 to 1.0.2 (#4257)
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)
---
updated-dependencies:
- dependency-name: json5
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 32 +++++++++++++-------------------
1 file changed, 13 insertions(+), 19 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 3c9214ff12..cd0b0de3fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6868,13 +6868,10 @@
"dev": true
},
"node_modules/json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
"bin": {
"json5": "lib/cli.js"
},
@@ -6995,9 +6992,9 @@
}
},
"node_modules/loader-utils/node_modules/json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"dependencies": {
"minimist": "^1.2.0"
@@ -18588,13 +18585,10 @@
"dev": true
},
"json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true
},
"jsonfile": {
"version": "4.0.0",
@@ -18697,9 +18691,9 @@
},
"dependencies": {
"json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
From a43a92f2dc9c2a57883501b424a5988bd6671c3c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 6 Jan 2023 12:42:23 -0700
Subject: [PATCH 014/763] Bump qs and browser-sync (#4258)
Bumps [qs](https://github.com/ljharb/qs) to 6.11.0 and updates ancestor dependency [browser-sync](https://github.com/BrowserSync/browser-sync). These dependencies need to be updated together.
Updates `qs` from 6.2.3 to 6.11.0
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.2.3...v6.11.0)
Updates `browser-sync` from 2.27.10 to 2.27.11
- [Release notes](https://github.com/BrowserSync/browser-sync/releases)
- [Changelog](https://github.com/BrowserSync/browser-sync/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BrowserSync/browser-sync/compare/v2.27.10...v2.27.11)
---
updated-dependencies:
- dependency-name: qs
dependency-type: indirect
- dependency-name: browser-sync
dependency-type: direct:development
...
Signed-off-by: dependabot[bot]
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 93 ++++++++++++++++++++---------------------------
package.json | 2 +-
2 files changed, 40 insertions(+), 55 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index cd0b0de3fd..fdd5679ae0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
"popper.js": "^1.16.1"
},
"devDependencies": {
- "browser-sync": "^2.27.10",
+ "browser-sync": "^2.27.11",
"browser-sync-webpack-plugin": "^2.0.1",
"cross-env": "^7.0.2",
"laravel-mix": "^5.0.7",
@@ -2131,13 +2131,13 @@
"dev": true
},
"node_modules/browser-sync": {
- "version": "2.27.10",
- "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz",
- "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==",
+ "version": "2.27.11",
+ "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz",
+ "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==",
"dev": true,
"dependencies": {
- "browser-sync-client": "^2.27.10",
- "browser-sync-ui": "^2.27.10",
+ "browser-sync-client": "^2.27.11",
+ "browser-sync-ui": "^2.27.11",
"bs-recipes": "1.3.4",
"bs-snippet-injector": "^2.0.1",
"chokidar": "^3.5.1",
@@ -2155,7 +2155,7 @@
"micromatch": "^4.0.2",
"opn": "5.3.0",
"portscanner": "2.2.0",
- "qs": "6.2.3",
+ "qs": "^6.11.0",
"raw-body": "^2.3.2",
"resp-modifier": "6.0.2",
"rx": "4.1.0",
@@ -2175,9 +2175,9 @@
}
},
"node_modules/browser-sync-client": {
- "version": "2.27.10",
- "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz",
- "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==",
+ "version": "2.27.11",
+ "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz",
+ "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==",
"dev": true,
"dependencies": {
"etag": "1.8.1",
@@ -2191,9 +2191,9 @@
}
},
"node_modules/browser-sync-ui": {
- "version": "2.27.10",
- "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz",
- "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==",
+ "version": "2.27.11",
+ "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz",
+ "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==",
"dev": true,
"dependencies": {
"async-each-series": "0.1.1",
@@ -2494,15 +2494,6 @@
"node": ">=4"
}
},
- "node_modules/browser-sync/node_modules/qs": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz",
- "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
"node_modules/browser-sync/node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -10473,15 +10464,15 @@
"dev": true
},
"node_modules/socket.io-client": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.3.tgz",
- "integrity": "sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A==",
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz",
+ "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==",
"dev": true,
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.2",
"engine.io-client": "~6.2.3",
- "socket.io-parser": "~4.2.0"
+ "socket.io-parser": "~4.2.1"
},
"engines": {
"node": ">=10.0.0"
@@ -11339,9 +11330,9 @@
"dev": true
},
"node_modules/typescript": {
- "version": "4.8.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
- "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
+ "version": "4.9.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -14715,13 +14706,13 @@
"dev": true
},
"browser-sync": {
- "version": "2.27.10",
- "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz",
- "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==",
+ "version": "2.27.11",
+ "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz",
+ "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==",
"dev": true,
"requires": {
- "browser-sync-client": "^2.27.10",
- "browser-sync-ui": "^2.27.10",
+ "browser-sync-client": "^2.27.11",
+ "browser-sync-ui": "^2.27.11",
"bs-recipes": "1.3.4",
"bs-snippet-injector": "^2.0.1",
"chokidar": "^3.5.1",
@@ -14739,7 +14730,7 @@
"micromatch": "^4.0.2",
"opn": "5.3.0",
"portscanner": "2.2.0",
- "qs": "6.2.3",
+ "qs": "^6.11.0",
"raw-body": "^2.3.2",
"resp-modifier": "6.0.2",
"rx": "4.1.0",
@@ -14964,12 +14955,6 @@
"is-wsl": "^1.1.0"
}
},
- "qs": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz",
- "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=",
- "dev": true
- },
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -15094,9 +15079,9 @@
}
},
"browser-sync-client": {
- "version": "2.27.10",
- "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz",
- "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==",
+ "version": "2.27.11",
+ "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz",
+ "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==",
"dev": true,
"requires": {
"etag": "1.8.1",
@@ -15107,9 +15092,9 @@
}
},
"browser-sync-ui": {
- "version": "2.27.10",
- "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz",
- "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==",
+ "version": "2.27.11",
+ "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz",
+ "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==",
"dev": true,
"requires": {
"async-each-series": "0.1.1",
@@ -21635,15 +21620,15 @@
"dev": true
},
"socket.io-client": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.3.tgz",
- "integrity": "sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A==",
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz",
+ "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==",
"dev": true,
"requires": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.2",
"engine.io-client": "~6.2.3",
- "socket.io-parser": "~4.2.0"
+ "socket.io-parser": "~4.2.1"
}
},
"socket.io-parser": {
@@ -22354,9 +22339,9 @@
"dev": true
},
"typescript": {
- "version": "4.8.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
- "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
+ "version": "4.9.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
"dev": true
},
"ua-parser-js": {
diff --git a/package.json b/package.json
index 5161ec3924..71ac66fae4 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
},
"homepage": "https://github.com/AtreNet/prebid.github.io#readme",
"devDependencies": {
- "browser-sync": "^2.27.10",
+ "browser-sync": "^2.27.11",
"browser-sync-webpack-plugin": "^2.0.1",
"cross-env": "^7.0.2",
"laravel-mix": "^5.0.7",
From e825c909a49cbd76681336e89a3a1cfc0c7de88d Mon Sep 17 00:00:00 2001
From: Andrew
Date: Sat, 7 Jan 2023 06:39:52 -0800
Subject: [PATCH 015/763] Update kargo docs. (#4254)
Co-authored-by: Andrew Fowler
---
dev-docs/bidders/kargo.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/dev-docs/bidders/kargo.md b/dev-docs/bidders/kargo.md
index d6439d923b..7b08665204 100644
--- a/dev-docs/bidders/kargo.md
+++ b/dev-docs/bidders/kargo.md
@@ -29,6 +29,18 @@ This adapter is known to use an HTTP 1 endpoint. Header bidding often generates
### Note:
Kargo is an invitation-only marketplace. Please reach out to your Kargo account manager to get setup. Also, you *must* test on a mobile device, or emulate a mobile device by manipulating the user agent string sent to the server.
+### Bidder Settings
+The Kargo bid adapter uses browser local storage. Since Prebid.js 7.x, the access to it must be explicitly set.
+
+```js
+// https://docs.prebid.org/dev-docs/publisher-api-reference/bidderSettings.html
+pbjs.bidderSettings = {
+ kargo: {
+ storageAllowed: true
+ }
+}
+```
+
### Bid Params:
{: .table .table-bordered .table-striped }
From 3ebed6559988109e6cf2f87594030a91a0a86c72 Mon Sep 17 00:00:00 2001
From: bretg
Date: Mon, 9 Jan 2023 10:37:31 -0500
Subject: [PATCH 016/763] GDPR enforcement wording update (#4260)
Replaced enforcement (the 'e-word') in the instances where it makes sense to do so. There are many places where it doesn't make sense to change it because that word is actually coded into the configuration.
---
dev-docs/modules/gdprEnforcement.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/dev-docs/modules/gdprEnforcement.md b/dev-docs/modules/gdprEnforcement.md
index b8f8f0593d..426ebf93e1 100644
--- a/dev-docs/modules/gdprEnforcement.md
+++ b/dev-docs/modules/gdprEnforcement.md
@@ -2,7 +2,7 @@
layout: page_v2
page_type: module
title: GDPR Enforcement Module
-description: If you have users in Europe, you'll want this module that enforces GDPR consent
+description: If you have users in Europe, you'll want this module that takes action based on a user’s GDPR choices
module_code : gdprEnforcement
display_name : GDPR Enforcement
enable_download : true
@@ -24,7 +24,7 @@ sidebarType : 1
{: .alert.alert-warning :}
This module requires the [EU GDPR consent management module](/dev-docs/modules/consentManagement.html) (the base consent module), which reads consent values from the Consent Management Platform (CMP). The GDPR Enforcement Module
-will then enforce the results. See the [base module page](/dev-docs/modules/consentManagement.html) for general background, usage, and legal disclaimers.
+will then take action based on the results. See the [base module page](/dev-docs/modules/consentManagement.html) for general background, usage, and legal disclaimers.
## Overview
@@ -41,7 +41,7 @@ The GDPR Enforcement Module adds the following:
The following table details the Prebid.js activities that fall under the [Transparency and Consent Framework (TCF)](https://iabeurope.eu/iab-europe-transparency-consent-framework-policies/) scope:
{: .table .table-bordered .table-striped }
-| In-Scope Activity | TCF Legal Basis Required | Enforcement Activity | Prebid.js Version |
+| In-Scope Activity | TCF Legal Basis Required | Activity | Prebid.js Version |
| --- | --- | --- | --- |
| Invoke usersync pixels | Purpose 1 - Store and/or access information on a device | May prevent one or more vendor usersyncs. | 3.14+ |
| Invoke user ID modules | Purpose 1 - Store and/or access information on a device | May prevent one or more UserID modules from activating. | 3.14+ |
@@ -70,7 +70,7 @@ The following fields related to GDPR enforcement are supported in the [`consentM
| gdpr.rules[].purpose | `String` | Supported values: "storage" (Purpose 1), "basicAds" (Purpose 2), "measurement" (Purpose 7) | "storage" |
| gdpr.rules[].enforcePurpose | `Boolean` | Determines whether to enforce the purpose consent. The default in Prebid.js 3.x is not to enforce purposes. Prebid.js 4.0 enforces legal basis for Purposes 1 and 2 by default. | true |
| gdpr.rules[].enforceVendor | `Boolean` | Determines whether to enforce vendor signals for this purpose. The default in Prebid.js 3.x is not to enforce vendor signals. Prebid.js 4.0 enforces legal basis for Purposes 1 and 2 by default. | true |
-| gdpr.rules[].vendorExceptions | `Array of Strings` | Defines a list of biddercodes or module names that are exempt from the enforcement of this Purpose. | ["bidderA", "userID-module-B"] |
+| gdpr.rules[].vendorExceptions | `Array of Strings` | Defines a list of biddercodes or module names that are exempt from restrictions around this Purpose. | ["bidderA", "userID-module-B"] |
| strictStorageEnforcement | `Boolean` | If false (the default), allows some use of storage regardless of purpose 1 consent - see [note](#strictStorageEnforcement) below | true |
Notes:
@@ -94,7 +94,7 @@ pbjs.setConfig({
The following examples cover a range of use cases and show how Prebid.js supports
configuration of different business rules.
-1) Enforce device access activity and basic ads. These are the default values (in Prebid.js 4.0) if the module is included in the build.
+1) Restrict device access activity and basic ads. These are the default values (in Prebid.js 4.0) if the module is included in the build.
```
pbjs.setConfig({
@@ -120,7 +120,7 @@ pbjs.setConfig({
});
```
-2) Enforce that the user consents to DeviceAccess as an activity and consider their per-vendor selection. However, idSystemA is a special case - the publisher has confirmed that this system obtains a user ID every auction and does not write to the local device.
+2) Restrict that the user consents to DeviceAccess as an activity and consider their per-vendor selection. However, idSystemA is a special case - the publisher has confirmed that this system obtains a user ID every auction and does not write to the local device.
...
rules: [{
@@ -130,7 +130,7 @@ pbjs.setConfig({
vendorExceptions: ["idSystemA"]
}]
-3) Enforce legal basis for both storage and basicAds, with the exception of "firstPartyBidder", which is always allowed to run an auction. Assumes the publisher has special legal basis for this entity.
+3) Restrict for both storage and basicAds, with the exception of "firstPartyBidder", which is always allowed to run an auction. Assumes the publisher has special legal basis for this entity.
...
rules: [{
@@ -144,7 +144,7 @@ pbjs.setConfig({
vendorExceptions: ["firstPartyBidder"]
}]
-4) Turn off enforcement of Purpose 1: don't enforce either the user's DeviceAccess consent or their per-vendor selection.
+4) Turn off restriction of Purpose 1: don't enforce either the user's DeviceAccess consent or their per-vendor selection.
...
rules: [{
@@ -168,7 +168,7 @@ pbjs.setConfig({
Prebid.js does not have access to the Global Vendor List (GVL), so it implements
a "basic" form of TCF 'legal basis' validation using the supplied consent string.
-A goal of basic enforcement is to confirm that there's enough evidence of consent to pass data on to vendors who do have access to the GVL and can fully parse and enforce.
+A goal of 'basic enforcement' is to confirm that there's enough evidence of consent to pass data on to vendors who do have access to the GVL and can fully parse and enforce.
Before allowing an activity tied to a TCF-protected Purpose for a given vendor, one of these scenarios must be true:
From f8c8fa972517a185f63521d690734271e623f657 Mon Sep 17 00:00:00 2001
From: bretg
Date: Mon, 9 Jan 2023 11:06:37 -0500
Subject: [PATCH 017/763] gdpr module summary update (#4261)
---
dev-docs/modules/gdprEnforcement.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/modules/gdprEnforcement.md b/dev-docs/modules/gdprEnforcement.md
index 426ebf93e1..f343bd7bc4 100644
--- a/dev-docs/modules/gdprEnforcement.md
+++ b/dev-docs/modules/gdprEnforcement.md
@@ -2,7 +2,7 @@
layout: page_v2
page_type: module
title: GDPR Enforcement Module
-description: If you have users in Europe, you'll want this module that takes action based on a user’s GDPR choices
+description: If you have users in Europe, you can use this module to enable actions for processing under the GDPR and ePrivacy
module_code : gdprEnforcement
display_name : GDPR Enforcement
enable_download : true
From b9f1ba4cd7e924063cbb353b3c591df7553ba479 Mon Sep 17 00:00:00 2001
From: bretg
Date: Tue, 10 Jan 2023 10:01:50 -0500
Subject: [PATCH 018/763] download page version check (#4262)
---
dev-docs/modules/consentManagementGpp.md | 1 +
dev-docs/modules/userid-submodules/teads.md | 1 +
download.md | 165 +++++---------------
3 files changed, 39 insertions(+), 128 deletions(-)
diff --git a/dev-docs/modules/consentManagementGpp.md b/dev-docs/modules/consentManagementGpp.md
index 98890dac0a..c0e3be1ff2 100644
--- a/dev-docs/modules/consentManagementGpp.md
+++ b/dev-docs/modules/consentManagementGpp.md
@@ -7,6 +7,7 @@ module_code : consentManagementGpp
display_name : Consent Management - GPP
enable_download : true
recommended: true
+min_js_version: 7.30.0
sidebarType : 1
---
diff --git a/dev-docs/modules/userid-submodules/teads.md b/dev-docs/modules/userid-submodules/teads.md
index 4fd4a26135..a391c9a5bd 100644
--- a/dev-docs/modules/userid-submodules/teads.md
+++ b/dev-docs/modules/userid-submodules/teads.md
@@ -3,6 +3,7 @@ layout: userid
title: Teads ID
description: Teads ID User ID sub-module
useridmodule: teadsId
+pbjs_version_notes: please avoid using v7.20.0 and v7.21.0
---
diff --git a/download.md b/download.md
index 339fe33d95..e1c9446856 100644
--- a/download.md
+++ b/download.md
@@ -132,6 +132,9 @@ function submit_download() {
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
+ if (form_data['removedModules'].length > 0) {
+ alert("The following modules were removed from your download because they aren't present in Prebid.js version "+form_data['version']+": "+JSON.stringify(form_data['removedModules']));
+ }
})
.fail(function(e) {
errorO = e;
@@ -147,12 +150,30 @@ function get_form_data() {
var bidders = [];
var analytics = [];
var version = $('.selectpicker').val();
+ var removedModules = [];
+
+ var version_restrictions=$('.version-restriction');
+ for (var i = 0; i < version_restrictions.length; i++) {
+ var module=version_restrictions[i].getAttribute('moduleCode');
+ var restriction_name=version_restrictions[i].getAttribute('name');
+ var restriction_value=version_restrictions[i].getAttribute('value');
+ if (restriction_name == "min-version") {
+ var module_version_array=restriction_value.split(".");
+ var pbjs_version_array=version.split(".");
+ if ((Number(pbjs_version_array[0]) < Number(module_version_array[0])) ||
+ (Number(pbjs_version_array[0]) == Number(module_version_array[0]) &&
+ Number(pbjs_version_array[1]) < Number(module_version_array[1]))) {
+ removedModules.push(module);
+ }
+ }
+ }
var bidder_check_boxes = $('.bidder-check-box');
for (var i = 0; i < bidder_check_boxes.length; i++) {
var box = bidder_check_boxes[i];
- if (box.checked) {
- bidders.push(box.getAttribute('moduleCode'));
+ var module=box.getAttribute('moduleCode');
+ if (box.checked && !removedModules.includes(module)) {
+ bidders.push(module);
}
}
@@ -164,9 +185,11 @@ function get_form_data() {
}
}
+
var form_data = {};
form_data['modules'] = bidders.concat(analytics);
form_data['version'] = version;
+ form_data['removedModules'] = removedModules;
return form_data;
}
@@ -196,6 +219,7 @@ Prebid.js is open source software that is offered for free as a convenience. Whi
{% assign bidder_pages = site.pages | where: "layout", "bidder" %}
{% assign module_pages = site.pages | where: "page_type", "module" %}
{% assign analytics_pages = site.pages | where: "layout", "analytics" %}
+{% assign userid_pages = site.pages | where: "layout", "userid" %}