Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion adops/adops-general-sbs.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ For example, for a line item with a $10.00 CPM as the price, a competitive exclu
For deals, the price bucket portion of this value will contain the dealID if deals are prioritized. See [Getting Started with Long Form Video](/prebid-video/video-long-form.html#configuration) for more information.

{: .alert.alert-info :}
Engineers will need to include the [Adpod module](/dev-docs/modules/adpod.html) and the [Category Translation module](/dev-docs/modules/categoryTranslation.html) in Prebid.js to implement long-form video bidding.
Ad pod (long-form) video support was removed in Prebid.js 11.0. With Prebid.js 10.x and earlier, engineers will need to include the [Adpod module](/dev-docs/modules/adpod.html) and the [Category Translation module](/dev-docs/modules/categoryTranslation.html) in Prebid.js to implement long-form video bidding.

### Creative-level Targeting

Expand Down
3 changes: 3 additions & 0 deletions adops/setting-up-prebid-video-in-freewheel.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ sidebarType: 3

# FreeWheel Guide for Premium Long-Form Video

{: .alert.alert-warning :}
The Prebid.js FreeWheel and ad pod (long-form) modules were removed in Prebid.js 11.0. This guide applies to Prebid.js 10.x and earlier only.

{: .alert.alert-warning :}
This guide is not written, maintained, or endorsed by Freewheel. Freewheel recommends speaking to your account team before implementing any header-bidding setup to ensure full implications for direct-sold ad delivery, forecasting, and reporting is understood.

Expand Down
2 changes: 1 addition & 1 deletion adops/step-by-step.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ For example, for a line item with a $10.00 CPM entered in the Rate field, a Labe
For deals, the Rate portion of this value will contain the dealID if deals are prioritized. See [Getting Started with Long Form Video](/prebid-video/video-long-form.html#configuration) for engineering information.

{: .alert.alert-info :}
Engineers will need to include the [Adpod module](/dev-docs/modules/adpod.html) and the [Category Translation module](/dev-docs/modules/categoryTranslation.html) in Prebid.js to implement long-form video bidding. (Prebid.js 10.x and earlier; Adpod support was removed in Prebid.js 11.)
Ad pod (long-form) video support was removed in Prebid.js 11.0. With Prebid.js 10.x and earlier, engineers will need to include the [Adpod module](/dev-docs/modules/adpod.html) and the [Category Translation module](/dev-docs/modules/categoryTranslation.html) in Prebid.js to implement long-form video bidding.

### Creative-level Targeting

Expand Down
2 changes: 1 addition & 1 deletion dev-docs/adunit-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@ pbjs.addAdUnits({
* [Show Native Ads](/prebid/native-implementation.html)
* [Show Video Ads](/dev-docs/show-video-with-a-dfp-video-tag.html)
* [Show Outstream Video Ads](/dev-docs/show-outstream-video-ads.html)
* [Show Long-Form Video Ads](/prebid-video/video-long-form.html)
* [Show Long-Form Video Ads](/prebid-video/video-long-form.html) (removed in Prebid.js 11.0)
* [Prebid.org Video Examples](/examples/video/)
* [Prebid.org Native Examples](/dev-docs//examples/native-ad-example.html)

Expand Down
154 changes: 3 additions & 151 deletions dev-docs/bidder-adaptor.md
Original file line number Diff line number Diff line change
Expand Up @@ -922,7 +922,7 @@ For examples of video parameters accepted by different adapters, see [the list o

#### Ingesting the Video Context

Video ad units have a publisher-defined video context, which can be either `'instream'` or `'outstream'` or `'adpod'`. Video demand partners can choose to ingest this signal for targeting purposes. For example, the ad unit shown below has the outstream video context:
Video ad units have a publisher-defined video context, which can be either `'instream'` or `'outstream'`. Video demand partners can choose to ingest this signal for targeting purposes. For example, the ad unit shown below has the outstream video context:

```javascript
...
Expand Down Expand Up @@ -954,152 +954,8 @@ if (bid.mediaType === 'video' || (videoMediaType && context !== 'outstream')) {

#### Long-Form Video Content

{: .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. 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

```text
AdUnit config
{
...
adPodDuration: 300,
durationRangeSec: [15, 30]
...
}

Algorithm
# of placements = adPodDuration / MIN_VALUE(durationRangeSec)

Each placement set max duration:
placement.video.maxduration = MAX_VALUE(durationRangeSec)

Example:
# of placements : 300 / 15 = 20.
placement.video.maxduration = 30 (all placements the same)

Your endpoint responds with:
10 bids with 30 seconds duration
10 bids with 15 seconds duration
```

In Use case 1, you are asking endpoint to respond with 20 bids between min duration 0 and max duration 30 seconds. If you get bids with duration which does not match duration in `durationRangeSec` array, Prebid will evaluate the bid's duration and will match into the appropriate duration bucket by using a rounding-type logic. This new duration will be used in sending bids to Ad server.

Prebid creates virtual duration buckets based on `durationRangeSec` value. Prebid will

* round the duration to the next highest specified duration value based on adunit. If the duration is above a range within a set buffer (hardcoded to 2s in prebid-core), that bid falls down into that bucket. (eg if `durationRangeSec` was [5, 15, 30] -> 2s is rounded to 5s; 17s is rounded back to 15s; 18s is rounded up to 30s)
* reject bid if the bid is above the range of the listed durations (and outside the buffer)

Prebid will set the rounded duration value in the `bid.video.durationBucket` field for accepted bids

#### Use case 2: I want to request my endpoint to return bids that exactly match the durations I want

```text
AdUnit config
{
...
adPodDuration: 300,
durationRangeSec: [15, 30],
requireExactDuration: true
...
}

Algorithm
# of placements = MAX_VALUE(adPodDuration/MIN_VALUE(allowedDurationsSec), durationRangeSec.length)

Each placement:
placement.video.minduration = durationRangeSec[i]
placement.video.maxduration = durationRangeSec[i]

Example:
# of placements : MAX_VALUE( (300 / 15 = 20), 2) == 20

20 / 2 = 10 placements:
placement.video.minduration = 15
placement.video.maxduration = 15

20 / 2 = 10 placements:
placement.video.minduration = 30
placement.video.maxduration = 30

Your endpoint responds with:
10 bids with 30 seconds duration
10 bids with 15 seconds duration
```

In Use case 2 `requireExactDuration` is set to true and hence Prebid will only select bids that exactly match duration in `durationRangeSec` (don't round at all).

In both use cases, adapter is requesting bid responses for 20 placements in one single http request. You can split these into chunks depending on your endpoint's capacity.

Adapter must add following new properties to bid response

```javascript
{
meta: {
primaryCatId: '<iab sub category>', // only needed if you want to ensure competitive separation
},
video: {
context: 'adpod',
durationSeconds: 30
}
}
```

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).

If the demand partner is going to use Prebid API for this process, their adapter will need to include the `getMappingFileInfo` function in their spec file. Prebid core will use the information returned from the function to preload the mapping file in local storage and update on the specified refresh cycle.

**Params**

{: .table .table-bordered .table-striped }

| Key | Scope | Description | Example |
| --- | --- | --- | --- |
| `url` | Required | The URL to the mapping file. | `"//example.com/mapping.json"` |
| `refreshInDays` | Optional | A number representing the number of days before the mapping values are updated. Default value is 1 | `7` |
| `localStorageKey` | Optional | A unique key to store the mapping file in local storage. Default value is bidder code. | `"uniqueKey"` |

**Example**

```javascript
getMappingFileInfo: function() {
return {
url: '<mappingFileURL>',
refreshInDays: 7
localStorageKey: '<uniqueCode>'
}
}
```

The mapping file is stored locally to expedite category conversion. Depending on the size of the adpod each adapter could have 20-30 bids. Storing the mapping file locally will prevent HTTP calls being made for each category conversion.

To get the subcategory to use, call this function, which needs to be imported from the `bidderFactory`.

```javascript
getIabSubCategory(bidderCode, pCategory)
```

**Params**

{: .table .table-bordered .table-striped }

| Key | Scope | Description | Example |
|--------------|----------|-----------------------------------------------|-----------------------|
| `bidderCode` | Required | BIDDER_CODE defined in spec. | `"sample-biddercode"` |
| `pCategory` | Required | Proprietary category returned in bid response | `"sample-category"` |

**Example**

```javascript

import { getIabSubCategory } from '../src/adapters/bidderFactory';
let primaryCatId = getIabSubCategory(bidderCode, pCategory)

```
{: .alert.alert-warning :}
Ad pod (long-form) video support, including the `adpod` video context, category translation (`getMappingFileInfo`, `getIabSubCategory`), and duration buckets, was removed in Prebid.js 11.0.

#### Outstream Video Renderers

Expand Down Expand Up @@ -1132,10 +988,6 @@ function createBid(status, reqBid, response) {

```

### Deals in Ad Pods

To do deals for long-form video (`adpod` ad unit) just add the `dielTier` integer value to `bid.video.dealTier`. For more details on conducting deals in ad pods see our [ad pod module documentation](/dev-docs/modules/adpod.html).

## Supporting Native

In order for your bidder to support the native media type:
Expand Down
7 changes: 4 additions & 3 deletions dev-docs/bidders/optable.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: Optable
description: Prebid Optable Bidder Adapter
biddercode: optable
pbjs: true
enable_download: false
pbjs_version_notes: removed in 11.0
privacy_sandbox: paapi
prebid_member: true
Expand All @@ -14,16 +15,16 @@ sidebarType: 1

If you have any questions regarding set up, please reach out to your account manager or <support@optable.co>.

### Bid Parameters
## Bid Parameters

#### Banner
### Banner

{: .table .table-bordered .table-striped }
| Name | Scope | Description | Example | Type |
| ---- | ----- | ----------- | ------- | ---- |
| `site` | required | Optable site ID provided by your Optable representative. | "aaaaaaaa" | String |

### AdUnit Format for Banner
## AdUnit Format for Banner

```javascript
var adUnits = [
Expand Down
30 changes: 16 additions & 14 deletions dev-docs/bidders/ringieraxelspringer.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ biddercode: ringieraxelspringer
aliasCode: das
media_types: banner, native
pbjs: true
enable_download: false
pbjs_version_notes: removed in 11.0
pbs: false
prebid_member: false
gvl_id: 1021
Expand All @@ -26,20 +28,20 @@ coppa_supported: false
usp_supported: false
---

### Bid Params
## Bid Params

{: .table .table-bordered .table-striped }
| Name | Scope | Description | Example | Type |
|------------------|----------|------------------------------------------------------------------------------------------------------|---------------------------------------------|----------|
| `network` | required | Specific identifier provided by RAS | `'4178463'` | `string` |
| `site` | required | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `'example_com'` | `string` |
| `area` | required | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `'sport'` | `string` |
| `slot` | required | Ad unit placement name (case-insensitive) provided by RAS | `'slot'` | `string` |
| `pageContext` | optional | Web page context data | `{}` | `object` |
| `pageContext.dr` | optional | Document referrer URL address | `'https://example.com/'` | `string` |
| `pageContext.du` | optional | Document URL address | `'https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06'` | `string` |
| `pageContext.dv` | optional | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `'example_com/sport/football'` | `string` |
| Name | Scope | Description | Example | Type |
| --- | --- | --- | --- | --- |
| `network` | required | Specific identifier provided by RAS | `'4178463'` | `string` |
| `site` | required | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `'example_com'` | `string` |
| `area` | required | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `'sport'` | `string` |
| `slot` | required | Ad unit placement name (case-insensitive) provided by RAS | `'slot'` | `string` |
| `pageContext` | optional | Web page context data | `{}` | `object` |
| `pageContext.dr` | optional | Document referrer URL address | `'https://example.com/'` | `string` |
| `pageContext.du` | optional | Document URL address | `'https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06'` | `string` |
| `pageContext.dv` | optional | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `'example_com/sport/football'` | `string` |
| `pageContext.keyWords` | optional | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `['euro', 'lewandowski']` | `string[]` |
| `pageContext.keyValues` | optional | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > ] [ & @` | `{}` | `object` |
| `pageContext.keyValues.ci` | optional | Content unique identifier | `'932016a5-02fc-4d5c-b643-fafc2f270f06'` | `object` |
| `pageContext.keyValues.adunit` | optional | Ad unit name | `'example_com/sport'` | `string` |
| `pageContext.keyValues` | optional | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > ] [ & @` | `{}` | `object` |
| `pageContext.keyValues.ci` | optional | Content unique identifier | `'932016a5-02fc-4d5c-b643-fafc2f270f06'` | `object` |
| `pageContext.keyValues.adunit` | optional | Ad unit name | `'example_com/sport'` | `string` |
5 changes: 3 additions & 2 deletions dev-docs/modules/adpod.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ title: Module - Adpod
description: Enables developers to add support for a new adserver that handles ad pod (long-form) videos.
module_code : adpod
display_name : Adpod
enable_download : true
enable_download : false
pbjs_version_notes: removed in 11.0
sidebarType : 1
---

# Adpod Module
{:.no_toc}

{: .alert.alert-warning :}
This module was removed in Prebid.js 11.0. See the [Prebid.js 11 release notes](/dev-docs/pb11-notes.html#removed-modules).
The Adpod module was removed in Prebid.js 11.0. Ad pod (long-form) video is no longer supported by Prebid.js.

* TOC
{:toc}
Expand Down
5 changes: 3 additions & 2 deletions dev-docs/modules/categoryTranslation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ title: Module - Category Translation
description: Converts IAB category to ad server category for long-form videos.
module_code : categoryTranslation
display_name : CategoryTranslation
enable_download : true
enable_download : false
pbjs_version_notes: removed in 11.0
sidebarType : 1
---

# IAB Category Translation
{:.no_toc}

{: .alert.alert-warning :}
This module was removed in Prebid.js 11.0. See the [Prebid.js 11 release notes](/dev-docs/pb11-notes.html#removed-modules).
The Category Translation module was removed in Prebid.js 11.0 along with ad pod (long-form) video support.

This module converts the IAB sub category to Ad server industry group identifiers. The identifiers ensure competitive separation of industries and products.

Expand Down
6 changes: 5 additions & 1 deletion dev-docs/modules/dfpAdpod.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ title: Module - Google Ad Manager Adpod Support
description: Required for serving adpod video through Google Ad Manager.
module_code : dfpAdpod
display_name : Google Ad Manager Adpod Support
enable_download : true
enable_download : false
pbjs_version_notes: removed in 11.0
vendor_specific: true
sidebarType : 1
---
Expand All @@ -17,6 +18,9 @@ This module was removed in Prebid.js 11.0. See the [Prebid.js 11 release notes](

{:.no_toc}

{: .alert.alert-warning :}
The Google Ad Manager Adpod module was removed in Prebid.js 11.0 along with ad pod (long-form) video support.

This module exposes the [`pbjs.adServers.dfp.buildAdpodVideoUrl](/dev-docs/publisher-api-reference/adServers.gam.buildAdpodVideoUrl.html) method, required to use [adpod](/dev-docs/modules/adpod.html) with Google Ad Manager.

## Further Reading
Expand Down
6 changes: 5 additions & 1 deletion dev-docs/modules/dfp_express.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ title: Module - Google Ad Manager Express
description: A simplified installation mechanism for publishers that have Google Publisher Tag (GPT) ad calls in their pages.
module_code : express
display_name : Google Ad Manager Express
enable_download : true
enable_download : false
pbjs_version_notes: removed in 11.0
vendor_specific: true
sidebarType : 1
---
Expand All @@ -19,6 +20,9 @@ This module was removed in Prebid.js 11.0. See the [Prebid.js 11 release notes](

{:.no_toc}

{: .alert.alert-warning :}
The Google Ad Manager Express module was removed in Prebid.js 11.0.

This module is a simplified alternate installation mechanism for publishers that have Google Publisher Tag (GPT) ad calls in their pages. Here's how it works:

* You build a Prebid.js package that contains the extra module code and optionally the page's AdUnits.
Expand Down
Loading
Loading