prebid.js 7.44.0 → 7.46.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.
Files changed (309) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/acuityAdsBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/admaticBidAdapter.js +1 -1
  8. package/dist/adnuntiusBidAdapter.js +1 -1
  9. package/dist/adrelevantisBidAdapter.js +1 -1
  10. package/dist/adtrgtmeBidAdapter.js +1 -1
  11. package/dist/adxcgBidAdapter.js +1 -1
  12. package/dist/adyoulikeBidAdapter.js +1 -1
  13. package/dist/ajaBidAdapter.js +1 -1
  14. package/dist/amxBidAdapter.js +1 -1
  15. package/dist/amxIdSystem.js +1 -1
  16. package/dist/appierAnalyticsAdapter.js +1 -1
  17. package/dist/appnexusBidAdapter.js +1 -1
  18. package/dist/appushBidAdapter.js +1 -1
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/beyondmediaBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/braveBidAdapter.js +1 -1
  26. package/dist/bridgewellBidAdapter.js +1 -1
  27. package/dist/brightMountainMediaBidAdapter.js +1 -1
  28. package/dist/brightcomBidAdapter.js +1 -1
  29. package/dist/brightcomSSPBidAdapter.js +1 -1
  30. package/dist/carodaBidAdapter.js +1 -1
  31. package/dist/chtnwBidAdapter.js +1 -1
  32. package/dist/coinzillaBidAdapter.js +1 -1
  33. package/dist/compassBidAdapter.js +1 -1
  34. package/dist/concertBidAdapter.js +1 -1
  35. package/dist/connectIdSystem.js +1 -1
  36. package/dist/connectadBidAdapter.js +1 -1
  37. package/dist/consumableBidAdapter.js +1 -1
  38. package/dist/contentexchangeBidAdapter.js +1 -1
  39. package/dist/conversantAnalyticsAdapter.js +1 -1
  40. package/dist/conversantBidAdapter.js +1 -1
  41. package/dist/craftBidAdapter.js +1 -1
  42. package/dist/criteoBidAdapter.js +1 -1
  43. package/dist/cwireBidAdapter.js +1 -1
  44. package/dist/debugging-standalone.js +1 -1
  45. package/dist/dependencies.json +15 -0
  46. package/dist/domainOverrideToRootDomain.js +1 -0
  47. package/dist/dspxBidAdapter.js +1 -1
  48. package/dist/eplanningBidAdapter.js +1 -1
  49. package/dist/eskimiBidAdapter.js +1 -0
  50. package/dist/feedadBidAdapter.js +1 -1
  51. package/dist/finativeBidAdapter.js +1 -1
  52. package/dist/freewheel-sspBidAdapter.js +1 -1
  53. package/dist/glimpseBidAdapter.js +1 -1
  54. package/dist/globalsunBidAdapter.js +1 -1
  55. package/dist/gmosspBidAdapter.js +1 -1
  56. package/dist/goldbachBidAdapter.js +1 -1
  57. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  58. package/dist/gridBidAdapter.js +1 -1
  59. package/dist/growthCodeIdSystem.js +1 -1
  60. package/dist/gumgumBidAdapter.js +1 -1
  61. package/dist/h12mediaBidAdapter.js +1 -1
  62. package/dist/id5IdSystem.js +1 -1
  63. package/dist/improvedigitalBidAdapter.js +1 -1
  64. package/dist/inmarBidAdapter.js +1 -1
  65. package/dist/insticatorBidAdapter.js +1 -1
  66. package/dist/iqzoneBidAdapter.js +1 -1
  67. package/dist/ivsBidAdapter.js +1 -0
  68. package/dist/ixBidAdapter.js +1 -1
  69. package/dist/justpremiumBidAdapter.js +1 -1
  70. package/dist/jwplayerVideoProvider.js +1 -1
  71. package/dist/kargoBidAdapter.js +1 -1
  72. package/dist/koblerBidAdapter.js +1 -1
  73. package/dist/konduitAnalyticsAdapter.js +1 -1
  74. package/dist/kueezBidAdapter.js +1 -1
  75. package/dist/kueezRtbBidAdapter.js +1 -1
  76. package/dist/kulturemediaBidAdapter.js +1 -1
  77. package/dist/lassoBidAdapter.js +1 -1
  78. package/dist/lifestreetBidAdapter.js +1 -1
  79. package/dist/liveIntentIdSystem.js +1 -1
  80. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  81. package/dist/logicadBidAdapter.js +1 -1
  82. package/dist/loglyliftBidAdapter.js +1 -1
  83. package/dist/luponmediaBidAdapter.js +1 -1
  84. package/dist/magniteAnalyticsAdapter.js +1 -1
  85. package/dist/malltvAnalyticsAdapter.js +1 -1
  86. package/dist/marsmediaBidAdapter.js +1 -1
  87. package/dist/mathildeadsBidAdapter.js +1 -1
  88. package/dist/mediafuseBidAdapter.js +1 -1
  89. package/dist/medianetBidAdapter.js +1 -1
  90. package/dist/mediasquareBidAdapter.js +1 -1
  91. package/dist/mgidBidAdapter.js +1 -1
  92. package/dist/minutemediaBidAdapter.js +1 -1
  93. package/dist/minutemediaplusBidAdapter.js +1 -1
  94. package/dist/nativoBidAdapter.js +1 -1
  95. package/dist/neuwoRtdProvider.js +1 -1
  96. package/dist/nexx360BidAdapter.js +1 -1
  97. package/dist/not-for-prod/prebid.js +165 -162
  98. package/dist/oguryBidAdapter.js +1 -1
  99. package/dist/onetagBidAdapter.js +1 -1
  100. package/dist/onomagicBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxBidAdapter.js +1 -1
  103. package/dist/openxOrtbBidAdapter.js +1 -1
  104. package/dist/operaadsBidAdapter.js +1 -1
  105. package/dist/optidigitalBidAdapter.js +1 -1
  106. package/dist/ortbConverter.js +1 -1
  107. package/dist/outbrainBidAdapter.js +1 -1
  108. package/dist/pairIdSystem.js +1 -0
  109. package/dist/parrableIdSystem.js +1 -1
  110. package/dist/pixfutureBidAdapter.js +1 -1
  111. package/dist/prebid-core.js +1 -1
  112. package/dist/publinkIdSystem.js +1 -1
  113. package/dist/pubmaticBidAdapter.js +1 -1
  114. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  115. package/dist/pubxBidAdapter.js +1 -1
  116. package/dist/pxyzBidAdapter.js +1 -1
  117. package/dist/quantcastBidAdapter.js +1 -1
  118. package/dist/readpeakBidAdapter.js +1 -1
  119. package/dist/relaidoBidAdapter.js +1 -1
  120. package/dist/rhythmoneBidAdapter.js +1 -1
  121. package/dist/riseBidAdapter.js +1 -1
  122. package/dist/rubiconAnalyticsAdapter.js +1 -1
  123. package/dist/rubiconBidAdapter.js +1 -1
  124. package/dist/seedingAllianceBidAdapter.js +1 -1
  125. package/dist/seedtagBidAdapter.js +1 -1
  126. package/dist/sharedIdSystem.js +1 -1
  127. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  128. package/dist/sharethroughBidAdapter.js +1 -1
  129. package/dist/shinezBidAdapter.js +1 -1
  130. package/dist/smaatoBidAdapter.js +1 -1
  131. package/dist/smartadserverBidAdapter.js +1 -1
  132. package/dist/smarthubBidAdapter.js +1 -1
  133. package/dist/smartxBidAdapter.js +1 -1
  134. package/dist/smilewantedBidAdapter.js +1 -1
  135. package/dist/sonobiBidAdapter.js +1 -1
  136. package/dist/sovrnAnalyticsAdapter.js +1 -1
  137. package/dist/sovrnBidAdapter.js +1 -1
  138. package/dist/sspBCBidAdapter.js +1 -1
  139. package/dist/stvBidAdapter.js +1 -1
  140. package/dist/sublimeBidAdapter.js +1 -1
  141. package/dist/synacormediaBidAdapter.js +1 -1
  142. package/dist/targetVideoBidAdapter.js +1 -1
  143. package/dist/teadsBidAdapter.js +1 -1
  144. package/dist/trionBidAdapter.js +1 -1
  145. package/dist/tripleliftBidAdapter.js +1 -1
  146. package/dist/truereachBidAdapter.js +1 -1
  147. package/dist/ttdBidAdapter.js +1 -1
  148. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  149. package/dist/uid2IdSystem.js +1 -1
  150. package/dist/underdogmediaBidAdapter.js +1 -1
  151. package/dist/undertoneBidAdapter.js +1 -1
  152. package/dist/userId.js +1 -1
  153. package/dist/vidazooBidAdapter.js +1 -1
  154. package/dist/videobyteBidAdapter.js +1 -1
  155. package/dist/videoheroesBidAdapter.js +1 -1
  156. package/dist/vidoomyBidAdapter.js +1 -1
  157. package/dist/visiblemeasuresBidAdapter.js +1 -1
  158. package/dist/visxBidAdapter.js +1 -1
  159. package/dist/vrtcalBidAdapter.js +1 -1
  160. package/dist/vuukleBidAdapter.js +1 -1
  161. package/dist/widespaceBidAdapter.js +1 -1
  162. package/dist/winrBidAdapter.js +1 -1
  163. package/dist/yahoosspBidAdapter.js +1 -1
  164. package/dist/yieldmoBidAdapter.js +1 -1
  165. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  166. package/dist/yieldoneBidAdapter.js +1 -1
  167. package/integrationExamples/gpt/fledge_example.html +103 -0
  168. package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
  169. package/libraries/domainOverrideToRootDomain/index.js +39 -0
  170. package/libraries/ortbConverter/processors/video.js +1 -0
  171. package/modules/acuityAdsBidAdapter.js +1 -1
  172. package/modules/admaticBidAdapter.js +7 -2
  173. package/modules/adnuntiusBidAdapter.js +3 -1
  174. package/modules/amxBidAdapter.js +1 -1
  175. package/modules/amxIdSystem.js +23 -20
  176. package/modules/amxIdSystem.md +7 -7
  177. package/modules/appnexusBidAdapter.js +108 -102
  178. package/modules/appushBidAdapter.js +1 -1
  179. package/modules/beyondmediaBidAdapter.js +1 -1
  180. package/modules/bidwatchAnalyticsAdapter.js +2 -0
  181. package/modules/braveBidAdapter.js +1 -1
  182. package/modules/brightcomBidAdapter.js +1 -1
  183. package/modules/brightcomSSPBidAdapter.js +1 -1
  184. package/modules/coinzillaBidAdapter.js +1 -2
  185. package/modules/compassBidAdapter.js +1 -1
  186. package/modules/connectIdSystem.js +96 -21
  187. package/modules/connectIdSystem.md +6 -5
  188. package/modules/contentexchangeBidAdapter.js +1 -1
  189. package/modules/conversantBidAdapter.js +3 -0
  190. package/modules/criteoBidAdapter.js +5 -1
  191. package/modules/eskimiBidAdapter.js +72 -0
  192. package/modules/eskimiBidAdapter.md +34 -0
  193. package/modules/freewheel-sspBidAdapter.js +8 -0
  194. package/modules/glimpseBidAdapter.js +1 -2
  195. package/modules/globalsunBidAdapter.js +1 -1
  196. package/modules/gridBidAdapter.js +43 -20
  197. package/modules/growthCodeIdSystem.js +18 -15
  198. package/modules/gumgumBidAdapter.js +1 -1
  199. package/modules/iqzoneBidAdapter.js +1 -1
  200. package/modules/ivsBidAdapter.js +85 -0
  201. package/modules/ivsBidAdapter.md +34 -0
  202. package/modules/ixBidAdapter.js +72 -105
  203. package/modules/jwplayerVideoProvider.js +25 -32
  204. package/modules/kargoBidAdapter.js +473 -246
  205. package/modules/koblerBidAdapter.js +1 -2
  206. package/modules/kueezBidAdapter.js +1 -1
  207. package/modules/kueezRtbBidAdapter.js +16 -4
  208. package/modules/liveIntentIdSystem.js +8 -0
  209. package/modules/luponmediaBidAdapter.js +1 -1
  210. package/modules/magniteAnalyticsAdapter.js +76 -3
  211. package/modules/mathildeadsBidAdapter.js +1 -1
  212. package/modules/medianetBidAdapter.js +1 -1
  213. package/modules/mediasquareBidAdapter.js +2 -1
  214. package/modules/mgidBidAdapter.js +178 -26
  215. package/modules/minutemediaBidAdapter.js +1 -1
  216. package/modules/minutemediaplusBidAdapter.js +16 -4
  217. package/modules/nativoBidAdapter.js +110 -21
  218. package/modules/neuwoRtdProvider.js +0 -2
  219. package/modules/oguryBidAdapter.js +3 -2
  220. package/modules/onomagicBidAdapter.js +1 -2
  221. package/modules/openxBidAdapter.js +192 -563
  222. package/modules/openxBidAdapter.md +22 -20
  223. package/modules/openxOrtbBidAdapter.js +13 -11
  224. package/modules/openxOrtbBidAdapter.md +5 -3
  225. package/modules/operaadsBidAdapter.js +1 -1
  226. package/modules/pairIdSystem.js +79 -0
  227. package/modules/pubmaticBidAdapter.js +13 -10
  228. package/modules/pubxBidAdapter.js +5 -2
  229. package/modules/riseBidAdapter.js +1 -1
  230. package/modules/sharedIdSystem.js +4 -27
  231. package/modules/sharethroughBidAdapter.js +1 -1
  232. package/modules/shinezBidAdapter.js +1 -1
  233. package/modules/smarthubBidAdapter.js +1 -1
  234. package/modules/synacormediaBidAdapter.js +1 -3
  235. package/modules/truereachBidAdapter.js +1 -2
  236. package/modules/userId/eids.js +24 -0
  237. package/modules/userId/eids.md +16 -0
  238. package/modules/videoheroesBidAdapter.js +1 -1
  239. package/modules/vidoomyBidAdapter.js +33 -4
  240. package/modules/visiblemeasuresBidAdapter.js +1 -1
  241. package/modules/vrtcalBidAdapter.js +1 -1
  242. package/modules/yieldmoBidAdapter.js +15 -5
  243. package/modules/yieldoneBidAdapter.js +1 -1
  244. package/package.json +1 -1
  245. package/src/Renderer.js +2 -1
  246. package/src/config.js +78 -127
  247. package/src/native.js +5 -1
  248. package/test/spec/auctionmanager_spec.js +2 -2
  249. package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
  250. package/test/spec/modules/1plusXRtdProvider_spec.js +8 -7
  251. package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
  252. package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
  253. package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
  254. package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
  255. package/test/spec/modules/amxIdSystem_spec.js +13 -26
  256. package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
  257. package/test/spec/modules/appushBidAdapter_spec.js +2 -1
  258. package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
  259. package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
  260. package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
  261. package/test/spec/modules/compassBidAdapter_spec.js +2 -1
  262. package/test/spec/modules/connectIdSystem_spec.js +420 -242
  263. package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
  264. package/test/spec/modules/conversantBidAdapter_spec.js +1 -0
  265. package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
  266. package/test/spec/modules/eids_spec.js +30 -0
  267. package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
  268. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
  269. package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
  270. package/test/spec/modules/gridBidAdapter_spec.js +8 -0
  271. package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
  272. package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
  273. package/test/spec/modules/ixBidAdapter_spec.js +141 -71
  274. package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
  275. package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
  276. package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
  277. package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
  278. package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
  279. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
  280. package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
  281. package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
  282. package/test/spec/modules/minutemediaplusBidAdapter_spec.js +22 -2
  283. package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
  284. package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
  285. package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
  286. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
  287. package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
  288. package/test/spec/modules/openxOrtbBidAdapter_spec.js +12 -39
  289. package/test/spec/modules/pairIdSystem_spec.js +68 -0
  290. package/test/spec/modules/pubCommonId_spec.js +0 -17
  291. package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
  292. package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
  293. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
  294. package/test/spec/modules/sharedIdSystem_spec.js +0 -46
  295. package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
  296. package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
  297. package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
  298. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
  299. package/test/spec/modules/vidoomyBidAdapter_spec.js +58 -0
  300. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
  301. package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
  302. package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
  303. package/test/spec/renderer_spec.js +1 -2
  304. package/test/spec/unit/pbjs_api_spec.js +19 -3
  305. package/test/test_index.js +13 -3
  306. package/dist/gridNMBidAdapter.js +0 -1
  307. package/modules/gridNMBidAdapter.js +0 -422
  308. package/modules/gridNMBidAdapter.md +0 -39
  309. package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
