-
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
s2sConfig requires at least one bidder when allowUnknownBidderCodes is true #8668
Comments
the Maybe we need a way to specify ortb2Imp by adUnit and bidder? so that your example might look like:
|
I really like your suggestion @dgirardi . We have similar requirements in the future. The prebidServerAdapter is a valid bidder, so why not give it a proper This could open the doors for a lot of potential improvements and customizations. |
The PBS adapter is not really a bidder - it only looks like one when using stored requests, but it general, it can't do anything unless you give it other bidders to funnel to the server. Internally it does not make sense to give it a bidder code (what would it mean to do But I won't argue about the aesthetics - we could give it a special code that means "this is a stored request/response", but is not valid as a bidder code elsewhere; or we could ask for something like |
Seems to me there are two issues here:
When should the pbsBidAdapter call Prebid Server in the "less" scenario?Dug up the history on this. This comment seems to be the most relevant:
What's exposed by this issue is that our first answer didn't address the "mix of client- and server-adapters" scenario... it required absolutely no bids array. Ok. Here's a cut at evolving the model -- how about we generalize the bids[] object with a destination 'module'? This would be similar to the idea behind s2sConfig.adapter -- that there could be a competing (slimmed down?) pbsBidAdapter someday.
Then the pbsBidAdapter would have several sources of data for each imp:
stored-request-IDs are not currently supported per-bidderWe have an issue where some bidders would consume any globally-defined SRIDs and might choke on them. e.g. Rubicon. While it's not intended that a global ortb2Imp.ext.prebid.storedrequest would be forwarded to the Rubicon video endpoint, it would, and would likely cause problems. Options:
It's possible we might someday need per-bidder ortb2Imp, but IMO, storedrequests are not a strong use case for the syntactic headache. |
Discussed with @dgirardi and @patmmccann. Revised proposal:
Here's how PBS tries to figure out what to put in the ORTB:
|
Sorry I missed the discussion in the PMC 😞 In general I agree with the outcome. However I'm a little nervous about the multiple additional parameters when from my point of view is everything in place. I want to pick up @dgirardi statement
I argue that the PBS Adapter is a real bidder. The main difference IMHO is that instead of returning everything with the same bidder code, it transparently returns the bidder that won the auction. There are couple of SSPs that trade bid requests to other SSPs, but hide the fact. The Xandr client adpater also works with prebid server (if I got this right) and then returns the winning bidder. With #8154 (adding allowUnknownBidderCodes) this behaviour is now officially available. And yes, somethings don't work as easy as before (#8629). What I'm aiming at. The pbjs.setConfig({
s2sConfig: [{
defaultVendor: "my-bidder",
...
},{
defaultVendor: "rubicon",
...
}]
}); and the ad unit would reference this vendor (fair enough, pbjs.addAdUnits([{
code: 'example-stored-request',
ortb2Imp: { ... cross-bidder params ... },
bids: [
{
bidder: "my-bidder",
params: {
ortb2Imp: {
ext: {
prebid: {
storedrequest: {
id: 'stored-request-id'
}
}
}
}
},
{ ... other actual bidders ... }
]
}
}]) And from an internal implementation point of view, the Yes, this treats the So a generic, pbs server adapter that speaks OpenRTB would replace some adapters entirely. You could either configure an SSP like in the example above or the client side adapter does nothing more than registering a new instance of the This would be a huge step towards #5001 |
@muuki88 - I have some reservations about some details in your suggestion, but in the end I think we're close to saying the same thing: My concerns:
FWIW, the "defaultVendor" feature has been bothering me for some time. It's not ideal that these 3 SSPs are enshrined in the pbsBidAdapter module when there are many dozens of PBS host companies. The PBJS package carries around these extra URLs whether the pub uses them or not. If 20+ PBS host companies insisted on being in https://github.com/prebid/Prebid.js/blob/master/modules/prebidServerBidAdapter/config.js, that would add up to a bunch of unnecessary bytes. Maybe we could utilize the new FEATURES thing? Something like this:
But anyhow, I get that it's kinda ugly to have both "defaultVendor" and "configName". They overlap for sure. How about if configName were optional in s2sConfig and the AdUnit configName would look for either it or defaultVendor? This would support the scenario where a PBS vendor isn't configured as one of the enshrined defaults. |
Here's another, perhaps quicker solution to the specific use case brought up by FreeStar:
This is probably easier from a publisher perspective than having to modify the AdUnit.bids to have a specific PBS entry. |
The stored request would be "global" only to the adUnit - from ortb2Imp. That's quicker to implement, and easier for the publisher. But it's still a workaround - essentially just syntactic sugar for the one in the OP, and I think in the long run it will create confusion. As soon as there's more than one party interested in stored requests for the same adUnit, it will not make sense to treat it that way, but potentially breaking to stop doing it. Because the existing workaround is not that onerous, my sense is that it'd be better to ride on it for now and aim for the larger proposal - what do you think @SSaboFS ? |
Spoke with @nicgallardo -- seems like perhaps the 'explicit signal add PBS as a bidder' might work for them. One question is going to be about validations... should pbsBidAdapter allow imp to go out that are just imp.id and imp.{banner,video,native}? Freestar might be making a custom PBS-side module to support their use case, which would mean they don't need imp.ext.prebid at all. So I'd say no validations needed on the JS side. |
Reviewed this thread and trying to summarize the various use cases. This is an upgrade of was done before to support the harder scenarios. Here are the assumptions:
Scenario 0: Backwards compatible. if s2sConfig specifies bidders and the AdUnit bids array doesn't specify any 'modules', everything works as it does today. Scenario 1: Prebid.less with multiple PBS. AdUnit bidder list defines only the two Prebid Servers and PBS-specific ortb2imp.ext.prebid.storedrequest.id (Note: for the case of 1 PBS, just imagine removing the 'pbs2' entries.)
The imp sent to pbs1 would look like:
Scenario 2: Mixed client- and server-side bidders with multiple PBS. Server-side bidders are specified in the s2sConfig, but there's also PBS-specific storedrequest in the AdUnit.
The imp sent to pbs1 would look like:
I think these two scenarios and the proposed meet all of the constraints. It's true that the syntax is not as simple as we'd like it to be, but I don't think we can simplify the syntax without breaking some use cases. |
I'd like to expand this proposal to also handle bidder-specific
This would generate client-side bid requests like
it would merge
|
Type of issue
Question/Feature request
Description
When defining the s2sConfig a
bidders
array is required before a request to Prebid Server is sent despiteallowUnknownBidderCodes
being true. How can we use theortb2Imp
property on adUnits were we have defined client side & unknown server side bidders without having to include a bidder in s2sConfig?We would like to use something like the example below to define client side bidders & a stored request ID on the same adUnit, however no request to Prebid Server is sent as no bidders array is included in s2sConfig
We can get the above working by using a 'dummy' bidder with no params to trigger the request to Prebid Server. Using a dummy bidder here feels redundant if the
ortb2Imp
&allowUnkownBidderCodes: true
properties are both defined -Is there currently a way around this or is this expected behaviour?
The text was updated successfully, but these errors were encountered: