From 50c40cc32743fea4efcde506ccc9200d900489fc Mon Sep 17 00:00:00 2001
From: bretg
Date: Mon, 3 Jun 2024 13:15:25 -0400
Subject: [PATCH 001/816] Update Gemfile for FFI version (#5384)
---
Gemfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Gemfile b/Gemfile
index 4d0186505c..752b337f20 100755
--- a/Gemfile
+++ b/Gemfile
@@ -1,4 +1,4 @@
source 'https://rubygems.org'
gem 'github-pages', '>= 228'
-
+gem 'ffi', '1.16.3'
gem "webrick", "~> 1.7"
From e7c55da2dd6b60d3f85dec7b153ec4e509f0e3a4 Mon Sep 17 00:00:00 2001
From: Jono Sligh <139150153+jsligh@users.noreply.github.com>
Date: Mon, 3 Jun 2024 12:20:13 -0500
Subject: [PATCH 002/816] Fixed typo (c+p error) (#5385)
---
prebid-mobile/modules/rendering/ios-sdk-integration-gam.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md b/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
index 26cdd8eb3f..59bb7df5b8 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
@@ -34,7 +34,7 @@ If you do not have GMA SDK in the app yet, refer to the [Google Integration Docu
Prebid SDK provides rendering integration into GAM setup thru [app events](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/banner#app_events) mechanism. To integrate Prebid Event Handlers into your app, add the following line to your Podfile:
```pod
-pod 'PrebidMobileAdMobAdapters'
+pod 'PrebidMobileGAMEventHandlers'
```
## Event Handlers Initialization
From a99f0671855884fc611ba5c45ab4582ed0706997 Mon Sep 17 00:00:00 2001
From: SmartHubSolutions <87376145+SmartHubSolutions@users.noreply.github.com>
Date: Tue, 4 Jun 2024 17:12:58 +0300
Subject: [PATCH 003/816] add adapter Tredio (#5348)
* add adapter Tredio
* update due review
* add aliasCode
* end with a single newline character
---------
Co-authored-by: Victor
---
dev-docs/bidders/tredio.md | 39 ++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 dev-docs/bidders/tredio.md
diff --git a/dev-docs/bidders/tredio.md b/dev-docs/bidders/tredio.md
new file mode 100644
index 0000000000..0b820465a0
--- /dev/null
+++ b/dev-docs/bidders/tredio.md
@@ -0,0 +1,39 @@
+---
+layout: bidder
+title: Tredio
+description: Tredio Bidder Adapter
+biddercode: tredio
+aliasCode : smarthub
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+dchain_supported: true
+media_types: banner, video, native
+safeframes_ok: true
+deals_supported: true
+floors_supported: true
+fpd_supported: false
+pbjs: true
+pbs: true
+pbs_app_supported: true
+multiformat_supported: true
+---
+
+### Prebid.js Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|---------------------------------|-------------------------------------|-----------|
+| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
+| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
+| `iabCat` | optional | Array of IAB content categories that describe the content producer | `['IAB1-1', 'IAB3-1', 'IAB4-3']` | `Array(String)` |
+| `minBidfloor` | optional | Minimal CPM value | `0.03` | `float` |
+| `pos` | optional | The position of the placement on the page, see Open RTB spec v2.5. | `4` | `number` |
+
+### Prebid Server Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|---------------------|--------------------------------------|----------|
+| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
+| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
From c7ace0cbf7fe13ce7073c75ab6678d1cb098e783 Mon Sep 17 00:00:00 2001
From: SmartHubSolutions <87376145+SmartHubSolutions@users.noreply.github.com>
Date: Tue, 4 Jun 2024 17:14:41 +0300
Subject: [PATCH 004/816] add adapter JDPMedia (#5339)
* add adapter JDPMedia
* update docs due review
* add aliasCode
---------
Co-authored-by: Victor
---
dev-docs/bidders/jdpmedia.md | 39 ++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 dev-docs/bidders/jdpmedia.md
diff --git a/dev-docs/bidders/jdpmedia.md b/dev-docs/bidders/jdpmedia.md
new file mode 100644
index 0000000000..5b2367ed9a
--- /dev/null
+++ b/dev-docs/bidders/jdpmedia.md
@@ -0,0 +1,39 @@
+---
+layout: bidder
+title: JDPMedia
+description: JDPMedia Bidder Adapter
+biddercode: jdpmedia
+aliasCode : smarthub
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+dchain_supported: true
+media_types: banner, video, native
+safeframes_ok: true
+deals_supported: true
+floors_supported: true
+fpd_supported: false
+pbjs: true
+pbs: true
+pbs_app_supported: true
+multiformat_supported: true
+---
+
+### Prebid.js Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|---------------------------------|-------------------------------------|-----------|
+| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
+| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
+| `iabCat` | optional | Array of IAB content categories that describe the content producer | `['IAB1-1', 'IAB3-1', 'IAB4-3']` | `Array(String)` |
+| `minBidfloor` | optional | Minimal CPM value | `0.03` | `float` |
+| `pos` | optional | The position of the placement on the page, see Open RTB spec v2.5. | `4` | `number` |
+
+### Prebid Server Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|---------------------|--------------------------------------|----------|
+| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
+| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
From 46b03bcf9541b6a709650f3bd016e16a507e3977 Mon Sep 17 00:00:00 2001
From: Patrick McCann
Date: Tue, 4 Jun 2024 19:36:28 -0400
Subject: [PATCH 005/816] Update integrate-with-the-prebid-analytics-api.md
(#5392)
documents https://github.com/prebid/Prebid.js/pull/11682
---
dev-docs/integrate-with-the-prebid-analytics-api.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/dev-docs/integrate-with-the-prebid-analytics-api.md b/dev-docs/integrate-with-the-prebid-analytics-api.md
index ba1a9dfb42..f7518828c3 100644
--- a/dev-docs/integrate-with-the-prebid-analytics-api.md
+++ b/dev-docs/integrate-with-the-prebid-analytics-api.md
@@ -150,6 +150,7 @@ There are two error events analytics modules may wish to listen for: auctionDebu
* listen only to the events required
* batch up calls to the backend for post-auction logging rather than calling immediately after each event.
+* consider using the keepalive option on the ajax request to keep the priority low and the request queued after the pageview dies
### Step 3: Add unit tests
From fe8201ee9fec88923d06a45667f4207be93f40d1 Mon Sep 17 00:00:00 2001
From: Jeff Mahoney
Date: Thu, 6 Jun 2024 14:08:28 -0400
Subject: [PATCH 006/816] Update sharethrough.md (#5374)
* Update sharethrough.md
* Add some additional information to the bidder documentation.
* Update sharethrough.md
Lint fix
* Update sharethrough.md
Include language in code block.
---
dev-docs/bidders/sharethrough.md | 73 ++++++++++++++++++++++++++++++--
1 file changed, 70 insertions(+), 3 deletions(-)
diff --git a/dev-docs/bidders/sharethrough.md b/dev-docs/bidders/sharethrough.md
index f3673a5291..fa18d284fe 100644
--- a/dev-docs/bidders/sharethrough.md
+++ b/dev-docs/bidders/sharethrough.md
@@ -21,7 +21,7 @@ ortb_blocking_supported: partial
sidebarType: 1
---
-### Note
+### Before You Begin
The Sharethrough bidder adapter requires additional setup and approval from the Sharethrough Integrations team. Please reach out to your account manager for more information to start using it.
@@ -34,8 +34,47 @@ The Sharethrough bidder adapter requires additional setup and approval from the
| `bcat` | optional | (deprecated) Array of blocked IAB Categories | `['IAB1-2', 'IAB1-3']` | `string[]` |
| `badv` | optional | (deprecated) Array of blocked Advertisers by their domains | `['ford.com', 'pepsi.com']` | `string[]` |
-Note: Providing `bcat` and `badv` via Bid Params is deprecated, the First Party Data method should be preferred (see below).
-When both methods are provided, first party data values will be used and bid param values will be ignored.
+**Note**: Providing `bcat` and `badv` via Bid Params is deprecated, the First Party Data method should be preferred (see below).
+When both methods are provided (i.e. when `badv` and `bcat` are specified both as bid params and through the first party ortb2 method), first party data values will be used and bid param values will be ignored.
+
+#### Configuration
+
+Sample banner setup:
+
+```js
+
+```
#### First Party Data
@@ -86,3 +125,31 @@ pbjs.setConfig({
}
});
```
+
+### Additional Notes
+
+#### Request and Response Attributes
+
+- TTL is 360 for display and native, 3600 for video (in milliseconds).
+- Safeframes are supported.
+- Advertiser domains are available in bid responses at `meta.advertiserDomains`
+- Bids are returned in **net** - that is, the bids returned reflect the bid amount with revenue sharing already taken into account. No adjustment is necessary.
+- Sharethrough is GDPR and COPPA compliant.
+
+#### Supported Media Types
+
+- Banner
+- Native
+- Video (instream and outstream)
+
+#### Default Ad Server Key Value
+
+- `sharethrough`
+
+### Prebid Module Support
+
+For publishers using PBJS version 5 and above, current module support includes:
+
+- Price Floors
+- Supply Chain Object
+- User ID
From f287fa09aada91cfcb89ef2ada4bc22703f03ff5 Mon Sep 17 00:00:00 2001
From: Carlos Felix
Date: Thu, 6 Jun 2024 13:18:15 -0500
Subject: [PATCH 007/816] 33across - use video.plcmt instead of video.placement
(#5375)
---
dev-docs/bidders/33across.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dev-docs/bidders/33across.md b/dev-docs/bidders/33across.md
index 4076fae58b..c5dea1516c 100644
--- a/dev-docs/bidders/33across.md
+++ b/dev-docs/bidders/33across.md
@@ -68,7 +68,7 @@ var adUnits = [
context: 'outstream', // required
mimes: ['video/mp4','video/x-flv'], // required
protocols: [ 2, 3 ], // required, set at least 1 value in array
- placement: 2, // optional, defaults to 2 when context = outstream
+ plcmt: 2, // optional, defaults to 2 when context = outstream
api: [ 1, 2 ], // optional
skip: 0, // optional
minduration: 5, // optional
@@ -104,7 +104,7 @@ var adUnits = [
context: 'instream', // required
mimes: ['video/mp4','video/x-flv'], // required
protocols: [ 2, 3 ], // required, set at least 1 value in array
- placement: 1, // optional, defaults to 1 when context = instream
+ plcmt: 1, // optional, defaults to 1 when context = instream
startdelay: 0, // optional, defaults to 0 when context = instream
api: [ 1, 2 ], // optional
skip: 0, // optional
@@ -147,7 +147,7 @@ var adUnits = [
context: 'outstream', // required
mimes: ['video/mp4','video/x-flv'], // required
protocols: [ 2, 3 ], // required, set at least 1 value in array
- placement: 2, // optional, defaults to 2 when context = outstream
+ plcmt: 2, // optional, defaults to 2 when context = outstream
api: [ 1, 2 ], // optional
skip: 0, // optional
minduration: 5, // optional
From b454d0dce5093673469735f5d9821d4a8b31d1a7 Mon Sep 17 00:00:00 2001
From: Baptiste Haudegand
<89531368+github-baptiste-haudegand@users.noreply.github.com>
Date: Thu, 6 Jun 2024 22:19:45 +0200
Subject: [PATCH 008/816] Update list of GPP sids for Teads adapter (#5394)
---
dev-docs/bidders/teads.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/teads.md b/dev-docs/bidders/teads.md
index 3847370dc7..c3f623978a 100644
--- a/dev-docs/bidders/teads.md
+++ b/dev-docs/bidders/teads.md
@@ -20,7 +20,7 @@ multiformat_supported: will-not-bid
ortb_blocking_supported: true
floors_supported: true
coppa_supported: true
-gpp_sids: tcfeu, usp
+gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp
fpd_supported: false
sidebarType: 1
---
From c3fe0f5aeda6cc521a3980da022780600641d62b Mon Sep 17 00:00:00 2001
From: PrecisoSRL <134591565+PrecisoSRL@users.noreply.github.com>
Date: Mon, 10 Jun 2024 11:53:40 +0530
Subject: [PATCH 009/816] Preciso: updates docs for new fields (#5191)
* bidder Doc: Preciso bidder doc added
* added multiformat_support
* Changed pbjs as true
* corrections on ORTB blocking
* Updated preciso documentation
* merge conflict fix
* Updated preciso documentation
* Updated preciso documentation
* removed empty lines
* features updated
* bid params name corrected
* SharedId Sample Comfiguration removed and Updated other requested changes
* multiple empty lines removed
---------
Co-authored-by: Nikhil Gopal Chennissery
---
dev-docs/bidders/preciso.md | 104 +++++++++++++++++++++++-------------
1 file changed, 68 insertions(+), 36 deletions(-)
diff --git a/dev-docs/bidders/preciso.md b/dev-docs/bidders/preciso.md
index 52523c39c1..867d7b1c34 100644
--- a/dev-docs/bidders/preciso.md
+++ b/dev-docs/bidders/preciso.md
@@ -1,63 +1,95 @@
---
layout: bidder
title: Preciso
-description: Prebid Preciso Bidder Adapter
+description: Prebid Preciso Bid Adapter
+gdpr_supported: true
gvl_id: 874
-media_types: display, video, native
+media_types: display
gdpr_supported: true
usp_supported: true
pbjs: true
-pbs: true
+pbs: false
biddercode: preciso
prebid_member: true
floors_supported: true
safeframes_ok: true
schain_supported: true
-userIds: id5Id, identityLink, pubProvidedId
-pbs_app_supported: true
+userIds: sharedId
+deals_supported: false
coppa_supported: true
-multiformat_supported: will-bid-on-any
-ortb_blocking_supported: partial
+multiformat_supported: will-not-bid
+ortb_blocking_supported: true
sidebarType: 1
---
+### Modules
-### Bid Params
+SharedID: We need you to include the [SharedID module](/dev-docs/modules/userid-submodules/sharedid.html) in order to bid effectively on your inventory.
+
+### Registration
+
+The preciso Bidding adapter requires setup before beginning. Please contact us at [tech@preciso.net]
+
+#### OpenRTB Parameters
+The following table contains currently supported parameters we parse.
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|---------------------|---------------|----------|
-| `publisherId` | required | Unique publisher ID | `'ABCDEF'` | `string` |
-| `region` | required | Assigned region | `'prebid-eu'` | `string` |
-| `bidfloor` | optional | Minimal CPM value | `0.01` | `float` |
-| `channel` | optional | Inventory channel identifier, limited to 50 characters | `Partner 1 - News` | `string` |
+| Name | Scope | Description | Example | Type |
+|--------------------|----------|---------------------------------------------------------------|-------------------|----------------|
+| `bcat` | optional | List of blocked advertiser categories (IAB) | `['IAB1-1']` | `string array` |
+| `badv` | optional | Blocked Advertiser Domains | `['example.com']` | `string array` |
+| `wlang` | optional | Allow List of languages for creatives using ISO-639-1-alpha-2 | `['fr', 'en']` | `string array` |
-### ORTB Blocking
-Preciso supports blocking advertisers in `badv` and categories in `bcat` parameters.
-The blocked advertisers/categories list has no length limitation, but response timeout is more likely to occur as the number of entries grow.
-Blocked advertisers list (`badv`) is an array of domains as strings.
-Blocked categories list (`bcat`) is an array of IAB categories as strings.
+Example configuration:
-For example:
-#### Globally defined ORTB Blocking:
```javascript
+
pbjs.setConfig({
- ortb2: {
- badv: ["domain1.com", "domain2.com"],
- bcat: ["IAB23-1", "IAB23-5", "IAB25-3", "IAB25-2"]
- }
-)};
-```
-#### ORTB Blocking specific only to preciso bidder:
-```javascript
-pbjs.setBidderConfig({
- bidders: ['preciso'],
- config:{
ortb2: {
- badv: ["domain1.com", "domain2.com"],
- bcat: ["IAB23-1", "IAB23-5", "IAB25-3", "IAB25-2"]
+ bcat: ['IAB1-1'],
+ badv: ['example.com'],
+ wlang: ['fr', 'en']
}
- }
});
-```
\ No newline at end of file
+```
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|---------------------|---------------|----------|
+| `publisherId` | required | Numeric Publisher ID (as provided by Preciso) | `'123AB123'` | `string` |
+| `region` | optional,recommended | 3 letter country code | `'IND'` | `string` |
+| `bidFloor` | optional,recommended | Minimum bid for this impression expressed in CPM (USD) | `0.01` | `float` |
+| `pageType` | optional, recommended | Kind of content present in the page | `'homepage'` | `String` |
+| `bcat` | optional | List of blocked advertiser categories (IAB) | `['IAB1-1']` | `string array` |
+| `badv` | optional | Blocked Advertiser Domains| `'example.com'` | `string array`|
+
+Notes:
+
+- Preferred to provide the `bcat` and `badv` within the first party data (above). When both methods are provided, first party data values will be prioritized.
+
+### Example Ad Unit
+
+``````javascript
+ var adUnits = [{
+ code: 'your-unit-container-id',
+ mediaTypes: {
+ banner: {
+ sizes: [[300, 250], [300,600]]
+ }
+ },
+ bids: [{
+ bidder: 'preciso',
+ params: {
+ publisherId: 'your-publisher-id',
+ region: 'IND',
+ pageType: 'news',// Optional
+ bidFloor: 0.25, // Optional - default is 0.0
+ bcat: ['IAB1-1'], // Optional - default is []
+ badv: ['example.com'] // Optional - default is []
+ }
+ }]
+}];
+``````
From ef3aec5cd6061ec81fb9e5723c0398e5766bba08 Mon Sep 17 00:00:00 2001
From: Eugene Dorfman
Date: Mon, 10 Jun 2024 13:28:31 +0200
Subject: [PATCH 010/816] 51d: add table styles (#5405)
---
dev-docs/modules/51DegreesRtdProvider.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/dev-docs/modules/51DegreesRtdProvider.md b/dev-docs/modules/51DegreesRtdProvider.md
index 9d99c83ed2..dda5620d34 100644
--- a/dev-docs/modules/51DegreesRtdProvider.md
+++ b/dev-docs/modules/51DegreesRtdProvider.md
@@ -133,6 +133,7 @@ pbjs.setConfig({
> Note that `resourceKey` and `onPremiseJSUrl` are mutually exclusive parameters. Use strictly one of them: either a `resourceKey` for cloud integration and `onPremiseJSUrl` for the on-premise self-hosted integration.
+{: .table .table-bordered .table-striped }
| Name | Type | Description | Default |
|:----------------------|:--------|:-------------------------------------------------------------------------------------------------|:-------------------|
| name | String | Real time data module name | Always '51Degrees' |
From ba31609869a2c183b5223387fd5e739d12396703 Mon Sep 17 00:00:00 2001
From: Keith Petri <74626343+KEPlockr@users.noreply.github.com>
Date: Mon, 10 Jun 2024 09:02:34 -0400
Subject: [PATCH 011/816] lockr AIM (#5278)
* added the lockr AIM documentation
* added the fix for the tables
* fixing linter errors
* added the changes related to the build and the description updates
* wordsmithing
* lint
---------
Co-authored-by: Avin
Co-authored-by: bretg
---
.../modules/userid-submodules/lockraim.md | 119 ++++++++++++++++++
1 file changed, 119 insertions(+)
create mode 100644 dev-docs/modules/userid-submodules/lockraim.md
diff --git a/dev-docs/modules/userid-submodules/lockraim.md b/dev-docs/modules/userid-submodules/lockraim.md
new file mode 100644
index 0000000000..6a1d8c7373
--- /dev/null
+++ b/dev-docs/modules/userid-submodules/lockraim.md
@@ -0,0 +1,119 @@
+---
+layout: userid
+title: lockr AIM
+description: lockr Alternative Identity Manager sub-module
+useridmodule: lockrAIMIdSystem
+---
+
+Alternative Identity Manager (AIM) is a unified container for identity and data management.
+AIM includes a self-service platform for publishers to seamlessly integrate and activate alternative IDs like LiveRamp’s Authenticated Traffic Solution (ATS), Unified ID 2.0 (UID2), and ID5. The self-service component allows the publisher to easily enable or disable IDs and to send identity clusters to CDPs or cleanrooms without engaging engineering teams. For more information about AIM and detailed integration docs, please visit [our documentation](https://sso.loc.kr/api/lockr_reference.html#tag/Alternate-Identity-Management-(AIM)).
+
+### **Account Creation | AIM**
+
+1. Sign up for an [Identity lockr account.](https://sso.loc.kr/console/signup)
+2. Setup your app and activate the AIM library.
+3. Compile Prebid with the appropriate configurations, and deploy.
+
+### **Configuration | AIM**
+
+Add the lockr’s AIM submodule to your Prebid.js package by running:
+
+```sh
+gulp build –modules=lockrAIMIdSystem,...
+```
+
+The following configuration parameters are available:
+{: .table .table-bordered .table-striped }
+| Param | Scope | Type | Description | Example |
+|----------------|----------|--------|----------------------------------------|-----------------------|
+| name | Required | String | The name of this module: `"lockrAIMId"`| `"lockrAIMId"` |
+| params | Required | Object | Details for the configuration. | |
+| params.email | Required | String | Email address for identity tokens. | `test@example.com` |
+| params.appID | Required | String | Identity lockr appID | `e84afc5f-4adf-4144-949f-1de5bd151fcc` |
+
+**Google oAuth:**
+If you are using Google oAuth (_as an example_), the onSignIn function will subsequently call window.lockr.setAdditionalData function and include a raw email.
+
+```javascript
+function onSignIn(googleUser) {
+ pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'lockrAIMId',
+ params: {
+ email: 'john@example.com',
+ appID: 'e84afc5f-4adf-4144-949f-1de5bd151fcc'
+ }
+ }]
+ }
+ });
+}
+```
+
+**Facebook oAuth:**
+If you are using Facebook Login (_as an example_), the statusChangeCallback function will subsequently call window.lockr.setAdditionalData function and include a raw email.
+
+```javascript
+function statusChangeCallback(response) {
+ console.log('statusChangeCallback');
+ console.log(response);
+ if(response.status === 'connected'){
+ pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'lockrAIMId',
+ params: {
+ email: 'john@example.com',
+ appID: 'e84afc5f-4adf-4144-949f-1de5bd151fcc'
+ }
+ }]
+ }
+ });
+ }else{
+ document.getElementById('status').innerHTML = 'Please login';
+ }
+}
+```
+
+**Note:** The above code can be triggered from anywhere on the domain (i.e. a subscription form).
+
+**lockr AIM Example**
+
+```javascript
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'lockrAIMId',
+ params: {
+ email: 'test@example.com',
+ appID: 'e84afc5f-4adf-4144-949f-1de5bd151fcc'
+ }
+ }]
+ }
+});
+```
+
+_Note_: lockr’s AIM self-service interface empowers publishers with the ability to pass the alternative IDs activated back to the client as local storage or as a first party cookie. Each Identity Provider can be individually set to restrict from client-side delivery and instead be retained as an authentication event within Identity lockr. In this case no data is lost, but instead maintained for automated or manual sharing to any Data Endpoint.
+
+**Troubleshooting and Error handling:**
+
+1. Navigate to the domain where Prebid.js Library is integrated.
+2. Go to the 'Network' tab of your Developer Tools. Search for “prebid.js”
+3. In the application tab, you can confirm any activated Identity Provider (if client-side storage is turned on in AIM’s Identity Provider settings).
+4. Debugging:
+ Enable the debug flag to true in the setConfig call:
+
+```javascript
+pbjs.setConfig({
+ debug: true,
+ userSync: {
+ userIds: [{
+ name: 'lockrAIMId',
+ params: {
+ email: 'test@example.com',
+ appID: 'e84afc5f-4adf-4144-949f-1de5bd151fcc'
+ }
+ }]
+ }
+});
+```
From e03e7478abe3f285d73aa6add0d13737ffa6743d Mon Sep 17 00:00:00 2001
From: qt-io <104574052+qt-io@users.noreply.github.com>
Date: Wed, 12 Jun 2024 18:47:39 +0300
Subject: [PATCH 012/816] New Adapter: QT (#5331)
* New Adapter: QT
* pbs marked as false
---
dev-docs/bidders/qt.md | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 dev-docs/bidders/qt.md
diff --git a/dev-docs/bidders/qt.md b/dev-docs/bidders/qt.md
new file mode 100644
index 0000000000..c0838c774f
--- /dev/null
+++ b/dev-docs/bidders/qt.md
@@ -0,0 +1,35 @@
+---
+layout: bidder
+title: QT
+description: Prebid QT Bidder Adapter
+biddercode: qt
+gpp_sids: usstate_all
+tcfeu_supported: false
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+deals_supported: false
+floors_supported: true
+fpd_supported: false
+ortb_blocking_supported: false
+media_types: banner, video, native
+multiformat_supported: will-bid-on-one
+userIds: all
+pbjs: true
+pbs: false
+pbs_app_supported: true
+safeframes_ok: true
+sidebarType: 1
+---
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|--------------|---------------------------------|------------|
+| `placementId` | optional | Placement Id | `'0'` | `'string'` |
+| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` |
+
+### Note
+
+For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId
From a11c1be8f9cd96a45e002eeb43c85c76f1f83ddf Mon Sep 17 00:00:00 2001
From: bretg
Date: Thu, 13 Jun 2024 04:43:02 -0400
Subject: [PATCH 013/816] PBS request example (#5381)
* pbs auction example
* cont
* lint
* trying to work around build failure
* Update prebid-server/endpoints/openrtb2/auction-request-example.md
---------
Co-authored-by: Muki Seiler
---
faq/prebid-server-faq.md | 4 +
prebid-server/developers/add-new-bidder-go.md | 2 +
.../developers/add-new-bidder-java.md | 2 +
.../openrtb2/auction-request-example.md | 245 ++++++++++++++++++
.../openrtb2/pbs-endpoint-auction.md | 1 +
5 files changed, 254 insertions(+)
create mode 100644 prebid-server/endpoints/openrtb2/auction-request-example.md
diff --git a/faq/prebid-server-faq.md b/faq/prebid-server-faq.md
index 26d7946c36..5f6ad81c19 100644
--- a/faq/prebid-server-faq.md
+++ b/faq/prebid-server-faq.md
@@ -248,6 +248,10 @@ In the long run, if you'd prefer to change the filenames too, that's ok - but ou
1. Submit a PR that changes the filenames and makes the old name a hard-coded alias.
2. Keep both bidder documentation files.
+## May I build a server that calls Prebid Server?
+
+Sure. The main endpoint you're going to utilize is the [auction endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html). Basically, it's just OpenRTB 2.6, but with quite a few Prebid-specific extensions. See the [auction request example](/prebid-server/endpoints/openrtb2/auction-request-example.html).
+
## Should Prebid bidders be in ads.txt?
Publishers should be careful to list all their bidding partners in their ads.txt file. Bidders without an entry in ads.txt may be
diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md
index e2bcf0c114..a7b395f972 100644
--- a/prebid-server/developers/add-new-bidder-go.md
+++ b/prebid-server/developers/add-new-bidder-go.md
@@ -29,6 +29,8 @@ Bid adapters are responsible for translating a 'Prebid-flavored' OpenRTB Bid Req
OpenRTB Bid Requests contain one or more impression objects, each representing a single ad placement. An impression may define multiple sizes and/or multiple ad formats. If your bidding server limits requests to a single ad placement, size, or format, then your adapter will need to split the impression into multiple calls and merge the responses.
+See the [example auction request](/prebid-server/endpoints/openrtb2/auction-request-example.html) to get an idea for what your adapter will receive.
+
## Plan Your Bid Adapter
The job of your bid adapter is to adapt. You'll need to think about currency, floors, mediatypes, and other details as noted below.
diff --git a/prebid-server/developers/add-new-bidder-java.md b/prebid-server/developers/add-new-bidder-java.md
index a0c4da4e79..0c9d06e2a5 100644
--- a/prebid-server/developers/add-new-bidder-java.md
+++ b/prebid-server/developers/add-new-bidder-java.md
@@ -29,6 +29,8 @@ Bid adapters are responsible for translating a 'Prebid-flavored' OpenRTB Bid Req
OpenRTB Bid Requests contain one or more impression objects, each representing a single ad placement. An impression may define multiple sizes and/or multiple ad formats. If your bidding server limits requests to a single ad placement, size, or format, then your adapter will need to split the impression into multiple calls and merge the responses.
+See the [example auction request](/prebid-server/endpoints/openrtb2/auction-request-example.html) to get an idea for what your adapter will receive.
+
## Plan Your Bid Adapter
### Choose A Name
diff --git a/prebid-server/endpoints/openrtb2/auction-request-example.md b/prebid-server/endpoints/openrtb2/auction-request-example.md
new file mode 100644
index 0000000000..261cd9b25f
--- /dev/null
+++ b/prebid-server/endpoints/openrtb2/auction-request-example.md
@@ -0,0 +1,245 @@
+---
+layout: page_v2
+sidebarType: 5
+title: Prebid Server | Endpoints | OpenRTB2 | Auction Example
+---
+
+# Prebid Server | Endpoints | /openrtb2/auction -- Example
+
+This is an example of a Prebid Server-flavored OpenRTB auction request with most fields present.
+It serves 2 purposes:
+
+- Give context about what custom server-to-server integrations could implement. i.e. if you're building a server that will sit in front of Prebid Server, these are many of the fields that can be provided.
+- Provide an example for bid adapter developers to understand what their code will see for each auction. Prebid Server does modify the auction request before giving it to a bid adapter because individual bidders are not allowed to see details from other adapters. The example is annotated with differences between the incoming auction request and what adapters see.
+
+## POST /openrtb2/auction
+
+```json5
+{
+ "id": "123456789",
+ "source": {
+ "tid": "a64e6b91-7bfd-4f0b-9861-99307e41f971"
+ },
+ "tmax": 1000,
+ "imp": [
+ {
+ "ext": {
+ "ae": 1,
+ "gpid": "/1111/adslot#2",
+ "data": {
+ "adserver": {
+ "name": "gam",
+ "adslot": "/1111/adslot"
+ }
+ },
+ "tid": "4f8f2e78-94b0-431b-b735-6da38a6f3ef0",
+ "prebid": { // bid adapters don't see this object
+ "bidder": {
+ "bidderAlias": { // bid adapters don't see this object
+ "placement": 1001 // The contents of this object are seen by adapters at imp[].ext.bidder
+ }
+ },
+ "passthrough": { // bid adapters don't see this object
+ "attr": "val"
+ }
+ }
+ },
+ "id": "test-div",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ },
+ {
+ "w": 300,
+ "h": 600
+ },
+ {
+ "w": 728,
+ "h": 90
+ }
+ ]
+ },
+ "bidfloor": 0.98,
+ "bidfloorcur": "USD"
+ }
+ ],
+ "test": 1,
+ "ext": {
+ "prebid": {
+ "trace": "verbose",
+ "returnallbidstatus": true, // bid adapters don't see this object
+ "auctiontimestamp": 1664308667064,
+ "cache": { // bid adapters don't see this object
+ "vastXml": {}
+ },
+ "targeting": { // bid adapters don't see this object
+ "includewinners": true,
+ "includebidderkeys": false
+ },
+ "floors": { // bid adapters don't see this object
+ "enabled": false
+ },
+ "channel": {
+ "name": "pbjs",
+ "version": "v7.17.0"
+ },
+ "createtid": false, // bid adapters don't see this object
+ "integration": "mbjs",
+ "currency": {
+ "rates": {
+ "USD": { "UAH": 24.47, "ETB": 32.04 }
+ },
+ "usepbsrates": true
+ },
+ "debug": true,
+ "aliases": { // bid adapters don't see this object
+ "bidderAlias": "bidderA"
+ },
+ "aliasgvlids": { // bid adapters don't see this object
+ "bidderAlias": 999999
+ },
+ "bidadjustmentfactors": { // bid adapters don't see this object
+ "bidderA": 0.9
+ },
+ "bidderparams": { // bid adapters don't see this object
+ "bidderA": {
+ "globalparam": "value" // bid adapter will see this added to the imp.ext.bidder object
+ }
+ },
+ "schains": [{
+ "bidders": ["bidderA"],
+ "schain": { SCHAIN OBJECT 1} // bid adapters will see their schain on source.[ext.]schain.
+ }],
+ "server": {
+ "externalurl": "https://prebid-server.example.com",
+ "gvlid": 9999999,
+ "datacenter": "us-east-1"
+ },
+ "data": {
+ "eidpermissions": [ // bid adapters don't see this object
+ {"source": "sharedid.org", "bidders": ["*"]}, // * is the default
+ ]
+ },
+ "biddercontrols": { // bid adapters don't see this object
+ "bidderB": { "prefmtype": "video" }
+ },
+ "bidderconfig": [ // bid adapters don't see this object
+ {
+ "bidders": [
+ "bidderAlias"
+ ],
+ "config": {
+ "ortb2": {
+ "site": {
+ "ext": {
+ "data": {
+ "customsite": "customsite1"
+ }
+ }
+ },
+ "user": {
+ "ext": {
+ "data": {
+ "customuser": "customuser1"
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "cur": [
+ "CAD"
+ ],
+ "site": {
+ "publisher": {
+ "id": "1001",
+ "domain": "example.com"
+ },
+ "page": "http://lh.example.com/prebid_server_kitchen_sink.html?pbjs_debug=true",
+ "domain": "site-domain",
+ "keywords": "skw1,skw2",
+ "name": "site-name",
+ "cat": [
+ "site-cat"
+ ],
+ "sectioncat": [
+ "site-scat"
+ ],
+ "pagecat": [
+ "site-pcat"
+ ],
+ "ref": "site-ref",
+ "search": "site-search",
+ "content": {
+ "userrating": "4",
+ "data": [
+ {
+ "name": "www.dataprovider1.com",
+ "ext": {
+ "segtax": 6
+ },
+ "segment": [
+ {
+ "id": "123"
+ },
+ {
+ "id": "456"
+ }
+ ]
+ }
+ ]
+ },
+ "ext": {
+ "data": {
+ "siteextdata": "site-ext-data",
+ "siteextdata2": "site-ext-data2"
+ }
+ }
+ },
+ "device": {
+ "w": 1434,
+ "h": 686
+ },
+ "regs": {
+ "gdpr": 1,
+ "coppa": 0,
+ "gpp": "DBABBg~BVpAAEBY.QA",
+ "gpp_sid": [7]
+ },
+ "user": {
+ "ext": {
+ "consent": "CO_d4kAPPVBUAADABCENB0CoAP_AAE7AAAAAF5wAwAQAA0AXmBecAMAEAANAF5gAAA.YAAAAAAAA4AA",
+ "data": {
+ "userextdata": "user-ext-data",
+ "userextdata2": "user-ext-data2"
+ }
+ },
+ "keywords": "ukw1,ukw2",
+ "data": [
+ {
+ "name": "www.dataprovider1.com",
+ "ext": {
+ "segtax": 4
+ },
+ "segment": [
+ {
+ "id": "123"
+ },
+ {
+ "id": "456"
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+### Further Reading
+
+- [PBS auction endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html)
diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
index 17fe73c7f3..3aeb1d1e3e 100644
--- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
+++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
@@ -1824,6 +1824,7 @@ The Prebid SDK version comes from:
### Further Reading
+- [Example auction request](/prebid-server/endpoints/openrtb2/auction-request-example.html)
- [OpenRTB 2.4 Specification](https://iabtechlab.com/wp-content/uploads/2016/04/OpenRTB-API-Specification-Version-2-4-FINAL.pdf)
- [OpenRTB 2.5 Specification](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf)
- [OpenRTB 2.6 Specification](https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md)
From 5df44d31dd2c651ac99c001093b482ca71800ee4 Mon Sep 17 00:00:00 2001
From: Viktor Dreiling <34981284+3link@users.noreply.github.com>
Date: Thu, 13 Jun 2024 10:55:54 +0200
Subject: [PATCH 014/816] LiveIntent Identity Module: Expose First Party ID
(#5297)
* fpid
* Revert superfluous changes
* Add newline
---
.../modules/userid-submodules/liveintent.md | 63 +++++++++++++++++--
1 file changed, 59 insertions(+), 4 deletions(-)
diff --git a/dev-docs/modules/userid-submodules/liveintent.md b/dev-docs/modules/userid-submodules/liveintent.md
index 882209903c..934fc5dca0 100644
--- a/dev-docs/modules/userid-submodules/liveintent.md
+++ b/dev-docs/modules/userid-submodules/liveintent.md
@@ -82,7 +82,7 @@ pbjs.setConfig({
### Multiple user IDs
-The attributes `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk` are treated specially by LiveIntent's user ID sub-module. Each of these attributes will result in a separate ID returned by the sub-module.
+The attributes `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` and `fpid` are treated specially by LiveIntent's user ID sub-module. Each of these attributes will result in a separate ID returned by the sub-module. Note: `thetradedesk` will be exposed as `tdid` because of historical reasons.
For example, in case `uid2` is configured to be requested in addition to the `nonID`, the `request.userId` object would look like the following:
@@ -100,9 +100,54 @@ For example, in case `uid2` is configured to be requested in addition to the `no
}
```
-NOTE: `uid2` is exposed as part of `lipb` as well as separately as `uid2`. `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk` behave the same way.
+NOTE: `uid2` is exposed as part of `lipb` as well as separately as `uid2`. `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` (as `tdid`) and `fpid` behave the same way.
-For the attributes `lipbid` (nonID), `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk`, there is also support for their conversion into OpenRTB EIDS format. Please refer to [User ID Module](../userId.md) documentation for more information on conversion, and [Example of eids array generated by UserId Module](https://github.com/prebid/Prebid.js/blob/master/modules/userId/eids.md) for output format examples.
+For the attributes `lipbid` (nonID), `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` (`tdid`) and `fpid` there is also support for their conversion into OpenRTB EIDS format. Please refer to [User ID Module](../userId.md) documentation for more information on conversion, and [Example of eids array generated by UserId Module](https://github.com/prebid/Prebid.js/blob/master/modules/userId/eids.md) for output format examples.
+
+### FPID
+
+The `fpid` is a first party identifier that can be exposed through the liveconnect user ID module. In order to use this functionality tell the module which identifier you want to use as a `fpid` in the config params:
+
+```javascript
+{
+ "params": {
+ "fpid": {
+ "strategy": "cookie", // "cookie" | "html5" -- Where the identifier should be read from
+ "name": "foobar" // key in the chosen storage backend
+ }
+ }
+}
+```
+
+Additionally, add it to the requested attributes:
+
+```javascript
+{
+ //...
+ "params": {
+ "fpid": {
+ "strategy": "cookie",
+ "name": "foobar"
+ },
+ "requestedAttributesOverrides": {'fpid': true}
+ }
+ //...
+}
+```
+
+The user id result will contain both the `fpid` directly in the `lipb` object and separately:
+
+```javascript
+{"lipb":{"fpid":"foobar"},"fpid":{"id":"foobar"}}
+```
+
+The same applies for the eids:
+
+```javascript
+[{"source":"fpid.liveintent.com","uids":[{"id":"foobar","atype":1}]}]
+```
+
+NOTE: If COPPA applies, LiveIntent’s user ID module will not return the `fpid`.
### Request uid2
@@ -139,7 +184,7 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at
| params.ajaxTimeout |Optional| Number |This configuration parameter defines the maximum duration of a call to the `IdentityResolution` endpoint. By default, 5000 milliseconds.|`5000`|
| params.partner | Optional| String |The name of the partner whose data will be returned in the response.|`prebid`|
| params.identifiersToResolve |Optional| Array[String] |Used to send additional identifiers in the request for LiveIntent to resolve against the LiveIntent ID and additional attributes.|`['my-id']`|
-| params.requestedAttributesOverrides | Optional | Object | Object containing booleans used to override the default resolution. Attributes set to `true` will be added to the resolved list, while attributes set to `false` will be removed. Valid attributes are `nonId`, `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk`. | `{'uid2': true}` |
+| params.requestedAttributesOverrides | Optional | Object | Object containing booleans used to override the default resolution. Attributes set to `true` will be added to the resolved list, while attributes set to `false` will be removed. Valid attributes are `nonId`, `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` (`tdid`) and `fpid`. | `{'uid2': true}` |
| params.emailHash |Optional| String |The hashed email address of a user. We can accept the hashes, which use the following hashing algorithms: md5, sha1, sha2.|`1a79a4d60de6718e8e5b326e338ae533`|
| params.url | Optional| String |Use this to change the default endpoint URL if you can call the LiveIntent Identity Exchange within your own domain.|`https://idx.my-domain.com`|
| params.liCollectConfig |Optional| Object |Container of all collector params.||
@@ -148,6 +193,12 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at
| params.liCollectConfig.fpiExpirationDays |Optional| Number |The expiration time of an identifier created and updated by LiveConnect. By default, 730 days.|`729`|
| params.liCollectConfig.collectorUrl |Optional| String |The parameter defines where the signal pixels are pointing to. The params and paths will be defined subsequently. If the parameter is not set, LiveConnect will by default emit the signal towards `https://rp.liadm.com`.| `https://rp.liadm.com`|
| params.liCollectConfig.appId |Optional| String |LiveIntent's media business entity application ID.|`a-0012`|
+| params.fpid.name | Optional | String | The parameter is cookie/localstorage key name | `'__super_duper_cookie'`|
+| params.fpid.strategy | Optional | String | The parameter defines where to get the identifier from. Either from the cookie jar, `'cookie'`, or from the local storage, `'html5'`. | `'html5'`|
+| storage | Required | Object | This object defines where and for how long the results of the call to get a user ID will be stored. | |
+| storage.type | Required | String | This parameter defines where the resolved user ID will be stored (either `'cookie'` or `'html5'` localstorage).| `'cookie'` |
+| storage.name | Required | String | The name of the cookie or html5 localstorage where the resolved user ID will be stored. | `'pbjs_li_nonid'` |
+| storage.expires | Recommended | Integer | How long (in days) the user ID information will be stored. The recommended value is `1` | `1` |
## LiveIntent ID examples
@@ -202,6 +253,10 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at
fpiExpirationDays: 730,
collectorUrl: "https://rp.liadm.com",
appId: "a-0012"
+ },
+ fpid: {
+ strategy: "cookie"
+ name: "foobar"
}
}
}]
From 6cead8037e43546d887ebf609ca8dbcadd351d9e Mon Sep 17 00:00:00 2001
From: Muki Seiler
Date: Thu, 13 Jun 2024 11:25:18 +0200
Subject: [PATCH 015/816] Fix growthcode table styling #5359 (#5417)
---
dev-docs/analytics/growthcode.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/dev-docs/analytics/growthcode.md b/dev-docs/analytics/growthcode.md
index 37ac5e3647..c1947aff27 100644
--- a/dev-docs/analytics/growthcode.md
+++ b/dev-docs/analytics/growthcode.md
@@ -16,6 +16,7 @@ Please visit [growthcode.io](https://growthcode.io/) for more information.
#### Analytics Options
+{: .table .table-bordered .table-striped }
| Param enableAnalytics | Scope | Type | Description | Example |
|-----------------------|----------|--------|---------------------------------------------------------|--------------------------|
| provider | Required | String | The name of this Adapter. | `"growthCodeAnalytics"` |
From 583df152ea5f7378b3e0e61a4b4ab68cda8b186a Mon Sep 17 00:00:00 2001
From: Demetrio Girardi
Date: Fri, 14 Jun 2024 05:26:19 -0700
Subject: [PATCH 016/816] Prebid 9: rename TCF modules (#5410)
* rename consentManagement to consentManagementTcf
* rename gdprEnforcement to TCF control
* linter
---
dev-docs/activity-controls.md | 4 +--
dev-docs/add-rtd-submodule.md | 2 +-
dev-docs/analytics/sharethrough.md | 2 +-
dev-docs/bidder-adaptor.md | 2 +-
dev-docs/bidders/aidem.md | 4 +--
dev-docs/bidders/mediakeys.md | 2 +-
dev-docs/cmp-best-practices.md | 8 ++---
dev-docs/faq.md | 4 +--
...integrate-with-the-prebid-analytics-api.md | 2 +-
dev-docs/modules/azerionedgeRtdProvider.md | 2 +-
dev-docs/modules/consentManagementGpp.md | 2 +-
...tManagement.md => consentManagementTcf.md} | 34 +++++++++----------
dev-docs/modules/consentManagementUsp.md | 2 +-
dev-docs/modules/genericAnalyticsAdapter.md | 4 +--
dev-docs/modules/permutiveRtdProvider.md | 2 +-
.../{gdprEnforcement.md => tcfControl.md} | 22 ++++++------
dev-docs/modules/userId.md | 4 +--
.../publisher-api-reference/aliasBidder.md | 2 +-
dev-docs/publisher-api-reference/setConfig.md | 2 +-
features/firstPartyData.md | 2 +-
identity/sharedid.md | 4 +--
prebid/prebidjs.md | 2 +-
prebid/prebidjsReleases.md | 4 +--
support/privacy-resources.md | 4 +--
24 files changed, 61 insertions(+), 61 deletions(-)
rename dev-docs/modules/{consentManagement.md => consentManagementTcf.md} (90%)
rename dev-docs/modules/{gdprEnforcement.md => tcfControl.md} (93%)
diff --git a/dev-docs/activity-controls.md b/dev-docs/activity-controls.md
index ef227c9d9b..f1f55285bb 100644
--- a/dev-docs/activity-controls.md
+++ b/dev-docs/activity-controls.md
@@ -152,7 +152,7 @@ For example, this rule would allow bidderX to perform the activity if no higher
Activity control rules in Prebid.js can be created by two main sources:
* Publisher `setConfig({allowActivities})` as in the examples shown here. When set this way, rules are considered the highest priority value of 1.
-* Modules can set activity control rules, e.g. [usersync](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-User-Syncing), [bidderSettings](/dev-docs/publisher-api-reference/bidderSettings.html), the [GPP](/dev-docs/modules/consentManagementGpp.html) or [GDPR](/dev-docs/modules/gdprEnforcement.html) modules. Rules set by modules have a less urgent priority of 10.
+* Modules can set activity control rules, e.g. [usersync](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-User-Syncing), [bidderSettings](/dev-docs/publisher-api-reference/bidderSettings.html), the [GPP](/dev-docs/modules/consentManagementGpp.html) or [GDPR](/dev-docs/modules/tcfControl.html) modules. Rules set by modules have a less urgent priority of 10.
When rules are processed, they are sorted by priority, and all rules of the same priority are considered to happen at the same time. The details:
@@ -234,7 +234,7 @@ If `allow` is not defined, the rule is assumed to assert **true** (i.e. allow th
#### Always include a particular bidder in auctions
-This is similiar to the 'vendor exception' feature of the [GDPR Enforcement Module](/dev-docs/modules/gdprEnforcement.html). This would always allow bidderA to participate in the auction, even without explicit consent in GDPR scenarios. It might indicate, for instance, that this is a 'first party bidder'.
+This is similiar to the 'vendor exception' feature of the [TCF Control Module](/dev-docs/modules/tcfControl.html). This would always allow bidderA to participate in the auction, even without explicit consent in GDPR scenarios. It might indicate, for instance, that this is a 'first party bidder'.
```javascript
pbjs.setConfig({
diff --git a/dev-docs/add-rtd-submodule.md b/dev-docs/add-rtd-submodule.md
index fbf85669cf..b17f43f36e 100644
--- a/dev-docs/add-rtd-submodule.md
+++ b/dev-docs/add-rtd-submodule.md
@@ -123,7 +123,7 @@ submodule('realTimeData', subModuleObject);
Several of the interfaces get a `userConsent` object. It's an object that carries these attributes:
-* [gdpr](/dev-docs/modules/consentManagement.html#bidder-adapter-gdpr-integration) - GDPR
+* [gdpr](/dev-docs/modules/consentManagementTcf.html#bidder-adapter-gdpr-integration) - GDPR
* [usp](/dev-docs/modules/consentManagementUsp.html#bidder-adapter-us-privacy-integration) - US Privacy (aka CCPA)
* [coppa](/dev-docs/publisher-api-reference/setConfig.html#setConfig-coppa) - the Child Online Privacy Protection Act
diff --git a/dev-docs/analytics/sharethrough.md b/dev-docs/analytics/sharethrough.md
index 4c50e6a3ed..a3fb0791db 100644
--- a/dev-docs/analytics/sharethrough.md
+++ b/dev-docs/analytics/sharethrough.md
@@ -36,7 +36,7 @@ gulp bundle --modules=gptPreAuction,sharethroughBidAdapter,sharethroughAnalytics
Please note that the above snippet is a "bare bones" example - you will likely want to include other modules as well. A more realistic example might look something like the example below (with other bid adapters also included in the list as needed):
```sh
-gulp bundle --modules=gptPreAuction,consentManagement,consentManagementGpp,consentManagementUsp,enrichmentFpdModule,gdprEnforcement,sharethroughBidAdapter,sharethroughAnalyticsAdapter
+gulp bundle --modules=gptPreAuction,consentManagementTcf,consentManagementGpp,consentManagementUsp,enrichmentFpdModule,tcfControl,sharethroughBidAdapter,sharethroughAnalyticsAdapter
```
Enable the Sharethrough Analytics Adapter in Prebid.js using the analytics provider `sharethrough` as seen in the **Example Configuration** section.
diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md
index 49fbc7e540..aaeb9dae4c 100644
--- a/dev-docs/bidder-adaptor.md
+++ b/dev-docs/bidder-adaptor.md
@@ -352,7 +352,7 @@ Notes on parameters in the bidderRequest object:
Some of the data in `ortb2` is also made available through other `bidderRequest` fields:
* **refererInfo** is provided so you don't have to call any utils functions. See below for more information.
-* **gdprConsent** is the object containing data from the [GDPR ConsentManagement](/dev-docs/modules/consentManagement.html) module. For TCF2+, it will contain both the tcfString and the addtlConsent string if the CMP sets the latter as part of the TCData object.
+* **gdprConsent** is the object containing data from the [TCF ConsentManagement](/dev-docs/modules/consentManagementTcf.html) module. For TCF2+, it will contain both the tcfString and the addtlConsent string if the CMP sets the latter as part of the TCData object.
* **uspConsent** is the object containing data from the [US Privacy ConsentManagement](/dev-docs/modules/consentManagementUsp.html) module.
diff --git a/dev-docs/bidders/aidem.md b/dev-docs/bidders/aidem.md
index ea8ba9b2ed..6aeb6266eb 100644
--- a/dev-docs/bidders/aidem.md
+++ b/dev-docs/bidders/aidem.md
@@ -70,7 +70,7 @@ This module is GDPR and CCPA compliant, and no 3rd party userIds are allowed.
{: .table .table-bordered .table-striped }
| Name | Scope | Description | Example | Type |
|--------|----------|--------------------------------------------------------------------------------------------------|---------|----------|
-| `gdpr` | optional | GDPR Object see [Prebid.js doc](https://docs.prebid.org/dev-docs/modules/consentManagement.html) | `{}` | `Object` |
+| `gdpr` | optional | GDPR Object see [Prebid.js doc](https://docs.prebid.org/dev-docs/modules/consentManagementTcf.html) | `{}` | `Object` |
| `usp` | optional | USP Object see [Prebid.js doc](https://docs.prebid.org/dev-docs/modules/consentManagementUsp.html) | `{}` | `Object` |
#### Example Banner ad unit
@@ -212,7 +212,7 @@ For video: gulp serve --modules=aidemBidAdapter,dfpAdServerVideo
## FAQs
-#### How do I view AIDEM bid request?
+### How do I view AIDEM bid request?
Navigate to a page where AIDEM is setup to bid. In the network tab,
search for requests to `zero.aidemsrv.com/bid/request`.
diff --git a/dev-docs/bidders/mediakeys.md b/dev-docs/bidders/mediakeys.md
index 45efb078da..ca43f30489 100644
--- a/dev-docs/bidders/mediakeys.md
+++ b/dev-docs/bidders/mediakeys.md
@@ -166,7 +166,7 @@ Mediakeys fully supports the following [Prebid.js Modules](https://docs.prebid.o
{: .table .table-bordered .table-striped }
| Module | Scope |
|-------------------------------------------------------------------------------------------------------|-----------------------------|
-| [Consent Management - GDPR](https://docs.prebid.org/dev-docs/modules/consentManagement.html) | Required in Europe |
+| [Consent Management - GDPR](https://docs.prebid.org/dev-docs/modules/consentManagementTcf.html) | Required in Europe |
| [Consent Management - US Privacy](https://docs.prebid.org/dev-docs/modules/consentManagementUsp.html) | Required in US - California |
| [Supply Chain Object](https://docs.prebid.org/dev-docs/modules/schain.html) | Required for all traffic |
| [Instream Tracking](https://docs.prebid.org/dev-docs/modules/instreamTracking.html) | Required for Instream Video |
diff --git a/dev-docs/cmp-best-practices.md b/dev-docs/cmp-best-practices.md
index f431b75ea8..1201631c3f 100644
--- a/dev-docs/cmp-best-practices.md
+++ b/dev-docs/cmp-best-practices.md
@@ -23,7 +23,7 @@ flavored CMPs for that.
Instead, here are some general guidelines:
-- You can't just automatically turn on the GDPR Enforcement Module when not in GDPR scope.
+- You can't just automatically turn on the TCF Control Module when not in GDPR scope.
- You need to understand how your CMP works, how you want to handle the "first page" scenario where the user hasn't yet had time to answer CMP questions, and how your site is laid out geographically.
- We recommend that the page first load a CMP stub synchronously, then asynchronously load the CMP code and the Prebid code
@@ -31,7 +31,7 @@ Instead, here are some general guidelines:
### CMP/TCF gdprApplies
-The indicates the determination of whether GDPR applies in this context. The CMP, in most cases, is responsible for this. The publisher provides this value when supplying [static](/dev-docs/modules/consentManagement.html) consent data.
+The indicates the determination of whether GDPR applies in this context. The CMP, in most cases, is responsible for this. The publisher provides this value when supplying [static](/dev-docs/modules/consentManagementTcf.html) consent data.
### Prebid gdpr.defaultGdprScope
@@ -52,7 +52,7 @@ Here are some approaches where PBJS config can be the same across all geos:
In these approaches, the publisher has to be aware of the geo and tell Prebid.js what to do:
-- When in the EEA, the page sets `consentManagement` config, but when not in the EEA, the page avoids setting the `consentManagement` config, turning off GDPR enforcement.
+- When in the EEA, the page sets `consentManagement` config, but when not in the EEA, the page avoids setting the `consentManagement` config, turning off TCF controls.
- When not in the EEA, the page sets `consentManagement` config with defaultGdprScope=false so that if the CMP is slow to respond then enforcement is off.
## CMP Best Practices
@@ -76,4 +76,4 @@ Please follow the guidelines in the [Sirdata documentation](https://cmp.docs.sir
## Further Reading
- [IAB TCF Implementation Guidelines](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/TCF-Implementation-Guidelines.md)
-- [GDPR Enforcement Module](/dev-docs/modules/gdprEnforcement.html)
+- [TCF Control Module](/dev-docs/modules/tcfControl.html)
diff --git a/dev-docs/faq.md b/dev-docs/faq.md
index cfca608b86..bfa14e5e4f 100644
--- a/dev-docs/faq.md
+++ b/dev-docs/faq.md
@@ -62,7 +62,7 @@ After you’ve determined your legal obligations, consider the tools Prebid make
* [Disable User ID modules](/dev-docs/modules/userId.html) - there are controls for different ID modules and which bidders can get which IDs.
* [Disable device access](/dev-docs/publisher-api-reference/setConfig.html#setConfig-deviceAccess) - no adapter or module will be able to create a cookie or HTML5 localstorage object.
* For GDPR:
- * Consider the [GDPR](/dev-docs/modules/consentManagement.html) and [GDPR Enforcement](/dev-docs/modules/gdprEnforcement.html) modules, which flexibly support various actions like cancelling usersyncs, auctions, and analytics. Using these modules, bid adapters can receive the IAB TCF string from the CMP.
+ * Consider the [TCF](/dev-docs/modules/consentManagementTcf.html) and [TCF Control](/dev-docs/modules/tcfControl.html) modules, which flexibly support various actions like cancelling usersyncs, auctions, and analytics. Using these modules, bid adapters can receive the IAB TCF string from the CMP.
* Note that TCF 2.2 is functionally the same as TCF 2.0 from the Prebid.js perspective. The code has always relied on event listeners to get the TCF string, so when `getTCData` was deprecated in 2.2 the modules were unaffected. There are still references in the code only because it is still accepted as a place for statically-supplied data.
* Alternatively, the page can just avoid turning on certain bidders or modules.
* For CCPA / CPRA / US-Privacy:
@@ -84,7 +84,7 @@ This option to the ConsentManagement module was removed a long time ago in PBJS
* It was a poorly named flag. What it did was let the auction happen on the first page before the user had responded to the CMP.
* It was replaced by a combination of the "defaultGdprScope" flag and the ability for a publisher to disable enforcement of the `basicAds` TCF purpose.
-See the [GDPR Enforcement Module](/dev-docs/modules/gdprEnforcement.html) documentation for more details.
+See the [TCF Control Module](/dev-docs/modules/tcfControl.html) documentation for more details.
## Implementation
diff --git a/dev-docs/integrate-with-the-prebid-analytics-api.md b/dev-docs/integrate-with-the-prebid-analytics-api.md
index f7518828c3..b073000889 100644
--- a/dev-docs/integrate-with-the-prebid-analytics-api.md
+++ b/dev-docs/integrate-with-the-prebid-analytics-api.md
@@ -86,7 +86,7 @@ Analytics adapter for Example.com. Contact prebid@example.com for information.
adapter needs to specify an enableAnalytics() function, but it should also call
the base class function to set up the events.
-5. Doing analytics may require user permissions under [GDPR](/dev-docs/modules/consentManagement.html), which means your adapter will need to be linked to your [IAB Global Vendor List](https://iabeurope.eu/vendor-list-tcf/) ID. If no GVL ID is found, and Purpose 7 (Measurement) is enforced, your analytics adapter will be blocked unless it is specifically listed under vendorExceptions. Your GVL ID can be added to the `registerAnalyticsAdapter()` call.
+5. Doing analytics may require user permissions under [GDPR](/dev-docs/modules/consentManagementTcf.html), which means your adapter will need to be linked to your [IAB Global Vendor List](https://iabeurope.eu/vendor-list-tcf/) ID. If no GVL ID is found, and Purpose 7 (Measurement) is enforced, your analytics adapter will be blocked unless it is specifically listed under vendorExceptions. Your GVL ID can be added to the `registerAnalyticsAdapter()` call.
#### Basic prototype analytics adapter
diff --git a/dev-docs/modules/azerionedgeRtdProvider.md b/dev-docs/modules/azerionedgeRtdProvider.md
index 2c3da1eb4d..d58254d1c8 100644
--- a/dev-docs/modules/azerionedgeRtdProvider.md
+++ b/dev-docs/modules/azerionedgeRtdProvider.md
@@ -74,7 +74,7 @@ received from the user, this module does not require a TCF vendor configuration.
provided to the module when the user gives the relevant permissions on the publisher website.
As Prebid.js utilizes TCF vendor consent for the RTD module to load, the module needs to be labeled
-within the Vendor Exceptions. If the Prebid GDPR enforcement is enabled, the module should be configured
+within the Vendor Exceptions. If the Prebid TCF Controls are enabled, the module should be configured
as exception, as shown below:
```js
diff --git a/dev-docs/modules/consentManagementGpp.md b/dev-docs/modules/consentManagementGpp.md
index 1e8ad5cb19..fc95d69784 100644
--- a/dev-docs/modules/consentManagementGpp.md
+++ b/dev-docs/modules/consentManagementGpp.md
@@ -200,7 +200,7 @@ var idx_gdpr=0;
- [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 - GDPR Module](/dev-docs/modules/consentManagementTcf.html)
- [Prebid Consent Management - US Privacy Module](/dev-docs/modules/consentManagementUsp.html)
- [Prebid Activity Controls](/dev-docs/activity-controls.html)
- [Prebid Activity Controls -- GPP control module - usnat](/dev-docs/modules/gppControl_usnat.html)
diff --git a/dev-docs/modules/consentManagement.md b/dev-docs/modules/consentManagementTcf.md
similarity index 90%
rename from dev-docs/modules/consentManagement.md
rename to dev-docs/modules/consentManagementTcf.md
index 518ce48a02..d3df05e3ab 100644
--- a/dev-docs/modules/consentManagement.md
+++ b/dev-docs/modules/consentManagementTcf.md
@@ -1,16 +1,16 @@
---
layout: page_v2
page_type: module
-title: Consent Management - GDPR
-description: If you have users in Europe, this module works with your Consent Management Platform to pass consent info to bidders and help align with EU regulations. See also the GDPR Enforcement module.
-module_code : consentManagement
-display_name : Consent Management - GDPR
+title: Consent Management - TCF
+description: If you have users in Europe, this module works with your Consent Management Platform to pass consent info to bidders and help align with EU regulations. See also the TCF Control module.
+display_name : Consent Management - TCF
+module_code : consentManagementTcf
enable_download : true
recommended: true
sidebarType : 1
---
-# GDPR Consent Management Module
+# TCF Consent Management Module
{: .no_toc }
- TOC
@@ -28,12 +28,12 @@ This module works with supported [Consent Management Platforms](https://www.cmsw
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 base EU GDPR consent management module performs these actions:
+This base EU TCF consent management module performs these actions:
1. Fetch the user's GDPR & Google additional consent data from the CMP.
2. Incorporate this data into the auction objects for adapters to collect.
-The optional [GDPR enforcement module](/dev-docs/modules/gdprEnforcement.html) adds on these actions:
+The optional [TCF control module](/dev-docs/modules/tcfControl.html) adds on these actions:
1. Allows the page to define which activities should be enforced at the Prebid.js level.
2. Actively enforces those activities based on user consent data (in the TCF string, not the AC string).
@@ -71,16 +71,16 @@ but we recommend migrating to the new config structure as soon as possible.
| gdpr.actionTimeout | `integer` | Length of time (in milliseconds) to allow the user to take action to consent if they have not already done so. The actionTimer first waits for the CMP to load, then the actionTimeout begins for the specified duration. Default is `undefined`. | `10000` |
| gdpr.defaultGdprScope | `boolean` | Defines what the `gdprApplies` flag should be when the CMP doesn't respond in time or the static data doesn't supply. Defaults to `false`. | `true` |
| gdpr.consentData | `Object` | An object representing the GDPR consent data being passed directly; only used when cmpApi is 'static'. Default is `undefined`. | |
-| gdpr.consentData.getTCData.tcString | `string` | Base64url-encoded TCF v2.x string with segments. | |
-| gdpr.consentData.getTCData.addtlConsent | `string` | Additional consent string if available from the cmp TCData object | |
-| gdpr.consentData.getTCData.gdprApplies | `boolean` | Defines whether or not this pageview is in GDPR scope. | |
-| gdpr.consentData.getTCData.purpose.consents | `Object` | An object representing the user's consent status for specific purpose IDs. | |
-| gdpr.consentData.getTCData.purpose.legitimateInterests | `Object` | An object representing the user's legitimate interest status for specific purpose IDs. | |
-| gdpr.consentData.getTCData.vendor.consents | `Object` | An object representing the user's consent status for specific vendor IDs. | |
-| gdpr.consentData.getTCData.vendor.legitimateInterests | `Object` | An object representing the user's legitimate interest status for specific vendors IDs. | |
+| gdpr.consentData.tcString | `string` | Base64url-encoded TCF v2.x string with segments. | |
+| gdpr.consentData.addtlConsent | `string` | Additional consent string if available from the cmp TCData object | |
+| gdpr.consentData.gdprApplies | `boolean` | Defines whether or not this pageview is in GDPR scope. | |
+| gdpr.consentData.purpose.consents | `Object` | An object representing the user's consent status for specific purpose IDs. | |
+| gdpr.consentData.purpose.legitimateInterests | `Object` | An object representing the user's legitimate interest status for specific purpose IDs. | |
+| gdpr.consentData.vendor.consents | `Object` | An object representing the user's consent status for specific vendor IDs. | |
+| gdpr.consentData.vendor.legitimateInterests | `Object` | An object representing the user's legitimate interest status for specific vendors IDs. | |
{: .alert.alert-info :}
-NOTE: The `purpose` and `vendor` objects are required if you are using the `gdprEnforcement` module. If the data is not included, your bid adapters, analytics adapters, and/or userId systems will likely be excluded from the auction as Prebid will assume the user has not given consent for these entities.
+NOTE: The `purpose` and `vendor` objects are required if you are using the `tcfControl` module. If the data is not included, your bid adapters, analytics adapters, and/or userId systems will likely be excluded from the auction as Prebid will assume the user has not given consent for these entities.
A related parameter is `deviceAccess`, which is at the global level of Prebid.js configuration because it can be used GDPR, CCPA, or custom privacy implementations:
@@ -210,7 +210,7 @@ Here is a sample of how the data is structured in the `bidderRequest` object:
**_consentString_**
-This field contains the user's choices on consent, represented as an encoded string value. In certain scenarios, this field might come to you with an `undefined` value; normally this happens when there was an error (or timeout) during the CMP interaction and the publisher turned off GDPR enforcement. If you don't want to pass `undefined` to your system, you can check for this value and replace it with a valid consent string. See the _consent_required_ code in the example below (under "gdprApplies") for a possible approach to checking and replacing values.
+This field contains the user's choices on consent, represented as an encoded string value. In certain scenarios, this field might come to you with an `undefined` value; normally this happens when there was an error (or timeout) during the CMP interaction and the publisher turned off TCF controls. If you don't want to pass `undefined` to your system, you can check for this value and replace it with a valid consent string. See the _consent_required_ code in the example below (under "gdprApplies") for a possible approach to checking and replacing values.
**_addtlConsent_**
@@ -369,7 +369,7 @@ This should be false if there was some error in the consent data; otherwise set
## Further Reading
-- [GDPR Enforcement Module](/dev-docs/modules/gdprEnforcement.html)
+- [TCF Control Module](/dev-docs/modules/tcfControl.html)
- [IAB TCF Implementation Guide](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/TCF-Implementation-Guidelines.md)
- [IAB Transparancy and Consent Framework Policies](https://iabeurope.eu/iab-europe-transparency-consent-framework-policies/)
- [Prebid Consent Management - US Privacy Module](/dev-docs/modules/consentManagementUsp.html)
diff --git a/dev-docs/modules/consentManagementUsp.md b/dev-docs/modules/consentManagementUsp.md
index 90aed2ad66..200e273aca 100644
--- a/dev-docs/modules/consentManagementUsp.md
+++ b/dev-docs/modules/consentManagementUsp.md
@@ -25,7 +25,7 @@ This consent management module is designed to support the California Consumer Pr
This module works with an IAB-compatible US Privacy API (USP-API) to fetch an encoded string representing the user's notice and opt-out choices and make it available for adapters to consume and process. In Prebid 7+; the module defaults to working with an IAB-compatible US Privacy API; in prior versions, the module had to be configured to be in effect.
{: .alert.alert-info :}
-See also the [Prebid Consent Management - GDPR Module](/dev-docs/modules/consentManagement.html) for supporting the EU General Data Protection Regulation (GDPR)
+See also the [Prebid Consent Management - GDPR Module](/dev-docs/modules/consentManagementTcf.html) for supporting the EU General Data Protection Regulation (GDPR)
Here's a summary of the interaction process:
diff --git a/dev-docs/modules/genericAnalyticsAdapter.md b/dev-docs/modules/genericAnalyticsAdapter.md
index 8c21311c66..201410e70b 100644
--- a/dev-docs/modules/genericAnalyticsAdapter.md
+++ b/dev-docs/modules/genericAnalyticsAdapter.md
@@ -28,9 +28,9 @@ This is an analytics adapter that can interface with any backend, meant for publ
-### Note on GDPR enforcement
+### Note on TCF controls
-If you are using the [GDPR enforcement module](/dev-docs/modules/gdprEnforcement.html) to enforce purpose 7, by default this module will be blocked when GDPR is in scope.
+If you are using the [TCF control module](/dev-docs/modules/tcfControl.html) to enforce purpose 7, by default this module will be blocked when GDPR is in scope.
To enable it, you may either specify the `gvlid` option (if you are interfacing with a partner) or declare a `softVendorException` if you deem that vendor consent is not required for compliance:
```javascript
diff --git a/dev-docs/modules/permutiveRtdProvider.md b/dev-docs/modules/permutiveRtdProvider.md
index b09e2f0dba..984ff6ccbf 100644
--- a/dev-docs/modules/permutiveRtdProvider.md
+++ b/dev-docs/modules/permutiveRtdProvider.md
@@ -73,7 +73,7 @@ as well as enabling settings for specific use cases mentioned above (e.g. acbidd
Permutive is not listed as a TCF vendor as all data collection is on behalf of the publisher and based on consent the publisher has received from the user.
Rather than through the TCF framework, this consent is provided to Permutive when the user gives the relevant permissions on the publisher website which allow the Permutive SDK to run.
-This means that if GDPR enforcement is configured _and_ the user consent isn’t given for Permutive to fire, no cohorts will populate.
+This means that if TCF controls are enabled _and_ the user consent isn’t given for Permutive to fire, no cohorts will populate.
As Prebid utilizes TCF vendor consent, for the Permutive RTD module to load, Permutive needs to be labeled within the Vendor Exceptions
### Instructions
diff --git a/dev-docs/modules/gdprEnforcement.md b/dev-docs/modules/tcfControl.md
similarity index 93%
rename from dev-docs/modules/gdprEnforcement.md
rename to dev-docs/modules/tcfControl.md
index 27906a944b..42977e1e7c 100644
--- a/dev-docs/modules/gdprEnforcement.md
+++ b/dev-docs/modules/tcfControl.md
@@ -1,10 +1,10 @@
---
layout: page_v2
page_type: module
-title: GDPR Enforcement Module
+title: TCF Control Module
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
+module_code : tcfControl
+display_name : TCF Control
enable_download : true
recommended: true
sidebarType : 1
@@ -19,17 +19,17 @@ sidebarType : 1
{% include legal-warning.html %}
{: .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 take action based on the results. See the [base module page](/dev-docs/modules/consentManagement.html) for general background, usage, and legal disclaimers.
+This module requires the [TCF consent management module](/dev-docs/modules/consentManagementTcf.html) (the base consent module), which reads consent values from the Consent Management Platform (CMP). The TCF Control Module
+will then take action based on the results. See the [base module page](/dev-docs/modules/consentManagementTcf.html) for general background, usage, and legal disclaimers.
## Overview
-The [base consent module](/dev-docs/modules/consentManagement.html) performs the following actions:
+The [base consent module](/dev-docs/modules/consentManagementTcf.html) performs the following actions:
1. Fetches the user's GDPR consent data from the CMP.
2. Incorporates this data into the auction objects for adapters to collect.
-The GDPR Enforcement Module adds the following:
+The TCF Control Module adds the following:
1. Allows the page to define which activities should be enforced at the Prebid.js level.
2. Actively enforces those activities based on user consent data.
@@ -58,10 +58,10 @@ A page needs to define configuration rules about how Prebid.js should enforce ea
{: .alert.alert-info :}
To turn on Prebid.js enforcement you must:
-(1) Include the gdprEnforcement module in the Prebid.js build
+(1) Include the tcfControl module in the Prebid.js build
and (2) setConfig `consentManagement.gdpr.cmpApi` to either 'iab' or 'static'
-The following fields related to GDPR enforcement are supported in the [`consentManagement`](/dev-docs/modules/consentManagement.html) object:
+The following fields related to GDPR enforcement are supported in the [`consentManagement`](/dev-docs/modules/consentManagementTcf.html) object:
{: .table .table-bordered .table-striped }
| Param | Type | Description | Example |
@@ -228,14 +228,14 @@ This behavior can be changed to the same "basic enforcement" algorithm described
Follow the basic build instructions in the GitHub Prebid.js repo's main [README](https://github.com/prebid/Prebid.js/blob/master/README.md). Include the base consent management module and this enforcement module as additional options on the **gulp build** command:
```bash
-gulp build --modules=consentManagement,gdprEnforcement,bidAdapter1,bidAdapter2
+gulp build --modules=consentManagement,tcfControl,bidAdapter1,bidAdapter2
```
You can also use the [Prebid.js Download](/download.html) page.
## Further Reading
-* [EU GDPR Consent Management Module](/dev-docs/modules/consentManagement.html)
+* [EU GDPR Consent Management Module](/dev-docs/modules/consentManagementTcf.html)
* [IAB TCF Implementation Guidelines](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/TCF-Implementation-Guidelines.md)
* [IAB TCF2 Consent String Format](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20Consent%20string%20and%20vendor%20list%20formats%20v2.md)
* [Prebid TCF2 Support](https://docs.google.com/document/d/1fBRaodKifv1pYsWY3ia-9K96VHUjd8kKvxZlOsozm8E/edit#)
diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md
index 3025b6e144..72539387a6 100644
--- a/dev-docs/modules/userId.md
+++ b/dev-docs/modules/userId.md
@@ -39,7 +39,7 @@ Not all bidder adapters support all forms of user ID. See the tables below for a
## User ID, GDPR, Permissions, and Opt-Out
-When paired with the [Consent Management](/dev-docs/modules/consentManagement.html) module, privacy rules are enforced:
+When paired with the [Consent Management](/dev-docs/modules/consentManagementTcf.html) module, privacy rules are enforced:
* The module checks the GDPR consent string
* If no consent string is available OR if the user has not consented to Purpose 1 (local storage):
@@ -411,4 +411,4 @@ This will have no effect until you call the `registerSignalSources` API. This me
## Further Reading
* [Prebid.js Usersync](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Configure-User-Syncing)
-* [GDPR ConsentManagement Module](/dev-docs/modules/consentManagement.html)
+* [TCF ConsentManagement Module](/dev-docs/modules/consentManagementTcf.html)
diff --git a/dev-docs/publisher-api-reference/aliasBidder.md b/dev-docs/publisher-api-reference/aliasBidder.md
index fd0a7248ef..24d7e6aef3 100644
--- a/dev-docs/publisher-api-reference/aliasBidder.md
+++ b/dev-docs/publisher-api-reference/aliasBidder.md
@@ -27,7 +27,7 @@ The options object supports these parameters:
{: .table .table-bordered .table-striped }
| Option Parameter | Type | Description |
|------------|---------|---------------------------------|
-| gvlid | integer | IAB Global Vendor List ID for this alias for use with the [GDPR Enforcement module](/dev-docs/modules/gdprEnforcement.html). |
+| gvlid | integer | IAB Global Vendor List ID for this alias for use with the [TCF control module](/dev-docs/modules/tcfControl.html). |
{: .alert.alert-info :}
Creating an alias for a Prebid Server adapter is done differently. See 'extPrebid'
diff --git a/dev-docs/publisher-api-reference/setConfig.md b/dev-docs/publisher-api-reference/setConfig.md
index 73ad3d0643..0ee1994b45 100644
--- a/dev-docs/publisher-api-reference/setConfig.md
+++ b/dev-docs/publisher-api-reference/setConfig.md
@@ -48,7 +48,7 @@ Core config:
Module config: other options to `setConfig()` are available if the relevant module is included in the Prebid.js build.
* [Currency module](/dev-docs/modules/currency.html)
-* [Consent Management](/dev-docs/modules/consentManagement.html#page-integration)
+* [Consent Management](/dev-docs/modules/consentManagementTcf.html#page-integration)
* [User ID module](/dev-docs/modules/userId.html#configuration)
* [Adpod](/dev-docs/modules/adpod.html)
* [IAB Category Translation](/dev-docs/modules/categoryTranslation.html)
diff --git a/features/firstPartyData.md b/features/firstPartyData.md
index 135f78e363..899956f4fd 100644
--- a/features/firstPartyData.md
+++ b/features/firstPartyData.md
@@ -188,7 +188,7 @@ pbjs.setConfig({
{: .alert.alert-warning :}
Note that supplying first party **user** data may require special
-consent in certain regions. By default, Prebid's [gdprEnforcement](/dev-docs/modules/gdprEnforcement.html) module does **not** police the passing
+consent in certain regions. By default, Prebid's [tcfControl](/dev-docs/modules/tcfControl.html) module does **not** police the passing
of user data, but can optionally do so if the `personalizedAds` rule is enabled.
{: .alert.alert-warning :}
diff --git a/identity/sharedid.md b/identity/sharedid.md
index cd25557eac..bf4f05fa70 100644
--- a/identity/sharedid.md
+++ b/identity/sharedid.md
@@ -157,7 +157,7 @@ You can find available configuration options for the SharedID module [here](http
There are several privacy scenarios in which a user ID is not created or read:
1. The User ID module suppresses all cookie reading and setting activity
- when the [GDPR Enforcement Module](/dev-docs/modules/gdprEnforcement.html) is in place and there's no consent for Purpose 1.
+ when the [TCF Control Module](/dev-docs/modules/tcfControl.html) is in place and there's no consent for Purpose 1.
2. The User ID module infrastructure supports a first-party opt-out, by setting the `_pbjs_id_optout` cookie or local storage to any value. No other cookies will be set if this one is set.
3. The SharedId module will suppress the ID when the COPPA flag is set.
@@ -217,7 +217,7 @@ Below are the available configuration options for the PubCID script.
| create | boolean | If true, then an id is created automatically by the script if it's missing. Default is true. If your server has a component that generates the id instead, then this should be set to false | | `true` |
| expInterval | decimal | Expiration interval in minutes. Default is 525600, or 1 year | | `525600` |
| extend | boolean | If true, the the expiration time is automatically extended whenever the script is executed even if the id exists already. Default is true. If false, then the id expires from the time it was initially created. | For publisher server support only. If true, the publisher's server will create the (pubcid) cookie. Default is true. | `true` |
-| pixelUrl | string (optional) | For publisher server support only. Where to call out to for a server cookie. | | `/wp-json/pubcid/v1/extend/`
+| pixelUrl | string (optional) | For publisher server support only. Where to call out to for a server cookie. | | `/wp-json/pubcid/v1/extend/` |
| type | string | Type of storage. It's possible to specify one of the following: 'html5', 'cookie'. Default is 'html5' priority, aka local storage, and fall back to cookie if local storage is unavailable. | If true, the expiration time of the stored IDs will be refreshed during each page load. Default is false. | `cookie` |
#### Example Configurations
diff --git a/prebid/prebidjs.md b/prebid/prebidjs.md
index 9052e11e9e..840091ce64 100644
--- a/prebid/prebidjs.md
+++ b/prebid/prebidjs.md
@@ -66,7 +66,7 @@ Analytics adapters offer the ability to learn more about latency, revenues, bid
Prebid.js Modules also plug into the Prebid.js Core. They add functionality not present
in the Core that not every publisher needs. Example modules:
-- GDPR support (the [consentManagement]({{site.baseurl}}/dev-docs/modules/consentManagement.html) module)
+- GDPR support (the [consentManagementTcf]({{site.baseurl}}/dev-docs/modules/consentManagementTcf.html) module)
- Currency conversion (the [currency]({{site.baseurl}}/dev-docs/modules/currency.html) module)
- Server-to-server testing (the [s2sTest]({{site.baseurl}}/dev-docs/modules/s2sTesting.html) module)
- and [many others](/dev-docs/modules/index.html)
diff --git a/prebid/prebidjsReleases.md b/prebid/prebidjsReleases.md
index 788231c1df..2b9a176217 100644
--- a/prebid/prebidjsReleases.md
+++ b/prebid/prebidjsReleases.md
@@ -66,7 +66,7 @@ The table below is a summary of feature changes and important bug fixes in core
| 3.17 | UserID module also exports IDs as eids |
| 3.16 | isSafariBrowser fixed for Chrome and Firefox on iOS |
| 3.15 | Advanced Size Mapping module support adunits of the same name |
-| 3.14 | New [GDPR enforcement module](/dev-docs/modules/gdprEnforcement.html) supports enforcing Purpose 1 - DeviceAccess |
+| 3.14 | New [GDPR enforcement module](/dev-docs/modules/tcfControl.html) supports enforcing Purpose 1 - DeviceAccess |
| 3.13 | GDPR module supports defaultGdprScope option |
| 3.12 | Initial support for TCF2 - reading and passing consent strings, added [DeviceAccess](/dev-docs/publisher-api-reference/setConfig.html#setConfig-deviceAccess) configuration setting |
| 3.11 | [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) |
@@ -95,7 +95,7 @@ The table below is a summary of feature changes and important bug fixes in core
| 2.10 | [User ID module](/dev-docs/modules/userId.html) released with support for PubCommon ID and Unified ID |
| 2.10 | A bidder which responded in time is now considered a timely bidder, even if it responded with no bids. See [PR 3696](https://github.com/prebid/Prebid.js/pull/3696) |
| 2.9 | Add 'hb_cache_host' targeting for video bids when cache is set to support upcoming video cache redirector |
-| 2.9 | remove removeRequestId logic. See [PR 3698](https://github.com/prebid/Prebid.js/pull/3698)
+| 2.9 | remove removeRequestId logic. See [PR 3698](https://github.com/prebid/Prebid.js/pull/3698) |
| 2.8 | Added [s2sConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Server-to-Server) `syncUrlModifier` option to modify userSync URLs |
| 2.8 | Add hb_uuid and hb_cache_id back to dfp module after having been removed in 2.7 |
| 2.6 | Update auction algorithm logic for long-form. See [PR 3625](https://github.com/prebid/Prebid.js/pull/3625) |
diff --git a/support/privacy-resources.md b/support/privacy-resources.md
index ce32906565..b5ab2b8ae1 100644
--- a/support/privacy-resources.md
+++ b/support/privacy-resources.md
@@ -42,8 +42,8 @@ The privacy tools that Prebid has built in support of European rules may help ad
The IAB defined the Transparency and Consent Framework (TCF) to address European GDPR rules. Prebid support for TCF is described:
- [Prebid.js CMP Best Practices](/dev-docs/cmp-best-practices.html)
-- [Prebid.js GDPR Consent Management Module](/dev-docs/modules/consentManagement.html)
-- [Prebid.js GDPR Enforcement Module](/dev-docs/modules/gdprEnforcement.html)
+- [Prebid.js GDPR Consent Management Module](/dev-docs/modules/consentManagementTcf.html)
+- [Prebid.js GDPR Enforcement Module](/dev-docs/modules/tcfControl.html)
- [Prebid Server GDPR Support](/prebid-server/features/pbs-privacy.html#gdpr)
- [White paper: Prebid Support for Enforcing TCF 2](https://docs.google.com/document/d/1fBRaodKifv1pYsWY3ia-9K96VHUjd8kKvxZlOsozm8E)
From 8c8bc7c69490925373cb335882bb3e5b309e744d Mon Sep 17 00:00:00 2001
From: jsnellbaker <31102355+jsnellbaker@users.noreply.github.com>
Date: Fri, 14 Jun 2024 08:32:24 -0400
Subject: [PATCH 017/816] new note for appnexus bidder for 9.0 (#5398)
---
dev-docs/bidders/appnexus.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md
index a8dff8af88..834f91fe41 100644
--- a/dev-docs/bidders/appnexus.md
+++ b/dev-docs/bidders/appnexus.md
@@ -45,6 +45,9 @@ All AppNexus (Xandr) placements included in a single call to `requestBids` must
#### Bid Params
+{: .alert.alert-danger :}
+Starting with Prebid.js version 9.0, an update was made to the `appnexusBidAdapter.js` file to remove the support for the `transformBidParams` function. Previously this standard adapter function was used in conjunction of Prebid.js > PBS requests to modify any bid params for that bidder to the bid param format used by the PBS endpoint. Part of the changes for 9.0 in general were to remove these functions from the client-side adapter files, in order to reduce the build size of Prebid.js for those publishers who wanted to make the PBS requests. In the case of our adapter, we instead created a new module named `anPspParamsConverter` that would mimic behavior of the `transformBidParams` function. There's no setup instructions needed on the Prebid.js configs, the module only needs to be included in the Prebid.js build file and it will perform the needed steps. If you have any questions on this change, please reach out to your Microsoft representative and they can help.
+
{: .alert.alert-danger :}
Starting with Prebid.js version 7.36.0, an update was made to the `appnexusBidAdapter.js` file to support bid params in a lower-case underscore format (eg `invCode` to `inv_code`) similar to how the params are formatted for the Prebid Server AppNexus bidder. This change was implemented to streamline publisher setups for both projects instead of maintaining separate versions of the same params depending on what setup is used.
To avoid breaking changes, the old 'camelCase' format is still currently supported for all AppNexus bid params in the `appnexusBidAdapter.js` file. If you are using an older version of Prebid.js, you will need to continue to use the older 'camelCase' format as appropriate.
From 68872faf4d9f1db46ecee386535911169659dd1c Mon Sep 17 00:00:00 2001
From: Demetrio Girardi
Date: Fri, 14 Jun 2024 05:39:20 -0700
Subject: [PATCH 018/816] Prebid 9: PBS adapter: update docs timeout (#5409)
---
dev-docs/modules/prebidServer.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/modules/prebidServer.md b/dev-docs/modules/prebidServer.md
index 22bb4c6737..04be700ad8 100644
--- a/dev-docs/modules/prebidServer.md
+++ b/dev-docs/modules/prebidServer.md
@@ -85,7 +85,7 @@ There are many configuration options for s2sConfig:
| `allowUnknownBidderCodes` | Optional | Boolean | Allow Prebid Server to bid on behalf of bidders that are not explicitly listed in the adUnit. See important [note](#allowUnknownBidderCodes) below. Defaults to `false`. |
| `defaultVendor` | Optional | String | Automatically includes all following options in the config with vendor's default values. Individual properties can be overridden by including them in the config along with this setting. See the Additional Notes below for more information. |
| `enabled` | Optional | Boolean | Enables this s2sConfig block - defaults to `false` |
-| `timeout` | Optional | Integer | Number of milliseconds allowed for the server-side auctions. This should be approximately 200ms-300ms less than your Prebid.js timeout to allow for all bids to be returned in a timely manner. Defaults to 1000ms. |
+| `timeout` | Optional | Integer | Number of milliseconds allowed for the server-side auctions. This should be approximately 200ms-300ms less than your Prebid.js timeout to allow for all bids to be returned in a timely manner. Defaults to 75% of [`bidderTimeout`](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Bidder-Timeouts) or 750ms, whichever is lesser. |
| `adapter` | Required | String | Adapter to use to connect to Prebid Server. Defaults to 'prebidServer' |
| `endpoint` | Required | URL or Object | Defines the auction endpoint for the Prebid Server cluster. See table below for object config properties. |
| `syncEndpoint` | Required | URL or Object | Defines the cookie_sync endpoint for the Prebid Server cluster. See table below for object config properties. |
From 16cb434746a422226fe77473d8178e4b99f0664d Mon Sep 17 00:00:00 2001
From: bretg
Date: Fri, 14 Jun 2024 08:49:34 -0400
Subject: [PATCH 019/816] ras rename (#5386)
* ras rename
* add missing fields to ringieraxelspringer doc (#5413)
---------
Co-authored-by: wsusrasp <106743463+wsusrasp@users.noreply.github.com>
Co-authored-by: Muki Seiler
---
dev-docs/bidders/ras.md | 1 +
dev-docs/bidders/ringieraxelspringer.md | 46 +++++++++++++++++++++++++
2 files changed, 47 insertions(+)
create mode 100644 dev-docs/bidders/ringieraxelspringer.md
diff --git a/dev-docs/bidders/ras.md b/dev-docs/bidders/ras.md
index e8f9ce3837..3c39d03575 100644
--- a/dev-docs/bidders/ras.md
+++ b/dev-docs/bidders/ras.md
@@ -13,6 +13,7 @@ floors_supported: false
fpd_supported: false
sidebarType: 1
multiformat_supported: will-bid-on-one
+pbjs_version_notes: removed in 9.0
---
diff --git a/dev-docs/bidders/ringieraxelspringer.md b/dev-docs/bidders/ringieraxelspringer.md
new file mode 100644
index 0000000000..38c2aad56c
--- /dev/null
+++ b/dev-docs/bidders/ringieraxelspringer.md
@@ -0,0 +1,46 @@
+---
+layout: bidder
+title: RingierAxelSpringer
+description: Prebid RingierAxelSpringer Bidder Adapter
+biddercode: ringieraxelspringer
+media_types: banner, native
+pbjs: true
+pbs: false
+prebid_member: false
+gvl_id: 1021
+tcfeu_supported: true
+safeframes_ok: false
+deals_supported: false
+floors_supported: false
+fpd_supported: false
+sidebarType: 1
+multiformat_supported: will-bid-on-one
+dsa_supported: true
+privacy_sandbox: paapi
+ortb_blocking_supported: false
+schain_supported: false
+dchain_supported: false
+gpp_sids: None
+coppa_supported: false
+usp_supported: false
+---
+
+
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|------------------|----------|------------------------------------------------------------------------------------------------------|---------------------------------------------|----------|
+| `network` | required | Specific identifier provided by RAS | `'4178463'` | `string` |
+| `site` | required | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `'example_com'` | `string` |
+| `area` | required | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `'sport'` | `string` |
+| `slot` | required | Ad unit placement name (case-insensitive) provided by RAS | `'slot'` | `string` |
+| `pageContext` | optional | Web page context data | `{}` | `object` |
+| `pageContext.dr` | optional | Document referrer URL address | `'https://example.com/'` | `string` |
+| `pageContext.du` | optional | Document URL address | `'https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06'` | `string` |
+| `pageContext.dv` | optional | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `'example_com/sport/football'` | `string` |
+| `pageContext.keyWords` | optional | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `['euro', 'lewandowski']` | `string[]` |
+| `pageContext.keyValues` | optional | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > ] [ & @` | `{}` | `object` |
+| `pageContext.keyValues.ci` | optional | Content unique identifier | `'932016a5-02fc-4d5c-b643-fafc2f270f06'` | `object` |
+| `pageContext.keyValues.adunit` | optional | Ad unit name | `'example_com/sport'` | `string` |
From c01b58d3ba37d5f91c0c65dc7a3182956a2d5881 Mon Sep 17 00:00:00 2001
From: bretg
Date: Fri, 14 Jun 2024 12:52:40 -0400
Subject: [PATCH 020/816] update quebec page (#5424)
---
features/ac-quebec.md | 3 ---
1 file changed, 3 deletions(-)
diff --git a/features/ac-quebec.md b/features/ac-quebec.md
index 7a76f77f07..f8555e3530 100644
--- a/features/ac-quebec.md
+++ b/features/ac-quebec.md
@@ -101,9 +101,6 @@ bidders are in such alignment.
An alternate solution would utilize the Prebid Server version of the [Activity Control system](/prebid-server/features/pbs-activitycontrols.html).
-{: .alert.alert-info :}
-Only the Java version of Prebid Server currently supports targeting Activity Controls to geographic regions.
-
Here's an example account configuration that utilizes the user's geographic region to determine
whether to allow or deny the named activities. Publishers will need to confirm the details with
their Prebid Server host company.
From 0e09a9ca5162de436c71f0409014d8e29b9ac988 Mon Sep 17 00:00:00 2001
From: Demetrio Girardi
Date: Sun, 16 Jun 2024 02:38:30 -0700
Subject: [PATCH 021/816] Document new JS module: topLevelPaapi (#5408)
* Document new JS module: topLevelPaapi
* linter
* add word
---------
Co-authored-by: Chris Huie
---
dev-docs/modules/topLevelPaapi.md | 124 ++++++++++++++++++
.../publisher-api-reference/getPAAPIBids.md | 93 +++++++++++++
2 files changed, 217 insertions(+)
create mode 100644 dev-docs/modules/topLevelPaapi.md
create mode 100644 dev-docs/publisher-api-reference/getPAAPIBids.md
diff --git a/dev-docs/modules/topLevelPaapi.md b/dev-docs/modules/topLevelPaapi.md
new file mode 100644
index 0000000000..735846a760
--- /dev/null
+++ b/dev-docs/modules/topLevelPaapi.md
@@ -0,0 +1,124 @@
+---
+layout: page_v2
+page_type: module
+title: Module - topLevelPaapi
+description: Run top level PAAPI auctions
+module_code : topLevelPaapi
+display_name : Run top level PAAPI auctions
+enable_download : true
+sidebarType : 1
+---
+
+# Top level PAAPI module
+
+This module allows Prebid.js to support PAAPI by running on-device auctions as the top level seller.
+
+## Comparison with paapiForGpt
+
+Both this module and [paapiForGpt](/dev-docs/modules/paapiForGpt.html) allow bid adapters to participate in PAAPI auctions as component sellers.
+
+With paapiForGpt, bidders' intent to participate in PAAPI is submitted to GPT, which can then decide how to run the on-device auction.
+With topLevelPaapi, Prebid.js directly manages the on-device auction, trading ease of use for more control.
+
+## Publisher Integration
+
+To use topLevelPaapi:
+
+- you'll need a [decision logic URL](https://github.com/WICG/turtledove/blob/main/FLEDGE.md#23-scoring-bids) that has been [attested](https://github.com/privacysandbox/attestation) with Google. How to write decision logic and how to attest it are both out of scope for this document.
+- include this module with your Prebid.js bundle; this also automatically includes the [PAAPI module](/dev-docs/modules/paapi.html)
+
+ ```bash
+ gulp build --modules=topLevelPaapi,...
+ ```
+
+- [configure this module](#config)
+- render PAAPI bids (see [examples](#examples))
+
+
+## Module Configuration
+
+This module exposes the following settings:
+
+{: .table .table-bordered .table-striped }
+|Name |Type |Description |Notes |
+| ------------ | ------------ | ------------ |------------ |
+|paapi.topLevelSeller | Object | | |
+|paapi.topLevelSeller.auctionConfig | Object | Base [AuctionConfig](https://github.com/WICG/turtledove/blob/main/FLEDGE.md#2-sellers-run-on-device-auctions) to use in `runAdAuction` | Only `seller` and `decisionLogicURL` are required |
+|paapi.topLevelSeller.autorun | Boolean | If `true` (the default) , automatically start PAAPI auctions as soon as possible | |
+|paapi.topLevelSeller.overrideWinner | Boolean | If `true`, replace contextual winners with PAAPI winners as they are rendered. Default is `false`. | see [example](#overrideWinner) |
+
+
+## Examples
+
+### Basic Example using renderAd
+
+```javascript
+pbjs.setConfig({
+ paapi: {
+ enabled: true,
+ defaultForSlots: 1,
+ topLevelSeller: {
+ auctionConfig: {
+ seller: 'https://www.publisher.com',
+ decisionLogicURL: 'https://www.publisher.com/decisionLogic.js',
+ },
+ }
+ }
+})
+```
+
+With the above, `navigator.runAdAuction` is invoked once per ad unit, and the result is made available through [`getPAAPIBids`](/dev-docs/publisher-api-reference/getPAAPIBids.html):
+
+```javascript
+pbjs.requestBids({
+ bidsBackHandler: function(contextualBids) {
+ pbjs.getPAAPIBids().then(paapiBids => {
+ Object.entries(contextualBids).forEach(([adUnitCode, {bids}]) => {
+ const paapiWinner = paapiBids[adUnitCode];
+ const contextualWinner = bids?.[0];
+ const targetDoc = document.getElementById(adUnitCode).contentDocument // assumes there's an iframe with id = adUnitCode
+ // PAAPI bids can be rendered as if they were "normal" Prebid bids
+ if (paapiWinner) {
+ pbjs.renderAd(targetDoc, paapiWinner.adId)
+ } else {
+ pbjs.renderAd(targetDoc, contextualWinner.adId)
+ }
+ })
+ })
+ }
+})
+```
+
+
+### Automatically render PAAPI winners instead of contextual bids
+
+When `overrideWinner` is enabled, rendering a "normal" Prebid bid will instead render a PAAPI bid, if the PAAPI auction for the slot yielded a winner. This is an easy way include the result of PAAPI auctions without having to change the rendering logic. For example:
+
+```javascript
+pbjs.setConfig({
+ paapi: {
+ enabled: true,
+ defaultForSlots: 1,
+ topLevelSeller: {
+ auctionConfig: {
+ seller: 'https://www.publisher.com',
+ decisionLogicURL: 'https://www.publisher.com/decisionLogic.js',
+ },
+ overrideWinner: true
+ }
+ }
+});
+
+pbjs.requestBids({
+ bidsBackHandler: function() {
+ // if Prebid wins the GAM auction (and renders a Prebid creative), the following will render PAAPI winners over the Prebid winners
+ pbjs.setTargetingForGPTAsync();
+ }
+})
+```
+
+## Related Reading
+
+- [PAAPI module](/dev-docs/modules/paapi.html)
+- [FLEDGE](https://github.com/WICG/turtledove/blob/main/FLEDGE.md)
+- [getPAAPIBids](/dev-docs/publisher-api-reference/getPAAPIBids.html)
diff --git a/dev-docs/publisher-api-reference/getPAAPIBids.md b/dev-docs/publisher-api-reference/getPAAPIBids.md
new file mode 100644
index 0000000000..aa6cdb5365
--- /dev/null
+++ b/dev-docs/publisher-api-reference/getPAAPIBids.md
@@ -0,0 +1,93 @@
+---
+layout: api_prebidjs
+title: pbjs.getPAAPIBids(options)
+description: getPAAPIBids API
+sidebarType: 1
+---
+
+Returns a promise of the latest PAAPI bid for each ad unit, optionally filtered by auction or ad unit.
+
+**Kind**: static method of pbjs API. Only available when the [topLevelPaapi module](/dev-docs/modules/topLevelPaapi.html) is installed.
+
+**Returns**: `Promise
-
-
-
-
-
+
+ {{ content }}
+
diff --git a/dev-docs/examples/adunit-refresh.md b/dev-docs/examples/adunit-refresh.md
index 4948da6ff5..e79b28718c 100644
--- a/dev-docs/examples/adunit-refresh.md
+++ b/dev-docs/examples/adunit-refresh.md
@@ -9,9 +9,74 @@ about:
- 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
-
-code_height: 1540
pid: 20
---
+
+## Individual Ad Unit Refresh / Infinite Scroll
+
+{% capture htmlCodePrebid %}
+{% endcapture %}
+
+{% capture jsCode %}var googletag = googletag || {};
+googletag.cmd = googletag.cmd || [];
+googletag.cmd.push(function() {
+ googletag.pubads().disableInitialLoad();
+});
+
+var pbjs = pbjs || {};
+pbjs.que = pbjs.que || [];
+
+
+// ... and all the prebid and google initializing code
+
+{% endcapture %}
+
+{% include code/web-example.html id="hello-world" html=htmlCode js=jsCode %}
+```
+
+{% endraw %}
+
+There are few things to understand here
+
+1. The `include` directive requires a unique `id` for the page. Otherwise the tabs won't work properly
+2. Capturing the code into a variable makes everything a lot more readable
+
+## More information
+
+- [jekyll includes](https://jekyllrb.com/docs/includes/)
+- [jekyll includes with parameters](https://jekyllrb.com/docs/includes/#passing-parameter-variables-to-includes)
+- [bootstrap tabs](https://getbootstrap.com/docs/4.6/components/navs/#javascript-behavior)
From f75cbd4b9af8e9df69427a4844086b209f8b6fe1 Mon Sep 17 00:00:00 2001
From: ahmadlob <109217988+ahmadlob@users.noreply.github.com>
Date: Mon, 26 Aug 2024 23:58:18 +0300
Subject: [PATCH 172/816] support app (#5483)
---
dev-docs/bidders/taboola.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/taboola.md b/dev-docs/bidders/taboola.md
index ed1ced43f7..d4255add4b 100644
--- a/dev-docs/bidders/taboola.md
+++ b/dev-docs/bidders/taboola.md
@@ -19,7 +19,7 @@ safeframes_ok: true
fpd_supported: true
ortb_blocking_supported: partial
deals_supported: false
-pbs_app_supported: false
+pbs_app_supported: true
multiformat_supported: will-not-bid
sidebarType: 1
---
From a7b619774755d7bdb79c0ed501207367b3535445 Mon Sep 17 00:00:00 2001
From: freedomadnetworkdev
Date: Tue, 27 Aug 2024 11:12:52 -0400
Subject: [PATCH 173/816] New Adapter: Freedom Ad Network Bidder Adapter
(#5560)
* Create freedomadnetwork.md
* Update freedomadnetwork.md
* Update freedomadnetwork.md
* Update freedomadnetwork.md
---
dev-docs/bidders/freedomadnetwork.md | 36 ++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 dev-docs/bidders/freedomadnetwork.md
diff --git a/dev-docs/bidders/freedomadnetwork.md b/dev-docs/bidders/freedomadnetwork.md
new file mode 100644
index 0000000000..8ff942e4fb
--- /dev/null
+++ b/dev-docs/bidders/freedomadnetwork.md
@@ -0,0 +1,36 @@
+---
+layout: bidder
+title: Freedom Ad Network
+description: Freedom Ad Network Bidder Adapter
+biddercode: freedomadnetwork
+gvl_id: none
+coppa_supported: true
+media_types: banner, native
+multiformat_supported: will-bid-on-any, will-bid-on-one, will-not-bid
+safeframes_ok: false
+deals_supported: false
+floors_supported: false
+fpd_supported: false
+pbjs: true
+prebid_member: false
+sidebarType: 1
+tcfeu_supported: false
+dsa_supported: false
+usp_supported: false
+schain_supported: false
+dchain_supported: false
+pbs: false
+ortb_blocking_supported: false
+privacy_sandbox: no
+---
+
+### Note
+
+The Freedom Ad Network Adapter requires setup before beginning. Please contact us at [info@freedomadnetwork.com](mailto:info@freedomadnetwork.com).
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|-----------------------|-----------|-----------|
+| `placementId` | required | Placement ID | `'e6203f1e-bd6d-4f42-9895-d1a19cdb83c8'` | `string` |
From 1dde0e72f5839146208b9e065fd9363a44879728 Mon Sep 17 00:00:00 2001
From: bretg
Date: Wed, 28 Aug 2024 18:00:01 -0400
Subject: [PATCH 174/816] Fixed native example in sidebar (#5574)
---
_data/sidebar.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_data/sidebar.yml b/_data/sidebar.yml
index 097301e7e0..3cebde6074 100644
--- a/_data/sidebar.yml
+++ b/_data/sidebar.yml
@@ -227,7 +227,7 @@
- sbSecId: 1
title: Native Ads
- link: /formats/native.html
+ link: /dev-docs/examples/native-ad-example.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
From 99bb9128e7e86f5f6d6355a521ddae2bc445a493 Mon Sep 17 00:00:00 2001
From: Takamasa-Murano
Date: Thu, 29 Aug 2024 15:44:28 +0900
Subject: [PATCH 175/816] ssp_geniee Bid Adapter : add ssp_geniee.md (#5551)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* ssp_geniee.md追加
* native削除
* 最小構成に修正
* add metadata as possible
* modify metadata
* temporary update...
* parameters comfirmed
---------
Co-authored-by: Murano Takamasa
---
dev-docs/bidders/ssp_geniee.md | 43 ++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
create mode 100644 dev-docs/bidders/ssp_geniee.md
diff --git a/dev-docs/bidders/ssp_geniee.md b/dev-docs/bidders/ssp_geniee.md
new file mode 100644
index 0000000000..3219657174
--- /dev/null
+++ b/dev-docs/bidders/ssp_geniee.md
@@ -0,0 +1,43 @@
+---
+layout: bidder
+title: Geniee SSP
+description: Geniee SSP Bidder Adapter
+biddercode: ssp_geniee
+userId: imuId
+media_types: banner
+safeframes_ok: false
+sidebarType: 1
+pbjs: true
+tcfeu_supported: false
+dsa_supported: false
+gvl_id: none
+usp_supported: false
+coppa_supported: false
+gpp_sids: none
+schain_supported: false
+dchain_supported: false
+deals_supported: false
+floors_supported: false
+fpd_supported: false
+pbs: false
+prebid_member: false
+multiformat_supported: will-bid-on-one
+ortb_blocking_supported: partial
+privacy_sandbox: no
+---
+### Note
+
+This is [Geniee](https://geniee.co.jp) Bidder Adapter for Prebid.js.
+
+{: .alert.alert-info :}
+This is Geniee *SSP* Bidder Adapter. The another adapter named "Geniee Bid Adapter" is Geniee *DSP* Bidder Adapter.
+
+Please contact us before using the adapter.
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|--------------|----------|-------------------------------------------------|-----------|-----------|
+| `zoneId` | required | Zone ID | `123456` | `integer` |
+| `currency` | Optional | Currency setting (`'JPY'`(Default) or `'USD'`) | `'JPY'` | `string` |
From 45e3b0970b2963607c17558fbe26b9be1777561b Mon Sep 17 00:00:00 2001
From: pm-azhar-mulla <75726247+pm-azhar-mulla@users.noreply.github.com>
Date: Thu, 29 Aug 2024 12:15:52 +0530
Subject: [PATCH 176/816] Updated biddercode as per Bid Adapter file (#5575)
Co-authored-by: pm-azhar-mulla
---
dev-docs/bidders/docereeadmanager.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/docereeadmanager.md b/dev-docs/bidders/docereeadmanager.md
index b70e45499b..e848218ba2 100644
--- a/dev-docs/bidders/docereeadmanager.md
+++ b/dev-docs/bidders/docereeadmanager.md
@@ -3,7 +3,7 @@ layout: bidder
title: Doceree AdManager
description: Doceree AdManager Prebid Bidder Adapter
pbjs: true
-biddercode: docereeAdManager
+biddercode: docereeadmanager
media_types: banner
gvl_id: 1063
tcfeu_supported: true
From dbacc042b8b3936bcdfbc1ab5c86db10db95bdcb Mon Sep 17 00:00:00 2001
From: jsnellbaker <31102355+jsnellbaker@users.noreply.github.com>
Date: Thu, 29 Aug 2024 02:46:46 -0400
Subject: [PATCH 177/816] AppNexus bidders page - update and clarify video
params (#5563)
---
dev-docs/bidders/appnexus.md | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md
index 834f91fe41..e8f4c9f0b0 100644
--- a/dev-docs/bidders/appnexus.md
+++ b/dev-docs/bidders/appnexus.md
@@ -28,6 +28,7 @@ sidebarType: 1
- [Video Object](#video-object)
- [User Object](#user-object)
- [App Object](#app-object)
+ - [Video Bid params and Video MediaTypes params](#video-bid-params-and-video-mediatypes-params)
- [Custom Targeting keys](#custom-targeting-keys)
- [Auction Level Keywords](#auction-level-keywords)
- [Passing Keys Without Values](#passing-keys-without-values)
@@ -80,12 +81,14 @@ The table below will reflect both formats, though it's recommended to use the lo
#### Video Object
+For details on how these video params work with the params set in the adUnit.mediaTypes.video object, see [Video Bid params and Video MediaTypes params](#appnexus-video-params) section below.
+
{: .table .table-bordered .table-striped }
| Name | Description | Type |
|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|
| `minduration` | Integer that defines the minimum video ad duration in seconds. | `integer` |
| `maxduration` | Integer that defines the maximum video ad duration in seconds. | `integer` |
-|`context` | A string that indicates the type of video ad requested. Allowed values: `"pre_roll"`; `"mid_roll"`; `"post_roll"`; `"outstream"`. | `string` |
+|`context` | A string that indicates the type of video ad requested. Allowed values: `"pre_roll"`; `"mid_roll"`; `"post_roll"`; `"outstream"`; `"in-banner"`, `"in-feed"`, `"interstitial"`, `"accompanying_content_pre_roll"`, `"accompanying_content_mid_roll"`, `"accompanying_content_post_roll"`. | `string` |
| `skippable` | Boolean which, if `true`, means the user can click a button to skip the video ad. Defaults to `false`. | `boolean` |
|`skipoffset`| Integer that defines the number of seconds until an ad can be skipped. Assumes `skippable` setting was set to `true`. | `integer` |
| `playback_method` | A string that sets the playback method supported by the publisher. Allowed values: `"auto_play_sound_on"`; `"auto_play_sound_off"`; `"click_to_play"`; `"mouse_over"`; `"auto_play_sound_unknown"`. | `string` |
@@ -150,6 +153,16 @@ pbjs.bidderSettings = {
}
```
+
+
+#### Video Bid params and Video MediaTypes params
+
+It is possible to have setup video params within the adUnit's AppNexus bid object as well as in the adUnit's `mediaTypes.video` object. In this case, there is a set of logic that the AppNexus bid adapter follows to resolve which values should be passed along to the ad server request. Generally speaking, the adapter prefers the values from bid param video object over the mediaTypes video object, in order to preserve historical setups. So for instance, if the playbackmethod field was set in both locations, then the bid params `playback_method` would be chosen over the mediaTypes `playbackmethod`. If there are different fields set between the two locations and they don't overlap, then the `mediaTypes.video` params would be included along with the bid params.
+
+To note - not all the fields between the two locations have a single direct comparison, nor are all fields from the `mediaTypes.video` object are supported by the ad server endpoint. The fields/values set in the `mediaTypes.video` object follow the OpenRTB convention, while our bid params follow the convention for the ad server endpoint (which is **not** a straight OpenRTB endpoint). The AppNexus bid adapter converts the matching fields from the `mediaTypes.video` object where there is a correlation to help support as much as possible. For example, to help infer the `context` field, the adapter will look to the `mediaTypes.video.plcmt`, `mediaTypes.video.startdelay`, and `mediaTypes.video.placement` fields to help determine the appropriate `context` value. The `startdelay` field is included here to help clarify the type of instream video that is used (ie pre/mid/post-roll).
+
+If you want to transition from video bid params to use the `mediaTypes.video` params (to simplify the adUnit setup), please contact your AppNexus contact to help identify the proper fields/values are populated to ensure a smooth transition.
+
#### Auction Level Keywords
From 380ceb7c213f31a9ddd756f06f73171874dcea1d Mon Sep 17 00:00:00 2001
From: Prebid-Team
Date: Thu, 29 Aug 2024 15:36:51 +0530
Subject: [PATCH 178/816] update incrementx.md file with video mediatype
(#5568)
---
dev-docs/bidders/incrementx.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/incrementx.md b/dev-docs/bidders/incrementx.md
index 2182b871ba..d33fcda5a3 100644
--- a/dev-docs/bidders/incrementx.md
+++ b/dev-docs/bidders/incrementx.md
@@ -4,7 +4,7 @@ title: IncrementX
description: Prebid IncrementX Bidder Adaptor
pbjs: true
biddercode: incrementx
-media_types: banner
+media_types: banner, video
tcfeu_supported: false
multiformat_supported: will-bid-on-one
filename: incrxBidAdapter
From 754f974d2527a6a8793b1a6479affd8f2d960d49 Mon Sep 17 00:00:00 2001
From: Jeff Palladino <1226357+jpalladino84@users.noreply.github.com>
Date: Tue, 3 Sep 2024 08:09:03 -0600
Subject: [PATCH 179/816] Symitri dap rtd module update documentation (#5569)
* symitriDapRtdModule - update documentation
* Update to latest
---------
Co-authored-by: Jeff Palladino
---
dev-docs/modules/symitriDapRtdProvider.md | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/dev-docs/modules/symitriDapRtdProvider.md b/dev-docs/modules/symitriDapRtdProvider.md
index 99914d3b7b..f44c83f9df 100644
--- a/dev-docs/modules/symitriDapRtdProvider.md
+++ b/dev-docs/modules/symitriDapRtdProvider.md
@@ -38,14 +38,16 @@ pbjs.setConfig({
auctionDelay: 2000,
dataProviders: [
{
- name: "dap",
+ name: "symitriDap",
waitForIt: true,
params: {
apiHostname: '',
apiVersion: "x1",
+ apiAuthToken: '',
domain: 'your-domain.com',
- identityType: 'email' | 'mobile' | ... | 'dap-signature:1.3.0',
- segtax: 504,
+ identityType: 'hid'| ... | 'dap-signature:1.0.0',
+ identityValue: '',
+ segtax: 501,
dapEntropyUrl: 'https://sym-dist.symitri.net/dapentropy.js',
dapEntropyTimeout: 1500
}
@@ -62,13 +64,15 @@ Please reach out to your Symitri account representative() to
{: .table .table-bordered .table-striped }
| Name |Type | Description | Notes |
| :------------ | :------------ | :------------ |:------------ |
-| name | String | Symitri Dap Rtd module name | 'dap' always|
+| name | String | Symitri Dap Rtd module name | 'symitriDap' always|
| waitForIt | Boolean | Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false |
| apiHostname | String | Hostname provided by Symitri | Please reach out to your Symitri account representative() for this value|
| apiVersion | String | This holds the API version | It should be "x1" always |
+| apiAuthToken | String | Symitri API AuthToken | Please reach out to your Symitri account representative() for this value |
| domain | String | The domain name of your webpage | |
-| identityType | String | Something like this 'email', 'mobile', ... 'dap-signature:1.3.0' | |
-| segtax | Integer | The taxonomy for Symitri | The value should be 504 |
+| identityType | String | Something like this 'hid', ... 'dap-signature:1.0.0' | |
+| identityValue | String | This is optional field to pass user hid. Will be used only if identityType is hid | |
+| segtax | Integer | The taxonomy for Symitri | The value should be 501 |
| dapEntropyUrl | String | URL to dap entropy script | Optional if the script is directly included on the webpage. Contact your Symitri account rep for more details |
| dapEntropyTimeout | Integer | Maximum time allotted for the entropy calculation to happen | |
From 12df0045e16e004ba637041219286ad4bd87d039 Mon Sep 17 00:00:00 2001
From: bretg
Date: Tue, 3 Sep 2024 13:42:21 -0400
Subject: [PATCH 180/816] PBS FPD update (#5578)
---
.../openrtb2/pbs-endpoint-auction.md | 85 +++++++++++++++++--
prebid-server/features/pbs-feature-idx.md | 3 +-
2 files changed, 81 insertions(+), 7 deletions(-)
diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
index 9a45cae691..da42122863 100644
--- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
+++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
@@ -1183,15 +1183,43 @@ See Prebid.org [troubleshooting pages](/troubleshooting/pbs-troubleshooting.html
##### First Party Data Support
-This is a standard way for the page (or app) to supply first party data and control which bidders have access to it.
+This is a standard way for the page (or app) to supply First Party Data and control which bidders have access to it.
-It specifies where in the OpenRTB request non-standard attributes should be passed. For example:
+Prebid defines several types of First Party Data (FPD):
+
+1. Cross-impression contextual information. e.g. the content category of the page. This data goes in the `site.ext.data` object or the `app.ext.data` object.
+1. User-level information. e.g. whether the user is a registered user. This data goes in `user.ext.data`.
+1. Impression-level information. e.g. the Global Placement ID. This data goes in the `imp.ext.data` object.
+1. Seller-Defined Audience (SDA) contextual data. This goes in `site.data[]` or `app.data[]` in accordance with the [IAB segment taxonomy conventions](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/segtax.md).
+1. SDA user data goes in `user.data[]` with the same [conventions](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/segtax.md) as the contextual data.
+
+See below for how to specify these different types of data and how to define which bidders are
+allowed to receive which.
+
+###### Data Permissions
+
+This approach specifies whether the given bidder(s) are allowed to receive the global (contextual or user)
+FPD.
+
+If a `ext.prebid.data.bidders[]` is specified, it means that {site,app}.ext.data and user.ext.data fields will only be passed to the named bidders. For example:
+
+```json
+{
+ "ext": {
+ "prebid": {
+ "data": { "bidders": [ "bidderA", "bidderB" ] } // these are the bidders allowed to see the globsl FPD
+ }
+ }
+}
+```
+
+For example:
```json
{
"ext": {
"prebid": {
- "data": { "bidders": [ "rubicon", "appnexus" ] } // these are the bidders allowed to see protected data
+ "data": { "bidders": [ "bidderA", "bidderB" ] } // these are the bidders allowed to see protected data
}
},
"site": {
@@ -1203,8 +1231,6 @@ It specifies where in the OpenRTB request non-standard attributes should be pass
},
"user": {
"keywords": "",
- "gender": "",
- "yob": 1999,
"geo": {},
"ext": {
"data": { GLOBAL USER DATA } // only seen by bidders named in ext.prebid.data.bidders[]
@@ -1223,7 +1249,9 @@ It specifies where in the OpenRTB request non-standard attributes should be pass
}
```
-Bidder-specific data can be defined with ext.prebid.bidderconfig:
+###### Bidder-Specific global FPD
+
+Bidder-specific global (i.e. cross-impression) data can be defined with ext.prebid.bidderconfig:
```json
"ext": {
@@ -1262,6 +1290,51 @@ Prebid Server enforces data permissioning. So before passing values to the bidde
Each adapter must be coded to read the values from the ortb and pass it to their endpoints appropriately.
+###### Bidder-Specific Impression-Level FPD
+
+When Prebid Server sees `imp[].ext.prebid.imp.BIDDER`, the behavior is to:
+
+1. When passing this imp to that bidder, merge the contents of BIDDER into the imp
+1. Remove the imp[].ext.prebid.imp object
+1. Leave any imp[].ext.prebid.storedrequest object
+1. The imp.ext.prebid.imp.BIDDER object name is case insensitive and supports aliases
+1. If imp.ext.prebid.imp.BIDDER does not resolve to an actual bidder or alias in a case-insensitive way, it is ignored with a warning when in debug mode.
+1. No validation is done on imp.ext.prebid.imp.BIDDER.ext except that imp.ext.prebid.imp.BIDDER.ext.prebid.BIDDER is removed.
+1. The contents of imp.ext.prebid.imp.BIDDER takes precedence in the merge if the field already exists in the request.
+1. The resulting imp object must be valid OpenRTB per the system schema.
+
+Here's an example showing a scenario showing a storedrequest-based scenario:
+
+```json
+{
+ imp: [{
+ ext: {
+ prebid: {
+ storedrequest: { id: "sr1" }, // for the first imp, pull bidders out of a storedrequest
+ imp: {
+ bidderA: {
+ pmp: {
+ deals: [{ id:"dealA" }] // apply this deal to bidderA
+ }
+ }
+ }
+ }
+ },{
+ ext: {
+ prebid: {
+ storedrequest: { id: "sr2" }, // for the second imp, pull bidders out of a different storedrequest
+ imp: {
+ bidderB: {
+ pmp: {
+ deals: [{ id:"dealB" }] // apply this deal to bidderB
+ }
+ }
+ }
+ }
+ }]
+}
+```
+
##### Custom Targeting
An OpenRTB extension, whether in the the original request or the [stored-request](/prebid-server/features/pbs-storedreqs.html), can customize the ad server targeting generated by PBS.
diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md
index 9abdf3d8e6..c83165c10a 100644
--- a/prebid-server/features/pbs-feature-idx.md
+++ b/prebid-server/features/pbs-feature-idx.md
@@ -54,7 +54,8 @@ title: Prebid Server | Features
| [Stored Responses](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#stored-responses) | Stored Auction Responses | Accepts a stored response ID in the OpenRTB, looks it up against a local data store, and merges with the OpenRTB response record. | | |
| [Stored Responses](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#stored-responses) | Stored Bid Responses | Accepts a stored response ID in the OpenRTB, looks it up against a local data store, and uses that as the bid adapter response. | | |
| First Party Data | Core | Accepts core [first party data](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#first-party-data-support) attributes and supports ext.prebid.data.bidders. | | |
-| First Party Data | Bidder-specific data | Accepts bidder-specific first party data attributes. | | |
+| First Party Data | Bidder-specific global data | Accepts [bidder-specific first party data attributes](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-specific-global-fpd) for site, app, and user. | | |
+| First Party Data | Bidder-specific impression data | Accepts [bidder-specific first party data attributes at the imp-level](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-specific-impression-level-fpd). | | |
| First Party Data | AMP first party data | Accepts [first party data attributes on an AMP request](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html#first-party-data). | | |
| [Supply Chain](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#supply-chain-support) | Bidder-specific schains | Accepts bidder-specific schain | | |
| Supply Chain | Host SChain | The host company can supply a global schain that's appended to the list of incoming nodes in source.ext.schain. | | |
From 60d05c4e7841d79ac1b02620e96c63e2a99d1dc1 Mon Sep 17 00:00:00 2001
From: julietterochon <140074184+julietterochon@users.noreply.github.com>
Date: Thu, 5 Sep 2024 17:09:36 +0200
Subject: [PATCH 181/816] [Criteo] Addition of the uid parameter (#5583)
---
dev-docs/bidders/criteo.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/dev-docs/bidders/criteo.md b/dev-docs/bidders/criteo.md
index 58901ad55e..a914de31e3 100644
--- a/dev-docs/bidders/criteo.md
+++ b/dev-docs/bidders/criteo.md
@@ -37,6 +37,7 @@ Prebid-Server support is on alpha test and is currently a non-finished product.
| `zoneId` | required | (deprecated) The zone ID from Criteo. Should be replaced by `networkId` when using zone matching. | `234234` | `integer` |
| `networkId` | required | The network ID from Criteo. Please reach out your Criteo representative for more details. | `456456` | `integer` |
| `pubid` | required | publisher id | `'ABC123'` | `string` |
+| `uid` | optional | Ad Unit ID | `'8888'` | `string` |
| `nativeCallback` | optional | (Prebid.js only) Callback to perform render in native integrations. Please reach out your Criteo representative for more details. | `function(payload) { console.log(payload); }` | `function` |
| `integrationMode` | optional | (Prebid.js only) Integration mode to use for ad render (none or 'AMP'). Please reach out your Criteo representative for more details. | `'AMP'` | `string` |
| `publisherSubId` | optional | Custom identifier for reporting. Please reach out your Criteo representative for more details. | `'adunit-1'` | `string` |
From a21ffbc82f08d4fc330400c61ebe26081616d80b Mon Sep 17 00:00:00 2001
From: Komal Kumari <169047654+pm-komal-kumari@users.noreply.github.com>
Date: Fri, 6 Sep 2024 17:43:49 +0530
Subject: [PATCH 182/816] Add maxBid documentation for setConfig (#5585)
Co-authored-by: Komal Kumari
---
dev-docs/publisher-api-reference/setConfig.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/dev-docs/publisher-api-reference/setConfig.md b/dev-docs/publisher-api-reference/setConfig.md
index 187b29bc6b..fef8e66c1e 100644
--- a/dev-docs/publisher-api-reference/setConfig.md
+++ b/dev-docs/publisher-api-reference/setConfig.md
@@ -1347,6 +1347,18 @@ Inversely, if you wish for the alias registry to be private you can do so by usi
pbjs.setConfig({aliasRegistry: 'private'})
```
+### Set Max Bid
+
+
+
+Prebid ensures that the bid response price doesn't exceed the maximum bid. If the CPM (after currency conversion) is higher than the maxBid, the bid is rejected. The default maxBid value is 5000. You can adjust maxBid with:
+
+```javascript
+pbjs.setConfig({
+ maxBid: 10
+});
+```
+
### General adapter Configuration
From 7d395d313f5d8a0ec7f9e78e183807d6bf5732e9 Mon Sep 17 00:00:00 2001
From: julietterochon <140074184+julietterochon@users.noreply.github.com>
Date: Fri, 6 Sep 2024 14:26:16 +0200
Subject: [PATCH 183/816] [Criteo] Deprecation of the nativeCallback parameter
(#5586)
---
dev-docs/bidders/criteo.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/criteo.md b/dev-docs/bidders/criteo.md
index a914de31e3..c09461da08 100644
--- a/dev-docs/bidders/criteo.md
+++ b/dev-docs/bidders/criteo.md
@@ -38,7 +38,7 @@ Prebid-Server support is on alpha test and is currently a non-finished product.
| `networkId` | required | The network ID from Criteo. Please reach out your Criteo representative for more details. | `456456` | `integer` |
| `pubid` | required | publisher id | `'ABC123'` | `string` |
| `uid` | optional | Ad Unit ID | `'8888'` | `string` |
-| `nativeCallback` | optional | (Prebid.js only) Callback to perform render in native integrations. Please reach out your Criteo representative for more details. | `function(payload) { console.log(payload); }` | `function` |
+| `nativeCallback` | optional | (deprecated) (Prebid.js only) Callback to perform render in native integrations. Please reach out your Criteo representative for more details. | `function(payload) { console.log(payload); }` | `function` |
| `integrationMode` | optional | (Prebid.js only) Integration mode to use for ad render (none or 'AMP'). Please reach out your Criteo representative for more details. | `'AMP'` | `string` |
| `publisherSubId` | optional | Custom identifier for reporting. Please reach out your Criteo representative for more details. | `'adunit-1'` | `string` |
From 73377e7e109cfe5a819c978e2a9928262144723f Mon Sep 17 00:00:00 2001
From: Alexander Pykhteyev
Date: Fri, 6 Sep 2024 19:58:02 +0700
Subject: [PATCH 184/816] Tgm bidder adapter: fix typo (#5584)
* Doc for embi media
* New TGM bidder adapter
* Remove unused
* Update TGM adapter doc
---------
Co-authored-by: apykhteyev
---
dev-docs/bidders/tgm.md | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/dev-docs/bidders/tgm.md b/dev-docs/bidders/tgm.md
index ae5d7a809d..44ccfa797c 100644
--- a/dev-docs/bidders/tgm.md
+++ b/dev-docs/bidders/tgm.md
@@ -24,17 +24,17 @@ sidebarType: 1
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|:--------------|:---------|:--------------------------------------------------|:---------------------|:----------|
-| `host` | required | Ad network's RTB host | `'ads-gmd.ortb.net'` | `string` |
-| `adUnitId` | required | Ad Unit Id will be generated on iionads Platform. | `42` | `integer` |
-| `adUnitType` | required | Type of Ad Unit (`'video'`, `'banner'`) | `'banner'` | `string` |
-| `publisherId` | required | Publisher ID | `'12345'` | `string` |
-| `custom1` | optional | Custom targeting field 1 | `'custom1'` | `string` |
-| `custom2` | optional | Custom targeting field 2 | `'custom2'` | `string` |
-| `custom3` | optional | Custom targeting field 3 | `'custom3'` | `string` |
-| `custom4` | optional | Custom targeting field 4 | `'custom4'` | `string` |
-| `custom5` | optional | Custom targeting field 5 | `'custom5'` | `string` |
+| Name | Scope | Description | Example | Type |
+|:--------------|:---------|:----------------------------------------------|:---------------------|:----------|
+| `host` | required | Ad network's RTB host | `'ads-gmd.ortb.net'` | `string` |
+| `adUnitId` | required | Ad Unit Id will be generated on TGM Platform. | `42` | `integer` |
+| `adUnitType` | required | Type of Ad Unit (`'video'`, `'banner'`) | `'banner'` | `string` |
+| `publisherId` | required | Publisher ID | `'12345'` | `string` |
+| `custom1` | optional | Custom targeting field 1 | `'custom1'` | `string` |
+| `custom2` | optional | Custom targeting field 2 | `'custom2'` | `string` |
+| `custom3` | optional | Custom targeting field 3 | `'custom3'` | `string` |
+| `custom4` | optional | Custom targeting field 4 | `'custom4'` | `string` |
+| `custom5` | optional | Custom targeting field 5 | `'custom5'` | `string` |
TGM server-side Prebid Server adapter requires only `publisherId` and `host` parameters. But TGM client-side Prebid.js adapter requires only `host`, `adUnitId`, `adUnitType`.
From 4077cba0adf1a706d62e7a745da2e066a0a0f9ba Mon Sep 17 00:00:00 2001
From: bretg
Date: Fri, 6 Sep 2024 12:50:36 -0400
Subject: [PATCH 185/816] PBS ortb2-blocking update (#5588)
* PBS ortb2-blocking update
* lint
* lint
---
prebid-server/pbs-modules/ortb2-blocking.md | 99 ++++++++++++---------
1 file changed, 58 insertions(+), 41 deletions(-)
diff --git a/prebid-server/pbs-modules/ortb2-blocking.md b/prebid-server/pbs-modules/ortb2-blocking.md
index 1a7648a61a..f3db5b459e 100644
--- a/prebid-server/pbs-modules/ortb2-blocking.md
+++ b/prebid-server/pbs-modules/ortb2-blocking.md
@@ -9,7 +9,7 @@ sidebarType : 5
# ORTB2 Blocking Module
{:.no_toc}
-* TOC
+- TOC
{:toc }
## Overview
@@ -35,7 +35,7 @@ For each of the supported attributes, there are a range of behaviors that
can be configured:
- **Configure Blocks**: allows host companies to define blocks globally, per-account, or per-account/bidder combination. This blocking config is sent in the OpenRTB requests to all or specific bidders for consideration in bid determination.
-- **Enforce Blocks**: PBS can reject bids from bidders that don't conform to the blocking lists sent in the request.
+- **Enforce Blocks**: PBS can reject bids from bidders that don't conform to the blocking lists sent in the request. The default is to **not** block.
- **Enforce Unknown Values**: for some attributes it may makes sense to reject requests that don't contain a required value. For instance, the publisher may want to drop any bid that doesn't report the advertiser domain.
- **Deal Overrides**: Private Marketplace deals may have exceptions to standard blocked attributes.
@@ -44,11 +44,11 @@ Here's a summary of the features the module supports:
{: .table .table-bordered .table-striped }
| Scenario | Configure Blocks | Enforce Blocks | Enforce Unknown Values | Deal Overrides |
|---+---+---+---+---|
-| Advertiser Domains | | | | |
-| Advertiser Categories | | | | |
-| Apps | | | | |
-| Banner Types | | | | |
-| Banner Attributes | | | | |
+| Advertiser Domains | | | | |
+| Advertiser Categories | | | | |
+| Apps | | | | |
+| Banner Types | | | | |
+| Banner Attributes | | | | |
## Configuration
@@ -64,12 +64,13 @@ so the module is only invoked for specific accounts. See below for an example.
### Global Config
-There is no host-company level config for this module.
+There is no host-company level config for this module except the execution plan may optionally be at the host level.
### Account-Level Config
Here's a general template for the account config used in PBS-Java:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -80,7 +81,7 @@ Here's a general template for the account config used in PBS-Java:
"action-overrides": {
OVERRIDE_SETTING: [{
"conditions": { ... },
- // the value below will be the datatype of the SETTING
+ // the value below will be the datatype of the SETTING
"override": VALUE
}]
}
@@ -95,8 +96,9 @@ Here's a general template for the account config used in PBS-Java:
}
```
-PBS-Go version of the same config:
-```
+PBS-Go uses underscores instead of dashes, so this is the Go version of the same config:
+
+```json
{
"hooks": {
"modules": {
@@ -128,17 +130,18 @@ The 'ATTRIBUTE' above is one of the 5 blockable entities defined in OpenRTB. A '
The following sections detail each of the 5 blockable entities.
Here's a detailed example for PBS-Java:
-```
+
+```json
{
"hooks": {
"modules": {
"ortb2-blocking": {
"attributes": {
"badv": {
- "enforce-blocks": false,
- "blocked-adomain": [],
+ "enforce-blocks": false, // default is false
+ "blocked-adomain": [], // these are unconditionally blocked domains
"action-overrides": {
- "blocked-adomain": [
+ "blocked-adomain": [ // these are conditionally blocked domains
{
"override": [ "example.com" ],
"conditions": {
@@ -149,10 +152,10 @@ Here's a detailed example for PBS-Java:
}
},
"bcat": {
- "enforce-blocks": false,
- "blocked-adv-cat": [],
+ "enforce-blocks": false, // default is false
+ "blocked-adv-cat": [], // these are unconditionally blocked categories
"action-overrides": {
- "blocked-adv-cat": [
+ "blocked-adv-cat": [ // these are conditionally blocked categories
{
"override": [ "IAB7" ],
"conditions": {
@@ -163,9 +166,9 @@ Here's a detailed example for PBS-Java:
}
},
"battr": {
- "enforce-blocks": false,
+ "enforce-blocks": false, // default is false
"action-overrides": {
- "blocked-banner-attr": [
+ "blocked-banner-attr": [ // these are conditionally blocked categories
{
"override": [1,3,8,9,10,13,14,17],
"conditions": {
@@ -176,7 +179,7 @@ Here's a detailed example for PBS-Java:
}
]
},
- "blocked-banner-attr": []
+ "blocked-banner-attr": [] // these are unconditionally blocked categories
}
}
}
@@ -224,7 +227,8 @@ Here's a detailed example for PBS-Java:
```
For PBS-Go:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -331,12 +335,13 @@ This attribute is related to the 'badv' of the request, and the 'adomain' of the
| Setting | Description | Data Type | Override Conditions Supported |
|---+---+---+---|
| blocked-adomain | List of adomains not allowed to display on this inventory | array of strings | bidders (array of strings), media-types (array of strings). |
-| enforce-blocks | Whether to enforce adomains in responses | boolean | bidders (array of strings), media-types (array of strings) |
+| enforce-blocks | Whether to enforce adomains in responses. Default is false. | boolean | bidders (array of strings), media-types (array of strings) |
| block-unknown-adomain | Whether to block responses not specifying adomain. Only active if enforce-blocks is true. | boolean | bidders (array of strings), media-types (array of strings) |
| allowed-adomain-for-deals | List of adomains allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global. |
Here's an example account config for PBS-Java with several scenarios:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -396,7 +401,8 @@ Here's an example account config for PBS-Java with several scenarios:
```
For PBS-Go:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -465,12 +471,13 @@ This attribute is related to the 'bcat' of the request and 'cat' of the response
| Setting | Description | Data Type | Override Conditions Supported |
|---+---+---+---|
| blocked-adv-cat | List of IAB categories not allowed to display on this inventory | array of strings | bidders (array of strings), media-types (array of strings) |
-| enforce-blocks | Whether to enforce cat in responses | boolean | bidders (array of strings), media-types (array of strings) |
+| enforce-blocks | Whether to enforce cat in responses. Default is false. | boolean | bidders (array of strings), media-types (array of strings) |
| block-unknown-adv-cat | Whether to block responses not specifying cat. Only active if enforce-blocks is true. | boolean | bidders (array of strings), media-types (array of strings) |
| allowed-adv-cat-for-deals | List of adomains allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global.|
Here's an example account config for PBS-Java with several scenarios:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -530,7 +537,8 @@ Here's an example account config for PBS-Java with several scenarios:
```
For PBS-Go
-```
+
+```json
{
"hooks": {
"modules": {
@@ -599,11 +607,12 @@ This attribute is related to the 'bapp' of the request and 'bundle' of the respo
| Setting | Description | Data Type | Override Conditions Supported |
|---+---+---+---|
| blocked-app | List of bundles not allowed to display on this inventory | array of strings | bidders (array of strings), media-types (array of strings) |
-| enforce-blocks | Whether to enforce bundles in responses | boolean | bidders (array of strings), media-types (array of strings) |
+| enforce-blocks | Whether to enforce bundles in responses. Default is false. | boolean | bidders (array of strings), media-types (array of strings) |
| allowed-bapp-for-deals | List of bundles allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global. |
Here's an example account config for PBS-Java:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -634,7 +643,8 @@ Here's an example account config for PBS-Java:
```
For PBS-Go
-```
+
+```json
{
"hooks": {
"modules": {
@@ -677,12 +687,13 @@ This attribute is related to the 'btype' of the request.
See Table 5.2 in the [OpenRTB 2.5 spec](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) for the possible values.
-Note: no enforcement is possible because the creative type is not explictly
+**Note:** no enforcement is possible because the creative type is not explictly
part of the response and Prebid Server does not currently contain logic to
parse creatives to derive the type.
Here's an example account config for PBS-Java:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -711,7 +722,8 @@ Here's an example account config for PBS-Java:
```
For PBS-Go
-```
+
+```json
{
"hooks": {
"modules": {
@@ -749,13 +761,14 @@ This attribute is related to the 'battr' of the request and 'attr' of the respon
| Setting | Description | Data Type | Override Conditions Supported |
|---+---+---+---|
| blocked-banner-attr | List of IAB banner attributes not allowed to display on this inventory | array of int | bidders (array of strings), media-types (array of strings) |
-| enforce-blocks | Whether to enforce attr in responses | boolean | bidders (array of strings), media-types (array of strings) |
+| enforce-blocks | Whether to enforce attr in responses. Default is false. | boolean | bidders (array of strings), media-types (array of strings) |
| allowed-banner-attr-for-deals | List of IAB attributes allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global. |
See Table 5.3 in the [OpenRTB 2.5 spec](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) for the possible values.
Here's an example account config for PBS-Java:
-```
+
+```json
{
"hooks": {
"modules": {
@@ -786,7 +799,8 @@ Here's an example account config for PBS-Java:
```
For PBS-Go
-```
+
+```json
{
"hooks": {
"modules": {
@@ -819,9 +833,11 @@ For PBS-Go
```
### Enable for Spring Boot
-In order to allow the module to be picked up by Prebid Server, a Spring Boot configuration property `hooks.ortb2-blocking.enabled` must be set to `true`.
+
+In order to allow the module to be picked up by PBS-Java, a Spring Boot configuration property `hooks.ortb2-blocking.enabled` must be set to `true`.
Here's an example of how your PBS configuration YAML should look like:
+
```YAML
hooks:
ortb2-blocking:
@@ -851,7 +867,8 @@ It's only applied to attributes where `enforce-blocks` is true, which means 'bty
1. **bidder**: the biddercode of the blocked response
Here's an example analytics tag that might be produced for use in an analytics adapter:
-```
+
+```json
[{
activities: [{
name: "enforce-blocking",
@@ -908,4 +925,4 @@ Here's an example analytics tag that might be produced for use in an analytics a
## Further Reading
- [Prebid Server Module List](/prebid-server/pbs-modules/index.html)
-- [Building a Prebid Server Module ](/prebid-server/developers/add-a-module.html)
+- [Building a Prebid Server Module](/prebid-server/developers/add-a-module.html)
From 56b4b0bed0c60fe2ea6f461e5b8fd61ca3f86213 Mon Sep 17 00:00:00 2001
From: qt-io <104574052+qt-io@users.noreply.github.com>
Date: Fri, 6 Sep 2024 20:38:43 +0300
Subject: [PATCH 186/816] QT: add tcfeu support (#5576)
* New Adapter: QT
* pbs marked as false
* pbs set to true
* add GVLID
---------
Co-authored-by: qt-io
---
dev-docs/bidders/qt.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dev-docs/bidders/qt.md b/dev-docs/bidders/qt.md
index f12968c8e7..2ccd991c20 100644
--- a/dev-docs/bidders/qt.md
+++ b/dev-docs/bidders/qt.md
@@ -4,7 +4,8 @@ title: QT
description: Prebid QT Bidder Adapter
biddercode: qt
gpp_sids: usstate_all
-tcfeu_supported: false
+gvl_id: 1331
+tcfeu_supported: true
usp_supported: true
coppa_supported: true
schain_supported: true
From 16f3817c53c44f0388c643d0b6d99f83a413d48a Mon Sep 17 00:00:00 2001
From: Yanivplaydigo <165155195+Yanivplaydigo@users.noreply.github.com>
Date: Fri, 6 Sep 2024 21:27:40 +0300
Subject: [PATCH 187/816] Playdigo: add tcfeu support (#5570)
* init adapter
* add gpp support
* upd
* add gvl id
---
dev-docs/bidders/playdigo.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dev-docs/bidders/playdigo.md b/dev-docs/bidders/playdigo.md
index 8dbdb1c13d..a5c968f5e6 100644
--- a/dev-docs/bidders/playdigo.md
+++ b/dev-docs/bidders/playdigo.md
@@ -4,7 +4,8 @@ title: Playdigo
description: Prebid Playdigo Bidder Adapter
biddercode: playdigo
gpp_sids: usstate_all
-tcfeu_supported: false
+gvl_id: 1302
+tcfeu_supported: true
usp_supported: true
coppa_supported: true
schain_supported: true
From e3af7e76953a0f08be42565b58a30f220e3a7eb8 Mon Sep 17 00:00:00 2001
From: Oleksandr Balashov
Date: Fri, 6 Sep 2024 21:40:31 +0300
Subject: [PATCH 188/816] Loopme: Add Bidder (#5564)
Co-authored-by: Oleksandr Balashov
---
dev-docs/bidders/loopme.md | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 dev-docs/bidders/loopme.md
diff --git a/dev-docs/bidders/loopme.md b/dev-docs/bidders/loopme.md
new file mode 100644
index 0000000000..bd289582b4
--- /dev/null
+++ b/dev-docs/bidders/loopme.md
@@ -0,0 +1,28 @@
+---
+layout: bidder
+title: Loopme
+description: Loopme Bidder Adapter
+biddercode: loopme
+gvl_id: 109
+media_types: banner, video, audio, native
+coppa_supported: true
+tcfeu_supported: true
+usp_supported: true
+prebid_member: false
+pbjs: false
+pbs: true
+schain_supported: true
+floors_supported: true
+multiformat_supported: will-bid-on-any
+ortb_blocking_supported: true
+sidebarType: 1
+---
+
+### Prebid Server Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|---------------------------------------------|----------------|-----------|
+| `publisherId` | required | A ID which identifies Loopme partner. | `'45qkf5s9zf'` | `string` |
+| `bundleId` | required | A ID which identifies app/site in Loopme. | `'v5qvf9fx4f'` | `string` |
+| `placementId` | required | A placement ID in Loopme. | `'x6fnvfd7ty'` | `string` |
From 028b23f4cc889a049d3627ba4b24fae3bbb7468d Mon Sep 17 00:00:00 2001
From: escalax
Date: Fri, 6 Sep 2024 22:05:22 +0300
Subject: [PATCH 189/816] New Adapter: Escalax (#5486)
* init escalax adapter
* fixes
---
dev-docs/bidders/escalax.md | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 dev-docs/bidders/escalax.md
diff --git a/dev-docs/bidders/escalax.md b/dev-docs/bidders/escalax.md
new file mode 100644
index 0000000000..f3b1b2cbe9
--- /dev/null
+++ b/dev-docs/bidders/escalax.md
@@ -0,0 +1,34 @@
+---
+layout: bidder
+title: Escalax
+description: Prebid Escalax Bidder Adaptor
+biddercode: escalax
+usp_supported: true
+ccpa_supported: true
+coppa_supported: true
+schain_supported: true
+media_types: banner, video, native
+safeframes_ok: true
+deals_supported: true
+pbs: true
+sidebarType: 1
+floors_supported: true
+prebid_member: false
+fpd_supported: false
+gvl_id: none
+multiformat_supported: will-bid-on-one
+ortb_blocking_supported: true
+userIds: all
+---
+
+### Note
+
+The Escalax Bidding adapter requires setup before beginning. Please contact us at
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|-----------------------|-----------|-----------|
+| `sourceId` | required | Patner name | `'partner'` | `string` |
+| `accountId` | required | Hash | `'0800fc577294'` | `string` |
From 889c68010de3bfbad2c5f392826be4a795a5014d Mon Sep 17 00:00:00 2001
From: benben2001 <145416009+benben2001@users.noreply.github.com>
Date: Sat, 7 Sep 2024 03:11:54 +0800
Subject: [PATCH 190/816] Add MeloZen bidder adapter documentation (#5467)
* Add MeloZen bidder adapter documentation
* Update media_types
---
dev-docs/bidders/melozen.md | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 dev-docs/bidders/melozen.md
diff --git a/dev-docs/bidders/melozen.md b/dev-docs/bidders/melozen.md
new file mode 100644
index 0000000000..0e0defba15
--- /dev/null
+++ b/dev-docs/bidders/melozen.md
@@ -0,0 +1,31 @@
+---
+layout: bidder
+title: MeloZen
+description: Prebid MeloZen Bidder Adaptor
+biddercode: melozen
+schain_supported: true
+dchain_supported: false
+media_types: banner, video, native
+deals_supported: false
+floors_supported: true
+fpd_supported: false
+pbjs: false
+pbs: true
+pbs_app_supported: true
+prebid_member: false
+multiformat_supported: will-bid-on-one
+ortb_blocking_supported: false
+sidebarType: 1
+---
+
+### Note
+
+The MeloZen Bidding adapter requires setup before beginning. Please contact us at
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+|---------|----------|-----------------------------------|--------------|----------|
+| `pubId` | required | The publisher's ID provided by MeloZen | `'386276e072'` | `string` |
From a019ca57df8585c67648521e3641e143c96b54d2 Mon Sep 17 00:00:00 2001
From: Ben Oraki <46795400+BenOraki@users.noreply.github.com>
Date: Tue, 10 Sep 2024 15:32:43 +0300
Subject: [PATCH 191/816] New Adapter: Oraki (#5403)
---
dev-docs/bidders/oraki.md | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 dev-docs/bidders/oraki.md
diff --git a/dev-docs/bidders/oraki.md b/dev-docs/bidders/oraki.md
new file mode 100644
index 0000000000..93aff844ac
--- /dev/null
+++ b/dev-docs/bidders/oraki.md
@@ -0,0 +1,35 @@
+---
+layout: bidder
+title: Oraki
+description: Prebid Oraki Bidder Adapter
+biddercode: oraki
+gpp_sids: usstate_all
+tcfeu_supported: false
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+deals_supported: false
+floors_supported: true
+fpd_supported: false
+ortb_blocking_supported: false
+media_types: banner, video, native
+multiformat_supported: will-bid-on-one
+userIds: all
+pbjs: true
+pbs: true
+pbs_app_supported: true
+safeframes_ok: true
+sidebarType: 1
+---
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|--------------|---------------------------------|------------|
+| `placementId` | optional | Placement Id | `'0'` | `'string'` |
+| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` |
+
+### Note
+
+For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId
From 78bfc69102fc9ca9d67fc4e5c9ce63afe90d65d3 Mon Sep 17 00:00:00 2001
From: danijel-ristic <168181386+danijel-ristic@users.noreply.github.com>
Date: Thu, 12 Sep 2024 11:29:34 +0200
Subject: [PATCH 192/816] Target video module download docs (#5581)
* Add tv module to download page
* Fix
---------
Co-authored-by: Muki Seiler
---
dev-docs/modules/targetVideo_video.md | 30 +++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 dev-docs/modules/targetVideo_video.md
diff --git a/dev-docs/modules/targetVideo_video.md b/dev-docs/modules/targetVideo_video.md
new file mode 100644
index 0000000000..013e73c4c8
--- /dev/null
+++ b/dev-docs/modules/targetVideo_video.md
@@ -0,0 +1,30 @@
+---
+layout: page_v2
+page_type: module
+title: Module - TargetVideo Video
+description: Required for serving instream video through TargetVideo.
+module_code : targetVideoAdServerVideo
+display_name : TargetVideo Video Support
+enable_download : true
+vendor_specific: true
+sidebarType : 1
+---
+
+
+
+# TargetVideo Video
+
+{:.no_toc}
+
+This module is required to use the Prebid Instream video examples with TargetVideo. For instructions showing how to add this module to Prebid.js, see below.
+
+## Step 1: Prepare the base Prebid file as usual
+
+The standard options:
+
+- Build from a locally-cloned git repo
+- Receive the email package from the Prebid [Download](/download.html) page
+
+## Step 2: Integrate into your prebid.js configuration
+
+The method exposes the [`pbjs.adServers.targetVideo.buildVideoUrl`]({{site.baseurl}}/dev-docs/publisher-api-reference/adServers.targetVideo.buildVideoUrl.html) method to use.
From cf0f92b4141ca29a9e7cd7c376ae67e815b2ac39 Mon Sep 17 00:00:00 2001
From: Muki Seiler
Date: Thu, 12 Sep 2024 22:34:41 +0200
Subject: [PATCH 193/816] Add tcf configuration information to utiq (#5557)
* Add tcf configuration information to utiq
* wording updates
We changed the name of the "GDPR Enforcement" module a while back
---------
Co-authored-by: bretg
---
dev-docs/modules/userid-submodules/utiq.md | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/dev-docs/modules/userid-submodules/utiq.md b/dev-docs/modules/userid-submodules/utiq.md
index 270f93b30b..116f4eaa66 100644
--- a/dev-docs/modules/userid-submodules/utiq.md
+++ b/dev-docs/modules/userid-submodules/utiq.md
@@ -30,6 +30,30 @@ pbjs.setConfig({
})
```
+You can find more information at [docs.utiq.com/docs/programmatic-integration](https://docs.utiq.com/docs/programmatic-integration)
+
+### TCF Activity Integration
+
+If you use the Prebid.js [TCF Control Module](/dev-docs/modules/tcfControl.html), which prevents access to local storage for non consented vendors, you may need to add a vendor exception for the Utiq user id module to work, as Utiq is not a TCF vendor and will be automatically blocked by Prebid when TCF Control is enabled. Utiq performs its own consent check, outside TCF, to ensure that there is no device storage access in the absence of consent.
+
+To do that, you can use below configuration:
+
+```javascript
+pbjs.setConfig({
+ consentManagement: {
+ gdpr: {
+ cmpApi: 'iab',
+ rules: [{ // these are the default values
+ purpose: "storage",
+ enforcePurpose: true, // block localStorage based on purpose 1 of TCF
+ enforceVendor: true, // block localStorage for non consented / non TCF vendors
+ vendorExceptions: ["utiqId"] // configuration line to add to make utiq exception
+ }]
+ }
+ }
+});
+```
+
## Utiq ID onboarding
If you wish to find out more about Utiq, please contact
From 75a9b918242418cababc5ab313299069aea66aa9 Mon Sep 17 00:00:00 2001
From: mp4symitri
Date: Fri, 13 Sep 2024 02:30:10 +0530
Subject: [PATCH 194/816] symitriDapRtdProvider: describe changes required to
support different types of user identifiers and trigger pixel on winning bid.
(#5590)
* Document updates to describe changes required to support different types of user identifiers and trigger pixel on winning bid.
* Fixed tabular format issues
* Formatting Issues fixed
---------
Co-authored-by: Manan
Co-authored-by: Jeff Palladino <1226357+jpalladino84@users.noreply.github.com>
---
dev-docs/modules/symitriDapRtdProvider.md | 25 +++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/dev-docs/modules/symitriDapRtdProvider.md b/dev-docs/modules/symitriDapRtdProvider.md
index f44c83f9df..34f5207887 100644
--- a/dev-docs/modules/symitriDapRtdProvider.md
+++ b/dev-docs/modules/symitriDapRtdProvider.md
@@ -45,11 +45,12 @@ pbjs.setConfig({
apiVersion: "x1",
apiAuthToken: '',
domain: 'your-domain.com',
- identityType: 'hid'| ... | 'dap-signature:1.0.0',
- identityValue: '',
+ identityType: 'simpleid'|'compositeid'|'hashedid'|'dap-signature:1.0.0',
+ identityValue: '',
segtax: 501,
dapEntropyUrl: 'https://sym-dist.symitri.net/dapentropy.js',
- dapEntropyTimeout: 1500
+ dapEntropyTimeout: 1500,
+ pixelUrl: '',
}
}
]
@@ -70,11 +71,27 @@ Please reach out to your Symitri account representative() to
| apiVersion | String | This holds the API version | It should be "x1" always |
| apiAuthToken | String | Symitri API AuthToken | Please reach out to your Symitri account representative() for this value |
| domain | String | The domain name of your webpage | |
-| identityType | String | Something like this 'hid', ... 'dap-signature:1.0.0' | |
+| identityType | String | 'simpleid' or 'compositeid' or 'hashedid' or 'dap-signature:1.0.0' | See the section below labelled "identityType" for more details. |
| identityValue | String | This is optional field to pass user hid. Will be used only if identityType is hid | |
| segtax | Integer | The taxonomy for Symitri | The value should be 501 |
| dapEntropyUrl | String | URL to dap entropy script | Optional if the script is directly included on the webpage. Contact your Symitri account rep for more details |
| dapEntropyTimeout | Integer | Maximum time allotted for the entropy calculation to happen | |
+| pixelUrl | String | Pixel URL provided by Symitri which will be triggered when bid matching with Symitri dealid wins and creative gets rendered | |
+
+### identityType
+Use 'simpleid' to pass email or other plain text ids and SymitriRTD Module will hash it.
+
+Use 'hashedid' to pass in single already hashed id.
+
+Use 'compositeid' to pass in multiple identifiers as key-value pairs as shown below:
+
+```bash
+{
+ "identityType1": "identityValue1",
+ "identityType2": "identityValue2",
+ ...
+}
+```
### Testing
From 622ec2a286d9c1c91908f3cd81db41a7997fb04e Mon Sep 17 00:00:00 2001
From: Copper6SSP
Date: Fri, 13 Sep 2024 00:04:39 +0300
Subject: [PATCH 195/816] Copper6ssp: add pbs (#5592)
* release adapter Copper6SSP
* fix checks
* fix doc
---
dev-docs/bidders/copper6ssp.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-docs/bidders/copper6ssp.md b/dev-docs/bidders/copper6ssp.md
index d9cb4b2f49..a11dc64104 100644
--- a/dev-docs/bidders/copper6ssp.md
+++ b/dev-docs/bidders/copper6ssp.md
@@ -16,7 +16,7 @@ media_types: banner, video, native
multiformat_supported: will-bid-on-one
userIds: all
pbjs: true
-pbs: false
+pbs: true
pbs_app_supported: true
safeframes_ok: true
sidebarType: 1
From 3f44a09e129ea0bda5c7ba973493d958e4cc1d1f Mon Sep 17 00:00:00 2001
From: bretg
Date: Fri, 13 Sep 2024 06:25:01 -0400
Subject: [PATCH 196/816] added ctv page (#5589)
* added ctv page
* linking to CTV
* removing comment test
* Add ctv icon as svg
* Use correct icon and remove size constraints
* Implement hover effect
---------
Co-authored-by: Muki Seiler
---
_data/sidebar.yml | 8 +++++++
_includes/icon__format--ctv.svg | 1 +
_layouts/home.html | 6 +++++
_sass/components/_card.scss | 7 ++++++
assets/images/homepage/amp_blue.png | Bin 0 -> 7934 bytes
assets/images/homepage/amp_grey.png | Bin 0 -> 7826 bytes
assets/images/homepage/amp_orange.png | Bin 0 -> 7420 bytes
assets/images/homepage/audio_blue.png | Bin 0 -> 7946 bytes
assets/images/homepage/audio_grey.png | Bin 0 -> 7575 bytes
assets/images/homepage/audio_orange.png | Bin 0 -> 7426 bytes
assets/images/homepage/ctv_blue.png | Bin 0 -> 8811 bytes
assets/images/homepage/ctv_grey.png | Bin 0 -> 8417 bytes
assets/images/homepage/ctv_orange.png | Bin 0 -> 8371 bytes
assets/images/homepage/display_blue.png | Bin 0 -> 15816 bytes
assets/images/homepage/display_grey.png | Bin 0 -> 15033 bytes
assets/images/homepage/display_oramge.png | Bin 0 -> 14888 bytes
assets/images/homepage/docs_blue.png | Bin 0 -> 11861 bytes
assets/images/homepage/docs_grey.png | Bin 0 -> 11339 bytes
assets/images/homepage/docs_orange.png | Bin 0 -> 11114 bytes
assets/images/homepage/dooh_blue.png | Bin 0 -> 9406 bytes
assets/images/homepage/dooh_grey.png | Bin 0 -> 8641 bytes
assets/images/homepage/dooh_orange.png | Bin 0 -> 9027 bytes
assets/images/homepage/id_blue.png | Bin 0 -> 14121 bytes
assets/images/homepage/id_grey.png | Bin 0 -> 13294 bytes
assets/images/homepage/id_orange.png | Bin 0 -> 13159 bytes
assets/images/homepage/mobile_blue.png | Bin 0 -> 12542 bytes
assets/images/homepage/mobile_grey.png | Bin 0 -> 12270 bytes
assets/images/homepage/mobile_orange.png | Bin 0 -> 11906 bytes
assets/images/homepage/multi_blue.png | Bin 0 -> 4109 bytes
assets/images/homepage/multi_grey.png | Bin 0 -> 4141 bytes
assets/images/homepage/multi_orange.png | Bin 0 -> 4108 bytes
assets/images/homepage/native_blue.png | Bin 0 -> 10609 bytes
assets/images/homepage/native_grey.png | Bin 0 -> 10064 bytes
assets/images/homepage/native_orange.png | Bin 0 -> 9937 bytes
assets/images/homepage/pbjs_blue.png | Bin 0 -> 11047 bytes
assets/images/homepage/pbjs_grey.png | Bin 0 -> 10325 bytes
assets/images/homepage/pbjs_orange.png | Bin 0 -> 10272 bytes
assets/images/homepage/server_blue.png | Bin 0 -> 17431 bytes
assets/images/homepage/server_grey.png | Bin 0 -> 16229 bytes
assets/images/homepage/server_orange.png | Bin 0 -> 16220 bytes
assets/images/homepage/video_blue.png | Bin 0 -> 12157 bytes
assets/images/homepage/video_grey.png | Bin 0 -> 11454 bytes
assets/images/homepage/video_orange.png | Bin 0 -> 11493 bytes
formats/ctv.md | 26 ++++++++++++++++++++++
formats/video.md | 5 +----
45 files changed, 49 insertions(+), 4 deletions(-)
create mode 100644 _includes/icon__format--ctv.svg
create mode 100644 assets/images/homepage/amp_blue.png
create mode 100644 assets/images/homepage/amp_grey.png
create mode 100644 assets/images/homepage/amp_orange.png
create mode 100644 assets/images/homepage/audio_blue.png
create mode 100644 assets/images/homepage/audio_grey.png
create mode 100644 assets/images/homepage/audio_orange.png
create mode 100644 assets/images/homepage/ctv_blue.png
create mode 100644 assets/images/homepage/ctv_grey.png
create mode 100644 assets/images/homepage/ctv_orange.png
create mode 100644 assets/images/homepage/display_blue.png
create mode 100644 assets/images/homepage/display_grey.png
create mode 100644 assets/images/homepage/display_oramge.png
create mode 100644 assets/images/homepage/docs_blue.png
create mode 100644 assets/images/homepage/docs_grey.png
create mode 100644 assets/images/homepage/docs_orange.png
create mode 100644 assets/images/homepage/dooh_blue.png
create mode 100644 assets/images/homepage/dooh_grey.png
create mode 100644 assets/images/homepage/dooh_orange.png
create mode 100644 assets/images/homepage/id_blue.png
create mode 100644 assets/images/homepage/id_grey.png
create mode 100644 assets/images/homepage/id_orange.png
create mode 100644 assets/images/homepage/mobile_blue.png
create mode 100644 assets/images/homepage/mobile_grey.png
create mode 100644 assets/images/homepage/mobile_orange.png
create mode 100644 assets/images/homepage/multi_blue.png
create mode 100644 assets/images/homepage/multi_grey.png
create mode 100644 assets/images/homepage/multi_orange.png
create mode 100644 assets/images/homepage/native_blue.png
create mode 100644 assets/images/homepage/native_grey.png
create mode 100644 assets/images/homepage/native_orange.png
create mode 100644 assets/images/homepage/pbjs_blue.png
create mode 100644 assets/images/homepage/pbjs_grey.png
create mode 100644 assets/images/homepage/pbjs_orange.png
create mode 100644 assets/images/homepage/server_blue.png
create mode 100644 assets/images/homepage/server_grey.png
create mode 100644 assets/images/homepage/server_orange.png
create mode 100644 assets/images/homepage/video_blue.png
create mode 100644 assets/images/homepage/video_grey.png
create mode 100644 assets/images/homepage/video_orange.png
create mode 100644 formats/ctv.md
diff --git a/_data/sidebar.yml b/_data/sidebar.yml
index 3cebde6074..558c9d7ff8 100644
--- a/_data/sidebar.yml
+++ b/_data/sidebar.yml
@@ -1714,6 +1714,14 @@
sectionTitle:
subgroup: 0
+- sbSecId: 6
+ title: Connected TV
+ link: /formats/ctv.html
+ isHeader: 0
+ isSectionHeader: 0
+ sectionTitle:
+ subgroup: 0
+
- sbSecId: 6
title: Native
link: /prebid/native-implementation.html
diff --git a/_includes/icon__format--ctv.svg b/_includes/icon__format--ctv.svg
new file mode 100644
index 0000000000..9c018e0d38
--- /dev/null
+++ b/_includes/icon__format--ctv.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_layouts/home.html b/_layouts/home.html
index 19af7069e8..e9df870893 100644
--- a/_layouts/home.html
+++ b/_layouts/home.html
@@ -71,6 +71,12 @@