prebid.js 7.26.0 → 7.28.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 (334) hide show
  1. package/.github/workflows/issue_tracker.yml +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/33acrossIdSystem.js +1 -1
  4. package/dist/adWMGAnalyticsAdapter.js +1 -1
  5. package/dist/adagioAnalyticsAdapter.js +1 -1
  6. package/dist/adagioBidAdapter.js +1 -1
  7. package/dist/adbookpspBidAdapter.js +1 -1
  8. package/dist/adgenerationBidAdapter.js +1 -1
  9. package/dist/adhashBidAdapter.js +1 -1
  10. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  11. package/dist/adlooxAdServerVideo.js +1 -1
  12. package/dist/adlooxAnalyticsAdapter.js +1 -1
  13. package/dist/adlooxRtdProvider.js +1 -1
  14. package/dist/admaticBidAdapter.js +1 -1
  15. package/dist/admixerBidAdapter.js +1 -1
  16. package/dist/adomikAnalyticsAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adtrgtmeBidAdapter.js +1 -1
  19. package/dist/adxcgAnalyticsAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  22. package/dist/aidemBidAdapter.js +1 -0
  23. package/dist/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/analyticsAdapter.js +1 -1
  27. package/dist/appierAnalyticsAdapter.js +1 -1
  28. package/dist/appnexusBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/atsAnalyticsAdapter.js +1 -1
  31. package/dist/axonixBidAdapter.js +1 -1
  32. package/dist/bidViewability.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bridgewellBidAdapter.js +1 -1
  37. package/dist/brightMountainMediaBidAdapter.js +1 -1
  38. package/dist/browsiRtdProvider.js +1 -1
  39. package/dist/bucksenseBidAdapter.js +1 -1
  40. package/dist/byDataAnalyticsAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/concertAnalyticsAdapter.js +1 -1
  44. package/dist/concertBidAdapter.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consentManagement.js +1 -1
  47. package/dist/consentManagementUsp.js +1 -1
  48. package/dist/consumableBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/datablocksAnalyticsAdapter.js +1 -1
  54. package/dist/dependencies.json +6 -0
  55. package/dist/dfpAdServerVideo.js +1 -1
  56. package/dist/discoveryBidAdapter.js +1 -1
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/eplanningAnalyticsAdapter.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/fintezaAnalyticsAdapter.js +1 -1
  62. package/dist/fluctBidAdapter.js +1 -1
  63. package/dist/ftrackIdSystem.js +1 -1
  64. package/dist/gdprEnforcement.js +1 -1
  65. package/dist/genericAnalyticsAdapter.js +1 -0
  66. package/dist/geoedgeRtdProvider.js +1 -1
  67. package/dist/glimpseBidAdapter.js +1 -1
  68. package/dist/glomexBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/googleAnalyticsAdapter.js +1 -1
  72. package/dist/gravitoIdSystem.js +1 -1
  73. package/dist/gridBidAdapter.js +1 -1
  74. package/dist/gridNMBidAdapter.js +1 -1
  75. package/dist/growthCodeAnalyticsAdapter.js +1 -0
  76. package/dist/gumgumBidAdapter.js +1 -1
  77. package/dist/h12mediaBidAdapter.js +1 -1
  78. package/dist/hadronAnalyticsAdapter.js +1 -1
  79. package/dist/id5AnalyticsAdapter.js +1 -1
  80. package/dist/id5IdSystem.js +1 -1
  81. package/dist/impactifyBidAdapter.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/inmarBidAdapter.js +1 -1
  84. package/dist/insticatorBidAdapter.js +1 -1
  85. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  86. package/dist/ixBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/jwplayerRtdProvider.js +1 -1
  89. package/dist/kargoAnalyticsAdapter.js +1 -1
  90. package/dist/kargoBidAdapter.js +1 -1
  91. package/dist/kinessoIdSystem.js +1 -1
  92. package/dist/konduitAnalyticsAdapter.js +1 -1
  93. package/dist/kueezBidAdapter.js +1 -1
  94. package/dist/kueezRtbBidAdapter.js +1 -1
  95. package/dist/lassoBidAdapter.js +1 -1
  96. package/dist/lifestreetBidAdapter.js +1 -1
  97. package/dist/limelightDigitalBidAdapter.js +1 -1
  98. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  99. package/dist/liveIntentIdSystem.js +1 -1
  100. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  101. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  102. package/dist/logicadBidAdapter.js +1 -1
  103. package/dist/loglyliftBidAdapter.js +1 -1
  104. package/dist/lotamePanoramaIdSystem.js +1 -1
  105. package/dist/magniteAnalyticsAdapter.js +1 -1
  106. package/dist/malltvAnalyticsAdapter.js +1 -1
  107. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  108. package/dist/marsmediaBidAdapter.js +1 -1
  109. package/dist/mediafuseBidAdapter.js +1 -1
  110. package/dist/mediagoBidAdapter.js +1 -1
  111. package/dist/medianetAnalyticsAdapter.js +1 -1
  112. package/dist/mediasquareBidAdapter.js +1 -1
  113. package/dist/mgidBidAdapter.js +1 -1
  114. package/dist/minutemediaBidAdapter.js +1 -1
  115. package/dist/nexx360BidAdapter.js +1 -1
  116. package/dist/not-for-prod/prebid.js +206 -202
  117. package/dist/oguryBidAdapter.js +1 -1
  118. package/dist/onetagBidAdapter.js +1 -1
  119. package/dist/ooloAnalyticsAdapter.js +1 -1
  120. package/dist/openxAnalyticsAdapter.js +1 -1
  121. package/dist/optimonAnalyticsAdapter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/parrableIdSystem.js +1 -1
  124. package/dist/pbsExtensions.js +1 -1
  125. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/prebid-core.js +2 -2
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  130. package/dist/pubCommonId.js +1 -1
  131. package/dist/pubProvidedIdSystem.js +1 -1
  132. package/dist/publinkIdSystem.js +1 -1
  133. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  134. package/dist/pubmaticBidAdapter.js +1 -1
  135. package/dist/pubperfAnalyticsAdapter.js +1 -1
  136. package/dist/pubstackAnalyticsAdapter.js +1 -1
  137. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  138. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  139. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  140. package/dist/pxyzBidAdapter.js +1 -1
  141. package/dist/quantcastBidAdapter.js +1 -1
  142. package/dist/quantcastIdSystem.js +1 -1
  143. package/dist/rasBidAdapter.js +1 -1
  144. package/dist/readpeakBidAdapter.js +1 -1
  145. package/dist/realvuAnalyticsAdapter.js +1 -1
  146. package/dist/redtramBidAdapter.js +1 -0
  147. package/dist/relaidoBidAdapter.js +1 -1
  148. package/dist/relevantAnalyticsAdapter.js +1 -1
  149. package/dist/rhythmoneBidAdapter.js +1 -1
  150. package/dist/riseBidAdapter.js +1 -1
  151. package/dist/rivrAnalyticsAdapter.js +1 -1
  152. package/dist/roxotAnalyticsAdapter.js +1 -1
  153. package/dist/rtbhouseBidAdapter.js +1 -1
  154. package/dist/rtdModule.js +1 -1
  155. package/dist/rubiconAnalyticsAdapter.js +1 -1
  156. package/dist/rubiconBidAdapter.js +1 -1
  157. package/dist/s2sTesting.js +1 -1
  158. package/dist/scaleableAnalyticsAdapter.js +1 -1
  159. package/dist/schain.js +1 -1
  160. package/dist/seedingAllianceBidAdapter.js +1 -1
  161. package/dist/seedtagBidAdapter.js +1 -1
  162. package/dist/sharedIdSystem.js +1 -1
  163. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  164. package/dist/sharethroughBidAdapter.js +1 -1
  165. package/dist/shinezBidAdapter.js +1 -1
  166. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  167. package/dist/smaatoBidAdapter.js +1 -1
  168. package/dist/smartadserverBidAdapter.js +1 -1
  169. package/dist/smartxBidAdapter.js +1 -1
  170. package/dist/smilewantedBidAdapter.js +1 -1
  171. package/dist/sonobiAnalyticsAdapter.js +1 -1
  172. package/dist/sonobiBidAdapter.js +1 -1
  173. package/dist/sovrnAnalyticsAdapter.js +1 -1
  174. package/dist/sovrnBidAdapter.js +1 -1
  175. package/dist/sspBCBidAdapter.js +1 -1
  176. package/dist/staqAnalyticsAdapter.js +1 -1
  177. package/dist/sublimeBidAdapter.js +1 -1
  178. package/dist/synacormediaBidAdapter.js +1 -1
  179. package/dist/taboolaBidAdapter.js +1 -1
  180. package/dist/tapadIdSystem.js +1 -1
  181. package/dist/targetVideoBidAdapter.js +1 -1
  182. package/dist/teadsBidAdapter.js +1 -1
  183. package/dist/teadsIdSystem.js +1 -1
  184. package/dist/terceptAnalyticsAdapter.js +1 -1
  185. package/dist/trionBidAdapter.js +1 -1
  186. package/dist/tripleliftBidAdapter.js +1 -1
  187. package/dist/ttdBidAdapter.js +1 -1
  188. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  189. package/dist/underdogmediaBidAdapter.js +1 -1
  190. package/dist/undertoneBidAdapter.js +1 -1
  191. package/dist/userId.js +1 -1
  192. package/dist/vidazooBidAdapter.js +1 -1
  193. package/dist/videobyteBidAdapter.js +1 -1
  194. package/dist/visxBidAdapter.js +1 -1
  195. package/dist/vuukleBidAdapter.js +1 -1
  196. package/dist/weboramaRtdProvider.js +1 -1
  197. package/dist/widespaceBidAdapter.js +1 -1
  198. package/dist/winrBidAdapter.js +1 -1
  199. package/dist/yahoosspBidAdapter.js +1 -1
  200. package/dist/yandexBidAdapter.js +1 -1
  201. package/dist/yieldlabBidAdapter.js +1 -1
  202. package/dist/yieldliftBidAdapter.js +1 -1
  203. package/dist/yieldmoBidAdapter.js +1 -1
  204. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  205. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  206. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  207. package/integrationExamples/gpt/growthcode.html +134 -0
  208. package/libraries/analyticsAdapter/AnalyticsAdapter.js +95 -102
  209. package/libraries/ortb2.5StrictTranslator/dsl.js +54 -0
  210. package/libraries/ortb2.5StrictTranslator/spec.js +81 -0
  211. package/libraries/ortb2.5StrictTranslator/translator.js +37 -0
  212. package/libraries/ortb2.5Translator/translator.js +82 -0
  213. package/modules/33acrossIdSystem.js +3 -0
  214. package/modules/adhashBidAdapter.js +115 -30
  215. package/modules/adhashBidAdapter.md +1 -3
  216. package/modules/admaticBidAdapter.js +10 -1
  217. package/modules/admixerBidAdapter.js +1 -1
  218. package/modules/aidemBidAdapter.js +492 -0
  219. package/modules/aidemBidAdapter.md +187 -0
  220. package/modules/browsiRtdProvider.js +6 -4
  221. package/modules/bucksenseBidAdapter.js +1 -1
  222. package/modules/criteoBidAdapter.js +3 -3
  223. package/modules/discoveryBidAdapter.js +3 -0
  224. package/modules/eplanningBidAdapter.js +2 -6
  225. package/modules/fluctBidAdapter.js +5 -0
  226. package/modules/gdprEnforcement.js +26 -24
  227. package/modules/genericAnalyticsAdapter.js +157 -0
  228. package/modules/geoedgeRtdProvider.js +22 -0
  229. package/modules/glomexBidAdapter.js +2 -0
  230. package/modules/gravitoIdSystem.js +3 -4
  231. package/modules/gridBidAdapter.js +1 -1
  232. package/modules/gridNMBidAdapter.js +1 -1
  233. package/modules/growthCodeAnalyticsAdapter.js +176 -0
  234. package/modules/growthCodeAnalyticsAdapter.md +41 -0
  235. package/modules/impactifyBidAdapter.js +19 -1
  236. package/modules/jwplayerRtdProvider.js +1 -2
  237. package/modules/kargoBidAdapter.js +1 -1
  238. package/modules/lassoBidAdapter.js +8 -4
  239. package/modules/limelightDigitalBidAdapter.js +1 -1
  240. package/modules/liveIntentIdSystem.js +1 -2
  241. package/modules/mediagoBidAdapter.js +2 -1
  242. package/modules/minutemediaBidAdapter.md +3 -3
  243. package/modules/nexx360BidAdapter.js +264 -138
  244. package/modules/openxBidAdapter.md +15 -14
  245. package/modules/pubCommonId.js +2 -1
  246. package/modules/pubProvidedIdSystem.js +2 -0
  247. package/modules/rasBidAdapter.js +8 -3
  248. package/modules/rasBidAdapter.md +16 -15
  249. package/modules/redtramBidAdapter.js +155 -0
  250. package/modules/redtramBidAdapter.md +33 -0
  251. package/modules/riseBidAdapter.js +15 -0
  252. package/modules/riseBidAdapter.md +3 -3
  253. package/modules/rtbhouseBidAdapter.js +90 -29
  254. package/modules/rubiconBidAdapter.js +2 -1
  255. package/modules/seedtagBidAdapter.js +67 -56
  256. package/modules/seedtagBidAdapter.md +60 -0
  257. package/modules/sharedIdSystem.js +3 -1
  258. package/modules/smartxBidAdapter.js +1 -1
  259. package/modules/smnBidAdapter.md +52 -0
  260. package/modules/taboolaBidAdapter.js +20 -7
  261. package/modules/tripleliftBidAdapter.js +1 -1
  262. package/modules/ttdBidAdapter.js +4 -0
  263. package/modules/vidazooBidAdapter.js +31 -8
  264. package/modules/yandexBidAdapter.js +85 -19
  265. package/modules/yandexBidAdapter.md +7 -7
  266. package/modules/yieldlabBidAdapter.js +10 -4
  267. package/modules/yieldliftBidAdapter.js +3 -3
  268. package/package.json +2 -2
  269. package/src/auction.js +30 -4
  270. package/src/consentHandler.js +8 -0
  271. package/src/constants.json +2 -1
  272. package/src/events.js +4 -0
  273. package/src/native.js +31 -20
  274. package/src/refererDetection.js +6 -1
  275. package/src/storageManager.js +6 -3
  276. package/test/helpers/analytics.js +34 -0
  277. package/test/helpers/refererDetectionHelper.js +88 -0
  278. package/test/mocks/analyticsStub.js +3 -1
  279. package/test/spec/AnalyticsAdapter_spec.js +119 -116
  280. package/test/spec/auctionmanager_spec.js +119 -1
  281. package/test/spec/modules/33acrossIdSystem_spec.js +4 -1
  282. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +10 -8
  283. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +18 -25
  284. package/test/spec/modules/adhashBidAdapter_spec.js +65 -11
  285. package/test/spec/modules/aidemBidAdapter_spec.js +664 -0
  286. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +0 -2
  287. package/test/spec/modules/browsiRtdProvider_spec.js +2 -1
  288. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -4
  289. package/test/spec/modules/enrichmentFpdModule_spec.js +3 -2
  290. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +0 -3
  291. package/test/spec/modules/eplanningBidAdapter_spec.js +4 -4
  292. package/test/spec/modules/fluctBidAdapter_spec.js +37 -1
  293. package/test/spec/modules/fpdModule_spec.js +1 -1
  294. package/test/spec/modules/gdprEnforcement_spec.js +115 -68
  295. package/test/spec/modules/genericAnalyticsAdapter_spec.js +284 -0
  296. package/test/spec/modules/geoedgeRtdProvider_spec.js +15 -0
  297. package/test/spec/modules/glomexBidAdapter_spec.js +4 -0
  298. package/test/spec/modules/gravitoIdSystem_spec.js +1 -1
  299. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +70 -0
  300. package/test/spec/modules/impactifyBidAdapter_spec.js +13 -0
  301. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +17 -27
  302. package/test/spec/modules/jwplayerRtdProvider_spec.js +3 -3
  303. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +0 -2
  304. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -6
  305. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +7 -1
  306. package/test/spec/modules/nexx360BidAdapter_spec.js +441 -221
  307. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +3 -11
  308. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -11
  309. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +3 -12
  310. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +6 -19
  311. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +3 -17
  312. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +13 -19
  313. package/test/spec/modules/rasBidAdapter_spec.js +5 -1
  314. package/test/spec/modules/redtramBidAdapter_spec.js +256 -0
  315. package/test/spec/modules/riseBidAdapter_spec.js +24 -0
  316. package/test/spec/modules/rtbhouseBidAdapter_spec.js +79 -0
  317. package/test/spec/modules/seedtagBidAdapter_spec.js +65 -92
  318. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +4 -8
  319. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +6 -18
  320. package/test/spec/modules/taboolaBidAdapter_spec.js +39 -0
  321. package/test/spec/modules/tripleliftBidAdapter_spec.js +3 -10
  322. package/test/spec/modules/ttdBidAdapter_spec.js +50 -9
  323. package/test/spec/modules/vidazooBidAdapter_spec.js +173 -27
  324. package/test/spec/modules/yandexBidAdapter_spec.js +22 -13
  325. package/test/spec/modules/yieldlabBidAdapter_spec.js +49 -20
  326. package/test/spec/modules/yieldliftBidAdapter_spec.js +1 -1
  327. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -2
  328. package/test/spec/native_spec.js +68 -56
  329. package/test/spec/ortb2.5StrictTranslator/dsl_spec.js +137 -0
  330. package/test/spec/ortb2.5StrictTranslator/spec_spec.js +358 -0
  331. package/test/spec/ortb2.5StrictTranslator/translator_spec.js +16 -0
  332. package/test/spec/ortb2.5Translator/translator_spec.js +64 -0
  333. package/test/spec/refererDetection_spec.js +46 -95
  334. package/test/spec/unit/core/storageManager_spec.js +2 -1
