From d6c537c9100b6bce4cd2bddfd436b154ca46b12b Mon Sep 17 00:00:00 2001 From: amoltchan <56824198+amoltchan@users.noreply.github.com> Date: Thu, 7 May 2020 17:10:52 +0200 Subject: [PATCH 001/101] Add LiveIntent ID module to the overview (#1960) --- dev-docs/modules/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index 41806bdfab..7a34321d4d 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -34,7 +34,7 @@ If you are looking for bidder adapter parameters, see [Bidders' Params]({{site.b | **ConsentManagement** | Collecting and passing consent information in support of privacy regulations:{::nomarkdown}{:/} | | [**Google Ad Manager Express**](/dev-docs/modules/dfp_express.html) | A simplified installation mechanism for publishers that have Google Publisher Tag (GPT) ad calls in their pages. | | [**Supply Chain Object**](/dev-docs/modules/schain.html) | Validates and makes the Supply Object available to bidders | -| [**User ID**](/dev-docs/modules/userId.html) | Sub-modules are available to support a range of identification approaches: Criteo RTUS, DigiTrust, ID5 Universal ID, IdentityLink, PubCommon ID, and Unified ID. | +| [**User ID**](/dev-docs/modules/userId.html) | Sub-modules are available to support a range of identification approaches: Criteo RTUS, DigiTrust, ID5 Universal ID, IdentityLink, PubCommon ID, Unified ID and LiveIntent ID. | | [**Browsi Viewability**]({{site.baseurl}}/dev-docs/modules/browsiRtdProvider.html) | Browsi provider for real time data module. | | [**Advanced Size Mapping**](/dev-docs/modules/sizeMappingV2.html) | Display Responsive AdUnits in demanding page environments. | From b67fffdcaaecddb7d445b3c467618a11c0f1b71f Mon Sep 17 00:00:00 2001 From: bretg Date: Thu, 7 May 2020 15:30:05 -0400 Subject: [PATCH 002/101] updated-membership-link (#1964) --- partners/partners.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partners/partners.md b/partners/partners.md index 29abbb1301..a6209eb3c4 100644 --- a/partners/partners.md +++ b/partners/partners.md @@ -32,7 +32,7 @@ Companies join Prebid.org because they want to take an active role in supporting ## How To Join 1. Download and review the [Prebid.org Bylaws](https://files.prebid.org/docs/Prebid_org_bylaws_jun_2019.pdf). -2. Complete the [Prebid.org Membership Agreement](https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=2208cbf4-d455-4c6b-ba4f-f00e3e0b4cda&env=na3-eu1&acct=2160069d-b42e-4c0a-9528-3a58d1c58bf9&v=2). +2. Complete the [Prebid.org Membership Agreement](https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=610f838a-3001-4999-aca0-6682cbcac66c&env=na3-eu1&acct=2160069d-b42e-4c0a-9528-3a58d1c58bf9&v=2). 3. Prebid will consider your membership application.
From 11f66ccf7bf405be4377c1fff535d923a1e124d6 Mon Sep 17 00:00:00 2001 From: Sourabh Gandhe Date: Fri, 8 May 2020 22:49:39 +0530 Subject: [PATCH 003/101] DeepIntent: Gdpr support (#1954) * gdpr support doc addeed * gdpr support doc addeed --- dev-docs/bidders/deepintent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/deepintent.md b/dev-docs/bidders/deepintent.md index a0d5113998..ad99caf1db 100644 --- a/dev-docs/bidders/deepintent.md +++ b/dev-docs/bidders/deepintent.md @@ -5,7 +5,7 @@ description: Prebid Deepintent Bidder Adaptor hide: true biddercode: deepintent media_types: banner -gdpr_supported: false +gdpr_supported: true usp_supported: true --- From 4d3b842f8e0057380179f4843d00362c41154595 Mon Sep 17 00:00:00 2001 From: Catalin Ciocov Date: Fri, 8 May 2020 20:30:52 +0300 Subject: [PATCH 004/101] Show Inskin bid adapter as supporting GDPR (#1958) --- dev-docs/bidders/inskin.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/inskin.md b/dev-docs/bidders/inskin.md index dc10b897a0..4d1ef21b59 100644 --- a/dev-docs/bidders/inskin.md +++ b/dev-docs/bidders/inskin.md @@ -4,6 +4,7 @@ title: Inskin description: Inskin Media Bidder Adaptor hide: true biddercode: inskin +gdpr_supported: true --- ### Note: From 1fcddf6a116f70dfc50287f3dcf43bdbcb8e2b7c Mon Sep 17 00:00:00 2001 From: Klaas-Jan Boon Date: Sat, 9 May 2020 00:42:03 +0200 Subject: [PATCH 005/101] New bid adapter: Blue Billywig docs (#1921) * add Blue Billywig bidder adaptor dev docs * Added unifiedId support to dev-docs/bidders/bluebillywig.md Co-Authored-By: Scott Co-authored-by: Klaas-Jan Boon Co-authored-by: Scott --- dev-docs/bidders/bluebillywig.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 dev-docs/bidders/bluebillywig.md diff --git a/dev-docs/bidders/bluebillywig.md b/dev-docs/bidders/bluebillywig.md new file mode 100644 index 0000000000..1312c42859 --- /dev/null +++ b/dev-docs/bidders/bluebillywig.md @@ -0,0 +1,24 @@ +--- +layout: bluebillywig +title: Blue Billywig +description: Prebid Blue Billywig Bidder Adaptor +biddercode: bluebillywig +hide: true +media_types: video +gdpr_supported: true +schain_supported: true +coppa_supported: true +usp_supported: true +userIds: britepoolId, criteo, digitrust, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId +--- + +#### Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|-----------|----------|---------------------------|------------|----------| +| `publicationName` | required | The name of your Blue Billywig publication | `"bbprebid"` | `string` | +| `accountId` | required | Your publication ID at Blue Billywig | `642` | `integer` | +| `rendererCode` | required | The name of the renderer to use in your Blue Billywig publication | `"renderer"` | `string` | +| `connections` | required | Back-ends to connect with. For every value in this a param matching the back-end should exist too. | `["bluebillywig"]` | `array` | From 84ce1c689edee72cb5193322c144f40ca557a7f5 Mon Sep 17 00:00:00 2001 From: Konduit <55142865+konduit-dev@users.noreply.github.com> Date: Sat, 9 May 2020 01:43:08 +0300 Subject: [PATCH 006/101] Konduit Accelerate documentation (#1945) * Konduit Module initial documentation version. * re-ordering modules in left-nav * minor edits added the gulp build command, general wordsmithing * Updated konduit documentation * Updated konduit.md file * Reverted chacges in sidebar.yml Co-authored-by: Alexander Kislitsyn Co-authored-by: bretg Co-authored-by: Max Shevchenko --- dev-docs/modules/index.md | 2 +- dev-docs/modules/konduit.md | 87 +++++++++++++++++++++++++------------ overview/analytics.md | 1 + 3 files changed, 61 insertions(+), 29 deletions(-) diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index 7a34321d4d..0ca44327a4 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -47,7 +47,7 @@ If you are looking for bidder adapter parameters, see [Bidders' Params]({{site.b | [**Freewheel**](/dev-docs/modules/freewheel.html) | Passes key value targeting to Freewheel SDK | | [**Google Ad Manager Video**](/dev-docs/modules/dfp_video.html) | Required for serving instream video through Google Ad Manager. | | [**IAB Category Translation**](/dev-docs/modules/categoryTranslation.html) | Converts IAB sub category to Ad server category for long-form videos. | -| [**Konduit Accelerate**](/dev-docs/modules/konduit.html) | Module for serving instream video through Konduit Accelerate service. | +| [**Konduit Accelerate**](/dev-docs/modules/konduit.html) | Provides Real Time Start Rate Performance per Bidder. | ## Testing and Debug Modules diff --git a/dev-docs/modules/konduit.md b/dev-docs/modules/konduit.md index ffec9daf42..86aa76663e 100644 --- a/dev-docs/modules/konduit.md +++ b/dev-docs/modules/konduit.md @@ -8,55 +8,86 @@ display_name : Konduit Accelerate enable_download : true sidebarType : 1 --- - +​ # Konduit Accelerate Module {:.no_toc} - -The Konduit Accelerate module applies the [Konduit](http://konduit.me/) video acceleration optimization to a publisher’s existing Prebid setup. This optimization can reduce load times and increase ad starts. To install the module, follow these instructions: - - +​ +The Konduit Accelerate module applies the [Konduit](https://konduitvideo.com/) video acceleration optimization to a publisher’s existing Prebid setup. This optimization provides publishers with tools to monetize previously lost revenue and drive higher fill rates on their video inventory. +​ +To install the module, follow these instructions: + ### Step 1: Prepare the base Prebid file - +​ Build your Prebid.js package in one of two ways: - -1. Receive an email package from the Prebid [Download](/download.html) page. -2. From the command line, run +​ +- Receive an email package from the Prebid [Download](/download.html) page. +​ +- From the command line, run `gulp build --modules=konduitWrapper,...` - - +​ +​ ### Step 2: Implement module code on page - +​ +- Add konduitId as config using `setConfig` prebid method (`pbjs.setConfig({ konduit: { konduitId: your_konduit_id } })`) +​ - Insert the Konduit module code in the source code of your page. - The module exposes the `pbjs.adServers.konduit.buildVastUrl` function. -- Provide input parameters to the function, including a bid to be accelerated (usually a winning bid) and Konduit-specific parameters (as shown in the sample code below). - - + The module exposes the `pbjs.adServers.konduit.processBids` function. + +- Provide input parameters to the function (all parameters are shown in the table below). +​ +{: .table .table-bordered .table-striped } + | Param | Type | Description | Default | + |---+---+---+---+---| + | bid | object | prebid object with VAST url that should be cached | if the bid parameter is not passed then first winning bid will be used | + | adUnitCode | string | adUnitCode where a winner bid can be found | - | + | timeout | number | max time to wait for Konduit response with cache key and kCpm data | 1000 | + | callback | function | callback function is called once Konduit caches data for the bid. Arguments of this function are - `error` and `bids` (error should be `null` if Konduit request is successful). | - | + +### Step 3: GAM related configuration +​ +In order for Konduit’s module to be completely integrated, line item Creatives need to be adjusted in GAM. +Please contact [support@konduit.me](mailto:support@konduit.me) for assistance. +​ +Standard implementation requires only Creative VAST URL update with the following URL: +``` +https://p.konduit.me/api/vastProxy?konduit_hb=1&konduit_hb_awarded=1&konduit_cache_key=%%PATTERN:konduit_cache_key%%&konduit_id=%%PATTERN:konduit_id%% +``` +​ ### Sample Code - +​ We recommended using the Konduit module function call in the `bidsBackHandler` callback function. - +​ ```javascript pbjs.que.push(function() { + pbjs.setConfig({ + konduit: { + konduitId: your_konduit_id, + } + }); pbjs.addAdUnits(videoAdUnits); pbjs.requestBids({ bidsBackHandler: function(bids) { var winnerBid = pbjs.getHighestCpmBids('videoAd')[0]; - - var vastTagUrl = pbjs.adServers.konduit.buildVastUrl({ +​ + pbjs.adServers.konduit.processBids({ bid: winnerBid, - params: { - konduit_id: '{konduit_client_id}', + adUnitCode: videoAdUnit[0].code, + timeout: 1500, + callback: function (error, bids) { + var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + ... + }); +​ + invokeVideoPlayer(videoUrl); } }); - - invokeVideoPlayer(vastTagUrl); } }); }); ``` - - +​ +​ ## Further Reading - +​ [Getting Started Example]({{site.baseurl}}/dev-docs/getting-started.html) -[Prebid.js for Video]({{site.baseurl}}/prebid-video/video-overview.html) +[Prebid.js for Video]({{site.baseurl}}/prebid-video/video-overview.html) diff --git a/overview/analytics.md b/overview/analytics.md index 0f43d7b402..6bb485e5af 100644 --- a/overview/analytics.md +++ b/overview/analytics.md @@ -22,6 +22,7 @@ There are several analytics adapter plugins available to track header bidding pe | [Google Analytics]({{site.baseurl}}/overview/ga-analytics.html) | Free up to a certain volume. See [terms](https://www.google.com/analytics/terms/) | [Website](https://www.google.com/analytics) | | Invisibly Analytics | Contact vendor | [Website](https://invisibly.com/) | | Kargo Analytics | Contact vendor | [Website](https://kargo.com/) | +| Konduit Accelerate | Contact vendor | [Website](https://konduitvideo.com/) | | Livewrapped Analytics | Contact vendor | [Website](https://livewrapped.com/) | | LiveYield | Contact vendor | [Website](https://www.pubocean.com/liveyield) | | OpenX | Contact vendor | [Website](https://www.openx.com/publishers/header-bidding/) | From 82b441f831038ea6b4b2abdfb67377ac44ad12f2 Mon Sep 17 00:00:00 2001 From: Galphimbl Date: Sat, 9 May 2020 01:43:42 +0300 Subject: [PATCH 007/101] add gdpr and usp (#1950) --- dev-docs/bidders/admixer.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/admixer.md b/dev-docs/bidders/admixer.md index 6d44f6ebac..2399696391 100644 --- a/dev-docs/bidders/admixer.md +++ b/dev-docs/bidders/admixer.md @@ -5,7 +5,8 @@ description: Prebid AdMixer Bidder Adaptor hide: true biddercode: admixer media_types: video - +gdpr_supported: true +usp_supported: true --- ### Bid Params From ce4e6338671a75c75c1ae19f0796d782d9744c92 Mon Sep 17 00:00:00 2001 From: thuyhq <61451682+thuyhq@users.noreply.github.com> Date: Sat, 9 May 2020 05:44:11 +0700 Subject: [PATCH 008/101] Add Quantumdex Bid Adapter docs (#1951) Add Quantumdex Bid Adapter docs --- dev-docs/bidders/quantumdex.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 dev-docs/bidders/quantumdex.md diff --git a/dev-docs/bidders/quantumdex.md b/dev-docs/bidders/quantumdex.md new file mode 100644 index 0000000000..5fcd3f45bf --- /dev/null +++ b/dev-docs/bidders/quantumdex.md @@ -0,0 +1,19 @@ +--- +layout: bidder +title: Quantumdex +description: Prebid Quantum Digital Exchange Bidder Adapter +hide: true +biddercode: quantumdex +media_types: banner, video +gdpr_supported: true +schain_supported: true +usp_supported: true +--- + + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------------|----------|--------------------------------------------------------------------------------------------------------------------------------|------------|----------| +| `siteId` | required | Publisher site ID from Quantumdex | `'quantumdex-site-id'` | `string` | From 63018edc0e9e2c3966382ac50ff0a75dc06008de Mon Sep 17 00:00:00 2001 From: Adprime <64427228+Adprime@users.noreply.github.com> Date: Sat, 9 May 2020 01:44:35 +0300 Subject: [PATCH 009/101] New Adprime Prebid adapter (#1952) * docs * added quotes to string arg Co-authored-by: Aigolkin1991 Co-authored-by: bretg --- dev-docs/bidders/adprime.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 dev-docs/bidders/adprime.md diff --git a/dev-docs/bidders/adprime.md b/dev-docs/bidders/adprime.md new file mode 100644 index 0000000000..73b2f47e16 --- /dev/null +++ b/dev-docs/bidders/adprime.md @@ -0,0 +1,21 @@ +--- +layout: bidder +title: Adprime +description: Prebid Adprime Bidder Adapter +hide: true +biddercode: adprime +gdpr_supported: true +media_types: banner, video +--- + +### Note: + +The Adprime Bidding adapter requires setup before beginning. Please contact us at rafal@adprime.com + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-----------------------|-----------|-----------| +| `id` | required | Adprime placement id | `'1234asdf'` | `string` | + From 940489c2756fd9b2c0efe895bd4016cd73ce6a20 Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 11 May 2020 15:50:32 -0400 Subject: [PATCH 010/101] added meta.mediaType (#1966) --- dev-docs/bidder-adaptor.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index d072fd1ded..a8d0379738 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -377,6 +377,7 @@ The `interpretResponse` function will be called when the browser has received th brandName: BRAND_NAME, primaryCatId: IAB_CATEGORY, secondaryCatIds: [ARRAY_OF_IAB_CATEGORIES], + mediaType: MEDIA_TYPE } }; bidResponses.push(bidResponse); @@ -419,6 +420,7 @@ The parameters of the `bidResponse` object are: | `meta.brandName` | Optional | Brand Name | `"BrandB"` | | `meta.primaryCatId` | Optional | Primary [IAB category ID](https://www.iab.com/guidelines/iab-quality-assurance-guidelines-qag-taxonomy/) | `"IAB-111"` | | `meta.secondaryCatIds` | Optional | Array of secondary IAB category IDs | `["IAB-222","IAB-333"]` | +| `meta.mediaType` | Optional | "banner", "native", or "video" - this should be set in scenarios where a bidder responds to a "banner" mediaType with a creative that's actually a video (e.g. outstream) or native. | `"native"` | From a4d4cb80936909a809b3d1dd53e0692ef3f7f757 Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 12 May 2020 09:26:54 -0400 Subject: [PATCH 011/101] fixing vendorException descriptions (#1969) --- dev-docs/modules/gdprEnforcement.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev-docs/modules/gdprEnforcement.md b/dev-docs/modules/gdprEnforcement.md index eb0caf12bc..8fd1bdfed4 100644 --- a/dev-docs/modules/gdprEnforcement.md +++ b/dev-docs/modules/gdprEnforcement.md @@ -58,7 +58,7 @@ These are the fields related to GDPR enforcment that are supported in the [`cons | gdpr.rules[].purpose | `String` | The only currently supported value is "storage", corresponding to TCF Purpose 1. | "storage" | | gdpr.rules[].enforcePurpose | `Boolean` | Determines whether to enforce the purpose consent or not. The default in Prebid.js 3.x is not to enforce purposes. The plan for Prebid.js 4.0 is to enforce consent for Purpose 1 and no others. | true | | gdpr.rules[].enforceVendor | `Boolean` | Determines whether to enforce vendor signals for this purpose or not. The default in Prebid.js 3.x is not to enforce vendor signals. The plan for Prebid.js 4.0 to enforce signals for Purpose 1 and no others. | true | -| gdpr.rules[].vendorExceptions | `Array of Strings` | Defines a list of biddercodes or module names that are exempt from the enforcement of this Purpose. | true | +| gdpr.rules[].vendorExceptions | `Array of Strings` | Defines a list of biddercodes or module names that are exempt from the enforcement of this Purpose. | ["bidderA", "userID-module-B"] | Note: @@ -86,7 +86,7 @@ pbjs.setConfig({ }); ``` -2) Enforce that the user consents to DeviceAccess as an activity and consider their per-vendor selection. However, BidderA is a special case - the publisher has entrusted BidderA for this activity regardless of what the user says. +2) Enforce that the user consents to DeviceAccess as an activity and consider their per-vendor selection. However, BidderA is a special case - the publisher has entrusted BidderA for this activity. ... rules: [{ @@ -105,7 +105,7 @@ pbjs.setConfig({ enforceVendor: false, } -4) Enforce that the user consents to DeviceAccess as an activity, but don't consider their per-vendor selection for any bidders except BidderA. BidderA is entrusted to enforce the rules on their own. +4) Enforce that the user consents to DeviceAccess as an activity, but don't consider their per-vendor selection. BidderA is entrusted to enforce the rules on their own. ... rules: [{ @@ -133,7 +133,7 @@ pbjs.setConfig({ enforceVendor: true } -7) Don't enforce the user's DeviceAccess consent, but do consider their per-vendor selection; don't enforce vendor selection for BidderA. +7) Don't enforce the user's DeviceAccess consent, but do consider their per-vendor selection except for BidderA. ... rules: [{ From 8d66d250e36bee680a306b53a9effdd85d5b5a83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9onard=20Labat?= Date: Tue, 12 May 2020 15:36:28 +0200 Subject: [PATCH 012/101] Criteo - added tcf2_supported to adapter documentation (#1967) --- dev-docs/bidders/criteo.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/criteo.md b/dev-docs/bidders/criteo.md index 282a570a88..5f579bd660 100755 --- a/dev-docs/bidders/criteo.md +++ b/dev-docs/bidders/criteo.md @@ -8,6 +8,7 @@ media_types: display, native, video gdpr_supported: true usp_supported: true prebid_member: true +tcf2_supported: true --- ### Note {: .alert.alert-warning :} From 8fb3d212f4a3eca40c688aa33a6d354ac69d14bd Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 12 May 2020 14:02:44 -0400 Subject: [PATCH 013/101] adding floors to module and download page (#1971) --- _data/sidebar.yml | 2 +- dev-docs/modules/floors.md | 2 +- dev-docs/modules/index.md | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/_data/sidebar.yml b/_data/sidebar.yml index fe4b2f4c11..46ef1e034c 100644 --- a/_data/sidebar.yml +++ b/_data/sidebar.yml @@ -448,7 +448,7 @@ subgroup: 5 - sbSecId: 1 - title: Floors Module + title: Price Floors Module link: /dev-docs/modules/floors.html isHeader: 0 isSectionHeader: 0 diff --git a/dev-docs/modules/floors.md b/dev-docs/modules/floors.md index 1f2c6cfab4..a59fb0e81a 100644 --- a/dev-docs/modules/floors.md +++ b/dev-docs/modules/floors.md @@ -5,7 +5,7 @@ title: Module - Price Floors description: Determine and enforce auction price floors module_code : floors display_name : Price Floors -enable_download : false +enable_download : true sidebarType : 1 --- diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index 0ca44327a4..385b5545bc 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -37,6 +37,7 @@ If you are looking for bidder adapter parameters, see [Bidders' Params]({{site.b | [**User ID**](/dev-docs/modules/userId.html) | Sub-modules are available to support a range of identification approaches: Criteo RTUS, DigiTrust, ID5 Universal ID, IdentityLink, PubCommon ID, Unified ID and LiveIntent ID. | | [**Browsi Viewability**]({{site.baseurl}}/dev-docs/modules/browsiRtdProvider.html) | Browsi provider for real time data module. | | [**Advanced Size Mapping**](/dev-docs/modules/sizeMappingV2.html) | Display Responsive AdUnits in demanding page environments. | +| [**Price Floors Module**](/dev-docs/modules/floors.html) | Configure and enforce minimum bids. | ## Video Modules From 053b6905aa0bea824ecdd2eddb9ad58913a72c9c Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 12 May 2020 15:44:00 -0400 Subject: [PATCH 014/101] fixed mismatch in price floor module filename (#1972) --- dev-docs/modules/floors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/floors.md b/dev-docs/modules/floors.md index a59fb0e81a..5467cdb52f 100644 --- a/dev-docs/modules/floors.md +++ b/dev-docs/modules/floors.md @@ -3,7 +3,7 @@ layout: page_v2 page_type: module title: Module - Price Floors description: Determine and enforce auction price floors -module_code : floors +module_code : priceFloors display_name : Price Floors enable_download : true sidebarType : 1 From 39685ee15d61970d49cbd5516b9e361a600a6ebb Mon Sep 17 00:00:00 2001 From: mfainshtein Date: Wed, 13 May 2020 16:22:38 +0300 Subject: [PATCH 015/101] Update vidazoo.md (#1970) Added note for usp_support --- dev-docs/bidders/vidazoo.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/vidazoo.md b/dev-docs/bidders/vidazoo.md index b3c257b120..4346c392b5 100644 --- a/dev-docs/bidders/vidazoo.md +++ b/dev-docs/bidders/vidazoo.md @@ -5,6 +5,7 @@ description: Prebid Vidazoo Bidder Adaptor biddercode: vidazoo hide: true gdpr_supported: true +usp_supported: true --- ### Bid Params From 2c6e16e310c52dee72716749e5d0de18e46fce0e Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 13 May 2020 09:24:03 -0400 Subject: [PATCH 016/101] update key to hb_cache_id (#1975) --- _includes/adops/adops-gam-video-setup.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/adops/adops-gam-video-setup.html b/_includes/adops/adops-gam-video-setup.html index 5aa6714df9..67ea3ac629 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%%
+
   https://prebid.adnxs.com/pbc/v1/cache?uuid=%%PATTERN:hb_cache_id%%
 or
    [other bidder cache location]

If you’re using different orders for each bidder, the VAST URL for each will include the bidder-specific targeting variable:

-
   https://prebid.adnxs.com/pbc/v1/cache?uuid=%%PATTERN:hb_uuid_BIDDERCODE%%
+
   https://prebid.adnxs.com/pbc/v1/cache?uuid=%%PATTERN:hb_cache_id_BIDDERCODE%%
 or
    [other bidder cache location]
From e83e8e2d8e21ee43f1065d8d66e1da536de1eba5 Mon Sep 17 00:00:00 2001 From: bretg Date: Wed, 13 May 2020 11:21:00 -0400 Subject: [PATCH 017/101] removed community logos, bidding adapters, added yeahmobi (#1979) --- _data/partners.yml | 24 ++++++++++++++++++++++++ _includes/partners.html | 31 ++++++------------------------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/_data/partners.yml b/_data/partners.yml index 75c9d275a9..3fa3e1969c 100644 --- a/_data/partners.yml +++ b/_data/partners.yml @@ -168,6 +168,10 @@ imgURL: /assets/images/partners/community/CHEQ_Logo.png type: community +- company: ConnectAd + link: https://connectad.io + type: community + - company: DailyMotion link: https://dailymotion.com/ imgURL: /assets/images/partners/community/Dailymotion_logo.png @@ -188,11 +192,23 @@ imgURL: /assets/images/partners/community/ID5-Logo.png type: community +- company: JWPlayer + link: https://jwplayer.com + type: community + - company: LiveIntent link: https://www.liveintent.com imgURL: /assets/images/partners/community/liveintent_logo.png type: community +- company: Media.net + link: https://media.net + type: community + +- company: Parrable + link: https://parrable.com + type: community + - company: Publica link: https://getpublica.com imgURL: /assets/images/partners/community/Publica-Logo.png @@ -202,3 +218,11 @@ link: https://pubwise.io imgURL: /assets/images/partners/community/Pubwise-logo.png type: community + +- company: Simplaex + link: https://simplaex.com + type: community + +- company: Yeahmobi + link: https://yeahmobi.com + type: community diff --git a/_includes/partners.html b/_includes/partners.html index 62dfd83f7a..ba55351359 100644 --- a/_includes/partners.html +++ b/_includes/partners.html @@ -2,7 +2,7 @@
-

Prebid.org Leader Members

+

Prebid.org Leader Members

-

Prebid.org Technology Partner Members

+

Prebid.org Technology Partner Members

-

Prebid.org Publisher Members

+

Prebid.org Publisher Members

-

Prebid.org Community Members

+

Prebid.org Community Members

- -

Prebid.js Bidding Partners

- - -
-
From a5319e553a81d7a1a7ea0cc20b2e0428585ce64c Mon Sep 17 00:00:00 2001 From: bretg Date: Wed, 13 May 2020 11:48:09 -0400 Subject: [PATCH 018/101] community members don't get a logo (#1980) --- partners/partners.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partners/partners.md b/partners/partners.md index a6209eb3c4..30108efca5 100644 --- a/partners/partners.md +++ b/partners/partners.md @@ -45,7 +45,7 @@ Companies join Prebid.org because they want to take an active role in supporting | Leader Members | | | | | | | $40,000 | | Technology Partners | As a Group, Technology members elect a representative to the board | | | | | | $25,000 | | Publishers | As a Group, Publisher members elect a representative to the board | | | | | | $5,000 | -| Community | | | | | | | Free | +| Community | | | | | | | Free | Have questions about becoming a member, email us at [membership@prebid.org](mailto:membership@prebid.org). From 06ff3390bbaacb1ccbd25196d4d2a5332fa3857b Mon Sep 17 00:00:00 2001 From: Bryan Szekely <49168870+bszekely1@users.noreply.github.com> Date: Wed, 13 May 2020 12:17:09 -0400 Subject: [PATCH 019/101] PBSDK 1.6: video signals (#1981) --- .../pbm-video-rewarded-adunit-android.md | 130 ++++++++++++++++ .../pbm-videointerstitialadunit-android.md | 113 ++++++++++++++ .../pbm-videooutstreamadunit-android.md | 124 ++++++++++++++- .../ios/pbm-video-rewarded-adunit-ios.md | 119 ++++++++++++++- .../ios/pbm-videointerstitialadunit-ios.md | 120 +++++++++++++++ .../ios/pbm-videooutstreamadunit-ios.md | 141 ++++++++++++++++-- 6 files changed, 730 insertions(+), 17 deletions(-) diff --git a/prebid-mobile/pbm-api/android/pbm-video-rewarded-adunit-android.md b/prebid-mobile/pbm-api/android/pbm-video-rewarded-adunit-android.md index aa1452d242..dd08df289a 100755 --- a/prebid-mobile/pbm-api/android/pbm-video-rewarded-adunit-android.md +++ b/prebid-mobile/pbm-api/android/pbm-video-rewarded-adunit-android.md @@ -32,6 +32,105 @@ RewardedVideoAdUnit("configId"); `configId`: String; Prebid Server configuration ID. +### Paramaters + +Parameters is a sub class of videoAdUnit.Create new Parameters class to define the parameters of the video ad unit. Parameters contain the OpenRTB video attributes. + + +**Parameters** + +`placement: [int] or [enum]`: OpenRTB placement + +`api: [int] or [enum]`: OpenRTB api frameworks + +`maxBitrate: int`: OpenRTB maxBirate + +`minBitrate: int`: OpenRTB minBitrate + +`maxDuration:int`: OpenRTB maxDuration + +`minDuration: int`: OpenRTB minDuration + +`mimes: [string]`: OpenRTB mime types + +`playbackMethod: [int]`: OpenRTB playbackMethod + +`protocols: [int] or [enum]`: OpenRTB Protocols + + +### placement + +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Placement Type for the auction can be expressed as an integer array or can use an enum for easier readability. Option 1 (in-stream) is intentionally left out due to lack of in-stream support in Prebid SDK. + +In the context of a VideoInterstitialAdUnit, rewarded video ads are typically labled as interstitial. As such, Prebid SDK will default to value 5 if no placement value is supplied. + +* `2` or `InBanner` : In-Banner placement exists within a web banner that leverages the banner space to deliver a video experience as opposed to another static or rich media format. The format relies on the existence of display ad inventory on the page for its delivery. +* `3` or `InArticle` : In-Article placement loads and plays dynamically between paragraphs of editorial content; existing as a standalone branded message. +* `4` or `InFeed` : In-Feed placement is found in content, social, or product feeds. +* `5` or `Slider` or `Floating` or `Interstitial` : Open RTB supports one of three values for option 5 as eitehr Slider, Floating or Interstitial. If an enum value is supplied in placement, bidders will recieve value 5 for placement type and assume to be interstitial with the instl flag set to 1. + + +#### api + +Array of integers or enum representing the supported OpenRTB Frameworks: + +* `1` or `Signals.Api.VPAID_1` : VPAID 1.0 +* `2` or `Signals.Api.VPAID_2` : VPAID 2.0 +* `3` or `Signals.Api.MRAID_1` : MRAID-1 +* `4` or `Signals.Api.ORMMA` : ORMMA +* `5` or `Signals.Api.MARAID_2` : MRAID-2 +* `6` or `Signals.Api.MARAID_3` : MRAID-3 + + +#### maxBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum bit rate in Kbps. + + +#### minBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum bit rate in Kbps. + + +#### maxDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum video ad duration in seconds. + + +#### minDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum video ad duration in seconds. + + +#### mimes + +Array of string representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) content MIME types (e.g., “video/x-ms-wmv”, “video/mp4”). + + +#### playbackMethod + +Array of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) playback methods. If none are specified, any method may be used. Only one method is typically used in practice. It is strongly advised to use only the first element of the array. + +* `1` or `Signals.PlaybackMethod.AutoPlaySoundOn` : Initiates on Page Load with Sound On +* `2` or `Signals.PlaybackMethod.AutoPlaySoundOff` : Initiates on Page Load with Sound Off by Default +* `3` or `Signals.PlaybackMethod.ClickToPlay` : Initiates on Click with Sound On +* `4` or `Signals.PlaybackMethod.MouseOver` : Initiates on Mouse-Over with Sound On +* `5` or `Signals.PlaybackMethod.EnterSoundOn` : Initiates on Entering Viewport with Sound On +* `6` or `Signals.PlaybackMethod.EnterSoundOff`: Initiates on Entering Viewport with Sound Off by Default + + +#### protocols + +Array or enum of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) supported Protocols. Values can be one of: + +* `1` or `Signals.Protocols.VAST_1_0` : VAST 1.0 +* `2` or `Signals.Protocols.VAST_2_0` : VAST 2.0 +* `3` or `Signals.Protocols.VAST_3_0` : VAST 3.0 +* `4` or `Signals.Protocols.VAST_1_0_Wrapper` : VAST 1.0 Wrapper +* `5` or `Signals.Protocols.VAST_2_0_Wrapper` : VAST 2.0 Wrapper +* `6` or `Signals.Protocols.VAST_3_0_Wrapper` : VAST 3.0 Wrapper +* `7` or `Signals.Protocols.VAST_4_0` : VAST 4.0 +* `8` or `Signals.Protocols.VAST_4_0_Wrapper` : VAST 4.0 Wrapper ## Methods @@ -47,6 +146,21 @@ RewardedVideoAdUnit("configId"); ```java //setup PB RewardedVideo RewardedVideoAdUnit adUnit = new RewardedVideoAdUnit("configId"); + +VideoAdUnit.Parameters parameters = new VideoAdUnit.Parameters(); + +parameters.setPlacement(5); // or alternative enum value Signals.Placement.Interstitial +parameters.setApi(Arrays.asList(1,2)); // or alternative enum values [Signals.Api.VPAID_1, Signals.Api.VPAID_2] +parameters.setMaxBitrate(1500); +parameters.setMinBitrate(300); +parameters.setMaxDuration(30); +parameters.setMinDuration(5); +parameters.setMimes(Arrays.asList("video/x-flv", "video/mp4")); +parameters.setPlaybackMethod(1); // or alternative enum value (Signals.PlaybackMethod.AutoPlaySoundOn) +parameters.setProtocols(Arrays.asList(2,3)); // or alternative enum values (Signals.Protocols.VAST_2_0, Signals.Protocols.VAST_3_0) + +adUnit.setParameters(parameters); + //setup AM RewardedVideo RewardedAd amRewardedAd = new RewardedAd(this, "adUnitId"); //load AM RewardedVideo @@ -96,6 +210,22 @@ adUnit.fetchDemand(request, new OnCompleteListener() { ```java //setup PB RewardedVideo RewardedVideoAdUnit adUnit = new RewardedVideoAdUnit("configId"); + +VideoAdUnit.Parameters parameters = new VideoAdUnit.Parameters(); + +parameters.setPlacement(5); // or alternative enum value Signals.Placement.Interstitial +parameters.setApi(Arrays.asList(1,2)); // or alternative enum values [Signals.Api.VPAID_1, Signals.Api.VPAID_2] +parameters.setMaxBitrate(1500); +parameters.setMinBitrate(300); +parameters.setMaxDuration(30); +parameters.setMinDuration(5); +parameters.setMimes(Arrays.asList("video/x-flv", "video/mp4")); +parameters.setPlaybackMethod(1); // or alternative enum value (Signals.PlaybackMethod.AutoPlaySoundOn) +parameters.setProtocols(Arrays.asList(2,3)); // or alternative enum values (Signals.Protocols.VAST_2_0, Signals.Protocols.VAST_3_0) + +adUnit.setParameters(parameters); + + //setup MP RewardedVideo SdkConfiguration sdkConfiguration = new SdkConfiguration.Builder("adUnitId").build(); MoPub.initializeSdk(this, sdkConfiguration, null); diff --git a/prebid-mobile/pbm-api/android/pbm-videointerstitialadunit-android.md b/prebid-mobile/pbm-api/android/pbm-videointerstitialadunit-android.md index 299dd3edfa..47378cdcdb 100755 --- a/prebid-mobile/pbm-api/android/pbm-videointerstitialadunit-android.md +++ b/prebid-mobile/pbm-api/android/pbm-videointerstitialadunit-android.md @@ -35,6 +35,105 @@ VideoInterstitialAdUnit("configId"); `configId`: String; Prebid Server configuration ID. +### Paramaters + +Parameters is a sub class of videoAdUnit.Create new Parameters class to define the parameters of the video ad unit. Parameters contain the OpenRTB video attributes. + + +**Parameters** + +`placement: [int] or [enum]`: OpenRTB Placement + +`api: [int] or [enum]`: OpenRTB api frameworks + +`maxBitrate: int`: OpenRTB maxBirate + +`minBitrate: int`: OpenRTB minBitrate + +`maxDuration:int`: OpenRTB maxDuration + +`minDuration: int`: OpenRTB minDuration + +`mimes: [string]`: OpenRTB mime types + +`playbackMethod: [int]`: OpenRTB playbackMethod + +`protocols: [int] or [enum]`: OpenRTB Protocols + + +#### placement + +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Placement Type for the auction can be expressed as an integer array or can use an enum for easier readability. Option 1 (in-stream) is intentionally left out due to lack of in-stream support in Prebid SDK. + +In the context of a VideoAdUnit, rewarded video ads are typically labled as interstitial. As such, Prebid SDK will default to value 5 if no placement value is supplied. + +* `2` or `InBanner` : In-Banner placement exists within a web banner that leverages the banner space to deliver a video experience as opposed to another static or rich media format. The format relies on the existence of display ad inventory on the page for its delivery. +* `3` or `InArticle` : In-Article placement loads and plays dynamically between paragraphs of editorial content; existing as a standalone branded message. +* `4` or `InFeed` : In-Feed placement is found in content, social, or product feeds. +* `5` or `Slider` or `Floating` or `Interstitial` : Open RTB supports one of three values for option 5 as eitehr Slider, Floating or Interstitial. If an enum value is supplied in placement, bidders will recieve value 5 for placement type and assume to be interstitial with the instl flag set to 1. + +#### api + +Array of integers or enum representing the supported OpenRTB Frameworks: + +* `1` or `Signals.Api.VPAID_1` : VPAID 1.0 +* `2` or `Signals.Api.VPAID_2` : VPAID 2.0 +* `3` or `Signals.Api.MRAID_1` : MRAID-1 +* `4` or `Signals.Api.ORMMA` : ORMMA +* `5` or `Signals.Api.MARAID_2` : MRAID-2 +* `6` or `Signals.Api.MARAID_3` : MRAID-3 + + +#### maxBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum bit rate in Kbps. + + +#### minBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum bit rate in Kbps. + + +#### maxDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum video ad duration in seconds. + + +#### minDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum video ad duration in seconds. + + +#### mimes + +Array of string representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) content MIME types (e.g., “video/x-ms-wmv”, “video/mp4”). + + +#### playbackMethod + +Array of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) playback methods. If none are specified, any method may be used. Only one method is typically used in practice. It is strongly advised to use only the first element of the array. + +* `1` or `Signals.PlaybackMethod.AutoPlaySoundOn` : Initiates on Page Load with Sound On +* `2` or `Signals.PlaybackMethod.AutoPlaySoundOff` : Initiates on Page Load with Sound Off by Default +* `3` or `Signals.PlaybackMethod.ClickToPlay` : Initiates on Click with Sound On +* `4` or `Signals.PlaybackMethod.MouseOver` : Initiates on Mouse-Over with Sound On +* `5` or `Signals.PlaybackMethod.EnterSoundOn` : Initiates on Entering Viewport with Sound On +* `6` or `Signals.PlaybackMethod.EnterSoundOff`: Initiates on Entering Viewport with Sound Off by Default + + +#### protocols + +Array or enum of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) supported Protocols. Values can be one of: + +* `1` or `Signals.Protocols.VAST_1_0` : VAST 1.0 +* `2` or `Signals.Protocols.VAST_2_0` : VAST 2.0 +* `3` or `Signals.Protocols.VAST_3_0` : VAST 3.0 +* `4` or `Signals.Protocols.VAST_1_0_Wrapper` : VAST 1.0 Wrapper +* `5` or `Signals.Protocols.VAST_2_0_Wrapper` : VAST 2.0 Wrapper +* `6` or `Signals.Protocols.VAST_3_0_Wrapper` : VAST 3.0 Wrapper +* `7` or `Signals.Protocols.VAST_4_0` : VAST 4.0 +* `8` or `Signals.Protocols.VAST_4_0_Wrapper` : VAST 4.0 Wrapper + ## Methods @@ -61,6 +160,20 @@ private void setupPBInterstitialVAST() { PrebidMobile.setPrebidServerAccountId("AccountID"); adUnit = new VideoInterstitialAdUnit("configID"); + + VideoAdUnit.Parameters parameters = new VideoAdUnit.Parameters(); + + parameters.setPlacement(5); // or alternative enum value Signals.Placement.Interstitial + parameters.setApi(Arrays.asList(1,2)); // or alternative enum values [Signals.Api.VPAID_1, Signals.Api.VPAID_2] + parameters.setMaxBitrate(1500); + parameters.setMinBitrate(300); + parameters.setMaxDuration(30); + parameters.setMinDuration(5); + parameters.setMimes(Arrays.asList("video/x-flv", "video/mp4")); + parameters.setPlaybackMethod(1); // or alternative enum value (Signals.PlaybackMethod.AutoPlaySoundOn) + parameters.setProtocols(Arrays.asList(2,3)); // or alternative enum values (Signals.Protocols.VAST_2_0, Signals.Protocols.VAST_3_0) + + adUnit.setParameters(parameters); } private void setupAMInterstitialVAST() { diff --git a/prebid-mobile/pbm-api/android/pbm-videooutstreamadunit-android.md b/prebid-mobile/pbm-api/android/pbm-videooutstreamadunit-android.md index 0cc2fea7da..c2b1915d09 100755 --- a/prebid-mobile/pbm-api/android/pbm-videooutstreamadunit-android.md +++ b/prebid-mobile/pbm-api/android/pbm-videooutstreamadunit-android.md @@ -25,7 +25,7 @@ Video Outstream is only supported with Google Ad Manager. Create a new Outstream Video Ad Unit associated with a Prebid Server configuration ID and a video player size. ```java -VideoAdUnit("configID", width, height, VideoAdUnit.PlacementType.placement); +VideoAdUnit("configID", width, height, VideoAdUnit.PlacementType.placement); //placement to be deprecated in favor of parameters.placement) ``` **Parameters** @@ -33,18 +33,118 @@ VideoAdUnit("configID", width, height, VideoAdUnit.PlacementType.placement); * `configId`: String; Prebid Server configuration ID. * `width`: Integer; Width of the video player. * `height`: Integer; Height of the video player. -* `placement` Enumeration. Possible values: +* `placement` (DEPRECATED FIELD) Enumeration. Possible values: * IN_BANNER * IN_ARTICLE * IN_FEED + +### Paramaters + +Parameters is a sub class of videoAdUnit.Create new Parameters class to define the parameters of the video ad unit. Parameters contain the OpenRTB video attributes. + + +**Parameters** + +`placement: [int] or [enum]`: OpenRTB placement + +`protocols: [int] or [enum]`: OpenRTB Protocols + +`api: [int] or [enum]`: OpenRTB api frameworks + +`maxBitrate: int`: OpenRTB maxBirate + +`minBitrate: int`: OpenRTB minBitrate + +`maxDuration:int`: OpenRTB maxDuration + +`minDuration: int`: OpenRTB minDuration + +`mimes: [string]`: OpenRTB mime types + +`playbackMethod: [int]`: OpenRTB playbackMethod + + +#### placement + +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Placement Type for the auction can be expressed as an integer array or can use an enum for easier readability. Option 1 (in-stream) is intentionally left out due to lack of in-stream support in Prebid SDK. + +* `2` or `IN_BANNER` : In-Banner placement exists within a web banner that leverages the banner space to deliver a video experience as opposed to another static or rich media format. The format relies on the existence of display ad inventory on the page for its delivery. +* `3` or `IN_ARTICLE` : In-Article placement loads and plays dynamically between paragraphs of editorial content; existing as a standalone branded message. +* `4` or `IN_FEED` : In-Feed placement is found in content, social, or product feeds. +* `5` : `Slider` / `Floater` While OpenRTB uses "5" to also designate interstitial as a placement type, interstitial is not used in the standard outsream format. For Interstital, use the videointerstital or RewardedVideoAdUnit ad unit + + +#### api + +Array of integers or enum representing the supported OpenRTB Frameworks: + +* `1` or `Signals.Api.VPAID_1` : VPAID 1.0 +* `2` or `Signals.Api.VPAID_2` : VPAID 2.0 +* `3` or `Signals.Api.MRAID_1` : MRAID-1 +* `4` or `Signals.Api.ORMMA` : ORMMA +* `5` or `Signals.Api.MARAID_2` : MRAID-2 +* `6` or `Signals.Api.MARAID_3` : MRAID-3 + + +#### maxBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum bit rate in Kbps. + + +#### minBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum bit rate in Kbps. + + +#### maxDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum video ad duration in seconds. + + +#### minDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum video ad duration in seconds. + + +#### mimes + +Array of string representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) content MIME types (e.g., “video/x-ms-wmv”, “video/mp4”). + + +#### playbackMethod + +Array of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) playback methods. If none are specified, any method may be used. Only one method is typically used in practice. It is strongly advised to use only the first element of the array. + +* `1` or `Signals.PlaybackMethod.AutoPlaySoundOn` : Initiates on Page Load with Sound On +* `2` or `Signals.PlaybackMethod.AutoPlaySoundOff` : Initiates on Page Load with Sound Off by Default +* `3` or `Signals.PlaybackMethod.ClickToPlay` : Initiates on Click with Sound On +* `4` or `Signals.PlaybackMethod.MouseOver` : Initiates on Mouse-Over with Sound On +* `5` or `Signals.PlaybackMethod.EnterSoundOn` : Initiates on Entering Viewport with Sound On +* `6` or `Signals.PlaybackMethod.EnterSoundOff`: Initiates on Entering Viewport with Sound Off by Default + + +#### protocols + +Array or enum of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) supported Protocols. Values can be one of: + +* `1` or `Signals.Protocols.VAST_1_0` : VAST 1.0 +* `2` or `Signals.Protocols.VAST_2_0` : VAST 2.0 +* `3` or `Signals.Protocols.VAST_3_0` : VAST 3.0 +* `4` or `Signals.Protocols.VAST_1_0_Wrapper` : VAST 1.0 Wrapper +* `5` or `Signals.Protocols.VAST_2_0_Wrapper` : VAST 2.0 Wrapper +* `6` or `Signals.Protocols.VAST_3_0_Wrapper` : VAST 3.0 Wrapper +* `7` or `Signals.Protocols.VAST_4_0` : VAST 4.0 +* `8` or `Signals.Protocols.VAST_4_0_Wrapper` : VAST 4.0 Wrapper + + ## Methods `VideoAdUnit` inherits all methods from the [AdUnit]({{site.baseurl}}/prebid-mobile/pbm-api/android/pbm-adunit-android.html) object. ## Example -``` +```java private PublisherAdView amBanner; AdUnit adUnit; @@ -57,7 +157,23 @@ void setupAndLoadAMBannerVAST() { private void setupPBBannerVAST() { PrebidMobile.setPrebidServerHost(Host.RUBICON); PrebidMobile.setPrebidServerAccountId("AccountID"); - adUnit = new VideoAdUnit("configId", 300, 250, VideoAdUnit.PlacementType.IN_BANNER); + adUnit = new VideoAdUnit("configId", 300, 250); + + VideoInterstitialAdUnit adUnit = new VideoInterstitialAdUnit("1001-1"); + + VideoAdUnit.Parameters parameters = new VideoAdUnit.Parameters(); + + parameters.setPlacement(2); // or alternative enum value Signals.Placement.InBanner + parameters.setApi(Arrays.asList(1,2)); // or alternative enum values [Signals.Api.VPAID_1, Signals.Api.VPAID_2] + parameters.setMaxBitrate(1500); + parameters.setMinBitrate(300); + parameters.setMaxDuration(30); + parameters.setMinDuration(5); + parameters.setMimes(Arrays.asList("video/x-flv", "video/mp4")); + parameters.setPlaybackMethod(1); // or alternative enum value (Signals.PlaybackMethod.AutoPlaySoundOn) + parameters.setProtocols(Arrays.asList(2,3)); // or alternative enum values (Signals.Protocols.VAST_2_0, Signals.Protocols.VAST_3_0) + + adUnit.setParameters(parameters); } private void setupAMBannerVAST() { diff --git a/prebid-mobile/pbm-api/ios/pbm-video-rewarded-adunit-ios.md b/prebid-mobile/pbm-api/ios/pbm-video-rewarded-adunit-ios.md index e2b3ded75a..d1be426cc1 100755 --- a/prebid-mobile/pbm-api/ios/pbm-video-rewarded-adunit-ios.md +++ b/prebid-mobile/pbm-api/ios/pbm-video-rewarded-adunit-ios.md @@ -20,6 +20,108 @@ Create a new Video Rewarded Ad Unit associated with a Prebid Server configuratio `configId(String)`: Prebid Server configuration ID. + +# Paramaters + +Parameters is a sub class of RewardedVideoAdUnit.Create new Parameters class to define the parameters of the video ad unit. Parameters contain the OpenRTB video attributes. + + +**Parameters** + +`placement: [int] or [enum]`: OpenRTB placement + +`api: [int] or [enum]`: OpenRTB api frameworks + +`maxBitrate: int`: OpenRTB maxBirate + +`minBitrate: int`: OpenRTB minBitrate + +`maxDuration:int`: OpenRTB maxDuration + +`minDuration: int`: OpenRTB minDuration + +`mimes: [string]`: OpenRTB mime types + +`playbackMethod: [int]`: OpenRTB playbackMethod + +`protocols: [int] or [enum]`: OpenRTB Protocols + + +### placement + +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Placement Type for the auction can be expressed as an integer array or can use an enum for easier readability. Option 1 (in-stream) is intentionally left out due to lack of in-stream support in Prebid SDK. + +In the context of a RewardedVideoAdUnit, rewarded video ads are typically labled as interstitial. As such, Prebid SDK will default to value 5 if no placement value is supplied. + +* `2` or `InBanner` : In-Banner placement exists within a web banner that leverages the banner space to deliver a video experience as opposed to another static or rich media format. The format relies on the existence of display ad inventory on the page for its delivery. +* `3` or `InArticle` : In-Article placement loads and plays dynamically between paragraphs of editorial content; existing as a standalone branded message. +* `4` or `InFeed` : In-Feed placement is found in content, social, or product feeds. +* `5` or `Slider`, `Floating` or `Interstitial` : Open RTB supports one of three values for option 5 as eitehr Slider, Floating or Interstitial. If an enum value is supplied in placement, bidders will recieve value 5 for placement type and assume to be interstitial with the instl flag set to 1. + + +### api + +Array of integers or enum representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Frameworks: + +* `1` or `Signals.Api.VPAID_1` : VPAID 1.0 +* `2` or `Signals.Api.VPAID_2` : VPAID 2.0 +* `3` or `Signals.Api.MRAID_1` : MRAID-1 +* `4` or `Signals.Api.ORMMA` : ORMMA +* `5` or `Signals.Api.MARAID_2` : MRAID-2 +* `6` or `Signals.Api.MARAID_3` : MRAID-3 + + +### maxBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum bit rate in Kbps. + + +### minBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum bit rate in Kbps. + + +### maxDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum video ad duration in seconds. + + +### minDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum video ad duration in seconds. + + +### mimes + +Array of string representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) content MIME types (e.g., “video/x-ms-wmv”, “video/mp4”). + + +### playbackMethod + +Array of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) playback methods. If none are specified, any method may be used. Only one method is typically used in practice. It is strongly advised to use only the first element of the array. + +* `1` or `Signals.PlaybackMethod.AutoPlaySoundOn` : Initiates on Page Load with Sound On +* `2` or `Signals.PlaybackMethod.AutoPlaySoundOff` : Initiates on Page Load with Sound Off by Default +* `3` or `Signals.PlaybackMethod.ClickToPlay` : Initiates on Click with Sound On +* `4` or `Signals.PlaybackMethod.MouseOver` : Initiates on Mouse-Over with Sound On +* `5` or `Signals.PlaybackMethod.EnterSoundOn` : Initiates on Entering Viewport with Sound On +* `6` or `Signals.PlaybackMethod.EnterSoundOff`: Initiates on Entering Viewport with Sound Off by Default + + +### protocols + +Array or enum of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) supported Protocols. Values can be one of: + +* `1` or `Signals.Protocols.VAST_1_0` : VAST 1.0 +* `2` or `Signals.Protocols.VAST_2_0` : VAST 2.0 +* `3` or `Signals.Protocols.VAST_3_0` : VAST 3.0 +* `4` or `Signals.Protocols.VAST_1_0_Wrapper` : VAST 1.0 Wrapper +* `5` or `Signals.Protocols.VAST_2_0_Wrapper` : VAST 2.0 Wrapper +* `6` or `Signals.Protocols.VAST_3_0_Wrapper` : VAST 3.0 Wrapper +* `7` or `Signals.Protocols.VAST_4_0` : VAST 4.0 +* `8` or `Signals.Protocols.VAST_4_0_Wrapper` : VAST 4.0 Wrapper + + See [AdUnit]({{site.baseurl}}/prebid-mobile/pbm-api/ios/pbm-adunit-ios.html) for additional parameters and methods. --- @@ -31,9 +133,22 @@ See [AdUnit]({{site.baseurl}}/prebid-mobile/pbm-api/ios/pbm-adunit-ios.html) for Import the GoogleMobileAds from [google-mobile-sdk](https://developers.google.com/admob/ios/download). **Swift** -``` +```swift //setup PB RewardedVideo let adUnit = RewardedVideoAdUnit(configId: "1001-1") + +//video parameters +parameters.mimes = ["video/mp4"] +parameters.protocols = [2,3,7] // or alternative enum values [Protocols.VAST_2_0, Protocols.VAST_3_0] +parameters.playbackMethod = [1] // or alternative enum value [PlaybackMethod.AutoPlaySoundOn] +parameters.api = [1,2] // or alternative enum values [Api.VPAID_1, Api.VPAID_2] +parameters.maxBitrate = 1500 +parameters.minBitrate = 300 +parameters.maxDuration = 30 +parameters.minDuration = 5 + +adUnit.parameters = parameters + //setup AM RewardedVideo let amRewardedAd = GADRewardedAd(adUnitID: "adUnitId") //load AM RewardedVideo @@ -56,7 +171,7 @@ let adUnit.fetchDemand(adObject: amRequest) { (resultCode: ResultCode) in Import the Mopub SDK from [Mopub](https://developers.mopub.com/publishers/ios/integrate/). **Swift** -``` +```swift //setup PB RewardedVideo let adUnit = RewardedVideoAdUnit(configId: "1001-1") //setup MP RewardedVideo diff --git a/prebid-mobile/pbm-api/ios/pbm-videointerstitialadunit-ios.md b/prebid-mobile/pbm-api/ios/pbm-videointerstitialadunit-ios.md index 29bec1a7aa..385bac77d3 100755 --- a/prebid-mobile/pbm-api/ios/pbm-videointerstitialadunit-ios.md +++ b/prebid-mobile/pbm-api/ios/pbm-videointerstitialadunit-ios.md @@ -19,6 +19,110 @@ Video Insterstital is only supported with Google Ad Manager. `configId(String)`: Prebid Server configuration ID. + +# Paramaters + +Parameters is a sub class of VideoInterstitialAdUnit.Create new Parameters class to define the parameters of the video ad unit. Parameters contain the OpenRTB video attributes. + + +**Parameters** + +`placement: [int] or [enum]`: OpenRTB placement + +`api: [int] or [enum]`: OpenRTB api frameworks + +`maxBitrate: int`: OpenRTB maxBirate + +`minBitrate: int`: OpenRTB minBitrate + +`maxDuration:int`: OpenRTB maxDuration + +`minDuration: int`: OpenRTB minDuration + +`mimes: [string]`: OpenRTB mime types + +`playbackMethod: [int]`: OpenRTB playbackMethod + +`protocols: [int] or [enum]`: OpenRTB Protocols + + +### placement + +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Placement Type for the auction can be expressed as an integer array or can use an enum for easier readability. Option 1 (in-stream) is intentionally left out due to lack of in-stream support in Prebid SDK. + +In the context of a VideoInterstitialAdUnit, rewarded video ads are typically labled as interstitial. As such, Prebid SDK will default to value 5 if no placement value is supplied. + +* `2` or `InBanner` : In-Banner placement exists within a web banner that leverages the banner space to deliver a video experience as opposed to another static or rich media format. The format relies on the existence of display ad inventory on the page for its delivery. +* `3` or `InArticle` : In-Article placement loads and plays dynamically between paragraphs of editorial content; existing as a standalone branded message. +* `4` or `InFeed` : In-Feed placement is found in content, social, or product feeds. +* `5` or `Slider`, `Floating` or `Interstitial` : Open RTB supports one of three values for option 5 as eitehr Slider, Floating or Interstitial. If an enum value is supplied in placement, bidders will recieve value 5 for placement type and assume to be interstitial with the instl flag set to 1. + + +### api + +Array of integers or enum representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Frameworks: + +* `1` or `Signals.Api.VPAID_1` : VPAID 1.0 +* `2` or `Signals.Api.VPAID_2` : VPAID 2.0 +* `3` or `Signals.Api.MRAID_1` : MRAID-1 +* `4` or `Signals.Api.ORMMA` : ORMMA +* `5` or `Signals.Api.MARAID_2` : MRAID-2 +* `6` or `Signals.Api.MARAID_3` : MRAID-3 + + +### maxBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum bit rate in Kbps. + + +### minBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum bit rate in Kbps. + + +### maxDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum video ad duration in seconds. + + +### minDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum video ad duration in seconds. + + +### mimes + +Array of string representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) content MIME types (e.g., “video/x-ms-wmv”, “video/mp4”). + + +### playbackMethod + +Array of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) playback methods. If none are specified, any method may be used. Only one method is typically used in practice. It is strongly advised to use only the first element of the array. + +* `1` or `Signals.PlaybackMethod.AutoPlaySoundOn` : Initiates on Page Load with Sound On +* `2` or `Signals.PlaybackMethod.AutoPlaySoundOff` : Initiates on Page Load with Sound Off by Default +* `3` or `Signals.PlaybackMethod.ClickToPlay` : Initiates on Click with Sound On +* `4` or `Signals.PlaybackMethod.MouseOver` : Initiates on Mouse-Over with Sound On +* `5` or `Signals.PlaybackMethod.EnterSoundOn` : Initiates on Entering Viewport with Sound On +* `6` or `Signals.PlaybackMethod.EnterSoundOff`: Initiates on Entering Viewport with Sound Off by Default + + +### protocols + +Array or enum of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) supported Protocols. Values can be one of: + +* `1` or `Signals.Protocols.VAST_1_0` : VAST 1.0 +* `2` or `Signals.Protocols.VAST_2_0` : VAST 2.0 +* `3` or `Signals.Protocols.VAST_3_0` : VAST 3.0 +* `4` or `Signals.Protocols.VAST_1_0_Wrapper` : VAST 1.0 Wrapper +* `5` or `Signals.Protocols.VAST_2_0_Wrapper` : VAST 2.0 Wrapper +* `6` or `Signals.Protocols.VAST_3_0_Wrapper` : VAST 3.0 Wrapper +* `7` or `Signals.Protocols.VAST_4_0` : VAST 4.0 +* `8` or `Signals.Protocols.VAST_4_0_Wrapper` : VAST 4.0 Wrapper + + + + See [AdUnit]({{site.baseurl}}/prebid-mobile/pbm-api/ios/pbm-adunit-ios.html) for additional parameters and methods. --- @@ -46,6 +150,22 @@ Import the GoogleMobileAds from [google-mobile-sdk](https://developers.google.co Prebid.shared.prebidServerHost = .Rubicon Prebid.shared.prebidServerAccountId = "accountId" adUnit = VideoInterstitialAdUnit(configId: "configId") + + + //video parameters + parameters.mimes = ["video/mp4"] + parameters.protocols = [2,3,7] // or alternative enum values [Protocols.VAST_2_0, Protocols.VAST_3_0] + parameters.playbackMethod = [1] // or alternative enum value [PlaybackMethod.AutoPlaySoundOn] + parameters.api = [1,2] // or alternative enum values [Api.VPAID_1, Api.VPAID_2] + parameters.maxBitrate = 1500 + parameters.minBitrate = 300 + parameters.maxDuration = 30 + parameters.minDuration = 5 + + adUnit.parameters = parameters + + self.adUnit = adUnit + } func setupAMInterstitialVAST() { diff --git a/prebid-mobile/pbm-api/ios/pbm-videooutstreamadunit-ios.md b/prebid-mobile/pbm-api/ios/pbm-videooutstreamadunit-ios.md index 981afc7b00..d33a6bd6fd 100755 --- a/prebid-mobile/pbm-api/ios/pbm-videooutstreamadunit-ios.md +++ b/prebid-mobile/pbm-api/ios/pbm-videooutstreamadunit-ios.md @@ -18,9 +18,8 @@ Video Outstream is only supported with Google Ad Manager. - TOC {:toc} -## Object -### VideoAdUnit + Create a new Video Outstream Ad Unit associated with a Prebid Server configuration ID and a video size. @@ -35,10 +34,13 @@ See [AdUnit]({{site.baseurl}}/prebid-mobile/pbm-api/ios/pbm-adunit-ios.html) for `size(CGSize)`: Width and height of the video ad unit. -`type:Enum`: OpenRTB Placement Type. +`type:Enum`: OpenRTB Placement Type. This field is being deprecated in favor of parameters.type + + + -#### CGSize +## CGSize Size of video ad unit. @@ -49,13 +51,117 @@ Size of video ad unit. `height`: Height of video ad unit in DIPs. -#### type +## type + +{% capture deprecate %} +VideoAdUnit type will be deprecated in future releases. Use parameters.placement below for future usage of type. +{% endcapture %} +{% include /alerts/alert_important.html content=deprecate %} OpenRTB Placement Type represented as an enumeration of values: -* `inBanner` is transformed into OpenRTB value 2 to bid adapters -* `inArticle` is transformed into OpenRTB value 3 to bid adapters -* `inFeed` is transformed into OpenRTB value 4 to bid adapters +* inBanner is transformed into OpenRTB value 2 to bid adapters +* inArticle is transformed into OpenRTB value 3 to bid adapters +* inFeed is transformed into OpenRTB value 4 to bid adapters + + +## Paramaters + +Parameters is a sub class of videoAdUnit.Create new Parameters class to define the parameters of the video ad unit. Parameters contain the OpenRTB video attributes. + + +**Parameters** + +`placement: [int] or [enum]`: OpenRTB placement + +`api: [int] or [enum]`: OpenRTB api frameworks + +`maxBitrate: int`: OpenRTB maxBirate + +`minBitrate: int`: OpenRTB minBitrate + +`maxDuration:int`: OpenRTB maxDuration + +`minDuration: int`: OpenRTB minDuration + +`mimes: [string]`: OpenRTB mime types + +`playbackMethod: [int]`: OpenRTB playbackMethod + +`protocols: [int] or [enum]`: OpenRTB Protocols + + +#### placement + +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Placement Type for the auction can be expressed as an integer array or can use an enum for easier readability. Option 1 (in-stream) is intentionally left out due to lack of in-stream support in Prebid SDK. + +* `2` or `InBanner` : In-Banner placement exists within a web banner that leverages the banner space to deliver a video experience as opposed to another static or rich media format. The format relies on the existence of display ad inventory on the page for its delivery. +* `3` or `InArticle` : In-Article placement loads and plays dynamically between paragraphs of editorial content; existing as a standalone branded message. +* `4` or `InFeed` : In-Feed placement is found in content, social, or product feeds. +* `5` or `Slider` or `Floating` : While OpenRTB uses "5" to also designate interstitial as a placement type, interstitial is not used in the standard outsream format. For Interstital, use the videointerstital or RewardedVideoAdUnit ad unit + + +#### api + +Array of integers or enum representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) Frameworks: + +* `1` or `Signals.Api.VPAID_1` : VPAID 1.0 +* `2` or `Signals.Api.VPAID_2` : VPAID 2.0 +* `3` or `Signals.Api.MRAID_1` : MRAID-1 +* `4` or `Signals.Api.ORMMA` : ORMMA +* `5` or `Signals.Api.MARAID_2` : MRAID-2 +* `6` or `Signals.Api.MARAID_3` : MRAID-3 + + +#### maxBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum bit rate in Kbps. + + +#### minBitrate + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum bit rate in Kbps. + + +#### maxDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) maximum video ad duration in seconds. + + +#### minDuration + +Integer representing the [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) minimum video ad duration in seconds. + + +#### mimes + +Array of string representing the supported [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) content MIME types (e.g., “video/x-ms-wmv”, “video/mp4”). + + +#### playbackMethod + +Array of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) playback methods. If none are specified, any method may be used. Only one method is typically used in practice. It is strongly advised to use only the first element of the array. + +* `1` or `Signals.PlaybackMethod.AutoPlaySoundOn` : Initiates on Page Load with Sound On +* `2` or `Signals.PlaybackMethod.AutoPlaySoundOff` : Initiates on Page Load with Sound Off by Default +* `3` or `Signals.PlaybackMethod.ClickToPlay` : Initiates on Click with Sound On +* `4` or `Signals.PlaybackMethod.MouseOver` : Initiates on Mouse-Over with Sound On +* `5` or `Signals.PlaybackMethod.EnterSoundOn` : Initiates on Entering Viewport with Sound On +* `6` or `Signals.PlaybackMethod.EnterSoundOff`: Initiates on Entering Viewport with Sound Off by Default + + +#### protocols + +Array or enum of [OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) supported Protocols. Values can be one of: + +* `1` or `Signals.Protocols.VAST_1_0` : VAST 1.0 +* `2` or `Signals.Protocols.VAST_2_0` : VAST 2.0 +* `3` or `Signals.Protocols.VAST_3_0` : VAST 3.0 +* `4` or `Signals.Protocols.VAST_1_0_Wrapper` : VAST 1.0 Wrapper +* `5` or `Signals.Protocols.VAST_2_0_Wrapper` : VAST 2.0 Wrapper +* `6` or `Signals.Protocols.VAST_3_0_Wrapper` : VAST 3.0 Wrapper +* `7` or `Signals.Protocols.VAST_4_0` : VAST 4.0 +* `8` or `Signals.Protocols.VAST_4_0_Wrapper` : VAST 4.0 Wrapper @@ -73,7 +179,7 @@ See [AdUnit]({{site.baseurl}}/prebid-mobile/pbm-api/ios/pbm-adunit-ios.html) for Import the GoogleMobileAds from [google-mobile-sdk](https://developers.google.com/admob/ios/download) into the UIViewController displaying the VideoAdUnit. **Swift** -``` +```swift var amBanner: DFPBannerView! var adUnit: AdUnit! @@ -91,11 +197,24 @@ Import the GoogleMobileAds from [google-mobile-sdk](https://developers.google.co Prebid.shared.prebidServerHost = .Rubicon Prebid.shared.prebidServerAccountId = "accountId" - adUnit = VideoAdUnit(configId: "configId", size: CGSize(width: 300, height: 250), type: .inBanner) + adUnit = VideoAdUnit(configId: "configId", size: CGSize(width: 300, height: 250)) + + let parameters = VideoBaseAdUnit.Parameters() + parameters.mimes = ["video/mp4"] + parameters.protocols = [2,3,7] // or alternative enum values [Protocols.VAST_2_0, Protocols.VAST_3_0] + parameters.playbackMethod = [1] // or alternative enum value [PlaybackMethod.AutoPlaySoundOn] + parameters.api = [1,2] // or alternative enum values [Api.VPAID_1, Api.VPAID_2] + parameters.maxBitrate = 1500 + parameters.minBitrate = 300 + parameters.maxDuration = 30 + parameters.minDuration = 5 + parameters.placement = 2 // or alternative enum value Signals.Placement.InBanner + + adUnit.parameters = parameters } func setupAMBannerVAST() { - setupAMBanner(id: "/5300653/test_adunit_vast_pavliuchyk") + setupAMBanner(id: "/networkID/adUnit") } func setupAMBanner(id: String) { From 30fbb0b0776cb30a094ff570a5baa47a0f1d172e Mon Sep 17 00:00:00 2001 From: bretg Date: Thu, 14 May 2020 11:20:53 -0400 Subject: [PATCH 020/101] adding buyer tier (#1984) --- partners/partners.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/partners/partners.md b/partners/partners.md index 30108efca5..34e9fce27c 100644 --- a/partners/partners.md +++ b/partners/partners.md @@ -44,7 +44,8 @@ Companies join Prebid.org because they want to take an active role in supporting |---------------------|-----------------------------------------------------------------------|-------------------|------------------------|----------------------------------|--------------------------|----------------------------|-------------| | Leader Members | | | | | | | $40,000 | | Technology Partners | As a Group, Technology members elect a representative to the board | | | | | | $25,000 | -| Publishers | As a Group, Publisher members elect a representative to the board | | | | | | $5,000 | +| Publishers | As a Group, Publisher members elect a representative to the board | | | | | | $5,000 | +| Buyers | As a Group, Buyer members elect a representative to the board | | | | | | $5,000 | | Community | | | | | | | Free | Have questions about becoming a member, email us at [membership@prebid.org](mailto:membership@prebid.org). From e07564e113521e91241a9f392455198c894b64c7 Mon Sep 17 00:00:00 2001 From: Gena Date: Mon, 18 May 2020 19:28:07 +0300 Subject: [PATCH 021/101] Add selectmedia to bidders list & downloads page (#1959) --- dev-docs/bidders/selectmedia.md | 69 +++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 dev-docs/bidders/selectmedia.md diff --git a/dev-docs/bidders/selectmedia.md b/dev-docs/bidders/selectmedia.md new file mode 100644 index 0000000000..573e11f194 --- /dev/null +++ b/dev-docs/bidders/selectmedia.md @@ -0,0 +1,69 @@ +--- +layout: bidder +title: Select Media +description: Prebid Select Media Bidder Adapter +hide: true +biddercode: selectmedia +aliasCode: adtelligent +media_types: banner, video +--- + +### Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|---------------------------------|----------|-----------| +| `aid` | required | The traffic source ID | `232131` | `integer` | + + +### Test Parameters +``` + var adUnits = [ + + // Video instream adUnit + { + code: 'div-test-div', + sizes: [[640, 480]], + mediaTypes: { + video: { + context: 'instream' + } + }, + bids: [{ + bidder: 'selectmedia', + params: { + aid: 331133 + } + }] + }, + + // Video outstream adUnit + { + code: 'outstream-test-div', + sizes: [[640, 480]], + mediaTypes: { + video: { + context: 'outstream' + } + }, + bids: [{ + bidder: 'selectmedia', + params: { + aid: 331133 + } + }] + }, + + // Banner adUnit + { + code: 'div-test-div', + sizes: [[300, 250]], + bids: [{ + bidder: 'selectmedia', + params: { + aid: 350975 + } + }] + } + ]; +``` From bdfbbed93c8b88941af94898165eeb17c66fada8 Mon Sep 17 00:00:00 2001 From: Filip Stamenkovic Date: Mon, 18 May 2020 18:36:06 +0200 Subject: [PATCH 022/101] fix some small typos for pbAdSlot exampe (#1983) --- features/pbAdSlot.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/features/pbAdSlot.md b/features/pbAdSlot.md index b07d3ec9d0..8f891ee77f 100644 --- a/features/pbAdSlot.md +++ b/features/pbAdSlot.md @@ -51,14 +51,14 @@ var setPbAdSlot = function setPbAdSlot(adunits) { // check if AdUnit.code has a div with a matching id value const adUnitCodeDiv = document.getElementById(adUnit.code); - if (!adUnitCodeDiv) { + if (adUnitCodeDiv) { // try to retrieve a data element from the div called data-adslotid. if (adUnitCodeDiv.dataset.adslotid) { adUnit.fpd.context.pbAdSlot = adUnitCodeDiv.dataset.adslotid; return; } // Else if AdUnit.code matched a div and it's a banner mediaType and googletag is present - if (adUnit.mediaType && typeof adUnit.mediaType === 'object' && adUnit.mediaType.banner && adUnit.mediaTypes.banner.sizes && window.googletag && googletag.apiReady) { + if (adUnit.mediaTypes && typeof adUnit.mediaTypes === 'object' && adUnit.mediaTypes.banner && adUnit.mediaTypes.banner.sizes && window.googletag && googletag.apiReady) { var gptSlots = googletag.pubads().getSlots(); // look up the GPT slot name from the div. var linkedSlot = gptSlots.find(function (gptSlot) { @@ -72,7 +72,7 @@ var setPbAdSlot = function setPbAdSlot(adunits) { } // Else, just use the AdUnit.code, assuming that it's an ad unit slot adUnit.fpd.context.pbAdSlot = adUnit.code; - }; + }); }; pbjs.onEvent('beforeRequestBids', setPbAdSlot); From 088a30e47c1afaf373ab6451e51afe02e7517818 Mon Sep 17 00:00:00 2001 From: MartianTribe Date: Tue, 19 May 2020 11:41:31 -0400 Subject: [PATCH 023/101] Pb usersync edits (#1991) * Refactored side nav for PBS * Made small edits to AMP page. * Added link for Appnexus managed service for AMP Co-authored-by: Steve Co-authored-by: Steve Suranie --- _data/sidebar.yml | 270 +++++++++++++++++++---- dev-docs/bidders/appnexus.md | 7 + dev-docs/show-prebid-ads-on-amp-pages.md | 16 +- 3 files changed, 238 insertions(+), 55 deletions(-) diff --git a/_data/sidebar.yml b/_data/sidebar.yml index 46ef1e034c..3c88b179c5 100644 --- a/_data/sidebar.yml +++ b/_data/sidebar.yml @@ -486,7 +486,7 @@ isSectionHeader: 0 sectionTitle: subgroup: 5 - + - sbSecId: 1 title: Google Ad Manager Video link: /dev-docs/modules/dfp_video.html @@ -1616,183 +1616,357 @@ subgroup: 0 - sbSecId: 5 - title: Overview - link: /prebid-server/prebid-server-overview.html + title: What is Prebid Server + link: /prebid-server/overview/prebid-server-overview.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 0 - sbSecId: 5 - title: Developers + title: Hosted vs. Self-Hosted Solutions + link: /prebid-server/overview/hosting-options.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 0 + +- sbSecId: 5 + title: Go or Java + link: /prebid-server/overview/go-or-java.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 0 + +- sbSecId: 5 + title: "Use Cases" link: - isHeader: 1 - headerId: serverdevelopers + isHeader: 0 isSectionHeader: 0 + isCatHeader: 1 sectionTitle: - subgroup: 1 + subgroup: 0 - sbSecId: 5 - title: Add A New Analytics Module - link: /prebid-server/developers/add-new-analytics-module.html + title: '  Prebid.js' + link: /prebid-server/overview/use-cases/prebid.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 1 + subgroup: 0 + +- sbSecId: 5 + title: '  Mobile' + link: /prebid-server/overview/use-cases/mobile.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 0 + +- sbSecId: 5 + title: '  AMP' + link: /prebid-server/overview/use-cases/amp.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 0 + +- sbSecId: 5 + title: '  Video' + link: /prebid-server/overview/use-cases/video.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 0 + +- sbSecId: 5 + title: Features + link: + isHeader: 1 + headerId: serveroverview + isSectionHeader: 0 + sectionTitle: + subgroup: 0 - sbSecId: 5 - title: Add A Bidder - link: /prebid-server/developers/add-new-bidder.html + title: Targeting and Price Granularity + link: /prebid-server/overview/targeting.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: Prebid Server Bidders - Additional Info - link: /prebid-server/developers/pbs-bidder-info.html + title: Bid and VAST XML Caching + link: /prebid-server/overview/caching.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: Cookie Sync Technical Details - link: /prebid-server/developers/cookie-syncs.html + title: Currency Conversion + link: /prebid-server/overview/currency.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: COPPA Compliance - link: /prebid-server/developers/coppa.html + title: Stored Requests + link: /prebid-server/overview/stored-requests.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: Currency Converter - link: /prebid-server/developers/currency-converter.html + title: Interstitials + link: /prebid-server/overview/interstitials.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: Default Request - link: /prebid-server/developers/default-request.html + title: Events + link: /prebid-server/overview/events.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: GDPR Mechanics - link: /prebid-server/developers/gdpr.html + title: Analytics + link: /prebid-server/overview/analytics.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: Stored Requests - link: /prebid-server/developers/stored-requests.html + title: Privacy + link: /prebid-server/overview/privacy.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 1 - sbSecId: 5 - title: Endpoints + title: Bid Adapters link: isHeader: 1 - headerId: endpoints + headerId: bidadapters isSectionHeader: 0 sectionTitle: subgroup: 2 - sbSecId: 5 - title: Info - Bidders - link: /prebid-server/endpoints/info/bidders.html + title: List of Bid Adapters + link: /prebid-server/bid-adapters/list.html isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 2 - sbSecId: 5 - title: Info - Bidder Name + title: Hosting Instructions + link: + isHeader: 1 + headerId: serverhosting + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + +- sbSecId: 5 + title: Go Integration + link: /prebid-server/hosting/go.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + +- sbSecId: 5 + title: Java Integration + link: /prebid-server/hosting/java.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + +- sbSecId: 5 + title: Enabling Bidder Adapters + link: /prebid-server/hosting/enable-bid-adapter.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + +- sbSecId: 5 + title: Registering Bidder Adapters + link: /prebid-server/hosting/register-bid-adapter.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + +- sbSecId: 5 + title: Setting Up Metrics + link: /prebid-server/hosting/setup-metrics.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + +- sbSecId: 5 + title: Developers + link: + isHeader: 1 + headerId: serverdevelopers + isSectionHeader: 0 + sectionTitle: + subgroup: 4 + +- sbSecId: 5 + title: Building a Server Side Adapter + link: /prebid-server/developers/build-server-adapter.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 4 + +- sbSecId: 5 + title: Cookie Sync + link: /prebid-server/developers/cookie-sync.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 4 + +- sbSecId: 5 + title: Building an Analytics Adapter + link: /prebid-server/developers/build-analytics-adapter.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 4 + +- sbSecId: 5 + title: Debugging Stored Requests + link: /prebid-server/developers/debug-stored-requests.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 4 + +- sbSecId: 5 + title: Debugging Stored Requests + link: /prebid-server/developers/debug-stored-requests.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 4 + +- sbSecId: 5 + title: References + link: + isHeader: 1 + headerId: serverdevelopers + isSectionHeader: 0 + sectionTitle: + subgroup: 5 + +- sbSecId: 5 + title: "Endpoints" + link: + isHeader: 0 + isSectionHeader: 0 + isCatHeader: 1 + sectionTitle: + subgroup: 5 + +- sbSecId: 5 + title: '  Info - Bidders' + link: /prebid-server/endpoints/info/bidders.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 5 + +- sbSecId: 5 + title: '  Info - Bidder Name' link: /prebid-server/endpoints/info/bidders/bidderName.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Bidders - Params + title: '  Bidders - Params' link: /prebid-server/endpoints/bidders/params.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Starting Cookie Sync + title: '  Starting Cookie Sync' link: /prebid-server/endpoints/cookieSync.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Prebid Server Auction + title: '  Prebid Server Auction' link: /prebid-server/endpoints/openrtb2/auction.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Prebid Server AMP + title: '  Prebid Server AMP' link: /prebid-server/endpoints/openrtb2/amp.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Prebid Server Video + title: '  Prebid Server Video' link: /prebid-server/endpoints/openrtb2/video.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Saving User Syncs + title: '  Saving User Syncs' link: /prebid-server/endpoints/setuid.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Get User Syncs + title: '  Get User Syncs' link: /prebid-server/endpoints/getuids.html isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 - sbSecId: 5 - title: Get Status + title: '  Get Status' link: /prebid-server/endpoints/status.html Item: 1 isHeader: 0 isSectionHeader: 0 sectionTitle: - subgroup: 2 + subgroup: 5 + #--------------Formats--------------| diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md index 395e2fa413..8be0373b01 100644 --- a/dev-docs/bidders/appnexus.md +++ b/dev-docs/bidders/appnexus.md @@ -22,6 +22,7 @@ tcf2_supported: true - [App Object](#appnexus-app-object) - [Custom Targeting keys](#custom-targeting-keys) - [Passing Keys Without Values](#appnexus-no-value) +- [User Sync in AMP](#appnexus-amp) - [Debug Auction](#appnexus-debug-auction)
@@ -152,6 +153,12 @@ keywords: { } ``` + + +#### User Sync in AMP + +If you are syncing user id's with Prebid Server and are using AppNexus' managed service, use the following URL for the source:
https://acdn.adnxs.com/prebid/amp/user-sync/load-cookie.html +
#### Debug Auction diff --git a/dev-docs/show-prebid-ads-on-amp-pages.md b/dev-docs/show-prebid-ads-on-amp-pages.md index 16b2e2ab30..a67f238882 100644 --- a/dev-docs/show-prebid-ads-on-amp-pages.md +++ b/dev-docs/show-prebid-ads-on-amp-pages.md @@ -138,7 +138,7 @@ You can always get the latest version of the creative code below from [the AMP e For Google Ad Manager: -```html +```html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-			<script>
-				alert("this is a test of js code fencing");
-				var letthisbeone = 1;
-				var objectthing { 
-					keything: "keyname",
-					keyvalue: 0,
-					arraything: [
-						object1:{keything:"otherkeyname", keyvalue:1}
-					]
-				}
-			</script>
-		
- - - - \ No newline at end of file diff --git a/sandbox/demo/assets/images/prebid_logo.png b/sandbox/demo/assets/images/prebid_logo.png deleted file mode 100644 index 4c0c275eeffceff7d778e8d144345642a21bfc86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123917 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- - -
-
-

Click an author to read an excerpt from their book.

-
- -
-

Dodge testifies that this was the first time he had tried to communicate with his men since rejoining them at the head of the gulch, and he is reported as saying—for the second time—something about "getting out of this death trap." When asked by the Board of Review if he had explained to the men the danger they were in, he looked at the Board in amazement, as if the Board had never been outside the city limits and wouldn't know sawdust if they saw it in a pile. It was getting late for talk anyway. What could anybody hear? It roared from behind, below, and across, and the crew, inside it, was shut out from all but a small piece of the outside world.

-

They had come to the station of the cross where something you want to see and can't shuts out the sight of everything that otherwise could be seen. Rumsey says again and again what the something was he couldn't see. "The top of the ridge, the top of the ridge.

-

"I had noticed that a fire will wear out when it reaches the top of a ridge. I started putting on steam thinking if I could get to the top of the ridge I would be safe.

-

"I kept thinking the ridge—if I can make it. On the ridge I will be safe . . . I forgot to mention I could not definitely see the ridge from where we were. We kept running up since it had to be there somewhere. Might be a mile and a half or a hundred feet—I had no idea."

-

The survivors say they weren't panicked, and something like that is probably true. Smokejumpers are selected for being tough, but Dodge's men were very young and, as he testified, none of them had been on a blowup before and they were getting exhausted and confused. The world roared at them—there was no safe place inside and there was almost no outside. By now they were short of breath from the exertion of their climbing and their lungs were being seared by the heat. A world was coming where no organ of the body had consciousness but the lungs.

-

Dodge's order was to throw away just their packs and heavy tools, but to his surprise some of them had already thrown away all their equipment. On the other hand, some of them wouldn't abandon their heavy tools, even after Dodge's order. Diettert, one of the most intelligent of the crew, continued carrying both his tools until Rumsey caught up with him, took his shovel, and leaned it against a pine tree. Just a little farther on, Rumsey and Sallee passed the recreation guard, Jim Harrison, who, having been on the fire all afternoon, was now exhausted. He was sitting with his heavy pack on and was making no effort to take it off, and Rumsey and Sallee wondered numbly why he didn't but no one stopped to suggest he get on his feet or gave him a hand to help him up. It was even too late to pray for him. Afterwards, his ranger wrote his mother and, struggling for something to say that would comfort her, told her that her son always attended mass when he could.

-

It was way over one hundred degrees. Except for some scattered timber, the slope was mostly hot rock slides and grass dried to hay.

-

It was becoming a world where thought that could be described as such was done largely by fixations. Thought consisted in repeating over and over something that had been said in a training course or at least by somebody older than you.

-

Critical distances shortened. It had been a quarter of a mile from where Dodge had rejoined his crew to where he had the crew reverse direction. From there they had gone only five hundred yards at the most before he realized the fire was gaining on them so rapidly that the men should discard whatever was heavy.

-

The next station of the cross was only seventy-five yards ahead. There they came to the edge of scattered timber with a grassy slope ahead. There they could see what is really not possible to see: the center of a blowup. It is really not possible to see the center of a blowup because the smoke only occasionally lifts, and when it does all that can be seen are pieces, pieces of death flying around looking for you—burning cones, branches circling on wings, a log in flight without a propeller. Below in the bottom of the gulch was a great roar without visible flames but blown with winds on fire. Now, for the first time, they could have seen to the head of the gulch if they had been looking that way. And now, for the first time, to their left the top of the ridge was visible, looking when the smoke parted to be not more than two hundred yards away.

-
- -
-

We had no means of angular orientation, were already deafened, and were bit by bit growing blind. The moon like a pallid ember began to go out in the banks of fog. Overhead the sky was filling with clouds, and we flew thenceforth between cloud and fog in a world voided of all substance and all light. The ports that signaled us had given up trying to tell us where we were. “No bearings, no bearings,” was all their message, for our voice reached them from everywhere and nowhere. With sinking hearts Neri and I leaned out, he on his side and I on mine, to see if anything, anything at all, was distinguishable in this void. Already our tired eyes were seeing things— errant signs, delusive flashes, phantoms.

-

And suddenly, when already we were in despair, low on the horizon a brilliant point was unveiled on our port bow. A wave of joy went through me. Neri leaned forward, and I could hear him singing. It could not but be the beacon of an airport, for after dark the whole Sahara goes black and forms a great dead expanse. That light twinkled for a space— and then went out! We had been steering for a star which was visible for a few minutes only, just before setting on the horizon between the layer of fog and the clouds.

-

Then other stars took up the game, and with a sort of dogged hope we set our course for each of them in turn. Each time that a light lingered a while, we performed the same crucial experiment. Neri would send his message to the airport at Cisneros: “Beacon in view. Put out your light and flash three times.” And Cisneros would put out its beacon and flash three times while the hard light at which we gazed would not, incorruptible star, so much as wink. And despite our dwindling fuel we continued to nibble at the golden bait which each time seemed more surely the true light of a beacon, was each time a promise of a landing and of life— and we had each time to change our star.

-

And with that we knew ourselves to be lost in interplanetary space among a thousand inaccessible planets, we who sought^only the one veritable planet, our own, that planet on which alone we should find our familiar countryside, the houses of our friends, our treasures. On which alone we should find . . . Let me draw the picture that took shape before my eyes. It will seem to you childish; but even in the midst of danger a man retains his human concerns. I was thirsty and I was hungry. If we did find Cisneros we should re-fuel and carry on to Casablanca, and there we should come down in the cool of daybreak, free to idle the hours away. Neri and I would go into town. We would go to a little pub already open despite the early hour. Safe and sound, Neri and I would sit down at table and laugh at the night of danger as we ate our warm rolls and drank our bowls of coffee and hot milk. We would receive this matutinal gift at the hands of life. Even as an old peasant woman recognizes her God in a painted image, in a childish medal, in a chaplet, so life would speak to us in its hum- blest language in order that we understand. The joy of living, I say, was summed up for me in the remembered sensation of that first burning and aromatic swallow, that mixture of milk and coffee and bread by which men hold communion with tranquil pastures, exotic plantations, and golden harvests, communion with the earth. Amidst all these stars there was but one that could make itself significant for us by composing this aromatic bowl that was its daily gift at dawn. And from that earth of men, that earth docile to the reaping of grain and the harvesting of the grape, bearing its rivers asleep in their fields, its villages clinging to their hillsides, our ship was separated by astronomical distances. AJl the treasures of the world were summed up in a grain of dust now blown far out of our path by the very destiny itself of dust and of the orbs of night.

-

And Neri still prayed to the stars.

-
-
-

The boy's name was Santiago. Dusk was falling as the boy arrived with his herd at an abandoned church. The roof had fallen in long ago, and an enormous sycamore had grown on the spot where the sacristy had once stood.

-

He decided to spend the night there. He saw to it that all the sheep entered through the ruined gate, and then laid some planks across it to prevent the flock from wandering away during the night. There were no wolves in the region, but once an animal had strayed during the night, and the boy had had to spend the entire next day searching for it.

-

He swept the floor with his jacket and lay down, using the book he had just finished reading as a pillow. He told himself that he would have to start reading thicker books: they lasted longer, and made more comfortable pillows.

-

It was still dark when he awoke, and, looking up, he could see the stars through the half-destroyed roof.

-

I wanted to sleep a little longer, he thought. He had had the same dream that night as a week ago, and once again he had awakened before it ended.

-

He arose and, taking up his crook, began to awaken the sheep that still slept. He had noticed that, as soon as he awoke, most of his animals also began to stir. It was as if some mysterious energy bound his life to that of the sheep, with whom he had spent the past two years, leading them through the countryside in search of food and water. "They are so used to me that they know my schedule," he muttered. Thinking about that for a moment, he realized that it could be the other way around: that it was he who had become accustomed to their schedule.

-

But there were certain of them who took a bit longer to awaken. The boy prodded them, one by one, with his crook, calling each by name. He had always believed that the sheep were able to understand what he said. So there were times when he read them parts of his books that had made an impression on him, or when he would tell them of the loneliness or the happiness of a shepherd in the fields. Sometimes he would comment to them on the things he had seen in the villages they passed.

-

But for the past few days he had spoken to them about only one thing: the girl, the daughter of a merchant who lived in the village they would reach in about four days. He had been to the village only once, the year before. The merchant was the proprietor of a dry goods shop, and he always demanded that the sheep be sheared in his presence, so that he would not be cheated. A friend had told the boy about the shop, and he had taken his sheep there.

-
- -
-

Instream is a system that’s familiar to most. It involves standard pre-roll, mid-roll, or post-roll ad placements within your favorite videos. While vulnerable to ad blockers, instream is still the most reliable system for placing video ads within a relevant video context, and of course the most frequently utilized.

-

- - -
- - - -
-
- -
-
-
- -
-
-
- - -
-
- -
-
-
-
-
-
-
- - - - - - - - - - - diff --git a/sandbox/demo/index.html b/sandbox/demo/index.html deleted file mode 100644 index 483e2b3db6..0000000000 --- a/sandbox/demo/index.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - Prebid JS Demo - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
-

Some of Steve's favorite authors

-

Click an author to read an excerpt from their book.

-
- -
-

Dodge testifies that this was the first time he had tried to communicate with his men since rejoining them at the head of the gulch, and he is reported as saying—for the second time—something about "getting out of this death trap." When asked by the Board of Review if he had explained to the men the danger they were in, he looked at the Board in amazement, as if the Board had never been outside the city limits and wouldn't know sawdust if they saw it in a pile. It was getting late for talk anyway. What could anybody hear? It roared from behind, below, and across, and the crew, inside it, was shut out from all but a small piece of the outside world.

-

They had come to the station of the cross where something you want to see and can't shuts out the sight of everything that otherwise could be seen. Rumsey says again and again what the something was he couldn't see. "The top of the ridge, the top of the ridge.

-

"I had noticed that a fire will wear out when it reaches the top of a ridge. I started putting on steam thinking if I could get to the top of the ridge I would be safe.

-

"I kept thinking the ridge—if I can make it. On the ridge I will be safe . . . I forgot to mention I could not definitely see the ridge from where we were. We kept running up since it had to be there somewhere. Might be a mile and a half or a hundred feet—I had no idea."

-

The survivors say they weren't panicked, and something like that is probably true. Smokejumpers are selected for being tough, but Dodge's men were very young and, as he testified, none of them had been on a blowup before and they were getting exhausted and confused. The world roared at them—there was no safe place inside and there was almost no outside. By now they were short of breath from the exertion of their climbing and their lungs were being seared by the heat. A world was coming where no organ of the body had consciousness but the lungs.

-

Dodge's order was to throw away just their packs and heavy tools, but to his surprise some of them had already thrown away all their equipment. On the other hand, some of them wouldn't abandon their heavy tools, even after Dodge's order. Diettert, one of the most intelligent of the crew, continued carrying both his tools until Rumsey caught up with him, took his shovel, and leaned it against a pine tree. Just a little farther on, Rumsey and Sallee passed the recreation guard, Jim Harrison, who, having been on the fire all afternoon, was now exhausted. He was sitting with his heavy pack on and was making no effort to take it off, and Rumsey and Sallee wondered numbly why he didn't but no one stopped to suggest he get on his feet or gave him a hand to help him up. It was even too late to pray for him. Afterwards, his ranger wrote his mother and, struggling for something to say that would comfort her, told her that her son always attended mass when he could.

-

It was way over one hundred degrees. Except for some scattered timber, the slope was mostly hot rock slides and grass dried to hay.

-

It was becoming a world where thought that could be described as such was done largely by fixations. Thought consisted in repeating over and over something that had been said in a training course or at least by somebody older than you.

-

Critical distances shortened. It had been a quarter of a mile from where Dodge had rejoined his crew to where he had the crew reverse direction. From there they had gone only five hundred yards at the most before he realized the fire was gaining on them so rapidly that the men should discard whatever was heavy.

-

The next station of the cross was only seventy-five yards ahead. There they came to the edge of scattered timber with a grassy slope ahead. There they could see what is really not possible to see: the center of a blowup. It is really not possible to see the center of a blowup because the smoke only occasionally lifts, and when it does all that can be seen are pieces, pieces of death flying around looking for you—burning cones, branches circling on wings, a log in flight without a propeller. Below in the bottom of the gulch was a great roar without visible flames but blown with winds on fire. Now, for the first time, they could have seen to the head of the gulch if they had been looking that way. And now, for the first time, to their left the top of the ridge was visible, looking when the smoke parted to be not more than two hundred yards away.

-
- -
-

We had no means of angular orientation, were already deafened, and were bit by bit growing blind. The moon like a pallid ember began to go out in the banks of fog. Overhead the sky was filling with clouds, and we flew thenceforth between cloud and fog in a world voided of all substance and all light. The ports that signaled us had given up trying to tell us where we were. “No bearings, no bearings,” was all their message, for our voice reached them from everywhere and nowhere. With sinking hearts Neri and I leaned out, he on his side and I on mine, to see if anything, anything at all, was distinguishable in this void. Already our tired eyes were seeing things— errant signs, delusive flashes, phantoms.

-

And suddenly, when already we were in despair, low on the horizon a brilliant point was unveiled on our port bow. A wave of joy went through me. Neri leaned forward, and I could hear him singing. It could not but be the beacon of an airport, for after dark the whole Sahara goes black and forms a great dead expanse. That light twinkled for a space— and then went out! We had been steering for a star which was visible for a few minutes only, just before setting on the horizon between the layer of fog and the clouds.

-

Then other stars took up the game, and with a sort of dogged hope we set our course for each of them in turn. Each time that a light lingered a while, we performed the same crucial experiment. Neri would send his message to the airport at Cisneros: “Beacon in view. Put out your light and flash three times.” And Cisneros would put out its beacon and flash three times while the hard light at which we gazed would not, incorruptible star, so much as wink. And despite our dwindling fuel we continued to nibble at the golden bait which each time seemed more surely the true light of a beacon, was each time a promise of a landing and of life— and we had each time to change our star.

-

And with that we knew ourselves to be lost in interplanetary space among a thousand inaccessible planets, we who sought^only the one veritable planet, our own, that planet on which alone we should find our familiar countryside, the houses of our friends, our treasures. On which alone we should find . . . Let me draw the picture that took shape before my eyes. It will seem to you childish; but even in the midst of danger a man retains his human concerns. I was thirsty and I was hungry. If we did find Cisneros we should re-fuel and carry on to Casablanca, and there we should come down in the cool of daybreak, free to idle the hours away. Neri and I would go into town. We would go to a little pub already open despite the early hour. Safe and sound, Neri and I would sit down at table and laugh at the night of danger as we ate our warm rolls and drank our bowls of coffee and hot milk. We would receive this matutinal gift at the hands of life. Even as an old peasant woman recognizes her God in a painted image, in a childish medal, in a chaplet, so life would speak to us in its hum- blest language in order that we understand. The joy of living, I say, was summed up for me in the remembered sensation of that first burning and aromatic swallow, that mixture of milk and coffee and bread by which men hold communion with tranquil pastures, exotic plantations, and golden harvests, communion with the earth. Amidst all these stars there was but one that could make itself significant for us by composing this aromatic bowl that was its daily gift at dawn. And from that earth of men, that earth docile to the reaping of grain and the harvesting of the grape, bearing its rivers asleep in their fields, its villages clinging to their hillsides, our ship was separated by astronomical distances. AJl the treasures of the world were summed up in a grain of dust now blown far out of our path by the very destiny itself of dust and of the orbs of night.

-

And Neri still prayed to the stars.

-
-
-

Fifty miles east of Uliastai, the cruel joke of a road ended in what was an attempt at a hot springs resort, a series of whacked together wooden buildings originally built for Communist party bigwigs. The place looked embarrassed, like a man in a tux at a beer party. All the other inhabitations in the countryside, without exception, were round felt tents, basically unchanged since the time Ghengis declared himself 'ruler of all those who live in felt tents.' They looked like round puffball mushrooms and were called gers. Don't say yurt. Russians say yurt.

-

At the end of the road, wranglers hired for the trip, watched as we set up our American tents. The men thought our gers were flimsy but they liked the portability. It took, they said, several hours to take down a Mongolian ger. The wranglers seemed shy, and they smiled constantly, nervously.

-

In the saddle, though, these same men laughed and sang unselfconsciously, utterly at home on horseback. In Montant, we'd call them can-do cowboys.

-

Our head wrangle, Lharga, a lean, unflappable man in his fifties, took it upon himself to coach me in matters Mongolian. The wraparound jackets all the men wore were called dels. The sleeves could be rolled down to warm the hands in cold weather, and the sash that held the garment together was a handy place to stash a knife. The oversize boots with turned up toes were called gutuls. For the past seventy years children had been taught in school that gutuls were a symbol of Mongolian subservience to religion. You can drop to your knees so much easier in boots with turned up toes. Actually, Lharga explained, the boots are designed to slip easily into the stirrup, and to show respect for the earth. Turned up toes don't tear into the ground.

-
- - -
-
- -
-
-
- - -
-
-
- - -
-
- -
-
-
-
-
- -
-
- - - - - \ No newline at end of file diff --git a/sandbox/demo/instream-demo.html b/sandbox/demo/instream-demo.html deleted file mode 100644 index d5a81dffe2..0000000000 --- a/sandbox/demo/instream-demo.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - Prebid JS Demo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
-

Which is why this concert is more than entertainment, why the star syndrome doesn't exactly apply here, why the Grateful Dead isn't really a rock band and is only tangentially part of the American music industry. Garcia is indeed charismatic, but not the least remarkable of his contributions to the group is his general refusal to run it. "You can call me boss," he once said, chuckling, "just don't ask me to make any decisions." That is why the fans, the colorful, exuberant Dead Heads gathered outside, are members of a cult that at its best serves Dionysus rather than individual performers, and why the police, veterans of these parking lot festivals, understand the benign nature of their guests and are smiling at them.

-

A few days earlier the gig had been at a music theater out in the country. The endless sleepy commute, a forty-five-minute spin on an unfamiliar road from a generic RamadaMarriottSheraton, through endless geometrically identical cornfields, to a resort nowhere in particular, induced a feeling of absolute random disassociation. Conversation was desperately required, and centered on Lesh's newly purchased book about the anthropic principle, which posited the universe as a mind.

-

Obeying an unspoken protocol, Scrib had left the front seats to the band and retreated to the back of the van--limousines are thought too conspicuous--to consider the band's personalities in archetypal terms. Garcia is a powerful bohemian visionary, a shaman of a sort, and his personal style has largely defined the band's social and musical structure. Yet his role is nothing like that suggested by the automatic attention paid to a virtuoso rock guitarist or the guru figure the media have fabricated in his name. The band's candidate for Handsome Rock Star is Weir, the eternal Younger Brother. But on a day-to-day basis, the psychic pivot to the Dead is Phil Lesh, the most aggressive purist, the anti-philistine Artist. It is he who most often and most loudly demands that they dance as closely as possible to the edge of the nearest available precipice. Intellectual, kinetic, intense, he was once nicknamed Reddy Kilowatt in recognition of his high mental and physical velocity. Twenty years later his mind is still exceedingly agile, although on this day he was content to let Garcia dominate the rap.

-

"Why would the universe go through the trouble of evolving consciousness?" inquired Garcia. "If it wanted life that would succeed, just to create the most effective living thing, it could have stopped at bacteria. Or it could have stopped at vertebrates or sharks. But consciousness goes a quantum step further than just life. It might be that consciousness is the whole reason there is a universe. There might not be a universe apart from consciousness." Garcia lit another Pall Mall. "And who knows what it's like elsewhere in the universe? Local realities change enough, locally, that those Hindu guys can walk through huge, blazing fires and not get burned. It's got to be that consciousness modulates reality. Besides, the truth can't only be here, or you could stare at your toes and figure it all out."

- -
-
-
- -
-
-
- - - - - - \ No newline at end of file diff --git a/sandbox/prebid-api-guide.md b/sandbox/prebid-api-guide.md deleted file mode 100644 index 4743d3f5aa..0000000000 --- a/sandbox/prebid-api-guide.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: page_v2 -sidebarType: 1 -title: Prebid API ---- -# API Reference - -{% include /api/pb-api-test.html %} \ No newline at end of file diff --git a/sandbox/prebid-api-search.md b/sandbox/prebid-api-search.md deleted file mode 100644 index 76e0225474..0000000000 --- a/sandbox/prebid-api-search.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: page_v2 -sidebarType: 1 -title: Prebid API ---- -# API Search Results - -{% include /api/pb-api-search-results.html %} \ No newline at end of file diff --git a/sandbox/prebid-api-template.md b/sandbox/prebid-api-template.md deleted file mode 100644 index dd91c8363a..0000000000 --- a/sandbox/prebid-api-template.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Prebid API Template -description: Markdown file to include the Prebid API HTML Template -layout: page_v2 -sidebarType: 1 ---- - -{% include /api/pb-api-template.html %} \ No newline at end of file From 926a069d7b7315bef4b540cef94a3af5cc4ae0cf Mon Sep 17 00:00:00 2001 From: Mirko Feddern <3244291+mirkorean@users.noreply.github.com> Date: Mon, 15 Jun 2020 17:24:15 +0200 Subject: [PATCH 098/101] Add TCF2 Support for Yieldlab (#2060) --- dev-docs/bidders/yieldlab.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/yieldlab.md b/dev-docs/bidders/yieldlab.md index 28e56868f5..a3d277121b 100644 --- a/dev-docs/bidders/yieldlab.md +++ b/dev-docs/bidders/yieldlab.md @@ -6,6 +6,7 @@ hide: true biddercode: yieldlab media_types: video gdpr_supported: true +tcf2_supported: true userIds: britepoolId, criteo, digitrust, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId --- From a24d4bf3461c9de90cb42f3ab569acf86c230ce6 Mon Sep 17 00:00:00 2001 From: SKOCHERI <37454420+SKOCHERI@users.noreply.github.com> Date: Tue, 16 Jun 2020 08:54:08 -0700 Subject: [PATCH 099/101] SharedId UserId submodule documentation (#2031) * SharedId submodule documentation * SharedId submodule documentation * Adding sharedID to later section * Adding sharedID to later section * Updating Bidder Adapter Implementation section & Prebid Server Adapters section * alphabetical ordering submodules Co-authored-by: skocheri --- dev-docs/modules/userId.md | 100 ++++++++++++++++++++++++++++--------- 1 file changed, 76 insertions(+), 24 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index c01e5cbb67..bb46d234de 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -494,6 +494,29 @@ pbjs.setConfig({ }) ``` +### netID + +The [European netID Foundation (EnID)](https://developerzone.netid.de/index.html) aims to establish with the netID an independent European alternative in the digital market for Demand and Supply side. With the netID Single-Sign-On, the EnID established an open standard for consumer logins for services of Buyers and Brands, that also includes user-centric consent management capabilities that results in a standardized, EU-GDPR compliant, IAB TCF aware, cross-device enabled Advertising Identifier, which can be leveraged by publishers and advertisers (and vendors supporting them) to efficiently deliver targeted advertising through programmatic systems to already more than 38 million Europeans on mobile and desktop devices. + +The EnID is a non-profit organization which is open to any contributing party on both, the demand and supply side to make identity work for consumers as well as the advertising ecosystem. + +#### netID Examples + +1) Publisher stores netID via his own logic + +{% highlight javascript %} +pbjs.setConfig({ + userSync: { + userIds: [{ + name: "netId", + value: { + "netId":"fH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg" + } + }] + } +}); +{% endhighlight %} + ### Parrable ID The Parrable ID is a Full Device Identifier that can be used to identify a device across different browsers and webviews on a single device including browsers that have third party cookie restrictions. @@ -602,6 +625,50 @@ pbjs.setConfig({ }); {% endhighlight %} +### Shared ID User ID Submodule + +Shared ID User ID Module generates a UUID that can be utilized to improve user matching.This module enables timely synchronization which handles sharedId.org optout. This module does not require any registration. + +#### Building Prebid with Shared Id Support +Your Prebid build must include the modules for both **userId** and **sharedId** submodule. +Add it to your Prebid.js package with: + +ex: $ gulp build --modules=userId,sharedIdSystem + +#### Prebid Params + +Individual params may be set for the Shared ID User ID Submodule. +``` +pbjs.setConfig({ + usersync: { + userIds: [{ + name: 'sharedId', + params: { + syncTime: 60 // in seconds, default is 24 hours + }, + storage: { + name: 'sharedid', + type: 'cookie', + expires: 28 + }, + }] + } +}); +``` + +#### SharedId Configuration + +{: .table .table-bordered .table-striped } +| Params under usersync.userIds[]| Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | ID value for the Shared ID module - `"sharedId"` | `"sharedId"` | +| params | Optional | Object | Details for sharedId syncing. | | +| params.syncTime | Optional | Object | Configuration to define the frequency(in seconds) of id synchronization. By default id is synchronized every 24 hours | 60 | +| storage | Required | Object | The publisher must specify the local storage in which to store the results of the call to get the user ID. This can be either cookie or HTML5 storage. | | +| storage.type | Required | String | This is where the results of the user ID will be stored. The recommended method is `localStorage` by specifying `html5`. | `"html5"` | +| storage.name | Required | String | The name of the cookie or html5 local storage where the user ID will be stored. | `"sharedid"` | +| storage.expires | Optional | Integer | How long (in days) the user ID information will be stored. | `28` | + ### Unified ID The Unified ID solution is provided by adsrvr.org and the Trade Desk. @@ -692,30 +759,6 @@ pbjs.setConfig({ }); {% endhighlight %} -### netID - -The [European netID Foundation (EnID)](https://developerzone.netid.de/index.html) aims to establish with the netID an independent European alternative in the digital market for Demand and Supply side. With the netID Single-Sign-On, the EnID established an open standard for consumer logins for services of Buyers and Brands, that also includes user-centric consent management capabilities that results in a standardized, EU-GDPR compliant, IAB TCF aware, cross-device enabled Advertising Identifier, which can be leveraged by publishers and advertisers (and vendors supporting them) to efficiently deliver targeted advertising through programmatic systems to already more than 38 million Europeans on mobile and desktop devices. - -The EnID is a non-profit organization which is open to any contributing party on both, the demand and supply side to make identity work for consumers as well as the advertising ecosystem. - -#### netID Examples - -1) Publisher stores netID via his own logic - -{% highlight javascript %} -pbjs.setConfig({ - userSync: { - userIds: [{ - name: "netId", - value: { - "netId":"fH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg" - } - }] - } -}); -{% endhighlight %} - - ## Adapters Supporting the User ID Sub-Modules {% assign bidder_pages = site.pages | where: "layout", "bidder" %} @@ -748,6 +791,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | | Unified ID | Trade Desk | bidRequest.userId.tdid | `"1111"` | | netID | netID | bidRequest.userId.netId | `"fH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg"` | +| Shared ID | SharedId | bidRequest.userId.sharedid | `{"id":"01EAJWWNEPN3CYMM5N8M5VXY22","third":"01EAJWWNEPN3CYMM5N8M5VXY22"}` | For example, the adapter code might do something like: @@ -815,6 +859,14 @@ Bidders that want to support the User ID module in Prebid Server, need to update "uids": [{ "id": "11111111" }] + },{ + "source": "sharedid.org", // Shared ID + "uids": [{ + "id": "01EAJWWNEPN3CYMM5N8M5VXY22", + "ext": { + "third": "01EAJWWNEPN3CYMM5N8M5VXY22" + } + }] }], "digitrust": { // DigiTrust is not in the eids section "id": "11111111111", From b4360fbb2b4d216e3e621fd08f72b5931f7e827e Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 16 Jun 2020 17:56:52 -0400 Subject: [PATCH 100/101] adtelligent community membership (#2066) --- _data/partners.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_data/partners.yml b/_data/partners.yml index 12f52dd618..5049b37343 100644 --- a/_data/partners.yml +++ b/_data/partners.yml @@ -163,6 +163,10 @@ imgURL: /assets/images/partners/community/Adomik-logo.png type: community +- company: Adtelligent + link: https://adtelligent.com/ + type: community + - company: Audigent link: https://audigent.com/ imgURL: /assets/images/partners/community/audigent_logo.png From d1f1625633519d325b814a7515c7e1d7889abf50 Mon Sep 17 00:00:00 2001 From: trchandraprakash <47793448+trchandraprakash@users.noreply.github.com> Date: Sat, 20 Jun 2020 15:09:33 -0700 Subject: [PATCH 101/101] Update contact info for Lunamedia (#2044) * Updated Bidder Code * Updated doc * Luna media docs * Updating contact person Updating contact person * Updated email address to group email Changes as suggested. Co-authored-by: Chandra Prakash --- dev-docs/bidders/lunamedia.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/lunamedia.md b/dev-docs/bidders/lunamedia.md index b4ba9af257..501f5d83cd 100644 --- a/dev-docs/bidders/lunamedia.md +++ b/dev-docs/bidders/lunamedia.md @@ -7,7 +7,7 @@ biddercode: lunamedia --- ### Note: -For more information about Luna Media, please contact lokesh@advangelists.com +For more information about Luna Media, please contact info@lunamedia.io ### Bid Params