@@ -9,30 +9,31 @@ Maintainer: team-openx@openx.com
9
9
  # Description
10
10
 
11
11
  Module that connects to OpenX's demand sources.
12
- Note there is an updated version of the OpenX bid adapter called openxOrtbBidAdapter.
13
- Publishers are welcome to test the other adapter and give feedback. Please note you should only include either openxBidAdapter or openxOrtbBidAdapter in your build.
12
+ Note that this adapter mirrors openxOrtbBidAdapter and any updates must be
13
+ completed in both adapters.
14
+ openxOrtbBidAdapter will be removed in a future release and should not be used.
15
+ Please note you should only include either openxBidAdapter or openxOrtbBidAdapter in your build.
14
16
 
15
17
  # Bid Parameters
16
18
  ## Banner
17
19
 
18
- | Name | Scope | Type | Description | Example |
19
- |---------------------------------|----------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|
20
- | `delDomain` ~~or `platform`~~** | required | String | OpenX delivery domain provided by your OpenX representative. | "PUBLISHER-d.openx.net" |
21
- | `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122" |
22
- | `customParams` | optional | Object | User-defined targeting key-value pairs. customParams applies to a specific unit. | `{key1: "v1", key2: ["v2","v3"]}` |
23
- | `customFloor` | optional | Number | Minimum price in USD. customFloor applies to a specific unit. For example, use the following value to set a $1.50 floor: 1.50 <br/><br/> **WARNING:**<br/> Misuse of this parameter can impact revenue<br/><br/>Note: OpenX suggests using the [Price Floor Module](https://docs.prebid.org/dev-docs/modules/floors.html) instead of customFloor. The Price Floor Module is prioritized over customFloor if both are present. | 1.50 |
24
- | `doNotTrack` | optional | Boolean | Prevents advertiser from using data for this user. <br/><br/> **WARNING:**<br/> Request-level setting. May impact revenue. | true |
25
- | `coppa` | optional | Boolean | Enables Child's Online Privacy Protection Act (COPPA) regulations. | true |
26
-
27
- ** platform is deprecated. Please use delDomain instead. If you have any questions please contact your representative.
20
+ | Name | Scope | Type | Description | Example
21
+ | ---- | ----- | ---- | ----------- | -------
22
+ | `delDomain` or `platform` | required | String | OpenX delivery domain or platform id provided by your OpenX representative. | "PUBLISHER-d.openx.net" or "555not5a-real-plat-form-id0123456789"
23
+ | `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122"
24
+ | `customParams` | optional | Object | User-defined targeting key-value pairs. customParams applies to a specific unit. | `{key1: "v1", key2: ["v2","v3"]}`
25
+ | `customFloor` | optional | Number | Minimum price in USD. customFloor applies to a specific unit. For example, use the following value to set a $1.50 floor: 1.50 <br/><br/> **WARNING:**<br/> Misuse of this parameter can impact revenue | 1.50
26
+ | `doNotTrack` | optional | Boolean | Prevents advertiser from using data for this user. <br/><br/> **WARNING:**<br/> Request-level setting. May impact revenue. | true
27
+ | `coppa` | optional | Boolean | Enables Child's Online Privacy Protection Act (COPPA) regulations. Use of `pbjs.setConfig({coppa: true});` is now preferred. | true
28
28
 