@@ -15,23 +15,24 @@ Publishers are welcome to test the other adapter and give feedback. Please note
15
15
  # Bid Parameters
16
16
  ## Banner
17
17
 
18
- | Name | Scope | Type | Description | Example
19
- | ---- | ----- | ---- | ----------- | -------
20
- | `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"
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 | 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
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
26
 
27
- ## Video
27
+ ** platform is deprecated. Please use delDomain instead. If you have any questions please contact your representative.
28
28
 
29
- | Name | Scope | Type | Description | Example
30
- | ---- | ----- | ---- | ----------- | -------
31
- | `unit` | required | String | OpenX ad unit ID provided by your OpenX representative. | "1611023122"
32
- | `delDomain` | required | String | OpenX delivery domain provided by your OpenX representative. | "PUBLISHER-d.openx.net"
33
- | `openrtb` | optional | OpenRTB Impression | An OpenRtb Impression with Video subtype properties | `{ imp: [{ video: {mimes: ['video/x-ms-wmv, video/mp4']} }] }`
29
+ ## Video
34
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']} }] }` |
35
36
 
36
37
  # Example
37
38
  ```javascript
@@ -9,8 +9,9 @@ import * as events from '../src/events.js';
9
9
  import CONSTANTS from '../src/constants.json';
10
10
  import { getStorageManager } from '../src/storageManager.js';
11
11
  import {timedAuctionHook} from '../src/utils/perfMetrics.js';
12
+ import {VENDORLESS_GVLID} from '../src/consentHandler.js';
12
13
 
13
- const storage = getStorageManager({moduleName: 'pubCommonId'});
14
+ const storage = getStorageManager({moduleName: 'pubCommonId', gvlid: VENDORLESS_GVLID});
14
15
 
15
16
  const ID_NAME = '_pubcid';
16
17
  const OPTOUT_NAME = '_pubcid_optout';
@@ -7,6 +7,7 @@
7
7
 
8
8
  import {submodule} from '../src/hook.js';
9
9
  import { logInfo, isArray } from '../src/utils.js';
10
+ import {VENDORLESS_GVLID} from '../src/consentHandler.js';
10
11
 
11
12
  const MODULE_NAME = 'pubProvidedId';
12
13
 
@@ -18,6 +19,7 @@ export const pubProvidedIdSubmodule = {
18
19
  * @type {string}
19
20
  */
20
21
  name: MODULE_NAME,
22
+ gvlid: VENDORLESS_GVLID,
21
23
 
22
24
  /**
23
25
  * decode the stored id value for passing to bid request
@@ -1,4 +1,3 @@
1
- import * as utils from '../src/utils.js';
2
1
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
2
  import { BANNER } from '../src/mediaTypes.js';
4
3
  import { isEmpty, getAdUnitSizes, parseSizesInput, deepAccess } from '../src/utils.js';
@@ -12,9 +11,15 @@ const getEndpoint = (network) => {
12
11
 
13
12
  function parseParams(params, bidderRequest) {
14
13
  const newParams = {};
14
+ if (params.customParams && typeof params.customParams === 'object') {
15
+ for (const param in params.customParams) {
16
+ if (params.customParams.hasOwnProperty(param)) {
17
+ newParams[param] = params.customParams[param];
18
+ }
19
+ }
20
+ }
15
21
  const du = deepAccess(bidderRequest, 'refererInfo.page');
16
22
  const dr = deepAccess(bidderRequest, 'refererInfo.ref');
17
-
18
23
  if (du) {
19
24
  newParams.du = du;
20
25
  }
@@ -93,7 +98,7 @@ const getSlots = (bidRequests) => {
93
98
  const batchSize = bidRequests.length;
94
99
  for (let i = 0; i < batchSize; i++) {
95
100
  const adunit = bidRequests[i];
96
- const slotSequence = utils.deepAccess(adunit, 'params.slotSequence');
101
+ const slotSequence = deepAccess(adunit, 'params.slotSequence');
97
102
 
98
103
  const sizes = parseSizesInput(getAdUnitSizes(adunit)).join(',');
99
104
 
@@ -34,18 +34,19 @@ var adUnits = [{
34
34
 
35
35
  # Parameters
36
36
 
37
- | Name | Scope | Type | Description | Example
38
- | --- | --- | --- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---
39
- | network | required | String | Specific identifier provided by RAS | `"4178463"`
40
- | site | required | String | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `"example_com"`
41
- | area | required | String | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `"sport"`
42
- | slot | required | String | Ad unit placement name (case-insensitive) provided by RAS | `"slot"`
43
- | slotSequence | optional | Number | Ad unit sequence position provided by RAS | `1`
44
- | pageContext | optional | Object | Web page context data | `{}`
45
- | pageContext.dr | optional | String | Document referrer URL address | `"https://example.com/"`
46
- | pageContext.du | optional | String | Document URL address | `"https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06"`
47
- | pageContext.dv | optional | String | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `"example_com/sport/football"`
48
- | pageContext.keyWords | optional | String[] | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `["euro", "lewandowski"]`
49
- | pageContext.keyValues | optional | Object | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > [ ] & @` | `{}`
50
- | pageContext.keyValues.ci | optional | String | Content unique identifier | `"932016a5-02fc-4d5c-b643-fafc2f270f06"`
51
- | pageContext.keyValues.adunit | optional | String | Ad unit name | `"example_com/sport"`
37
+ | Name | Scope | Type | Description | Example |
38
+ |------------------------------|----------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
39
+ | network | required | String | Specific identifier provided by RAS | `"4178463"` |
40
+ | site | required | String | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `"example_com"` |
41
+ | area | required | String | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `"sport"` |
42
+ | slot | required | String | Ad unit placement name (case-insensitive) provided by RAS | `"slot"` |
43
+ | slotSequence | optional | Number | Ad unit sequence position provided by RAS | `1` |
44
+ | pageContext | optional | Object | Web page context data | `{}` |
45
+ | pageContext.dr | optional | String | Document referrer URL address | `"https://example.com/"` |
46
+ | pageContext.du | optional | String | Document URL address | `"https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06"` |
47
+ | pageContext.dv | optional | String | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `"example_com/sport/football"` |
48
+ | pageContext.keyWords | optional | String[] | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `["euro", "lewandowski"]` |
49
+ | pageContext.keyValues | optional | Object | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > [ ] & @` | `{}` |
50
+ | pageContext.keyValues.ci | optional | String | Content unique identifier | `"932016a5-02fc-4d5c-b643-fafc2f270f06"` |
51
+ | pageContext.keyValues.adunit | optional | String | Ad unit name | `"example_com/sport"` |
52
+ | customParams | optional | Object | Custom request params | `{}` |
@@ -0,0 +1,155 @@
1
+ import {
2
+ isFn,
3
+ isStr,
4
+ deepAccess,
5
+ getWindowTop,
6
+ triggerPixel
7
+ } from '../src/utils.js';
8
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
9
+ import { BANNER } from '../src/mediaTypes.js';
10
+ import { config } from '../src/config.js';
11
+
12
+ const BIDDER_CODE = 'redtram';
13
+ const AD_URL = 'https://prebid.redtram.com/pbjs';
14
+ const SYNC_URL = 'https://prebid.redtram.com/sync';
15
+
16
+ function isBidResponseValid(bid) {
17
+ if (!bid.requestId || !bid.cpm || !bid.creativeId ||
18
+ !bid.ttl || !bid.currency || !bid.meta) {
19
+ return false;
20
+ }
21
+
22
+ switch (bid.mediaType) {
23
+ case BANNER:
24
+ return Boolean(bid.width && bid.height && bid.ad);
25
+ default:
26
+ return false;
27
+ }
28
+ }
29
+
30
+ function getBidFloor(bid) {
31
+ if (!isFn(bid.getFloor)) {
32
+ return deepAccess(bid, 'params.bidFloor', 0);
33
+ }
34
+
35
+ try {
36
+ const bidFloor = bid.getFloor({
37
+ currency: 'USD',
38
+ mediaType: '*',
39
+ size: '*',
40
+ });
41
+ return bidFloor.floor;
42
+ } catch (_) {
43
+ return 0
44
+ }
45
+ }
46
+
47
+ export const spec = {
48
+ code: BIDDER_CODE,
49
+ supportedMediaTypes: [BANNER],
50
+
51
+ isBidRequestValid: (bid) => {
52
+ return Boolean(bid.bidId && bid.params && bid.params.placementId);
53
+ },
54
+
55
+ buildRequests: (validBidRequests = [], bidderRequest) => {
56
+ const winTop = getWindowTop();
57
+ const location = winTop.location;
58
+ const placements = [];
59
+
60
+ const request = {
61
+ deviceWidth: winTop.screen.width,
62
+ deviceHeight: winTop.screen.height,
63
+ language: (navigator && navigator.language) ? navigator.language.split('-')[0] : '',
64
+ host: location.host,
65
+ page: location.pathname,
66
+ placements: placements
67
+ };
68
+
69
+ if (bidderRequest) {
70
+ if (bidderRequest.uspConsent) {
71
+ request.ccpa = bidderRequest.uspConsent;
72
+ }
73
+ if (bidderRequest.gdprConsent) {
74
+ request.gdpr = bidderRequest.gdprConsent;
75
+ }
76
+ }
77
+
78
+ const len = validBidRequests.length;
79
+ for (let i = 0; i < len; i++) {
80
+ const bid = validBidRequests[i];
81
+ const placement = {
82
+ placementId: bid.params.placementId,
83
+ bidId: bid.bidId,
84
+ schain: bid.schain || {},
85
+ bidfloor: getBidFloor(bid)
86
+ };
87
+
88
+ if (typeof bid.userId !== 'undefined') {
89
+ placement.userId = bid.userId;
90
+ }
91
+
92
+ const mediaType = bid.mediaTypes;
93
+
94
+ if (mediaType && mediaType[BANNER] && mediaType[BANNER].sizes) {
95
+ placement.sizes = mediaType[BANNER].sizes;
96
+ placement.adFormat = BANNER;
97
+ }
98
+
99
+ placements.push(placement);
100
+ }
101
+
102
+ return {
103
+ method: 'POST',
104
+ url: AD_URL,
105
+ data: request
106
+ };
107
+ },
108
+
109
+ interpretResponse: (serverResponse) => {
110
+ let response = [];
111
+ for (let i = 0; i < serverResponse.body.length; i++) {
112
+ let resItem = serverResponse.body[i];
113
+ if (isBidResponseValid(resItem)) {
114
+ const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
115
+ resItem.meta = { ...resItem.meta, advertiserDomains };
116
+
117
+ response.push(resItem);
118
+ }
119
+ }
120
+ return response;
121
+ },
122
+
123
+ getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
124
+ let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
125
+ let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
126
+ if (gdprConsent && gdprConsent.consentString) {
127
+ if (typeof gdprConsent.gdprApplies === 'boolean') {
128
+ syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
129
+ } else {
130
+ syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
131
+ }
132
+ }
133
+ if (uspConsent && uspConsent.consentString) {
134
+ syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
135
+ }
136
+
137
+ const coppa = config.getConfig('coppa') ? 1 : 0;
138
+ syncUrl += `&coppa=${coppa}`;
139
+
140
+ return [{
141
+ type: syncType,
142
+ url: syncUrl
143
+ }];
144
+ },
145
+
146
+ onBidWon: (bid) => {
147
+ const cpm = deepAccess(bid, 'adserverTargeting.hb_pb') || '';
148
+ if (isStr(bid.nurl) && bid.nurl !== '') {
149
+ bid.nurl = bid.nurl.replace(/\${AUCTION_PRICE}/, cpm);
150
+ triggerPixel(bid.nurl);
151
+ }
152
+ }
153
+ };
154
+
155
+ registerBidder(spec);
@@ -0,0 +1,33 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: redtram Bidder Adapter
5
+ Module Type: redtram Bidder Adapter
6
+ Maintainer: support@redtram.com
7
+ ```
8
+
9
+ # Description
10
+
11
+ Module that connects to redtram demand sources
12
+
13
+ # Test Parameters
14
+ ```
15
+ var adUnits = [
16
+ {
17
+ code: 'div-prebid',
18
+ mediaTypes:{
19
+ banner: {
20
+ sizes: [[300, 250]],
21
+ }
22
+ },
23
+ bids:[
24
+ {
25
+ bidder: 'redtram',
26
+ params: {
27
+ placementId: '23611' //test, please replace after test
28
+ }
29
+ }
30
+ ]
31
+ },
32
+ ];
33
+ ```
@@ -309,6 +309,16 @@ function generateBidParameters(bid, bidderRequest) {
309
309
  bidObject.placementId = placementId;
310
310
  }
