prebid.js 6.6.0 → 6.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +8 -1
- package/allowedModules.js +4 -7
- package/integrationExamples/gpt/amp/creative.html +11 -33
- package/integrationExamples/gpt/{haloRtdProvider_example.html → hadronRtdProvider_example.html} +9 -9
- package/integrationExamples/gpt/idImportLibrary_example.html +2 -2
- package/integrationExamples/gpt/userId_example.html +2 -2
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +154 -115
- package/integrationExamples/gpt/x-domain/creative.html +63 -29
- package/modules/.submodules.json +3 -0
- package/modules/adagioBidAdapter.js +1 -9
- package/modules/adagioBidAdapter.md +1 -1
- package/modules/adbookpspBidAdapter.js +29 -12
- package/modules/adhashBidAdapter.js +4 -4
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +1 -1
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adnuntiusRtdProvider.js +96 -0
- package/modules/adnuntiusRtdProvider.md +41 -0
- package/modules/adomikAnalyticsAdapter.js +2 -2
- package/modules/adotBidAdapter.js +1 -1
- package/modules/adpod.js +14 -17
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +1 -1
- package/modules/advangelistsBidAdapter.js +2 -2
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/afpBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +16 -4
- package/modules/asealBidAdapter.js +58 -0
- package/modules/asealBidAdapter.md +52 -0
- package/modules/beachfrontBidAdapter.js +2 -2
- package/modules/betweenBidAdapter.js +1 -1
- package/modules/bidViewability.js +1 -1
- package/modules/bluebillywigBidAdapter.js +1 -1
- package/modules/brandmetricsRtdProvider.js +168 -0
- package/modules/brandmetricsRtdProvider.md +40 -0
- package/modules/bridgewellBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +2 -2
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/colossussspBidAdapter.js +12 -8
- package/modules/colossussspBidAdapter.md +15 -1
- package/modules/compassBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +1 -1
- package/modules/consentManagement.js +2 -3
- package/modules/consumableBidAdapter.md +1 -1
- package/modules/conversantBidAdapter.js +7 -0
- package/modules/craftBidAdapter.js +2 -2
- package/modules/criteoBidAdapter.js +10 -1
- package/modules/currency.js +27 -5
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/dailyhuntBidAdapter.js +1 -1
- package/modules/dchain.js +1 -1
- package/modules/displayioBidAdapter.js +157 -0
- package/modules/displayioBidAdapter.md +148 -0
- package/modules/dspxBidAdapter.js +69 -29
- package/modules/dspxBidAdapter.md +2 -1
- package/modules/e_volutionBidAdapter.js +158 -0
- package/modules/emx_digitalBidAdapter.js +2 -2
- package/modules/fluctBidAdapter.js +0 -1
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/gdprEnforcement.js +2 -2
- package/modules/glomexBidAdapter.js +1 -1
- package/modules/gnetBidAdapter.js +3 -3
- package/modules/gnetBidAdapter.md +4 -4
- package/modules/goldbachBidAdapter.js +2 -2
- package/modules/gptPreAuction.js +1 -1
- package/modules/gridBidAdapter.js +15 -1
- package/modules/gumgumBidAdapter.js +57 -43
- package/modules/hadronIdSystem.js +96 -0
- package/modules/hadronIdSystem.md +35 -0
- package/modules/hadronRtdProvider.js +254 -0
- package/modules/hadronRtdProvider.md +126 -0
- package/modules/haloIdSystem.md +4 -35
- package/modules/haloRtdProvider.md +3 -126
- package/modules/hybridBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +6 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/interactiveOffersBidAdapter.js +9 -6
- package/modules/intersectionRtdProvider.js +1 -1
- package/modules/ixBidAdapter.js +2 -2
- package/modules/jwplayerRtdProvider.js +72 -7
- package/modules/jwplayerRtdProvider.md +27 -11
- package/modules/kargoBidAdapter.js +2 -2
- package/modules/livewrappedBidAdapter.js +1 -1
- package/modules/lunamediahbBidAdapter.js +32 -4
- package/modules/malltvBidAdapter.js +7 -3
- package/modules/malltvBidAdapter.md +64 -51
- package/modules/mass.js +3 -5
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +2 -2
- package/modules/medianetRtdProvider.js +1 -1
- package/modules/mediasquareBidAdapter.js +1 -0
- package/modules/nextMillenniumBidAdapter.js +1 -0
- package/modules/nextrollBidAdapter.js +1 -1
- package/modules/oguryBidAdapter.js +7 -14
- package/modules/onetagBidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +2 -2
- package/modules/openxBidAdapter.js +1 -1
- package/modules/parrableIdSystem.js +1 -1
- package/modules/permutiveRtdProvider.js +1 -1
- package/modules/pilotxBidAdapter.js +147 -0
- package/modules/pilotxBidAdapter.md +50 -0
- package/modules/pixfutureBidAdapter.js +2 -2
- package/modules/prebidServerBidAdapter/index.js +63 -41
- package/modules/priceFloors.js +15 -14
- package/modules/pubmaticBidAdapter.js +1 -1
- package/modules/quantcastBidAdapter.js +1 -1
- package/modules/reconciliationRtdProvider.js +1 -1
- package/modules/richaudienceBidAdapter.js +7 -2
- package/modules/riseBidAdapter.js +17 -6
- package/modules/roxotAnalyticsAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +9 -11
- package/modules/rubiconAnalyticsAdapter.js +8 -2
- package/modules/rubiconBidAdapter.js +1 -1
- package/modules/saambaaBidAdapter.js +420 -420
- package/modules/seedingAllianceBidAdapter.js +3 -3
- package/modules/sharethroughBidAdapter.js +12 -17
- package/modules/sigmoidAnalyticsAdapter.js +1 -1
- package/modules/sirdataRtdProvider.js +1 -1
- package/modules/sizeMappingV2.js +2 -9
- package/modules/smarticoBidAdapter.js +1 -1
- package/modules/sortableAnalyticsAdapter.js +5 -4
- package/modules/sovrnAnalyticsAdapter.js +2 -2
- package/modules/sovrnBidAdapter.js +93 -18
- package/modules/sovrnBidAdapter.md +80 -2
- package/modules/sspBCBidAdapter.js +54 -21
- package/modules/synacormediaBidAdapter.js +32 -11
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/telariaBidAdapter.js +22 -29
- package/modules/trustpidSystem.js +197 -0
- package/modules/trustpidSystem.md +45 -0
- package/modules/undertoneBidAdapter.js +17 -1
- package/modules/userId/eids.js +16 -1
- package/modules/userId/eids.md +10 -2
- package/modules/userId/index.js +2 -2
- package/modules/userId/userId.md +17 -2
- package/modules/ventesBidAdapter.js +1 -1
- package/modules/verizonMediaIdSystem.js +1 -1
- package/modules/vibrantmediaBidAdapter.js +220 -0
- package/modules/vibrantmediaBidAdapter.md +92 -0
- package/modules/viewability.js +177 -0
- package/modules/viewability.md +87 -0
- package/modules/viewdeosDXBidAdapter.js +1 -1
- package/modules/voxBidAdapter.js +1 -1
- package/modules/waardexBidAdapter.js +1 -1
- package/modules/weboramaRtdProvider.js +264 -34
- package/modules/weboramaRtdProvider.md +110 -40
- package/modules/widespaceBidAdapter.js +2 -2
- package/modules/winrBidAdapter.js +7 -7
- package/modules/yahoosspBidAdapter.js +3 -1
- package/modules/yieldlabBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +2 -2
- package/modules/yieldoneBidAdapter.js +6 -0
- package/modules/yuktamediaAnalyticsAdapter.js +1 -1
- package/package.json +3 -1
- package/plugins/poly/arrayFrom.js +3 -0
- package/plugins/poly/find.js +3 -0
- package/plugins/poly/findIndex.js +3 -0
- package/plugins/poly/includes.js +3 -0
- package/plugins/poly/package.json +8 -0
- package/src/Renderer.js +1 -1
- package/src/adRendering.js +38 -0
- package/src/adapterManager.js +33 -28
- package/src/adapters/bidderFactory.js +13 -11
- package/src/adloader.js +3 -2
- package/src/auction.js +140 -117
- package/src/auctionIndex.js +85 -0
- package/src/auctionManager.js +4 -1
- package/src/bidderSettings.js +69 -0
- package/src/bidfactory.js +18 -6
- package/src/config.js +3 -4
- package/src/cpmBucketManager.js +1 -1
- package/src/native.js +30 -22
- package/src/prebid.js +4 -20
- package/src/secureCreatives.js +133 -49
- package/src/sizeMapping.js +1 -1
- package/src/storageManager.js +1 -1
- package/src/targeting.js +13 -4
- package/src/userSync.js +1 -1
- package/src/utils.js +16 -19
- package/src/video.js +11 -12
- package/src/videoCache.js +10 -9
- package/test/fixtures/fixtures.js +2 -1
- package/test/helpers/indexStub.js +28 -0
- package/test/helpers/syncPromise.js +71 -0
- package/test/spec/auctionmanager_spec.js +269 -90
- package/test/spec/config_spec.js +24 -1
- package/test/spec/e2e/longform/basic_w_bidderSettings.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_custom_adserver_translation.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_priceGran.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_requireExactDuration.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_brandCategoryExclusion.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_requireExactDuration.spec.js +1 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -10
- package/test/spec/modules/adbookpspBidAdapter_spec.js +17 -3
- package/test/spec/modules/adhashBidAdapter_spec.js +2 -2
- package/test/spec/modules/adnuntiusRtdProvider_spec.js +145 -0
- package/test/spec/modules/adpod_spec.js +91 -156
- package/test/spec/modules/afpBidAdapter_spec.js +1 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +27 -0
- package/test/spec/modules/asealBidAdapter_spec.js +144 -0
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +191 -0
- package/test/spec/modules/colossussspBidAdapter_spec.js +5 -2
- package/test/spec/modules/conversantBidAdapter_spec.js +54 -2
- package/test/spec/modules/criteoBidAdapter_spec.js +21 -0
- package/test/spec/modules/currency_spec.js +36 -15
- package/test/spec/modules/deepintentDpesIdsystem_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +239 -0
- package/test/spec/modules/dspxBidAdapter_spec.js +20 -15
- package/test/spec/modules/e_volutionBidAdapter_spec.js +242 -0
- package/test/spec/modules/eids_spec.js +2 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/gnetBidAdapter_spec.js +6 -6
- package/test/spec/modules/gridBidAdapter_spec.js +18 -0
- package/test/spec/modules/gumgumBidAdapter_spec.js +49 -3
- package/test/spec/modules/hadronIdSystem_spec.js +57 -0
- package/test/spec/modules/hadronRtdProvider_spec.js +762 -0
- package/test/spec/modules/idxIdSystem_spec.js +1 -1
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +19 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +195 -2
- package/test/spec/modules/kargoBidAdapter_spec.js +1 -1
- package/test/spec/modules/lunamediahbBidAdapter_spec.js +27 -1
- package/test/spec/modules/mass_spec.js +2 -14
- package/test/spec/modules/mediakeysBidAdapter_spec.js +1 -1
- package/test/spec/modules/multibid_spec.js +1 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +63 -5
- package/test/spec/modules/onetagBidAdapter_spec.js +1 -1
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/parrableIdSystem_spec.js +1 -1
- package/test/spec/modules/pilotxBidAdapter_spec.js +244 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -6
- package/test/spec/modules/priceFloors_spec.js +37 -24
- package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
- package/test/spec/modules/realTimeDataModule_spec.js +51 -2
- package/test/spec/modules/riseBidAdapter_spec.js +30 -4
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +61 -1
- package/test/spec/modules/rubiconBidAdapter_spec.js +1 -1
- package/test/spec/modules/sharethroughBidAdapter_spec.js +91 -6
- package/test/spec/modules/sortableAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/sovrnBidAdapter_spec.js +413 -333
- package/test/spec/modules/sspBCBidAdapter_spec.js +7 -7
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +1 -1
- package/test/spec/modules/synacormediaBidAdapter_spec.js +70 -0
- package/test/spec/modules/telariaBidAdapter_spec.js +1 -3
- package/test/spec/modules/trustpidSystem_spec.js +232 -0
- package/test/spec/modules/undertoneBidAdapter_spec.js +55 -2
- package/test/spec/modules/userId_spec.js +40 -40
- package/test/spec/modules/vibrantmediaBidAdapter_spec.js +1237 -0
- package/test/spec/modules/viewability_spec.js +280 -0
- package/test/spec/modules/weboramaRtdProvider_spec.js +536 -20
- package/test/spec/modules/widespaceBidAdapter_spec.js +1 -1
- package/test/spec/modules/yahoosspBidAdapter_spec.js +10 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +33 -0
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +1 -1
- package/test/spec/native_spec.js +62 -40
- package/test/spec/sizeMapping_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +24 -2
- package/test/spec/unit/core/auctionIndex_spec.js +129 -0
- package/test/spec/unit/core/bidderFactory_spec.js +65 -12
- package/test/spec/unit/core/bidderSettings_spec.js +123 -0
- package/test/spec/unit/core/targeting_spec.js +93 -0
- package/test/spec/unit/pbjs_api_spec.js +81 -43
- package/test/spec/unit/secureCreatives_spec.js +143 -24
- package/test/spec/videoCache_spec.js +18 -19
- package/test/spec/video_spec.js +51 -61
- package/webpack.conf.js +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
## Audigent Hadron Real-time Data Submodule
|
|
2
|
+
|
|
3
|
+
Audigent is a next-generation, 1st party data management platform and the
|
|
4
|
+
world’s first "data agency", powering the programmatic landscape and DTC
|
|
5
|
+
eCommerce with actionable 1st party audience and contextual data from the
|
|
6
|
+
world’s most influential retailers, lifestyle publishers, content creators,
|
|
7
|
+
athletes and artists.
|
|
8
|
+
|
|
9
|
+
The Hadron real-time data module in Prebid has been built so that publishers
|
|
10
|
+
can maximize the power of their first-party audiences and contextual data.
|
|
11
|
+
This module provides both an integrated cookieless Hadron identity with real-time
|
|
12
|
+
contextual and audience segmentation solution that seamlessly and easily
|
|
13
|
+
integrates into your existing Prebid deployment.
|
|
14
|
+
|
|
15
|
+
Users, devices, content, cohorts and other features are identified and utilized
|
|
16
|
+
to augment every bid request with targeted, 1st party data-derived segments
|
|
17
|
+
before being submitted to supply-side platforms. Enriching the bid request with
|
|
18
|
+
robust 1st party audience and contextual data, Audigent's Hadron RTD module
|
|
19
|
+
optimizes targeting, increases the number of bids, increases bid value,
|
|
20
|
+
and drives additional incremental revenue for publishers.
|
|
21
|
+
|
|
22
|
+
### Publisher Usage
|
|
23
|
+
|
|
24
|
+
Compile the Hadron RTD module into your Prebid build:
|
|
25
|
+
|
|
26
|
+
`gulp build --modules=userId,unifiedIdSystem,rtdModule,hadronRtdProvider,appnexusBidAdapter`
|
|
27
|
+
|
|
28
|
+
Add the Hadron RTD provider to your Prebid config. In this example we will configure
|
|
29
|
+
publisher 1234 to retrieve segments from Audigent. See the
|
|
30
|
+
"Parameter Descriptions" below for more detailed information of the
|
|
31
|
+
configuration parameters. Please work with your Audigent Prebid support team
|
|
32
|
+
(prebid@audigent.com) on which version of Prebid.js supports different bidder
|
|
33
|
+
and segment configurations.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
pbjs.setConfig(
|
|
37
|
+
...
|
|
38
|
+
realTimeData: {
|
|
39
|
+
auctionDelay: 5000,
|
|
40
|
+
dataProviders: [
|
|
41
|
+
{
|
|
42
|
+
name: "hadron",
|
|
43
|
+
waitForIt: true,
|
|
44
|
+
params: {
|
|
45
|
+
segmentCache: false,
|
|
46
|
+
requestParams: {
|
|
47
|
+
publisherId: 1234
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
...
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Parameter Descriptions for the Hadron Configuration Section
|
|
58
|
+
|
|
59
|
+
| Name |Type | Description | Notes |
|
|
60
|
+
| :------------ | :------------ | :------------ |:------------ |
|
|
61
|
+
| name | String | Real time data module name | Always 'hadron' |
|
|
62
|
+
| waitForIt | Boolean | Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false |
|
|
63
|
+
| params | Object | | |
|
|
64
|
+
| params.handleRtd | Function | A passable RTD handler that allows custom adunit and ortb2 logic to be configured. The function signature is (bidConfig, rtd, rtdConfig, pbConfig) => {}. | Optional |
|
|
65
|
+
| params.segmentCache | Boolean | This parameter tells the Hadron RTD module to attempt reading segments from a local storage cache instead of always requesting them from the Audigent server. | Optional. Defaults to false. |
|
|
66
|
+
| params.requestParams | Object | Publisher partner specific configuration options, such as optional publisher id and other segment query related metadata to be submitted to Audigent's backend with each request. Contact prebid@audigent.com for more information. | Optional |
|
|
67
|
+
| params.hadronIdUrl | String | Parameter to specify alternate hadronid endpoint url. | Optional |
|
|
68
|
+
|
|
69
|
+
### Publisher Customized RTD Handling
|
|
70
|
+
As indicated above, it is possible to provide your own bid augmentation
|
|
71
|
+
functions rather than simply merging supplied data. This is useful if you
|
|
72
|
+
want to perform custom bid augmentation and logic with Hadron real-time data
|
|
73
|
+
prior to the bid request being sent. Simply add your custom logic to the
|
|
74
|
+
optional handleRtd parameter and provide your custom RTD handling logic there.
|
|
75
|
+
|
|
76
|
+
Please see the following example, which provides a function to modify bids for
|
|
77
|
+
a bid adapter called adBuzz and perform custom logic on bidder parameters.
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
pbjs.setConfig(
|
|
81
|
+
...
|
|
82
|
+
realTimeData: {
|
|
83
|
+
auctionDelay: auctionDelay,
|
|
84
|
+
dataProviders: [
|
|
85
|
+
{
|
|
86
|
+
name: "hadron",
|
|
87
|
+
waitForIt: true,
|
|
88
|
+
params: {
|
|
89
|
+
handleRtd: function(bidConfig, rtd, rtdConfig, pbConfig) {
|
|
90
|
+
var adUnits = bidConfig.adUnits;
|
|
91
|
+
for (var i = 0; i < adUnits.length; i++) {
|
|
92
|
+
var adUnit = adUnits[i];
|
|
93
|
+
for (var j = 0; j < adUnit.bids.length; j++) {
|
|
94
|
+
var bid = adUnit.bids[j];
|
|
95
|
+
if (bid.bidder == 'adBuzz' && rtd['adBuzz'][0].value != 'excludeSeg') {
|
|
96
|
+
bid.params.adBuzzCustomSegments.push(rtd['adBuzz'][0].id);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
segmentCache: false,
|
|
102
|
+
requestParams: {
|
|
103
|
+
publisherId: 1234
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
...
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The handleRtd function can also be used to configure custom ortb2 data
|
|
114
|
+
processing. Please see the examples available in the hadronRtdProvider_spec.js
|
|
115
|
+
tests and work with your Audigent Prebid integration team (prebid@audigent.com)
|
|
116
|
+
on how to best configure your own Hadron RTD & Open RTB data handlers.
|
|
117
|
+
|
|
118
|
+
### Testing
|
|
119
|
+
|
|
120
|
+
To view an example of available segments returned by Audigent's backends:
|
|
121
|
+
|
|
122
|
+
`gulp serve --modules=userId,unifiedIdSystem,rtdModule,hadronRtdProvider,appnexusBidAdapter`
|
|
123
|
+
|
|
124
|
+
and then point your browser at:
|
|
125
|
+
|
|
126
|
+
`http://localhost:9999/integrationExamples/gpt/hadronRtdProvider_example.html`
|
package/modules/haloIdSystem.md
CHANGED
|
@@ -1,35 +1,4 @@
|
|
|
1
|
-
## Audigent Halo
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
### Prebid Params
|
|
6
|
-
|
|
7
|
-
Individual params may be set for the Audigent Halo ID Submodule. At least one identifier must be set in the params.
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
pbjs.setConfig({
|
|
11
|
-
usersync: {
|
|
12
|
-
userIds: [{
|
|
13
|
-
name: 'haloId',
|
|
14
|
-
storage: {
|
|
15
|
-
name: 'haloId',
|
|
16
|
-
type: 'html5'
|
|
17
|
-
}
|
|
18
|
-
}]
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
```
|
|
22
|
-
## Parameter Descriptions for the `usersync` Configuration Section
|
|
23
|
-
The below parameters apply only to the HaloID User ID Module integration.
|
|
24
|
-
|
|
25
|
-
| Param under usersync.userIds[] | Scope | Type | Description | Example |
|
|
26
|
-
| --- | --- | --- | --- | --- |
|
|
27
|
-
| name | Required | String | ID value for the HaloID module - `"haloId"` | `"haloId"` |
|
|
28
|
-
| 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. | |
|
|
29
|
-
| 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"` |
|
|
30
|
-
| storage.name | Required | String | The name of the cookie or html5 local storage where the user ID will be stored. | `"haloid"` |
|
|
31
|
-
| storage.expires | Optional | Integer | How long (in days) the user ID information will be stored. | `365` |
|
|
32
|
-
| value | Optional | Object | Used only if the page has a separate mechanism for storing the Halo ID. The value is an object containing the values to be sent to the adapters. In this scenario, no URL is called and nothing is added to local storage | `{"haloId": "eb33b0cb-8d35-4722-b9c0-1a31d4064888"}` |
|
|
33
|
-
| params | Optional | Object | Used to store params for the id system |
|
|
34
|
-
| params.url | Optional | String | Set an alternate GET url for HaloId with this parameter |
|
|
35
|
-
| params.urlArg | Optional | Object | Optional url parameter for params.url |
|
|
1
|
+
## Audigent Halo has been rebranded as Hadron
|
|
2
|
+
## Use the Hadron Id Submodule
|
|
3
|
+
## The Halo modules will be removed from Prebid 7
|
|
4
|
+
## Contact prebid@audigent.com for more info.
|
|
@@ -1,126 +1,3 @@
|
|
|
1
|
-
## Audigent Halo
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
world’s first "data agency", powering the programmatic landscape and DTC
|
|
5
|
-
eCommerce with actionable 1st party audience and contextual data from the
|
|
6
|
-
world’s most influential retailers, lifestyle publishers, content creators,
|
|
7
|
-
athletes and artists.
|
|
8
|
-
|
|
9
|
-
The Halo real-time data module in Prebid has been built so that publishers
|
|
10
|
-
can maximize the power of their first-party audiences and contextual data.
|
|
11
|
-
This module provides both an integrated cookieless Halo identity with real-time
|
|
12
|
-
contextual and audience segmentation solution that seamlessly and easily
|
|
13
|
-
integrates into your existing Prebid deployment.
|
|
14
|
-
|
|
15
|
-
Users, devices, content, cohorts and other features are identified and utilized
|
|
16
|
-
to augment every bid request with targeted, 1st party data-derived segments
|
|
17
|
-
before being submitted to supply-side platforms. Enriching the bid request with
|
|
18
|
-
robust 1st party audience and contextual data, Audigent's Halo RTD module
|
|
19
|
-
optimizes targeting, increases the number of bids, increases bid value,
|
|
20
|
-
and drives additional incremental revenue for publishers.
|
|
21
|
-
|
|
22
|
-
### Publisher Usage
|
|
23
|
-
|
|
24
|
-
Compile the Halo RTD module into your Prebid build:
|
|
25
|
-
|
|
26
|
-
`gulp build --modules=userId,unifiedIdSystem,rtdModule,haloRtdProvider,appnexusBidAdapter`
|
|
27
|
-
|
|
28
|
-
Add the Halo RTD provider to your Prebid config. In this example we will configure
|
|
29
|
-
publisher 1234 to retrieve segments from Audigent. See the
|
|
30
|
-
"Parameter Descriptions" below for more detailed information of the
|
|
31
|
-
configuration parameters. Please work with your Audigent Prebid support team
|
|
32
|
-
(prebid@audigent.com) on which version of Prebid.js supports different bidder
|
|
33
|
-
and segment configurations.
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
pbjs.setConfig(
|
|
37
|
-
...
|
|
38
|
-
realTimeData: {
|
|
39
|
-
auctionDelay: 5000,
|
|
40
|
-
dataProviders: [
|
|
41
|
-
{
|
|
42
|
-
name: "halo",
|
|
43
|
-
waitForIt: true,
|
|
44
|
-
params: {
|
|
45
|
-
segmentCache: false,
|
|
46
|
-
requestParams: {
|
|
47
|
-
publisherId: 1234
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
...
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Parameter Descriptions for the Halo Configuration Section
|
|
58
|
-
|
|
59
|
-
| Name |Type | Description | Notes |
|
|
60
|
-
| :------------ | :------------ | :------------ |:------------ |
|
|
61
|
-
| name | String | Real time data module name | Always 'halo' |
|
|
62
|
-
| waitForIt | Boolean | Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false |
|
|
63
|
-
| params | Object | | |
|
|
64
|
-
| params.handleRtd | Function | A passable RTD handler that allows custom adunit and ortb2 logic to be configured. The function signature is (bidConfig, rtd, rtdConfig, pbConfig) => {}. | Optional |
|
|
65
|
-
| params.segmentCache | Boolean | This parameter tells the Halo RTD module to attempt reading segments from a local storage cache instead of always requesting them from the Audigent server. | Optional. Defaults to false. |
|
|
66
|
-
| params.requestParams | Object | Publisher partner specific configuration options, such as optional publisher id and other segment query related metadata to be submitted to Audigent's backend with each request. Contact prebid@audigent.com for more information. | Optional |
|
|
67
|
-
| params.haloIdUrl | String | Parameter to specify alternate haloid endpoint url. | Optional |
|
|
68
|
-
|
|
69
|
-
### Publisher Customized RTD Handling
|
|
70
|
-
As indicated above, it is possible to provide your own bid augmentation
|
|
71
|
-
functions rather than simply merging supplied data. This is useful if you
|
|
72
|
-
want to perform custom bid augmentation and logic with Halo real-time data
|
|
73
|
-
prior to the bid request being sent. Simply add your custom logic to the
|
|
74
|
-
optional handleRtd parameter and provide your custom RTD handling logic there.
|
|
75
|
-
|
|
76
|
-
Please see the following example, which provides a function to modify bids for
|
|
77
|
-
a bid adapter called adBuzz and perform custom logic on bidder parameters.
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
pbjs.setConfig(
|
|
81
|
-
...
|
|
82
|
-
realTimeData: {
|
|
83
|
-
auctionDelay: auctionDelay,
|
|
84
|
-
dataProviders: [
|
|
85
|
-
{
|
|
86
|
-
name: "halo",
|
|
87
|
-
waitForIt: true,
|
|
88
|
-
params: {
|
|
89
|
-
handleRtd: function(bidConfig, rtd, rtdConfig, pbConfig) {
|
|
90
|
-
var adUnits = bidConfig.adUnits;
|
|
91
|
-
for (var i = 0; i < adUnits.length; i++) {
|
|
92
|
-
var adUnit = adUnits[i];
|
|
93
|
-
for (var j = 0; j < adUnit.bids.length; j++) {
|
|
94
|
-
var bid = adUnit.bids[j];
|
|
95
|
-
if (bid.bidder == 'adBuzz' && rtd['adBuzz'][0].value != 'excludeSeg') {
|
|
96
|
-
bid.params.adBuzzCustomSegments.push(rtd['adBuzz'][0].id);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
segmentCache: false,
|
|
102
|
-
requestParams: {
|
|
103
|
-
publisherId: 1234
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
...
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
The handleRtd function can also be used to configure custom ortb2 data
|
|
114
|
-
processing. Please see the examples available in the haloRtdProvider_spec.js
|
|
115
|
-
tests and work with your Audigent Prebid integration team (prebid@audigent.com)
|
|
116
|
-
on how to best configure your own Halo RTD & Open RTB data handlers.
|
|
117
|
-
|
|
118
|
-
### Testing
|
|
119
|
-
|
|
120
|
-
To view an example of available segments returned by Audigent's backends:
|
|
121
|
-
|
|
122
|
-
`gulp serve --modules=userId,unifiedIdSystem,rtdModule,haloRtdProvider,appnexusBidAdapter`
|
|
123
|
-
|
|
124
|
-
and then point your browser at:
|
|
125
|
-
|
|
126
|
-
`http://localhost:9999/integrationExamples/gpt/haloRtdProvider_example.html`
|
|
1
|
+
## Audigent Halo has been rebranded as Hadron
|
|
2
|
+
## Use the Hadron Rtd Submodule
|
|
3
|
+
## The Halo modules will be removed from Prebid 7
|
|
@@ -3,7 +3,7 @@ import { registerBidder } from '../src/adapters/bidderFactory.js'
|
|
|
3
3
|
import { auctionManager } from '../src/auctionManager.js'
|
|
4
4
|
import { BANNER, VIDEO } from '../src/mediaTypes.js'
|
|
5
5
|
import {Renderer} from '../src/Renderer.js';
|
|
6
|
-
import find from '
|
|
6
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
7
7
|
|
|
8
8
|
const BIDDER_CODE = 'hybrid';
|
|
9
9
|
const DSP_ENDPOINT = 'https://hbe198.hybrid.ai/prebidhb';
|
|
@@ -4,7 +4,7 @@ import { config } from '../src/config.js';
|
|
|
4
4
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
5
5
|
import {Renderer} from '../src/Renderer.js';
|
|
6
6
|
import { createEidsArray } from './userId/eids.js';
|
|
7
|
-
import includes from '
|
|
7
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
8
8
|
|
|
9
9
|
const BIDDER_CODE = 'improvedigital';
|
|
10
10
|
const RENDERER_URL = 'https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js';
|
|
@@ -90,6 +90,7 @@ export const spec = {
|
|
|
90
90
|
// End of adding first party data
|
|
91
91
|
|
|
92
92
|
requestParameters.schain = bidRequests[0].schain;
|
|
93
|
+
requestParameters.coppa = config.getConfig('coppa') === true;
|
|
93
94
|
|
|
94
95
|
if (bidRequests[0].userId) {
|
|
95
96
|
const eids = createEidsArray(bidRequests[0].userId);
|
|
@@ -652,6 +653,10 @@ export function ImproveDigitalAdServerJSClient(endPoint) {
|
|
|
652
653
|
}
|
|
653
654
|
}
|
|
654
655
|
|
|
656
|
+
if (requestParameters.coppa) {
|
|
657
|
+
impressionBidRequestObject.coppa = 1;
|
|
658
|
+
}
|
|
659
|
+
|
|
655
660
|
return impressionBidRequestObject;
|
|
656
661
|
};
|
|
657
662
|
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
logError,
|
|
8
8
|
} from '../src/utils.js';
|
|
9
9
|
import { getStorageManager } from '../src/storageManager.js';
|
|
10
|
-
import find from '
|
|
10
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
11
11
|
|
|
12
12
|
const BIDDER_CODE = 'insticator';
|
|
13
13
|
const ENDPOINT = 'https://ex.ingage.tech/v1/openrtb'; // production endpoint
|
|
@@ -83,7 +83,8 @@ function parseRequestPrebidjsToOpenRTB(prebidRequest) {
|
|
|
83
83
|
let openRTBRequest = JSON.parse(JSON.stringify(DEFAULT['OpenRTBBidRequest']));
|
|
84
84
|
openRTBRequest.id = prebidRequest.auctionId;
|
|
85
85
|
openRTBRequest.ext = {
|
|
86
|
-
|
|
86
|
+
refererInfo: prebidRequest.refererInfo,
|
|
87
|
+
auctionId: prebidRequest.auctionId
|
|
87
88
|
};
|
|
88
89
|
|
|
89
90
|
openRTBRequest.site = JSON.parse(JSON.stringify(DEFAULT['OpenRTBBidRequestSite']));
|
|
@@ -111,15 +112,17 @@ function parseRequestPrebidjsToOpenRTB(prebidRequest) {
|
|
|
111
112
|
openRTBRequest.user = JSON.parse(JSON.stringify(DEFAULT['OpenRTBBidRequestUser']));
|
|
112
113
|
|
|
113
114
|
openRTBRequest.imp = [];
|
|
114
|
-
prebidRequest.bids.forEach(function(bid
|
|
115
|
-
impId++;
|
|
115
|
+
prebidRequest.bids.forEach(function(bid) {
|
|
116
116
|
if (!ret.partnerId) {
|
|
117
117
|
ret.partnerId = bid.params.partnerId;
|
|
118
118
|
}
|
|
119
119
|
let imp = JSON.parse(JSON.stringify(DEFAULT['OpenRTBBidRequestImp']));
|
|
120
|
-
imp.id =
|
|
120
|
+
imp.id = bid.bidId;
|
|
121
121
|
imp.secure = secure;
|
|
122
|
-
imp.tagid = bid.
|
|
122
|
+
imp.tagid = bid.adUnitCode;
|
|
123
|
+
imp.ext = {
|
|
124
|
+
rawdata: bid
|
|
125
|
+
};
|
|
123
126
|
|
|
124
127
|
openRTBRequest.site.publisher.id = openRTBRequest.site.publisher.id || 0;
|
|
125
128
|
openRTBRequest.tmax = openRTBRequest.tmax || bid.params.tmax || 0;
|
|
@@ -152,7 +155,7 @@ function parseResponseOpenRTBToPrebidjs(openRTBResponse) {
|
|
|
152
155
|
if (seatbid.bid && seatbid.bid.forEach) {
|
|
153
156
|
seatbid.bid.forEach(function(bid) {
|
|
154
157
|
let prebid = JSON.parse(JSON.stringify(DEFAULT['PrebidBid']));
|
|
155
|
-
prebid.requestId = bid.
|
|
158
|
+
prebid.requestId = bid.impid;
|
|
156
159
|
prebid.ad = bid.adm;
|
|
157
160
|
prebid.creativeId = bid.crid;
|
|
158
161
|
prebid.cpm = bid.price;
|
|
@@ -2,7 +2,7 @@ import {submodule} from '../src/hook.js';
|
|
|
2
2
|
import {isFn, logError} from '../src/utils.js';
|
|
3
3
|
import {config} from '../src/config.js';
|
|
4
4
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
5
|
-
import includes from '
|
|
5
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
6
6
|
import '../src/adapterManager.js';
|
|
7
7
|
let observerAvailable = true;
|
|
8
8
|
function getIntersectionData(requestBidsObject, onDone, providerConfig, userConsent) {
|
package/modules/ixBidAdapter.js
CHANGED
|
@@ -4,10 +4,10 @@ import { config } from '../src/config.js';
|
|
|
4
4
|
import CONSTANTS from '../src/constants.json';
|
|
5
5
|
import { getStorageManager, validateStorageEnforcement } from '../src/storageManager.js';
|
|
6
6
|
import events from '../src/events.js';
|
|
7
|
-
import find from '
|
|
7
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
8
8
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
9
9
|
import { INSTREAM, OUTSTREAM } from '../src/video.js';
|
|
10
|
-
import includes from '
|
|
10
|
+
import includes from 'prebidjs-polyfill/includes.js';
|
|
11
11
|
import { Renderer } from '../src/Renderer.js';
|
|
12
12
|
|
|
13
13
|
const BIDDER_CODE = 'ix';
|
|
@@ -13,7 +13,7 @@ import { submodule } from '../src/hook.js';
|
|
|
13
13
|
import { config } from '../src/config.js';
|
|
14
14
|
import { ajaxBuilder } from '../src/ajax.js';
|
|
15
15
|
import { logError } from '../src/utils.js';
|
|
16
|
-
import find from '
|
|
16
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
17
17
|
import { getGlobal } from '../src/prebidGlobal.js';
|
|
18
18
|
|
|
19
19
|
const SUBMODULE_NAME = 'jwplayer';
|
|
@@ -155,8 +155,10 @@ export function enrichAdUnits(adUnits) {
|
|
|
155
155
|
if (!vat) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
+
const contentId = getContentId(vat.mediaID);
|
|
159
|
+
const contentData = getContentData(vat.segments);
|
|
158
160
|
const targeting = formatTargetingResponse(vat);
|
|
159
|
-
|
|
161
|
+
enrichBids(adUnit.bids, targeting, contentId, contentData);
|
|
160
162
|
};
|
|
161
163
|
loadVat(jwTargeting, onVatResponse);
|
|
162
164
|
});
|
|
@@ -235,6 +237,9 @@ export function getVatFromPlayer(playerID, mediaID) {
|
|
|
235
237
|
};
|
|
236
238
|
}
|
|
237
239
|
|
|
240
|
+
/*
|
|
241
|
+
deprecated
|
|
242
|
+
*/
|
|
238
243
|
export function formatTargetingResponse(vat) {
|
|
239
244
|
const { segments, mediaID } = vat;
|
|
240
245
|
const targeting = {};
|
|
@@ -243,23 +248,83 @@ export function formatTargetingResponse(vat) {
|
|
|
243
248
|
}
|
|
244
249
|
|
|
245
250
|
if (mediaID) {
|
|
246
|
-
const id = 'jw_' + mediaID;
|
|
247
251
|
targeting.content = {
|
|
248
|
-
id
|
|
252
|
+
id: getContentId(mediaID)
|
|
249
253
|
}
|
|
250
254
|
}
|
|
251
255
|
return targeting;
|
|
252
256
|
}
|
|
253
257
|
|
|
254
|
-
function
|
|
255
|
-
if (!
|
|
258
|
+
export function getContentId(mediaID) {
|
|
259
|
+
if (!mediaID) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
return 'jw_' + mediaID;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export function getContentData(segments) {
|
|
267
|
+
if (!segments || !segments.length) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const formattedSegments = segments.reduce((convertedSegments, rawSegment) => {
|
|
272
|
+
convertedSegments.push({
|
|
273
|
+
id: rawSegment,
|
|
274
|
+
value: rawSegment
|
|
275
|
+
});
|
|
276
|
+
return convertedSegments;
|
|
277
|
+
}, []);
|
|
278
|
+
|
|
279
|
+
return {
|
|
280
|
+
name: 'jwplayer',
|
|
281
|
+
ext: {
|
|
282
|
+
segtax: 502
|
|
283
|
+
},
|
|
284
|
+
segment: formattedSegments
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export function addOrtbSiteContent(bid, contentId, contentData) {
|
|
289
|
+
if (!contentId && !contentData) {
|
|
256
290
|
return;
|
|
257
291
|
}
|
|
258
292
|
|
|
259
|
-
|
|
293
|
+
let ortb2 = bid.ortb2 || {};
|
|
294
|
+
let site = ortb2.site = ortb2.site || {};
|
|
295
|
+
let content = site.content = site.content || {};
|
|
296
|
+
|
|
297
|
+
if (contentId) {
|
|
298
|
+
content.id = contentId;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (contentData) {
|
|
302
|
+
const data = content.data = content.data || [];
|
|
303
|
+
data.push(contentData);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
bid.ortb2 = ortb2;
|
|
260
307
|
}
|
|
261
308
|
|
|
309
|
+
function enrichBids(bids, targeting, contentId, contentData) {
|
|
310
|
+
if (!bids) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
bids.forEach(bid => {
|
|
315
|
+
addTargetingToBid(bid, targeting);
|
|
316
|
+
addOrtbSiteContent(bid, contentId, contentData);
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/*
|
|
321
|
+
deprecated
|
|
322
|
+
*/
|
|
262
323
|
export function addTargetingToBid(bid, targeting) {
|
|
324
|
+
if (!targeting) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
|
|
263
328
|
const rtd = bid.rtd || {};
|
|
264
329
|
const jwRtd = {};
|
|
265
330
|
jwRtd[SUBMODULE_NAME] = Object.assign({}, rtd[SUBMODULE_NAME], { targeting });
|
|
@@ -81,20 +81,30 @@ realTimeData = {
|
|
|
81
81
|
# Usage for Bid Adapters:
|
|
82
82
|
|
|
83
83
|
Implement the `buildRequests` function. When it is called, the `bidRequests` param will be an array of bids.
|
|
84
|
-
Each bid for which targeting information was found will
|
|
84
|
+
Each bid for which targeting information was found will have a ortb2 param conforming to the [oRTB v2 object structure](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf). The `ortb2` object will contain our proprietaty targeting segments in a format compliant with the [IAB's segment taxonomy structure](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/segtax.md).
|
|
85
|
+
|
|
86
|
+
Example:
|
|
85
87
|
|
|
86
88
|
```javascript
|
|
87
89
|
{
|
|
88
90
|
adUnitCode: 'xyz',
|
|
89
91
|
bidId: 'abc',
|
|
90
92
|
...,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
ortb2: {
|
|
94
|
+
site: {
|
|
95
|
+
content: {
|
|
96
|
+
id: 'jw_abc123',
|
|
97
|
+
data: [{
|
|
98
|
+
name: 'jwplayer',
|
|
99
|
+
ext: {
|
|
100
|
+
segtax: 502
|
|
101
|
+
},
|
|
102
|
+
segment: [{
|
|
103
|
+
id: '123'
|
|
104
|
+
}, {
|
|
105
|
+
id: '456'
|
|
106
|
+
}]
|
|
107
|
+
}]
|
|
98
108
|
}
|
|
99
109
|
}
|
|
100
110
|
}
|
|
@@ -102,9 +112,15 @@ Each bid for which targeting information was found will conform to the following
|
|
|
102
112
|
```
|
|
103
113
|
|
|
104
114
|
where:
|
|
105
|
-
- `
|
|
106
|
-
- `
|
|
107
|
-
|
|
115
|
+
- `ortb2` is an object containing first party data
|
|
116
|
+
- `site` is an object containing page specific information
|
|
117
|
+
- `content` is an object containing metadata for the media. It may contain the following information:
|
|
118
|
+
- `id` is a unique identifier for the specific media asset
|
|
119
|
+
- `data` is an array containing segment taxonomy objects that have the following parameters:
|
|
120
|
+
- `name` is the `jwplayer` string indicating the provider name
|
|
121
|
+
- `ext.segtax` whose `502` value is the unique identifier for JW Player's proprietary taxonomy
|
|
122
|
+
- `segment` is an array containing the segment taxonomy values as an object where:
|
|
123
|
+
- `id` is the string representation of the data segment value.
|
|
108
124
|
|
|
109
125
|
**Example:**
|
|
110
126
|
|
|
@@ -73,8 +73,8 @@ export const spec = {
|
|
|
73
73
|
let meta;
|
|
74
74
|
if (adUnit.metadata && adUnit.metadata.landingPageDomain) {
|
|
75
75
|
meta = {
|
|
76
|
-
clickUrl: adUnit.metadata.landingPageDomain,
|
|
77
|
-
advertiserDomains:
|
|
76
|
+
clickUrl: adUnit.metadata.landingPageDomain[0],
|
|
77
|
+
advertiserDomains: adUnit.metadata.landingPageDomain
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
bidResponses.push({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isSafariBrowser, deepAccess, getWindowTop, mergeDeep } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
|
-
import find from '
|
|
4
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
5
5
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
6
6
|
import { getStorageManager } from '../src/storageManager.js';
|
|
7
7
|
|