29
29
  ## Video
30
30
 
31
- | Name | Scope | Type | Description | Example |
32
- |-------------|----------|--------------------|--------------------------------------------------------------|----------------------------------------------------------------|
33
- | `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122" |
34
- | `delDomain` | required | String | OpenX delivery domain provided by your OpenX representative. | "PUBLISHER-d.openx.net" |
35
- | `openrtb` | optional | OpenRTB Impression | An OpenRtb Impression with Video subtype properties | `{ imp: [{ video: {mimes: ['video/x-ms-wmv, video/mp4']} }] }` |
31
+ | Name | Scope | Type | Description | Example
32
+ | ---- | ----- | ---- | ----------- | -------
33
+ | `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122"
34
+ | `delDomain` | required | String | OpenX delivery domain provided by your OpenX representative. | "PUBLISHER-d.openx.net"
35
+ | `video` | optional | OpenRTB video subtypes | Use of adUnit.mediaTypes.video is now preferred. | `{ video: {mimes: ['video/mp4']}`
36
+
36
37
 
37
38
  # Example
38
39
  ```javascript
@@ -70,7 +71,8 @@ var adUnits = [
70
71
  mediaTypes: {
71
72
  video: {
72
73
  playerSize: [640, 480],
73
- context: 'instream'
74
+ context: 'instream',
75
+ mimes: ['video/x-ms-wmv, video/mp4']
74
76
  }
75
77
  },
76
78
  bids: [{
@@ -79,10 +81,10 @@ var adUnits = [
79
81
  unit: '1611023124',
80
82
  delDomain: 'PUBLISHER-d.openx.net',
81
83
  video: {
82
- mimes: ['video/x-ms-wmv, video/mp4']
84
+ mimes: ['video/x-ms-wmv, video/mp4'] // mediaTypes.video preferred
83
85
  }
84
86
  }
85
- }]
87
+ }]p
86
88
  }
87
89
  ];
88
90
  ```