311
311
 
312
+ const mimes = deepAccess(bid, `mediaTypes.${mediaType}.mimes`);
313
+ if (mimes) {
314
+ bidObject.mimes = mimes;
315
+ }
316
+
317
+ const api = deepAccess(bid, `mediaTypes.${mediaType}.api`);
318
+ if (api) {
319
+ bidObject.api = api;
320
+ }
321
+
312
322
  if (mediaType === VIDEO) {
313
323
  const playbackMethod = deepAccess(bid, `mediaTypes.video.playbackmethod`);
314
324
  let playbackMethodValue;
@@ -349,6 +359,11 @@ function generateBidParameters(bid, bidderRequest) {
349
359
  if (linearity) {
350
360
  bidObject.linearity = linearity;
351
361
  }
362
+
363
+ const protocols = deepAccess(bid, `mediaTypes.video.protocols`);
364
+ if (protocols) {
365
+ bidObject.protocols = protocols;
366
+ }
352
367
  }
353
368
 
354
369
  return bidObject;
@@ -20,7 +20,7 @@ The adapter supports Video(instream).
20
20
 
21
21
  | Name | Scope | Type | Description | Example
22
22
  | ---- | ----- | ---- | ----------- | -------
23
- | `org` | required | String | Rise publisher Id provided by your Rise representative | "56f91cd4d3e3660002000033"
23
+ | `org` | required | String | Rise publisher Id provided by your Rise representative | "1234567890abcdef12345678"
24
24
  | `floorPrice` | optional | Number | Minimum price in USD. Misuse of this parameter can impact revenue | 2.00
25
25
  | `placementId` | optional | String | A unique placement identifier | "12345678"
26
26
  | `testMode` | optional | Boolean | This activates the test mode | false
@@ -41,10 +41,10 @@ var adUnits = [
41
41
  bids: [{
42
42
  bidder: 'rise',
43
43
  params: {
44
- org: '56f91cd4d3e3660002000033', // Required
44
+ org: '1234567890abcdef12345678', // Required
45
45
  floorPrice: 2.00, // Optional
46
46
  placementId: '12345678', // Optional
47
- testMode: false // Optional,
47
+ testMode: false, // Optional,
48
48
  rtbDomain: "www.test.com" //Optional
49
49
  }
50
50
  }]
@@ -1,13 +1,15 @@
1
- import {deepAccess, isArray, logError} from '../src/utils.js';
1
+ import {deepAccess, mergeDeep, isArray, logError, logInfo} from '../src/utils.js';
2
2
  import { getOrigin } from '../libraries/getOrigin/index.js';
3
3
  import {BANNER, NATIVE} from '../src/mediaTypes.js';
4
4
  import {registerBidder} from '../src/adapters/bidderFactory.js';
5
5
  import {includes} from '../src/polyfill.js';
6
6
  import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
7
+ import { config } from '../src/config.js';
7
8
 
8
9
  const BIDDER_CODE = 'rtbhouse';
9
10
  const REGIONS = ['prebid-eu', 'prebid-us', 'prebid-asia'];
10
11
  const ENDPOINT_URL = 'creativecdn.com/bidder/prebid/bids';
12
+ const FLEDGE_ENDPOINT_URL = 'creativecdn.com/bidder/prebidfledge/bids';
11
13
  const DEFAULT_CURRENCY_ARR = ['USD']; // NOTE - USD is the only supported currency right now; Hardcoded for bids
12
14
  const SUPPORTED_MEDIA_TYPES = [BANNER, NATIVE];
13
15
  const TTL = 55;
@@ -50,12 +52,13 @@ export const spec = {
50
52
 
51
53
  const request = {
52
54
  id: validBidRequests[0].auctionId,
53
- imp: validBidRequests.map(slot => mapImpression(slot)),
55
+ imp: validBidRequests.map(slot => mapImpression(slot, bidderRequest)),
54
56
  site: mapSite(validBidRequests, bidderRequest),
55
57
  cur: DEFAULT_CURRENCY_ARR,
56
58
  test: validBidRequests[0].params.test || 0,
57
59
  source: mapSource(validBidRequests[0]),
58
60
  };
61
+
59
62
  if (bidderRequest && bidderRequest.gdprConsent && bidderRequest.gdprConsent.gdprApplies) {
60
63
  const consentStr = (bidderRequest.gdprConsent.consentString)
61
64
  ? bidderRequest.gdprConsent.consentString.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') : '';
@@ -81,37 +84,32 @@ export const spec = {
81
84
  }
82
85
  }
83
86
 
84
- const ortb2Params = bidderRequest && bidderRequest.ortb2;
85
- if (ortb2Params?.user) {
86
- request.user = {
87
- ...request.user,
88
- ...(ortb2Params.user.data && {
89
- data: { ...request.user?.data, ...ortb2Params.user.data },
90
- }),
91
- ...(ortb2Params.user.ext && {
92
- ext: { ...request.user?.ext, ...ortb2Params.user.ext },
93
- }),
94
- };
87
+ const ortb2Params = bidderRequest?.ortb2 || {};
88
+ if (ortb2Params.site) {
89
+ mergeDeep(request, { site: ortb2Params.site });
90
+ }
91
+ if (ortb2Params.user) {
92
+ mergeDeep(request, { user: ortb2Params.user });
93
+ }
94
+ if (ortb2Params.device) {
95
+ mergeDeep(request, { device: ortb2Params.device });
95
96
  }
96
- if (ortb2Params?.site) {
97
- request.site = {
98
- ...request.site,
99
- ...(ortb2Params.site.content && {
100
- content: { ...request.site?.content, ...ortb2Params.site.content },
101
- }),
102
- ...(ortb2Params.site.ext && {
103
- ext: { ...request.site?.ext, ...ortb2Params.site.ext },
104
- }),
105
- };
97
+
98
+ let computedEndpointUrl = ENDPOINT_URL;
99
+
100
+ const fledgeConfig = config.getConfig('fledgeConfig');
101
+ if (bidderRequest.fledgeEnabled && fledgeConfig) {
102
+ mergeDeep(request, { ext: { fledge_config: fledgeConfig } });
103
+ computedEndpointUrl = FLEDGE_ENDPOINT_URL;
106
104
  }
107
105
 
108
106
  return {
109
107
  method: 'POST',
110
- url: 'https://' + validBidRequests[0].params.region + '.' + ENDPOINT_URL,
108
+ url: 'https://' + validBidRequests[0].params.region + '.' + computedEndpointUrl,
111
109
  data: JSON.stringify(request)
112
110
  };
113
111
  },
114
- interpretResponse: function (serverResponse, originalRequest) {
112
+ interpretOrtbResponse: function (serverResponse, originalRequest) {
115
113
  const responseBody = serverResponse.body;
116
114
  if (!isArray(responseBody)) {
117
115
  return [];
@@ -119,17 +117,72 @@ export const spec = {
119
117
 
120
118
  const bids = [];
121
119
  responseBody.forEach(serverBid => {
122
- if (serverBid.price === 0) {
120
+ if (!serverBid.price) { // price may exist and is === 0 or there's no price prop at all (fledge req case)
123
121
  return;
124
122
  }
123
+
124
+ let interpretedBid;
125
+
125
126
  // try...catch would be risky cause JSON.parse throws SyntaxError
126
127
  if (serverBid.adm.indexOf('{') === 0) {
127
- bids.push(interpretNativeBid(serverBid));
128
+ interpretedBid = interpretNativeBid(serverBid);
128
129
  } else {
129
- bids.push(interpretBannerBid(serverBid));
130
+ interpretedBid = interpretBannerBid(serverBid);
130
131
  }
132
+ if (serverBid.ext) interpretedBid.ext = serverBid.ext;
133
+
134
+ bids.push(interpretedBid);
131
135
  });
132
136
  return bids;
137
+ },
138
+ interpretResponse: function (serverResponse, originalRequest) {
139
+ let bids;
140
+
141
+ const responseBody = serverResponse.body;
142
+ let fledgeAuctionConfigs = null;
143
+
144
+ if (responseBody.bidid && isArray(responseBody?.ext?.igbid)) {
145
+ // we have fledge response
146
+ // mimic the original response ([{},...])
147
+ bids = this.interpretOrtbResponse({ body: responseBody.seatbid[0]?.bid }, originalRequest);
148
+
149
+ const seller = responseBody.ext.seller;
150
+ const decisionLogicUrl = responseBody.ext.decisionLogicUrl;
151
+ const sellerTimeout = 'sellerTimeout' in responseBody.ext ? { sellerTimeout: responseBody.ext.sellerTimeout } : {};
152
+ responseBody.ext.igbid.forEach((igbid) => {
153
+ const perBuyerSignals = {};
154
+ igbid.igbuyer.forEach(buyerItem => {
155
+ perBuyerSignals[buyerItem.igdomain] = buyerItem.buyersignal
156
+ });
157
+ fledgeAuctionConfigs = fledgeAuctionConfigs || {};
158
+ fledgeAuctionConfigs[igbid.impid] = mergeDeep(
159
+ {
160
+ seller,
161
+ decisionLogicUrl,
162
+ interestGroupBuyers: Object.keys(perBuyerSignals),
163
+ perBuyerSignals,
164
+ },
165
+ sellerTimeout
166
+ );
167
+ });
168
+ } else {
169
+ bids = this.interpretOrtbResponse(serverResponse, originalRequest);
170
+ }
171
+
172
+ if (fledgeAuctionConfigs) {
173
+ fledgeAuctionConfigs = Object.entries(fledgeAuctionConfigs).map(([bidId, cfg]) => {
174
+ return Object.assign({
175
+ bidId,
176
+ auctionSignals: {}
177
+ }, cfg);
178
+ });
179
+ logInfo('Response with FLEDGE:', { bids, fledgeAuctionConfigs });
180
+ return {
181
+ bids,
182
+ fledgeAuctionConfigs,
183
+ }
184
+ }
185
+ return bids;
133
186
  }
134
187
  };
135
188
  registerBidder(spec);
@@ -154,7 +207,7 @@ function applyFloor(slot) {
154
207
  * @param {object} slot Ad Unit Params by Prebid
155
208
  * @returns {object} Imp by OpenRTB 2.5 §3.2.4
156
209
  */
157
- function mapImpression(slot) {
210
+ function mapImpression(slot, bidderRequest) {
158
211
  const imp = {
159
212
  id: slot.bidId,
160
213
  banner: mapBanner(slot),
@@ -167,6 +220,14 @@ function mapImpression(slot) {
167
220
  imp.bidfloor = bidfloor;
168
221
  }
169
222
 
223
+ if (bidderRequest.fledgeEnabled) {
224
+ imp.ext = imp.ext || {};
225
+ imp.ext.ae = slot?.ortb2Imp?.ext?.ae
226
+ } else {
227
+ if (imp.ext?.ae) {
228
+ delete imp.ext.ae;
229
+ }
230
+ }
170
231
  return imp;
171
232
  }
172
233
 
@@ -134,7 +134,8 @@ var sizeMap = {
134
134
  574: '620x891',
135
135
  576: '610x877',
136
136
  578: '980x552',
137
- 580: '505x656'
137
+ 580: '505x656',
138
+ 622: '192x160'
138
139
  };
139
140
  _each(sizeMap, (item, key) => sizeMap[item] = key);
140
141