diff --git a/CNAME b/CNAME
index 3c93479163..d329f03eb1 100644
--- a/CNAME
+++ b/CNAME
@@ -1 +1 @@
-prebid.org
\ No newline at end of file
+docs.prebid.org
\ No newline at end of file
diff --git a/_includes/adops/adops-gam-video-setup.html b/_includes/adops/adops-gam-video-setup.html
index 67ea3ac629..5aa6714df9 100644
--- a/_includes/adops/adops-gam-video-setup.html
+++ b/_includes/adops/adops-gam-video-setup.html
@@ -49,13 +49,13 @@
Single Cache Location
If you’re using a single order for all bidders, then the VAST URL will be the same for each bidder:
https://prebid.adnxs.com/pbc/v1/cache?uuid=%%PATTERN:hb_uuid_BIDDERCODE%%
or
[other bidder cache location]
diff --git a/dev-docs/bidders/adbutler.md b/dev-docs/bidders/adbutler.md
index 6cfe2d661b..bca389de36 100644
--- a/dev-docs/bidders/adbutler.md
+++ b/dev-docs/bidders/adbutler.md
@@ -10,10 +10,11 @@ biddercode: adbutler
### Bid Params
{: .table .table-bordered .table-striped }
-| Name | Scope | Description | Example | Type |
-|-------------|----------|--------------------------------------|------------------|----------|
-| `accountID` | required | Account ID | `'167283'` | `string` |
-| `zoneID` | required | Zone ID | `'210093'` | `string` |
-| `keyword` | optional | Keyword(s) used for custom targeting | `'green,orange'` | `string` |
-| `minCPM` | optional | Minimum CPM value to accept | `'1.00'` | `string` |
-| `maxCPM` | optional | Maximum CPM value to accept | `'5.00'` | `string` |
+| Name | Scope | Description | Example | Type |
+|-------------|----------|------------------------------------------------------|------------------|----------|
+| `accountID` | required | Account ID | `'167283'` | `string` |
+| `zoneID` | required | Zone ID | `'210093'` | `string` |
+| `keyword` | optional | Keyword(s) used for custom targeting | `'green,orange'` | `string` |
+| `minCPM` | optional | Minimum CPM value to accept | `'1.00'` | `string` |
+| `maxCPM` | optional | Maximum CPM value to accept | `'5.00'` | `string` |
+| `extra` | optional | Pass other AdButler parameters like 'tuid' or 'kw' | `{kw: "green"}` | `object` |
diff --git a/dev-docs/bidders/apstream.md b/dev-docs/bidders/apstream.md
new file mode 100644
index 0000000000..e85fb3cd51
--- /dev/null
+++ b/dev-docs/bidders/apstream.md
@@ -0,0 +1,97 @@
+# Overview
+
+```
+Module Name: AP Stream Bidder Adapter
+Module Type: Bidder Adapter
+Maintainer: stream@audienceproject.com
+gdpr_supported: true
+tcf2_supported: true
+```
+
+# Description
+
+Module that connects to AP Stream source
+
+# Inherit from prebid.js
+```
+ var adUnits = [
+ {
+ code: '/19968336/header-bid-tag-1',
+ mediaTypes: { // mandatory and should be only one
+ banner: {
+ sizes: [[920,180], [920, 130]]
+ }
+ },
+ bids: [{
+ bidder: 'apstream',
+ params: {
+ publisherId: STREAM_PIBLISHER_ID // mandatory
+ }
+ }]
+ }
+ ];
+```
+
+# Explicit ad-unit code
+```
+ var website = null;
+ switch (location.hostname) {
+ case "site1.com":
+ website = "S1";
+ break;
+ case "site2.com":
+ website = "S2";
+ break;
+ }
+
+ var adUnits = [
+ {
+ code: '/19968336/header-bid-tag-1',
+ mediaTypes: { // mandatory and should be only one
+ banner: {
+ sizes: [[920,180], [920, 130]]
+ }
+ },
+ bids: [{
+ bidder: 'apstream',
+ params: {
+ publisherId: STREAM_PIBLISHER_ID, // mandatory
+ code: website + '_Leaderboard'
+ }
+ }]
+ }
+ ];
+```
+
+# Explicit ad-unit ID
+```
+ var adUnits = [
+ {
+ code: '/19968336/header-bid-tag-1',
+ mediaTypes: { // mandatory and should be only one
+ banner: {
+ sizes: [[920,180], [920, 130]]
+ }
+ },
+ bids: [{
+ bidder: 'apstream',
+ params: {
+ publisherId: STREAM_PIBLISHER_ID, // mandatory
+ adunitId: 1234
+ }
+ }]
+ }
+ ];
+```
+
+# DSU
+
+To disable DSU use config option:
+
+```
+ pbjs.setConfig({
+ apstream: {
+ noDsu: true
+ }
+ });
+```
\ No newline at end of file
diff --git a/dev-docs/bidders/rubicon.md b/dev-docs/bidders/rubicon.md
index d09e94101c..bd396a0996 100644
--- a/dev-docs/bidders/rubicon.md
+++ b/dev-docs/bidders/rubicon.md
@@ -10,7 +10,7 @@ usp_supported: true
coppa_supported: true
schain_supported: true
media_types: video
-userIds: identityLink, liveIntentId, pubCommonId, unifiedId
+userIds: identityLink, liveIntentId, unifiedId
prebid_member: true
safeframes_ok: true
---
diff --git a/dev-docs/bidders/undertone.md b/dev-docs/bidders/undertone.md
index 8afca67afa..17d7903ebf 100644
--- a/dev-docs/bidders/undertone.md
+++ b/dev-docs/bidders/undertone.md
@@ -19,6 +19,17 @@ userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrable
| `placementId` | optional | Your placement ID (provided by undertone) | `"13as14d0"` | `string` |
| `publisherId` | required | publisher ID (provided by undertone) | `12345` | `integer` |
+
+#### Video Object
+
+{: .table .table-bordered .table-striped }
+| Name | Scope | Description | Example | Type |
+|------------------|----------|------------------------------------------------|-------------------------------------------|-----------------|
+| `playbackMethod` | optional | Playback method supported by the publisher. `1`: Auto-play sound on `2`: Auto-play sound off `3`: Click-to-play sound on `4`: Mouse-over sound on| `1` | `integer` |
+| `maxDuration` | optional | Maximum video ad duration in seconds. | `30` | `integer` |
+| `skippable` | optional | Skippability of the inventory. Possible values: `true` - only skippable inventory is allowed, `false` - skippable inventory is not allowed, null/missing - all inventory is allowed (default value). | `true` | `boolean` |
+
+
### Configuration
To maximize revenue efficiency, please enable iframe-based user syncing. This functionality will improve user match rates and will help increasing the bid rate.
diff --git a/dev-docs/conditional-ad-units.md b/dev-docs/conditional-ad-units.md
index 855f1677ac..c4073de26f 100644
--- a/dev-docs/conditional-ad-units.md
+++ b/dev-docs/conditional-ad-units.md
@@ -30,7 +30,7 @@ See the [Publisher API reference]({{site.baseurl}}/dev-docs/publisher-api-refere
## What if some bidders should be skipped for some devices?
{: .alert.alert-info :}
-See the [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) for another way to handle this scenario.
+See the [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) for another way to handle this scenario. Note that you must use Advanced Size Mapping for mediaTypes other than banner.
Say a particular bidder is focused on mobile phone demand, so it's really not worthwhile
to send them requests from display or tablets.
@@ -107,7 +107,7 @@ For instance, say that a given bidder wants to define different placements for d
| Display | 1111 |
| Phones and tablets | 2222 |
-### Using the Global sizeConfig Approach
+### Using the Global sizeConfig Approach (Banner only)
Assuming the same `sizeConfig` as in the first use case above, the AdUnit would contain bids for both
placements, but the conditional `labelAny` is added to them both. This will cause the bid to be fired only if one
@@ -191,7 +191,7 @@ var AdUnits = [{
## What if some ad unit auctions should be skipped entirely for some devices?
Say there's a responsive page where one of the ad units only supports larger sizes, so it doesn't make sense
-on phones. To suppress the ad unit for mobile users, we can apply conditional logic to the entire ad unit. For example:
+on phones. To suppress the ad unit for mobile users, we can apply conditional logic to the entire ad unit. Here's an example using the global sizeConfig approach (banner only):
{% highlight js %}
@@ -219,6 +219,8 @@ var AdUnits = [{
]
}]
+See the [Advanced Size Mapping module](/dev-docs/modules/sizeMappingV2.html) if you need to do something like this for video.
+
{% endhighlight %}
## What if some bid requests apply only to users originating certain from countries?
diff --git a/dev-docs/faq.md b/dev-docs/faq.md
index e7c48c1a76..fdbd0277f5 100644
--- a/dev-docs/faq.md
+++ b/dev-docs/faq.md
@@ -125,7 +125,7 @@ See [the GitHub release schedule](https://github.com/prebid/Prebid.js/blob/maste
## When do I have to upgrade my version of Prebid.js?
-Prebid.org does not support any version of Prebid.js prior to version 1.0. If you want continued support through updates and documentation you should upgrade to a newer version.
+Prebid.org does not support any version of Prebid.js prior to the previous version. e.g. if the current version is 4.x, we'll help debug 3.x, but not 2.x. If you want continued support through updates and documentation you should upgrade to a newer version.
## How can I change the price granularity for different ad units?
@@ -148,6 +148,15 @@ benefits for sending more than one bid.
Once you find the right balance for your application, you can specify
what's sent to the ad server with [targetingControls.auctionKeyMaxChars](/dev-docs/publisher-api-reference.html#setConfig-targetingControls) and/or [sendBidsControl.bidLimit](/dev-docs/publisher-api-reference.html#setConfig-Send-Bids-Control)
+## Can I run multiple different versions of Prebid.js concurrently?
+
+It's technically possible, but we don't recommend doing this:
+
+- The code isn't small. For performance reasons you don't want to run two versions if you can help it
+- We don't test concurrent versions
+- We won't specifically support debugging problems caused by running two concurrent versions. But will take take PRs if someone finds an issue.
+
+If all this wasn't enough to warn you away from trying, it should work if you name the PBJS global differently for each instance (https://github.com/prebid/Prebid.js/blob/master/package.json#L20)
## Related Reading
diff --git a/dev-docs/publisher-api-reference.md b/dev-docs/publisher-api-reference.md
index 7cf8fb41f3..2832c5bf1d 100644
--- a/dev-docs/publisher-api-reference.md
+++ b/dev-docs/publisher-api-reference.md
@@ -2042,13 +2042,14 @@ As of Prebid.js 3.11.0, the [Advanced SizeMapping module](/dev-docs/modules/size
You should consider using that module if any of these scenarios are true:
{::nomarkdown}
+
You need to work with video or native AdUnits
The site needs to alter different AdUnits at different screen widths; e.g., the left-nav changes sizes at 600 pixels, but the footer's size behavior changes at 620 pixels.
The site needs to alter different mediaTypes at different screen widths; e.g., the banner size ranges are 0-400px, 401-700px, and 701+px, but the native ads appear at 500px.
Some bidders or mediaTypes should be included (or removed) at different overlapping size ranges.
{:/}
-If, on the other hand, the AdUnits, bidders, and mediaTypes all change behavior together at the same viewport width, then the built-in sizeConfig feature is appropriate.
+If, on the other hand, you're only working with the banner mediaType and the AdUnits all change behavior together at the same viewport width, then the built-in sizeConfig feature is appropriate.
{% endcapture %}
{% include alerts/alert_tip.html content=tip-choosing %}
@@ -2058,7 +2059,7 @@ If, on the other hand, the AdUnits, bidders, and mediaTypes all change behavior
-##### How it Works
+##### How Size Config Works for Banners
- Before `requestBids` sends bid requests to adapters, it will evaluate and pick the appropriate label(s) based on the `sizeConfig.mediaQuery` and device properties. Once it determines the active label(s), it will then filter the `adUnit.bids` array based on the `labels` defined and whether the `banner` mediaType was included. Ad units that include a `banner` mediaType that don't match the label definition are dropped.
- The required `sizeConfig.mediaQuery` property allows [CSS media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries). The queries are tested using the [`window.matchMedia`](https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia) API.
diff --git a/dev-docs/show-prebid-ads-on-amp-pages.md b/dev-docs/show-prebid-ads-on-amp-pages.md
index a67f238882..34f376cc67 100644
--- a/dev-docs/show-prebid-ads-on-amp-pages.md
+++ b/dev-docs/show-prebid-ads-on-amp-pages.md
@@ -37,7 +37,7 @@ To set up Prebid to serve ads into your AMP pages, you'll need:
+ An account with a [Prebid Server][PBS] instance
+ One or more Prebid Server Stored Bid Requests. A Stored Bid Request is a partial OpenRTB JSON request which:
- + Specifies properties like timeout and price granularity
+ + Specifies properties like currency, schain, price granularity, etc.
+ Contains a list of demand partners and their respective parameters
+ An AMP page containing at least one amp-ad element for an AMP ad network that supports Fast Fetch and AMP RTC
@@ -52,19 +52,38 @@ To set up Prebid to serve ads into your AMP pages, you'll need:
You will have to create at least one Stored Request for Prebid Server. Valid Stored Requests for AMP pages must contain an `imp` array with exactly one element. It is not necessary to include a `tmax` field in the Stored Request, as Prebid Server will always use the smaller of the AMP default timeout (1000ms) and the value passed via the `timeoutMillis` field of the `amp-ad.rtc-config` attribute (explained in the next section).
-An example Stored Request is given below:
+An example Stored Request is given below. You'll see that the Stored Request contains some important info
+that doesn't come from /amp parameters:
+
+- cur
+- schain
+- ext.prebid.cache.bids - needed to let Prebid Server know that you want it to store the result in PBC
+- ext.prebid.targeting.pricegranularity - needed to let Prebid Server know how to calculate the price bucket
+- ext.prebid.aliases
+- bidders and their parameters
```html
{
"id": "some-request-id",
+ "cur": ["USD"],
+ "source": {
+ "ext": {
+ "schain": {
+ ...
+ }
+ }
+ },
"site": {
- "page": "prebid.org"
+ "page": "prebid.org" // will be overridden by the 'curl' parameter on /amp endpoint
},
"ext": {
"prebid": {
+ "cache": {
+ "bids": {}
+ },
"targeting": {
- "pricegranularity": { // This is equivalent to the deprecated "pricegranularity": "medium"
+ "pricegranularity": { // This is equivalent to "pricegranularity": "medium"
"precision": 2,
"ranges": [{
"max": 20.00,
@@ -86,10 +105,10 @@ An example Stored Request is given below:
]
},
"ext": {
- "appnexus": {
+ "bidderA": {
// Insert parameters here
},
- "rubicon": {
+ "bidderB": {
// Insert parameters here
}
}
@@ -98,6 +117,7 @@ An example Stored Request is given below:
}
```
+This basic OpenRTB record will be enhanced by the parameters from the call to the [/amp endpoint](prebid-server/endpoints/openrtb2/amp.html).
### AMP content page
@@ -277,8 +297,6 @@ To review that Prebid on AMP is working properly the following aspects can be lo
+ [AMP RTC Overview][RTC-Overview]
+ [AMP RTC Publisher Integration Guide](https://github.com/ampproject/amphtml/blob/master/extensions/amp-a4a/rtc-publisher-implementation-guide.md)
-
-
[PBS]: {{site.baseurl}}/dev-docs/get-started-with-prebid-server.html
diff --git a/download.md b/download.md
index 321496a5e1..0443487acc 100644
--- a/download.md
+++ b/download.md
@@ -158,7 +158,9 @@ function get_form_data() {
# Customize and Download Prebid.js
{: .lead :}
-To improve the speed and load time of your site, build Prebid.js for only the header bidding partners you choose.
+
+{: .alert.alert-warning :}
+Prebid.js is open source software that is offered for free as a convenience. While it is designed to help companies address legal requirements associated with header bidding, we cannot and do not warrant that your use of Prebid.js will satisfy legal requirements. You are solely responsible for ensuring that your use of Prebid.js complies with all applicable laws. We strongly encourage you to obtain legal advice when using Prebid.js to ensure your implementation complies with all laws where you operate.
### Option 1: Customize your download here
@@ -402,6 +404,14 @@ Prebid only supports the most recent major version. Within a month or so after a
+