diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index f18a02c5d7..1b3d6e8735 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,5 +1,11 @@
+
{
"image": "mcr.microsoft.com/devcontainers/jekyll:2",
+ "features": {
+ "ghcr.io/devcontainers/features/ruby:1": {
+ "version": "2.7.6"
+ }
+ },
"customizations": {
"vscode": {
"extensions": [
@@ -8,4 +14,5 @@
]
}
}
-}
\ No newline at end of file
+}
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4b63e8ff72..638f187465 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -15,15 +15,15 @@ jobs:
name: run markdownlint
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
- - uses: tj-actions/changed-files@v46
+ - uses: tj-actions/changed-files@v47
id: changed-files
with:
files: '**/*.md'
separator: ","
- - uses: DavidAnson/markdownlint-cli2-action@v16
+ - uses: DavidAnson/markdownlint-cli2-action@v23
if: steps.changed-files.outputs.any_changed == 'true'
with:
globs: "${{ steps.changed-files.outputs.all_changed_files }},!_includes"
diff --git a/.gitignore b/.gitignore
index 3c50b583af..2d9ea0d194 100755
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,5 @@ node_modules/
/.vs/prebid.github.io/v17/.suo
/.vs/slnx.sqlite
/.vs
+.devcontainer/devcontainer.json
+.devcontainer/devcontainer-lock.json
diff --git a/.markdownlint.json b/.markdownlint.json
index ef360a2bf6..aa59f5565a 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -6,5 +6,6 @@
"MD024": false,
"MD025": false,
"MD033": false,
- "MD036": false
-}
+ "MD036": false,
+ "MD058": false
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 744af1333d..3861f54a98 100755
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ The markdown files are linted via [markdownlint-cli](https://github.com/igorshub
You may need to configure the disabled rules specified in [.markdownlint.json](.markdownlint.json) directly in your project settings. You can invoke linting in CLI via
```bash
-markdownlint --config .markdownlint.json --ignore-path .markdownlintignore "**/*.md"
+markdownlint --config .markdownlint.json "**/*.md"
```
diff --git a/_data/sidebar.yml b/_data/sidebar.yml
index 4b5d6df225..2aa172f834 100644
--- a/_data/sidebar.yml
+++ b/_data/sidebar.yml
@@ -267,7 +267,7 @@
- sbSecId: 1
title: Using Prebid.js with Microsoft Monetize Ad Server
- link: /dev-docs/examples/use-prebid-with-appnexus-ad-server.html
+ link: /dev-docs/examples/use-prebid-with-microsoft-ad-server.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
@@ -912,6 +912,22 @@
sectionTitle:
subgroup: 3
+- sbSecId: 2
+ title: Google Next-Gen SDK Bidding-Only Integration
+ link: /prebid-mobile/pbm-api/android/android-sdk-integration-nextgen-original-api.html
+ isHeader: 0
+ isSectionHeader: 0
+ sectionTitle:
+ subgroup: 3
+
+- sbSecId: 2
+ title: Google Next-Gen SDK Prebid-Rendered Integration
+ link: /prebid-mobile/modules/rendering/android-sdk-integration-nextgen.html
+ isHeader: 0
+ isSectionHeader: 0
+ sectionTitle:
+ subgroup: 3
+
- sbSecId: 2
title: AdMob
link: /prebid-mobile/modules/rendering/android-sdk-integration-admob.html
@@ -1214,7 +1230,7 @@
- sbSecId: 3
title: 'Setting up Prebid'
- link: /adops/setting-up-prebid-with-the-appnexus-ad-server.html
+ link: /adops/setting-up-prebid-with-the-microsoft-ad-server.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
diff --git a/_includes/loadScript.html b/_includes/loadScript.html
new file mode 100644
index 0000000000..fac994fb38
--- /dev/null
+++ b/_includes/loadScript.html
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/_includes/mobile/intro-nextgen-bidding-only.md b/_includes/mobile/intro-nextgen-bidding-only.md
new file mode 100644
index 0000000000..6d1476f440
--- /dev/null
+++ b/_includes/mobile/intro-nextgen-bidding-only.md
@@ -0,0 +1,115 @@
+## Overview
+
+This how-to guide covers the original approach for integrating the Prebid SDK into your app with the Google Next-Gen Mobile Ads SDK. It utilizes:
+
+- **Prebid SDK** and **Prebid server** to handle the bidding and auction process.
+- **GAM** and the **Google Next-Gen Mobile Ads SDK** manage the ad inventory and select the winning ad to display.
+- **Prebid Universal Creative** renders display ads when a Prebid bid wins.
+- **Next-Gen SDK** renders banner and non-instream ads when a Prebid bid wins.
+
+If you do not have the Next-Gen Mobile Ads SDK in the app, refer to the [Google Integration Documentation](https://developers.google.com/admob/{{include.platform}}/next-gen/quick-start).
+
+### Alternative Approaches
+
+Another way to integrate Next-Gen SDK into your app is with the [Prebid-Rendered Integration](/prebid-mobile/modules/rendering/{{include.platform}}-sdk-integration-nextgen.html).
+
+Tradeoffs between these integration approaches:
+
+{: .table .table-bordered .table-striped }
+| Aspect | Bidding-Only Integration | Prebid-Rendered Integration |
+| --- |:---:|:---:|
+| App code has direct access to bids | | |
+| Support for MRAID 3.0 | | |
+| Support for SKAdnetwork | | |
+| Loads data from Prebid Cache | | |
+| Triggers billing and Notice URLs | | |
+| Supports Third Party Rendering libraries | | |
+
+**Notes:**
+
+- On one hand, using Prebid Cache reduces the amount of data that must be sent to the mobile device -- the body of the creative does not need to be transmitted for bids. On the other hand, though, when a bid wins in the ad server, the body of the creative must be retrieved from the cache.
+- It is possible to mix-and-match implementations within an app. e.g. you could implement instream video with the Bidding-Only approach and other adunits with Prebid-Rendered.
+
+### Prerequisites
+
+The Next-Gen SDK Bidding-Only Integration method assumes that you have the following components:
+
+- **Google Ad Manager Account** - A GAM account allows you to manage and serve ads within your mobile app. Within this account you'll need to configure your inventory and create orders for serving ads within your app. This involves defining ad units (spaces within your app where ads will be displayed) and setting up orders and line items to deliver ads to those units. See [Prebid's AdOps Guide](/adops/before-you-start.html) for more information.
+- **Google Next-Gen Mobile Ads SDK** - This refers to the software development kit provided by Google. You need to ensure that you have the latest version of the Next-Gen Mobile Ads SDK supported by Prebid SDK. This SDK integration is necessary to communicate with the ad server and display ads in your app.
+- **Prebid SDK** - You will need the latest version of the Prebid Mobile SDK for either [Android](/prebid-mobile/pbm-api/android/code-integration-android.html) or [iOS](/prebid-mobile/pbm-api/ios/code-integration-ios.html).
+- **Prebid Universal Creative** - This needs to be hosted on a CDN and loaded from the creative in GAM as detailed in the [AdOps GAM creative reference](/adops/gam-creative-banner-sbs.html#prebid-universal-creative).
+- **Prebid Server** - You will need a cluster of servers running [Prebid Server](/prebid-server/use-cases/pbs-sdk.html). You can set up your own Prebid Server or work with a [Prebid Server managed service](https://prebid.org/managed-services/). Prebid Server provides you with the following:
+ - Configuration storage - rather than hardcoding all the details of your current business arrangements in the app, Prebid Server stores which bidders you're currently working with, their inventory details, and other settings that can be changed without updating your app.
+ - Server-side auction - the server will make the connections to multiple auction bidding partners so the app doesn't have to.
+ - Creative caching - Prebid Cache stores the creatives until the app needs to render them, reducing the auction response bandwidth.
+ - Privacy regulation tools - the server can help your legal team meet different regulatory needs in different jurisdictions by configuring various protocols and anonyimization activities.
+
+## How it Works
+
+Here's how the ad bidding-auction-rendering process works in this integration scenario.
+
+
+
+1. Prebid SDK calls Prebid Server which supplies one or more bids.
+1. PBSDK adds targeting values to Next-Gen SDK.
+1. Next-Gen SDK calls GAM, which makes the ad decision.
+1. If a 3rd party HTML creative is chosen (banner or interstitial):
+ 1. Next-Gen SDK writes the HTML to a webview, loading the Prebid Universal Creative (PUC).
+ 1. The PUC loads the winning creative from Prebid Cache.
+ 1. The PUC writes this creative into an iframe and hits all the tracking strings: Prebid win URL, billing url (burl), and notice url (nurl).
+ 1. If MRAID is available, it is used to consider the view state before hitting the burl.
+1. If a video VastUrl creative is chosen:
+ 1. The Next-Gen SDK uses the platform video player which loads the VAST from Prebid Cache.
+ 1. It then starts playing the VAST, hitting the embedded Impression tags when appropriate.
+1. If an In-App Native format is chosen:
+ 1. Next-Gen SDK delegates the rendering of native to the App and PBSDK when a special signal is specified.
+ 1. The app code gets the native assets from PBSDK. The app is coded to render the ad.
+ 1. PBSDK fires the eventtrackers when appropriate.
+ 1. The PBS win event is fired.
+1. The Next-Gen SDK handles Open Measurement SDK interactions.
+
+## Major Integration Steps
+
+Assuming your app already has AdUnits integrated with the Next-Gen Mobile Ads SDK, the technical implementation of Prebid mobile into your app will involve these major steps:
+
+1. [Initialize the Prebid SDK](/prebid-mobile/pbm-api/{{include.platform}}/code-integration-{{include.platform}}.html) - create a connection to your Prebid Server.
+2. [Set Global Parameters](/prebid-mobile/pbm-api/{{include.platform}}/pbm-targeting-{{include.platform}}.html) - let bidders know important data about the page, privacy consent, and other settings.
+3. Work with your Prebid Server team to create the adunit configIds that will be used in the app.
+4. Set up GAM orders, line items, and creatives. See [AdOps guidance](#ad-operations-guidance)
+5. Link Prebid AdUnit code to your Next-Gen SDK AdUnits - for any adunits that your business team wants to connect to Prebid with the configIds generated in Step 3. See the [adunit-specific instructions](#adunit-specific-instructions) below.
+
+## Ad Operations Guidance
+
+The Ad Operations team will need to create line items in GAM. The creatives used depend on which media formats your adunits utilize.
+
+{: .table .table-bordered .table-striped }
+| AdUnit Format | Line Item Targeting | Creative Type | Prebid Cache? | Ad Ops Details |
+| --- | --- | --- | --- | --- |
+| HTML banner, interstitial banner | hb_pb hb_format=banner | 3rd party HTML that loads the [PUC](/overview/prebid-universal-creative.html) | yes | [link](/adops/gam-creative-banner-sbs.html) |
+| Video (instream, non-instream, interstitial) | hb_pb hb_format=video inventoryType in (instream, mobile app) | VastUrl pointing to Prebid Cache | yes | [link](/adops/setting-up-prebid-video-in-dfp.html) |
+| Rewarded Video | hb_pb hb_format=video inventoryType in (instream, mobile app) rewarded adunits | VastUrl pointing to Prebid Cache | yes | [link](/adops/setting-up-prebid-video-in-dfp.html) |
+| In-app native | hb_pb hb_format=native | GAM native | no | [link](/adops/gam-native.html#create-a-new-native-creative) |
+| In-Webview native | hb_pb hb_format=native | 3rd party HTML that loads the native-trk script. | yes | [link](/adops/gam-native.html) |
+
+Notes:
+
+- You may need up to 4 sets of line items to support Prebid Mobile depending on adunit types. If you also run Prebid.js or AMP, please see [line item considerations](/adops/line-item-creation.html) for more information.
+- Discuss the Prebid Cache column with the Prebid Server team. They can set up the "top-level stored request" for your account to cache or not cache requests as needed.
+
+### Rendering and Tracking
+
+This information may be useful when comparing data across various reporting systems:
+
+{: .table .table-bordered .table-striped }
+| Scenario | PUC | VastUrl Creative | GAM Native Creative |
+| --- | --- | --- | --- |
+| Rendering Method | PUC in iframe | Next-Gen SDK player | App code with data from PBSDK |
+| Fires Prebid win event | always | never | always |
+| Fires Prebid imp event | never | VAST impression tag | never |
+| Fires OpenRTB burl | when in view | n/a | never (1) |
+| Fires OpenRTB nurl | always | n/a | always |
+| Fires OpenMeasurement events | Next-Gen SDK | n/a | PB SDK |
+
+Notes:
+
+1. OpenRTB burl and nurl will be utilized in a future release.
diff --git a/_includes/mobile/intro-nextgen-prebid-rendered.md b/_includes/mobile/intro-nextgen-prebid-rendered.md
new file mode 100644
index 0000000000..e6e51190d7
--- /dev/null
+++ b/_includes/mobile/intro-nextgen-prebid-rendered.md
@@ -0,0 +1,125 @@
+## Overview
+
+This how-to guide covers the 'Prebid-Rendered' approach for integrating the Prebid SDK into your app with the Google Next-Gen Mobile Ads SDK. It utilizes:
+
+- **Prebid SDK** and **Prebid server** to handle the bidding and auction process.
+- **GAM** and the **Google Next-Gen Mobile Ads SDK** manage the ad inventory and select the winning ad to display.
+- **Prebid SDK** renders display ads when a Prebid bid wins.
+- **Next-Gen SDK** renders ads when a Prebid bid wins.
+
+If you do not have the Next-Gen Mobile Ads SDK in the app yet, refer to the [Google Integration Documentation](https://developers.google.com/admob/{{include.platform}}/next-gen/quick-start).
+
+### Alternative Approaches
+
+Another way to integrate Next-Gen SDK into your app is with the [Next-Gen SDK Bidding-Only integration](/prebid-mobile/pbm-api/{{include.platform}}/{{include.platform}}-sdk-integration-nextgen-original-api.html).
+
+Tradeoffs between these integration approaches:
+
+{: .table .table-bordered .table-striped }
+| Aspect | Bidding-Only Integration | Prebid-Rendered Integration |
+| --- |:---:|:---:|
+| App code has direct access to bids | | |
+| Support for MRAID 3.0 | | |
+| Support for SKAdnetwork | | |
+| Loads data from Prebid Cache | | |
+| Triggers billing and Notice URLs | | |
+| Supports Third Party Rendering libraries | | |
+
+**Notes:**
+
+- On one hand, using Prebid Cache reduces the amount of data that must be sent to the mobile device -- the body of the creative does not need to be transmitted for bids. On the other hand, though, when a bid wins in the ad server, the body of the creative must be retrieved from the cache.
+- It is possible to mix-and-match implementations within an app. e.g. you could implement instream video with the Bidding-Only approach and other adunits with Prebid-Rendered.
+
+### Prerequisites
+
+The Next-Gen SDK Prebid-Rendered Integration method assumes that you have the following components:
+
+- **Google Ad Manager Account** - A GAM account allows you to manage and serve ads within your mobile app. Within this account you'll need to configure your inventory and create orders for serving ads within your app. This involves defining ad units (spaces within your app where ads will be displayed) and setting up orders and line items to deliver ads to those units. See [Prebid's AdOps Guide](/adops/before-you-start.html) for more information.
+- **Google Next-Gen Mobile Ads SDK** - This refers to the software development kit provided by Google. You need to ensure that you have the latest version of the Next-Gen Mobile Ads SDK supported by Prebid SDK. This SDK integration is necessary to communicate with the ad server and display ads in your app.
+- **Prebid SDK** - You will need the latest version of the Prebid Mobile SDK for either [Android](/prebid-mobile/pbm-api/android/code-integration-android.html) or [iOS](/prebid-mobile/pbm-api/ios/code-integration-ios.html).
+- **Prebid Server** - You will need a cluster of servers running [Prebid Server](/prebid-server/use-cases/pbs-sdk.html). You can set up your own Prebid Server or work with a [Prebid Server managed service](https://prebid.org/managed-services/). Prebid Server provides you with the following:
+ - Configuration storage - rather than hardcoding all the details of your current business arrangements in the app, Prebid Server stores which bidders you're currently working with, their inventory details, and other settings that can be changed without updating your app.
+ - Server-side auction - the server will make the connections to multiple auction bidding partners so the app doesn't have to.
+ - Privacy regulation tools - the server can help your legal team meet different regulatory needs in different jurisdictions by configuring various protocols and anonyimization activities.
+
+## How it Works
+
+Here's how the ad bidding-auction-rendering process works in this integration scenario.
+
+
+
+1. Prebid SDK calls Prebid Server which supplies one or more bids.
+1. PBSDK adds targeting values to Next-Gen SDK.
+1. Next-Gen SDK calls GAM, which makes the ad decision.
+1. If a 3rd party HTML creative is chosen (banner, native, interstitial, non-instream video):
+ 1. Next-Gen SDK writes HTML to a webview, loading google_mobile_app_ads.js.
+ 1. This script triggers a "PrebidAppEvent".
+ 1. Which in turn triggers PBSDK to handle the rendering of the creative:
+ 1. PBSDK fires the Prebid Server win event.
+ 1. If a 3rd party rendering SDK is in use, PBSDK calls it for rendering.
+ 1. Otherwise, it writes the creative into an iframe into an internal WebView, replaceing the Next-Gen SDK's WebView.
+ 1. Injects mraid.js into the webview to listen for events from MRAID: change size, etc.
+ 1. Sends data to the creative (e.g. 'viewable') which may trigger impression tracking within the creative.
+ 1. Starting from v3.0.0, the SDK hits the billing and notice urls (burl and nurl).
+1. If a video VastUrl creative is chosen (rewarded video only):
+ 1. The Next-Gen SDK uses the platform video player which loads the special VAST file from the Prebid CDN.
+ 1. Prebid SDK watches VAST events for "PrebidAppEvent". When it sees this, it takes over the rendering:
+ 1. PBSDK fires the PBS win event. Starting from v3.0.0, the SDK also hits the billing and notice urls (burl and nurl).
+ 1. If the response indicates a 3rd party rendering SDK, PBSDK will call it.
+ 1. Otherwise:
+ 1. PDBSK renders with the platform-standard VAST player.
+ 1. It uses the VAST from the bid response, not from Prebid Cache.
+ 1. The player fires any Impression tags in the VAST.
+ 1. PBSDK handles MRAID events.
+ 1. The app is called to handle the reward.
+1. If an In-App Native format is chosen:
+ 1. The Next-Gen SDK delegates the rendering of native to the App and PBSDK when a special signal is specified.
+ 1. The app code gets the native assets from PBSDK. The app is coded to render the ad.
+ 1. PBSDK fires the eventtrackers when appropriate.
+ 1. The PBS win event is fired. Starting from v3.0.0, the SDK also hits the billing and notice urls (burl and nurl).
+1. Open Measurement events are handled directly by the Prebid SDK.
+ 1. If a 3rd party rendering SDK is used to render, then it will handle Open Measurement.
+
+## Major Integration Steps
+
+Assuming your app already has AdUnits integrated with the Next-Gen Mobile Ads SDK, the technical implementation of Prebid mobile into your app will involve these major steps:
+
+1. [Initialize the Prebid SDK](/prebid-mobile/pbm-api/{{include.platform}}/code-integration-{{include.platform}}.html) - create a connection to your Prebid Server.
+2. [Set Global Parameters](/prebid-mobile/pbm-api/{{include.platform}}/pbm-targeting-{{include.platform}}.html) - let bidders know important data about the page, privacy consent, and other settings.
+3. Work with your Prebid Server team to create the adunit configIds that will be used in the app.
+4. Set up GAM orders, line items, and creatives. See [AdOps guidance](#ad-operations-guidance)
+5. Link Prebid AdUnit code to your Next-Gen SDK AdUnits - for any adunits that your business team wants to connect to Prebid with the configIds generated in Step 3. See the [adunit-specific instructions](#adunit-specific-instructions) below.
+
+## Ad Operations Guidance
+
+The AdOps team will need to create line items in GAM. The creatives used depend on which media formats your adunits utilize:
+
+{: .table .table-bordered .table-striped }
+| AdUnit Format | Line Item Targeting | Creative Type | Prebid Cache? | Ad Ops Details |
+| --- | --- | --- | --- | --- |
+| HTML banner, interstitial banner or video, non-instream video | hb_pb hb_format=banner | 3rd party HTML that loads google_mobile_app_ads.js | no | [link](/adops/mobile-rendering-gam-line-item-setup.html#third-party-html) |
+| Rewarded Video | hb_pb hb_format=video inventoryType in (instream, mobile app) rewarded adunits | VastUrl pointing to prebid-mobile-rewarded-vast.xml | no | [link](/adops/mobile-rendering-gam-line-item-setup.html#rewarded-video) |
+| In-app native | hb_pb hb_format=native | GAM native | no | [link](/adops/gam-native.html#create-a-new-native-creative) |
+
+Notes:
+
+- You may need up to 4 sets of line items to support Prebid Mobile depending on adunit types. If you also run Prebid.js or AMP, please see [line item considerations](/adops/line-item-creation.html) for more information.
+- Discuss the Prebid Cache column with the Prebid Server team. They can set up the "top-level stored request" for your account to cache or not cache requests as needed.
+
+### Rendering and Tracking
+
+This information may be useful when comparing data across various reporting systems:
+
+{: .table .table-bordered .table-striped }
+| Scenario | 3pHTML Creative | VastUrl Creative | GAM Native Creative |
+| --- | --- | --- | --- |
+| Rendering Method | js in iframe fires an event | Next-Gen SDK player | App code with data from PBSDK |
+| Fires Prebid win event | always | never | always |
+| Fires Prebid imp event | always | VAST impression tag | never |
+| Fires OpenRTB burl | always (1) | n/a | never |
+| Fires OpenRTB nurl | always (1) | n/a | never |
+| Fires OpenMeasurement events | PBSDK | n/a | PBSDK |
+
+Notes:
+
+1. OpenRTB `burl` and `nurl` are utilized in a PrebidMobile SDK v3.0.0.
diff --git a/_includes/send-all-bids-keyword-targeting.md b/_includes/send-all-bids-keyword-targeting.md
index 2ba6d4d662..59c392dd81 100644
--- a/_includes/send-all-bids-keyword-targeting.md
+++ b/_includes/send-all-bids-keyword-targeting.md
@@ -4,8 +4,8 @@
{: .table .table-bordered .table-striped }
-| Default Key | Scope | Description | Example |
-| :---- | :---- | :---- | :---- |
-| `hb_pb_BIDDERCODE` | Required | The price bucket. Used by the line item to target. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_pb_rubicon` = `2.10` |
-| `hb_adid_BIDDERCODE` | Required | The ad Id. Used by the ad server creative to render ad. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_adid_longBidderNa` = `234234` |
-| `hb_size_BIDDERCODE` | Optional | This is not required for adops. Case sensitive and truncated to 20 chars. | `hb_size_appnexus` = `300x250` |
+| Default Key | Scope | Description | Example |
+| :--- | :--- | :--- | :--- |
+| `hb_pb_BIDDERCODE` | Required | The price bucket. Used by the line item to target. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_pb_rubicon` = `2.10` |
+| `hb_adid_BIDDERCODE` | Required | The ad Id. Used by the ad server creative to render ad. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_adid_longBidderNa` = `234234` |
+| `hb_size_BIDDERCODE` | Optional | This is not required for adops. Case sensitive and truncated to 20 chars. | `hb_size_bidderA` = `300x250` |
diff --git a/_includes/video/head.html b/_includes/video/head.html
index 069581a519..046188be11 100644
--- a/_includes/video/head.html
+++ b/_includes/video/head.html
@@ -33,9 +33,9 @@
},
bids: [
{
- bidder: 'appnexusAst',
+ bidder: 'msft',
params: {
- placementId: '13232361', // Add your own placement id here
+ placement_id: '13232361', // Add your own placement id here
video: {
skipppable: true,
playback_method: ['auto_play_sound_off']
@@ -54,7 +54,7 @@
pbjs.requestBids({
bidsBackHandler: function(bids) {
- var videoUrl = pbjs.adServers.dfp.buildVideoUrl({
+ var videoUrl = pbjs.adServers.gam.buildVideoUrl({
adUnit: videoAdUnit,
params: {
iu: '/19968336/prebid_cache_video_adunit',
diff --git a/_includes/video/mock-video-bid.html b/_includes/video/mock-video-bid.html
new file mode 100644
index 0000000000..ec49e19765
--- /dev/null
+++ b/_includes/video/mock-video-bid.html
@@ -0,0 +1,21 @@
+
\ No newline at end of file
diff --git a/_includes/video/pb-is-jw01.html b/_includes/video/pb-is-jw01.html
index a96915d12d..9fd27f788c 100644
--- a/_includes/video/pb-is-jw01.html
+++ b/_includes/video/pb-is-jw01.html
@@ -3,68 +3,66 @@
This adapter is not available in current versions of Prebid.js. R
{% if page.s2s_only == true %}
-
Note:
This is a Prebid Server adapter only.
+
Note:
This is a Prebid Server adapter only.
{% endif %}
-
Features
+
Features
{% include dev-docs/bidder-meta-data.html page=page %}
{{content}}
-
"Send All Bids" Ad Server Keys
+
"Send All Bids" Ad Server Keys
These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters.
diff --git a/_sass/components/_pb.scss b/_sass/components/_pb.scss
index 9033387d5d..e60c411026 100644
--- a/_sass/components/_pb.scss
+++ b/_sass/components/_pb.scss
@@ -24,7 +24,7 @@
}
.pb-content {
- $lt-content-font-size: 19px;
+ $lt-content-font-size: 16px;
padding: 22px 30px;
border: 1px solid $t-divider-color;
diff --git a/adops/ad-server-integration.md b/adops/ad-server-integration.md
index 28afb7b10a..6ffee38d65 100644
--- a/adops/ad-server-integration.md
+++ b/adops/ad-server-integration.md
@@ -49,7 +49,7 @@ We don’t currently have details on specific header bidding support in other ad
For step-by-step instructions on using some of the other ad servers, see the following documentation:
-- [Xandr Monetize Ad Server](/adops/setting-up-prebid-with-the-appnexus-ad-server.html)
+- [Xandr Monetize Ad Server](/adops/setting-up-prebid-with-the-microsoft-ad-server.html)
- [Smart Ad Server](/adops/setting-up-prebidjs-with-Smart-Ad-Server.html)
- [FreeWheel](/adops/setting-up-prebid-video-in-freewheel.html)
diff --git a/adops/adops-general-sbs.md b/adops/adops-general-sbs.md
index 369b71de20..577e3e49df 100644
--- a/adops/adops-general-sbs.md
+++ b/adops/adops-general-sbs.md
@@ -18,7 +18,7 @@ sidebarType: 3
Prebid.org provides step-by-step instructions for manually configuring Prebid in the following ad servers:
* [Google Ad Manager](/adops/step-by-step.html)
-* [Xandr Monetize Ad Server](/adops/setting-up-prebid-with-the-appnexus-ad-server.html)
+* [Xandr Monetize Ad Server](/adops/setting-up-prebid-with-the-microsoft-ad-server.html)
* [Freewheel](/adops/setting-up-prebid-video-in-freewheel.html)
* [Smart Ad Server](/adops/setting-up-prebidjs-with-Smart-Ad-Server.html)
diff --git a/adops/before-you-start.md b/adops/before-you-start.md
index 056e917932..3fa9404251 100644
--- a/adops/before-you-start.md
+++ b/adops/before-you-start.md
@@ -22,7 +22,7 @@ When the ad request arrives at the ad server, the ad server reads the targeting
After you’ve completed your planning, move on to the appropriate setup documentation for your ad server.
- [Google Ad Manager](/adops/step-by-step.html)
-- [Xandr Monetize Ad Server](/adops/setting-up-prebid-with-the-appnexus-ad-server.html)
+- [Xandr Monetize Ad Server](/adops/setting-up-prebid-with-the-microsoft-ad-server.html)
- [Smart Ad Server](/adops/setting-up-prebidjs-with-Smart-Ad-Server.html)
- [FreeWheel](/adops/setting-up-prebid-video-in-freewheel.html)
diff --git a/adops/gam-native.md b/adops/gam-native.md
index e331b85f91..664053de3b 100644
--- a/adops/gam-native.md
+++ b/adops/gam-native.md
@@ -19,9 +19,9 @@ This page walks you through the steps required to set up native ads in GAM for t
- Create a native ad template within the Google Ad Manager (GAM) native design tool.
- Prebid Mobile In-App native
-You don't necessarily need to use GAM's native design tool - if you're using Prebid.js and have chosen to use
-in-adunit or external native templates, then you can just follow the
-instructions for [banner creatives with the PUC](/adops/gam-creative-banner-sbs.html).
+You don't necessarily need to use GAM's native design tool. If you're using Prebid.js and have chosen to use
+in-adunit or external native templates, the recommended ad ops workflow is to use a
+[Prebid.js dynamic creative](/adops/js-dynamic-creative.html) rather than Prebid Universal Creative (PUC).
{: .alert.alert-success :}
For complete instructions on setting up Prebid line items in Google Ad Manager, see [Google Ad Manager with Prebid Step by Step](/adops/step-by-step.html).
@@ -71,8 +71,8 @@ If this creative is served, it will fire impression trackers on load. Clicking t
The creative template HTML will depend on which of the three scenarios you're implementing. You can choose to manage the native template in one of these ways:
- in GAM ([Managing the Native Template in GAM](#managing-the-native-template-in-gam) below)
-- in the Prebid.js AdUnit - this is handled as a 3rd party HTML creative using the Prebid Universal Creative.
-- in a separate JavaScript file - this is handled as a 3rd party HTML creative using the Prebid Universal Creative.
+- in the Prebid.js AdUnit, handled as a third-party HTML creative using the [Prebid.js dynamic creative workflow](#managing-the-native-template-outside-of-gam)
+- in a separate JavaScript file, handled as a third-party HTML creative using the [Prebid.js dynamic creative workflow](#managing-the-native-template-outside-of-gam)
{: .alert.alert-info :}
For engineering instructions, see [Native Implementation Guide](/prebid/native-implementation.html).
@@ -82,6 +82,29 @@ For engineering instructions, see [Native Implementation Guide](/prebid/native-i
3. Add any targeting you want to apply and click **Save and activate** (or **Save** if you're not yet ready to activate your template.)
4. Provide a **Name** for your native style and click **Save**.
+#### Managing the Native Template Outside of GAM
+
+If your native template is defined in the Prebid.js AdUnit or in a separate JavaScript renderer,
+set up the ad server creative with the [Prebid.js dynamic creative](/adops/js-dynamic-creative.html).
+This is the recommended browser workflow for Prebid.js native ads because the creative asks
+Prebid.js to render the winning bid directly instead of loading PUC.
+
+Use this workflow when all of the following are true:
+
+- the line item targets browser inventory where Prebid.js is present on the page;
+- your Prebid.js bundle includes the [nativeRendering](/dev-docs/modules/nativeRendering.html) module;
+- you are using Prebid.js 8.36 or later.
+
+For GAM, create a third-party HTML creative and paste the dynamic creative from the
+[Prebid.js dynamic creatives](/adops/js-dynamic-creative.html) guide. Keep the GAM macros in the
+second `script` block. In Send All Bids setups, replace `%%PATTERN:hb_adid%%` with the bidder-specific
+`%%PATTERN:hb_adid_BIDDERCODE%%` value for each bidder creative, truncating the key name as required
+by GAM.
+
+{: .alert.alert-info :}
+Dynamic creatives are for Prebid.js browser line items. Continue to use the GAM native design-tool
+workflow below when GAM owns the native template, and use the mobile in-app workflow for Prebid Mobile.
+
#### Managing the Native Template in GAM
There are three key aspects of the native template:
@@ -235,6 +258,6 @@ Follow the instructions in [Google Ad Manager with Prebid Step by Step](/adops/s
- [Google Ad Manager with Prebid Step by Step](/adops/step-by-step.html)
- [Prebid Native Implementation Guide](/prebid/native-implementation.html)
- [Send All Bids vs Top Price](/adops/send-all-vs-top-price.html)
-- [Prebid Universal Creative](/overview/prebid-universal-creative.html)
+- [Prebid.js dynamic creatives](/adops/js-dynamic-creative.html)
- [Creative Considerations](/adops/creative-considerations.html)
- [Ad Ops Planning Guide](/adops/adops-planning-guide.html)
diff --git a/adops/setting-up-prebid-with-the-appnexus-ad-server.md b/adops/setting-up-prebid-with-the-appnexus-ad-server.md
index cfff8b85d0..7c1885657d 100644
--- a/adops/setting-up-prebid-with-the-appnexus-ad-server.md
+++ b/adops/setting-up-prebid-with-the-appnexus-ad-server.md
@@ -18,7 +18,7 @@ This page describes how to set up the Microsoft Monetize Ad Server to work with
In some cases there are links to the [Microsoft Help Center](https://docs.xandr.com/).
-Once the Ad Ops setup is complete, developers will need to add code to the page as shown in the example [Using Prebid.js with Microsoft Monetize as your Ad Server]({{site.github.url}}/dev-docs/examples/use-prebid-with-appnexus-ad-server.html).
+Once the Ad Ops setup is complete, developers will need to add code to the page as shown in the example [Using Prebid.js with Microsoft Monetize as your Ad Server]({{site.github.url}}/dev-docs/examples/use-prebid-with-microsoft-ad-server.html).
{: .alert.alert-success :}
**Microsoft Monetize Ad Server Features**
@@ -107,7 +107,7 @@ Note that creatives are automatically marked as inactive by the Microsoft Moneti
{: .alert.alert-warning :}
**SafeFrame**
-If you want your creative to serve into a SafeFrame, this will need to be enabled on the site-side of the Prebid.js implementation rather than as a setting in the ad server. A developer can learn how to enable this setting for the publisher by referencing [Using Prebid.js with Microsoft Monetize Ad Server]({{site.github.url}}/dev-docs/examples/use-prebid-with-appnexus-ad-server.html). Additionally if the Microsoft Monetize Ad Server tags are configured to use SafeFrames, you **will** need to use the above creative template to properly render the creative. Earlier versions of the Prebid.js creative template may not be fully SafeFrame compliant (if they are still in-use from older setups), so it is recommended to switch to the above template in this scenario.
+If you want your creative to serve into a SafeFrame, this will need to be enabled on the site-side of the Prebid.js implementation rather than as a setting in the ad server. A developer can learn how to enable this setting for the publisher by referencing [Using Prebid.js with Microsoft Monetize Ad Server]({{site.github.url}}/dev-docs/examples/use-prebid-with-microsoft-ad-server.html). Additionally if the Microsoft Monetize Ad Server tags are configured to use SafeFrames, you **will** need to use the above creative template to properly render the creative. Earlier versions of the Prebid.js creative template may not be fully SafeFrame compliant (if they are still in-use from older setups), so it is recommended to switch to the above template in this scenario.
## Step 4. Set up Insertion Order
@@ -163,4 +163,4 @@ It will also make it easy to turn the targeting on and off for a given placement
* [Ad Ops and Prebid](/adops/before-you-start.html)
* [Ad Ops Planning Guide](/adops/adops-planning-guide.html)
* [Getting Started with Prebid.js for Developers](/dev-docs/getting-started.html)
-* [Using Prebid.js with Microsoft Monetize Ad Server](/dev-docs/examples/use-prebid-with-appnexus-ad-server.html)(Developer example)
+* [Using Prebid.js with Microsoft Monetize Ad Server](/dev-docs/examples/use-prebid-with-microsoft-ad-server.html)(Developer example)
diff --git a/agents/salesagent.md b/agents/salesagent.md
index 4d8d3646f9..d36a2f69a7 100644
--- a/agents/salesagent.md
+++ b/agents/salesagent.md
@@ -10,7 +10,7 @@ sidebarType: 10
The Prebid Sales Agent is a server that exposes advertising inventory to AI agents via the Model Context Protocol (MCP) and Agent-to-Agent (A2A) protocol. It is designed to integrate with ad servers like Google Ad Manager and provides tools for managing inventory and campaigns throughout their lifecycle.
diff --git a/dev-docs/adunit-reference.md b/dev-docs/adunit-reference.md
index 2e3845022b..ff74b9925f 100644
--- a/dev-docs/adunit-reference.md
+++ b/dev-docs/adunit-reference.md
@@ -106,7 +106,7 @@ See [Prebid Native Implementation](/prebid/native-implementation.html) for detai
| Name | Scope | Type | Description |
|------------------+-------------+------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pos` | Optional | Integer | Ad position on screen, see [OpenRTB 2.5 spec][openRTB]. OpenRTB page position value: 0=unknown, 1=above-the-fold, 3=below-the-fold, 4=header, 5=footer, 6=sidebar, 7=full-screen |
-| `context` | Recommended | String | The video context, either `'instream'`, `'outstream'`, or `'adpod'` (for long-form videos). Example: `context: 'outstream'`. Defaults to 'instream'. |
+| `context` | Recommended | String | The video context, either `'instream'` or `'outstream'`. Example: `context: 'outstream'`. Defaults to 'instream'. |
| `useCacheKey` | Optional | Boolean | Defaults to `false`. While context `'instream'` always will return an vastUrl in bidResponse, `'outstream'` will not. Setting this `true` will use cache url defined in global options also for outstream responses. |
| `placement` | Recommended | Integer | 1=in-stream, 2=in-banner, 3=in-article, 4=in-feed, 5=interstitial/floating. **Highly recommended** because some bidders require more than context=outstream. |
| `plcmt` | Recommended | Integer | 1=in-stream, 2=accompanying content, 3=interstitial, 4=no content/standalone. **Highly recommended** to comply with new IAB video specifications. See [AdCOM v1 spec](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/develop/AdCOM%20v1.0%20FINAL.md#list_plcmtsubtypesvideo) |
@@ -129,21 +129,6 @@ See [Prebid Native Implementation](/prebid/native-implementation.html) for detai
| `delivery` | Optional | Array[Integer] | Supported delivery methods (e.g., streaming, progressive), see [OpenRTB 2.5 spec][openRTB]. |
| `playbackend` | Optional | Integer | The event that causes playback to end, see [OpenRTB 2.5 spec][openRTB]. |
-If `'video.context'` is set to `'adpod'` then the following parameters are also available.
-
-{: .table .table-bordered .table-striped }
-| Name | Scope | Type | Description |
-|------------------+-------------+------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `adPodDurationSec` | Required | Number | The length of the adpod in seconds. Example: `adPodDurationSec = 120` |
-| `durationRangeSec` | Required | Array[Number] | An array of numbers represents a list of the potential/accepted duration values that the creatives can be in the adpod block. Example: `durationRangeSec = [30, 60, 90]` |
-| `requireExactDuration` | Optional | Boolean | Whether the returned creatives running time must match the value of `adPodDurationSec`. Example: `requireExactDuration = true` |
-| `tvSeriesName` | Optional | String | The name of the television series video the adpod will appear in. Example: `tvSeriesName = 'Once Upon A Time'` |
-| `tvEpisodeName` | Optional | String | The name of the episode of the television series video the adpod will appear in. Example: `tvEpisodeName = 'Pilot'` |
-| `tvSeasonNumber` | Optional | Number | A number representing the season number of the television series video the adpod will appear in. Example: `tvSeasonNumber = 1` |
-| `tvEpisodeNumber` | Optional | Number | A number representing the episode number of the television series video the adpod will appear in. Example: `tvEpisodeNumber = 1` |
-| `contentLengthSec` | Optional | Number | A number representing the length of the video in seconds. Example: `contentLengthSec = 1` |
-| `contentMode` | Optional | String | A string indicating the type of content being displayed in the video player. There are two options, `live` and `on-demand`. Example: `contentMode = 'on-demand'` |
-
@@ -193,7 +178,6 @@ When using the Video Module, the mediaTypes.video properties get filled out auto
* [Instream Sound-On](#adUnit-video-example-instream)
* [Accompanying Content](#adUnit-video-example-accompanying)
* [No Content/Standalone](#adUnit-video-example-outstream)
- * [Adpod (Long-Form)](#adUnit-video-example-adpod)
* [Native](#adUnit-native-example)
* [Multi-Format](#adUnit-multi-format-example)
* [Twin Codes](#adUnit-twin-codes-example)
@@ -215,9 +199,9 @@ pbjs.addAdUnits({
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13144370,
+ placement_id: 13144370,
},
},
],
@@ -284,9 +268,9 @@ pbjs.addAdUnits({
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232361,
+ placement_id: 13232361,
},
},
],
@@ -315,9 +299,9 @@ pbjs.addAdUnits({
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232361,
+ placement_id: 13232361,
},
},
],
@@ -346,9 +330,9 @@ pbjs.addAdUnits({
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232361,
+ placement_id: 13232361,
},
},
],
@@ -419,40 +403,6 @@ pbjs.addAdUnits({
});
```
-
-
-#### Adpod (Long-Form)
-
-For an example of an adpod video ad unit that you handle on your own, see below. For more detailed instructions, see [Show Long-Form Video Ads]({{site.baseurl}}/prebid-video/video-long-form.html).
-
-```javascript
-var longFormatAdUnit = {
- video: {
- // required params
- context: 'adpod',
- playerSize: [640, 480],
- adPodDurationSec: 300,
- durationRangeSec: [15, 30],
-
- // optional params
- requireExactDuration: true,
- tvSeriesName: 'TvName',
- tvEpisodeName: 'episodeName',
- tvSeasonNumber: 3,
- tvEpisodeNumber: 6,
- contentLength: 300, // time in seconds,
- contentMode: 'on-demand'
- }
-
- bids: [{
- bidder: 'appnexus',
- params: {
- placementId: '123456789',
- }
- }]
-}
-```
-
### Native
@@ -508,9 +458,9 @@ pbjs.addAdUnits({
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232354,
+ placement_id: 13232354,
},
},
],
@@ -548,9 +498,9 @@ pbjs.addAdUnits([
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232392,
+ placement_id: 13232392,
},
},
],
@@ -569,9 +519,9 @@ pbjs.addAdUnits([
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232392,
+ placement_id: 13232392,
},
},
],
@@ -604,9 +554,9 @@ pbjs.addAdUnits([
},
bids: [
{
- bidder: "appnexus",
+ bidder: "msft",
params: {
- placementId: 13232392,
+ placement_id: 13232392,
},
},
],
diff --git a/dev-docs/analytics-ga.md b/dev-docs/analytics-ga.md
index e1f580e411..8d9badea6c 100644
--- a/dev-docs/analytics-ga.md
+++ b/dev-docs/analytics-ga.md
@@ -85,14 +85,14 @@ Prebid.js sends out GA-compatible [Events](https://support.google.com/analytics/
In this example, the page has 1 ad unit with 3 bidders. The timeout is set to 400ms. Let's go through what Prebid Analytics sends out to GA:
{: .table .table-bordered .table-striped }
-| Time | What Happened | GA Events Sent |
-| :---- |:--------| :-------|
-| 15ms | Prebid.js sends out bid requests to bidders AppNexus, OpenX, and Pubmatic. | Event 1: Category=`Prebid.js Bids`, Action=`Requests`, Label=`appnexus`, Value=1. Event 2: Category=`Prebid.js Bids`, Action=`Requests`, Label=`openx`, Value=1. Event 3: Category=`Prebid.js Bids`, Action=`Requests`, Label=`pubmatic`, Value=1 |
-| 203ms | AppNexus' bid came back with a CPM of $2.314 and a latency of 188ms. | Event 1: Category=`Prebid.js Bids`, Action=`Bids`, Label=`appnexus`, Value=231. Event 2: Category=`Prebid.js Bids`, Action=`Bid Load Time`, Label=`appnexus`, Value=188 |
-| 274ms | Pubmatic's bid came back with a CPM of $0 and a latency of 259ms. | No bid event sent out because it is a no bid. Event 1: Category=`Prebid.js Bids`, Action=`Bid Load Time`, Label=`appnexus`, Value=259 |
+| Time | What Happened | GA Events Sent |
+| :--- | :------------ | :------------- |
+| 15ms | Prebid.js sends out bid requests to bidders Microsoft, OpenX, and Pubmatic. | Event 1: Category=`Prebid.js Bids`, Action=`Requests`, Label=`msft`, Value=1. Event 2: Category=`Prebid.js Bids`, Action=`Requests`, Label=`openx`, Value=1. Event 3: Category=`Prebid.js Bids`, Action=`Requests`, Label=`pubmatic`, Value=1 |
+| 203ms | Microsoft's bid came back with a CPM of $2.314 and a latency of 188ms. | Event 1: Category=`Prebid.js Bids`, Action=`Bids`, Label=`msft`, Value=231. Event 2: Category=`Prebid.js Bids`, Action=`Bid Load Time`, Label=`msft`, Value=188 |
+| 274ms | Pubmatic's bid came back with a CPM of $0 and a latency of 259ms. | No bid event sent out because it is a no bid. Event 1: Category=`Prebid.js Bids`, Action=`Bid Load Time`, Label=`msft`, Value=259 |
| 415ms | Timeout is up because 400ms has passed since bid requests were sent. OpenX has timed out. | Event 1: Category=`Prebid.js Bids`, Action=`Timeouts`, Label=`openx`, Value=1 |
-| 476ms | OpenX's bid came back with a CPM of $2.831 and a latency of 461ms (a bid may still come back after a timeout). | Event 1: Category=`Prebid.js Bids`, Action=`Bids`, Label=`openx`, Value=283. Event 2: Category=`Prebid.js Bids`, Action=`Bid Load Time`, Label=`openx`, Value=461 |
-| 572ms | Google Ad Manager completed its auction and the AppNexus $2.314 bid won. | Event 3: Category=`Prebid.js Bids`, Action=`Wins`, Label=`appnexus`, Value=231 |
+| 476ms | OpenX's bid came back with a CPM of $2.831 and a latency of 461ms (a bid may still come back after a timeout). | Event 1: Category=`Prebid.js Bids`, Action=`Bids`, Label=`openx`, Value=283. Event 2: Category=`Prebid.js Bids`, Action=`Bid Load Time`, Label=`openx`, Value=461 |
+| 572ms | Google Ad Manager completed its auction and the Microsoft $2.314 bid won. | Event 3: Category=`Prebid.js Bids`, Action=`Wins`, Label=`msft`, Value=231 |
Note that a Win event is a true win, meaning that it is not just the highest bid in the header bidding auction, but the winning bid across the entire auction hosted by the ad server and its creative is served back to the page.
@@ -118,8 +118,8 @@ After you've implemented the above code snippet, load the page a few times, wait
As you can see, this reporting screen cannot help you answer questions such as:
-* What's the AppNexus bidder's avg. bid CPM
-* What's the AppNexus bidder's avg. bid load time?
+* What's the Microsoft bidder's avg. bid CPM
+* What's the Microsoft bidder's avg. bid load time?
To see how to answer these questions, see the following sections.
diff --git a/dev-docs/analytics/agma.md b/dev-docs/analytics/agma.md
index 1129d80856..947b9784f3 100644
--- a/dev-docs/analytics/agma.md
+++ b/dev-docs/analytics/agma.md
@@ -10,14 +10,14 @@ prebid_member: false
gvl_id: 1122
---
-#### Analytics Options
+## Analytics Options
{: .table .table-bordered .table-striped }
| Name | Scope | Description | Example | Type |
|-------------|---------|--------------------|-----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|------------------|
| code | required | Provided by agma | `'my-code'` | string |
-### Example Configuration
+## Example Configuration
```javascript
pbjs.enableAnalytics({
@@ -28,6 +28,6 @@ pbjs.enableAnalytics({
});
```
-#### Registration
+## Registration
Please contact [team-internet@agma-mmc.de](mailto:team-internet@agma-mmc.de) for signup.
diff --git a/dev-docs/analytics/automatad.md b/dev-docs/analytics/automatad.md
index 83e13d5d7d..f09a771420 100644
--- a/dev-docs/analytics/automatad.md
+++ b/dev-docs/analytics/automatad.md
@@ -2,30 +2,31 @@
layout: analytics
title: Automatad
description: Automatad Prebid Analytics Adapter
-modulecode: automatadAnalytics
+modulecode: automatad
tcfeu_supported: false
usp_supported: false
coppa_supported: false
prebid_member: false
-enable_download: false
+enable_download: true
---
-#### Instructions for usage
+## Instructions for usage
The [Automatad](https://automatad.com/) analytics adapter requires on-boarding, configuration
parameters & addition of an external script that will be supplied to you by your Automatad account team. Please reach out to your account team or
for more information.
-#### Adapter Configuration Options
+## Adapter Configuration Options
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|--------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|------------------|
-| siteID | required | Your site ID | `N8vZLx` | string |
-| publisherID | required | Your publisher ID | `PXfvBq` | string |
-| logDebug | optional | Flag to collect debug data pertaining to auctions. Defaults to false | `false` | boolean |
-### Example Configuration
+| Name | Scope | Description | Example | Type |
+| ----------- | -------- | -------------------------------------------------------------------- | -------- | ------- |
+| siteID | required | Your site ID | `N8vZLx` | string |
+| publisherID | required | Your publisher ID | `PXfvBq` | string |
+| logDebug | optional | Flag to collect debug data pertaining to auctions. Defaults to false | `false` | boolean |
+
+## Example Configuration
```js
import CONSTANTS '../src/constants.json';
diff --git a/dev-docs/analytics/hubvisor.md b/dev-docs/analytics/hubvisor.md
new file mode 100644
index 0000000000..33d1d6407b
--- /dev/null
+++ b/dev-docs/analytics/hubvisor.md
@@ -0,0 +1,21 @@
+---
+layout: analytics
+title: Hubvisor
+description: Hubvisor Analytics Adapter
+modulecode: hubvisor
+prebid_member: true
+tcfeu_supported: false
+usp_supported: false
+coppa_supported: false
+enable_download: true
+---
+
+## Example prebid.js setup
+
+```javascript
+pbjs.que.push(function () {
+ pbjs.enableAnalytics({
+ provider: 'hubvisor'
+ });
+});
+```
diff --git a/dev-docs/analytics/imAnalytics.md b/dev-docs/analytics/imAnalytics.md
new file mode 100644
index 0000000000..4ed45592cc
--- /dev/null
+++ b/dev-docs/analytics/imAnalytics.md
@@ -0,0 +1,47 @@
+---
+layout: analytics
+title: IM Analytics
+description: IM Analytics Adapter for Prebid.js
+modulecode: imAnalytics
+gdpr_supported: false
+usp_supported: true
+gpp_supported: true
+coppa_supported: true
+enable_download: true
+---
+
+## Description
+
+Analytics Adapter for IM-DMP.
+
+Please visit [intimatemerger.com/im-uid](https://intimatemerger.com/r/im-uid) and request your Customer ID to get started.
+
+If you are an existing publisher and you already use [IM-UID](/dev-docs/modules/userid-submodules/imuid.html), you can use the same Customer ID for this analytics adapter.
+
+By enabling this adapter, you agree to Intimate Merger's privacy policy at .
+
+## Configuration
+
+To enable the IM Analytics adapter, configure it in your Prebid.js setup. Use `imAnalytics` as the provider and provide the appropriate `options`.
+
+### Analytics Options
+
+{: .table .table-bordered .table-striped }
+| Parameter | Scope | Type | Example | Description |
+| --- | --- | --- | --- | --- |
+| `cid` | optional | number | 5126 | The Customer ID provided by Intimate Merger. |
+| `waitTimeout` | optional | number | 1500 | Wait time in milliseconds before sending batched requests. (Default: 1500) |
+
+### Example Configuration
+
+```javascript
+pbjs.enableAnalytics({
+ provider: 'imAnalytics',
+ options: {
+ /* Optional: Customer ID. Set the Customer ID assigned to you. */
+ cid: 5126,
+ /* Optional: Wait 2 seconds */
+ waitTimeout: 2000
+ }
+});
+```
diff --git a/dev-docs/analytics/intentiq.md b/dev-docs/analytics/intentiq.md
index d535f578ad..06823b18e1 100644
--- a/dev-docs/analytics/intentiq.md
+++ b/dev-docs/analytics/intentiq.md
@@ -5,15 +5,15 @@ description: IntentIQ Analytics Adapter
modulecode: intentIq
---
-### Description
+## Description
By using this Intent IQ adapter, you will be able to obtain comprehensive analytics and metrics regarding the performance of the Intent IQ Unified ID module. This includes how the module impacts your revenue, CPMs, and fill rates related to bidders and domains.
-#### Intent IQ Universal ID Registration
+### Intent IQ Universal ID Registration
No registration for this module is required.
-#### Intent IQ Universal ID Configuration
+### Intent IQ Universal ID Configuration
**IMPORTANT**: only effective when Intent IQ Universal ID module be installed and configured. [(How-To)](https://docs.prebid.org/dev-docs/modules/userid-submodules/intentiq.html)
@@ -22,18 +22,18 @@ No registration for this module is required.
{: .table .table-bordered .table-striped }
| Parameter | Scope | Type | Description | Example |
| --- | --- | --- | --- | --- |
-| options.partner| Required | Number | This is the partner ID value obtained from registering with IntentIQ. | `1177538` |
+| options.partner | Required | Number | This is the partner ID value obtained from registering with IntentIQ. | `1177538` |
| options.manualWinReportEnabled | Optional | Boolean | This variable determines whether the bidWon event is triggered automatically. If set to false, the event will occur automatically, and manual reporting with reportExternalWin will be disabled. If set to true, the event will not occur automatically, allowing manual reporting through reportExternalWin. The default value is false. | `false` |
| options.reportMethod | Optional | String | Defines the HTTP method used to send the analytics report. If set to `"POST"`, the report payload will be sent in the body of the request. If set to `"GET"` (default), the payload will be included as a query parameter in the request URL. | `"GET"` |
| options.reportingServerAddress | Optional | String | The base URL for the IntentIQ reporting server. If parameter is provided in `configParams`, it will be used. | `"https://domain.com"` |
-| options.adUnitConfig | Optional | Number | Determines how the `placementId` parameter is extracted in the report (default is 1). Possible values: 1 – adUnitCode first, 2 – placementId first, 3 – only adUnitCode, 4 – only placementId. | `1` |
-| options.gamPredictReporting | Optional | Boolean | This variable controls whether the GAM prediction logic is enabled or disabled. The main purpose of this logic is to extract information from a rendered GAM slot when no Prebid bidWon event is available. In that case, we take the highest CPM from the current auction and add 0.01 to that value. | `false` |
+| options.adUnitConfig | Optional | Number | Determines how the `placementId` parameter is extracted in the report (default is 1). Possible values: 1 – adUnitCode first, 2 – placementId first, 3 – only adUnitCode, 4 – only placementId. | `1` |
+| options.gamPredictReporting | Optional | Boolean | This variable controls whether the GAM prediction logic is enabled or disabled. The main purpose of this logic is to extract information from a rendered GAM slot when no Prebid bidWon event is available. In that case, we take the highest CPM from the current auction and add 0.01 to that value. | `false` |
| options. ABTestingConfigurationSource | Optional | String | Determines how AB group will be defined. Possible values: `"IIQServer"` – group defined by IIQ server, `"percentage"` – generated group based on abPercentage, `"group"` – define group based on value provided by partner. | `IIQServer` |
| options.abPercentage | Optional | Number | Percentage for A/B testing group. Default value is `95` | `95` |
| options.group | Optional | String | Define group provided by partner, possible values: `"A"`, `"B"` | `"A"` |
-| options.gamObjectReference | Optional | Object | This is a reference to the Google Ad Manager (GAM) object, which will be used to set targeting. If this parameter is not provided, the group reporting will not be configured.| `googletag`|
-| options.browserBlackList | Optional | String | This is the name of a browser that can be added to a blacklist.| `"chrome"`|
-| options.domainName | Optional | String | Specifies the domain of the page in which the IntentIQ object is currently running and serving the impression. This domain will be used later in the revenue reporting breakdown by domain. For example, cnn.com. It identifies the primary source of requests to the IntentIQ servers, even within nested web pages.| `"currentDomain.com"`|
+| options.gamObjectReference | Optional | Object | This is a reference to the Google Ad Manager (GAM) object, which will be used to set targeting. If this parameter is not provided, the group reporting will not be configured. | `googletag` |
+| options.browserBlackList | Optional | String | This is the name of a browser that can be added to a blacklist. | `"chrome"` |
+| options.domainName | Optional | String | Specifies the domain of the page in which the IntentIQ object is currently running and serving the impression. This domain will be used later in the revenue reporting breakdown by domain. For example, cnn.com. It identifies the primary source of requests to the IntentIQ servers, even within nested web pages. | `"currentDomain.com"` |
| options. additionalParams | Optional | Array | This parameter allows sending additional custom key-value parameters with specific destination logic (sync, VR, winreport). Each custom parameter is defined as an object in the array. | `[ { parameterName: “abc”, parameterValue: 123, destination: [1,1,0] } ]` |
| options. additionalParams[0].parameterName | Optional | String | Name of the custom parameter. This will be sent as a query parameter. | `"abc"` |
| options. additionalParams[0].parameterValue | Optional | String / Number | Value to assign to the parameter. | `123` |
@@ -96,20 +96,20 @@ pos: 0 // The following values are defined in the ORTB 2.5 spec
{: .table .table-bordered .table-striped }
| Field | Data Type | Description | Example | Mandatory |
-|--------------------|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|-----------|
-| biddingPlatformId | Integer | Specify the platform in which this ad impression was rendered – 1 – Prebid, 2 – Amazon, 3 – Google, 4 – Open RTB (including your local Prebid server) | 1 | Yes |
-| partnerAuctionId | String | Use this when you are running multiple auction solutions across your assets and have a unified identifier for auctions | 3d44542d-xx-4662-xxxx-4xxxx3d8e | No |
-| bidderCode | String | Specifies the name of the bidder that won the auction as reported by Prebid and all other bidding platforms | newAppnexus | Yes |
+| -------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ----------- |
+| biddingPlatformId | Integer | Specify the platform in which this ad impression was rendered – 1 – Prebid, 2 – Amazon, 3 – Google, 4 – Open RTB (including your local Prebid server) | 1 | Yes |
+| partnerAuctionId | String | Use this when you are running multiple auction solutions across your assets and have a unified identifier for auctions | 3d44542d-xx-4662-xxxx-4xxxx3d8e | No |
+| bidderCode | String | Specifies the name of the bidder that won the auction as reported by Prebid and all other bidding platforms | bidderA | Yes |
| prebidAuctionId | String | Specifies the identifier of the Prebid auction. Leave empty or undefined if Prebid is not the bidding platform | 3513ce01-de02-490b-9d87-bfc137697f82 | No |
-| cpm | Decimal | Cost per mille of the impression as received from the demand-side auction (without modifications or reductions) | 5.62 | Yes |
-| currency | String | Currency of the auction | USD | Yes |
-| originalCpm | Decimal | Leave empty or undefined if Prebid is not the bidding platform | 5.5 | No |
-| originalCurrency | String | Currency of the original auction | USD | No |
-| status | String | Status of the impression. Leave empty or undefined if Prebid is not the bidding platform | rendered | No |
-| placementId | String | Unique identifier of the ad unit on the webpage that showed this ad | div-1 | No |
-| adType | String | Specifies the type of ad served. Possible values: “banner“, “video“, “native“, “audio“. | banner | No |
-| size | String | Size of adUnit item | 320x250 | No |
-| pos | number | The pos field specifies the position of the adUnit on the page according to the OpenRTB 2.5 specification | 0 | No |
+| cpm | Decimal | Cost per mille of the impression as received from the demand-side auction (without modifications or reductions) | 5.62 | Yes |
+| currency | String | Currency of the auction | USD | Yes |
+| originalCpm | Decimal | Leave empty or undefined if Prebid is not the bidding platform | 5.5 | No |
+| originalCurrency | String | Currency of the original auction | USD | No |
+| status | String | Status of the impression. Leave empty or undefined if Prebid is not the bidding platform | rendered | No |
+| placementId | String | Unique identifier of the ad unit on the webpage that showed this ad | div-1 | Yes |
+| adType | String | Specifies the type of ad served. Possible values: “banner“, “video“, “native“, “audio“. | banner | No |
+| size | String | Size of adUnit item | 320x250 | No |
+| pos | number | The pos field specifies the position of the adUnit on the page according to the OpenRTB 2.5 specification | 0 | No |
To report the auction win, call the function as follows:
diff --git a/dev-docs/analytics/scaleable.md b/dev-docs/analytics/scaleable.md
index 7ebd129ea8..806814b54c 100644
--- a/dev-docs/analytics/scaleable.md
+++ b/dev-docs/analytics/scaleable.md
@@ -3,8 +3,33 @@ layout: analytics
title: Scaleable
description: Scaleable Analytics Adapter
modulecode: scaleable
+tcfeu_supported: false
+usp_supported: true
+gpp_sids: usp, usnat, usstate_all
+coppa_supported: true
+prebid_member: false
---
-#### Registration
+## Analytics Options
-Please visit [scaleable.ai](https://scaleable.ai/) for more information.
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|-------------------|----------|---------------------------------------------------------------------------|------------------|----------|
+| `siteId` | required | Identifies your site to Scaleable. Contact Scaleable to receive it. | `'YOUR_SITE_ID'` | `string` |
+| `auctionEndDelay` | optional | Milliseconds to wait after `AUCTION_END` before reporting (default 1500). | `1000` | `int` |
+| `sampling` | optional | 0–1; the fraction of sessions to collect data on (default 1.0). | `0.5` | `float` |
+
+## Example Configuration
+
+```javascript
+pbjs.enableAnalytics({
+ provider: 'scaleable',
+ options: {
+ siteId: 'YOUR_SITE_ID' // contact Scaleable to receive your siteId
+ }
+});
+```
+
+## Registration
+
+Contact for more information or to sign up for analytics. See [Scaleable Advertising](https://scaleable.ai/services/advertising).
diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md
index 2926915754..510cd44d4c 100644
--- a/dev-docs/bidder-adaptor.md
+++ b/dev-docs/bidder-adaptor.md
@@ -766,12 +766,12 @@ Use aliases if you want to reuse your adapter using other name for your partner/
```javascript
export const spec = {
- code: 'appnexus',
+ code: 'msft',
aliases: [
- 'apnx',
+ 'microsoft',
{
- code:'apx',
- gvlid: 1,
+ code:'mft',
+ gvlid: 32,
skipPbsAliasing: false
}
],
@@ -900,7 +900,7 @@ if (bid.mediaType === 'video' || (videoMediaType && context !== 'outstream')) {
{: .alert.alert-info :}
The following is Prebid's way to setup bid request for long-form, adapters are free to choose their own approach.
-Prebid now accepts multiple bid responses for a single `bidRequest.bids` object. For each Ad pod Prebid expects you to send back n bid responses. It is up to you how bid responses are returned. Prebid's recommendation is that you expand an Ad pod placement into a set of request objects according to the total adpod duration and the range of duration seconds. It also depends on your endpoint as well how you may want to create your request for long-form. Appnexus adapter follows below algorithm to expand its placement.
+Prebid now accepts multiple bid responses for a single `bidRequest.bids` object. For each Ad pod Prebid expects you to send back n bid responses. It is up to you how bid responses are returned. Prebid's recommendation is that you expand an Ad pod placement into a set of request objects according to the total adpod duration and the range of duration seconds. It also depends on your endpoint as well how you may want to create your request for long-form. Microsoft adapter follows below algorithm to expand its placement.
#### Use case 1: I want to request my endpoint to return bids with varying ranges of durations
@@ -990,7 +990,7 @@ Adapter must add following new properties to bid response
}
```
-Appnexus Adapter uses the approach explained above. You can see an example in the [AppNexus adapter](https://github.com/prebid/Prebid.js/blob/master/modules/appnexusBidAdapter.js)
+Microsoft Adapter uses the approach explained above. You can see an example in the [Microsoft adapter](https://github.com/prebid/Prebid.js/blob/master/modules/msftBidAdapter.js)
Adapter must return one [IAB accepted subcategories](https://iabtechlab.com/wp-content/uploads/2017/11/IAB_Tech_Lab_Content_Taxonomy_V2_Final_2017-11.xlsx) (links to MS Excel file) if they want to support competitive separation. These IAB sub categories will be converted to Ad server industry/group. If adapter is returning their own proprietary categroy, it is the responsibility of the adapter to convert their categories into [IAB accepted subcategories](https://iabtechlab.com/wp-content/uploads/2017/11/IAB_Tech_Lab_Content_Taxonomy_V2_Final_2017-11.xlsx) (links to MS Excel file).
diff --git a/dev-docs/bidders/9dotsmedialtd.md b/dev-docs/bidders/9dotsmedialtd.md
new file mode 100644
index 0000000000..15fe201d4f
--- /dev/null
+++ b/dev-docs/bidders/9dotsmedialtd.md
@@ -0,0 +1,37 @@
+---
+layout: bidder
+title: 9dots media LTD
+description: Prebid 9dots media LTD Bidder Adaptor
+biddercode: 9dotsmedialtd
+pbjs: false
+pbs: true
+media_types: video, banner, native
+userIds: all
+fpd_supported: false
+tcfeu_supported: false
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+prebid_member: false
+ortb_blocking_supported: true
+multiformat_supported: will-bid-on-one
+floors_supported: false
+aliasCode: limelightDigital
+sidebarType: 1
+---
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+|:--------------|:---------|:--------------------------------------------------------------|:-----------------------|:----------|
+| `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` |
+
+9dots media LTD server-side Prebid Server adapter requires only `publisherId` parameter.
+9dots media LTD server-side Prebid Server adapter supports only `banner`, `video`, `audio`, `native` media types.
diff --git a/dev-docs/bidders/adelerate.md b/dev-docs/bidders/adelerate.md
new file mode 100644
index 0000000000..399fb148ed
--- /dev/null
+++ b/dev-docs/bidders/adelerate.md
@@ -0,0 +1,39 @@
+---
+layout: bidder
+title: Adelerate
+description: Adelerate's Prebid Bidder Adapter for banner, video, and native demand
+biddercode: adelerate
+media_types: video, native
+dsa_supported: true
+usp_supported: true
+gpp_sids: tcfca, usnat, usstate_all, usp
+coppa_supported: true
+schain_supported: true
+dchain_supported: true
+deals_supported: true
+floors_supported: true
+fpd_supported: true
+multiformat_supported: will-bid-on-any
+userId: 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` | required | The placement ID provided by Adelerate. | `'abc123'` | `string` |
+| `publisherId` | required | The publisher ID provided by Adelerate. | `'pub-456'` | `string` |
+| `floor` | optional | Minimum CPM in USD. Floors module is preferred. | `0.50` | `number` |
+| `floorCurrency` | optional | Currency for the floor param. Defaults to `USD`. | `'EUR'` | `string` |
+
+## Note
+
+Adelerate is not currently registered on the IAB Europe Global Vendor List, so this adapter does not declare a `gvlid`.
+Under GDPR, Prebid core will withhold bid requests and user syncs to this bidder unless the publisher's CMP setup explicitly permits.
+A `gvlid` will be added once IAB Europe registration is finalized.
diff --git a/dev-docs/bidders/adinify.md b/dev-docs/bidders/adinify.md
deleted file mode 100644
index 996e97836d..0000000000
--- a/dev-docs/bidders/adinify.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: bidder
-title: Adinify
-description: Adinify Bidder Adapter
-biddercode: adinify
-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: will-bid-on-any
----
-
-### 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` |
diff --git a/dev-docs/bidders/adlywise.md b/dev-docs/bidders/adlywise.md
new file mode 100644
index 0000000000..e46ed103a8
--- /dev/null
+++ b/dev-docs/bidders/adlywise.md
@@ -0,0 +1,41 @@
+---
+layout: bidder
+title: Adlywise
+description: Adlywise Bidder Adapter
+biddercode: adlywise
+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: false
+pbs_app_supported: false
+multiformat_supported: will-bid-on-any
+---
+
+## 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 OpenRTB 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` |
diff --git a/dev-docs/bidders/adnimation.md b/dev-docs/bidders/adnimation.md
index dd7eefa28c..61326b2f6a 100644
--- a/dev-docs/bidders/adnimation.md
+++ b/dev-docs/bidders/adnimation.md
@@ -3,35 +3,77 @@ layout: bidder
title: Adnimation
description: Prebid Adnimation Bidder Adaptor
biddercode: adnimation
-pbjs: true
-pbs: false
-media_types: video, banner
-userIds: all
-fpd_supported: false
+userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId
tcfeu_supported: false
usp_supported: true
-coppa_supported: true
+coppa_supported: false
schain_supported: true
+gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp
+floors_supported: true
+media_types: banner, video
prebid_member: false
-ortb_blocking_supported: true
+safeframes_ok: false
+deals_supported: false
+pbs_app_supported: true
+fpd_supported: false
+ortb_blocking_supported: false
multiformat_supported: will-bid-on-one
-floors_supported: false
-aliasCode: limelightDigital
+pbjs: true
+pbs: true
sidebarType: 1
---
-### Bid Params
+## Bid Params for Prebid.js
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|:--------------|:---------|:-------------------------------------------------------|:-----------------------|:----------|
-| `host` | required | Ad network's RTB host | `'adnimation.trading'` | `string` |
-| `adUnitId` | required | Ad Unit Id will be generated on Adnimation 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 |
+|------------|----------|---------------------------------------------------------------------------------------------|------------------------------|----------|
+| `cId` | required | The connection ID from Adnimation. | `'562524b21b1c1f08117fc7f9'` | `string` |
+| `pId` | required | The publisher ID from Adnimation (pbjs only). | `'59ac17c192832d0011283fe3'` | `string` |
+| `bidFloor` | optional | The minimum bid value desired. Adnimation will not respond with bids lower than this value. | `0.90` | `float` |
+
+## Bid Params for Prebid Server
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+|-------|----------|------------------------------------|------------------------------|----------|
+| `cId` | required | The connection ID from Adnimation. | `'562524b21b1c1f08117fc7f9'` | `string` |
+
+### Example
+
+ ```javascript
+var adUnits = [{
+ code: 'banner-div',
+ mediaTypes: {
+ banner: {
+ sizes: [
+ [300, 250],
+ [728, 90]
+ ]
+ }
+ },
+ bids: [{
+ bidder: 'adnimation',
+ params: {
+ cId: '562524b21b1c1f08117fc7f9', // Required - PROVIDED DURING SETUP...
+ pId: '59ac17c192832d0011283fe3', // Required - PROVIDED DURING SETUP...
+ bidFloor: 1.23 // Optional
+ }
+ }]
+}
+];
+
+// configure pbjs to enable user syncing
+pbjs.setConfig({
+ userSync: {
+ filterSettings: {
+ iframe: {
+ bidders: 'adnimation',
+ filter: 'include'
+ }
+ }
+ }
+});
+```
diff --git a/dev-docs/bidders/adocean.md b/dev-docs/bidders/adocean.md
index 483520cb8b..2c8c2be179 100644
--- a/dev-docs/bidders/adocean.md
+++ b/dev-docs/bidders/adocean.md
@@ -27,15 +27,16 @@ privacy_sandbox: no
sidebarType: 1
---
-### Note
+## Note
If you have any issues with setting up the AdOcean bidder, please contact with your local Technical Support team or by visiting [AdOcean website](https://adocean-global.com/en/contact/).
-### Prebid.JS Bid Params
+## Prebid.JS Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|----------|----------|-------------------|----------------------------------------------------|----------|
-| slaveId | required | slave ID | `'adoceanmyaotcpiltmmnj'` | `string` |
-| masterId | required | master ID | `'ek1AWtSWh3BOa_x2P1vlMQ_uXXJpJcbhsHAY5PFQjWD.D7'` | `string` |
-| emitter | required | traffic source id | `'myao.adocean.pl'` | `string` |
+| Name | Scope | Description | Example | Type |
+|-----------------------|----------|----------------------------|----------------------------------------------------|----------|
+| slaveId | required | slave ID | `'adoceanmyaotcpiltmmnj'` | `string` |
+| masterId | required | master ID | `'ek1AWtSWh3BOa_x2P1vlMQ_uXXJpJcbhsHAY5PFQjWD.D7'` | `string` |
+| emitter | required | traffic source id | `'myao.adocean.pl'` | `string` |
+| emitterRequestParams | optional | extra targeting parameters | `{key: 'value'}` | `object` |
diff --git a/dev-docs/bidders/adquery.md b/dev-docs/bidders/adquery.md
index c7099a031b..67f876fb85 100644
--- a/dev-docs/bidders/adquery.md
+++ b/dev-docs/bidders/adquery.md
@@ -11,13 +11,117 @@ schain_supported: true
gvl_id: 902
userIds: adQuery QiD
sidebarType: 1
+media_types: banner, video
---
-### Bid Params
+## Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|---------------|--------------------------------------------------------------------------|-----------|
-| `placementId` | required | Placement ID | `6d93f2a0e5f0fe2cc3a6e9e3ade964b43b07f897` | `string` |
-| `type` | required | Ad Type | `banner` | `string` |
-| `sizes` | required | Allowed sizes | `320x100,300x250,336x280,300x50,300x100,320x50,320x480,300x150,320x180` | `string` |
+
+| Name | Scope | Description | Example | Type |
+|---------------|----------|-----------------------------------------------------------------------------|--------------------------------------------------------------------------|-----------|
+| `placementId` | required | Placement ID provided by Adquery (must match the type/format in dashboard) | `d30f79cf7fef47bd7a5611719f936539bec0d2e9` | `string` |
+| `type` | required | Ad format/type – tells Adquery what kind of creative to return | `banner`, `video`, `interstitial`, `anchorad` | `string` |
+
+**Notes:**
+
+- `placementId` is always required and should correspond to a placement configured in the Adquery dashboard for the specific `type`.
+- `type` is required in bidder params and determines the creative format returned by Adquery.
+- For **banner** ads: define sizes in `mediaTypes.banner.sizes`. The adapter automatically parses and sends them.
+- For **video** bids: use `type: 'video'` and set `mediaTypes.video.context` to either `outstream` or `instream`.
+- For **video** bids, `mediaTypes.video.playerSize` is required.
+- For **video** (`outstream`): a renderer or equivalent outstream player integration is required (e.g. InRenderer or similar).
+- For **video** (`instream`): a compatible instream video player integration is required to render the returned VAST response.
+- For special formats (`interstitial`, `anchorad`): use the placeholder size `[[1, 1]]`.
+
+### Example 1: Standard Banner Ad
+
+```javascript
+{
+ code: 'banner-div',
+ mediaTypes: {
+ banner: {
+ sizes: [[300, 250], [320, 50], [728, 90]]
+ }
+ },
+ bids: [{
+ bidder: 'adquery',
+ params: {
+ placementId: '9e0a916215d99196f44821dfc348c2843ee5b5a7',
+ type: 'banner'
+ }
+ }]
+}
+```
+
+### Example 2: Outstream Video Ad (with renderer)
+
+```javascript
+{
+ code: 'video-outstream-1',
+ mediaTypes: {
+ video: {
+ context: 'outstream',
+ playerSize: [[640, 360]],
+ mimes: ['video/mp4', 'video/webm'],
+ protocols: [2, 3, 5, 6, 7, 8],
+ api: [2],
+ placement: 1,
+ startdelay: 0,
+ skip: 1
+ }
+ },
+ renderer: {
+ url: 'https://cdn.jsdelivr.net/npm/in-renderer-js@1/dist/in-renderer.umd.min.js',
+ render: function(bid) {
+ var renderer = new window.InRenderer();
+ renderer.render('video-outstream-1', bid);
+ }
+ },
+ bids: [{
+ bidder: 'adquery',
+ params: {
+ placementId: 'd30f79cf7fef47bd7a5611719f936539bec0d2e9',
+ type: 'video'
+ }
+ }]
+}
+```
+
+### Example 3: Interstitial + Anchor Ad (no sizes)
+
+```javascript
+// Interstitial (full-page overlay)
+{
+ code: 'interstitial-div',
+ mediaTypes: {
+ banner: {
+ sizes: [[1, 1]]
+ }
+ },
+ bids: [{
+ bidder: 'adquery',
+ params: {
+ placementId: 'd30f79cf7fef47bd7a5611719f936539bec0d2e9',
+ type: 'interstitial'
+ }
+ }]
+},
+
+// Anchor / fixed bottom bar
+{
+ code: 'anchor-div',
+ mediaTypes: {
+ banner: {
+ sizes: [[1, 1]]
+ }
+ },
+ bids: [{
+ bidder: 'adquery',
+ params: {
+ placementId: 'd30f79cf7fef47bd7a5611719f936539bec0d2e9',
+ type: 'anchorad'
+ }
+ }]
+}
+```
diff --git a/dev-docs/bidders/adsmartx.md b/dev-docs/bidders/adsmartx.md
new file mode 100644
index 0000000000..81951a39df
--- /dev/null
+++ b/dev-docs/bidders/adsmartx.md
@@ -0,0 +1,30 @@
+---
+layout: bidder
+title: AdSmartX
+description: Prebid.js bidder adapter for AdSmartX
+biddercode: adsmartx
+media_types:
+ - banner
+ - video
+gdpr_supported: true
+usp_supported: true
+gpp_supported: true
+user_sync: true
+schain_supported: true
+pbjs: true
+sidebarType: 1
+---
+
+## Overview
+
+AdSmartX is a digital advertising platform that supports banner and video ads through its Prebid.js adapter. The adapter uses OpenRTB standards for request and response formatting.
+
+## Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Type | Description | Example |
+|-------------|----------|--------|-----------------------------------------|--------------|
+| `bidFloor` | optional | string | Bid Floor | `'0.01'` |
+| `testMode` | optional | string | Parameter to indicate prebid test mode | `'1'` |
+| `sspId` | optional | string | Supply Partner ID | `'111111'` |
+| `siteId` | optional | string | Supply Partner Site ID | `'222222'` |
diff --git a/dev-docs/bidders/adsmovil.md b/dev-docs/bidders/adsmovil.md
new file mode 100644
index 0000000000..7be33c895f
--- /dev/null
+++ b/dev-docs/bidders/adsmovil.md
@@ -0,0 +1,35 @@
+---
+layout: bidder
+title: adsmovil
+description: Prebid Adsmovil Adapter
+biddercode: adsmovil
+gpp_sids: usstate_all
+tcfeu_supported: true
+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`.
diff --git a/dev-docs/bidders/alliance_gravity.md b/dev-docs/bidders/alliance_gravity.md
index 6382a30957..704271f517 100644
--- a/dev-docs/bidders/alliance_gravity.md
+++ b/dev-docs/bidders/alliance_gravity.md
@@ -13,7 +13,7 @@ deals_supported: true
floors_supported: true
fpd_supported: false
pbjs: true
-pbs: false
+pbs: true
pbs_app_supported: true
prebid_member: false
multiformat_supported: will-bid-on-one
@@ -21,9 +21,9 @@ ortb_blocking_supported: true
privacy_sandbox: no
---
-### Bid Params
+## Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|-------------------|-----------|----------|
-| `srid` | required | Stored Request ID | `'1234'` | `string` |
+| Name | Scope | Description | Example | Type |
+|--------|----------|--------------|----------|----------|
+| `srid` | required | Placement ID | `'1234'` | `string` |
diff --git a/dev-docs/bidders/amcom.md b/dev-docs/bidders/amcom.md
index 5db785a20f..e80083e0f4 100644
--- a/dev-docs/bidders/amcom.md
+++ b/dev-docs/bidders/amcom.md
@@ -14,7 +14,7 @@ deals_supported: true
floors_supported: true
fpd_supported: false
pbjs: true
-pbs: false
+pbs: true
pbs_app_supported: true
multiformat_supported: will-bid-on-any
---
diff --git a/dev-docs/bidders/anzuDSP.md b/dev-docs/bidders/anzuDSP.md
new file mode 100644
index 0000000000..d790fb9e41
--- /dev/null
+++ b/dev-docs/bidders/anzuDSP.md
@@ -0,0 +1,32 @@
+---
+layout: bidder
+title: AnzuDSP
+description: AnzuDSP Bidder Adapter
+biddercode: anzuDSP
+media_types: banner, video
+coppa_supported: true
+tcfeu_supported: false
+usp_supported: true
+prebid_member: false
+pbjs: true
+pbs: false
+schain_supported: true
+floors_supported: true
+multiformat_supported: will-bid-on-any
+sidebarType: 1
+safeframes_ok: true
+dchain_supported: false
+deals_supported: true
+fpd_supported: false
+ortb_blocking_supported: true
+privacy_sandbox: no
+---
+
+## Prebid.js Bid params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|-------------|----------|-----------------------------|------------------------------------|-----------|
+| `pid` | required | Placement ID | `0e232769e6f71d291ee7dbc9d157cf84` | `string` |
+| `env` | required | Environment name | `anzuDSP` | `string` |
+| `ext` | optional | Specific integration config | `{}` | `object` |
diff --git a/dev-docs/bidders/anzuSSP.md b/dev-docs/bidders/anzuSSP.md
new file mode 100644
index 0000000000..8c7ad30ee9
--- /dev/null
+++ b/dev-docs/bidders/anzuSSP.md
@@ -0,0 +1,31 @@
+---
+layout: bidder
+title: Anzu SSP
+description: Anzu SSP Bidder Adapter
+biddercode: AnzuSSP
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+media_types: banner, video, native
+safeframes_ok: true
+deals_supported: false
+floors_supported: true
+fpd_supported: false
+pbjs: true
+pbs: true
+pbs_app_supported: true
+multiformat_supported: will-bid-on-any
+---
+
+
+## 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`.
diff --git a/dev-docs/bidders/apester.md b/dev-docs/bidders/apester.md
index 068a7cb90c..0953eb25c0 100644
--- a/dev-docs/bidders/apester.md
+++ b/dev-docs/bidders/apester.md
@@ -1,36 +1,80 @@
---
layout: bidder
title: Apester
-description: Apester Bidder Adaptor
+description: Prebid Apester Bidder Adaptor
biddercode: apester
-pbjs: true
-pbs: false
-media_types: video, banner
-userIds: all
-fpd_supported: false
+userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId
tcfeu_supported: false
usp_supported: true
-coppa_supported: true
+gvl_id: 354
+coppa_supported: false
schain_supported: true
+gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp
+floors_supported: true
+media_types: banner, video
prebid_member: false
-ortb_blocking_supported: true
+safeframes_ok: false
+deals_supported: false
+pbs_app_supported: true
+fpd_supported: false
+ortb_blocking_supported: false
multiformat_supported: will-bid-on-one
-floors_supported: false
-aliasCode: limelightDigital
+pbjs: true
+pbs: true
sidebarType: 1
---
-### Bid Params
+## Bid Params for Prebid.js
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|:-------------|:---------|:--------------------------------------------------|:-------------------------|:----------|
-| `host` | required | Ad network's RTB host | `'apester-exchange.com'` | `string` |
-| `adUnitId` | required | Ad Unit Id will be generated on Apester Platform. | `42` | `integer` |
-| `adUnitType` | required | Type of Ad Unit (`'video'`, `'banner'`) | `'banner'` | `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 |
+|------------|----------|------------------------------------------------------------------------------------------|------------------------------|----------|
+| `cId` | required | The connection ID from Apester. | `'562524b21b1c1f08117fc7f9'` | `string` |
+| `pId` | required | The publisher ID from Apester (pbjs only). | `'59ac17c192832d0011283fe3'` | `string` |
+| `bidFloor` | optional | The minimum bid value desired. Apester will not respond with bids lower than this value. | `0.90` | `float` |
+
+## Bid Params for Prebid Server
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+|------------|----------|------------------------------------------------------------------------------------------|------------------------------|----------|
+| `cId` | required | The connection ID from Apester. | `'562524b21b1c1f08117fc7f9'` | `string` |
+
+### Example
+
+ ```javascript
+var adUnits = [{
+ code: 'banner-div',
+ mediaTypes: {
+ banner: {
+ sizes: [
+ [300, 250],
+ [728, 90]
+ ]
+ }
+ },
+ bids: [{
+ bidder: 'apester',
+ params: {
+ cId: '562524b21b1c1f08117fc7f9', // Required - PROVIDED DURING SETUP...
+ pId: '59ac17c192832d0011283fe3', // Required - PROVIDED DURING SETUP...
+ bidFloor: 1.23 // Optional
+ }
+ }]
+}
+];
+
+// configure pbjs to enable user syncing
+pbjs.setConfig({
+ userSync: {
+ filterSettings: {
+ iframe: {
+ bidders: 'apester',
+ filter: 'include'
+ }
+ }
+ }
+});
+```
diff --git a/dev-docs/bidders/appMonstaMedia.md b/dev-docs/bidders/appMonstaMedia.md
new file mode 100644
index 0000000000..cae93db35a
--- /dev/null
+++ b/dev-docs/bidders/appMonstaMedia.md
@@ -0,0 +1,37 @@
+---
+layout: bidder
+title: AppMonstaMedia
+description: Prebid AppMonstaMedia Bidder Adapter
+biddercode: appMonstaMedia
+gpp_sids: usstate_all
+gvl_id: 1283
+tcfeu_supported: true
+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
diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md
index 5d190a1250..491ecab4c3 100644
--- a/dev-docs/bidders/appnexus.md
+++ b/dev-docs/bidders/appnexus.md
@@ -15,13 +15,13 @@ gpp_supported: true
floors_supported: true
fpd_supported: false
pbjs: true
-pbjs_version_notes: please avoid using v7.15 and v7.16
+pbjs_version_notes: Support for the AppNexus adapter will be reduced beginning July 1, 2026, with full deprecation planned for early 2027. To maintain uninterrupted support and access to the latest features, please migrate to the Microsoft adapter. More information can be seen on the msft.md page.
pbs: true
gvl_id: 32
sidebarType: 1
---
-### Table of Contents
+## Table of Contents
- [Table of Contents](#table-of-contents)
- [Bid Params](#bid-params)
@@ -40,11 +40,14 @@ sidebarType: 1
+{: .alert.alert-danger :}
+Support for the AppNexus adapter will be reduced beginning July 1, 2026, with full deprecation planned for early 2027. To maintain uninterrupted support and access to the latest features, please migrate to the [Microsoft adapter](msft.html).
+
{: .alert.alert-danger :}
All AppNexus (Microsoft/Xandr) placements included in a single call to `requestBids` must belong to the same parent Publisher. If placements from two different publishers are included in the call, the AppNexus bidder will not return any demand for those placements.
*Note: This requirement does not apply to adapters that are [aliasing](/dev-docs/publisher-api-reference/aliasBidder.html) the AppNexus adapter.*
-#### Bid Params
+### 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.
@@ -55,75 +58,75 @@ To avoid breaking changes, the old 'camelCase' format is still currently support
The table below will reflect both formats, though it's recommended to use the lower-case underscore format where possible going forward (assuming you're using a compatible version of Prebid.js).
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------|------------------|
-| `placement_id` (PBS+PBJS) or `placementId` (PBJS) | required | The placement ID from AppNexus. You may identify a placement using the `invCode` and `member` instead of a placement ID. This parameter can be either a `string` or `integer` for Prebid.js, however `integer` is preferred. Legacy code can retain the `string` value. **Prebid Server requires an integer value.** | `234234` | `integer` |
-| `member` | optional | The member ID from AppNexus. Must be used with `invCode`. | `'12345'` | `string` |
-| `invCode` or `inv_code` | optional | The inventory code from AppNexus. Must be used with `member`. | `'abc123'` | `string` |
-| `publisherId` or `publisher_id` | optional | The publisher ID from AppNexus. It is used by the AppNexus end point to identify the publisher when placement id is not provided and `invCode` goes wrong. The `publisherId` parameter can be either a `string` or `integer` for Prebid.js, however `integer` is preferred. | `12345` | `integer` |
-| `frameworks` | optional | Array of integers listing API frameworks for Banner supported by the publisher. | `[1,2]` | `array of integer` |
-| `user` | optional | Object that specifies information about an external user. See [User Object](#appnexus-user-object) for details. | `user: { age: 25, gender: 0, dnt: true}` | `object` |
-| `allowSmallerSizes` or `allow_smaller_sizes` | optional | If `true`, ads smaller than the values in your ad unit's `sizes` array will be allowed to serve. Defaults to `false`. | `true` | `boolean` |
-| `usePaymentRule` (PBJS) or `use_pmt_rule` (PBS+PBJS) | optional | If `true`, Appnexus will return net price to Prebid.js after publisher payment rules have been applied. | `true` | `boolean` |
-| `keywords` | optional | A set of key-value pairs applied to all ad slots on the page. Mapped to [buy-side segment targeting](https://learn.microsoft.com/en-us/xandr/monetize/segment-targeting) (login required). A maximum of 100 key/value pairs can be defined at the page level. Each tag can have up to 100 additional key/value pairs defined. Values can be empty. See [Passing Keys Without Values](#appnexus-no-value) below for examples. If you want to pass keywords for all adUnits, see [Auction Level Keywords](#appnexus-auction-keywords) for an example. Note that to use keyword with the Prebid Server adapter, that feature must be enabled for your account by an AppNexus account manager. | `keywords: { genre: ['rock', 'pop'] }` | `object` |
-| `video` | optional | Object containing video targeting parameters. See [Video Object](#appnexus-video-object) for details. | `video: { playback_method: ['auto_play_sound_off'] }` | `object` |
-| `app` | optional | Object containing mobile app parameters. See the [App Object](#appnexus-app-object) for details. | `app : { id: 'app-id'}` | `object` |
-| `reserve` | optional | Sets a floor price for the bid that is returned. If floors have been configured in the AppNexus Console, those settings will override what is configured here unless 'Reserve Price Override' is checked. See [Microsoft Learn](https://learn.microsoft.com/en-us/xandr/monetize/create-a-floor-rule) | `0.90` | `float` |
-| `position` | optional | Identify the placement as above or below the fold. Allowed values: Unknown: `unknown`; Above the fold: `above`; Below the fold: `below` | `'above'` | `string` |
-| `trafficSourceCode` or `traffic_source_code` | optional | Specifies the third-party source of this impression. | `'my_traffic_source'` | `string` |
-| `supplyType` or `supply_type` | optional | Indicates the type of supply for this placement. Possible values are `web`, `mobile_web`, `mobile_app` | `'web'` | `string` |
-| `pubClick` or `pub_click` | optional | Specifies a publisher-supplied URL for third-party click tracking. This is just a placeholder into which the publisher can insert their own click tracker. This parameter should be used for an unencoded tracker. This parameter is expected to be the last parameter in the URL. Please note that the click tracker placed in this parameter will only fire if the creative winning the auction is using AppNexus click tracking properly. | `'http://click.adserver.com/'` | `string` |
-| `extInvCode` or `ext_inv_code` | optional | Specifies predefined value passed on the query string that can be used in reporting. The value must be entered into the system before it is logged. | `'10039'` | `string` |
-| `externalImpId` or `external_imp_id` | optional | Specifies the unique identifier of an externally generated auction. | `'bacbab02626452b097f6030b3c89ac05'` | `string` |
-| `generate_ad_pod_id` | optional | Signal to AppNexus to split impressions by ad pod and add unique ad pod id to each request. Specific to long form video endpoint only. Supported by Prebid Server, not Prebid JS. | `true` | `boolean` |
+|Name|Scope|Description|Example|Type|
+|---|---|---|---|---|
+|`placement_id` (PBS+PBJS) or `placementId` (PBJS)|required|The placement ID from AppNexus. You may identify a placement using the `invCode` and `member` instead of a placement ID. This parameter can be either a `string` or `integer` for Prebid.js, however `integer` is preferred. Legacy code can retain the `string` value. **Prebid Server requires an integer value.**|`234234`|`integer`|
+|`member`|optional|The member ID from AppNexus. Must be used with `invCode`.|'12345'|`string`|
+|`invCode` or `inv_code`|optional|The inventory code from AppNexus. Must be used with `member`.|'abc123'|`string`|
+|`publisherId` or `publisher_id`|optional|The publisher ID from AppNexus. It is used by the AppNexus end point to identify the publisher when placement id is not provided and `invCode` goes wrong. The `publisherId` parameter can be either a `string` or `integer` for Prebid.js, however `integer` is preferred.|12345|`integer`|
+|`frameworks`|optional|Array of integers listing API frameworks for Banner supported by the publisher.|[1,2]|`array of integer`|
+|`user`|optional|Object that specifies information about an external user. See [User Object](#appnexus-user-object) for details.|user: { age: 25, gender: 0, dnt: true }|`object`|
+|`allowSmallerSizes` or `allow_smaller_sizes`|optional|If `true`, ads smaller than the values in your ad unit's `sizes` array will be allowed to serve. Defaults to `false`.|true|`boolean`|
+|`usePaymentRule` (PBJS) or `use_pmt_rule` (PBS+PBJS)|optional|If `true`, Appnexus will return net price to Prebid.js after publisher payment rules have been applied.|true|`boolean`|
+|`keywords`|optional|A set of key-value pairs applied to all ad slots on the page. Mapped to [buy-side segment targeting](https://learn.microsoft.com/en-us/xandr/monetize/segment-targeting) (login required). A maximum of 100 key/value pairs can be defined at the page level. Each tag can have up to 100 additional key/value pairs defined. Values can be empty. See [Passing Keys Without Values](#appnexus-no-value) below for examples. If you want to pass keywords for all adUnits, see [Auction Level Keywords](#appnexus-auction-keywords) for an example. Note that to use keyword with the Prebid Server adapter, that feature must be enabled for your account by an AppNexus account manager.|keywords: { genre: ['rock', 'pop'] }|`object`|
+|`video`|optional|Object containing video targeting parameters. See [Video Object](#appnexus-video-object) for details.|video: { playback_method: ['auto_play_sound_off'] }|`object`|
+|`app`|optional|Object containing mobile app parameters. See the [App Object](#appnexus-app-object) for details.|app : { id: 'app-id' }|`object`|
+|`reserve`|optional|Sets a floor price for the bid that is returned. If floors have been configured in the AppNexus Console, those settings will override what is configured here unless 'Reserve Price Override' is checked. See [Microsoft Learn](https://learn.microsoft.com/en-us/xandr/monetize/create-a-floor-rule)|0.90|`float`|
+|`position`|optional|Identify the placement as above or below the fold. Allowed values: Unknown: `unknown`; Above the fold: `above`; Below the fold: `below`|'above'|`string`|
+|`trafficSourceCode` or `traffic_source_code`|optional|Specifies the third-party source of this impression.|'my_traffic_source'|`string`|
+|`supplyType` or `supply_type`|optional|Indicates the type of supply for this placement. Possible values are `web`, `mobile_web`, `mobile_app`|'web'|`string`|
+|`pubClick` or `pub_click`|optional|Specifies a publisher-supplied URL for third-party click tracking. This is just a placeholder into which the publisher can insert their own click tracker. This parameter should be used for an unencoded tracker. This parameter is expected to be the last parameter in the URL. Please note that the click tracker placed in this parameter will only fire if the creative winning the auction is using AppNexus click tracking properly.|[http://click.adserver.com/](http://click.adserver.com/)|`string`|
+|`extInvCode` or `ext_inv_code`|optional|Specifies predefined value passed on the query string that can be used in reporting. The value must be entered into the system before it is logged.|'10039'|`string`|
+|`externalImpId` or `external_imp_id`|optional|Specifies the unique identifier of an externally generated auction.|'bacbab02626452b097f6030b3c89ac05'|`string`|
+|`generate_ad_pod_id`|optional|Signal to AppNexus to split impressions by ad pod and add unique ad pod id to each request. Specific to long form video endpoint only. Supported by Prebid Server, not Prebid JS.|true|`boolean`|
-#### Video Object
+### 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"`; `"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` |
-| `frameworks` | Array of integers listing API frameworks supported by the publisher. Allowed values: None: `0`; VPAID 1.0: `1`; VPAID 2.0: `2`; MRAID 1.0: `3`; MRAID 2.0: `4`; ORMMA: `5`; OMID 1.0 `6`. | `Array` |
+|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"; "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`|
+|`frameworks`|Array of integers listing API frameworks supported by the publisher. Allowed values: None: `0`; VPAID 1.0: `1`; VPAID 2.0: `2`; MRAID 1.0: `3`; MRAID 2.0: `4`; ORMMA: `5`; OMID 1.0 `6`.|`Array`|
-#### User Object
+### User Object
{: .table .table-bordered .table-striped }
-| Name | Description | Example | Type |
-|-------------------|---------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|------------------|
-| `age` | The age of the user. | `35` | `integer` |
-| `externalUid` or `external_uid` | Specifies a string that corresponds to an external user ID for this user. | `'1234567890abcdefg'` | `string` |
-| `segments` | Specifies the segments to which the user belongs. | `[1, 2]` | `Array` |
-| `gender` | Specifies the gender of the user. Allowed values: Unknown: `0`; Male: `1`; Female: `2` | `1` | `integer` |
-| `dnt` | Do not track flag. Indicates if tracking cookies should be disabled for this auction | `true` | `boolean` |
-| `language` | Two-letter ANSI code for this user's language. | `EN` | `string` |
+|Name|Description|Example|Type|
+|---|---|---|---|
+|`age`|The age of the user.|`35`|`integer`|
+|`externalUid` or `external_uid`|Specifies a string that corresponds to an external user ID for this user.|'1234567890abcdefg'|`string`|
+|`segments`|Specifies the segments to which the user belongs.|[1, 2]|`Array`|
+|`gender`|Specifies the gender of the user. Allowed values: Unknown: `0`; Male: `1`; Female: `2`|1|`integer`|
+|`dnt`|Do not track flag. Indicates if tracking cookies should be disabled for this auction|true|`boolean`|
+|`language`|Two-letter ANSI code for this user's language.|EN|`string`|
-#### App Object
+### App Object
AppNexus supports using prebid within a mobile app's webview. If you are interested in using an SDK, please see [Prebid Mobile]({{site.baseurl}}/prebid-mobile/prebid-mobile.html) instead.
{: .table .table-bordered .table-striped }
-| Name | Description | Example | Type |
-|-------------------|---------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|------------------|
-| `id` | The App ID. | `'B1O2W3M4AN.com.prebid.webview'` | `string` |
-| `device_id` | Object that contains the advertising identifiers of the user (`idfa`, `aaid`, `md5udid`, `sha1udid`, or `windowsadid`). | `{ aaid: "38400000-8cf0-11bd-b23e-10b96e40000d" }` | `object` |
-| `geo` | Object that contains the latitude (`lat`) and longitude (`lng`) of the user. | `{ lat: 40.0964439, lng: -75.3009142 }` | `object` |
+|Name|Description|Example|Type|
+|---|---|---|---|
+|`id`|The App ID.|'B1O2W3M4AN.com.prebid.webview'|`string`|
+|`device_id`|Object that contains the advertising identifiers of the user (`idfa`, `aaid`, `md5udid`, `sha1udid`, or `windowsadid`).|{ aaid: "38400000-8cf0-11bd-b23e-10b96e40000d" }|`object`|
+|`geo`|Object that contains the latitude (`lat`) and longitude (`lng`) of the user.|{ lat: 40.0964439, lng: -75.3009142 }|`object`|
-#### Custom Targeting keys
+### Custom Targeting keys
AppNexus returns custom keys that can be sent to the adserver through bidderSettings: buyerMemberId, dealPriority, and dealCode. The following snippet demonstrates how to add these custom keys as key-value pairs.
@@ -155,7 +158,7 @@ pbjs.bidderSettings = {
-#### Video Bid params and Video MediaTypes params
+### 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.
@@ -165,7 +168,7 @@ If you want to transition from video bid params to use the `mediaTypes.video` pa
-#### Auction Level Keywords
+### Auction Level Keywords
It's possible to pass a set of keywords for the whole request, rather than a particular adUnit. Though they would apply to all adUnits (which include the appnexus bidder) in an auction, these keywords can work together with the bidder level keywords (if for example you want to have specific targeting for a particular adUnit).
@@ -184,7 +187,7 @@ Like in the bidder.params.keywords, the values here can be empty. Please see th
-#### Passing Keys Without Values
+### Passing Keys Without Values
It's possible to use the `keywords` parameter to define keys that do not have any associated values. Keys with empty values can be created in Prebid.js and can also be sent through Prebid Server to AppNexus. The following are examples of sending keys with empty values:
@@ -208,7 +211,7 @@ keywords: {
-#### First Party Data
+### First Party Data
Publishers should use the `ortb2` method of setting [First Party Data](https://docs.prebid.org/features/firstPartyData.html).
@@ -218,22 +221,22 @@ PBS/PSP supports all first party data fields: site, user, segments, and imp-leve
-#### User Sync in AMP
+### User Sync in AMP
If you are syncing user id's with Prebid Server and are using AppNexus' managed service, see [AMP Implementation Guide cookie-sync instructions](/dev-docs/show-prebid-ads-on-amp-pages.html#user-sync) for details.
-
-
-#### Mobile App Display Manager Version
+### Mobile App Display Manager Version
The AppNexus endpoint expects `imp.displaymanagerver` to be populated for mobile app sources
requests, however not all SDKs will populate this field. If the `imp.displaymanagerver` field
is not supplied for an `imp`, but `request.app.ext.prebid.source`
and `request.app.ext.prebid.version` are supplied, the adapter will fill in a value for
-`diplaymanagerver`. It will concatenate the two `app` fields as `-` fo fill in
+`displaymanagerver`. It will concatenate the two `app` fields as `-` to fill in
the empty `displaymanagerver` before sending the request to AppNexus.
-#### Debug Auction
+
+
+### Debug Auction
{: .alert.alert-danger :}
Enabling the AppNexus Debug Auction feature should only be done for diagnosing the AppNexus auction. Do not enable this feature in a production setting where it may impact users.
@@ -247,14 +250,14 @@ To understand what is happening behind the scenes during an auction, you can ena
To view the results of the debug auction, add the `pbjs_debug=true` query string parameter and open your browser's developer console.
{: .table .table-bordered .table-striped }
-| Name | Description | Example | Type |
-|-------------------|-----------------------------------------------------------------|-----------------------|------------------|
-| `enabled` | Toggle the debug auction to occur | `true` | `boolean` |
-| `dongle` | Your account's unique debug password. | `QWERTY` | `string` |
-| `member_id` | The ID of the member running the debug auction | `958` | `integer` |
-| `debug_timeout` | The timeout for the debug auction results to be returned | `3000` | `integer` |
-
-#### Prebid Server Test Request
+|Name|Description|Example|Type|
+|---|---|---|---|
+|`enabled`|Toggle the debug auction to occur|`true`|`boolean`|
+|`dongle`|Your account's unique debug password.|`QWERTY`|`string`|
+|`member_id`|The ID of the member running the debug auction|`958`|`integer`|
+|`debug_timeout`|The timeout for the debug auction results to be returned|`3000`|`integer`|
+
+### Prebid Server Test Request
The following test parameters can be used to verify that Prebid Server is working properly with the
server-side Appnexus adapter. This example includes an `imp` object with an Appnexus test placement ID and sizes
diff --git a/dev-docs/aps.md b/dev-docs/bidders/aps.md
similarity index 100%
rename from dev-docs/aps.md
rename to dev-docs/bidders/aps.md
diff --git a/dev-docs/bidders/asterio.md b/dev-docs/bidders/asterio.md
new file mode 100644
index 0000000000..4061b9217d
--- /dev/null
+++ b/dev-docs/bidders/asterio.md
@@ -0,0 +1,97 @@
+---
+layout: bidder
+title: Asterio
+description: Prebid Asterio Bidder Adapter
+biddercode: asterio
+pbjs: true
+pbs: false
+media_types: banner, video, native
+tcfeu_supported: false
+dsa_supported: false
+gvl_id: none
+usp_supported: false
+coppa_supported: false
+gpp_sids: none
+schain_supported: true
+dchain_supported: false
+userId: none
+safeframes_ok: false
+deals_supported: true
+floors_supported: true
+fpd_supported: false
+prebid_member: false
+multiformat_supported: will-bid-on-any
+ortb_blocking_supported: partial
+sidebarType: 1
+---
+
+## Bid Params
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+| --- | --- | --- | --- | --- |
+| `adUnitToken` | required | Ad unit token provided by Asterio. | `'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'` | `string` |
+| `pos` | optional | Ad position hint. Allowed values follow OpenRTB position conventions, e.g. above the fold: `1`, below the fold: `3`, middle of the fold: `7`. | `1` | `integer` |
+
+## Banner Test Ad Unit
+
+```javascript
+var adUnits = [{
+ code: 'test-banner',
+ mediaTypes: {
+ banner: {
+ sizes: [[300, 250]]
+ }
+ },
+ bids: [{
+ bidder: 'asterio',
+ params: {
+ adUnitToken: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
+ }
+ }]
+}];
+```
+
+## Video Test Ad Unit
+
+```javascript
+var adUnits = [{
+ code: 'test-video',
+ mediaTypes: {
+ video: {
+ context: 'outstream',
+ playerSize: [640, 360],
+ mimes: ['video/mp4'],
+ protocols: [2, 3],
+ playbackmethod: [2],
+ plcmt: 4
+ }
+ },
+ bids: [{
+ bidder: 'asterio',
+ params: {
+ adUnitToken: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
+ }
+ }]
+}];
+```
+
+## Native Test Ad Unit
+
+Asterio uses `adUnitToken` to resolve the ad unit and format. For native ad units, include `mediaTypes.native` and render the returned native assets in the publisher layout. See the [Prebid Native Implementation Guide](/prebid/native-implementation.html) for rendering options.
+
+```javascript
+var adUnits = [{
+ code: 'test-native',
+ mediaTypes: {
+ native: {}
+ },
+ bids: [{
+ bidder: 'asterio',
+ params: {
+ adUnitToken: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
+ }
+ }]
+}];
+```
diff --git a/dev-docs/bidders/attekmi.md b/dev-docs/bidders/attekmi.md
index 7d7be2512b..b6bb311325 100644
--- a/dev-docs/bidders/attekmi.md
+++ b/dev-docs/bidders/attekmi.md
@@ -3,6 +3,8 @@ layout: bidder
title: Attekmi
description: Attekmi Bidder Adapter
biddercode: smarthub
+redirect_from:
+ - /dev-docs/bidders/smarthub
usp_supported: true
media_types: banner, video, native
tcfeu_supported: false
@@ -20,24 +22,26 @@ multiformat_supported: true
sidebarType: 1
---
-### Prebid.js Bid Params
+## Prebid.js Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|---------------------------------|-------------------------------------|-----------|
-| `partnerName` | required | Unique partner name | `'partnertest'` | `string` |
-| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
-| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
-| `region` | optional | Region | `apac` | `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
+| Name | Scope | Description | Example | Type |
+| :------------ | :------- | :----------------------------------------------------------------- | :----------------------------------- | :-------------- |
+| `partnerName` | required | Unique partner name | `'partnertest'` | `string` |
+| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
+| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
+| `region` | optional | Region | `apac` | `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 OpenRTB spec v2.5. | `4` | `number` |
+
+## Prebid Server Bid Params
{: .table .table-bordered .table-striped }
+
| Name | Scope | Description | Example | Type |
-|---------------|----------|---------------------|--------------------------------------|----------|
+| :------------ | :------- | :------------------ | :----------------------------------- | :------- |
| `partnerName` | required | Unique partner name | `'partnertest'` | `string` |
| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` |
| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` |
diff --git a/dev-docs/bidders/billow_rtb25.md b/dev-docs/bidders/billow_rtb25.md
new file mode 100644
index 0000000000..1e161b5035
--- /dev/null
+++ b/dev-docs/bidders/billow_rtb25.md
@@ -0,0 +1,135 @@
+---
+layout: bidder
+title: Billowlink
+description: Prebid Billowlink OpenRTB 2.5 Bidder Adapter
+pbjs: true
+pbs: false
+pbs_app_supported: false
+biddercode: billow_rtb25
+media_types: banner, video, native
+tcfeu_supported: false
+usp_supported: false
+coppa_supported: false
+gpp_sids: none
+schain_supported: true
+dchain_supported: false
+floors_supported: false
+fpd_supported: true
+safeframes_ok: true
+deals_supported: false
+prebid_member: false
+multiformat_supported: will-bid-on-any
+ortb_blocking_supported: false
+privacy_sandbox: no
+gvl_id: none
+sidebarType: 1
+---
+
+## Note
+
+The Billowlink bidder adapter requires setup and approval before beginning. Please reach out to for more details.
+
+This adapter sends requests to Billowlink using OpenRTB 2.5. Billowlink bids are returned in USD.
+
+## Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|---------------|----------|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------|-----------------------|
+| `placementId` | required | Placement ID configured on the Billowlink side. This value is sent as OpenRTB `imp.tagid`. | `'12345'` | `string` |
+| `endpoint` | optional | Overrides the default Billowlink bid endpoint. This is normally only needed for testing or staging. | `'https://adx-sg.billowlink.com/api/rtb/adsWeb'` | `string` |
+
+## First Party Data
+
+Publishers should use the `ortb2` method of setting [First Party Data](https://docs.prebid.org/features/firstPartyData.html).
+The adapter uses Prebid's OpenRTB converter, so standard request-level and impression-level ORTB data can be included in the outgoing request.
+
+## Ad Unit Setup for Banner
+
+```javascript
+var adUnits = [{
+ code: 'div-gpt-ad-123456-1',
+ mediaTypes: {
+ banner: {
+ sizes: [[300, 250], [728, 90]]
+ }
+ },
+ bids: [{
+ bidder: 'billow_rtb25',
+ params: {
+ placementId: '12345'
+ }
+ }]
+}];
+```
+
+## Ad Unit Setup for Video
+
+```javascript
+var adUnits = [{
+ code: 'video-ad-unit',
+ mediaTypes: {
+ video: {
+ context: 'instream',
+ playerSize: [640, 480],
+ mimes: ['video/mp4'],
+ minduration: 1,
+ maxduration: 120,
+ protocols: [2, 3, 5, 6]
+ }
+ },
+ bids: [{
+ bidder: 'billow_rtb25',
+ params: {
+ placementId: 'video-placement-123'
+ }
+ }]
+}];
+```
+
+For outstream video, publishers must provide a renderer through the ad unit or use their standard video integration.
+
+## Ad Unit Setup for Native
+
+```javascript
+var adUnits = [{
+ code: 'native-ad-unit',
+ mediaTypes: {
+ native: {
+ ortb: {
+ ver: '1.2',
+ assets: [
+ { id: 1, required: 1, title: { len: 80 } },
+ { id: 2, required: 1, img: { type: 3, wmin: 100, hmin: 100 } }
+ ]
+ }
+ }
+ },
+ bids: [{
+ bidder: 'billow_rtb25',
+ params: {
+ placementId: 'native-placement-123'
+ }
+ }]
+}];
+```
+
+## Endpoint Override
+
+```javascript
+var adUnits = [{
+ code: 'div-gpt-ad-123456-2',
+ mediaTypes: {
+ banner: {
+ sizes: [[300, 250]]
+ }
+ },
+ bids: [{
+ bidder: 'billow_rtb25',
+ params: {
+ placementId: '12345',
+ endpoint: 'https://adx-sg.billowlink.com/api/rtb/adsWeb'
+ }
+ }]
+}];
+```
diff --git a/dev-docs/bidders/clickio.md b/dev-docs/bidders/clickio.md
new file mode 100644
index 0000000000..56eb616ce6
--- /dev/null
+++ b/dev-docs/bidders/clickio.md
@@ -0,0 +1,36 @@
+---
+layout: bidder
+title: Clickio
+description: Clickio Bidder Adapter
+biddercode: clickio
+pbjs: true
+pbs: false
+gvl_id: 1500
+tcfeu_supported: true
+usp_supported: true
+gpp_sids: tcfeu, usnat
+coppa_supported: true
+schain_supported: true
+userId: all
+media_types: banner
+floors_supported: true
+safeframes_ok: true
+multiformat_supported: will-bid-on-one
+ortb_blocking_supported: false
+privacy_sandbox: no
+prebid_member: false
+sidebarType: 1
+---
+
+## Note
+
+The Clickio bid adapter connects to Clickio's demand platform using OpenRTB 2.5 standard. This adapter supports banner advertising.
+
+The Clickio bidding adapter requires initial setup before use. Please contact us at [support@clickio.com](mailto:support@clickio.com).
+To get started, simply replace the ``said`` with the ID assigned to you.
+
+## Bid Params
+
+| Name | Scope | Description | Example | Type |
+|--------|----------|--------------|-----------|----------|
+| `said` | required | Site Area ID | `'11111'` | `string` |
diff --git a/dev-docs/bidders/connectad.md b/dev-docs/bidders/connectad.md
index ec7418a887..2023a3debe 100644
--- a/dev-docs/bidders/connectad.md
+++ b/dev-docs/bidders/connectad.md
@@ -1,34 +1,115 @@
---
layout: bidder
title: ConnectAd
-description: ConnectAd Prebid Adaptor
+description: ConnectAd Prebid Adapter
biddercode: connectad
-media_types: banner
+media_types: banner, video, native, audio
tcfeu_supported: true
usp_supported: true
coppa_supported: true
+gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp
schain_supported: true
+dchain_supported: true
userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId
prebid_member: true
safeframes_ok: true
floors_supported: true
+deals_supported: true
pbjs: true
pbs: true
+pbs_app_supported: true
+fpd_supported: true
+ortb_blocking_supported: true
gvl_id: 138
+multiformat_supported: will-bid-on-any
sidebarType: 1
+endpoint_compression: true
---
-### Prebid Server Note
-
-{% include dev-docs/pbjs-adapter-required-for-pbs.md %}
+## Prebid Server Note
Please reach out to your ConnectAd Account Manager before configuring the S2S adapter for approval and setup.
-### Bid Params
+The ConnectAd server-side adapters (Java and Go) have been modernized to fully support **Video** and **Native** ad formats, OpenRTB 2.6 dynamic bid type resolution, and complete request payload (`imp.ext`) preservation.
+
+## Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|-------------|----------|--------------------------------|---------|-----------|
-| `siteId` | required | The site ID from ConnectAd. | 12345 | integer |
-| `networkId` | required | The network ID from ConnectAd. | 10047 | integer |
-| `bidfloor` | optional | Requested Floorprice | 0.15 | number |
+| Name | Scope | Description | Example | Type |
+| --- | --- | --- | --- | --- |
+| `siteId` | required | The site ID from ConnectAd. | 12345 | integer |
+| `networkId` | required | The network ID from ConnectAd. | 10047 | integer |
+| `bidfloor` | optional | Requested floor price, used as a fallback when the Price Floors module does not set one. | 0.15 | number |
+| `endpointUrl` | optional | Prebid.js only: override the bid endpoint URL for testing or a custom datacenter. Ignored by Prebid Server. | `https://i.connectad.io/api/v3` | string |
+
+## Additional Features
+
+- **Video & Native Support**: ConnectAd now supports standard Prebid Video and Native formats via the `ortbConverter`.
+- **Viewability Measurement**: The Prebid.js adapter natively integrates standardized viewability measurement (`percentInView`).
+- **OpenRTB 2.6**: Full support for OpenRTB 2.6 standards, including dynamic bid type resolution.
+
+## User Sync
+
+ConnectAd recommends enabling user syncing via iFrame. This significantly improves user match rates and overall monetization performance. Be sure to call `pbjs.setConfig()` only once.
+
+```javascript
+pbjs.setConfig({
+ userSync: {
+ iframeEnabled: true,
+ filterSettings: {
+ iframe: {
+ bidders: ['connectad'],
+ filter: 'include'
+ }
+ }
+ }
+});
+```
+
+**Note:** *Combine the above configuration with any other UserSync configuration. Multiple `setConfig()` calls overwrite each other and only the last call for a given attribute will take effect.*
+
+## First Party Data
+
+Publishers should use the `ortb2` method of setting [First Party Data](/features/firstPartyData.html). The following fields are supported:
+
+- `ortb2.site.*`
+- `ortb2.user.*`
+
+AdUnit-specific data is supported using `adUnit.ortb2Imp.ext.*`:
+
+```javascript
+pbjs.setConfig({
+ ortb2: {
+ site: {
+ keywords: 'sports, news',
+ content: {
+ language: 'en'
+ }
+ },
+ user: {
+ keywords: 'automotive'
+ }
+ }
+});
+```
+
+## Endpoint Compression
+
+The ConnectAd adapter supports gzip compression for outgoing requests, which is built into Prebid.js core. For more information, see [Compression Support for Outgoing Requests](/dev-docs/bidder-adaptor.html#compression-support-for-outgoing-requests).
+
+### Disabling Compression
+
+You can disable gzip compression at the bidder level using `pbjs.setBidderConfig`. Set the `gzipEnabled` value to `false`:
+
+```javascript
+pbjs.que.push(function () {
+ pbjs.setBidderConfig({
+ bidders: ['connectad'],
+ config: {
+ gzipEnabled: false
+ }
+ });
+});
+```
+
+
diff --git a/dev-docs/bidders/cortex.md b/dev-docs/bidders/cortex.md
new file mode 100644
index 0000000000..30617aa6cf
--- /dev/null
+++ b/dev-docs/bidders/cortex.md
@@ -0,0 +1,35 @@
+---
+layout: bidder
+title: Cortex
+description: Prebid Cortex Adapter
+biddercode: cortex
+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 you only need to use one parameter: either `placementId` or `endpointId`
diff --git a/dev-docs/bidders/datafusion.md b/dev-docs/bidders/datafusion.md
new file mode 100644
index 0000000000..c4a6ee4278
--- /dev/null
+++ b/dev-docs/bidders/datafusion.md
@@ -0,0 +1,38 @@
+---
+layout: bidder
+title: Datafusion
+description: Prebid Datafusion Adaptor
+biddercode: datafusion
+pbjs: true
+pbs: false
+media_types: banner, video, audio, native
+userIds: all
+fpd_supported: false
+tcfeu_supported: false
+usp_supported: true
+coppa_supported: true
+schain_supported: true
+prebid_member: false
+ortb_blocking_supported: true
+multiformat_supported: will-bid-on-one
+floors_supported: false
+aliasCode: limelightDigital
+sidebarType: 1
+---
+
+## Note
+
+The Datafusion adapter requires setup before beginning.
+
+## Bid Params
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+|:--------------|:---------|:----------------------|:-------------------------|:----------|
+| `host` | required | Ad network's RTB host | `'ssp-data-fusion.bid'` | `string` |
+| `publisherId` | required | Publisher ID | `12345` | `integer` |
+
+Prebid Datafusion server-side Prebid Server adapter requires only `publisherId` and `host` parameters. But Prebid Datafusion client-side Prebid.js adapter requires only `host`, `adUnitId`, `adUnitType`.
+
+Prebid Datafusion server-side Prebid Server adapter supports only `banner`, `video`, `audio`, `native` media types. But Prebid Datafusion client-side Prebid.js adapter supports only `banner` and `video` media types, doesn't support `audio` and `native`.
diff --git a/dev-docs/bidders/definemedia.md b/dev-docs/bidders/defineMedia.md
similarity index 53%
rename from dev-docs/bidders/definemedia.md
rename to dev-docs/bidders/defineMedia.md
index 57a8d1cb1d..4e38afade2 100644
--- a/dev-docs/bidders/definemedia.md
+++ b/dev-docs/bidders/defineMedia.md
@@ -2,7 +2,9 @@
layout: bidder
title: DEFINE MEDIA
description: Prebid DEFINE MEDIA Bidder Adapter
-biddercode: definemedia
+biddercode: defineMedia
+redirect_from:
+ - /dev-docs/bidders/definemedia.html
tcfeu_supported: true
gvl_id: 440
media_types: banner
@@ -15,14 +17,14 @@ prebid_member: false
sidebarType: 1
---
-### Registration
+## Registration
Please reach out to our account management team to get started. Contact information is available under [definemedia.de](https://definemedia.de).
-### Bid Params
+## Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Type | Description | Example
-| ---- | ----- |---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------| -------
-| `supplierDomainName` | required | String | The domain name of the last supplier in the chain. Under this domain a sellers.json must be available under https://${supplierDomainName}/sellers.json | definemedia.de
-| `devMode` | optional | boolean | This parameter enables our development endpoint instead of the production endpoint. All requests done with this parameter set to "true" are *NOT* billable | true
+| Name | Scope | Type | Description | Example |
+| :------------------- | :------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |
+| `supplierDomainName` | required | String | The domain name of the last supplier in the chain. Under this domain a sellers.json must be available under https://${supplierDomainName}/sellers.json | definemedia.de |
+| `devMode` | optional | boolean | This parameter enables our development endpoint instead of the production endpoint. All requests done with this parameter set to "true" are *NOT* billable | true |
diff --git a/dev-docs/bidders/dpai.md b/dev-docs/bidders/dpai.md
index 5ad9312893..a864ef1819 100644
--- a/dev-docs/bidders/dpai.md
+++ b/dev-docs/bidders/dpai.md
@@ -16,8 +16,8 @@ media_types: banner, video, native
multiformat_supported: will-bid-on-one
userIds: all
pbjs: true
-pbs: false
-pbs_app_supported: false
+pbs: true
+pbs_app_supported: true
safeframes_ok: true
sidebarType: 1
---
diff --git a/dev-docs/bidders/e_volution.md b/dev-docs/bidders/e_volution.md
index 0d061f302c..66edbff545 100644
--- a/dev-docs/bidders/e_volution.md
+++ b/dev-docs/bidders/e_volution.md
@@ -23,20 +23,23 @@ safeframes_ok: true
sidebarType: 1
---
-### Note
+## Note
The E-volution Bidding adapter requires setup before beginning. Please contact us at
-### Prebid.JS Bid Params
+## Prebid.JS Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|-----------------------|-----------|-----------|
-| `placementId` | required | E-volution tech placement id | `'1234asdf'` | `'string'` |
-### Prebid Server Bid Params
+| Name | Scope | Description | Example | Type |
+|---------------|----------|--------------|---------|----------|
+| `placementId` | optional | Placement Id | `'0'` | `string` |
+| `endpointId` | optional | Endpoint Id | `'0'` | `string` |
+
+## Prebid Server Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|-----------------------|-----------|-----------|
-| `key` | required | E-volution integration key | `'cf64c93f277afdd928d8260653d7413d'` | `'string'` |
+
+| Name | Scope | Description | Example | Type |
+|-------|----------|-----------------------------|--------------------------------------|----------|
+| `key` | required | E-volution integration key | `'cf64c93f277afdd928d8260653d7413d'` | `string` |
diff --git a/dev-docs/bidders/embimedia.md b/dev-docs/bidders/embimedia.md
index be3fd3dd02..f62df5b55f 100644
--- a/dev-docs/bidders/embimedia.md
+++ b/dev-docs/bidders/embimedia.md
@@ -20,11 +20,11 @@ aliasCode: limelightDigital
sidebarType: 1
---
-### Note
+## Note
The Embi Media Bidding adapter requires setup before beginning.
-### Bid Params
+## Bid Params
{: .table .table-bordered .table-striped }
@@ -32,3 +32,7 @@ The Embi Media Bidding adapter requires setup before beginning.
|:--------------|:---------|:----------------------|:-----------------------|:----------|
| `host` | required | Ad network's RTB host | `'bidder-embi.media'` | `string` |
| `publisherId` | required | Publisher ID | `12345` | `integer` |
+
+Prebid Embi Media server-side Prebid Server adapter requires only `publisherId` and `host` parameters. But Prebid Embi Media client-side Prebid.js adapter requires only `host`, `adUnitId`, `adUnitType`.
+
+Prebid Embi Media server-side Prebid Server adapter supports only `banner`, `video`, `audio`, `native` media types. But Prebid Embi Media client-side Prebid.js adapter supports only `banner` and `video` media types, doesn't support `audio` and `native`.
diff --git a/dev-docs/bidders/emetriq.md b/dev-docs/bidders/emetriq.md
deleted file mode 100644
index 17b59ae32b..0000000000
--- a/dev-docs/bidders/emetriq.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: bidder
-title: emetriq
-description: emetriq Bidder Adapter
-biddercode: emetriq
-aliasCode: appnexus
-tcfeu_supported: true
-gvl_id: 213
-schain_supported: true
-userId: all
-media_types: banner, video, native
-safeframes_ok: true
-deals_supported: true
-pbjs: true
-pbs: true
-prebid_member: false
-multiformat_supported: will-bid-on-any
-sidebarType: 1
----
-### Bid Params
-
-{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|---------------|----------|-----------------------|-----------|-----------|
-| `placement_id` (PBS+PBJS) or `placementId` (PBJS) | required | Placement id | `'32068254'` | `string` |
-
-emetriq is an aliased bidder for AppNexus.
-
-### Note
-
-For setup with emetriq, please reach out to [admins@emetriq.com](mailto:admins@emetriq.com)
diff --git a/dev-docs/bidders/engerio.md b/dev-docs/bidders/engerio.md
new file mode 100644
index 0000000000..5ce31d6211
--- /dev/null
+++ b/dev-docs/bidders/engerio.md
@@ -0,0 +1,37 @@
+---
+layout: bidder
+title: Engerio
+description: Prebid Engerio Bidder Adapter
+biddercode: engerio
+tcfeu_supported: false
+dsa_supported: false
+gvl_id: none
+usp_supported: false
+coppa_supported: false
+gpp_sids: none
+schain_supported: false
+dchain_supported: false
+media_types: banner
+safeframes_ok: true
+deals_supported: false
+floors_supported: false
+fpd_supported: false
+pbjs: true
+pbs: false
+prebid_member: false
+multiformat_supported: will-not-bid
+ortb_blocking_supported: false
+privacy_sandbox: no
+sidebarType: 1
+---
+
+### Note
+
+The Engerio adapter requires an active publisher account. Please contact [info@thinkeasy.cz](mailto:info@thinkeasy.cz) to obtain an ad slot code (`adUnitCode`) for your placement.
+
+### Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|------|-------|-------------|---------|------|
+| `adUnitCode` | required | The ad slot identifier configured in the Engerio admin for this placement. | `'homepage-sidebar'` | `string` |
diff --git a/dev-docs/bidders/eskimi.md b/dev-docs/bidders/eskimi.md
index c4e7ce5c61..0a686289ab 100644
--- a/dev-docs/bidders/eskimi.md
+++ b/dev-docs/bidders/eskimi.md
@@ -3,7 +3,8 @@ layout: bidder
title: Eskimi
description: Prebid Eskimi Bidder Adapter
pbjs: true
-pbs: false
+pbs: true
+pbs_app_supported: true
biddercode: eskimi
media_types: banner, video
schain_supported: true
@@ -21,7 +22,7 @@ gvl_id: 814
sidebarType: 1
---
-### Bid Params
+## Bid Params
{: .table .table-bordered .table-striped }
@@ -31,10 +32,10 @@ sidebarType: 1
| `bcat` | optional | ORTB blocked categories | `['IAB-1-1']` | `string[]`|
| `badv` | optional | ORTB blocked advertiser domains | `['example.com']` | `string[]`|
| `bapp` | optional | ORTB blocked applications | `['com.example.game']` | `string[]`|
-| `bidFloor` | optional | Minimum CPM | `0.3` | `number` |
-| `bidFloorCur` | optional | Currency of bid floor | `'USD'` | `string` |
-| `coppa` | optional | Set to `true` to enable COPPA | `true` | `boolean` |
-| `test` | optional | Set to `1` to enable test mode | `1` | `integer` |
+| `bidFloor` | optional | Minimum CPM | `0.3` | `number` |
+| `bidFloorCur` | optional | Currency of bid floor | `'USD'` | `string` |
+| `coppa` | optional | Set to `true` to enable COPPA | `true` | `boolean` |
+| `test` | optional | Set to `1` to enable test mode | `1` | `integer` |
Additionally `battr` ORTB blocking param may be set on `BANNER` and `VIDEO` media types to specify blocked creative
attributes.
diff --git a/dev-docs/bidders/ferio.md b/dev-docs/bidders/ferio.md
new file mode 100644
index 0000000000..4ba0ad93fe
--- /dev/null
+++ b/dev-docs/bidders/ferio.md
@@ -0,0 +1,31 @@
+---
+layout: bidder
+title: Ferio
+description: Ferio Prebid Bidder Adapter
+biddercode: ferio
+gvl_id: none
+usp_supported: true
+gpp_sids: none
+schain_supported: true
+media_types: banner, video, native
+floors_supported: true
+fpd_supported: true
+userIds: all
+pbjs: true
+pbs: false
+multiformat_supported: will-bid-on-any
+sidebarType: 1
+---
+
+## Note
+
+The Ferio bidder adapter requires setup before beginning. Please contact for more information.
+
+## Prebid.js Bid Params
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+| --------------- | ---------- | ------------------------------------ | ----------------------------------- | ---------- |
+| `publisherId` | required | Publisher ID on the Ferio platform | `'pubwZR87JRDZSf6V'` | `string` |
+| `adUnitId` | required | Ad unit ID on the Ferio platform | `'3855715c-2ceb-4ba5-a876-8c43a987f210'` | `string` |
+| `tenantId` | required | Tenant ID on the Ferio platform | `'client-pbjs'` | `string` |
diff --git a/dev-docs/bidders/goadserver.md b/dev-docs/bidders/goadserver.md
new file mode 100644
index 0000000000..5a62c5fc67
--- /dev/null
+++ b/dev-docs/bidders/goadserver.md
@@ -0,0 +1,170 @@
+---
+layout: bidder
+title: GoAdserver
+description: Prebid GoAdserver Bidder Adapter
+pbjs: true
+pbs: false
+biddercode: goadserver
+userIds:
+media_types: banner, video, native
+schain_supported: true
+dchain_supported: false
+ortb_blocking_supported: partial
+floors_supported: true
+multiformat_supported: will-bid-on-any
+tcfeu_supported: false
+dsa_supported: false
+gvl_id: none
+usp_supported: true
+coppa_supported: true
+gpp_sids: none
+userId: no
+safeframes_ok: true
+deals_supported: true
+fpd_supported: true
+prebid_member: false
+privacy_sandbox: no
+sidebarType: 1
+---
+
+## Note
+
+GoAdserver is a self-hosted, multi-tenant ad serving platform with a built-in OpenRTB 2.5 Prebid Server endpoint. One adapter (`goadserver`) serves every deployment — the specific ad server is selected per-ad-unit via `params.host`, and the publisher's SSP campaign authentication token (issued in the GoAdserver panel) is passed via `params.token`. Publishers running multiple GoAdserver instances can mix and match them in a single Prebid.js config by setting different `params.host` values on different ad units.
+
+Requests are POSTed to `https://{params.host}/openrtb2/auction`. The token lands in the outgoing BidRequest as `site.publisher.id`, which the GoAdserver auction handler uses to resolve the publisher account.
+
+For setup or to obtain a token, contact .
+
+## Bid Parameters
+
+{: .table .table-bordered .table-striped }
+
+| Name | Scope | Description | Example | Type |
+| --- | --- | --- | --- | --- |
+| `host` | required | The GoAdserver deployment's public domain. The adapter POSTs to `https://{host}/openrtb2/auction`. | `"ads.example.com"` | `string` |
+| `token` | required | SSP campaign authentication token from the publisher's GoAdserver panel. Forwarded as `site.publisher.id`. | `"a1b2c3d4..."` | `string` |
+| `floor` | optional | Per-bid CPM floor (USD). Honored only when the [Price Floors module](/dev-docs/modules/floors.html) hasn't already set `imp.bidfloor`. | `0.50` | `number` |
+| `subid` | optional | Per-impression sub-identifier for stats attribution (page section, A/B group, etc.). Emitted as `imp.ext.goadserver.subid` and logged against the bid in GoAdserver reporting. | `"article_page"` | `string` |
+| `deals` | optional | Array of private marketplace deal objects attached to this impression. Each entry maps to OpenRTB `imp.pmp.deals[]`: `id` (required), `bidfloor`, `bidfloorcur`, `at`, `wseat[]`, `wadomain[]`. See example below. | see below | `Object[]` |
+| `outstreamRendererUrl` | optional | Override URL for the outstream video renderer script. Defaults to `https://{host}/prebid-outstream.js`, which every GoAdserver deployment hosts. Set this to self-host or bundle a custom player. | `"https://cdn.pub.example.com/my-outstream.js"` | `string` |
+
+## Deals / Private Marketplace
+
+```js
+bids: [{
+ bidder: 'goadserver',
+ params: {
+ host: 'ads.example.com',
+ token: 'your-sspcampaigns-hash',
+ deals: [
+ { id: 'DEAL_XYZ', bidfloor: 2.50, bidfloorcur: 'USD' },
+ { id: 'DEAL_ABC', bidfloor: 1.00, at: 1, wseat: ['agency-42'] }
+ ]
+ }
+}]
+```
+
+Deal objects are forwarded verbatim to downstream DSPs. Winning bids return with `bid.dealid`, surfaced by Prebid.js as `bid.dealId` for GAM line-item targeting.
+
+## Outstream Video
+
+Outstream is supported via the standard `mediaTypes.video.context: 'outstream'` setting. When a video bid is returned for an outstream ad unit, the adapter attaches a Prebid.js `Renderer` that loads the GoAdserver-hosted outstream player. The player parses the VAST XML, injects a muted auto-playing `