-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PBjs Core : add ability to inject tracking in video #10191
PBjs Core : add ability to inject tracking in video #10191
Conversation
src/video.js
Outdated
let tmpTrackers = func(bid); | ||
for (const key in tmpTrackers) { | ||
if (key in trackers && Array.isArray(tmpTrackers[key])) { | ||
let replaceContext = tmpTrackers[key].map(function(url) { return url.replace('$$CONTEXT$$', context); }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the purpose of the $$CONTEXT$$
macro? If it's something you expect to need from your module, I think it'd be better to either retrieve it directly from your tracker function - since other trackers may need other things from the bid request.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's indeed something I need and I guess it might be useful for some others too. That's the reason why I put it in here instead of my tracker functions but I can remove it if you think it would better suit the way prebid works in general.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree that others can find it useful - but they are likely to find many other thing useful too, so I'm worried about a growing list of macros for everything that might be needed. A better approach would be to pass the bid request to the tracker function, e.g. registerVASTTrackers(function(bidResponse, bidRequest))
. (the context would then be found at bidRequest.mediaTypes.video.context
).
However that has the problem that sometimes there is no request (bidders are allowed to return "extra" bids in addition to those that were requested), so we'd need to add a third argument for the mediatypes (from index.getMediaTypes
) and I think that can get confusing, for now I think it's better to pick what you need directly from the tracker function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, I've updated my code accordingly
src/video.js
Outdated
} | ||
if (vastImpUrl && vastImpUrl.length > 0) { | ||
trackers['impressions'].forEach(trackingUrl => { | ||
if ((trackingUrl + encodeURI(vastImpUrl)).length < 2048) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure how this works in general. from the unit tests I see the idea - the tracker URL ends in &redir=
and presumably that means the server will reply with a redirect. Is that standardized - what's stopping me from registering a tracker that doesn't act as an open redirect? (isn't it also a security risk for you to run an open redirect service?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's the idea. It's not standardize but tracking video impression in prebid is new so it could be. This is something which was done before this advertising click command in order to track click count and it worked with an open redirect service. It's just an URL doing some http 302 redirect.
It would be a security risk if the domain use for this redirect was from some trusted source such as a well known website users are used to browse to. This should not be the case with analytics modules which would use this feature. If you have any other idea about how this could be improved I am open to make it another way. The best of could would be for vastImpUrl to be an array of strings instead of a string, but it would break existing modules and videoCache too I guess.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we want to encourage Prebid modules to generate redirects to redirects as standard practice; besides the URL length limitation, each redirect also adds a network roundtrip that the end user has to wait for before being shown their ad.
It might be OK for your particular module to do this (without support from core, as you should be able to do now - since this would only matter when there's no cache).
As for how to do this in general - I don't know if it works, but an idea could be to generate a VAST wrapper to vastURL
containing the additional trackers, and package it in a data URL that replaces the original vastURL
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was brought to my attention that a video player loading the VAST does not mean that you got the impression - playback could stop before it's time to show the ad. This is another reason to not use this technique from core, even if for your particular module you may be OK with the discrepancy.
For this PR I think it'd also be fine to only inject trackers when there is a cache.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My problem here is that videoCache even caches vastUrl and vastImpUrl if I didn't misinterpreted these lines :
Lines 45 to 70 in 822c09e
function wrapURI(uri, impUrl) { | |
// Technically, this is vulnerable to cross-script injection by sketchy vastUrl bids. | |
// We could make sure it's a valid URI... but since we're loading VAST XML from the | |
// URL they provide anyway, that's probably not a big deal. | |
let vastImp = (impUrl) ? `<![CDATA[${impUrl}]]>` : ``; | |
return `<VAST version="3.0"> | |
<Ad> | |
<Wrapper> | |
<AdSystem>prebid.org wrapper</AdSystem> | |
<VASTAdTagURI><![CDATA[${uri}]]></VASTAdTagURI> | |
<Impression>${vastImp}</Impression> | |
<Creatives></Creatives> | |
</Wrapper> | |
</Ad> | |
</VAST>`; | |
} | |
/** | |
* Wraps a bid in the format expected by the prebid-server endpoints, or returns null if | |
* the bid can't be converted cleanly. | |
* | |
* @param {CacheableBid} bid | |
* @param index | |
*/ | |
function toStorageRequest(bid, {index = auctionManager.index} = {}) { | |
const vastValue = bid.vastXml ? bid.vastXml : wrapURI(bid.vastUrl, bid.vastImpUrl); |
If the bid contains both vastXml and vastUrl, vastXml will be cached and this will take precedence over vastUrl in src/auctions.js
But if only vastUrl is available, this vastUrl is translated to a vast through wrapURI
func and then cached. So vastUrl impressions can't be tracked.
Maybe then I would need to add modifications to src/videoCache.js
in order to inject additional trackers by wrapURI
then if that's okay for you ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can inject the trackers just before the VAST is to be cached, so that it doesn't matter if it was the "real" one or the wrapper generated by the caching logic; and ignore the no-cache case (bids can have a vastXml
only when cache is enabled). I think that's an OK strategy.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've made changes not to update vastImpUrl anymore and add trackers in wastURI
function.
I am unsure what you mean. When
VastXml is available I’m already covered by the modification as it’s done
before caching. My remaining issue is when only vastUrl is available. In
that case I don’t see what else to do than injecting trackers in the
wrapper generated by the caching logic. What did you have in mind?
|
I mean doing Line 70 in 822c09e
|
And removing it from auctions.js?
If so, doing it only at this step would mean not tracking for outstream if
useCacheKey is false,or to rely on rtd module to do so. While unlike
instream, bidwon event is triggered for outstream, it’s less accurate than
using a vast impression tracker: it counts far more events as it seem
triggered on winning and not rendering. It could be beneficial to other
modules to be able to inject imp trackers in outstreams too.
It’s fine for me, but that’s a bit of work for outstream which would need
to be done by rtd modules while it could have been centralized by prebid.
|
src/auction.js
Outdated
|
||
if (hasTrackers) { bidResponse.vastXml = insertVastTrackers(vastTrackers, bidResponse.vastXml); } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let's make this dependent on configuration as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
something like that to add in config ?
pbjs.setConfig({ videoTrackers: true });
If so, shouldn't it be configuration dependant here as well in videoCache.js
?
if (Array.isArray(arrayVastTrackers) && arrayVastTrackers.length == 2 && arrayVastTrackers[1].hasOwnProperty('impressions')) {
What default value should be set in config.js ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @patmmccann , can you confirm me that I understood what you asked for so I can make the changes ? Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any feedback on this please ?
I think in practice you won't get the tracking in that case regardless. If a bid has |
I may have missed some steps but useCache seem related with mediatype not with Line 584 in f77b6fd
|
src/video.js
Outdated
@@ -64,3 +66,47 @@ export const checkVideoBidSetup = hook('sync', function(bid, adUnit, videoMediaT | |||
|
|||
return true; | |||
}, 'checkVideoBidSetup'); | |||
|
|||
export function registerVASTTrackers(tracker) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit
export function registerVASTTrackers(tracker) { | |
export function registerVastTrackers(tracker) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
src/video.js
Outdated
vastTrackers.push(tracker); | ||
} | ||
|
||
export function insertVastTrackers(trackers, vastXml) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this logic already exists in the Video Module Library. Why not reuse existing code ?
See getVastXmlWithTracking
https://github.com/prebid/Prebid.js/blob/master/libraries/video/shared/vastXmlEditor.js#L8
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't aware of this library. I would say not reuse this existing code avoids to run querySelectorAll
and loop on it for each tracker to insert.
src/videoCache.js
Outdated
@@ -42,17 +43,22 @@ const ttlBufferInSeconds = 15; | |||
* @param {string} impUrl An impression tracker URL for the delivery of the video ad | |||
* @return A VAST URL which loads XML from the given URI. | |||
*/ | |||
function wrapURI(uri, impUrl) { | |||
function wrapURI(uri, impUrl, arrayVastTrackers) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no need to include the type in the name
function wrapURI(uri, impUrl, arrayVastTrackers) { | |
function wrapURI(uri, impUrl, vastTrackers) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
src/auction.js
Outdated
@@ -582,7 +582,9 @@ function tryAddVideoBid(auctionInstance, bidResponse, afterBidAdded, {index = au | |||
}), 'video'); | |||
const context = videoMediaType && deepAccess(videoMediaType, 'context'); | |||
const useCacheKey = videoMediaType && deepAccess(videoMediaType, 'useCacheKey'); | |||
const [hasTrackers, vastTrackers] = getVastTrackers(bidResponse); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's hard to work with functions that don't return standard types. In this case it appears to return an array where the first element is a bool, and the 2nd is an object.
Instead, why not return null when there are no trackers ? The type is then a nullable object.
if (vastTrackers) {
bidResponse.vastXml = insertVastTrackers(vastTrackers, bidResponse.vastXml);
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
src/video.js
Outdated
} | ||
|
||
export function getVastTrackers(bid) { | ||
let hasTrackers = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this implementation needs to be cleaned, it's not easy to follow and is difficult to manage. A few things that could help:
- split into functions that do one thing and can be reused - (Single Responsibility Principle)
- work with simple data structures: it's cumbersome to work with
trackers
which is an object where each value is an array; instead you should work with arrays, and then set those arrays to atrackers
map at the end. - remove flags - flags are a nuisance to maintain as the code evolves, plus they are unnecessary. If at the end of the function, the impression array is empty, you can return null.
Lastly, the interface is hard to work with. I have to look at the implementation to understand what it's returning.
Instead, it would be easier if it returned a simpler data structure, such as a nullable object.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Latest commit made changes which should match those you asked for. Can you tell me if there is something else you would like to see modify here or if I didn't understood what you requests ? I was not quite sure about the trackers
map you mentioned. Thanks
src/video.js
Outdated
export function getVastTrackers(bid) { | ||
let hasTrackers = false; | ||
let trackers = {'impressions': []}; | ||
vastTrackers.forEach(func => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what are the elements in the vastTrackers
array ? They are functions that when given a bid as an arg return what ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here is an example of implementation at the analytic module side :
registerVASTTrackers(function(bidResponse) {
return {
'impressions': [`https://tracking.mydomain.com/vast?cpm=${bidResponse.cpm}`]
};
});
The function registered in vastTrackers
returns an object with as many tracking url needed for each events. Currently only impression is handled, but doing it this way make it possible to extend to other vast tracking such as start, quartiles, completion...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's also the reason why getVastTrackers
returns the kind of structure its trackers
variable is.
Hi @karimMourra , did you manage to check the changes and comments I've made ? |
src/videoCache.js
Outdated
@@ -42,17 +43,22 @@ const ttlBufferInSeconds = 15; | |||
* @param {string} impUrl An impression tracker URL for the delivery of the video ad | |||
* @return A VAST URL which loads XML from the given URI. | |||
*/ | |||
function wrapURI(uri, impUrl) { | |||
function wrapURI(uri, impUrl, vastTrackers) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This function is now tightly coupled with vastTrackers
. It should be decoupled. It shouldn't matter if the impression URLs come from vastTrackers; if tomorrow another mechanism is created to obtain impression URLs, this function has to change to accommodate for it. That should not be the case.
I suggest instead, making the argument an array of impUrls
.
function wrapURI(uri, impUrl, vastTrackers) { | |
function wrapURI(uri, impUrls) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've changes wrapURI
but instead of removing vastTrackers
I removed impUrl
. The reason is that my goal is to later add support for other vast tracking event such as completion for example. So keeping vastTrackers
makes for sense. To do so I've made a new function in src/video.js
which is called addImpUrlToTrackers
in order to push the vastImpUrl into the trackers map.
src/video.js
Outdated
return (trackersMap.size ? trackersMap : null); | ||
}; | ||
|
||
function validVastTracker(trackers, trackerToAdd) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
function validVastTracker(trackers, trackerToAdd) { | |
function isValidVastTracker(trackers, trackerToAdd) { |
the is
prefix is a good indication that the function returns a bool
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
src/video.js
Outdated
function validVastTracker(trackers, trackerToAdd) { | ||
if (!trackerToAdd.hasOwnProperty('event') || !trackerToAdd.hasOwnProperty('url')) { return false; } | ||
trackers.forEach(tracker => { | ||
if (tracker['event'] == trackerToAdd['event'] && tracker['url'] == trackerToAdd['url']) { return false; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
note: this return false
won't return from isValidVastTracker
, because in forEach
, the argument is a function. So your return statement is returning from the callback in the loop. So it doesn't do anything.
I suggest in this case using a traditional for loop
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed. Actually this step was to avoid to add multiple times the exact same url for a same tracking event. While I don't really see the point in adding duplicates tracking calls, I am not sure that's really something we should be checking for but more a responsability from those adding trackers. I've removed it.
src/video.js
Outdated
function trackersToMap(trackers) { | ||
let trackersMap = new Map(); | ||
trackers.forEach(tracker => { | ||
if (!trackersMap.get(tracker['event'])) { trackersMap.set(tracker['event'], [tracker['url']]) } else { trackersMap.get(tracker['event']).push(tracker['url']); } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dgirardi any thoughts on code style ? I personally find if
statements on the same line to be hard to read, and i find it even harder to read when the else
statement is also on the same line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed some line breaks would improve readability.
I don't mind it too much though because it's not really poor style but poor formatting, and any half-decent editor can fix it with one click.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Strange, I didn't wrote it this way. It's fixed.
@matthieularere-msq apologies for the delay in reviewing. Are trackers meant to be added by analytics adapters ? If so then i think this should be a library that gets used by analytics adapters. Otherwise we're adding code to core that is only used when a specific analytics adapter is used. |
Hi @karimMourra Yes they are meant to be added by analytics adapters. The reason why it's added to core is that using event listener won't work when video cache is enabled. Otherwise this could have done by rtd modules. |
Hi @karimMourra , did you have any chance to check the changes applied based on your suggestions ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@matthieularere-msq Since these trackers are meant to be added by certain analytics adapters, this code should not live in core. Please change this to be a library that gets imported by analytics adapters. This code is not core functionality so it's adding bloat for Publishers.
@karimMourra the reason why I made it into core is precisely because I can not rely on events to do so otherwise. I’ve already tried using an rtd module and it happened that the video caching mechanism happens before events are triggered. Making this through a library which would be imported by analytics would have the same issue. |
Hi @karimMourra , would you please have a feedback on my last response ? Thanks |
Could I have any update about this please ? As I said, making it throught a library can not work because of the way the caching mechanism is made and this is the very reason why I've requested to do this in core. |
Hi @matthieularere-msq this logic does not qualify as "core" since it will only be used by certain analytics modules. Therefore I am against accepting it in core. If members of the community have a different opinion, I welcome their feedback. |
@matthieularere-msq I couldn't update this PR, but here's changes to move this out of core, could you verify it still works for your use case? |
@dgirardi your proposal looks good |
I guess it would work as it seems like it would be executed before caching instream video.. |
Appears ready to merge, not sure why the UI is flagging a conflict without details. @matthieularere-msq are you able to resolve? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some cleanup is suggested
Co-authored-by: Karim Mourra <karim@jwplayer.com>
* Bump github/codeql-action from 2 to 3 (#10856) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v2...v3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * HadronId Module: implementing user consent in backend calls (#10845) * Implementing user consent in HadronId module * fixing tests accepting just the start of url * Eids Docs : add missing EID examples (#10844) * Add missing brackets * Add missing examples * Add back missing ext * Admixer Bid Adaper: add admixerwl alias (#10859) * Update README.md update * Add admixerwl alias for admixerBidAdapter. --------- Co-authored-by: Yaroslav Masenko <intgr-user@admixer.ua> * AdagioAnalyticsAdapter: fix function param check (#10860) * NoBid Analytics Adapter: support for counting blocked requests for the Optimizer (#10842) * Enable supplyChain support * Added support for COPPA * rebuilt * Added support for Extended User IDs. * Added support for the "meta" attribute in bid response. * Delete nobidBidAdapter.js.orig * Delete a * Delete .jsdtscope * Delete org.eclipse.wst.jsdt.ui.superType.container * Delete org.eclipse.wst.jsdt.ui.superType.name * Delete .project * Added support for counting blocked requests for the Optimizer. * Added missing function for testing. * Added unit tests --------- Co-authored-by: Reda Guermas <reda.guermas@nobid.io> * consentManagementGpp: fix handling of CMP errors (#10811) * Taboola Bid Adapter: implement Iframe user sync (#10789) * iframe-sync * iframe-sync-add-tests * AMX bid adapter: fix timeout handler, bump version (#10744) * amx bid adapter: fix timeout handler, bump version * restore package-lock to master * remove sendbeacon, use mock xhr * add keepalive option for ajax * fix firefox test * CR changes * CR changes: restore files * CR changes * Ucfunnel Bid Adapter: add format support (#10862) * Add a new ucfunnel Adapter and test page * Add a new ucfunnel Adapter and test page * 1. Use prebid lib in the repo to keep updated 2. Replace var with let 3. Put JSON.parse(JSON.stringify()) into try catch block * utils.getTopWindowLocation is a function * Change to modules from adapters * Migrate to module design * [Dev Fix] Remove width and height which can be got from ad unit id * Update ucfunnelBidAdapter to fit into new spec * Correct the endpoint. Fix the error of query string * Add test case for ucfunnelBidAdapter * Fix lint error * Update version number * Combine all checks on bid request * Add GDPR support for ucfunnel adapter * Add in-stream video and native support for ucfunnel adapter * Remove demo page. Add more test cases. * Change request method from POST to GET * Remove unnecessary comment * Support vastXml and vastUrl for video request * update TTL to 30 mins * Avoid using arrow function which is not discuraged in mocha * ucfunnel tdid support * ucfunnel fix error message in debug mode * ucfunnel adapter add bidfloor parameter * ucfunnel adapter support CCPA * ucfunnel adapter native support clicktrackers * ucfunnel adapter change cookie sync setting * ucfunnel adapter update request parameter * Update ucfunnelBidAdapter * ucfunnel adapter add currency in ad response * ucfunnel adapter support uid2 * ucfunnel Bid Adapter: add support for FLoC and Verizon Media ConnectID * ucfunnel Bid Adapter: add support Price Floors Module * ucfunnel Bid Adapter: add GPID support and fix page and domain parameter. * ucfunnel Bid Adapter: add format support. --------- Co-authored-by: root <root@ubuntu.members.linode.com> Co-authored-by: Ryan Chou <ryanchou0210@gmail.com> Co-authored-by: ucfunnel <support@ucfunnel.com> Co-authored-by: jack.hsieh <moonnight8520@gmail.com> * R2B2 Bid Adapter: Initial release (#10702) * R2B2 bidder adapter * R2B2 bid adapter: fix * conditional renderer --------- Co-authored-by: jenda <jan.schotterl@r2b2.cz> * Core: fix headers in ortbConverter readme (#10874) * SparteoBidAdapter: Add UserSync (#10822) * Yandex Bid Adapter: Add rtt (roud trip time) tracking via nurl (#10846) * Add rtt (roud trip time) tracking via nurl in yandexBidAdapter * Yandex Bid Adapter: Fix let -> const --------- Co-authored-by: Konstantin Korobkov <kostya-kor@yandex-team.ru> * AdMatic Bid Adapter : consent management features added (#10813) * Admatic Bidder Adaptor * Update admaticBidAdapter.md * Update admaticBidAdapter.md * remove floor parameter * Update admaticBidAdapter.js * Admatic Bid Adapter: alias and bid floor features activated * Admatic adapter: host param control changed * Alias name changed. * Revert "Admatic adapter: host param control changed" This reverts commit de7ac85981b1ba3ad8c5d1dc95c5dadbdf5b9895. * added alias feature and host param * Revert "added alias feature and host param" This reverts commit 6ec8f4539ea6be403a0d7e08dad5c7a5228f28a1. * Revert "Alias name changed." This reverts commit 661c54f9b2397e8f25c257144d73161e13466281. * Revert "Admatic Bid Adapter: alias and bid floor features activated" This reverts commit 7a2e0e29c49e2f876b68aafe886b336fe2fe6fcb. * Revert "Update admaticBidAdapter.js" This reverts commit 7a845b7151bbb08addfb58ea9bd5b44167cc8a4e. * Revert "remove floor parameter" This reverts commit 7a23b055ccd4ea23d23e73248e82b21bc6f69d90. * Admatic adapter: host param control && Add new Bidder * Revert "Admatic adapter: host param control && Add new Bidder" This reverts commit 3c797b120c8e0fe2b851381300ac5c4b1f92c6e2. * commit new features * Update admaticBidAdapter.js * updated for coverage * sync updated * Update adloader.js * AdMatic Bidder: development of user sync url * Update admaticBidAdapter.js * Set currency for AdserverCurrency: bug fix * Update admaticBidAdapter.js * update * admatic adapter video params update * Update admaticBidAdapter.js * update * Update admaticBidAdapter.js * update * update * Update admaticBidAdapter_spec.js * Update admaticBidAdapter.js * Update admaticBidAdapter.js * Revert "Update admaticBidAdapter.js" This reverts commit 1216892fe55e5ab24dda8e045ea007ee6bb40ff8. * Revert "Update admaticBidAdapter.js" This reverts commit b1929ece33bb4040a3bcd6b9332b50335356829c. * Revert "Update admaticBidAdapter_spec.js" This reverts commit 1ca659798b0c9b912634b1673e15e54e547b81e7. * Revert "update" This reverts commit 689ce9d21e08c27be49adb35c5fd5205aef5c35c. * Revert "update" This reverts commit f381a453f9389bebd58dcfa719e9ec17f939f338. * Revert "Update admaticBidAdapter.js" This reverts commit 38fd7abec701d8a4750f9e95eaeb40fb67e9f0e6. * Revert "update" This reverts commit a5316e74b612a5b2cd16cf42586334321fc87770. * Revert "Update admaticBidAdapter.js" This reverts commit 60a28cae302b711366dab0bff9f49b11862fb8ee. * Revert "admatic adapter video params update" This reverts commit 31e69e88fd9355e143f736754ac2e47fe49b65b6. * update * Update admaticBidAdapter.js * Update admaticBidAdapter_spec.js * mime_type add * add native adapter * AdMatic Adapter: Consent Management * Taboola Bid Adapter: Cookie Look Up Logic Fix (#10873) * cookie-look-up-logic-fix * cookie-look-up-logic-fix * cookie-look-up-logic-fix * ZetaGlobalSsp Bid Adapter : support topics module (#10803) * add getTopics() * provide get segments from ortb2 * rename const * additional check * fix test --------- Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> * Adnuntius Bid Adapter: bugfix for storageFunction (#10869) * Removed linting issues * Fixed merge issues. * Bugfix on storageTool. * Prebid 8.29.0 release * Increment version to 8.30.0-pre * Yandex Bid Adapter: add support for topicsFpdModule (#10875) * Yandex Bid Adapter: add support for topicsFpdModule * add test * Yandex Bid Adapter: add jsdoc (#10884) * DxKulture Bid Adapter : user syncs improvements (#10738) * Initial implementation of kulturemedia bid adapter * Changing outstream to instream * Enriching md file with test examples * Changing nId to networkId * Cleaning up md file * Submitting rebranded dxkultureBidAdapter * dxkultureBidAdapter - Improve UserSyncs * Include gdpr/usp params in iframe usersync url * Add gdpr/usp data to iframe usync urls * Cleaning up testing html file * Adding outstream support * Updating exchange endpoint * Resolve requests test * Resolving iframe/pixel priority when iframeEnabled/pixelEnabled * Improving userSync filtering condition * Prioritize iframe user syncing --------- Co-authored-by: Danijel Predarski <danijel.p@whitecitysoft.com> Co-authored-by: dani-nova <73398187+dani-nova@users.noreply.github.com> Co-authored-by: Slavisa Petkovic <trpeze@gmail.com> Co-authored-by: Slavisa Petkovic <32300768+spetkovic@users.noreply.github.com> * Mygaru Id System: Initial release (#10848) * Update viantOrtbBidAdapter_spec.js (#10888) Added a test case for native ads * Stv Bid Adapter: added user id support, adaptation of schain support (#10849) * initial commit * adapted buildRequests function * refinement pfilter and bcat * refinement * adapted tests for isBidRequestValid,buildRequests * adaptations for test * finished building stvBidAdapter.js * finished: ran tests, coverage 99% * update: rename w->srw, h->srh * adapt stvBidAdapter.md * remove dspx from stv adapters * some changes (missing: getUserSyncs, but is the same as in radsBidAdapter) * added checks in getUserSyncs; ran tests * added schain support (94.8% coverage) * correct schain encoding * added serializeUids and adapted serializeSChain --------- Co-authored-by: theo_ <theo_@IDEA3> * Missena Bid Adapter: allow per page capping (#10863) * LiveIntent ID Module: Update live-connect version (#10894) * update lc version * fix typo * Do not require API for video requests (#10895) * Price Floors: Failure to Account for 'data.skipRate' (#10872) * Update skipRate handling in priceFloors.js and add unit tests for the changes. * Update wording on tests and remove unecessary spread. * Prebid 8.30.0 release * Increment version to 8.31.0-pre * 1.Added safechecks for s2s metadapter case 2.Skipped firing client side tracker for pubmatic 3.Skipped adding pubmatic bid in logger (#10897) * Discovery Bid Adapter: update buyerId, add ssppid & pmguid, add getUserSyncs (#10800) * ID5 User Id module - pass gpp string and sid in getId request (#10899) * Adnuntius Bid Adapter : bugfix void au ids (#10890) * Removed linting issues * Fixed merge issues. * Bugfix on storageTool. * Adnuntius Bid Adapter: bugfix handling ad response Handle no voidAuIds better. --------- Co-authored-by: Mikael Lundin <mikael@coil.se> Co-authored-by: Mikael Lundin <mikael-lundin@users.noreply.github.com> * GreenbidsAnalyticsAdapter and GreenbidsRtdProvider: Rework greenbids sampling and improve transparency (#10792) * track billing events and modify sampling pattern * review updates * Core: add eslint-plugin-jsdoc (#10893) * Pangle Bid Adapter : add multi format support (#10909) * feat: pangle multi format * feat: multi format * Criteo bid adapter: remove checks on video context and placement (#10912) Those checks are no longer useful so we decided to remove them. * Discovery Bid Adapter : add title, description, keywords (#10900) * Discovery Bid Adapter : add title, desc, keywords, hLen, nbw, hc, dm add unit test resolve conflict * Discovery Bid Adapter : add title, desc, keywords, hLen, nbw, hc, dm add unit test --------- Co-authored-by: lvhuixin <lvhuixin@baidu.com> * Ampliffy Bid Adapter: initial commit (#10883) * ampliffyBidAdapter initial commit * Add tests * Utils.js (Warning in Integration Tests): add back getWindowFromDocument (#10865) * add back getWindowFromDocument * do not use core for 1 consumer --------- Co-authored-by: Demetrio Girardi <dgirardi@prebid.org> * Rubicon: remove transformBidParams function (#10919) Per https://github.com/prebid/Prebid.js/issues/6361 Confirmed that the server-side adapters for both PBS-Go and PBS-Java handle the type conversion. * Bump follow-redirects from 1.15.2 to 1.15.4 (#10922) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Support cdep (#10921) Changes to bid adapter logic and tests to support passing `cdep` along in requests to Sharethrough's adserver endpoint. * Adkernel Bid Adapter: multiformat imp splitting (#10918) * Adkernel: multiformat adunit support * fix * Geodge RTD module: update preload mechanism (#10911) * Update preload mechanism to work with an iframe * Update tests --------- Co-authored-by: daniel manan <mmndaniel@gmail.com> * Add option for no signal bidders (#10867) * Criteo bid adapter: add device object to backend request (#10926) * Geolocation RTD provider: make module 'vendorless' for the purposes of TCF (#10931) * LiveConnect Bid Adapter : add prebid version to liveConnect (#10920) * forward trackerVersion * refactoring * adjust test * use a proper lc version * adjust test * refactoring * test case * lint * package-lock * fix test * fix test * Insticator Bid Adaptor : add support for playerSize, plcmt, vastXML, & vastURL (#10903) * enhance insticatorBidAdapter: - support playerSize for video - Support plcmt tag for video * conditionall check for playerSize * - remove hardcoded banner type for video - Support vastXml and vasturl for video bids * remove trailing spaces * refactor spaces * add unit tests * Seedtag Bid Adapter : add geom to bidRequest (#10906) * add adunit geometry parameter to the bid request * lint * add unit test * add size check * use global slot for all tests * fix test when slot is not available$ * add dsp_genieeBidAdapter (#10834) Co-authored-by: kiyoshi fujiwara <kiyoshi.fujiwara@geniee.co.jp> * Contxtful RTD Provider: Initial Release (#10550) * feat: added contxtfulRtdProvider * fix: removed id in query param * fix: googletag * doc: typo * fix: added contxtful in adloader * doc: extra line * fix: added connector config option * Prebid 8.31.0 release * Increment version to 8.32.0-pre * Ad2iction Bid Adapter: initial release (#10877) * Import the project * Update version * fix: typo * refactor: rewrite * feat: add pre-defined function & add logger * feat: add test for bid adapter * feat: add readme for ad2iction bid adaptor * feat: remove unneeded callback event * feat: lint & add missing test * feat: remove debugger flag * feat: refactor & new feature for adapter * feat: update Maintainer & Description info --------- Co-authored-by: Richard Lee <14349+dlackty@users.noreply.github.com> Co-authored-by: Charlie <charlielee@ad2iction.com> * LiveIntent UserId module: Make process and process.env optional (#10905) * Drop the minimal mode * Revert "Drop the minimal mode" This reverts commit 9f33731a528d4b5e45e526c46303f9ae729cb290. * Make process and process.env optional * Revert changes in spec * Use pbjsGlobals for confguring moduleMode * Bump LiveConnect version * Smartadserver Bid Adapter: support additional video parameters (#10815) * Smartadserver Bid Adapter: Add support for SDA user and site * Smartadserver Bid Adapter: Fix SDA support getConfig and add to unit testing * support floors per media type * Add GPP support * Rework payloads enriching * Add gpid support * Support additional video params * vpmt as array of numbers * Fix comment --------- Co-authored-by: Meven Courouble <mcourouble@smartadserver.com> Co-authored-by: Krzysztof Sokół <88041828+smart-adserver@users.noreply.github.com> * Core: fix jsdoc errors (#10941) * Richaudience Bid Adapter : add function onTimeout (#10891) * RichaudienceBidAdapter add function onTimeout * Add unit test * revert: Revert changes in integrationExamples/creative.html * fix: Remove useless package in richaudiences test module --------- Co-authored-by: Sergi Gimenez <sergi.gimenez@exte.com> * PubMatic Bid Adapter : add support to read and pass badv to adserver (#10943) * Added support for badv parameter of ortb2 * Added test cases --------- Co-authored-by: pm-azhar-mulla <azhar@L1119.local> * Taboola Bid Adapter : refactor using ortb conversion library (#10910) * refactor using ORTB conversion library * refactor using ORTB conversion library * refactor using ORTB conversion library * refactor using ORTB conversion library --------- Co-authored-by: ahmadlob <109217988+ahmadlob@users.noreply.github.com> * [Fledge] Add support for seller signals per imp (#10948) Load seller signals for each impression and include them with the response level seller signals before returning the bid and fledge auction config. * Adman Bid Adapter : add GVLID (#10949) * Add Adman bid adapter * Add supportedMediaTypes property * Update ADman Media bidder adapter * Remove console.log * Fix typo * revert package-json.lock * Delete package-lock.json * back to original package-lock.json * catch pbjs error * catch pbjs error * catch pbjs error * log * remove eu url * remove eu url * remove eu url * remove eu url * remove eu url * Update admanBidAdapter.js add consnet to sync url * Update admanBidAdapter.js fix import * Update admanBidAdapter.js lint fix * Update admanBidAdapter.js lint fix * Update admanBidAdapter.js check consent object data availability * сompatible with prebid v5 * add Lotame Panorama ID * update getUserSyncs * fix * fix tests * remove package-lock.json * update sync url * update test * add idx (UserID Module) * update tests * remove traffic param * handle transactionID param * send transactionID param in imp.ext * rename transactionID to transactionId * update tests * additional content handle * rollback content * content handle via hb integration * update gdprConsent * return old package-lock * add GVLID * rem package-lock.json from changes --------- Co-authored-by: minoru katogi <mkatogi@gmail.com> Co-authored-by: minoru katogi <m_katogi@hotmail.com> Co-authored-by: ADman Media <admanmedia@users.noreply.github.com> Co-authored-by: SmartyAdman <adman@localhost.localdomain> Co-authored-by: SmartyAdman <> * Unicorn Bid Adapter : support id5 (#10947) * support id5 * fix lint change quote * Yahoo SSP Bid Adapter : update maintainer email address (#10954) * change * removing global filtet * reverting page * message * adapter change * remove space * renderer exist case * reverting package-lock.json * adding schain object * adding tagid * syntaxx error fix * video.html * space trailing * space * tagid * inventoryId and placement * rewarded video * comment * update maintainer email address --------- Co-authored-by: Deepthi Neeladri Sravana <dsravana@UNKNOWN-172-154-7-X.yahoo.com> Co-authored-by: Deepthi Neeladri Sravana <dsravana@UNKNOWN-172-142-163-X.yahoo.com> Co-authored-by: Deepthi Neeladri Sravana <dsravana@C02VH0WGHTDG.local> Co-authored-by: dsravana <deepthi.neeladri.sravana@yahooinc.com> * EUID Id Module : add support for client side token generation (#10885) * enable cstg for euid * test added for euid cstg * fixed euid cstg test and updated docs * add alias support to riseBidAdapter (#10956) * Richaudience Bid Adapter): change url tracking (#10963) * RichaudienceBidAdapter add function onTimeout * Add unit test * revert: Revert changes in integrationExamples/creative.html * fix: Remove useless package in richaudiences test module * Change referer with host * Fix(RichaudienceBidAdapter): Change url tracking * deploy * change test --------- Co-authored-by: Sergi Gimenez <sergi.gimenez@exte.com> * Prebid 8.32.0 release * Increment version to 8.33.0-pre * Send experian rtid in the bid request payload (#10961) * Tagoras Bid Adapter : Initial release (#10826) * MinuteMediaPlus Bid Adapter: pass gpp consent to userSync server. * tagorasBidAdapter submission * update maintainer * Remove unneeded GVLID. * Adjust syncs condition logic in tagorasBidAdapter. * Insticator Bid Adapter: support optional video params (#10969) * add support for video params acc to ortb2.5 * update the optionalParams logic for buildVideo * update check for protocols * udpate validation for video params and added test case * pass document instance to custom renderer (#10959) * Oxxion Rtd Module: tracking time to run (#10955) * Oxxion Rtd Module: tracking time to run * Oxxion Rtd Module: tracking time to run * Oxxion Rtd Module: tracking time to run * IQX Bid Adapter : initial release (#10952) * new adapter - IQX * chang maintainer --------- Co-authored-by: Chucky-choo <dedafu47@gmail.com> * AJA Bid Adapter: add Global Placement ID support, remove native/video ad support (#10945) * add gpid support, remove native/video ad support * also added cdep support * AdFusion Bid Adapter : currency support (#10938) * adfusion bid adapter test * Add adapter and docs * add currency support * kick of integration tests --------- Co-authored-by: Łukasz <lukasz.kakol@spicymobile.pl> Co-authored-by: Chris Huie <phoenixtechnerd@gmail.com> * [TECH-6244] fix: add gvlid to adot adapter (#11) (#10975) * Agma Analytics Module : fix getting global config data (#10968) * Fix getting global config data * Increase internal version number * ID5 ID Module : ID5 will be able to optionally delegate its logic to an external module (#10742) * id-7317 Adding ability to load exernal module by param configuration * id-7317 Fixing bugs with id5 external module * id-7313 Addinf documentation to new externalModuleUrl parameter * id-7317 Typo * id-7317 Fix Lint error * id-7317 Some improvements from PR * id-7317 Some test iprovements * id-7317 Using loadExternalScript() utility instead of loading the script directly * id-7317 Lint error * id-7317 Fixing nb increments * ID5 User Id module - pass gpp consent data to external module --------- Co-authored-by: abazylewicz <abazylewicz@id5.io> Co-authored-by: abazylewicz-id5 <106807984+abazylewicz-id5@users.noreply.github.com> * JSdoc Lint Fixes for Multiple ID Modules (#10972) * fixes jsdoc * fix id jsdocs * jsdoc id fixes * jsdoc id fixes * fix id module lint * id lint fixes * fix lint jsdoc * jslint fixes * id jsdoc lint fix * jsdoc lint fixes * JSdoc Linting Fixes for Multiiple RTD Modules (#10973) * fix rtd jsdoc * jsdoc lint fixes * import jsdoc types * rtd jsdoc fixes * Insticator Bid Adaptor: add support for bidder video params (#10976) * add support for bidder video params * add comment for bidderspecific override * fix video validation empty condition * fix test case * Conversant adapter: use ortbConverter to handle requests and responses (#10913) Co-authored-by: johwier <john.wier@epsilon.com> * Missena Bid Adapter: send cookieDeprecationLabel and prebid version (#10979) * zMaticoo Bid Adapter : Initial Release (#10881) * feat:zMaticoo Bid Adapter for Prebid.js * feat:zMaticoo Bid Adapter for Prebid.js * feat:fix some code style * feat:fix some code style * feat:update package-lock.json --------- Co-authored-by: adam <L12354*。com> * MediaGo Bid Adapter : add pmguid, title, description, keywords and synchronize mguid from third party cookie to first party cookie. (#10923) * MediaGo Bid Adapter : update buyerId and add pmguid,title, description and keywords. * Discovery Bid Adapter : not filter params (#10965) * feat(isBidRequestValid): just filter token once. not filter publisher and tagid * feat(isBidRequestValid): add unit test * feat(spec): fix eslint * feat(spec): fix unit test * feat(spec): fix unit test --------- Co-authored-by: yubei01 <yubei01@baidu.com> * appnexus Bid Adapter - DSA support (#10971) * NextMillennium Bid Adapter : currency support in request (#10871) * added support for gpp consent string * changed test for nextMillenniumBidAdapter * added some tests * added site.pagecat, site.content.cat and site.content.language to request * lint fix * formated code * formated code * formated code * pachage-lock with prebid * pachage-lock with prebid * formatted code * added device.sua, user.eids * formatted * fixed tests * fixed bug functio getSua * currency * currency * Core & PBS adapter: fix race condition between network timeout and auction timeout (#10779) * Core: fix race condition between fetch timeout and auction timeout * PBS adapter: fix race condition between ajax timeout and auction timeout * Prebid 8.33.0 release * Increment version to 8.34.0-pre * Discovery Bid Adapter : synchronize mguid from third party cookie to first party cookie (#10927) * Discovery Bid Adapter : add title, desc, keywords, hLen, nbw, hc, dm add unit test resolve conflict * Discovery Bid Adapter : add title, desc, keywords, hLen, nbw, hc, dm add unit test * Discovery Bid Adapter : synchronize mguid from third party cookie to first party cookie --------- Co-authored-by: lvhuixin <lvhuixin@baidu.com> * JSdoc Lint Fixes for Multiple Adapters (#10967) * fix native * update ablida adgeneration * fix adkernel admatic * update type imports * js lint fixes * jslint appnexus * jslint jsdoc fixes * fix jsdoc warnings * lint fixes * lint fix * jsdoc updates * Update adgenerationBidAdapter.js * fix js doc * jsdoc type imports * jsdoc type updates * add types for jsdoc * jsdoc type updates * add types * jsdoc types added * import types * jsdoc updates * jsdoc type imports * type jsdoc import fixes * jsdoc type imports * jsdoc type import fix * lint fixes * fix jsdoc types * type imports * lint fixes jsdoc * jsdoc fixes * type imports for jsdoc * jsdoc type fixes * fxes for jsdoc types * jsdoc fixes * update mail (#10992) * Grid bid adapter : do not send topics along requests to the backend (#10995) * dfpAdServerVideo: add several parameters do DFP URLs (#10977) * SmileWanted - Add Video Instream, Video Outstream and Native support (#10996) Co-authored-by: QuentinGallard <quentin.gallard@digitalnolimit.com> * GC-179 Simpliy the userId module, and added feature to allow customers to provide custom EIDs (#11004) * E2E testing: Remove @wdio/sync and update @wdio/* to the latest (#10990) * Remove @wdio/sync and update the rest of the @wdio packages * Update the e2e tests to use async/await * Add support for local e2e testing * Update circleci to Node 16 * Update the min Node version to 12 and a a node check for e2e tests * Fix the Node version check error * Yandex Analytics Adapter: initial release (#10876) * Yandex Analytics Adapter: Initial release * Release preparations * Updated trackable events * Updated trackable events * tag URL * Added tests and chanded init logic * Fixed already loaded script scenario * One level of object destruction * Global domain, yandex.com * Removed script insertion logic * Update yandexAnalyticsAdapter.md --------- Co-authored-by: Stanislavsky34200 <stanislavsky34@gmail.com> * MgidX Bid Adapter: add optional region param (#10612) * new adapter - MgidX * add new required param host * rem host, add region --------- Co-authored-by: Evgeny Nagorny <evjman@gmail.com> Co-authored-by: xmgiddev <> * Video module: log error when adUnit provides unknown player div ID (#10664) * Video module: log error when adUnit provides unknown player div ID * moves error logging to separate function * remove trailing spaces * Update modules/videoModule/coreVideo.js --------- Co-authored-by: Karim Mourra <karim@jwplayer.com> * ZetaGlobalSsp: bugfix (#10882) Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> * Yieldmo Bid Adapter : send topics in the Bid Request (#10892) * Adding topics to bid request Getting topics and adding them to bid request. * converting topics to numbers * Adding unit tests * SilverMob adapter initial commit (#10896) * Update appnexusBidAdapter.js (#11009) * Topics fpd module : fix for intermitent failing test (#11013) * test pr for circleci * fix for failing topicsFpdModule tests * formatting fix * minor refactor * triggered another circle ci build * Appnexus Bid Adapter: Update DSA field names (#11027) * Adding gpc in the bid request (#11028) * Livewrapped Bidder: add support for ortb2imp (#11026) * Added support for the Price Floors Module * Use the ad server's currency when getting prices from the floors module * Default to USD if the ad server's currency can't be retrieved * Set the default currency at the right place * Added tests and made a minor change in how device width and height are calculated * Only include flrCur when ad requests contain floors * Use ortb native * Read ortb2imp --------- Co-authored-by: msmeza <moises@livewrapped.com> * BeOp Bid Adapter: add eids support (#11025) * BeOp Bid Adapter: Add eids support (#14) * Fix tests * AdagioBidAdapter: don't try to compute slot position if element is hidden (#11033) * priceFloors: do not log error on missing floor definitions (#11037) * Prebid 8.34.0 release * Increment version to 8.35.0-pre * OpenX Bid Adapter: add ortb2Imp to PAAPI auctionSignals (#11012) * OpenX Bid Adapter: add ortb2Imp to PAAPI auctionSignals * Use imp instead of searching ortbRequest * ZetaGlobalSsp Bid Adapter : cleanup object (#11049) * ZetaGlobalSsp adapter: cleanup object * Update zeta_global_sspBidAdapter.js --------- Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> Co-authored-by: Chris Huie <phoenixtechnerd@gmail.com> * zmaticoo Bid Adapter : add support for video (#11016) * feat:zmaticoo adapter for video Signed-off-by: adam <L12354*。com> * feat:just test ci/circleci:build failed Signed-off-by: adam <L12354*。com> * feat:add unit test Signed-off-by: adam <L12354*。com> * feat:fix response.seatbid and advertiserDomains empty Signed-off-by: adam <L12354*。com> * feat:add unit test Signed-off-by: adam <L12354*。com> --------- Signed-off-by: adam <L12354*。com> Co-authored-by: adam <L12354*。com> * ZetaGlobalSsp: provide device.sua object (#11050) Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> * Rise BidAdapter : add support for gpp (#11051) * support gpp in rise and minutemedia * modified tests * removed mm gpp support * updated rise test * fix for gpp section --------- Co-authored-by: Inna Yaretsky <> * MinuteMedia BidAdapter : add support for gpp (#11052) * add Rise adapter * fixes * change param isOrg to org * Rise adapter * change email for rise * fix circle failed * bump * bump * bump * remove space * Upgrade Rise adapter to 5.0 * added isWrapper param * addes is_wrapper parameter to documentation * added is_wrapper to test * removed isWrapper * Rise Bid Adapter: support Coppa param (#24) * MinuteMedia Bid Adapter: support Coppa param (#25) * Revert "MinuteMedia Bid Adapter: support Coppa param (#25)" (#26) This reverts commit 66c4e7b46121afc5331c8bca6e2fc972fc55f090. * bump * update coppa fetch * setting coppa param update * update Coppa tests * update test naming * Rise Bid Adapter: support plcmt and sua (#27) * update minuteMediaBidAdapter - support missing params (#29) * support gpp for minutemedia adapter * removed spaces * removed extra character --------- Co-authored-by: Noam Tzuberi <noam.tzuberi@ironsrc.com> Co-authored-by: noamtzu <noamtzu@gmail.com> Co-authored-by: Noam Tzuberi <noamtzu@users.noreply.github.com> Co-authored-by: Laslo Chechur <laslo.chechur@ironsrc.com> Co-authored-by: OronW <41260031+OronW@users.noreply.github.com> Co-authored-by: lasloche <62240785+lasloche@users.noreply.github.com> Co-authored-by: YakirLavi <73641910+YakirLavi@users.noreply.github.com> Co-authored-by: YakirLavi <yakir.lavi@risecodes.com> Co-authored-by: Inna Yaretsky <> * feat: remove dependency on EID Allowlist [ADDR-2801] (#10988) Co-authored-by: Sajid Mahmood <sajid.mahmood@indexexchange.com> * Bump release-drafter/release-drafter from 5 to 6 (#11053) Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 5 to 6. - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/v5...v6) --- updated-dependencies: - dependency-name: release-drafter/release-drafter dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Criteo bid adatper: add logic to handle dsa in bid request/response (#11043) Co-authored-by: v.raybaud <v.raybaud@criteo.com> * Onetag Bid Adapter: add DSA support (#11036) Co-authored-by: federico <f.liccione@onetag.com> * Add GVLID to illuminBidAdapter module. (#11060) * PGAMSSP Bidder Adapter: add id5id (#11024) * new adapter PGAMSSP * upd * support UID 2.0 * del obj * Add id5id * Missena Bid Adapter: add session identifier (#11058) * Grid bid adapter: add logic to handle dsa in bid request/response (#11042) Co-authored-by: v.raybaud <v.raybaud@criteo.com> * Sharethrough Bid Adapter: support Fledge + refine video-placement req logic (#11048) * Modify value-setting logic for video-placement reqs * Updating value-setting logic in `buildRequests()` method so that `placement` property in video requests does not possibly get overridden to 1 as a value if `plcmt` is also present as a property. (Current logic sets `placement` at 1 if `context` is "instream".) * Support for Fledge * Adding updates to our unit tests and the relevant methods in our bid adapter to make it ready, eventually, for Fledge auctions. * Innity Bid Adapter: handle empty response from server (#10960) * Handle empty response from server * Add space before blocks and add unit test for result with no bids * Add skippedReason property to floorData. (#11040) * GumGum Bid Adapter: fix size in the bid response for multi size slot sizes (#11064) * Fix for the multi-size in- slot * added comment * Addition of ImproveDigital's Topics API iframe (#10986) * Core: use same transaction ID for twin ad units (#10962) * swith transactionId to adUnitId * use same TID for ad units with the same code * fix appnexus clones * snigel Bid Adapter : pass more information to backend (#10987) * snigelBidAdapter: pass more information to backend * snigelBidAdapter: add unit tests for the new functionality * rayn rtd provider module (#11054) Co-authored-by: Berislav Kovacki <berislav@kovacki.com> * mediasquare Bid Adapter: add DSA support (#11070) * mediasquare Bid Adapter: add DSA support * mediasquare Bid Adapter: add DSA support * PBjs Core : add ability to inject tracking in video (#10191) * add vast impression tracking * support additional context macro * fix spaces and singlequotes * remove 2494945CONTEXT2494945 macro * remove CONTEXT macro * do not update vastImpUrl anymore * add impression trackers in video cache * insert ony unique trackers * rename registerVastTrackers * rename arrayVastTrackers * trackers object change * check modules are allowed to add trackers based on isActivityAllowed * rename validVastTracker and add line breaks * removes duplicates verification in isValidVastTracker * changes in wrapURI + typo fix * requested changes * update function trackersToMap * using Set in trackers map * changes suggested by dgirardi * changes suggested by dgirardi * Update test/spec/video_spec.js Co-authored-by: Karim Mourra <karim@jwplayer.com> * add spaces --------- Co-authored-by: Karim Mourra <karim@jwplayer.com> * Adform Bid Adapter: add DSA support (#11066) * Vidazoo Bid Adapter: Implement onBidWon (#11057) * Add 'onBidWon' function and 'nurl' handling to vidazooBidAdapter * Add 'onBidWon' function and 'nurl' handling to vidazooBidAdapter * This update introduces the 'onBidWon' function to the vidazooBidAdapter module, and enhances handling for the 'nurl' property. * Adquery Bid Adapter : IdSystem fix getId and decode method, added userSync with iframe type (#11019) * adquery/prebid_qid_work5 * adquery/prebid_qid_work4 * NextMillenium Bid Adapter : added support for the keywords parameter openrtb (#11018) * added support for gpp consent string * changed test for nextMillenniumBidAdapter * added some tests * added site.pagecat, site.content.cat and site.content.language to request * lint fix * formated code * formated code * formated code * pachage-lock with prebid * pachage-lock with prebid * formatted code * added device.sua, user.eids * formatted * fixed tests * fixed bug functio getSua * added support keywords * added support keywords - code style * changed test for otrb parameters * Contentexchange Bid Adapter: add gvlid (#11079) * add contentexchange bid adapter * fixes * fix * fix test * validate meta * fix * add GVLID * Prebid 8.35.0 release * Increment version to 8.36.0-pre * Core: fix missing AD_RENDER_SUCCEDED for outstream renderers (#11073) * IX Bid Adapter: support DSA fields [ADDR-2990] (#11069) Co-authored-by: Sajid Mahmood <sajid.mahmood@indexexchange.com> * PBjs Core Utils: fix deepEqual() to work correctly on sites where Array.prototype has been extended (#11077) * Make utils.deepEqual() work correctly on sites where Array.prototype has been extended * Removed blank line * Marginal improvement --------- Co-authored-by: Demetrio Girardi <dgirardi@prebid.org> * Yieldlab Bid Adapter: Add Digital Services Act (DSA) handling (#10981) * YieldlabBidAdapter add Digital Services Act (DSA) handling for bid request and responses * YieldlabBidAdapter - read dsa from bidderRequest - put dsa response under meta.dsa not ext.dsa - handle multiple transparency objects under new parameter dsatransparency - only add query params if they are not undefined * Fixed build and improved docs (#11078) * Build system: add --no-lint-warnings option (#11082) * dsaControl module: Reject bids without meta.dsa when required (#10982) * dsaControl - reject bids without meta.dsa when required * ortbConverter: always set meta.dsa * dsaControl: reject bids whose DSA rendering method disagrees with the request * Prebid 8.36.0 release * Increment version to 8.37.0-pre * NoBid Analytics Adapter: added support for flag to control bidWon and auctionEnd independently. (#11087) * Enable supplyChain support * Added support for COPPA * rebuilt * Added support for Extended User IDs. * Added support for the "meta" attribute in bid response. * Delete nobidBidAdapter.js.orig * Delete a * Delete .jsdtscope * Delete org.eclipse.wst.jsdt.ui.superType.container * Delete org.eclipse.wst.jsdt.ui.superType.name * Delete .project * Added support for counting blocked requests for the Optimizer. * Added missing function for testing. * Added unit tests * Added support for Analytics adapter flag to control bidWon and auctionEnd independently. --------- Co-authored-by: Reda Guermas <reda.guermas@nobid.io> * Microad Bid Adapter: send gpid and other to our request. (#11076) * Microad Bid Adapter: add gpid and other * Microad Bid Adapter: use deepAccess * Microad Bid Adapter: To simple existing check --------- Co-authored-by: kida-yuga <kida_yuga@micoad.co.jp> * StroeerCore Bid Adapter: add DSA support (#11083) * Teads adapter: add dsa info support in bid request & response (#11080) * Richaudience Bid Adapter : add compatibility to GPP (#11022) * RichaudienceBidAdapter add function onTimeout * Add unit test * revert: Revert changes in integrationExamples/creative.html * fix: Remove useless package in richaudiences test module * Change referer with host * Fix(RichaudienceBidAdapter): Change url tracking * deploy * change test * remove change others adapters * feat(RichaudienceBidAdapter): Add compatibility to GPP * fix(RichaudienceBidAdapter): Add test to GPP * fix(RichaudienceBidAdapter): Add test to GPP * fix(RichaudienceBidAdapter): Change tmax/timeout hardcoded #9787 --------- Co-authored-by: Sergi Gimenez <sergi.gimenez@exte.com> * add OpenX topics iframe (#11039) * ✨ add sellerCurrency to fledge auction config for criteo bid adapter (#11084) Co-authored-by: v.raybaud <v.raybaud@criteo.com> * greenbids Analytics Adapter: fix double sampling bug (#11090) * greenbidsAnalyticsAdapter: fix double sampling bug * greenbidsAnalyticsAdapter bump version * mediasquare Bid Adapter: minor change with floors (#11100) * PAAPI/fledgeForGpt: make auction configs available independently from GPT (#10930) * paapi module * fledgeForGpt/paapi split and config aliases * Add reuse = false option and GPT slot reset * simpler log messages * fix reuse * refactory reset logic * remove reuse option, treat auction configs as single-use * do not do global reset if called with auction filter * at auction end autoconfig, reset all slots involved in the auction * includeBlanks * use includeBlanks from fledgeForGpt * Add Onetag topics iframe (#11091) Co-authored-by: onetag-dev <f.orazini@onetag.com> * Use built-in sampling (#11041) * Rubicon Bid Adapter: pass DSA fields (#10974) * Pass DSA fields through fastlane.json * adjusting field names to reflect IAB changes * adjust to new field names * Add DSA meta field for biiders * Add an unit test to handle DSA in response * Update the comments --------- Co-authored-by: bretg <bgorsline@gmail.com> * Fix build (#11098) * Lucead Bid Adapter: Add new adapter (#11068) * Add Whitebox adapter * Add Lucead Bid Adapter * update maintainer * update endpoint url * Adnuntius Bid Adapter: Allow user ID to be passed as parameter (#11029) * Removed linting issues * Fixed merge issues. * Bugfix on storageTool. * Change to pass user ID as a parameter to the adserver. * fetch user id from paraters comment. --------- Co-authored-by: Antonios Sarhanis <tsarhanis@gmail.com> * Adagio Bid Adapter: add DSA support (#11096) * RTB House Bid Adapter: add DSA support (#11097) * RTB House adapter: add DSA support * RTB House: add DSA support with extended field control * The Moneytizer Bid Adapter: initial release (#11047) * Prebid 8.37.0 release * Increment version to 8.38.0-pre * ZetaGlobalSsp Analytics Adapter: keep only needed fields in event (#11107) * ZetaGlobalSspAnalyticsAdapter: keep only needed fields in event * - --------- Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> * Add AdButler bid adapter (#11011) * define split between exploratory and non exploratory sides of the deterministic sampling hash (#11104) * Taboola Bid Adapter: fix cookie look up logic and gpp extracting (#11109) * cookie-look-up-logic-fix-gpp-fix * pass-version * add schain support (#11111) * Readpeak Bid Adapter : remove click url encoding (#11120) * Add banner support to readpeak bid adapter * Add onBidWon callback to trigger burl * Remove .only from test * Fix merge * Revert package-lock.json version update * Remove encoding of click target URL --------- Co-authored-by: Tuomo Tilli <tuomo.tilli@readpeak.com> Co-authored-by: readpeaktuomo <66239046+readpeaktuomo@users.noreply.github.com> * fix handling of default settings for rubiconBidAdapter (#11114) Co-authored-by: Serhii Mozhaiskyi <smozhaiskyi@rubiconproject.com> * Zeta Global Ssp Adapter: remove null values from payload (#11092) * ZetaGlobalSsp: remove null values from payload * unit test --------- Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> * Kimberlite Bidder Adapter: initial commit (#11032) * Kimberlite bid adapter (#1) * initial: bid adapter * styling * Fix: lint (#2) * Fix: lint (#4) * review fixes (#6) * Change: filling request.ext.prebid section (#7) --------- Co-authored-by: Oleg <oleg.s@solta.io> * Pass TTD cookie through prebid endpoint (#11119) * Euid id module: cstg opt out enforcement (#11075) * initial technical implementation * initial technical implementation * test and doc update * optout check in encrypted payload * fixed cstg example config * Conversant Adapter: fix response handling (#11122) Co-authored-by: johwier <john.wier@epsilon.com> * Yieldmo Bid Adapter: send topics as string for request (#11121) * Convert topics to string * Update unit test * Bump ip from 1.1.8 to 1.1.9 (#11124) Bumps [ip](https://github.com/indutny/node-ip) from 1.1.8 to 1.1.9. - [Commits](https://github.com/indutny/node-ip/compare/v1.1.8...v1.1.9) --- updated-dependencies: - dependency-name: ip dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Core: rendering logic overhaul, PUC-less native rendering (#10819) * Refactor rendering to go through a single code path * Build creative together with js * Fix pubUrl / pubDomain * Update dev tasks for creative building * Cross-domain render * Clean up empty fn * Autogenerated cross-domain creative example * Update text * Refactor creative * fix lint * Add test case for custom renderer * use URL instead of a tag * avoid using document.write * build creative together with bundle * direct rendering through display renderer * move mkFrame in base creative * do not share code between creative and core * lint cross-imports between creative and core * dynamic renderer in remote creative * remove support for non-messageChannel * take window instead of document in renderers * separate native rendering data from messaging logic * include native rendering data in response messages * move message rendering data into native rendering module * move video module render logic to video module * extract resize logic * extract native resizing & tracking messages * refactor creative renderers * WIP: native renderer * native rendering and messages * use results/rejections to emit ad render succeeded/failed * use offsetHeight, not clientHeight * refactor placeholder replacement logic * Fix firefox promises, add integ examples * update creative/README.md * fix integ examples * update README * native renderer: small size improvements * 33Across User ID sub-module: Introduce first-party ID support (#10714) * Introduce first-party ID support to 33Across User ID sub-module. Resolves IDG-1216. * Ensure first-party ID is removed for local storage in situations like GPP conssent change * 33Across User ID sub-module: Add cookie storage support for first-party ID, * 33Across User ID sub-module: Also remove first-party ID from cookie storage * remove duplicated 33across ID test * clear 33across ID from localstorage * Add configuration flag for 1PID * Suppress 33across ID requests where GDPR applies --------- Co-authored-by: Joshua Poritz <joshua.poritz@33across.com> Co-authored-by: Carlos Felix <carlos.felix@33across.com> Co-authored-by: Aparna Rao <aparna.hegde@33across.com> * New bidder adapter : RixEngine (#11035) * RixEngine Bid Adapter: Add RixEngine bid adapter * update rixengineBidAdapter_spec.js * remove the user ID opt in and provide a test endpoint --------- Co-authored-by: Yuanchang <yuanchang@algorix.co> * change expire recommendation from 90 to 30 (#11130) Co-authored-by: Anthony Lin <anthony.lin@33across.com> * add required version (#11127) * cleanup references to allowAuctionWithoutConsent (#11129) * fix video object null in validate request (#11128) * Reset Digital Bid Adapter: updating users syncs (#11126) * Update resetdigitalBidAdapter.js * updating usersync URL * fix user syncs for test * Alkimi Bid Adapter: add custom user object (#11093) * Alkimi bid adapter * Alkimi bid adapter * Alkimi bid adapter * alkimi adapter * onBidWon change * sign utils * auction ID as bid request ID * unit test fixes * change maintainer info * Updated the ad unit params * features support added * transfer adUnitCode * transfer adUnitCode: test * AlkimiBidAdapter getFloor() using * ALK-504 Multi size ad slot support * ALK-504 Multi size ad slot support * Support new OpenRTB parameters * Support new oRTB2 parameters * remove pos parameter * Add gvl_id into Alkimi adapter * Insert keywords into bid-request param * Resolve AUCTION_PRICE macro on prebid-server for VAST ads * Added support for full page auction * Added custom user object --------- Co-authored-by: Alexander <32703851+pro-nsk@users.noreply.github.com> Co-authored-by: Alexander Bogdanov <akascheev@asteriosoft.com> Co-authored-by: Alexander Bogdanov <abogdanov@asteriosoft.com> Co-authored-by: motors <motors@live.ru> Co-authored-by: mihanikw2g <92710748+mihanikw2g@users.noreply.github.com> Co-authored-by: Nikulin Mikhail <mnikulin@asteriosoft.com> Co-authored-by: mik <mihanikw2g@gmail.com> * Unified ID 2.0 Module: Update documentation (#11105) * Update UID2 User ID submodule documentation - Link to guides on unifiedid.com - Replace references to "CSTG" with "client-side integration" - Split up params based on integration type - Link to unifiedid.com for normalization and encoding * Address UID2 documentation feedback * Fix uid2_pub_cookie and storage example values * Address review feedback * Restore deleted context about normalizing and encoding * Use a code block for sample token * Fix example for value * Address review feedback * Prebid 8.38.0 release * Increment version to 8.39.0-pre * GreenbidsAnalyticsAdapter: bump version following previous PR (#11135) * Rubicon Bid Adapter: Pass on carbon segtaxes (#10985) * Pass through Carbon segments * Fix rubiconBidAdapter for unit tests * segtax spec * Fix access issues * Remove dup ortb2 work * Adjust unit tests * Fix lint issues * Add all desired segtaxes * Fix unit tests * Fix linting * Don't concat undefined * Unit test pub added segtaxes * Pull site data from site.content.data * Update unit tests * Blockthrough Bid Adapter: initial release (#10870) * PE-87: Implement Prebid Adapter (#1) * PE-87: implement BT Bid Adapter * PE-87: rework adapter to use ortbConverter lib, make requested changes * PE-87: update imports * PE-110: Add user sync logic to the Prebid Adapter (#3) * PE-110: add user sync logic * PE-110: update userSync url * PE-110: check if iframe is enabled before setting params * PE-111: BT Prebid Adapter can request AA ads or regular ads (#2) * PE-120: Send Prebid Bidder info to BT Server (#4) * PE-120: add btBidderCode to the bid object * PE-120: use single quotes for logs string * PE-123: Add More Metadata in site.ext.blockthrough (#5) * PE-123: send additional meta data * PE-123: send auctionID under imp.ext.prebid.blockthrough * PE-123: use ortb2 config to set site.ext params * PE-123: sent auctionId in ext.prebid.blockthrough.auctionID * PE-123: update logs for bidderConfig setup * PE-000: check if blockthrough is defined (#6) * PE-87: remove BT specific logic (#7) * Implement Blockthrough Prebid Adapter * PE-87: Implement Prebid Adapter - misc fixes (#9) * PE-87: rename test file, add bidder config * PE-87: increase ttl * PE-000: fix test * BP-74: Change the way we enable debug (#10) * BP-79: Send GPID as a part of `imp[].ext` (#11) * BP-79: send gpid in imp.ext * BP-79: add optional operator * BP-90: Update Cookie Sync Logic (#12) * BP-90: pass bidder to cookie sync * BP-90: update sync logic, fix typo * BP-90: use const for syncs variable * BP-55: Re-add endpoint URLs (#13) * BP-91: Add prebid JS version to auction request (#14) * OMS Adapter: add new adapter (#10924) * OMS Adapter: add new adapter * OMS Adapter: fix tests * OMS Adapter: required changes * OMS Adapter: change ttl * OMS Adapter: required changes * zMaticoo Bid Adapter : add onBidWon function (#11056) * feat:add onBidWon function Signed-off-by: adam <L12354*。com> * bug:remove bidid and device required logic Signed-off-by: adam <L12354*。com> --------- Signed-off-by: adam <L12354*。com> Co-authored-by: adam <L12354*。com> * Criteo bid adapter: add fledge timeout and group limits (#11125) Set timeout to 50ms and 60 maximum interest groups per buyer * Reset Digital Bid Adapter: usersync url (#11138) * Updating image-based syncs url * minor config fix * Yandex: use ortb2 info & Core: add webdriver flag (#11110) * feat: add ortb2 types * feat: add ortb2 info to yandex * feat: add device.ext.webdriver to prebid core * fix: remove webdriver detection from yandex adapter * fix: adjust ortb2 types * Logicad Bid Adapter: Add paapi support (#11123) * Logicad Bid Adapter: Add paapi support * Logicad Bid Adapter: fix * Logicad Bid Adapter: fix test * Magnite Analytics: Check if prebid cache was called for video tracking (#10928) * add signal for client side cache * use Demetrio suggestion in magnite adapter instead * fix lint * test update * use weakset and remove once found * Demetrio knowledge transfer * Taboola Bid Adapter - support topics handling (#11139) * cookie-look-up-logic-fix-gpp-fix * Append support for topics in taboolaPrebidAdapter * test fix --------- Co-authored-by: ahmadlob <109217988+ahmadlob@users.noreply.github.com> Co-authored-by: Ahmad Lobany <ahmad.l@taboola.com> * Adagio Bid Adapter: fix ortb delivery video param validation (#11144) * JsDoc Lint Fix : multiple adapters and modules (#11103) * update jsdoc * add typedef * update typedef * fix typo * update jsdoc objectguard * fix colon issue * add typdef * fix rtdmodule doc * fix a few adapters * fix bid adapters * fix prisma * remove array syntax * fix adot * update jsdoc * update jsdoc colon * fix errors * fix params * fix jsdoc * add typedef * add typedef and fix * fix errors * import types * fix jsdoc warnings * fix warnings * add typedef * jsdoc fixes * jsdoc fixes * fix warnings * fix warnings * Mediaimpact Bid Adapter: initial release (#11099) * Add mediaimpact bid adapter * Add mediaimpact bid adapter tests --------- Co-authored-by: koshe <koshelev.alexandr@gmail.com> * Lucead Adapter: update (#11143) * Lucead Adapter: update * update endpoint url * update tests * ZetaGlobalSsp Bid Adapter: provide dspId into bid (#11150) Co-authored-by: Surovenko Alexey <surovenko.alexey@gmail.com> Co-authored-by: Alexey Surovenko <ASurovenko@vdhk6ddf9m.home> * Adspirit Bid Adapter: initial release (#10939) * Add files via upload * Add files via upload * Update adspiritBidAdapter.js updated version with testcases * Update adspiritBidAdapter.md updated version add gdpr und privacy polices * testcases for adspirit adapter 1/2024 Added all the necessary test cases * Update adspiritBidAdapter_spec.js kicking off unit tests * kick of circleci * Update adspiritBidAdapter.js Bid Response is updated to outside of the condition with the shared values and here conditions only set the data that's specific to that use case * Update adspiritBidAdapter.md kicking off circleci ? --------- Co-authored-by: Patrick McCann <patmmccann@gmail.com> Co-authored-by: Chris Huie <phoenixtechnerd@gmail.com> * fix hadron ID module name (#11151) * Criteo bid adapter: raise Fledge timeout (#11152) Raise from 50ms to 500ms * Stn Bid Adapter: initial release (#11085) * stnBidAdapter: initial release * update endpoints * update stnBidAdapter * update the test mode params * Fixed use of adUnitId for analytics purpose (#11160) Co-authored-by: pm-azhar-mulla <azhar@L1119.local> * adspiritBidAdapter - fix lint errors in unit test file (#11163) * Prebid 8.39.0 release * Increment version to 8.40.0-pre * Opsco Bid Adapter : initial release (#11112) * Opsco bid adapter init commit * Opsco bid adapter banner implementation * Changing test parameter * Changing endpoint --------- Co-authored-by: adtech-sky <adtech@graysonsky.com> * ID5 User Id module - expose euid as a separate eid object (#11158) * Triplelift Bid Adapter: Optimize EID Signals (#11168) * MPY-77: Updated EID logic to ingest as is * MPY-77: Updated EID logic to ingest as is * Azerion Edge RTD Module: Initial release (#11134) * Azerion Edge RTD Module: Initial release ### Type of change [x] Feature: New RTD Submodule ### Description of change Adds new Azerion Edge RTD module. Maintainer: azerion.com Contact: @garciapuig @mserrate @gguridi * Azerion Edge RTD Module: Initial release. Typo * feat: pangle multi format (#11175) * NoBid Analytics Adapter: support for multiple currencies (#11171) * Enable supplyChain support * Added support for COPPA * rebuilt * Added support for Extended User IDs. * Added support for the "meta" attribute in bid response. * Delete nobidBidAdapter.js.orig * Delete a * Delete .jsdtscope * Delete org.eclipse.wst.jsdt.ui.superType.container * Delete org.eclipse.wst.jsdt.ui.superType.name * Delete .project * Added support for multiple currencies to the NoBid Analytics adapter. --------- Co-authored-by: Reda Guermas <reda.guermas@nobid.io> * Fix for bids without userId specified. (#11170) * adstirBidAdapter support topic api (#11177) * inline ttd and refactor test (#11174) * NextMillennium Bid Adapter: removed the use of the events module (#11141) * added support for gpp consent string * changed test for nextMillenniumBidAdapter * added some tests * added site.pagecat, site.content.cat and site.content.language to request * lint fix * formated code * formated code * formated code * pachage-lock with prebid * pachage-lock with prebid * formatted code * added device.sua, user.eids * formatted * fixed tests * fixed bug functio getSua * deleted deprecated code wurl * removed the use of the events module * added parameters w and h for imp[].banner objecct * Colossus Bid Adapter: Add GPP Support and Accept eids from publisher request (#11155) * add video&native traffic colossus ssp * Native obj validation * Native obj validation #2 * Added size field in requests * fixed test * fix merge conflicts * move to 3.0 * move to 3.0 * fix IE11 new URL issue * fix IE11 new URL issue * fix IE11 new URL issue * https for 3.0 * add https test * add ccp and schain features * fix test * sync with upstream, fix conflicts * Update colossussspBidAdapter.js remove commented code * Update colossussspBidAdapter.js lint fix * identity extensions * identity extensions * fix * fix * fix * fix * fix * add tests for user ids * fix * fix * fix * fix * fix * fix * fix * add gdpr support * add gdpr support * id5id support * Update colossussspBidAdapter.js add bidfloor parameter * Update colossussspBidAdapter.js check bidfloor * Update colossussspBidAdapter.js * Update colossussspBidAdapter.js * Update colossussspBidAdapter.js * Update colossussspBidAdapter_spec.js * use floor module * Revert "use floor module" This reverts commit f0c5c248627567e669d8eed4f2bb9a26a857e2ad. * use floor module * update to 5v * fix * add uid2 and bidFloor support * fix * add pbadslot support * fix conflicts * add onBidWon * refactor * add test for onBidWon() * fix * add group_id * Trigger circleci * fix * update user sync * fix window.location * fix test * updates * fix conflict * fix * updates * remove traffic param * add transactionId to request data for colossusssp adapter * Send tid in placements array * update user sync * updated tests * remove changes package-lock file * fix * add First Party Data * gpp support * accepting eids from request * fixing lint errors * resolving a conflict * fixing a failed test case related to tid * fixing karma version for conflict resolution * reverting package json files to original version --------- Co-authored-by: Vladislav Isaiko <vladis@smartyads.com> Co-authored-by: Aiholkin <artem.iholkin@smartyads.com> Co-authored-by: Bill Newman <huddled.masses1650@gmail.com> Co-authored-by: Mykhailo Yaremchuk <m.yaremchuk@smartyads.com> Co-authored-by: kottapally <bhasker@gytworkz.com> * Cwire adapter: Add gvl_id for tcfeu compliance (c-wire/support#117) (#11181) * Vidazoo Bid Adapter : more ortb2 data and fledge support (#11182) * Pass ortb2 content data and user data to server. * Pass ortb2 content data and user data to server. * added fledge flag to to request * [JW Player RTD Module] Deprecate playerID (#11179) * renames player ID * updates tests * Delete test/spec/modules/enrichmentFpdModule_spec.js (#11188) * Prebid 8.40.0 release --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: adam <L12354*。com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: joseluis laso <jlaso@users.noreply.github.com> Co-authored-by: Viktor Dreiling <34981284+3link@users.noreply.github.com> Co-authored-by: AdmixerTech <35560933+AdmixerTech@users.noreply.github.com> Co-authored-by: Yaroslav Masenko <intgr-user@admixer.ua> Co-authored-by: Olivier <osazos@adagio.io> Co-authored-by: redaguermas <redaguermas@gmail.com> Co-authored-by: Reda Guermas <reda.guermas@nobid.io> Co-authored-by: Demetrio Girardi <dgirardi@prebid.org> Co-authored-by: ahmadlob <109217988+ahmadlob@users.noreply.github.com> Co-authored-by: Nick Jacob <nickbjacob@gmail.com> Co-authored-by: jackhsiehucf <77815341+jackhsiehucf@users.noreply.github.com> Co-authored-by: root <root@ubuntu.members.linode.com> Co-authored-by: Ryan Chou <ryanchou0210@gmail.com> Co-authored-by: ucfunnel <support@ucfunnel.com> Co-author…
Type of change
Description of change
Allows modules to register impressions tracking urls which can be inserted into vast XML and concatenated into vastImpUrl for video bids. This helps modules to track impression events for instream.
I've also added a custom macro to add video context in the tracking urls as otherwise it's not available in the bidResponse object.
I haven't managed other tracking events available in vast because it would be doable only within vastXml responses but not for vastUrl. This could be done later after checking how to handle this for bid responses with video urls.
Other information
This was discussed in #10106 so I give it a try.