@@ -29,9 +29,6 @@ const converter = ortbConverter({
29
29
  },
30
30
  imp(buildImp, bidRequest, context) {
31
31
  const imp = buildImp(bidRequest, context);
32
- if (bidRequest.mediaTypes[VIDEO]?.context === 'outstream') {
33
- imp.video.placement = imp.video.placement || 4;
34
- }
35
32
  mergeDeep(imp, {
36
33
  tagid: bidRequest.params.unit,
37
34
  ext: {
@@ -132,15 +129,20 @@ const converter = ortbConverter({
132
129
  }
133
130
  },
134
131
  video(orig, imp, bidRequest, context) {
135
- // `orig` is the video imp processor, which looks at bidRequest.mediaTypes[VIDEO]
136
- // to populate imp.video
137
- // alter its input `bidRequest` to also pick up parameters from `bidRequest.params`
138
- let videoParams = bidRequest.mediaTypes[VIDEO];
139
- if (videoParams) {
140
- videoParams = Object.assign({}, videoParams, bidRequest.params.video);
141
- bidRequest = {...bidRequest, mediaTypes: {[VIDEO]: videoParams}}
132
+ if (FEATURES.VIDEO) {
133
+ // `orig` is the video imp processor, which looks at bidRequest.mediaTypes[VIDEO]
134
+ // to populate imp.video
135
+ // alter its input `bidRequest` to also pick up parameters from `bidRequest.params`
136
+ let videoParams = bidRequest.mediaTypes[VIDEO];
137
+ if (videoParams) {
138
+ videoParams = Object.assign({}, videoParams, bidRequest.params.video);
139
+ bidRequest = {...bidRequest, mediaTypes: {[VIDEO]: videoParams}}
140
+ }
141
+ orig(imp, bidRequest, context);
142
+ if (imp.video && videoParams?.context === 'outstream') {
143
+ imp.video.placement = imp.video.placement || 4;
144
+ }
142
145
  }
143
- orig(imp, bidRequest, context);
144
146
  }
145
147
  }
146
148
  }
@@ -1,15 +1,17 @@
1
1
  # Overview
2
2
 
3
3
  ```
4
- Module Name: OpenX OpenRTB Bidder Adapter
4
+ Module Name: OpenX Bidder Adapter
5
5
  Module Type: Bidder Adapter
6
6
  Maintainer: team-openx@openx.com
7
7
  ```
8
8
 
9
9
  # Description
10
+ DEPRECATED. Use openxBidAdapter.
10
11
 
11
- This is an updated version of the OpenX bid adapter which calls our new serving architecture.
12
- Publishers are welcome to test this adapter and give feedback. Please note you should only include either openxBidAdapter or openxOrtbBidAdapter in your build.
12
+ This adapter was originally an adapter used to test OpenX serving architecture changes.
13
+ This adapter now mirrors openxBidAdapter and this adapter will be removed in a future release. Please use openxBidAdapter.
14
+ Please note you should only include either openxBidAdapter or openxOrtbBidAdapter in your build.
13
15
 
14
16
  # Bid Parameters
15
17
  ## Banner
@@ -228,7 +228,7 @@ function buildOpenRtbBidRequest(bidRequest, bidderRequest) {
228
228
  // build OpenRTB request body
229
229
  const payload = {
230
230
  id: bidderRequest.auctionId,
231
- tmax: bidderRequest.timeout || config.getConfig('bidderTimeout'),
231
+ tmax: bidderRequest.timeout,
232
232
  test: config.getConfig('debug') ? 1 : 0,
233
233
  imp: createImp(bidRequest),
234
234
  device: getDevice(),
@@ -0,0 +1,79 @@
1
+ /**
2
+ * This module adds PAIR Id to the User ID module
3
+ * The {@link module:modules/userId} module is required
4
+ * @module modules/pairIdSystem
5
+ * @requires module:modules/userId
6
+ */
7
+
8
+ import { submodule } from '../src/hook.js';
9
+ import {getStorageManager} from '../src/storageManager.js'
10
+ import { logError } from '../src/utils.js';
11
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
12
+
13
+ const MODULE_NAME = 'pairId';
14
+ const PAIR_ID_KEY = 'pairId';
15
+ const DEFAULT_LIVERAMP_PAIR_ID_KEY = '_lr_pairId';
16
+
17
+ export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
18
+
19
+ function pairIdFromLocalStorage(key) {
20
+ return storage.localStorageIsEnabled ? storage.getDataFromLocalStorage(key) : null;
21
+ }
22
+
23
+ function pairIdFromCookie(key) {
24
+ return storage.cookiesAreEnabled ? storage.getCookie(key) : null;
25
+ }
26
+
27
+ /** @type {Submodule} */
28
+ export const pairIdSubmodule = {
29
+ /**
30
+ * used to link submodule with config
31
+ * @type {string}
32
+ */
33
+ name: MODULE_NAME,
34
+ /**
35
+ * decode the stored id value for passing to bid requests
36
+ * @function
37
+ * @param { string | undefined } value
38
+ * @returns {{pairId:string} | undefined }
39
+ */
40
+ decode(value) {
41
+ return value && Array.isArray(value) ? {'pairId': value} : undefined
42
+ },
43
+ /**
44
+ * performs action to obtain id and return a value in the callback's response argument
45
+ * @function
46
+ * @returns {id: string | undefined }
47
+ */
48
+ getId(config) {
49
+ const pairIdsString = pairIdFromLocalStorage(PAIR_ID_KEY) || pairIdFromCookie(PAIR_ID_KEY)
50
+ let ids = []
51
+ if (pairIdsString && typeof pairIdsString == 'string') {
52
+ try {
53
+ ids = ids.concat(JSON.parse(atob(pairIdsString)))
54
+ } catch (error) {
55
+ logError(error)
56
+ }
57
+ }
58
+
59
+ const configParams = (config && config.params) || {};
60
+ if (configParams && configParams.liveramp) {
61
+ let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY
62
+ const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation)
63
+ try {
64
+ const obj = JSON.parse(atob(liverampValue));
65
+ ids = ids.concat(obj.envelope);
66
+ } catch (error) {
67
+ logError(error)
68
+ }
69
+ }
70
+
71
+ if (ids.length == 0) {
72
+ logError('PairId not found.')
73
+ return undefined;
74
+ }
75
+ return {'id': ids};
76
+ }
77
+ };
78
+
79
+ submodule('userId', pairIdSubmodule);
@@ -534,7 +534,7 @@ function _createBannerRequest(bid) {
534
534
 
535
535
  export function checkVideoPlacement(videoData, adUnitCode) {
536
536
  // Check for video.placement property. If property is missing display log message.
537
- if (!deepAccess(videoData, 'placement')) {
537
+ if (FEATURES.VIDEO && !deepAccess(videoData, 'placement')) {
538
538
  logWarn(MSG_VIDEO_PLACEMENT_MISSING + ' for ' + adUnitCode);
539
539
  };
540
540
  }
@@ -543,7 +543,7 @@ function _createVideoRequest(bid) {
543
543
  var videoData = mergeDeep(deepAccess(bid.mediaTypes, 'video'), bid.params.video);
544
544
  var videoObj;
545
545
 
546
- if (videoData !== UNDEFINED) {
546
+ if (FEATURES.VIDEO && videoData !== UNDEFINED) {
547
547
  videoObj = {};
548
548
  checkVideoPlacement(videoData, bid.adUnitCode);
549
549
  for (var key in VIDEO_CUSTOM_PARAMS) {
@@ -673,7 +673,7 @@ function _createImpressionObject(bid) {
673
673
  isInvalidNativeRequest = false;
674
674
  }
675
675
  break;
676
- case VIDEO:
676
+ case FEATURES.VIDEO && VIDEO:
677
677
  videoObj = _createVideoRequest(bid);
678
678
  if (videoObj !== UNDEFINED) {
679
679
  impObj.video = videoObj;
@@ -709,7 +709,7 @@ function _createImpressionObject(bid) {
709
709
 
710
710
  return impObj.hasOwnProperty(BANNER) ||
711
711
  impObj.hasOwnProperty(NATIVE) ||
712
- impObj.hasOwnProperty(VIDEO) ? impObj : UNDEFINED;
712
+ (FEATURES.VIDEO && impObj.hasOwnProperty(VIDEO)) ? impObj : UNDEFINED;
713
713
  }
714
714
 
715
715
  function _addImpressionFPD(imp, bid) {
@@ -810,7 +810,7 @@ function _checkMediaType(bid, newBid) {
810
810
  var videoRegex = new RegExp(/VAST\s+version/);
811
811
  if (adm.indexOf('span class="PubAPIAd"') >= 0) {
812
812
  newBid.mediaType = BANNER;
813
- } else if (videoRegex.test(adm)) {
813
+ } else if (FEATURES.VIDEO && videoRegex.test(adm)) {
814
814
  newBid.mediaType = VIDEO;
815
815
  } else {
816
816
  try {
@@ -896,7 +896,10 @@ function _assignRenderer(newBid, request) {
896
896
  for (let bidderRequestBidsIndex = 0; bidderRequestBidsIndex < request.bidderRequest.bids.length; bidderRequestBidsIndex++) {
897
897
  if (request.bidderRequest.bids[bidderRequestBidsIndex].bidId === newBid.requestId) {
898
898
  bidParams = request.bidderRequest.bids[bidderRequestBidsIndex].params;
899
- context = request.bidderRequest.bids[bidderRequestBidsIndex].mediaTypes[VIDEO].context;
899
+
900
+ if (FEATURES.VIDEO) {
901
+ context = request.bidderRequest.bids[bidderRequestBidsIndex].mediaTypes[VIDEO].context;
902
+ }
900
903
  adUnitCode = request.bidderRequest.bids[bidderRequestBidsIndex].adUnitCode;
901
904
  }
902
905
  }
@@ -916,7 +919,7 @@ function _assignRenderer(newBid, request) {
916
919
  * @returns
917
920
  */
918
921
  export function assignDealTier(newBid, bid, request) {
919
- if (!bid?.ext?.prebiddealpriority) return;
922
+ if (!bid?.ext?.prebiddealpriority || !FEATURES.VIDEO) return;
920
923
  const bidRequest = getBidRequest(newBid.requestId, [request.bidderRequest]);
921
924
  const videoObj = deepAccess(bidRequest, 'mediaTypes.video');
922
925
  if (videoObj?.context != ADPOD) return;
@@ -999,7 +1002,7 @@ export const spec = {
999
1002
  return false;
1000
1003
  }
1001
1004
  // video ad validation
1002
- if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
1005
+ if (FEATURES.VIDEO && bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
1003
1006
  // bid.mediaTypes.video.mimes OR bid.params.video.mimes should be present and must be a non-empty array
1004
1007
  let mediaTypesVideoMimes = deepAccess(bid.mediaTypes, 'video.mimes');
1005
1008
  let paramsVideoMimes = deepAccess(bid, 'params.video.mimes');
@@ -1211,7 +1214,7 @@ export const spec = {
1211
1214
  // bidderRequest has timeout property if publisher sets during calling requestBids function from page
1212
1215
  // if not bidderRequest contains global value set by Prebid
1213
1216
  if (bidderRequest?.timeout) {
1214
- payload.tmax = bidderRequest.timeout || config.getConfig('bidderTimeout');
1217
+ payload.tmax = bidderRequest.timeout;
1215
1218
  } else {
1216
1219
  payload.tmax = window?.PWT?.versionDetails?.timeout;
1217
1220
  }
@@ -1284,7 +1287,7 @@ export const spec = {
1284
1287
  switch (newBid.mediaType) {
1285
1288
  case BANNER:
1286
1289
  break;
1287
- case VIDEO:
1290
+ case FEATURES.VIDEO && VIDEO:
1288
1291
  newBid.width = bid.hasOwnProperty('w') ? bid.w : req.video.w;
1289
1292
  newBid.height = bid.hasOwnProperty('h') ? bid.h : req.video.h;
1290
1293
  newBid.vastXml = bid.adm;
@@ -1,4 +1,4 @@
1
- import { deepSetValue } from '../src/utils.js';
1
+ import { deepSetValue, deepAccess } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
 
4
4
  const BIDDER_CODE = 'pubx';
@@ -16,8 +16,11 @@ export const spec = {
16
16
  const bidId = bidRequest.bidId;
17
17
  const params = bidRequest.params;
18
18
  const sid = params.sid;
19
+ const pageUrl = deepAccess(bidRequest, 'ortb2.site.page').replace(/\?.*$/, '');
20
+ const pageEnc = encodeURIComponent(pageUrl);
19
21
  const payload = {
20
- sid: sid
22
+ sid: sid,
23
+ pu: pageEnc,
21
24
  };
22
25
  return {
23
26
  id: bidId,
@@ -384,7 +384,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
384
384
  const {syncEnabled, filterSettings} = config.getConfig('userSync') || {};
385
385
  const {bidderCode} = bidderRequest;
386
386
  const generalBidParams = generalObject.params;
387
- const timeout = config.getConfig('bidderTimeout');
387
+ const timeout = bidderRequest.timeout;
388
388
 
389
389
  // these params are snake_case instead of camelCase to allow backwards compatability on the server.
390
390
  // in the future, these will be converted to camelCase to match our convention.
@@ -5,12 +5,13 @@
5
5
  * @requires module:modules/userId
6
6
  */
7
7
 
8
- import { parseUrl, buildUrl, triggerPixel, logInfo, hasDeviceAccess, generateUUID } from '../src/utils.js';
8
+ import {parseUrl, buildUrl, triggerPixel, logInfo, hasDeviceAccess, generateUUID} from '../src/utils.js';
9
9
  import {submodule} from '../src/hook.js';
10
- import { coppaDataHandler } from '../src/adapterManager.js';
10
+ import {coppaDataHandler} from '../src/adapterManager.js';
11
11
  import {getStorageManager} from '../src/storageManager.js';
12
12
  import {VENDORLESS_GVLID} from '../src/consentHandler.js';
13
13
  import {MODULE_TYPE_UID} from '../src/activities/modules.js';
14
+ import {domainOverrideToRootDomain} from '../libraries/domainOverrideToRootDomain/index.js';
14
15
 
15
16
  export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: 'pubCommonId'});
16
17
  const COOKIE = 'cookie';
@@ -172,31 +173,7 @@ export const sharedIdSystemSubmodule = {
172
173
  }
173
174
  },
174
175
 
175
- domainOverride: function () {
176
- const domainElements = document.domain.split('.');
177
- const cookieName = `_gd${Date.now()}`;
178
- for (let i = 0, topDomain, testCookie; i < domainElements.length; i++) {
179
- const nextDomain = domainElements.slice(i).join('.');
180
-
181
- // write test cookie
182
- storage.setCookie(cookieName, '1', undefined, undefined, nextDomain);
183
-
184
- // read test cookie to verify domain was valid
185
- testCookie = storage.getCookie(cookieName);
186
-
187
- // delete test cookie
188
- storage.setCookie(cookieName, '', 'Thu, 01 Jan 1970 00:00:01 GMT', undefined, nextDomain);
189
-
190
- if (testCookie === '1') {
191
- // cookie was written successfully using test domain so the topDomain is updated
192
- topDomain = nextDomain;
193
- } else {
194
- // cookie failed to write using test domain so exit by returning the topDomain
195
- return topDomain;
196
- }
197
- }
198
- }
199
-
176
+ domainOverride: domainOverrideToRootDomain(storage, 'sharedId'),
200
177
  };
201
178
 
202
179
  submodule('userId', sharedIdSystemSubmodule);
@@ -21,7 +21,7 @@ export const sharethroughAdapterSpec = {
21
21
  isBidRequestValid: bid => !!bid.params.pkey && bid.bidder === BIDDER_CODE,
22
22
 
23
23
  buildRequests: (bidRequests, bidderRequest) => {
24
- const timeout = config.getConfig('bidderTimeout');
24
+ const timeout = bidderRequest.timeout;
25
25
  const firstPartyData = bidderRequest.ortb2 || {};
26
26
 
27
27
  const nonHttp = sharethroughInternal.getProtocol().indexOf('http') < 0;
@@ -364,7 +364,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
364
364
  const {syncEnabled, filterSettings} = config.getConfig('userSync') || {};
365
365
  const {bidderCode} = bidderRequest;
366
366
  const generalBidParams = generalObject.params;
367
- const timeout = config.getConfig('bidderTimeout');
367
+ const timeout = bidderRequest.timeout;
368
368
 
369
369
  // these params are snake_case instead of camelCase to allow backwards compatability on the server.
370
370
  // in the future, these will be converted to camelCase to match our convention.
@@ -125,7 +125,7 @@ function buildRequestParams(bidderRequest = {}, placements = []) {
125
125
  coppa: config.getConfig('coppa') === true ? 1 : 0,
126
126
  ccpa: bidderRequest.uspConsent || undefined,
127
127
  gdpr: bidderRequest.gdprConsent || undefined,
128
- tmax: config.getConfig('bidderTimeout')
128
+ tmax: bidderRequest.timeout
129
129
  };
130
130
  }
131
131
 
@@ -49,9 +49,7 @@ export const spec = {
49
49
  imp: []
50
50
  };
51
51
 
52
- const callbackTimeout = bidderRequest.timeout;
53
- const globalTimeout = config.getConfig('bidderTimeout');
54
- const tmax = globalTimeout ? Math.min(globalTimeout, callbackTimeout) : callbackTimeout;
52
+ const tmax = bidderRequest.timeout;
55
53
  if (tmax) {
56
54
  openRtbBidRequest.tmax = tmax;
57
55
  }
@@ -1,6 +1,5 @@
1
1
  import { deepAccess, getUniqueIdentifierStr } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
- import { config } from '../src/config.js';
4
3
  import { BANNER } from '../src/mediaTypes.js';
5
4
 
6
5
  const SUPPORTED_AD_TYPES = [BANNER];
@@ -140,7 +139,7 @@ function buildCommonQueryParamsFromBids(validBidRequests, bidderRequest) {
140
139
  device: {
141
140
  ua: window.navigator.userAgent
142
141
  },
143
- tmax: config.getConfig('bidderTimeout')
142
+ tmax: bidderRequest.timeout
144
143
  };
145
144
 
146
145
  return defaultParams;
@@ -45,6 +45,12 @@ export const USER_IDS_CONFIG = {
45
45
  atype: 1
46
46
  },
47
47
 
48
+ // pairId
49
+ 'pairId': {
50
+ source: 'google.com',
51
+ atype: 571187
52
+ },
53
+
48
54
  // justId
49
55
  'justId': {
50
56
  source: 'justtag.com',
@@ -146,6 +152,24 @@ export const USER_IDS_CONFIG = {
146
152
  }
147
153
  },
148
154
 
155
+ // bidswitchId
156
+ 'bidswitch': {
157
+ source: 'bidswitch.net',
158
+ atype: 3,
159
+ getValue: function(data) {
160
+ return data.id;
161
+ }
162
+ },
163
+
164
+ // medianetId
165
+ 'medianet': {
166
+ source: 'media.net',
167
+ atype: 3,
168
+ getValue: function(data) {
169
+ return data.id;
170
+ }
171
+ },
172
+
149
173
  // britepoolId
150
174
  'britepoolid': {
151
175
  source: 'britepool.com',
@@ -105,6 +105,22 @@ userIdAsEids = [
105
105
  segments: ['s1', 's2']
106
106
  }
107
107
  },
108
+
109
+ {
110
+ source: 'bidswitch.net',
111
+ uids: [{
112
+ id: 'some-random-id-value',
113
+ atype: 3
114
+ }]
115
+ },
116
+
117
+ {
118
+ source: 'media.net',
119
+ uids: [{
120
+ id: 'some-random-id-value',
121
+ atype: 3
122
+ }]
123
+ },
108
124
 
109
125
  {
110
126
  source: 'merkleinc.com',
@@ -80,7 +80,7 @@ export const spec = {
80
80
  domain: parseUrl(page).hostname,
81
81
  page: page,
82
82
  },
83
- tmax: bidderRequest.timeout || config.getConfig('bidderTimeout') || 500,
83
+ tmax: bidderRequest.timeout,
84
84
  imp
85
85
  };
86
86
 
@@ -10,11 +10,12 @@ const BIDDER_CODE = 'vidoomy';
10
10
  const GVLID = 380;
11
11
 
12
12
  const COOKIE_SYNC_FALLBACK_URLS = [
13
- 'https://x.bidswitch.net/sync?ssp=vidoomy',
14
- 'https://ib.adnxs.com/getuid?https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dadnxs%26gdpr%3D{{GDPR}}%26gdpr_consent%3D{{GDPR_CONSENT}}%26uid%3D%24UID',
13
+ 'https://x.bidswitch.net/sync?ssp=vidoomy&gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&us_privacy=',
15
14
  'https://pixel-sync.sitescout.com/dmp/pixelSync?nid=120&gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&redir=https%3A%2F%2Fa.vidoomy.com%2Fapi%2Frtbserver%2Fcookie%3Fi%3DCEN%26uid%3D%7BuserId%7D',
16
15
  'https://cm.adform.net/cookie?redirect_url=https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dadf%26gdpr%3D{{GDPR}}%26gdpr_consent%3D{{GDPR_CONSENT}}%26uid%3D%24UID',
17
- 'https://ups.analytics.yahoo.com/ups/58531/occ?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}'
16
+ 'https://pixel.rubiconproject.com/exchange/sync.php?p=pbs-vidoomy&gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&us_privacy=',
17
+ 'https://rtb.openx.net/sync/prebid?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&r=https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dopenx%26uid%3D$%7BUID%7D',
18
+ 'https://ads.pubmatic.com/AdServer/js/user_sync.html?gdpr={{GDPR}}&gdpr_consent={{GDPR_CONSENT}}&us_privacy=&predirect=https%3A%2F%2Fa-prebid.vidoomy.com%2Fsetuid%3Fbidder%3Dpubmatic%26gdpr%3D{{GDPR}}%26gdpr_consent%3D{{GDPR_CONSENT}}%26uid%3D'
18
19
  ];
19
20
 
20
21
  const isBidRequestValid = bid => {
@@ -74,6 +75,26 @@ function serializeSupplyChainObj(schainObj) {
74
75
  return serializedSchain;
75
76
  }
76
77
 
78
+ /**
79
+ * Gets highest floor between getFloor.floor and params.bidfloor
80
+ * @param {Object} bid
81
+ * @param {Object} mediaType
82
+ * @param {Array} sizes
83
+ * @param {Number} bidfloor
84
+ * @returns {Number} floor
85
+ */
86
+ function getBidFloor(bid, mediaType, sizes, bidfloor) {
87
+ let floor = bidfloor;
88
+ var size = sizes && sizes.length > 0 ? sizes[0] : '*';
89
+ if (typeof bid.getFloor === 'function') {
90
+ const floorInfo = bid.getFloor({currency: 'USD', mediaType, size});
91
+ if (typeof floorInfo === 'object' && floorInfo.currency === 'USD' && !isNaN(parseFloat(floorInfo.floor))) {
92
+ floor = Math.max(bidfloor, parseFloat(floorInfo.floor));
93
+ }
94
+ }
95
+ return floor;
96
+ }
97
+
77
98
  const isBidResponseValid = bid => {
78
99
  if (!bid || !bid.requestId || !bid.cpm || !bid.ttl || !bid.currency) {
79
100
  return false;
@@ -106,6 +127,13 @@ const buildRequests = (validBidRequests, bidderRequest) => {
106
127
 
107
128
  const videoContext = deepAccess(bid, 'mediaTypes.video.context');
108
129
  const bidfloor = deepAccess(bid, `params.bidfloor`, 0);
130
+ const floor = getBidFloor(bid, adType, sizes, bidfloor);
131
+
132
+ let eids;
133
+ const userEids = deepAccess(bid, 'userIdAsEids');
134
+ if (Array.isArray(userEids) && userEids.length > 0) {
135
+ eids = JSON.stringify(userEids) || '';
136
+ }
109
137
 
110
138
  const queryParams = {
111
139
  id: bid.params.id,
@@ -120,7 +148,8 @@ const buildRequests = (validBidRequests, bidderRequest) => {
120
148
  pid: bid.params.pid,
121
149
  requestId: bid.bidId,
122
150
  schain: serializeSupplyChainObj(bid.schain) || '',
123
- bidfloor,
151
+ eids: eids || '',
152
+ bidfloor: floor,
124
153
  d: getDomainWithoutSubdomain(hostname), // 'vidoomy.com',
125
154
  // TODO: does the fallback make sense here?
126
155
  sp: encodeURIComponent(bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation),
@@ -155,7 +155,7 @@ export const spec = {
155
155
  coppa: config.getConfig('coppa') === true ? 1 : 0,
156
156
  ccpa: bidderRequest.uspConsent || undefined,
157
157
  gdpr: bidderRequest.gdprConsent || undefined,
158
- tmax: config.getConfig('bidderTimeout')
158
+ tmax: bidderRequest.timeout
159
159
  };
160
160
 
161
161
  const len = validBidRequests.length;
@@ -46,7 +46,7 @@ export const spec = {
46
46
  coppa = 1;
47
47
  }
48
48
 
49
- tmax = config.getConfig('bidderTimeout');
49
+ tmax = bid.timeout;
50
50
 
51
51
  const params = {
52
52
  prebidJS: 1,