From 28c063c679509becb8c3e8ca25038d77d8b879a7 Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 19 Oct 2021 14:40:36 -0400 Subject: [PATCH] Pbs modularity2 (#3355) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * OpenX update supported userIds (#3172) * Boldwin Bid Adapter: update field media_types (#3174) * new boldwin bid adapter * update media_types Co-authored-by: Aiholkin * Rebranding VerizonMedia docs to YSSP. (#3171) * Rebranding VerizonMedia docs to YSSP. After all the publishers are migrated to YSSP we'll delete the VerizonMedia docs. * Removed yssp connect id for now as we don't know the final name. Co-authored-by: oath-jac * update doc (#3169) * ColossusSsp Bid Adapter: update Prebid 5 complianc (#3164) Per pr https://github.com/prebid/Prebid.js/pull/7245 * Advangelists: Update Prebid 5 Compliance (#3163) Per pr https://github.com/prebid/Prebid.js/pull/7226 * Unicorn Bid Adapter: update Prebid 5 compliance (#3161) Per pr https://github.com/prebid/Prebid.js/pull/7241 * Remove bidfloorCpm because this is deprecated (#3160) * update apacdex doc (#3158) * Halo ID & RTD Documentation Update (#3154) * update halo docs * update doc * Update haloRtdProvider.md * Update haloRtdProvider.md * MathildeAds adapter docs (#3151) * add MathildeAds adapter * fix * TAPPX - Update tappx.md (#3144) * TAPPX - Update tappx.md We update with the changes of the https://github.com/prebid/prebid-server/pull/1931 pull request. * clarifying data type * Hotfix Change "gropu" mistake word to "group" correct word. Co-authored-by: bretg * updating docs to identify native support, schain support (#3109) * added vidoomy bidder docs (#3106) * added vidoomy bidder docs * reword suggestion applied * added coppa_supported * Adagio Bid Adapter: add Prebid Server Adapter support (#3075) * Update Teads bidder doc with support for some userIds (#3072) * Added docs for integr8 (#3000) * Added docs for integr8 * Added description column * adtelligentIdSytem doc update (#3032) * add Bidsxchange page * add adtelligentIdSystem doc * update misreadings * fixed uniq --> unique Co-authored-by: bretg * Smaato: Update documentation (#3115) * Smaato: update documentation * Smaato: update documentation - update note based on pr feedback Co-authored-by: Bernhard Pickenbrock * Adprime Bid Adapter: update Prebid 5 compliance and add new param (#3176) * docs * added quotes to string arg * context keywords * Add quotes to placementId param * Update adprime.md CCPA support feature wasn't displayed in docs, but included in adapter * tcf2_supported: true * changes * add audiences param Co-authored-by: Aigolkin1991 Co-authored-by: bretg * add contact info for OpenX floors (#3182) * Fixing floors provider table (#3192) * fix 3173 (#3183) * Gumgum: ADJS-1059 Update prebid documentation for flex slot Placement ID (#3185) * AdHash Bidder Adapter: typo changed (#3186) * AdHash Bidder Adapter: initial prebid.js integration * AdHash Bidder Adapter: changing the example text Changing the example text as it's one of our actual client's name * add usersyncing disclosure to docs (#3191) * Cpmstar Bid Adapter: update prebid 5 compliance (#3193) per pr _> https://github.com/prebid/Prebid.js/pull/7284 * InteractiveOffers - Parameters changed (#3190) Co-authored-by: EC2 Default User * Adkernel: documenting rtbanalytica alias (#3189) Documenting https://github.com/prebid/Prebid.js/pull/7281 * added brave bidder docs (#3181) * added brave bidder docs * added quotes around the string parameter Co-authored-by: bretg * Mediakeys: add bidder adapter (#3180) Co-authored-by: Jean-Paul COSAL * Smartadserver Bid Adapter: Added support for Floors module (#3179) * Fix domain sample * Add HTTPS sample for domain parameter * Add HTTPS sample for domain parameter * Add Smart AdServer in the index and download list * Add currency parameter documentation * Revert "Merge remote-tracking branch 'refs/remotes/prebid/master'" This reverts commit 099edc2d8e4e993406c2cb89612ff6d297b4515b, reversing changes made to 07ce9fd7e2f3a2f11f6caf82e24c1f636fd91d03. * Update documentation Specify "target" parameter development status * Adding documentation for bidfloor parameter. * Add floors module support Co-authored-by: Mordhak Co-authored-by: Mordhak Co-authored-by: Sébastien Ferry Co-authored-by: gcarnec Co-authored-by: Yuriy Tyukhnin Co-authored-by: tadam * Krushmedia Bid Adapter: updates for Prebid 5.0 (#3178) * Krushmedia docs * Update krushmedia.md * Adding pbjs adapter * updates for prebid 5 compliance Co-authored-by: bretg * Update the aniview, avantisvideo, selectmediavideo docs and add openwebvideo and vidcrunch docs (#3177) * New adapter for aniview * Update aniview.md * Create selectmediavideo.md * Have created avantisvideo.md * Update the aniview, avantisvideo, selectmediavideo docs and add openwebvideo and vidcrunch docs Co-authored-by: Itay Nave * Boldwin Bid Adapter: update Prebid 5 compliance (#3170) Per pr https://github.com/prebid/Prebid.js/pull/7254 Co-authored-by: bretg * Logan adapter docs (#3150) * add docs * Update logan.md * fix Co-authored-by: Aiholkin * ContentExchange adapter docs (#3146) * add contentexchange adapter * fix * SmartHub docs (#3131) * adding SmartHub bidder docs * removed pbjs version note * using partner Name instead of host due to the changing way building endpoint URL in adapter discussion in the prebid-server repo: https://github.com/prebid/prebid-server/pull/1932#discussion_r679268047 Co-authored-by: bretg * Adf adapater: schain support added (#3194) * Boldwin Bid Adapter: update description (#3196) * new boldwin bid adapter * update media_types * fix Co-authored-by: Aiholkin * update ix docs for size validation (#3200) Co-authored-by: Kajan Umakanthan * [Identity>SharedId] Fix Configuration table structure + typos (#3202) Co-authored-by: Florent Dancy * Update .gitignore for node_modules/ folder (#3203) Co-authored-by: Florent Dancy * event API doc updates (#3116) * event API doc updates * Update getEvents.md Co-authored-by: MartianTribe * updated PBJS releases, added GPT module option (#3206) * documentation for bidViewabilityIO module (#3184) * documenation for bidViewabilityIO module * add index links, differtiate display_names * Add link to polyfill * aligning bid viewability modules Co-authored-by: bretg * Tappx :: update name related to issue #3111 (#3207) Co-authored-by: marc_tappx * clean up table formatting (#3208) Co-authored-by: Kajan Umakanthan * Fix openWeb doc (#3211) * add Bidsxchange page * Add openweb doc * change params * fix doc * openWeb doc update * update algorix dev-doc for prebidmember and other support (#3213) Co-authored-by: 寻云波 * add imuIdSystem doc (#3159) * add imuIdSystem doc * cid is number * Add AdsYield adapter doc (#3188) * add-adsyield-doc * add-adsyield-doc * IX Bid Adapter: FPD (#2971) * using fpd * update headings in fpd * update function reference path Co-authored-by: Kajan Umakanthan * Added malltv analytics docs (#3147) * Update docs to match with PBJ (#3212) * Fixed typo * Updated docs to match with current PBJ state. * Added default configuration section * Removed redundant space between parentheses * tweaked default configs Co-authored-by: bretg * AMP load-cookie updates (#3221) * upgrading AMP and stored-request docs (#3226) * Delete weborama.md (#3229) since Prebid.js version 3.0.0 the weborama bid adapter is no longer supported, the original javascript was deleted but the module markdown still remains js removed on https://github.com/prebid/Prebid.js/pull/4580 doc to be removed https://github.com/prebid/Prebid.js/pull/7339 * declaring support to getFloor for OguryBidAdapter (#3224) * AJA Bid Adapter: User ID Module Support (#3223) * user id module support * add imuid * Mgid Bid Adapter: update Prebid 5 Compliance (#3218) per pr -> https://github.com/prebid/Prebid.js/pull/7319 * Wipes Bid Adapter: update Prebid 5 Compliance (#3217) per pr -> https://github.com/prebid/Prebid.js/pull/7320 * PBS-Go: Remove old data race condition test documentation (#3216) * Remove old data race condition test documentation * Scott's review * Update add-new-bidder-go.md Co-authored-by: Gus Carreon Co-authored-by: MartianTribe * Added Video (#3214) * Insticator Bidder Adapter docs (#3187) Co-authored-by: Artur Nabiullin * Permutive RTD module docs (#3155) * Permutive RTD module docs * wording updates * wording update * Add Document For New Adapter: HuaweiAds (#3071) * Create huaweiads.md * Update huaweiads.md * Update huaweiads.md add clientTime * Add example of bid filtering on meta object (#3123) * Add example of bid filtering on meta object * add fiddle link * embedded * add code height * update sidebar yaml * tweaks, removing old troubleshooting-tips * typo Co-authored-by: bretg * added PBS alias note (#3241) * Smartrtb Bid Adapter: update with non Prebid 5 Com (#3234) per issue -> https://github.com/prebid/Prebid.js/issues/7318 * [Assets] Update Criteo logo (#3240) Co-authored-by: Florent Dancy * Ad Partner Bid Adapter: update Prebid 5 Compliance (#3231) Per pr -> https://github.com/prebid/Prebid.js/pull/7347 * add IQZone adapter doc (#3210) * adding BEFORE_BIDDER_HTTP event (#3197) * adding BEFORE_BIDDER_REQUEST event * rename beforeBidderRequest to beforeRequestHttp Signed-off-by: Elad Yosifon * rename beforeRequestHttp to beforeBidderHttp Signed-off-by: Elad Yosifon * Updated MASS documentation (#3157) * Added hosted integration link * Update mass.md * Update mass.md * Update mass.md * Update mass.md * Amended build instructions * Fixed typos and mistakes Co-authored-by: massadmin <58946787+massadmin@users.noreply.github.com> * Navegg: Update User Id (#3080) * Update User Id * adding akamai back into list Co-authored-by: bretg * Add BeOp bidder documentation (#3238) * SmartHub adapter: fix docs displaying (#3239) * Update smarthub.md This fixes current wrong displaying of docs for SmartHub adapter https://docs.prebid.org/dev-docs/pbs-bidders.html#smarthub * Table title changes * [package.json] Fix `npm run watch` command (#3243) Co-authored-by: Florent Dancy * smartx Bid Adapter: switch startOpen & endingScreen from Boolean to String (#3244) * initial commit * adjustments * adjustments * adjustments * typo, further adjustments * removed userIds and schain support * Added optionals to outstream and made formatting * Update smartx.md minor edits for clarification and readability. * adjusted outstream_options * remove outstream_function, added pbjs_version_notes * bugfix outstream options for default outstream renderer configuration Co-authored-by: Gino Co-authored-by: Jean Stemp <38964447+jeanstemp@users.noreply.github.com> * add bydata.md analytics doc inside dev-docs/analytics (#3235) * add bydata.md analytics doc inside dev-docs/analytics * reset files Gemfile/package-lock.json Co-authored-by: Jitendra Kumar * [README] Update command to install packages (#3242) CF https://github.com/prebid/prebid.github.io/issues/3204 Co-authored-by: Florent Dancy * PBS dev docs and metadata (#3002) * PBS dev docs and metadata * proper dchain syntax * fixing omsdk typos (#3256) * Prebid Server Programmatic Guaranteed Documentation (#3037) * pg, cont * pg, cont * checkpoint * checkpoint * checkpoint * checkpoint * first cut at PG docs * checkpoint * fixing links, minor edits * Rise improvments (#3248) * Update Rise readme * update rise docs * Unruly and RhythmOne consolidated adapter - updating the vendor id to the rhythm one id since the consolidation. (#3249) * Bizzclick Bid Adapter: update Prebid 5 compliance (#3253) per pr -> https://github.com/prebid/Prebid.js/pull/7212 issue reference -> https://github.com/prebid/Prebid.js/issues/7388 * enrichment module: add `aggregated domain` (#3257) * enrichment module: add `aggregated domain` * Update enrichmentFpdModule.md Co-authored-by: MartianTribe * PG: add contact address (#3258) * PG: add contact address * Update pbs-pg-idx.md * Adkernel: documenting unibots alias (#3255) Documenting https://github.com/prebid/Prebid.js/pull/7387 * ADman Media Adapter: compatible with version 5 and support uid2 (#3252) * Add adman dev doc * Change params Params required by new adapter setup * Edit docs Fix naming, use quotes around example * adding quotes to string param * Update adman.md * tcf2_supported: true * Update adman.md add usp support * Add api param for prebid servr adapter * updates for prebid 5.0, and support uid2 Co-authored-by: minoru katogi Co-authored-by: ADman Media Co-authored-by: bretg Co-authored-by: Aiholkin * init aceex prebid adapter docs (#3232) * Document readConfig function (#3230) * Update getConfig.md * Create readConfig.md * Update getConfig.md * Update readConfig.md Co-authored-by: MartianTribe * Add documentation for publink userid module (#3225) * Update userId.md add kinesso id docs (#3215) * Update userId.md Adding companion docs pr for the kinesso user id module : https://github.com/prebid/Prebid.js/pull/7077 * Update download.md adding kinesso id module download option * Update userId.md Grammatical edits * Update userId.md Fix for values in table that weren't displaying correctly. * Added missing entry in bid adapter implementation table * Update userId.md updating kinesso email alais to direct users wanting to register to kinesso not magnite. Co-authored-by: Jean Stemp <38964447+jeanstemp@users.noreply.github.com> Co-authored-by: bretg * Restructuring modules for download and modules index (#3265) * restructure module lists * changing pubcommon message to deprecated * ucfunnel adapter docs add prebid-server params (#3263) * Add instream video and native support for ucfunnel adapter * [Dev Fix]add download.md && overview/analytics.md * ucfunnel adapter support schain, coppa, tcf2 * ucfunnel adapter docs add pbs_app_supported and gvl_id * ucfunnel adapter docs add prebid-server params Co-authored-by: Ryan Chou Co-authored-by: cliff_liu * between adapter docs: add userIds (#3247) * between adapter docs: add userIds * update between.md and return destrictmdmx.md Co-authored-by: khaylov * Additional Id providers support (#3262) * Fluct Bid Adapter: update Prebid 5 compliance (#3233) per pr -> https://github.com/prebid/Prebid.js/pull/7353 * TargetVideo adapter dev-docs (#3228) * BLIINK Bidder adaptor docs (#3198) * feat(bliink): Add new documentation for BLIINK bidder adaptor * Update bliink.md Co-authored-by: Jonathan * Add new query parameter for httpinteraction endpoint (#3268) * Fixed typo * Added new query param * add getfloor support for adyoulike (#3269) * added ext.prebid.buyeruid extension (#3274) * IQzone Bidder Adapter: add new bid param (#3250) * add IQZone adapter doc * add new bid param * fix * Update description of AFP adapter (#3205) * update description of AFP adapter * Revert "update description of AFP adapter" This reverts commit 418f042ffff710e6ec6f7c53df4e8b32a1b8108e. * add description of AFP adapter * add new format "Just Banner" * update examples * IQzone Adapter: update doc (#3278) * add IQZone adapter doc * add new bid param * fix * updates * Rise docs (#3276) * Update Rise readme * update docs * Seeding Alliance Bid Adapter: update Prebid 5 comp (#3271) per per -> https://github.com/prebid/Prebid.js/pull/7426 * Adf adapter: floors module support (#3270) * AdHash bidder adaptor for 5.0 (#3264) * AdHash Bidder Adapter: initial prebid.js integration * AdHash Bidder Adapter: changing the example text Changing the example text as it's one of our actual client's name * AdHash bidder adaptor for 5.0 update * Update guide.md (#3288) * minor updates to guide (#3289) * added environment section to guide (#3290) * new adquery adapter (#3275) * new Adapter * Removed prebid version note. We support version 5.x Co-authored-by: m.czerwiak * fixed ortb2Imp (#3291) * add weborama RTD doc (#3277) Co-authored-by: Tiago Peczenyj * PBS-Go User Sync (#3220) * Initial Commit * Auction Endpoint JSON Formatting * Added User Sync Config Doc * Update Feature Comparison List * Proof Read Pass * Clarified part of the process * Fixed a typo * Edits for PBS docs Co-authored-by: SSuranie * Update firstPartyData.md with app.content.data example (#3299) * Update firstPartyData.md * Update firstPartyData.md * fixing indentation Co-authored-by: bretg * Update docs to match with pbj (#3280) * Fixed typo * Updated docs to match with current PBJ state. * Added default configuration section * Removed redundant space between parentheses * tweaked default configs * Updated default config documentation to match with pbj * Update add-new-bidder-java.md * Reverted invalid changes * Synced with pbj * Added information about unmodifiable defaults, cleaned up bidder alias example. * Removed obsolete field pbs-enforces-gdpr Co-authored-by: bretg Co-authored-by: MartianTribe * Viewdeos page pbs separation (#3282) * add Bidsxchange page * Add openweb doc * change params * add ViewDeos pbs page * Rebranding yssp adapter to yahoossp. (#3283) Co-authored-by: oath-jac * update between doc (#3284) Co-authored-by: khaylov * Download: fix akamai typo on download page (#3292) * fix links on modules/index.html (#3296) * Just Premium Bid Adapter: update schain support (#3301) per pr https://github.com/prebid/Prebid.js/pull/7506 * change tagId to be required, and add note about test tagId value (#3303) * yieldmo: multiple changes (#3246) * multiple changes * schain support for video ads * device.ip support * gpid support * device.ip support cleaned up * Add doc for timeout rtd module (#3266) * Add doc for timeout rtd module * Remove 'sets' * fixing 404 for other module types (#3313) * another batch of dead links (#3314) * download page 404 for modules (#3316) * Colossus Bid Adapter: Unified ID 2.0 (#3236) * Updated docs Colossusssp Adapter * Update colossusssp.md Add media types * Update colossusssp.md add usp consent support * adding schain flag * gdpr and user ids * id5id support * Prebid server info * Remove PBS params * Add colossus PBS docs * Add short note for pbs adapter parametres * Add note for pbjs parametres * Fix * remove duplicate string * Update colossusssp.md Ad biddflorr parameter * add uid2 * fix * fix Co-authored-by: Vladislav Isaiko Co-authored-by: bretg Co-authored-by: Aiholkin * Fix timeout rtd (#3317) * download page 404 for modules * fixed modulecode for timeout RTD * Adkernel: documenting ergadx alias (#3324) Documenting https://github.com/prebid/Prebid.js/pull/7544 * Update InterstitialAds.md (#3319) * adds disclaimer (#3318) * Nativo Bid Adapter: Bid Params Update (#3307) * Added nativo markup documentation to dev-docs/bidders * Added IAB Global Vendor List ID number. * Adjusted placementId Type to be integer * Changed pbjs value to true * Added optional url parameter * Updated placementId parameter to be optional * PubLink adds params for site id and api key. (#3306) * Slimcut: removing 5.x note (#3305) * SpotX: add support for price floors module (#3293) * Update NextRoll BidAdapter docs for v5 (#3286) * Update NextRoll BidAdapter docs for v5 * Add comment to `floors` section in example * Mytarget Bid Adapter: update Prebid 5 compliance (#3285) Per pr -> https://github.com/prebid/Prebid.js/pull/7397 * Added video support (#3281) * [sspbc-adapter] update dev-docs for adapter (native & video support) (#3279) Co-authored-by: Wojciech Biały * Prebid Server Support (#3273) Add the prebid server support * Relaido Bid Adapter: add support imuid (#3272) * add relaido adapter * Add support for imuid Co-authored-by: ishigami_shingo Co-authored-by: cmertv-sishigami * Impactify - Add UserID module (#3245) Add UserID support in documentation * Added First Party Data to feature list (#3325) * added fpd_supported, renamed getFloor and deals * removing stray file * Updated bidder: Adnuntius (#3312) * Adnuntius Bidder documentation added * Fixed targeting text. * Added documentation for passing segments in the bidder config. * changed the way to send user segments to bidder. * Moved string to type + examples. * Adnuntius update for prebid server. * Added info that custom price granularity is needed when using currrencies where the nominal CPM range is greatly differnt than USD (#3326) * fix weborama conf example as in Prebid.js/modules/weboramaRtdProvider.md (#3330) * fix weborama conf example as in Prebid.js/modules/weboramaRtdProvider.md * fix closing parentesis * fix ponctuation * Ad Generation Bid Adapter: update prebid 5 complia (#3329) per pr -> https://github.com/prebid/Prebid.js/pull/7150 (reference pr https://github.com/prebid/Prebid.js/pull/7533 as well) * Update apacdex.md (#3332) I was missing a newline in the apacdex.md file. This causes it to display falsely on https://docs.prebid.org/dev-docs/bidders/apacdex#apacdex-bid-params * fixing PBJS adapter example (#3339) * added PBS config faq entries (#3340) * Change documentation in order to AdPartner Adapter (#3328) * Fix timeout module doc missing link (#3345) * Fix timeout rtd module doc * Add display_name to sample doc header * weborama RTD submodule fix typo in example conf (#3337) * fix typo in example conf * fix flag * Yahoo SSP Bid Adapter (#3311) * yahoossp update * yahoossp update * legacy adapter messages * remove yssp.md * change inventoryId to siteId * formatting * Adkernel: documenting turktelekom alias (#3341) * Adkernel: documenting turktelekom alias Documenting https://github.com/prebid/Prebid.js/pull/7559 * Update bidder traits * Create talkads.md (#3323) * Create talkads.md * Update talkads.md * Add test feature with fake test bid * Criteo: update instructions for Native and Floor module currency (#3350) Co-authored-by: Allan Jun Hirata * PBS modularity docs Co-authored-by: Brian Schmidt Co-authored-by: Wls-demo <67785512+Wls-demo@users.noreply.github.com> Co-authored-by: Aiholkin Co-authored-by: oath-jac <45564796+oath-jac@users.noreply.github.com> Co-authored-by: oath-jac Co-authored-by: Mikhail Ivanchenko Co-authored-by: Chris Huie Co-authored-by: faithnh Co-authored-by: thuyhq <61451682+thuyhq@users.noreply.github.com> Co-authored-by: Anthony Lauzon Co-authored-by: mathilde-ads <87868405+mathilde-ads@users.noreply.github.com> Co-authored-by: prebidtappx <77485538+prebidtappx@users.noreply.github.com> Co-authored-by: Daniel Lawrence Co-authored-by: Mario Ortas Lebrancón <32935912+mario-orle@users.noreply.github.com> Co-authored-by: Olivier Co-authored-by: Benoit Ruiz Co-authored-by: ardit-baloku <77985953+ardit-baloku@users.noreply.github.com> Co-authored-by: Gena Co-authored-by: el-chuck Co-authored-by: Bernhard Pickenbrock Co-authored-by: Adprime <64427228+Adprime@users.noreply.github.com> Co-authored-by: Aigolkin1991 Co-authored-by: Brian Schmidt Co-authored-by: Julien Ricard Co-authored-by: Lisa Benmore Co-authored-by: Damyan Co-authored-by: IOTiagoFaria <76956619+IOTiagoFaria@users.noreply.github.com> Co-authored-by: EC2 Default User Co-authored-by: Denis Logachov Co-authored-by: Sacha <35510349+thebraveio@users.noreply.github.com> Co-authored-by: MK Platform <88486298+mediakeys-platform@users.noreply.github.com> Co-authored-by: Jean-Paul COSAL Co-authored-by: krzysztof <88041828+krysztal-smart@users.noreply.github.com> Co-authored-by: Mordhak Co-authored-by: Mordhak Co-authored-by: Sébastien Ferry Co-authored-by: gcarnec Co-authored-by: Yuriy Tyukhnin Co-authored-by: tadam Co-authored-by: Krushmedia <71434282+Krushmedia@users.noreply.github.com> Co-authored-by: Roman Shevchenko Co-authored-by: Itay Nave Co-authored-by: WlsLogan <77974248+WlsLogan@users.noreply.github.com> Co-authored-by: contentexchange <87769951+contentexchange@users.noreply.github.com> Co-authored-by: SmartHubSolutions <87376145+SmartHubSolutions@users.noreply.github.com> Co-authored-by: Jurij Sinickij Co-authored-by: Kajan Umakanthan Co-authored-by: Kajan Umakanthan Co-authored-by: Florent DANCY Co-authored-by: Florent Dancy Co-authored-by: MartianTribe Co-authored-by: jsut Co-authored-by: marc_tappx Co-authored-by: Bugxyb Co-authored-by: 寻云波 Co-authored-by: eknis Co-authored-by: AdmixerTech <35560933+AdmixerTech@users.noreply.github.com> Co-authored-by: Alex Maltsev Co-authored-by: Tiago Peczenyj Co-authored-by: Mehdi Bouallagui <45876988+mbouallagui@users.noreply.github.com> Co-authored-by: Taro FURUKAWA <6879289+0tarof@users.noreply.github.com> Co-authored-by: guscarreon Co-authored-by: Gus Carreon Co-authored-by: vrtcal-dev <50931150+vrtcal-dev@users.noreply.github.com> Co-authored-by: Artur Nabiullin <80909609+zyk70n@users.noreply.github.com> Co-authored-by: Artur Nabiullin Co-authored-by: David Reischer Co-authored-by: wy <1402628279@qq.com> Co-authored-by: IQZoneAdx <88879712+IQZoneAdx@users.noreply.github.com> Co-authored-by: Elad Yosifon Co-authored-by: Catalin Ciocov Co-authored-by: massadmin <58946787+massadmin@users.noreply.github.com> Co-authored-by: hugopenha-navegg <86666691+hugopenha-navegg@users.noreply.github.com> Co-authored-by: Matthias Le Brun Co-authored-by: Skylinar <53079123+Skylinar@users.noreply.github.com> Co-authored-by: Gino Co-authored-by: Jean Stemp <38964447+jeanstemp@users.noreply.github.com> Co-authored-by: Prebid-bydata <71428180+Prebid-bydata@users.noreply.github.com> Co-authored-by: Jitendra Kumar Co-authored-by: Noam Tzuberi Co-authored-by: tallavon <83907602+tallavon@users.noreply.github.com> Co-authored-by: SmartyAdman <59048845+SmartyAdman@users.noreply.github.com> Co-authored-by: minoru katogi Co-authored-by: ADman Media Co-authored-by: supportAceex <89574021+supportAceex@users.noreply.github.com> Co-authored-by: Patrick McCann Co-authored-by: johnwier <49074029+johnwier@users.noreply.github.com> Co-authored-by: jdwieland8282 Co-authored-by: jackhsiehucf <77815341+jackhsiehucf@users.noreply.github.com> Co-authored-by: Ryan Chou Co-authored-by: cliff_liu Co-authored-by: Ignat Khaylov Co-authored-by: khaylov Co-authored-by: Anand Venkatraman Co-authored-by: Dejan Grbavcic Co-authored-by: Jonathan Co-authored-by: Jonathan Co-authored-by: guiann Co-authored-by: andrey-ka-97 <42410701+andrey-ka-97@users.noreply.github.com> Co-authored-by: adquery <89853721+adquery@users.noreply.github.com> Co-authored-by: m.czerwiak Co-authored-by: Tiago Peczenyj Co-authored-by: Scott Kay Co-authored-by: Nick Jacob Co-authored-by: ym-abaranov <78230460+ym-abaranov@users.noreply.github.com> Co-authored-by: Luigi Sayson <48766825+luigi-sayson@users.noreply.github.com> Co-authored-by: Bill Newman Co-authored-by: Vladislav Isaiko Co-authored-by: nllerandi3lift <75995508+nllerandi3lift@users.noreply.github.com> Co-authored-by: jsfledd Co-authored-by: Paul Yang Co-authored-by: Amanda Dillon <41923726+agdillon@users.noreply.github.com> Co-authored-by: Abimael Martinez Co-authored-by: Jeremy Sadwith Co-authored-by: wojciech-bialy-wpm <67895844+wojciech-bialy-wpm@users.noreply.github.com> Co-authored-by: Wojciech Biały Co-authored-by: Thomas Co-authored-by: relaido <63339139+relaido@users.noreply.github.com> Co-authored-by: ishigami_shingo Co-authored-by: cmertv-sishigami Co-authored-by: Mikael Lundin Co-authored-by: Mike Chowla Co-authored-by: Viktor Davidiants <57586844+vdavidiants@users.noreply.github.com> Co-authored-by: Adam Browning <19834421+adam-browning@users.noreply.github.com> Co-authored-by: natexo-technical-team <91968830+natexo-technical-team@users.noreply.github.com> Co-authored-by: allanjun Co-authored-by: Allan Jun Hirata --- .gitignore | 3 + Gemfile | 2 +- README.md | 2 +- _data/sidebar.yml | 56 +- _layouts/bidder.html | 8 +- _layouts/example.html | 18 +- assets/images/logos/criteo-logo.png | Bin 17601 -> 46836 bytes assets/images/partners/tech/criteo.png | Bin 31206 -> 46836 bytes assets/images/prebid-server/module-atags.png | Bin 0 -> 34988 bytes .../images/prebid-server/module-example.png | Bin 0 -> 38702 bytes assets/images/prebid-server/pg/pg-arch-1.png | Bin 0 -> 69094 bytes assets/images/prebid-server/pg/pg-arch-2.png | Bin 0 -> 684029 bytes .../prebid-server/pg/pg-bad-delivery.png | Bin 0 -> 199068 bytes .../prebid-server/pg/pg-good-delivery.png | Bin 0 -> 160354 bytes assets/images/prebid-server/pg/pg-metrics.png | Bin 0 -> 377756 bytes .../prebid-server/stored-requests-amp.png | Bin 0 -> 113746 bytes .../prebid-server/stored-requests-app.png | Bin 0 -> 177868 bytes debugging/debugging.md | 3 +- dev-docs/add-rtd-submodule.md | 1 + dev-docs/adunit-reference.md | 2 +- dev-docs/analytics/bydata.md | 32 + dev-docs/analytics/malltv.md | 33 + dev-docs/bidder-adaptor.md | 16 +- dev-docs/bidder-data.csv | 4 +- dev-docs/bidders.md | 16 +- dev-docs/bidders/33across.md | 2 +- dev-docs/bidders/aceex.md | 27 + dev-docs/bidders/acuityads.md | 2 +- dev-docs/bidders/adagio.md | 6 +- dev-docs/bidders/adf.md | 3 + dev-docs/bidders/adgeneration.md | 1 - dev-docs/bidders/adhash.md | 4 +- dev-docs/bidders/adman.md | 4 +- dev-docs/bidders/admixer.md | 1 + dev-docs/bidders/adnuntius.md | 58 +- dev-docs/bidders/adpartner.md | 7 +- dev-docs/bidders/adpone.md | 2 +- dev-docs/bidders/adprime.md | 5 +- dev-docs/bidders/adquery.md | 19 + dev-docs/bidders/adrelevantis.md | 1 + dev-docs/bidders/adriver.md | 4 +- dev-docs/bidders/adsyield.md | 18 + dev-docs/bidders/advangelists.md | 1 - dev-docs/bidders/adxcg.md | 2 +- dev-docs/bidders/adyoulike.md | 1 + dev-docs/bidders/afp.md | 201 ++++++ dev-docs/bidders/aja.md | 22 +- dev-docs/bidders/algorix.md | 6 +- dev-docs/bidders/amx.md | 7 +- dev-docs/bidders/aniview.md | 30 +- dev-docs/bidders/aol.md | 13 + dev-docs/bidders/apacdex.md | 22 +- dev-docs/bidders/appnexus.md | 3 +- dev-docs/bidders/aso.md | 6 +- dev-docs/bidders/automatad.md | 1 + dev-docs/bidders/avantisvideo.md | 6 +- dev-docs/bidders/beachfront.md | 2 +- dev-docs/bidders/beop.md | 16 + dev-docs/bidders/between.md | 5 +- dev-docs/bidders/bidmachine.md | 2 +- dev-docs/bidders/bizzclick.md | 3 +- dev-docs/bidders/bliink.md | 25 + dev-docs/bidders/bmtm.md | 2 +- dev-docs/bidders/boldwin.md | 5 +- dev-docs/bidders/brave.md | 26 + dev-docs/bidders/colossus.md | 2 +- dev-docs/bidders/colossusssp.md | 4 +- dev-docs/bidders/connectad.md | 2 +- dev-docs/bidders/contentexchange.md | 21 + dev-docs/bidders/conversant.md | 2 +- dev-docs/bidders/cpmstar.md | 1 - dev-docs/bidders/criteo.md | 9 +- dev-docs/bidders/datablocks.md | 1 + dev-docs/bidders/districtmdmx.md | 3 +- dev-docs/bidders/epom.md | 2 +- dev-docs/bidders/ergadx.md | 27 + dev-docs/bidders/etarget.md | 1 + dev-docs/bidders/fluct.md | 1 - dev-docs/bidders/getintent.md | 2 +- dev-docs/bidders/gothamads.md | 2 +- dev-docs/bidders/grid.md | 3 +- dev-docs/bidders/gridNM.md | 1 + dev-docs/bidders/gumgum.md | 4 +- dev-docs/bidders/huaweiads.md | 34 + dev-docs/bidders/impactify.md | 3 +- dev-docs/bidders/inmar.md | 3 +- dev-docs/bidders/inmobi.md | 9 +- dev-docs/bidders/insticator.md | 17 + dev-docs/bidders/integr8.md | 17 + dev-docs/bidders/interactiveOffers.md | 6 +- dev-docs/bidders/iqm.md | 2 +- dev-docs/bidders/iqzone.md | 32 + dev-docs/bidders/ix.md | 230 +++---- dev-docs/bidders/jixie.md | 2 +- dev-docs/bidders/justpremium.md | 1 + dev-docs/bidders/kargo.md | 1 + dev-docs/bidders/kobler.md | 4 +- dev-docs/bidders/krushmedia.md | 1 - dev-docs/bidders/logan.md | 1 - dev-docs/bidders/logicad.md | 2 +- dev-docs/bidders/marsmedia.md | 2 +- dev-docs/bidders/mathildeads.md | 20 + dev-docs/bidders/mediakeys.md | 24 + dev-docs/bidders/medianet.md | 3 +- dev-docs/bidders/mgid.md | 1 - dev-docs/bidders/mytarget.md | 1 - dev-docs/bidders/nativo.md | 2 +- dev-docs/bidders/nextMillennium.md | 1 - dev-docs/bidders/nextroll.md | 14 +- dev-docs/bidders/nobid.md | 1 + dev-docs/bidders/ogury.md | 3 +- dev-docs/bidders/oneVideo.md | 14 + dev-docs/bidders/onedisplay.md | 12 + dev-docs/bidders/onemobile.md | 12 + dev-docs/bidders/openweb.md | 20 +- dev-docs/bidders/openwebvideo.md | 45 ++ dev-docs/bidders/openx.md | 5 +- dev-docs/bidders/operaads.md | 4 +- dev-docs/bidders/optout.md | 1 + dev-docs/bidders/ozone.md | 3 +- dev-docs/bidders/pangle.md | 2 +- dev-docs/bidders/pixfuture.md | 1 + dev-docs/bidders/proxistore.md | 1 + dev-docs/bidders/pubgenius.md | 2 +- dev-docs/bidders/pubmatic.md | 3 +- dev-docs/bidders/pulsepoint.md | 2 +- dev-docs/bidders/pwbid.md | 2 +- dev-docs/bidders/quantumdex.md | 4 +- dev-docs/bidders/relaido.md | 1 + dev-docs/bidders/rise.md | 25 +- dev-docs/bidders/roundel.md | 2 +- dev-docs/bidders/rtbanalytica.md | 27 + dev-docs/bidders/rubicon.md | 5 +- dev-docs/bidders/seedingAlliance.md | 1 - dev-docs/bidders/selectmediavideo.md | 8 +- dev-docs/bidders/sharethrough.md | 1 + dev-docs/bidders/slimcut.md | 3 +- dev-docs/bidders/smaato.md | 12 + dev-docs/bidders/smartadserver.md | 1 + dev-docs/bidders/smarthub.md | 22 + dev-docs/bidders/smartrtb.md | 1 + dev-docs/bidders/smartx.md | 4 +- dev-docs/bidders/smartyads.md | 2 +- dev-docs/bidders/sonobi.md | 1 + dev-docs/bidders/sortable.md | 2 +- dev-docs/bidders/sovrn.md | 3 +- dev-docs/bidders/spotx.md | 3 +- dev-docs/bidders/sspBC.md | 7 +- dev-docs/bidders/stroeerCore.md | 2 +- dev-docs/bidders/talkads.md | 74 +++ dev-docs/bidders/tappx.md | 5 +- dev-docs/bidders/targetvideo.md | 46 ++ dev-docs/bidders/teads.md | 3 +- dev-docs/bidders/triplelift.md | 10 +- dev-docs/bidders/triplelift_native.md | 4 +- dev-docs/bidders/trustx.md | 1 + dev-docs/bidders/turktelekom.md | 24 +- dev-docs/bidders/ucfunnel.md | 17 +- dev-docs/bidders/unibots.md | 27 + dev-docs/bidders/unicorn.md | 2 - dev-docs/bidders/unruly.md | 6 +- dev-docs/bidders/valueimpression.md | 4 +- dev-docs/bidders/vidcrunch.md | 45 ++ dev-docs/bidders/vidoomy.md | 23 + dev-docs/bidders/viewdeos.md | 39 ++ dev-docs/bidders/viewdeosDX.md | 8 +- dev-docs/bidders/visx.md | 2 +- dev-docs/bidders/vrtcal.md | 2 +- dev-docs/bidders/weborama.md | 15 - dev-docs/bidders/winr.md | 3 +- dev-docs/bidders/wipes.md | 1 - dev-docs/bidders/yahoossp.md | 44 ++ dev-docs/bidders/yieldmo.md | 26 +- dev-docs/bidders/zeta_global.md | 2 +- dev-docs/bidders/zeta_global_ssp.md | 3 +- dev-docs/common-issues.md | 2 +- dev-docs/examples/meta-bid-filtering.md | 15 + dev-docs/faq.md | 10 +- dev-docs/modules/adpod.md | 2 +- dev-docs/modules/bidViewable.md | 35 +- dev-docs/modules/bidViewableIO.md | 66 ++ dev-docs/modules/browsiRtdProvider.md | 1 + dev-docs/modules/categoryTranslation.md | 2 +- dev-docs/modules/consentManagement.md | 3 +- dev-docs/modules/consentManagementUsp.md | 3 +- dev-docs/modules/currency.md | 2 +- dev-docs/modules/dfp_express.md | 3 +- dev-docs/modules/dfp_video.md | 5 +- dev-docs/modules/dgkeywordRtdProvider.md | 1 + dev-docs/modules/enrichmentFpdModule.md | 6 +- dev-docs/modules/floors.md | 9 +- dev-docs/modules/freewheel.md | 5 +- dev-docs/modules/gdprEnforcement.md | 3 +- dev-docs/modules/geoedgeRtdProvider.md | 1 + dev-docs/modules/gpt-pre-auction.md | 33 +- dev-docs/modules/haloRtdProvider.md | 34 +- dev-docs/modules/iabCatagoryTranslation.md | 73 --- dev-docs/modules/iasRtdProvider.md | 1 + dev-docs/modules/idLibrary.md | 2 +- dev-docs/modules/index.md | 119 ++-- dev-docs/modules/instreamTracking.md | 2 +- dev-docs/modules/jwplayerRtdProvider.md | 1 + dev-docs/modules/konduit.md | 3 +- dev-docs/modules/mass.md | 42 +- dev-docs/modules/medianetRtdProvider.md | 1 + dev-docs/modules/multibid.md | 2 +- dev-docs/modules/optimeraRtdProvider.md | 1 + dev-docs/modules/permutiveRtdProvider.md | 76 +++ dev-docs/modules/pubCommonId.md | 2 +- dev-docs/modules/reconciliationRtdProvider.md | 3 +- dev-docs/modules/schain.md | 2 +- dev-docs/modules/sirdataRtdProvider.md | 3 +- dev-docs/modules/sizeMappingV2.md | 2 +- dev-docs/modules/timeoutRtdProvider.md | 153 +++++ dev-docs/modules/userId.md | 204 +++++- dev-docs/modules/validationFpdModule.md | 2 +- dev-docs/modules/weboramaRtdProvider.md | 83 +++ dev-docs/pbs-bidders.md | 3 +- dev-docs/prebid-troubleshooting-guide.md | 111 +--- dev-docs/publisher-api-reference/getConfig.md | 10 +- dev-docs/publisher-api-reference/getEvents.md | 93 +-- dev-docs/publisher-api-reference/getNoBids.md | 4 +- dev-docs/publisher-api-reference/offEvent.md | 52 +- dev-docs/publisher-api-reference/onEvent.md | 61 +- .../publisher-api-reference/readConfig.md | 18 + dev-docs/publisher-api-reference/setConfig.md | 4 +- dev-docs/show-prebid-ads-on-amp-pages.md | 95 ++- dev-docs/troubleshooting-tips.md | 222 +------ download.md | 245 ++++--- faq/prebid-server-faq.md | 34 + features/InterstitialAds.md | 2 +- features/firstPartyData.md | 50 +- guide.md | 47 +- identity/sharedid.md | 16 +- package.json | 2 +- .../android/pbm-targeting-params-android.md | 4 +- .../pbm-api/ios/pbm-targeting-ios.md | 4 +- prebid-server/developers/add-a-module-java.md | 226 +++++++ prebid-server/developers/add-a-module.md | 190 ++++++ prebid-server/developers/add-new-bidder-go.md | 562 ++++++++-------- .../developers/add-new-bidder-java.md | 72 +- prebid-server/developers/module-atags.md | 232 +++++++ prebid-server/developers/pbs-cookie-sync.md | 35 +- .../endpoints/openrtb2/pbs-endpoint-amp.md | 189 ++---- .../openrtb2/pbs-endpoint-auction.md | 614 +++++++++--------- prebid-server/endpoints/pbs-endpoint-admin.md | 1 + prebid-server/endpoints/pbs-endpoint-event.md | 2 +- .../endpoints/pbs-endpoint-overview.md | 4 +- .../endpoints/pbs-endpoint-setuid.md | 12 +- prebid-server/features/pbs-currency.md | 22 +- prebid-server/features/pbs-default-request.md | 2 +- prebid-server/features/pbs-feature-idx.md | 22 +- prebid-server/features/pbs-privacy.md | 2 +- prebid-server/features/pbs-storedreqs.md | 20 +- prebid-server/features/pg/pbs-pg-bidder.md | 141 ++++ prebid-server/features/pg/pbs-pg-glossary.md | 80 +++ prebid-server/features/pg/pbs-pg-host.md | 67 ++ prebid-server/features/pg/pbs-pg-idx.md | 67 ++ prebid-server/features/pg/pbs-pg-plan.md | 284 ++++++++ prebid-server/features/pg/pbs-pg-targeting.md | 177 +++++ prebid-server/hosting/pbs-database.md | 4 +- prebid-server/hosting/pbs-hosting.md | 2 +- prebid-server/pbs-modules/index.md | 127 ++++ prebid-server/pbs-modules/ortb2-blocking.md | 565 ++++++++++++++++ prebid-server/use-cases/pbs-amp.md | 36 +- prebid-server/versions/pbs-versions-go.md | 2 +- prebid-server/versions/pbs-versions-java.md | 2 +- prebid-video/video-getting-started.md | 2 +- prebid/prebidjs.md | 14 +- prebid/prebidjsReleases.md | 10 + troubleshooting/troubleshooting-guide.md | 32 +- 271 files changed, 5823 insertions(+), 2085 deletions(-) create mode 100644 assets/images/prebid-server/module-atags.png create mode 100644 assets/images/prebid-server/module-example.png create mode 100644 assets/images/prebid-server/pg/pg-arch-1.png create mode 100644 assets/images/prebid-server/pg/pg-arch-2.png create mode 100644 assets/images/prebid-server/pg/pg-bad-delivery.png create mode 100644 assets/images/prebid-server/pg/pg-good-delivery.png create mode 100644 assets/images/prebid-server/pg/pg-metrics.png create mode 100644 assets/images/prebid-server/stored-requests-amp.png create mode 100644 assets/images/prebid-server/stored-requests-app.png create mode 100644 dev-docs/analytics/bydata.md create mode 100644 dev-docs/analytics/malltv.md create mode 100644 dev-docs/bidders/aceex.md create mode 100644 dev-docs/bidders/adquery.md create mode 100644 dev-docs/bidders/adsyield.md create mode 100644 dev-docs/bidders/afp.md create mode 100644 dev-docs/bidders/beop.md create mode 100644 dev-docs/bidders/bliink.md create mode 100644 dev-docs/bidders/brave.md create mode 100644 dev-docs/bidders/contentexchange.md create mode 100644 dev-docs/bidders/ergadx.md create mode 100644 dev-docs/bidders/huaweiads.md create mode 100644 dev-docs/bidders/insticator.md create mode 100644 dev-docs/bidders/integr8.md create mode 100644 dev-docs/bidders/iqzone.md create mode 100644 dev-docs/bidders/mathildeads.md create mode 100644 dev-docs/bidders/mediakeys.md create mode 100644 dev-docs/bidders/openwebvideo.md create mode 100644 dev-docs/bidders/rtbanalytica.md create mode 100644 dev-docs/bidders/smarthub.md create mode 100644 dev-docs/bidders/talkads.md create mode 100644 dev-docs/bidders/targetvideo.md create mode 100644 dev-docs/bidders/unibots.md create mode 100644 dev-docs/bidders/vidcrunch.md create mode 100644 dev-docs/bidders/vidoomy.md create mode 100644 dev-docs/bidders/viewdeos.md delete mode 100644 dev-docs/bidders/weborama.md create mode 100644 dev-docs/bidders/yahoossp.md create mode 100644 dev-docs/examples/meta-bid-filtering.md create mode 100644 dev-docs/modules/bidViewableIO.md delete mode 100644 dev-docs/modules/iabCatagoryTranslation.md create mode 100644 dev-docs/modules/permutiveRtdProvider.md create mode 100644 dev-docs/modules/timeoutRtdProvider.md create mode 100644 dev-docs/modules/weboramaRtdProvider.md create mode 100644 dev-docs/publisher-api-reference/readConfig.md create mode 100644 prebid-server/developers/add-a-module-java.md create mode 100644 prebid-server/developers/add-a-module.md create mode 100644 prebid-server/developers/module-atags.md create mode 100644 prebid-server/features/pg/pbs-pg-bidder.md create mode 100644 prebid-server/features/pg/pbs-pg-glossary.md create mode 100644 prebid-server/features/pg/pbs-pg-host.md create mode 100644 prebid-server/features/pg/pbs-pg-idx.md create mode 100644 prebid-server/features/pg/pbs-pg-plan.md create mode 100644 prebid-server/features/pg/pbs-pg-targeting.md create mode 100644 prebid-server/pbs-modules/index.md create mode 100644 prebid-server/pbs-modules/ortb2-blocking.md diff --git a/.gitignore b/.gitignore index c300c925e6..79e892f73a 100755 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ Gemfile.lock .jekyll-metadata *ads.txt.bkp* .sass-cache + +# Files generated by `npm install` +node_modules/ diff --git a/Gemfile b/Gemfile index a0483f2507..cdaf1cdfe5 100755 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,2 @@ source 'https://rubygems.org' -gem 'github-pages', '>= 30' \ No newline at end of file +gem 'github-pages', '>= 30' diff --git a/README.md b/README.md index 8bf538b48f..b63ccaf775 100755 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The site uses [Jekyll](https://jekyllrb.com/), which is written in the [Ruby](ht For CSS, the site uses Laravel Mix to build CSS from Sass (scss-flavored) source files. Under the hood Laravel Mix uses Webpack. 1. follow the instructions at https://nodejs.dev to install Node.js for your OS -1. `npm install` to install packages for building assets +1. `npm ci` to install packages for building assets 1. build assets as described below diff --git a/_data/sidebar.yml b/_data/sidebar.yml index a5a92549b0..c4c7204924 100644 --- a/_data/sidebar.yml +++ b/_data/sidebar.yml @@ -234,6 +234,15 @@ isSectionHeader: 0 sectionTitle: subgroup: 1 + +- sbSecId: 1 + title: Meta Bid Filtering + link: /dev-docs/examples/meta-bid-filtering.html + Item: 1 + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 1 - sbSecId: 1 title: Troubleshooting @@ -359,7 +368,7 @@ subgroup: 4 - sbSecId: 1 - title: Prebid Modules + title: Prebid.js Modules link: isHeader: 1 headerId: pbjsmodules @@ -376,32 +385,24 @@ subgroup: 5 - sbSecId: 1 - title: General Modules - link: /dev-docs/modules/index.html#general-modules - isHeader: 0 - isSectionHeader: 0 - sectionTitle: - subgroup: 5 - -- sbSecId: 1 - title: Real Time Data Providers - link: /dev-docs/modules/index.html#real-time-data-providers + title: Recommended Modules + link: /dev-docs/modules/index.html#recommended-modules isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 5 - sbSecId: 1 - title: Video Modules - link: /dev-docs/modules/index.html#video-modules + title: General Modules + link: /dev-docs/modules/index.html#general-modules isHeader: 0 isSectionHeader: 0 sectionTitle: subgroup: 5 - sbSecId: 1 - title: Testing and Debug Modules - link: /dev-docs/modules/index.html#testing-and-debug-modules + title: Vendor-Specific Modules + link: /dev-docs/modules/index.html#vendor-specific-modules isHeader: 0 isSectionHeader: 0 sectionTitle: @@ -1713,6 +1714,23 @@ sectionTitle: subgroup: 3 +- sbSecId: 5 + title: Programmatic Guaranteed + link: /prebid-server/features/pg/pbs-pg-idx.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + + +- sbSecId: 5 + title: Modules + link: /prebid-server/pbs-modules/ + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + - sbSecId: 5 title: Developers link: @@ -1746,6 +1764,14 @@ sectionTitle: subgroup: 5 +- sbSecId: 5 + title: Building a Module + link: /prebid-server/developers/add-a-module.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 5 + - sbSecId: 5 title: Code Reviews link: /prebid-server/developers/code-reviews.html diff --git a/_layouts/bidder.html b/_layouts/bidder.html index 35f39c9de1..ef9165c1cd 100644 --- a/_layouts/bidder.html +++ b/_layouts/bidder.html @@ -76,7 +76,7 @@

Features

Supports Deals - {% if page.bidder_supports_deals == false %}no{% elsif page.bidder_supports_deals == true %}yes{% else %}check with bidder{% endif %} + {% if page.deals_supported == false %}no{% elsif page.deals_supported == true %}yes{% else %}check with bidder{% endif %} Prebid.js Adapter yes @@ -88,9 +88,9 @@

Features

Floors Module Support - {% if page.getFloor == true %}yes{% else %}no{% endif %} - - + {% if page.floors_supported == true %}yes{% else %}no{% endif %} + First Party Data Support + {% if page.fpd_supported == true %}yes{% elsif page.fpd_supported == false %}no{% else %}check with bidder{% endif %} diff --git a/_layouts/example.html b/_layouts/example.html index dc97cef97a..c917458838 100644 --- a/_layouts/example.html +++ b/_layouts/example.html @@ -43,19 +43,11 @@

This page contains:

-

- On the JSFiddle example below, click Result to see the result. -

- -

- Click Edit in JSFiddle to open the example in a new tab. -

-

For tips and troubleshooting info, see:

@@ -52,7 +52,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "b" or firstletter == "c" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -63,7 +63,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "d" or firstletter == "e" or firstletter == "f" or firstletter == "g" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -74,7 +74,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "h" or firstletter == "i" or firstletter == "j" or firstletter == "k" or firstletter == "l" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -85,7 +85,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "m" or firstletter == "n" or firstletter == "o" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -96,7 +96,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "p" or firstletter == "q" or firstletter == "r" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -107,7 +107,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "s" or firstletter == "t" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} @@ -118,7 +118,7 @@ var AutocompleteList = [{% for page in bidder_pages %}{ label: '{{ page.title }} {% assign firstletter = page.title | slice:0 | downcase %} {% unless firstletter == "u" or firstletter == "v" or firstletter == "w" or firstletter == "x" or firstletter == "y" or firstletter == "z" %}{% continue %}{% endunless %}
  • - {{ page.title }} + {{ page.title }}
  • {% endfor %} diff --git a/dev-docs/bidders/33across.md b/dev-docs/bidders/33across.md index 17d07de9f0..cc457b8713 100644 --- a/dev-docs/bidders/33across.md +++ b/dev-docs/bidders/33across.md @@ -7,7 +7,7 @@ pbs: true biddercode: 33across media_types: banner, video gdpr_supported: true -getFloor: true +floors_supported: true schain_supported: true usp_supported: true userIds: all diff --git a/dev-docs/bidders/aceex.md b/dev-docs/bidders/aceex.md new file mode 100644 index 0000000000..e380d3aa54 --- /dev/null +++ b/dev-docs/bidders/aceex.md @@ -0,0 +1,27 @@ +--- +layout: bidder +title: Aceex +description: Prebid Aceex Bidder Adaptor +biddercode: aceex +gdpr_supported: true +usp_supported: true +coppa_supported: true +schain_supported: true +userId: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId +media_types: banner, video, native +safeframes_ok: true +deals_supported: true +pbjs: false +pbs: true +--- + +### Note: + +The Example Bidding adapter requires setup before beginning. Please contact us at tech@aceex.com + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-----------------------|-----------|-----------| +| `accountid` | required | Endpoint id | `'hash'` | `string` | diff --git a/dev-docs/bidders/acuityads.md b/dev-docs/bidders/acuityads.md index a6f10c6e20..95d4784821 100644 --- a/dev-docs/bidders/acuityads.md +++ b/dev-docs/bidders/acuityads.md @@ -10,7 +10,7 @@ schain_supported: true userId: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: false pbs: true --- diff --git a/dev-docs/bidders/adagio.md b/dev-docs/bidders/adagio.md index d658da1cbe..8c311afc1a 100644 --- a/dev-docs/bidders/adagio.md +++ b/dev-docs/bidders/adagio.md @@ -6,13 +6,15 @@ pbjs: true biddercode: adagio media_types: banner, native, video userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, pubProvidedId, sharedId, unifiedId -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true gvl_id: 617 -prebid_member: true, +prebid_member: true +pbs: true +fpd_supported: true --- ### Note diff --git a/dev-docs/bidders/adf.md b/dev-docs/bidders/adf.md index 34f70931ed..128386ea0a 100644 --- a/dev-docs/bidders/adf.md +++ b/dev-docs/bidders/adf.md @@ -9,9 +9,12 @@ usp_supported: true prebid_member: true pbjs: true pbs: true +schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, sharedId, unifiedId gvl_id: 50 prevBiddercode: adformOpenRTB +floors_supported: true +fpd_supported: true --- ### Bid params diff --git a/dev-docs/bidders/adgeneration.md b/dev-docs/bidders/adgeneration.md index 812cfbecd7..8ff03a0902 100644 --- a/dev-docs/bidders/adgeneration.md +++ b/dev-docs/bidders/adgeneration.md @@ -6,7 +6,6 @@ pbjs: true pbs: true biddercode: adgeneration media_types: native -pbjs_version_notes: not in 5.x --- diff --git a/dev-docs/bidders/adhash.md b/dev-docs/bidders/adhash.md index 191bbec27c..f341d3e6de 100644 --- a/dev-docs/bidders/adhash.md +++ b/dev-docs/bidders/adhash.md @@ -5,7 +5,7 @@ description: Prebid AdHash Bidder Adapter pbjs: true biddercode: adhash safeframes_ok: false -pbjs_version_notes: not in 5.x +gdpr_supported: true --- ### Note @@ -27,4 +27,4 @@ Please note that a number of AdHash functionalities are not supported in the Pre | Name | Scope | Description | Example | Type | |---------------|----------|--------------|------------------------------------------------|----------| | `publisherId` | required | Publisher ID | `'0x1234567890123456789012345678901234567890'` | `string` | -| `platformURL` | required | Platform URL | `'https://adhash.org/p/struma/'` | `string` | +| `platformURL` | required | Platform URL | `'https://adhash.org/p/example/'` | `string` | diff --git a/dev-docs/bidders/adman.md b/dev-docs/bidders/adman.md index 821ed67f9d..04077daf73 100644 --- a/dev-docs/bidders/adman.md +++ b/dev-docs/bidders/adman.md @@ -7,8 +7,8 @@ pbs: true biddercode: adman gdpr_supported: true usp_supported: true -media_types: banner, video -pbjs_version_notes: not in 5.x +media_types: banner, video, native +userIds: uid2 --- ### Note: diff --git a/dev-docs/bidders/admixer.md b/dev-docs/bidders/admixer.md index 564b39711d..67ebf06294 100644 --- a/dev-docs/bidders/admixer.md +++ b/dev-docs/bidders/admixer.md @@ -9,6 +9,7 @@ media_types: video gdpr_supported: true usp_supported: true schain_supported: true +fpd_supported: true gvl_id: 511 --- diff --git a/dev-docs/bidders/adnuntius.md b/dev-docs/bidders/adnuntius.md index cdb2766ccd..08603cfcbe 100644 --- a/dev-docs/bidders/adnuntius.md +++ b/dev-docs/bidders/adnuntius.md @@ -3,9 +3,12 @@ layout: bidder title: Adnuntius description: Prebid Adnuntius Bidder Adaptor pbjs: true +pbs: true biddercode: adnuntius media_types: banner gdpr_supported: true +fpd_supported: true +gvl_id: 855 --- ### Bid Params @@ -53,23 +56,44 @@ Here's an example of sending targeting information about categories to adnuntius There's an option to send segment id in the bidder config that will be picked up and sent to the ad server. Below is an example on how to do this: ``` +pbjs.setBidderConfig({ + bidders: ['adnuntius', 'bidderB'], + config: { + ortb2: { + user: { + data: [{ + name: "adnuntius", + segment: [ + { id: "1" }, + { id: "2" } + ] + }] + } + } + } +}); +``` + +### Prebid Server Test Request - pbjs.setBidderConfig({ - bidders: ['adnuntius', 'bidderB'], - config: { - ortb2: { - user: { - data: [{ - name: "adnuntius", - segment: [ - { id: "1" }, - { id: "2" } - ] - }] - } - } - } - }); +The following test parameters can be used to verify that Prebid Server is working properly with the server-side Adnuntius adapter. the `auId` below will not return a creative. Please substitute it with your own. -´´´ +``` +"imp": [{ + "id": "impression-id", + "banner": { + "format": [{ + "w": 980, + "h": 240 + }, { + "w": 980, + "h": 360 + }] + }, + "ext": { + "adnuntius": { + "auId": "abc123" + } + } +}] ``` diff --git a/dev-docs/bidders/adpartner.md b/dev-docs/bidders/adpartner.md index caddd1ad55..ead43860ca 100644 --- a/dev-docs/bidders/adpartner.md +++ b/dev-docs/bidders/adpartner.md @@ -5,12 +5,11 @@ description: Prebid AdPartner Bidder Adaptor pbjs: true biddercode: adpartner media_types: banner -pbjs_version_notes: not in 5.x --- ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|----------|----------|-------------|----------------------|-----------| -| `unitId` | required | Unit ID. | `5809` | `integer` | +| Name | Scope | Description | Example | Type | +|-------------|----------|-------------|----------------------|-----------| +| `partnerId` | required | Partner ID. | `5809` | `integer` | diff --git a/dev-docs/bidders/adpone.md b/dev-docs/bidders/adpone.md index 608b228ff1..c2da708ebd 100644 --- a/dev-docs/bidders/adpone.md +++ b/dev-docs/bidders/adpone.md @@ -5,7 +5,7 @@ description: Prebid Adpone Bidder Adaptor pbjs: true pbs: true biddercode: adpone -bidder_supports_deals: false +deals_supported: false media_types: banner gvl_id: 799 --- diff --git a/dev-docs/bidders/adprime.md b/dev-docs/bidders/adprime.md index 11bd34ba16..4452ddfc97 100644 --- a/dev-docs/bidders/adprime.md +++ b/dev-docs/bidders/adprime.md @@ -5,11 +5,11 @@ description: Prebid Adprime Bidder Adapter biddercode: adprime gdpr_supported: true usp_supported: true -media_types: banner, video +media_types: banner, video, native +tcf2_supported: true pbjs: true pbs: true pbs_app_supported: true -pbjs_version_notes: not in 5.x --- ### Note: @@ -23,4 +23,5 @@ The Adprime Bidding adapter requires setup before beginning. Please contact us a |---------------|----------|-----------------------|-----------|-----------| | `placementId` | required | Adprime placement id | `'1234asdf'` | `string` | | `keywords` | optional | page context keywords | ['car','sport'] | `array` | +| `audiences` | optional | publisher audiences | ['aud1','aud2'] | `array` | diff --git a/dev-docs/bidders/adquery.md b/dev-docs/bidders/adquery.md new file mode 100644 index 0000000000..8ab327d42b --- /dev/null +++ b/dev-docs/bidders/adquery.md @@ -0,0 +1,19 @@ +--- +layout: bidder +title: Adquery +description: Prebid Adquery Bidder Adaptor +pbjs: true +biddercode: adquery +gdpr_supported: true +usp_supported: true +schain_supported: true +gvl_id: 902 +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|---------------|-------------------------------------------|-----------| +| `placementId` | required | Placement ID | `6d93f2a0e5f0fe2cc3a6e9e3ade964b43b07f897`| `string` | +| `type` | required | Ad Type | `banner300x250` | `string` | diff --git a/dev-docs/bidders/adrelevantis.md b/dev-docs/bidders/adrelevantis.md index 97ceab7c8a..1d132f2b03 100644 --- a/dev-docs/bidders/adrelevantis.md +++ b/dev-docs/bidders/adrelevantis.md @@ -4,6 +4,7 @@ title: Adrelevantis description: Prebid Adrelevantis (adrelevantis.xyz) Bidder Adaptor biddercode: adrelevantis media_types: banner, video, native +fpd_supported: true pbjs: true --- diff --git a/dev-docs/bidders/adriver.md b/dev-docs/bidders/adriver.md index 3461aceb2c..1a69fb4108 100644 --- a/dev-docs/bidders/adriver.md +++ b/dev-docs/bidders/adriver.md @@ -4,9 +4,9 @@ title: adriver description: Adriver adapter biddercode: adriver pbjs: true -bidder_supports_deals: true +deals_supported: true userIds: sharedId, id5Id, uid2Id -getFloor: true +floors_supported: true --- diff --git a/dev-docs/bidders/adsyield.md b/dev-docs/bidders/adsyield.md new file mode 100644 index 0000000000..f8e7b1b758 --- /dev/null +++ b/dev-docs/bidders/adsyield.md @@ -0,0 +1,18 @@ +--- +layout: bidder +title: AdsYield +description: Prebid AdsYield Bidder Adaptor +pbjs: true +biddercode: adsyield +aliasCode: admixer +media_types: video +gdpr_supported: true +usp_supported: true +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|------------------------------------------------------------------------------------------------------------------|----------------------------------------|----------| +| `zone` | required | The unique identifier of the ad placement. Could be obtained from the AdsYield UI or from your account manager. | "e5ff8e48-4bd0-4a2c-9236-55530ab8981d" | `string` | diff --git a/dev-docs/bidders/advangelists.md b/dev-docs/bidders/advangelists.md index 0d5f47a56d..79fdaca310 100644 --- a/dev-docs/bidders/advangelists.md +++ b/dev-docs/bidders/advangelists.md @@ -5,7 +5,6 @@ description: Prebid Advangelists Bidder Adapter pbjs: true pbs: true biddercode: advangelists -pbjs_version_notes: not in 5.x --- ### Note: diff --git a/dev-docs/bidders/adxcg.md b/dev-docs/bidders/adxcg.md index 9f85e7170e..f7803f0ac5 100644 --- a/dev-docs/bidders/adxcg.md +++ b/dev-docs/bidders/adxcg.md @@ -2,7 +2,7 @@ layout: bidder title: adxcg description: Prebid adxcg bidder adaptor -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/adyoulike.md b/dev-docs/bidders/adyoulike.md index cdfc18ccca..a8f6b5a454 100644 --- a/dev-docs/bidders/adyoulike.md +++ b/dev-docs/bidders/adyoulike.md @@ -8,6 +8,7 @@ media_types: banner, video, native biddercode: adyoulike gdpr_supported: true usp_supported: true +floors_supported: true --- ### Note: diff --git a/dev-docs/bidders/afp.md b/dev-docs/bidders/afp.md new file mode 100644 index 0000000000..07e3d197ea --- /dev/null +++ b/dev-docs/bidders/afp.md @@ -0,0 +1,201 @@ +--- +layout: bidder +title: AFP +description: Prebid AFP Bidder Adapter +pbjs: true +media_types: banner, video +biddercode: afp +safeframes_ok: false +--- + +### Note + +You can use this adapter to get a bid from AFP. +Please reach out to your AFP account team before using this plugin to get placeId. +The code below returns a demo ad. + + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------------|---------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------| +| `placeId` | required | Place id. | '5af45ad34d506ee7acad0c26' | `string` | +| `placeType` | required | Place type. | 'In-image', 'In-image Max', 'In-content Banner', 'In-content Video', 'Out-content Video', 'In-content Stories', 'Action Scroller', 'Action Scroller Light', 'Just Banner' | `string` | +| `placeContainer` | required (if the frame is not safe) | The container of the place where the ad will be displayed. The css selector is specified as the value. | '#container' | `string` | +| `imageUrl` | required (for 'In-image', 'In-image Max' placeType) | URL of the image on which the banner will be displayed. | 'https://creative.astraone.io/files/default_image-1-600x400.jpg' | `string` | +| `imageWidth` | required (for 'In-image', 'In-image Max' placeType) | Image width. | 600 | `integer` | +| `imageHeight` | required (for 'In-image', 'In-image Max' placeType) | Image height. | 400 | `integer` | + + +### InImage Example page + + +```html + + + + + Prebid.js In-image Example + + + + +

    In-image

    +
    +
    + +
    + +
    + +

    Just Banner

    +
    +
    + +
    + + +``` +### InImage Example page with GPT + +```html + + + + + Prebid.js In-image Example + + + + + +

    In-image

    +
    +
    + +
    +
    + +
    +
    + + +``` diff --git a/dev-docs/bidders/aja.md b/dev-docs/bidders/aja.md index 1fb854532f..11233433ec 100644 --- a/dev-docs/bidders/aja.md +++ b/dev-docs/bidders/aja.md @@ -2,22 +2,23 @@ layout: bidder title: AJA description: Prebid AJA Bidder Adaptor +userIds: criteo, unifiedId, imuid pbjs: true pbs: true biddercode: aja media_types: video, native --- -### Note: +### Note The AJA Bidding adaptor requires setup and approval before beginning. Please reach out to for more details ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | +| Name | Scope | Description | Example | Type | |-------|----------|---------------------|------------|----------| -| `asi` | required | ad spot hash code | `'123abc'` | `string` | +| `asi` | required | ad spot hash code | `'123abc'` | `string` | ### Configuration @@ -30,11 +31,11 @@ pbjs.setConfig({ userSync: { filterSettings: { iframe: { - bidders: '*', // '*' represents all bidders - filter: 'include' - } - } - } + bidders: "*", // '*' represents all bidders + filter: "include", + }, + }, + }, }); ``` @@ -44,8 +45,7 @@ For Prebid.js v1.14.0 and before: pbjs.setConfig({ userSync: { iframeEnabled: true, - enabledBidders: ['aja'] - } + enabledBidders: ["aja"], + }, }); ``` - diff --git a/dev-docs/bidders/algorix.md b/dev-docs/bidders/algorix.md index d6b6c0a363..c9ebaa0fea 100644 --- a/dev-docs/bidders/algorix.md +++ b/dev-docs/bidders/algorix.md @@ -5,12 +5,14 @@ description: Prebid AlgoriX Bidder Adapter biddercode: algorix gdpr_supported: false gvl_id: -usp_supported: false -coppa_supported: false +usp_supported: true +coppa_supported: true +schain_supported: true media_types: banner, video, native pbjs: false pbs: true pbs_app_supported: true +prebid_member: true --- ### Note: diff --git a/dev-docs/bidders/amx.md b/dev-docs/bidders/amx.md index bddf72a938..f8f3ff6574 100644 --- a/dev-docs/bidders/amx.md +++ b/dev-docs/bidders/amx.md @@ -14,6 +14,7 @@ media_types: banner, video pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 737 --- @@ -22,8 +23,8 @@ gvl_id: 737 {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |-------------|----------|-----------------------------------------------------------------|---------------------------------|----------| +| `tagId` | required | Tag ID | `'cHJlYmlkLm9yZw'` | `string` | | `testMode` | optional | Activate 100% fill ads | `true` | `boolean`| -| `tagId` | optional | Tag ID | `'cHJlYmlkLm9yZw'` | `string` | | `adUnitId` | optional | Ad Unit ID used in reporting. Will default to `bid.adUnitCode` | `'sticky_banner'` | `string` | ### Test Parameters @@ -37,4 +38,6 @@ To enable 100% fill test ads, you can use the following `params`: } ``` -Note that the `tagId` is case-sensitive. This will produce a bid at $10 with a test creative. +This will produce a bid at $10 with a test creative. + +Note that the `tagId` is case-sensitive. Do not use `cHJlYmlkLm9yZw` in production environments: this ID is for testing only. diff --git a/dev-docs/bidders/aniview.md b/dev-docs/bidders/aniview.md index 4ae7c6ce14..a51cc6f840 100644 --- a/dev-docs/bidders/aniview.md +++ b/dev-docs/bidders/aniview.md @@ -1,16 +1,19 @@ --- layout: bidder title: ANIVIEW -description: Prebid ANIVIEW Bidder Adaptor +description: Prebid ANIVIEW Bidder Adapter pbjs: true biddercode: aniview -media_types: video +media_types: banner, video gdpr_supported: true usp_supported: true +schain_supported: true +safeframes_ok: true +gvl_id: 780 --- ### Note: -For more information about [Aniview Ad Server](http://www.aniview.com/), please contact info@aniview.com. +For more information about [Aniview Ad Server](https://www.aniview.com/), please contact info@aniview.com. ### Bid Params @@ -19,3 +22,24 @@ For more information about [Aniview Ad Server](http://www.aniview.com/), please |------------------|----------|------------------|------------------------------|----------| | `AV_PUBLISHERID` | required | Publisher/Netid | `'55b88d4a181f465b3e8b4567'` | `string` | | `AV_CHANNELID` | required | Channel id | `'5a5f17a728a06102d14c2718'` | `string` | + +### Test Parameters +``` +videoAdUnit = [ +{ + code: 'video1', + mediaTypes: { + video: { + playerSize: [[640, 480]], + context: 'outstream' + }, + }, + bids: [{ + bidder: 'aniview', + params: { + AV_PUBLISHERID: '55b78633181f4603178b4568', + AV_CHANNELID: '5d19dfca4b6236688c0a2fc4' + } + }] +}]; +``` diff --git a/dev-docs/bidders/aol.md b/dev-docs/bidders/aol.md index a7b454b426..fb266cb690 100644 --- a/dev-docs/bidders/aol.md +++ b/dev-docs/bidders/aol.md @@ -10,6 +10,19 @@ gvl_id: 25 userIds: verizonMediaId --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `aol` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. + +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `oneVideo` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP ### Note: This adapter allows use of both ONE by AOL: Display and ONE by AOL: Mobile platforms. In order to differentiate these sources of demand in your ad server and reporting, you may use the optional `onedisplay` and `onemobile` adapter aliases instead. diff --git a/dev-docs/bidders/apacdex.md b/dev-docs/bidders/apacdex.md index 3257909e1a..a7a7da140b 100644 --- a/dev-docs/bidders/apacdex.md +++ b/dev-docs/bidders/apacdex.md @@ -9,7 +9,7 @@ gdpr_supported: true schain_supported: true usp_supported: true userIds: all -getFloor: true +floors_supported: true --- ### Table of Contents @@ -26,12 +26,14 @@ getFloor: true ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|--------------|----------|-------------------------------------------------------------------------------------|---------------------------------------------------|----------| -| `siteId` | required | Publisher site ID from Apacdex | `'apacdex1234'` | `string` | -| `floorPrice` | optional | CPM bidfloor in USD | `0.03` | `float` | -| `geo` | optional | GEO data of device. See [Geo Object](#apacdex-geo-object) for details. | `{"lat":17.98928,"lon":99.7741712,"accuracy":20}` | `object` | +| Name | Scope | Description | Example | Type | +|---------------|----------|-------------------------------------------------------------------------------------|---------------------------------------------------|----------| +| `placementId`*| required | Placement ID provided by Apacdex | `'plc100000'` | `string` | +| `siteId`* | required | Publisher site ID from Apacdex | `'apacdex1234'` | `string` | +| `floorPrice` | optional | CPM bidfloor in USD | `0.03` | `float` | +| `geo` | optional | GEO data of device. See [Geo Object](#apacdex-geo-object) for details. | `{"lat":17.98928,"lon":99.7741712,"accuracy":20}` | `object` | +(*) Please do not use `placementId` and `siteId` at the same time. @@ -59,9 +61,9 @@ Publishers declare video inventory by passing the following parameters via media |----------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-----------| | `context` | required | instream or outstream |`"outstream"` | `string` | | `playerSize`| required | width, height of the player in pixels | `[640,360]` - will be translated to w and h in bid request | `array` | -| `mimes` | required | List of content MIME types supported by the player (see openRTB v2.5 for options) | `["video/mp4"]`| `array`| -| `protocols` | required | Supported video bid response protocol values
    1: VAST 1.0
    2: VAST 2.0
    3: VAST 3.0
    4: VAST 1.0 Wrapper
    5: VAST 2.0 Wrapper
    6: VAST 3.0 Wrapper
    7: VAST 4.0
    8: VAST 4.0 Wrapper | `[2,3,5,6]` | `array`| -| `api` | required | Supported API framework values:
    1: VPAID 1.0
    2: VPAID 2.0
    3: MRAID-1
    4: ORMMA
    5: MRAID-2 | `[2]` | `array` | +| `mimes` | recommended | List of content MIME types supported by the player (see openRTB v2.5 for options) | `["video/mp4"]`| `array`| +| `protocols` | recommended | Supported video bid response protocol values
    1: VAST 1.0
    2: VAST 2.0
    3: VAST 3.0
    4: VAST 1.0 Wrapper
    5: VAST 2.0 Wrapper
    6: VAST 3.0 Wrapper
    7: VAST 4.0
    8: VAST 4.0 Wrapper | `[2,3,5,6]` | `array`| +| `api` | recommended | Supported API framework values:
    1: VPAID 1.0
    2: VPAID 2.0
    3: MRAID-1
    4: ORMMA
    5: MRAID-2 | `[2]` | `array` | | `maxduration` | recommended | Maximum video ad duration in seconds. | `30` | `integer` | | `minduration` | recommended | Minimum video ad duration in seconds | `6` | `integer` | | `playbackmethod` | recommended | Playback methods that may be in use. Only one method is typically used in practice. (see openRTB v2.5 section 5.10 for options)| `[2]`| `array` | @@ -170,4 +172,4 @@ var outstreamAdUnit = { }; ``` mediaTypes.video object reference to section 3.2.7 Object: Video in the OpenRTB 2.5 document -You must review all video parameters to ensure validity for your player and DSPs \ No newline at end of file +You must review all video parameters to ensure validity for your player and DSPs diff --git a/dev-docs/bidders/appnexus.md b/dev-docs/bidders/appnexus.md index 6e848d7215..0d9360bb28 100644 --- a/dev-docs/bidders/appnexus.md +++ b/dev-docs/bidders/appnexus.md @@ -10,7 +10,8 @@ userIds: criteo, unifiedId, netId, identityLink, flocId, uid2 schain_supported: true coppa_supported: true usp_supported: true -getFloor: true +floors_supported: true +fpd_supported: true pbjs: true pbs: true gvl_id: 32 diff --git a/dev-docs/bidders/aso.md b/dev-docs/bidders/aso.md index c1e59bccab..8e4fae6934 100644 --- a/dev-docs/bidders/aso.md +++ b/dev-docs/bidders/aso.md @@ -7,10 +7,10 @@ gdpr_supported: true usp_supported: true media_types: video safeframes_ok: true -bidder_supports_deals: false +deals_supported: false pbjs: true pbs: false -getFloor: true +floors_supported: true --- ### Note: @@ -55,4 +55,4 @@ pbjs.setConfig({ url: 'https://prebid.adnxs.com/pbc/v1/cache' } }); -``` \ No newline at end of file +``` diff --git a/dev-docs/bidders/automatad.md b/dev-docs/bidders/automatad.md index cd1c2045b4..27714c6d15 100644 --- a/dev-docs/bidders/automatad.md +++ b/dev-docs/bidders/automatad.md @@ -5,6 +5,7 @@ description: Automatad OpenRTB Bid Adapter biddercode: automatad pbjs: true media_types: banner +fpd_supported: true --- #### Bid Params diff --git a/dev-docs/bidders/avantisvideo.md b/dev-docs/bidders/avantisvideo.md index 2f1d2e72ee..bdc5ae4dd9 100644 --- a/dev-docs/bidders/avantisvideo.md +++ b/dev-docs/bidders/avantisvideo.md @@ -5,13 +5,15 @@ description: Avantis Video Bidder Adapter pbjs: true biddercode: avantisvideo aliasCode: aniview -media_types: video +media_types: banner, video gdpr_supported: true usp_supported: true +schain_supported: true +safeframes_ok: true --- ### Note: -For more information about [Avantis Video](https://www.avantisvideo.com/). +For more information about [Avantis Video](https://www.avantisvideo.com/), please contact contact@avantisvideo.com. ### Bid Params diff --git a/dev-docs/bidders/beachfront.md b/dev-docs/bidders/beachfront.md index 439bd85d1e..aa28971a92 100644 --- a/dev-docs/bidders/beachfront.md +++ b/dev-docs/bidders/beachfront.md @@ -4,7 +4,7 @@ title: Beachfront description: Prebid Beachfront Bidder Adapter biddercode: beachfront media_types: video -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true userIds: unifiedId, identityLink, uid2, haloId diff --git a/dev-docs/bidders/beop.md b/dev-docs/bidders/beop.md new file mode 100644 index 0000000000..3f7786d8b7 --- /dev/null +++ b/dev-docs/bidders/beop.md @@ -0,0 +1,16 @@ +--- +layout: bidder +title: BeOp +description: BeOp Bidder Adaptor +pbjs: true +biddercode: beop +fpd_supported: true +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-------------|---------|----------| +| `accountId` or `networkId` | required | Your BeOp account ID | `'5a8af500c9e77c00017e4cad'` | `string` | +| `currency` | optional | Your currency | `'EUR'` (default) or `'USD'` | `string` | diff --git a/dev-docs/bidders/between.md b/dev-docs/bidders/between.md index 59eac200bd..b37304b1b5 100644 --- a/dev-docs/bidders/between.md +++ b/dev-docs/bidders/between.md @@ -8,9 +8,10 @@ biddercode: between schain_supported: true gdpr_supported: true pbs_app_supported: true -userIds: sharedId +userIds: all gvl_id: 724 usp_supported: true +safeframes_ok: false --- ### Prebid.js Bid Params @@ -19,8 +20,6 @@ usp_supported: true | Name | Scope | Description | Example | Type | |---------------|----------|-------------|---------|----------| | `s` | required | Section ID from Between SSP control panel | 999999 | `integer` | -| `w` | required | width of placement(Number) | 240 | -| `h` | required | height of placement(Number) | 400 | ### Prebid-Server Bid Params diff --git a/dev-docs/bidders/bidmachine.md b/dev-docs/bidders/bidmachine.md index c314667874..82f1dd997e 100644 --- a/dev-docs/bidders/bidmachine.md +++ b/dev-docs/bidders/bidmachine.md @@ -11,7 +11,7 @@ schain_supported: true dchain_supported: false media_types: banner, video safeframes_ok: true -bidder_supports_deals: false +deals_supported: false pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/bizzclick.md b/dev-docs/bidders/bizzclick.md index dee853df60..57846d529e 100644 --- a/dev-docs/bidders/bizzclick.md +++ b/dev-docs/bidders/bizzclick.md @@ -9,9 +9,8 @@ coppa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true -pbjs_version_notes: not in 5.x --- ### Note: diff --git a/dev-docs/bidders/bliink.md b/dev-docs/bidders/bliink.md new file mode 100644 index 0000000000..a75f4c10eb --- /dev/null +++ b/dev-docs/bidders/bliink.md @@ -0,0 +1,25 @@ +--- +layout: bidder +title: BLIINK +description: Prebid BLIINK Bidder Adaptor +pbjs: true +pbs: false +media_types: video +biddercode: bliink +gdpr_supported: true +usp_supported: false +--- + +### Note: +The BLIINK Header Bidding adaptor requires setup and approval from the BLIINK team. Please reach out to your account manager for more informations. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------------|----------|----------------------------------|--------------------------------------|----------| +| `tagId` | required | The TagID from BLIINK. | `'32'` | `string` | +| `placement` | required | The placement from BLIINK. | `'video'` | `string` | + + +Same 'placement' parameter can be used from either prebid JS or prebid server. diff --git a/dev-docs/bidders/bmtm.md b/dev-docs/bidders/bmtm.md index df49410149..3d99a82779 100644 --- a/dev-docs/bidders/bmtm.md +++ b/dev-docs/bidders/bmtm.md @@ -4,7 +4,7 @@ title: Bright Mountain Media description: Prebid Bright Mountain Media Bidder Adapter biddercode: bmtm media_types: banner, video -getFloor: true +floors_supported: true schain_supported: true pbjs: true pbs: true diff --git a/dev-docs/bidders/boldwin.md b/dev-docs/bidders/boldwin.md index 10e7ed89d5..084e923814 100644 --- a/dev-docs/bidders/boldwin.md +++ b/dev-docs/bidders/boldwin.md @@ -5,8 +5,7 @@ description: Prebid Boldwin Bidder Adapter pbjs: true biddercode: boldwin gdpr_supported: true -media_types: banner, video -pbjs_version_notes: not in 5.x +media_types: banner, video, native --- ### Note: @@ -18,4 +17,4 @@ The Boldwin Bidding adapter requires setup before beginning. Please contact us a {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|-----------------------|-----------|-----------| -| `placementId` | required | Adprime placement id | `'1234asdf'` | `'string'` | +| `placementId` | required | Boldwin placement id | `'1234asdf'` | `'string'` | diff --git a/dev-docs/bidders/brave.md b/dev-docs/bidders/brave.md new file mode 100644 index 0000000000..e26f0f7249 --- /dev/null +++ b/dev-docs/bidders/brave.md @@ -0,0 +1,26 @@ +--- +layout: bidder +title: Brave +description: Prebid Brave Bidder Adapter +biddercode: brave +gdpr_supported: true +usp_supported: true +coppa_supported: true +schain_supported: true +media_types: banner, video, native +safeframes_ok: true +deals_supported: true +pbjs: true +pbs: false +--- + +### Note: + +The Brave Header Bidding adapter requires setup and approval from the Brave team. Please reach out to your account manager or support@thebrave.io for more information + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-------------------------------|-------------------------------------|-----------| +| `placementId` | required | Brave's platform placement id | `'to0QI2aPgkbBZq6vgf0oHitouZduz0qw'` | `string` | diff --git a/dev-docs/bidders/colossus.md b/dev-docs/bidders/colossus.md index a01899d0af..e7b322df75 100644 --- a/dev-docs/bidders/colossus.md +++ b/dev-docs/bidders/colossus.md @@ -6,7 +6,7 @@ biddercode: colossus usp_supported: true schain_supported: true media_types: banner, video, native -userIds: britepoolid, identityLink, unifiedId, id5Id +userIds: britepoolid, identityLink, unifiedId, id5Id, uid2 gdpr: true pbjs: false pbs: true diff --git a/dev-docs/bidders/colossusssp.md b/dev-docs/bidders/colossusssp.md index a571a4f42b..50931a7c99 100644 --- a/dev-docs/bidders/colossusssp.md +++ b/dev-docs/bidders/colossusssp.md @@ -6,11 +6,11 @@ biddercode: colossusssp usp_supported: true schain_supported: true media_types: banner, video, native -userIds: britepoolid, identityLink, unifiedId, id5Id +userIds: britepoolid, identityLink, unifiedId, id5Id, uid2 gdpr: true +fpd_supported: true pbjs: true pbs: false -pbjs_version_notes: not in 5.x --- ### Prebid.JS Bid Params diff --git a/dev-docs/bidders/connectad.md b/dev-docs/bidders/connectad.md index 2a8c0e1558..b5f67acab3 100644 --- a/dev-docs/bidders/connectad.md +++ b/dev-docs/bidders/connectad.md @@ -11,7 +11,7 @@ schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId prebid_member: true safeframes_ok: true -getFloor: true +floors_supported: true pbjs: true pbs: true gvl_id: 138 diff --git a/dev-docs/bidders/contentexchange.md b/dev-docs/bidders/contentexchange.md new file mode 100644 index 0000000000..364ee93d6f --- /dev/null +++ b/dev-docs/bidders/contentexchange.md @@ -0,0 +1,21 @@ +--- +layout: bidder +title: ContentExchange +description: Prebid Contentexchange Bidder Adapter +biddercode: contentexchange +usp_supported: true +schain_supported: true +media_types: banner, video, native +gdpr_supported: true +pbjs: true +pbs: false +pbs_app_supported: false +--- + +### Prebid.JS Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------------|----------|----------------------------------------------------------|------------|-----------| +| `placementId` | required | Placement Id will be generated on ContentExchange Platform. | `'1234'` | `string` | +| `adFormat` | required | `[banner, video, native]` | `'banner'` | `string` | diff --git a/dev-docs/bidders/conversant.md b/dev-docs/bidders/conversant.md index 6991323c74..d8c76b9d2b 100644 --- a/dev-docs/bidders/conversant.md +++ b/dev-docs/bidders/conversant.md @@ -7,7 +7,7 @@ pbs: true biddercode: conversant media_types: video gdpr_supported: true -userIds: criteo, id5Id, identityLink, liveIntentId, parrableId, pubCommonId, unifiedId +userIds: criteo, id5Id, identityLink, liveIntentId, parrableId, pubCommonId, unifiedId, publinkId prebid_member: true gvl_id: 24 --- diff --git a/dev-docs/bidders/cpmstar.md b/dev-docs/bidders/cpmstar.md index f01b0b56f7..3b97562e91 100644 --- a/dev-docs/bidders/cpmstar.md +++ b/dev-docs/bidders/cpmstar.md @@ -9,7 +9,6 @@ media_types: banner, video gdpr_supported: true usp_supported: true coppa_supported: true -pbjs_version_notes: not in 5.x --- ### Bid Params diff --git a/dev-docs/bidders/criteo.md b/dev-docs/bidders/criteo.md index fe5d109427..37bdc717a4 100644 --- a/dev-docs/bidders/criteo.md +++ b/dev-docs/bidders/criteo.md @@ -10,17 +10,14 @@ gdpr_supported: true usp_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, pubProvidedId, sharedId, unifiedId prebid_member: true -getFloor: false* +floors_supported: false +fpd_supported: true gvl_id: 91 --- ### Notes {: .alert.alert-warning :} -For Native Ads, in order to avoid further decoding issues of special characters, the assets need to be sent as placeholders. -That means, `sendId: true` becomes mandatory for all fields receiving URLs, notably: `icon`, `image`, `clickUrl`, `privacyLink`, `privacyIcon`. +*Criteo currently only supports getFloor if floors are in USD and if the publisher is enabling the Criteo Publisher Tag external js call. -*Criteo currently only supports getFloor if floors are in Euros and if the publisher is enabling the Criteo Publisher Tag external js call. - -See [Sending Asset Placeholders]({{site.baseurl}}/dev-docs/show-native-ads.html#sending-asset-placeholders). {: .alert.alert-warning :} Prebid-Server support is on alpha test and is currently a non-finished product. Activation requires setup and approval before beginning. Please reach out to your account manager or publishers@criteo.com for more details. diff --git a/dev-docs/bidders/datablocks.md b/dev-docs/bidders/datablocks.md index 761405f240..58aea81085 100644 --- a/dev-docs/bidders/datablocks.md +++ b/dev-docs/bidders/datablocks.md @@ -12,6 +12,7 @@ pbs_app_supported: true schain_supported: true usp_supported: true userIds: criteo,unifiedId,netId,pubcid +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/districtmdmx.md b/dev-docs/bidders/districtmdmx.md index 6af35635eb..fef2443cc5 100644 --- a/dev-docs/bidders/districtmdmx.md +++ b/dev-docs/bidders/districtmdmx.md @@ -6,7 +6,7 @@ pbjs: true biddercode: districtmDMX gdpr_supported: true schain_supported: true -getFloor: true +floors_supported: true usp_supported: true coppa_supported: true userIds: britepoolId, criteo, id5Id, identityLink, intentiq, liveIntentId, netId, parrableId, pubCommonId, unifiedId @@ -33,4 +33,3 @@ userIds: britepoolId, criteo, id5Id, identityLink, intentiq, liveIntentId, netId | `floor` | optional | Bid floor price | `"1.00"` | `string` | | `revShare` | optional | Publisher Revenue Share | `"0.85"` | `string` | | `currency` | optional | Currency code | `"usd"` | `string` | - diff --git a/dev-docs/bidders/epom.md b/dev-docs/bidders/epom.md index 228670bceb..d1d5897a28 100644 --- a/dev-docs/bidders/epom.md +++ b/dev-docs/bidders/epom.md @@ -10,7 +10,7 @@ coppa_supported: true schain_supported: false media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/ergadx.md b/dev-docs/bidders/ergadx.md new file mode 100644 index 0000000000..2aedf405a1 --- /dev/null +++ b/dev-docs/bidders/ergadx.md @@ -0,0 +1,27 @@ +--- +layout: bidder +title: eRGADX +description: eRGADX Bidder Adaptor +pbjs: true +pbs: true +biddercode: ergadx +aliasCode : adkernel +media_types: banner, native, video +gdpr_supported: true +usp_supported: true +coppa_supported: true +pbs_app_supported: true +schain_supported: true +--- + +### Note: + +The eRGADX bidding adapter requires setup and approval before implementation. Please reach out to for more details. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | RTB host | `'cpm.ergadx.com'` | `string` | +| `zoneId` | required | Zone Id | 30164 | `integer` | diff --git a/dev-docs/bidders/etarget.md b/dev-docs/bidders/etarget.md index 251697a776..41c3198529 100644 --- a/dev-docs/bidders/etarget.md +++ b/dev-docs/bidders/etarget.md @@ -6,6 +6,7 @@ pbjs: true biddercode: etarget media_types: banner, video gdpr_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/fluct.md b/dev-docs/bidders/fluct.md index 9360ed72d2..5403970b0d 100644 --- a/dev-docs/bidders/fluct.md +++ b/dev-docs/bidders/fluct.md @@ -9,7 +9,6 @@ coppa_supported: false usp_supported: false schain_supported: true pbjs: true -pbjs_version_notes: not in 5.x --- ### Bid Params diff --git a/dev-docs/bidders/getintent.md b/dev-docs/bidders/getintent.md index 30fffcabfd..671ec6fe1f 100644 --- a/dev-docs/bidders/getintent.md +++ b/dev-docs/bidders/getintent.md @@ -5,7 +5,7 @@ description: Prebid GetIntent Bidder Adaptor pbjs: true biddercode: getintent media_types: video, banner -getFloor: true +floors_supported: true --- diff --git a/dev-docs/bidders/gothamads.md b/dev-docs/bidders/gothamads.md index e3fabc29e7..d41aa86cbd 100644 --- a/dev-docs/bidders/gothamads.md +++ b/dev-docs/bidders/gothamads.md @@ -10,7 +10,7 @@ ccpa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true --- diff --git a/dev-docs/bidders/grid.md b/dev-docs/bidders/grid.md index c6a619cc28..8ca173f0fd 100644 --- a/dev-docs/bidders/grid.md +++ b/dev-docs/bidders/grid.md @@ -9,10 +9,11 @@ media_types: banner, video gdpr_supported: true usp_supported: true schain_supported: true -getFloor: true +floors_supported: true userIds: all tcf2_supported: true coppa_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/gridNM.md b/dev-docs/bidders/gridNM.md index 3524b8df87..fc92e91a17 100644 --- a/dev-docs/bidders/gridNM.md +++ b/dev-docs/bidders/gridNM.md @@ -7,6 +7,7 @@ biddercode: gridNM media_types: video gdpr_supported: true usp_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/gumgum.md b/dev-docs/bidders/gumgum.md index 946e87230c..c655f75fd9 100644 --- a/dev-docs/bidders/gumgum.md +++ b/dev-docs/bidders/gumgum.md @@ -8,10 +8,11 @@ pbs_app_supported: true biddercode: gumgum media_types: banner, video schain_supported: true -getFloor: true +floors_supported: true userIds: unifiedId, identityLink gdpr_supported: true usp_supported: true +fpd_supported: true --- ### Note: @@ -33,6 +34,7 @@ Client side and server side parameters differ slightly. For Server side (Prebid | `zone` | required for all bid requests tracking a single domain or site | Tracking ID | `'ggumtest'` | `string` | | `pubId` | required for all bid requests tracking multiple domains or sites | Publisher ID | `123` | `integer` | | `irisid` | optional | Iris.tv ID | `'iris_6f9285823a4'` | `string` | +| `slot` | optional | Placement ID | `40` | `number` | ### Client Side Bid Params diff --git a/dev-docs/bidders/huaweiads.md b/dev-docs/bidders/huaweiads.md new file mode 100644 index 0000000000..1211990c2b --- /dev/null +++ b/dev-docs/bidders/huaweiads.md @@ -0,0 +1,34 @@ +--- +layout: bidder +title: HuaweiAds +description: Prebid HuaweiAds Bidder Adapter +biddercode: huaweiads +gvl_id: 856 +media_types: banner, video, native +safeframes_ok: false +deals_supported: true +pbjs: false +pbs: true +pbs_app_supported: true +prebid_member: false +--- + +### Note: + +The Example Bidding adapter requires setup before beginning. Please contact us at hwads@huawei.com. +1. The following parameters need to be registered on the HuaweiAds platform, and at the same time, the permission to access the server interface needs to be opened on the HuaweiAds platform. +2. You can find ( publisherid, signkey, keyid ) on the platform after registration. +3. You need to create your advertising creative on the platform and get the corresponding ( slotid, adtype ). +4. We need OAID, GAID, IMEI (One must not be empty, you can collect OAID first, or use GAID) in our request, so when using prebidmobile, please add something like "TargetingParams.addUserData("oaid", "oaid-test") TargetingParams.addUserData("gaid", "gaid-test") TargetingParams.addUserData("imei", "imei-test")". +5. You can also send the clientTime to the HuaweiAds Adx server, like "TargetingParams.addUserData("clientTime", "2018-11-02 16:34:07.981+0800")". if not, it will use the prebid server time and zone. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|--------------|-----------|----------| +| `publisherid` | required | Publisher Id | `'2001000399'` | `string` | +| `signkey` | required | Sign Key | `'5d********82c38594f8b2bdfd9f********a398dca734932898e3********8d'` | `string` | +| `keyid` | required | Key Id | `'2'` | `string` | +| `slotid` | required | Slot Id | `'u42ohmaufh'` | `string` | +| `adtype` | required | Ad Type | `'native'` | `string` | diff --git a/dev-docs/bidders/impactify.md b/dev-docs/bidders/impactify.md index 4cb59868c8..20c55f326b 100644 --- a/dev-docs/bidders/impactify.md +++ b/dev-docs/bidders/impactify.md @@ -3,7 +3,7 @@ layout: bidder title: Impactify description: Prebid Impactify Bidder Adapter pbjs: true -pbs: false +pbs: true biddercode: impactify gdpr_supported: true tcf2_supported: true @@ -11,6 +11,7 @@ usp_supported: true schain_supported: true coppa_supported: true media_types: video +userIds: criteo, id5Id, pubCommonId, unifiedId, uid2, netId gvl_id: 606 --- diff --git a/dev-docs/bidders/inmar.md b/dev-docs/bidders/inmar.md index 23f028e296..f00dc47243 100644 --- a/dev-docs/bidders/inmar.md +++ b/dev-docs/bidders/inmar.md @@ -8,7 +8,8 @@ usp_supported: true userIds: identityLink, liveIntentId, unifiedId, pubCommonId, pubProvidedId, sharedId media_types: banner, video safeframes_ok: false -bidder_supports_deals: true +deals_supported: true +fpd_supported: true pbjs: true --- ### Note: diff --git a/dev-docs/bidders/inmobi.md b/dev-docs/bidders/inmobi.md index aa87c6cb33..bafea45f6d 100644 --- a/dev-docs/bidders/inmobi.md +++ b/dev-docs/bidders/inmobi.md @@ -7,7 +7,8 @@ gdpr_supported: true usp_supported: false gvl_id: 333 coppa_supported: true -media_types: banner, video +schain_supported: true +media_types: banner, video, native pbs: true pbs_app_supported: true --- @@ -17,6 +18,12 @@ pbs_app_supported: true The InMobi Prebid adapter requires a setup to create placement IDs. Please contact your InMobi partner manager for setup assistance. For queries, write to us at prebid-support@inmobi.com +### User Sync Disclosure: + +InMobi has partnered with a third party, ID5, to use their ID as our primary user identifier for mobile web supply. We will also rely on ID5 IDs to handle compliance flows related to Data Subject Right requests in our systems. Hence, we require the publisher to use ID5’s sync URL for user syncing and passing the corresponding ID5 ID to InMobi in the bid request. For this purpose, we provide ID5’s sync URL in our Prebid adapter for User ID sync. Note that, InMobi has a direct contract with ID5 for consuming ID5 ID and the user sync via Prebid does not require the publisher to get into a contractual relationship with ID5. + +To opt out of InMobi ads on mobile web inventory or for any other requests, the user needs to visit the Opt-out page on InMobi website (https://www.inmobi.com/page/opt-out/). For opting out of ID5 ID entirely, the user needs to visit ID5’s opt out page: https://id5.io/platform-privacy-policy/. + ### Bid Params {: .table .table-bordered .table-striped } diff --git a/dev-docs/bidders/insticator.md b/dev-docs/bidders/insticator.md new file mode 100644 index 0000000000..794279bd07 --- /dev/null +++ b/dev-docs/bidders/insticator.md @@ -0,0 +1,17 @@ +--- +layout: bidder +title: Insticator +description: Prebid Insticator Bidder Adapter +biddercode: insticator +gdpr_supported: true +media_types: banner +pbjs: true +gvl_id: 910 +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------|----------|-----------------|----------------------|-----------| +| `adUnitId` | Required | The ad unit ID provided by Insticator | `'test'` | `string` | diff --git a/dev-docs/bidders/integr8.md b/dev-docs/bidders/integr8.md new file mode 100644 index 0000000000..27662ef942 --- /dev/null +++ b/dev-docs/bidders/integr8.md @@ -0,0 +1,17 @@ +--- +layout: bidder +title: Integr8 +description: Prebid Integr8 Bidder Adapter +pbjs: true +biddercode: integr8 +media_types: banner, video +--- + + +### Bid Params + +| Name | Scope |Description | Example | Type | +|---------------|----------|------------------------------------------------------------------------|--------------------|-----------| +| `propertyId` | required |Property id | `"12345"` | `string` | +| `placementId` | required |Placement id | `"54321"` | `string` | +| `data` | optional |Catalog data (contents) and/or inventory data (custom key/value pairs) | `{catalogs: [{ catalogId: "699229", items: ["193", "4", "1"] }], inventory: { category: ["tech"], query: ["iphone 12"] }}` | `object` | diff --git a/dev-docs/bidders/interactiveOffers.md b/dev-docs/bidders/interactiveOffers.md index f95591a67f..daadab5e9d 100644 --- a/dev-docs/bidders/interactiveOffers.md +++ b/dev-docs/bidders/interactiveOffers.md @@ -10,14 +10,14 @@ media_types: banner --- ### Note: -Module that connects to interactiveOffers demand sources. Param pubid is required. +Module that connects to interactiveOffers demand sources. Param partnerId is required. ### Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|-------------|---------|----------| -| `pubid` | required | Publisher id | 35 | `integer` | +| `partnerId` | required | Partner id | 'abc123' | `string` | Example: @@ -25,7 +25,7 @@ Example: { bidder: "interactiveOffers", params: { - pubid: 35 + partnerId: "abc123" } } ``` diff --git a/dev-docs/bidders/iqm.md b/dev-docs/bidders/iqm.md index f4159f0ec0..a3251a5a72 100644 --- a/dev-docs/bidders/iqm.md +++ b/dev-docs/bidders/iqm.md @@ -80,4 +80,4 @@ var adUnits = [{ }] }; -``` \ No newline at end of file +``` diff --git a/dev-docs/bidders/iqzone.md b/dev-docs/bidders/iqzone.md new file mode 100644 index 0000000000..099cde3ba5 --- /dev/null +++ b/dev-docs/bidders/iqzone.md @@ -0,0 +1,32 @@ +--- +layout: bidder +title: IQzone +description: Prebid IQzone Bidder Adapter +biddercode: iqzone +usp_supported: true +gdpr_supported: true +schain_supported: true +media_types: banner, video, native +pbjs: true +pbs: true +pbs_app_supported: true +--- + +### Prebid.js Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-----------------------|-----------|-----------| +| `placementId` | required | Placement Id | `'0'` | `'string'` | + +### Prebid server Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-----------------------|-----------|-----------| +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +### Note + +For the prebid server, you only need to use one parameter, placementId or endpointId diff --git a/dev-docs/bidders/ix.md b/dev-docs/bidders/ix.md index 8dd0d38e33..c19447d1ee 100644 --- a/dev-docs/bidders/ix.md +++ b/dev-docs/bidders/ix.md @@ -10,9 +10,10 @@ pbs_app_supported: true schain_supported: true coppa_supported: true gdpr_supported: true -getFloor: true +floors_supported: true usp_supported: true media_types: banner, video +fpd_supported: true gvl_id: 10 prebid_member: yes --- @@ -27,37 +28,16 @@ Maintainer: prebid.support@indexexchange.com ## Description -Publishers may access Index Exchange's (IX) network of demand -sources through our Prebid.js and Prebid Server adapters. Both of these modules are GDPR and CCPA compliant. +Publishers may access Index Exchange's (IX) network of demand sources through our Prebid.js and Prebid Server adapters. Both of these modules are GDPR and CCPA compliant. ### IX Prebid.js Adapter -Our Prebid.js adapter is compatible with both the older ad unit format where the `sizes` and -`mediaType` properties are placed at the top-level of the ad unit, and the newer -format where this information is encapsulated within the `mediaTypes` object. We -recommend that you use the newer format when possible as it will be better able -to accommodate new feature additions. +This module connects publishers to Index Exchange's (IX) network of demand sources through Prebid.js. This module is GDPR and CCPA compliant. -If a mix of properties from both formats is present within an ad unit, the -newer format's properties will take precedence. +It is compatible with the new Prebid.js 5.0 ad unit format where banner and video properties, including the size parameter, are stored in the `adUnits[].mediaTypes` object. IX still supports both size as an optional parameter and the Missing Sizes feature, but we recommend upgrading to the Prebid.js 5.0 format. -Here are examples of both formats. +For more information about how the `adUnits[].mediaTypes` object is formatted in Prebid.js 5.0, refer to the following example. -##### Older Format -```javascript -var adUnits = [{ - // ... - - sizes: [ - [300, 250], - [300, 600] - ] - - // ... -}]; -``` - -##### Newer Format ```javascript var adUnits = [{ // ... @@ -70,60 +50,63 @@ var adUnits = [{ }, video: { context: 'instream', - playerSize: [ - [1280, 720] - ] + playerSize: [300, 250] } }, // ... }]; ``` - ### Supported Media Types (Prebid.js) {: .table .table-bordered .table-striped } -| Type | Support | -| ------ | ------- | -| `Banner` | Fully supported for all IX approved sizes | -| `Video` | Fully supported for all IX approved sizes | -| `Native` | Not supported | +| Type | Support | +|---|---| +| `banner` | Fully supported for all IX approved sizes | +| `video` | Fully supported for all IX approved sizes | +| `native` | Not supported | ### Supported Media Types (Prebid Server) {: .table .table-bordered .table-striped } | Type | Support | -| ------ | ------- | -| `Banner` | Fully supported | -| `Video` | Fully supported, including ad pods for OTT | -| `Native` | Not supported | +|------|-------| +| `banner` | Fully supported | +| `video` | Fully supported, including ad pods for OTT | +| `native` | Not supported | + +# Ad Unit or Bidder Parameters + +These params can be specified in the ad unit level, which will be the preferred way going forward with PBJS 5.0 + +Each of the IX-specific parameters provided under the object are detailed here. -## Bid Parameters +The following parameters are specified in the ad unit `adUnits[].mediaTypes`. This includes each of the IX-specific parameters provided under `adUnits[].bids[].params`. -Each of the IX-specific parameters provided under the `adUnits[].bids[].params` -object are detailed here. +In Prebid.js versions 5.0 and above, mediaType and sizes are not required to be defined at the ad unit level. ### Banner {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -| ---- | ----- | ----------- | ------- | ---- | -| `siteId` | Required | An IX-specific identifier that is associated with a specific size on this ad unit. This is similar to a placement ID or an ad unit ID that some other modules have. | `'3723'` | `string` | -| `size` | Required for client-side serving | The single size associated with the site ID. It should be one of the sizes listed in the ad unit under `adUnits[].sizes` or `adUnits[].mediaTypes.banner.sizes`. Note that the 'ix' Prebid Server bid adapter ignores this parameter. | `[300, 250]` | `Array` | -| `id` | Optional | An alphanumerical value used to identify the `slot_id` in reporting | `id: 'billboardHomepage'`, `id: 'billboardArticle'` | `string` | +| Key | Scope | Type | Description | +|---|---|---|---| +| `siteId` | Required | String | An IX-specific identifier that is associated with this ad unit. It will be associated to the single size, if the size provided. This is similar to a placement ID or an ad unit ID that some other modules have. For example, `'3723'`, `'6482'`, `'3639'`| +| `sizes` | Optional | Number[Number[]] | The size/sizes associated with the site ID, as listed in the ad unit under `adUnits[].mediaTypes.banner.sizes`. For example, `[300, 250], [300, 600], [728, 90]`| ### Video {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -| ---- | ----- | ----------- | ------- | ---- | -| `siteId` | Required | An IX-specific identifier that is associated with a specific size on this ad unit. This is similar to a placement ID or an ad unit ID that some other modules have. | `'3723'` | `string` | -| `size` | Required | The single size associated with the site ID. It should be one of the sizes listed in the ad unit under `adUnits[].sizes` or `adUnits[].mediaTypes.video.playerSize`. | `[300, 600]` | `Array` | -| `video` | Required | The video object will serve as the properties of the video ad. You can create any field under the video object that is mentioned in the `OpenRTB Spec v2.5`. Some fields like `mimes`, `protocols`, `minduration`, `maxduration` are required. Properties not defined at this level, will be pulled from the Adunit level. | `video: { startdelay: 0 }` | `object` | -| `video.mimes` | Required | Array list of content MIME types supported. | `['video/mp4', 'video/x-flv']` | `Array` | -| `video.minduration` | Required | Minimum video ad duration in seconds. | `0` | `integer` | -| `video.maxduration` | Required | Maximum video ad duration in seconds. | `300` | `integer` | -| `video.protocol` / `video.protocols` | Required | Either a single protocol provided as an integer, or protocols provided as a list of integers. `2` - VAST 2.0, `3` - VAST 3.0, `5` - VAST 2.0 Wrapper, `6` - VAST 3.0 Wrapper | `[2,3,5,6]` | `integer` / `Array` | -| `id` | Optional | An alphanumerical value used to identify the `slot_id` in reporting | `id: 'inStreamCTP'`, `id: 'inStreamAutoPlay'` | `string` | +| Key | Scope | Type | Description | +|---|---|---|---| +| `siteId` | Required | String | An IX-specific identifier that is associated with this ad unit. It will be associated to the single size, if the size is provided. This is similar to a placement ID or an ad unit ID that some other modules have. For example, `'3723'`, `'6482'`, `'3639'`| +| `size` | Optional | Number[] | The single size that is associated with the site ID, as listed in the ad unit under `adUnits[].sizes` or `adUnits[].mediaTypes.video.playerSize`. For example, [300, 250], [300, 600].

    This parameter is optional in Prebid.js versions 5.0 and above. Versions prior to 5.0 will still require a size parameter.| +| `video` | Optional | Hash | The video object will serve as the properties of the video ad. You can create any field under the video object that is mentioned in the `OpenRTB Spec v2.5`. Some fields like `mimes, protocols, minduration, maxduration` are required. Properties not defined at this level, will be pulled from the Adunit level.| +| `video.w` | Required | Integer | The video player size width in pixels that will be passed to demand partners.| +| `video.h` | Required | Integer | The video player size height in pixels that will be passed to demand partners.| +| `video.playerSize` | Optional* | Integer | The video player size that will be passed to demand partners. * In the absence of `video.w` and `video.h`, this field is required.| +| `video.mimes` | Required | String[] | Array list of content MIME types supported. Popular MIME types include, but are not limited to, `"video/x-ms- wmv"` for Windows Media and `"video/x-flv"` for Flash Video.| +| `video.minduration` | Required | Integer | Minimum video ad duration in seconds.| +| `video.maxduration` | Required | Integer | Maximum video ad duration in seconds.| +| `video.protocol` / `video.protocols` | Required | Integer / Integer[] | Either a single protocol provided as an integer, or protocols provided as a list of integers. `2` - VAST 2.0, `3` - VAST 3.0, `5` - VAST 2.0 Wrapper, `6` - VAST 3.0 Wrapper| ## Setup Guide @@ -152,9 +135,7 @@ var adUnits = [{ mediaTypes: { video: { context: 'instream', - playerSize: [ - [1280, 720] - ] + playerSize: [1280, 720] } }, bids: [] @@ -170,13 +151,12 @@ bid objects under `adUnits[].bids`: { bidder: 'ix', params: { - siteId: '123456', - size: [300, 250] + siteId: '123456' } } ``` -Set `params.siteId` and `params.size` in each bid object to the values provided +Set `params.siteId` in the bid object to the values provided by your IX representative. **Examples** @@ -196,14 +176,12 @@ var adUnits = [{ bids: [{ bidder: 'ix', params: { - siteId: '123456', - size: [300, 250] + siteId: '123456' } }, { bidder: 'ix', params: { - siteId: '123456', - size: [300, 600] + siteId: '123456' } }] }]; @@ -211,28 +189,33 @@ var adUnits = [{ **Video (Instream):** ```javascript var adUnits = [{ - code: 'video-request-a', + code: 'video-div-a', mediaTypes: { video: { + // Preferred location for openrtb v2.5 compatible video obj context: 'instream', - playerSize: [ - [1280, 720] - ] + playerSize: [300, 250], + mimes: [ + 'video/mp4', + 'video/webm' + ], + minduration: 0, + maxduration: 60, + protocols: [6] } }, bids: [{ bidder: 'ix', params: { - siteId: '123456', - size: [1280, 720], + siteId: '12345' + } + }, { + bidder: 'ix', + params: { + siteId: '12345', video: { - mimes: [ - 'video/mp4', - 'video/webm' - ], - minduration: 0, - maxduration: 60, - protocols: [6] + // openrtb v2.5 compatible video obj + // If required, use this to override mediaTypes.video.XX properties } } }] @@ -250,7 +233,14 @@ var adUnits = [{ mediaTypes: { video: { context: 'outstream', - playerSize: [[640, 360]] + playerSize: [300, 250], + mimes: [ + 'video/mp4', + 'video/webm' + ], + minduration: 0, + maxduration: 60, + protocols: [6] } }, renderer: { @@ -262,16 +252,9 @@ var adUnits = [{ bids: [{ bidder: 'ix', params: { - siteId: '123456', - size: [640, 360], + siteId: '12345', video: { - mimes: [ - 'video/mp4', - 'video/webm' - ], - minduration: 0, - maxduration: 60, - protocols: [6] + // If required, use this to override mediaTypes.video.XX properties } } }] @@ -312,21 +295,21 @@ pbjs.setConfig({ By default, the IX bidding adapter bids on all banner sizes available in the ad unit when configured to at least one banner size. If you want the IX bidding adapter to only bid on the banner size it’s configured to, switch off this feature using `detectMissingSizes`. ``` pbjs.setConfig({ - ix: { - detectMissingSizes: false - } - }); + ix: { + detectMissingSizes: false + } +}); ``` OR ``` pbjs.setBidderConfig({ - bidders: ["ix"], - config: { - ix: { - detectMissingSizes: false - } - } - }); + bidders: ["ix"], + config: { + ix: { + detectMissingSizes: false + } + } +}); ``` ### 2. Include `ixBidAdapter` in your build process @@ -357,6 +340,35 @@ gulp build --modules=bidderModules.json ## Setting First Party Data (FPD) +As a part of 4.30, IX will start to pick up FPD in the global FPD module, as well as continue to pick up IX bidder-specific FPD. Previous versions of IX Bid Adapter will only support the IX bidder-specific FPD. + +### Global FPD + +As of Prebid.js 4.30, use the more generic `ortb2` interface, which can be used for more than just First Party Data. + +The First Party Data feature allows publishers to specify key/value data in one place where each compatible bid adapter can read it. + +To supply global data, use the [`setConfig()`](/dev-docs/publisher-api-reference/setConfig.html) function as illustrated below: + +``` +pbjs.setConfig({ + ortb2: { + site: { + ... + }, + user: { + ... + } + } +}); +``` + +Use the [`setBidderConfig()`](/dev-docs/publisher-api-reference/setBidderConfig.html) function to supply bidder-specific data. + +For more information about the standard or more detailed examples, refer to [First Party Data Feature](/features/firstPartyData.html). + +### IX bidder-specific FPD + FPD allows you to specify key-value pairs that are passed as part of the query string to IX for use in Private Marketplace Deals which rely on query string targeting for activation. For example, if a user is viewing a @@ -384,6 +396,9 @@ pbjs.setConfig({ The values can be updated at any time by calling `pbjs.setConfig` again. The changes will be reflected in any proceeding bid requests. +{: .alert.alert-warning :} +Continue to use IX bidder-specific First Party Data for IX deals. Global First Party Data is not yet supported in IX deals. Consult your IX representative with any questions. + ## Setting a Server Side Timeout Setting a server-side timeout allows you to control the max length of time taken to connect to the server. The default value when unspecified is 50ms. @@ -454,18 +469,11 @@ towards total impressions on IX's side. ## FAQs -### Why do I have to input size in `adUnits[].bids[].params` for IX when the size is already in the ad unit? - -There are two important reasons why we require it: - -1. An IX site ID maps to a single size, whereas an ad unit can have multiple -sizes. To ensure that the right site ID is mapped to the correct size in the ad -unit we require the size to be explicitly stated. +#### Why do I have to input size in `adUnits[].bids[].params` for IX when the size is already in the ad unit? -2. An ad unit may have sizes that IX does not support. By explicitly stating the -size, you can choose not to have IX bid on certain sizes that are invalid. +If you are using Prebid.js version 5.0 and above, the `size` parameter is not a required field. Only the `siteID` is required, and it is stored with the sizes in the ad unit. -### How can I view the bid request sent to IX by Prebid.js? +#### How can I view the bid request sent to IX by Prebid.js? In your browser of choice, create a new tab and open the developer tools. In developer tools, select the network tab. Then, navigate to a page where IX is diff --git a/dev-docs/bidders/jixie.md b/dev-docs/bidders/jixie.md index b9241665de..e2945d6bc5 100644 --- a/dev-docs/bidders/jixie.md +++ b/dev-docs/bidders/jixie.md @@ -5,7 +5,7 @@ description: Prebid Jixie Bidder Adaptor pbjs: true pbs: true biddercode: jixie -bidder_supports_deals: false +deals_supported: false media_types: banner, video gdpr_supported: false --- diff --git a/dev-docs/bidders/justpremium.md b/dev-docs/bidders/justpremium.md index 20732ff502..f5eebddc3c 100644 --- a/dev-docs/bidders/justpremium.md +++ b/dev-docs/bidders/justpremium.md @@ -6,6 +6,7 @@ pbjs: true biddercode: justpremium gdpr_supported: true usp_supported: true +schain_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId --- diff --git a/dev-docs/bidders/kargo.md b/dev-docs/bidders/kargo.md index 926a62f1a1..562d797b4d 100644 --- a/dev-docs/bidders/kargo.md +++ b/dev-docs/bidders/kargo.md @@ -4,6 +4,7 @@ title: Kargo description: Prebid Kargo Bidder Adaptor pbjs: true biddercode: kargo +media_types: banner, video gdpr_supported: true userIds: unifiedId usp_supported: true diff --git a/dev-docs/bidders/kobler.md b/dev-docs/bidders/kobler.md index a93b1032b3..3a2951ce6d 100644 --- a/dev-docs/bidders/kobler.md +++ b/dev-docs/bidders/kobler.md @@ -5,8 +5,8 @@ description: Kobler Bidder Adapter biddercode: kobler pbjs: true media_types: banner -getFloor: true -bidder_supports_deals: true +floors_supported: true +deals_supported: true --- ### Note: diff --git a/dev-docs/bidders/krushmedia.md b/dev-docs/bidders/krushmedia.md index a6b4ce8012..90b4734ed9 100644 --- a/dev-docs/bidders/krushmedia.md +++ b/dev-docs/bidders/krushmedia.md @@ -9,7 +9,6 @@ media_types: banner, video, native gdpr: true pbjs: true pbs: true -pbjs_version_notes: not in 5.x --- ### Bid Params diff --git a/dev-docs/bidders/logan.md b/dev-docs/bidders/logan.md index d50f36fabe..01fb0f3af2 100644 --- a/dev-docs/bidders/logan.md +++ b/dev-docs/bidders/logan.md @@ -8,7 +8,6 @@ schain_supported: true media_types: banner, video, native gdpr: true pbjs: true -pbjs_version_notes: not in 5.x --- ### Bid Params diff --git a/dev-docs/bidders/logicad.md b/dev-docs/bidders/logicad.md index 57b554c012..f0c28c3825 100644 --- a/dev-docs/bidders/logicad.md +++ b/dev-docs/bidders/logicad.md @@ -6,7 +6,7 @@ pbjs: true pbs: true pbs_app_supported: true biddercode: logicad -bidder_supports_deals: false +deals_supported: false media_types: banner, native userIds: all gdpr_supported: false diff --git a/dev-docs/bidders/marsmedia.md b/dev-docs/bidders/marsmedia.md index a38b704088..8281cb732f 100644 --- a/dev-docs/bidders/marsmedia.md +++ b/dev-docs/bidders/marsmedia.md @@ -7,7 +7,7 @@ pbs: true biddercode: marsmedia media_types: video, banner gdpr_supported: true -getFloor: true +floors_supported: true schain_supported: true usp_supported: true coppa_supported: true diff --git a/dev-docs/bidders/mathildeads.md b/dev-docs/bidders/mathildeads.md new file mode 100644 index 0000000000..c7dbe99b03 --- /dev/null +++ b/dev-docs/bidders/mathildeads.md @@ -0,0 +1,20 @@ +--- +layout: bidder +title: MathildeAds +description: Prebid MathildeAds Bidder Adapter +biddercode: mathildeads +usp_supported: true +schain_supported: true +media_types: banner, video, native +gdpr_supported: true +pbjs: true +pbs: false +pbs_app_supported: false +--- + +### Prebid.JS Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------------|----------|----------------------------------------------------------|------------|-----------| +| `placementId` | required | Placement Id will be generated on MathildeAds Platform. | `'1234'` | `string` | diff --git a/dev-docs/bidders/mediakeys.md b/dev-docs/bidders/mediakeys.md new file mode 100644 index 0000000000..8c9a8d5c81 --- /dev/null +++ b/dev-docs/bidders/mediakeys.md @@ -0,0 +1,24 @@ +--- +layout: bidder +title: Mediakeys +description: Mediakeys Prebid Bidder Adapter +biddercode: mediakeys +media_types: banner +gvl_id: 498 +pbjs: true +floors_supported: true +gdpr_supported: true +usp_supported: true +coppa_supported: true +schain_supported: true +safeframes_ok: true +userIds: all +fpd_supported: true +--- +### Note: + +The Mediakeys Bidding adapter requires setup before beginning and will repsond with bids for whitelisted domains only. Please contact us at prebidjs@mediakeys.com. + +### Bid Params + +No bid params are required. See Note section. diff --git a/dev-docs/bidders/medianet.md b/dev-docs/bidders/medianet.md index 73de20eb45..594e349bc7 100644 --- a/dev-docs/bidders/medianet.md +++ b/dev-docs/bidders/medianet.md @@ -11,7 +11,8 @@ prebid_member: true pbjs: true gvl_id: 142 schain_supported: true -getFloor: true +floors_supported: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/mgid.md b/dev-docs/bidders/mgid.md index 8365380c02..f363ab5d96 100644 --- a/dev-docs/bidders/mgid.md +++ b/dev-docs/bidders/mgid.md @@ -8,7 +8,6 @@ biddercode: mgid media_types: banner,native gdpr_supported: true gvl_id: 358 -pbjs_version_notes: not in 5.x --- ### Table of Contents diff --git a/dev-docs/bidders/mytarget.md b/dev-docs/bidders/mytarget.md index cf96c21dff..d53cbca13a 100644 --- a/dev-docs/bidders/mytarget.md +++ b/dev-docs/bidders/mytarget.md @@ -4,7 +4,6 @@ title: myTarget description: Prebid myTarget Bidder Adapter pbjs: true biddercode: mytarget -pbjs_version_notes: not in 5.x --- diff --git a/dev-docs/bidders/nativo.md b/dev-docs/bidders/nativo.md index 67d7921d18..9c72c55f07 100644 --- a/dev-docs/bidders/nativo.md +++ b/dev-docs/bidders/nativo.md @@ -18,5 +18,5 @@ The Nativo Bidder adapter requires setup before beginning. Please contact us at {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|---------------------------------------------------------------------------------|--------------|-----------| -| `placementId` | required | Publication placement ID value from the Nativo Platform | `13144370` | `integer` | +| `placementId` | optional | Publication placement ID value from the Nativo Platform | `13144370` | `integer` | | `url` | optional | Publication url value associated with placement ID value in the Nativo Platform | `https://test-sites.internal.nativo.net/testing/prebid_adpater.html` | `string` | diff --git a/dev-docs/bidders/nextMillennium.md b/dev-docs/bidders/nextMillennium.md index 926bcd6eeb..4d781616af 100644 --- a/dev-docs/bidders/nextMillennium.md +++ b/dev-docs/bidders/nextMillennium.md @@ -5,7 +5,6 @@ description: NextMillennium bid adapter pbjs: true biddercode: nextMillennium media_types: banner -pbjs_version_notes: not in 5.x --- ### bid params diff --git a/dev-docs/bidders/nextroll.md b/dev-docs/bidders/nextroll.md index accca4ab35..c99e92a4b3 100644 --- a/dev-docs/bidders/nextroll.md +++ b/dev-docs/bidders/nextroll.md @@ -8,7 +8,6 @@ media_types: display, native gdpr_supported: false usp_supported: true prebid_member: true -pbjs_version_notes: not in 5.x --- ### Bid Params @@ -19,7 +18,7 @@ pbjs_version_notes: not in 5.x | `sellerId` | required | The seller ID from NextRoll.Please reach out your NextRoll representative for more details. | `'541459'` | `string` | | `publisherId` | optional | The publisher ID from NextRoll.Please reach out your NextRoll representative for more details. | `'956812'` | `string` | | `zoneId` | optional | Descriptive or unique identifier for the ad position | `'main-banner-505/600x160'` | `string` | -| `bidfloor` | optional | Per ad-unit bid floor | `2.3` | `number` | +| `bidfloor` | optional | Per ad-unit bid floor, used if the floor module is not available | `2.3` | `number` | #### Example of Banner Ad-unit ``` @@ -29,6 +28,17 @@ var adUnits = [ mediaTypes: { banner: {sizes: [[300, 250], [160, 600]]} }, + // If floors module is enabled + floors: { + currency: "USD", + schema: { + delimiter: "|", + fields: ["mediaType", "size"] + }, + values: { + "*|*": 2.0 + } + }, bids: [{ bidder: 'nextroll', params: { diff --git a/dev-docs/bidders/nobid.md b/dev-docs/bidders/nobid.md index 7f8cfd41dd..02d54e53c0 100644 --- a/dev-docs/bidders/nobid.md +++ b/dev-docs/bidders/nobid.md @@ -13,6 +13,7 @@ schain_supported: true coppa_supported: true userId: criteo, unifiedId, id5Id safeframes_ok: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/ogury.md b/dev-docs/bidders/ogury.md index 213001ce90..a1ae8c5f42 100644 --- a/dev-docs/bidders/ogury.md +++ b/dev-docs/bidders/ogury.md @@ -8,10 +8,11 @@ gvl_id: 31 usp_supported: false coppa_supported: false schain_supported: false +floors_supported: true dchain_supported: false media_types: banner safeframes_ok: false -bidder_supports_deals: false +deals_supported: false pbjs: true pbs: false prebid_member: false diff --git a/dev-docs/bidders/oneVideo.md b/dev-docs/bidders/oneVideo.md index d77c059d67..4b50d23c55 100644 --- a/dev-docs/bidders/oneVideo.md +++ b/dev-docs/bidders/oneVideo.md @@ -9,6 +9,20 @@ gdpr_supported: true usp_supported: true --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `oneVideo` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. + +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `oneVideo` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP + ### Note: One Video adapter only supports video ads. diff --git a/dev-docs/bidders/onedisplay.md b/dev-docs/bidders/onedisplay.md index d7d4002b83..e0749df141 100644 --- a/dev-docs/bidders/onedisplay.md +++ b/dev-docs/bidders/onedisplay.md @@ -6,7 +6,19 @@ pbjs: true biddercode: onedisplay aliasCode : aol --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `onedisplay` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `onedisplay` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP ### Bid Params diff --git a/dev-docs/bidders/onemobile.md b/dev-docs/bidders/onemobile.md index c830acf841..aabc65de76 100644 --- a/dev-docs/bidders/onemobile.md +++ b/dev-docs/bidders/onemobile.md @@ -7,7 +7,19 @@ biddercode: onemobile aliasCode : aol --- +### IMPORTANT NOTICE! +**TL;DR** +1. The `onemobile` adapter is scheduled to be depreciated. +2. Our New `yahoossp` is available for early adoption. +3. Please contact your Account Manager/Executive for migration details. +Dear Publishers & Partners, +As part of our platform consolidation process to simplify your integrations moving forward +We invite you to switch from the `onemobile` Adapter to our NEW `yahoossp` bid adapter for both Display & Video inventory. +FYI - The oneVideo adapter is scheduled for depreciation in the upcoming months. + +Thanks in advance, +Yahoo SSP ### Bid Params diff --git a/dev-docs/bidders/openweb.md b/dev-docs/bidders/openweb.md index 4861b38bb0..162df57a03 100644 --- a/dev-docs/bidders/openweb.md +++ b/dev-docs/bidders/openweb.md @@ -3,7 +3,7 @@ layout: bidder title: OpenWeb description: Prebid OpenWeb Bidder Adapter biddercode: openweb -media_types: video,banner,adpod +media_types: banner gdpr_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId schain_supported: true @@ -25,27 +25,11 @@ gvl_id: 280 ### Description OpenWeb.com official prebid adapter. Available in both client and server side versions. -OpenWeb header bidding adapter provides solution for accessing both Video and Display demand. +OpenWeb header bidding adapter provides solution for accessing banner demand. ### Test Parameters ``` var adUnits = [ - // Video instream adUnit - { - code: 'test-div', - mediaTypes: { - video: { - context: 'instream', - playerSize: [640, 480] - } - }, - bids: [{ - bidder: 'openweb', - params: { - aid: 650344 - } - }] - }, // Banner adUnit { mediaTypes: { diff --git a/dev-docs/bidders/openwebvideo.md b/dev-docs/bidders/openwebvideo.md new file mode 100644 index 0000000000..bc6a663c50 --- /dev/null +++ b/dev-docs/bidders/openwebvideo.md @@ -0,0 +1,45 @@ +--- +layout: bidder +title: OpenWeb Video +description: Prebid OpenWeb Video Bidder Adapter +pbjs: true +biddercode: openwebvideo +aliasCode: aniview +media_types: banner, video +gdpr_supported: true +usp_supported: true +schain_supported: true +safeframes_ok: true +--- + +### Note: +For more information about [OpenWeb](https://www.openweb.com/). + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------------|----------|------------------|------------------------------|----------| +| `AV_PUBLISHERID` | required | Publisher/Netid | `'55b88d4a181f465b3e8b4567'` | `string` | +| `AV_CHANNELID` | required | Channel id | `'5a5f17a728a06102d14c2718'` | `string` | + +### Test Parameters +``` +videoAdUnit = [ +{ + code: 'video1', + mediaTypes: { + video: { + playerSize: [[640, 480]], + context: 'outstream' + }, + }, + bids: [{ + bidder: 'openwebvideo', + params: { + AV_PUBLISHERID: '55b78633181f4603178b4568', + AV_CHANNELID: '5d19dfca4b6236688c0a2fc4' + } + }] +}]; +``` diff --git a/dev-docs/bidders/openx.md b/dev-docs/bidders/openx.md index e3c6a103b9..3adddca5d9 100644 --- a/dev-docs/bidders/openx.md +++ b/dev-docs/bidders/openx.md @@ -10,9 +10,10 @@ schain_supported: true gdpr_supported: true usp_supported: true coppa_supported: true -getFloor: true -userIds: britepoolId, criteo, fabrickId, haloId, id5Id, identityLink, idxId, intentIqId, liveIntentId, lotamePanoramaId, merkleId, netId, parrableId, pubCommonId, quantcastId, sharedId, tapadId, unifiedId, verizonMediaId, zeotapIdPlus +floors_supported: true +userIds: admixerId, amxId, britepoolId, criteo, dapId, deepintentId, dmdId, fabrickId, flocId, haloId, id5Id, identityLink, idxId, intentIqId, liveIntentId, lotamePanoramaId, merkleId, mwOpenLinkId, netId, nextrollId, novatiq, parrableId, pubCommonId, quantcastId, sharedId, tapadId, uid2, unifiedId, verizonMediaId, zeotapIdPlus prebid_member: true +fpd_supported: true gvl_id: 69 --- diff --git a/dev-docs/bidders/operaads.md b/dev-docs/bidders/operaads.md index b10965607c..49393966e3 100644 --- a/dev-docs/bidders/operaads.md +++ b/dev-docs/bidders/operaads.md @@ -11,7 +11,7 @@ schain_supported: true dchain_supported: false media_types: banner, video, native safeframes_ok: false -bidder_supports_deals: false +deals_supported: false pbjs: true pbs: true prebid_member: false @@ -28,4 +28,4 @@ If you have any questions regarding set up, please reach out to your account man |-------------|----------|------------------------|------------------|----------| | `placementId`| required | Placement Id | `s12345678` | `string` | | `endpointId`| required | Endpoint ID | `ep1234566` | `string` | -| `publisherId`| required | Publisher ID | `pub123456` | `string` | \ No newline at end of file +| `publisherId`| required | Publisher ID | `pub123456` | `string` | diff --git a/dev-docs/bidders/optout.md b/dev-docs/bidders/optout.md index dc558f411a..a4a0ebb62c 100644 --- a/dev-docs/bidders/optout.md +++ b/dev-docs/bidders/optout.md @@ -6,6 +6,7 @@ pbjs: true pbs: true biddercode: optout gdpr_supported: true +fpd_supported: true gvl_id: 227 --- diff --git a/dev-docs/bidders/ozone.md b/dev-docs/bidders/ozone.md index 8b59183e35..d576a29689 100644 --- a/dev-docs/bidders/ozone.md +++ b/dev-docs/bidders/ozone.md @@ -8,7 +8,8 @@ media_types: banner gdpr_supported: true userIds: criteo, id5Id, tdid, identityLink, liveIntentId, parrableId, pubCommonId, lotamePanoramaId, sharedId, fabrickId gvl_id: 524 -bidder_supports_deals: true +deals_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/pangle.md b/dev-docs/bidders/pangle.md index b7168ad589..6d4da22aea 100644 --- a/dev-docs/bidders/pangle.md +++ b/dev-docs/bidders/pangle.md @@ -8,7 +8,7 @@ coppa_supported: true schain_supported: false media_types: banner, video, native safeframes_ok: false -bidder_supports_deals: false +deals_supported: false pbjs: false pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/pixfuture.md b/dev-docs/bidders/pixfuture.md index c718b385dc..58159bb843 100644 --- a/dev-docs/bidders/pixfuture.md +++ b/dev-docs/bidders/pixfuture.md @@ -8,6 +8,7 @@ gdpr_supported: true prebid_member: false coppa_supported: true usp_supported: true +fpd_supported: true userIds: flocId, criteoId, unifiedId, id5Id, sharedId, identityLink, liveIntentId, fabrickId pbs: false pbjs: true diff --git a/dev-docs/bidders/proxistore.md b/dev-docs/bidders/proxistore.md index 172c18cc8b..1b111d30da 100644 --- a/dev-docs/bidders/proxistore.md +++ b/dev-docs/bidders/proxistore.md @@ -5,6 +5,7 @@ description: Prebid Proxistore Bidder Adapter pbjs: true biddercode: proxistore gdpr_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/pubgenius.md b/dev-docs/bidders/pubgenius.md index 23cb4e5fab..3085968a32 100644 --- a/dev-docs/bidders/pubgenius.md +++ b/dev-docs/bidders/pubgenius.md @@ -5,7 +5,7 @@ description: Prebid pubGENIUS Bidder Adaptor pbjs: true biddercode: pubgenius media_types: banner -getFloor: true +floors_supported: true gdpr_supported: true usp_supported: true schain_supported: true diff --git a/dev-docs/bidders/pubmatic.md b/dev-docs/bidders/pubmatic.md index 0265738a9f..f8cbcd0a12 100644 --- a/dev-docs/bidders/pubmatic.md +++ b/dev-docs/bidders/pubmatic.md @@ -8,13 +8,14 @@ gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true userIds: all prebid_member: true safeframes_ok: true pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 76 --- diff --git a/dev-docs/bidders/pulsepoint.md b/dev-docs/bidders/pulsepoint.md index c394d717f7..0c575f9994 100644 --- a/dev-docs/bidders/pulsepoint.md +++ b/dev-docs/bidders/pulsepoint.md @@ -7,7 +7,7 @@ gdpr_supported: true usp_supported: true schain_supported: true media_types: banner, video, native -userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, parrableId, pubCommonId, unifiedId +userIds: britepoolId, criteo, fabrickId, haloId, id5Id, identityLink, liveIntentId, lotamePanoramaId, merkleId, parrableId, pubCommonId, sharedId, unifiedId, verizonMediaId pbjs: true pbs: true gvl_id: 81 diff --git a/dev-docs/bidders/pwbid.md b/dev-docs/bidders/pwbid.md index 48c08c33b4..26715707a2 100644 --- a/dev-docs/bidders/pwbid.md +++ b/dev-docs/bidders/pwbid.md @@ -12,7 +12,7 @@ schain_supported: true prebid_member: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, pubProvidedId, sharedId, unifiedId tcf1_supported: true -getFloor: false +floors_supported: false gvl_id: 842 --- diff --git a/dev-docs/bidders/quantumdex.md b/dev-docs/bidders/quantumdex.md index 1119a035c4..bc03315282 100644 --- a/dev-docs/bidders/quantumdex.md +++ b/dev-docs/bidders/quantumdex.md @@ -10,8 +10,8 @@ gdpr_supported: true schain_supported: true usp_supported: true userIds: all -getFloor: true +floors_supported: true --- # Description -Quantumdex is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. \ No newline at end of file +Quantumdex is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. diff --git a/dev-docs/bidders/relaido.md b/dev-docs/bidders/relaido.md index 451554d9d4..08ef84f34f 100644 --- a/dev-docs/bidders/relaido.md +++ b/dev-docs/bidders/relaido.md @@ -3,6 +3,7 @@ layout: bidder title: Relaido description: Prebid Relaido Bidder Adapter biddercode: relaido +userIds: imuid pbjs: true media_types: banner, video --- diff --git a/dev-docs/bidders/rise.md b/dev-docs/bidders/rise.md index 30cf4cf3cd..01585fbb75 100644 --- a/dev-docs/bidders/rise.md +++ b/dev-docs/bidders/rise.md @@ -1,13 +1,17 @@ --- layout: bidder title: Rise -description: Prebid Bidder Adaptor +description: Prebid Bidder Adaptor pbjs: true biddercode: rise -media_types: no-display, video +media_types: video schain_supported: true gdpr_supported: true usp_supported: true +floors_supported: true +userIds: all +fpd_supported: true +gvl_id: 1043 --- ### Note @@ -23,7 +27,7 @@ The Rise adapter requires setup and approval. Please reach out to prebid-rise-en | ---- | ----- | ---- | ----------- | ------- | `org` | required | String | Rise publisher Id provided by your Rise representative | "56f91cd4d3e3660002000033" | `floorPrice` | optional | Number | Minimum price in USD.

    **WARNING:**
    Misuse of this parameter can impact revenue | 2.00 -| `ifa` | optional | String | The ID for advertisers (also referred to as "IDFA") | "XXX-XXX" +| `placementId` | optional | String | A unique placement identifier | "12345678" | `testMode` | optional | Boolean | This activates the test mode | false ## Example @@ -43,7 +47,7 @@ var adUnits = [ params: { org: '56f91cd4d3e3660002000033', // Required floorPrice: 5.00, // Optional - ifa: 'XXX-XXX', // Optional + placementId: '12345678', // Optional testMode: false // Optional } }] @@ -54,18 +58,5 @@ var adUnits = [ ### Configuration Rise recommends setting UserSync by iframe for monetization. -For Prebid.js v1.15.0 and later: - -pbjs.setConfig({ - userSync: { - filterSettings: { - iframe: { - bidders: '*', // '*' represents all bidders - filter: 'include' - } - } - } -}); - ### Versions Prebid versions 5.0-5.3 are not supported diff --git a/dev-docs/bidders/roundel.md b/dev-docs/bidders/roundel.md index 61fa4d03b5..fed8e9a1f5 100644 --- a/dev-docs/bidders/roundel.md +++ b/dev-docs/bidders/roundel.md @@ -22,4 +22,4 @@ Roundel is an aliased bidder for Index Exchange and must be configured alongside ## Bid Params Bidder params for roundel follow the same structure as the Index Exchange bidder. Please reference configuration examples [here](/dev-docs/bidders/ix). - \ No newline at end of file + diff --git a/dev-docs/bidders/rtbanalytica.md b/dev-docs/bidders/rtbanalytica.md new file mode 100644 index 0000000000..3718ed244b --- /dev/null +++ b/dev-docs/bidders/rtbanalytica.md @@ -0,0 +1,27 @@ +--- +layout: bidder +title: RtbAnalytica +description: RtbAnalytica Bidder Adaptor +pbjs: true +pbs: true +biddercode: rtbanalytica +aliasCode : adkernel +media_types: banner, native, video +gdpr_supported: true +usp_supported: true +coppa_supported: true +pbs_app_supported: true +schain_supported: true +--- + +### Note: + +The RtbAnalytica bidding adapter requires setup and approval before implementation. Please reach out to for more details. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | RtbAnalytica RTB host | `'cpm.rtbanalytica.com'` | `string` | +| `zoneId` | required | Zone Id | `30164` | `integer` | diff --git a/dev-docs/bidders/rubicon.md b/dev-docs/bidders/rubicon.md index bacf84b2f8..aa23cbfb44 100644 --- a/dev-docs/bidders/rubicon.md +++ b/dev-docs/bidders/rubicon.md @@ -7,15 +7,16 @@ gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true media_types: video userIds: all prebid_member: true safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 52 --- diff --git a/dev-docs/bidders/seedingAlliance.md b/dev-docs/bidders/seedingAlliance.md index bba20fe71b..0683e3a3d8 100644 --- a/dev-docs/bidders/seedingAlliance.md +++ b/dev-docs/bidders/seedingAlliance.md @@ -6,7 +6,6 @@ pbjs: true biddercode: seedingAlliance media_types: native gdpr_supported: true -pbjs_version_notes: not in 5.x --- ### Bid params diff --git a/dev-docs/bidders/selectmediavideo.md b/dev-docs/bidders/selectmediavideo.md index 5018b660b5..b83990023e 100644 --- a/dev-docs/bidders/selectmediavideo.md +++ b/dev-docs/bidders/selectmediavideo.md @@ -1,17 +1,19 @@ --- layout: bidder title: SelectMedia Video -description: SelectMedia Video Bidder Adapter +description: Prebid SelectMedia Video Bidder Adapter pbjs: true biddercode: selectmediavideo aliasCode: aniview -media_types: video +media_types: banner, video gdpr_supported: true usp_supported: true +schain_supported: true +safeframes_ok: true --- ### Note: -For more information about [SelectMedia](http://www.selectmedia.asia/). +For more information about [SelectMedia](https://www.selectmedia.asia/), please contact info@selectmedia.asia. ### Bid Params diff --git a/dev-docs/bidders/sharethrough.md b/dev-docs/bidders/sharethrough.md index f3f12448a7..9054f5e354 100644 --- a/dev-docs/bidders/sharethrough.md +++ b/dev-docs/bidders/sharethrough.md @@ -9,6 +9,7 @@ media_types: native schain_supported: true userIds: pubCommonId, unifiedId, identityLink, id5Id, sharedId, liveIntentId usp_supported: true +fpd_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/slimcut.md b/dev-docs/bidders/slimcut.md index c308a7322a..598794aeac 100644 --- a/dev-docs/bidders/slimcut.md +++ b/dev-docs/bidders/slimcut.md @@ -1,12 +1,11 @@ --- layout: bidder title: Slimcut -description: SlimCut Bidder Adaptor +description: SlimCut Bidder Adapter pbjs: true biddercode: slimcut media_types: video, banner gdpr_supported: true -pbjs_version_notes: not in 5.x --- ### Overview diff --git a/dev-docs/bidders/smaato.md b/dev-docs/bidders/smaato.md index 5b4e1b7d36..e8eab58473 100644 --- a/dev-docs/bidders/smaato.md +++ b/dev-docs/bidders/smaato.md @@ -13,20 +13,32 @@ pbjs: true pbs: true pbs_app_supported: true prebid_member: true +floors_supported: true +fpd_supported: true --- ### Table of Contents +- [Registration](#smaato-registration) +- [Note](#smaato-note) - [Bid Params](#smaato-bid-params) - [App Object](#smaato-app-object) - [Example Ad Units](#smaato-example-ad-units) - [First Party Data](#smaato-first-party) - [Test Parameters](#smaato-test-parameters) +
    + ### Registration The Smaato adapter requires setup and approval from the Smaato team, even for existing Smaato publishers. Please reach out to your account team or prebid@smaato.com for more information. + + +### Note + +The Smaato adapter will convert bidfloors to 'USD' currency as needed. + ### Bid Params diff --git a/dev-docs/bidders/smartadserver.md b/dev-docs/bidders/smartadserver.md index 0c5d7a3b13..12db35618c 100644 --- a/dev-docs/bidders/smartadserver.md +++ b/dev-docs/bidders/smartadserver.md @@ -10,6 +10,7 @@ usp_supported: true userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId pbjs: true pbs: true +floors_supported: true --- ### Registration diff --git a/dev-docs/bidders/smarthub.md b/dev-docs/bidders/smarthub.md new file mode 100644 index 0000000000..9bee0fd5ce --- /dev/null +++ b/dev-docs/bidders/smarthub.md @@ -0,0 +1,22 @@ +--- +layout: bidder +title: SmartHub +description: SmartHub Bidder Adapter +biddercode: smarthub +usp_supported: true +schain_supported: true +media_types: banner, video, native +gdpr_supported: true +pbjs: false +pbs: true +pbs_app_supported: true +--- + +### Prebid Server Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|---------------------|--------------------------------------|----------| +| `partnerName` | required | Unique partner name | `'partnertest'` | `string` | +| `seat` | required | Seat value | `'9Q20EdGxzgWdfPYShScl'` | `string` | +| `token` | required | Token | `'eKmw6alpP3zWQhRCe3flOpz0wpuwRFjW'` | `string` | diff --git a/dev-docs/bidders/smartrtb.md b/dev-docs/bidders/smartrtb.md index df674f69d8..f81e8172ad 100644 --- a/dev-docs/bidders/smartrtb.md +++ b/dev-docs/bidders/smartrtb.md @@ -9,6 +9,7 @@ userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrable pbjs: true pbs: true pbs_app_supported: true +pbjs_version_notes: not in 5.x --- ### Registration diff --git a/dev-docs/bidders/smartx.md b/dev-docs/bidders/smartx.md index d6ceabd413..ecfbcf42be 100644 --- a/dev-docs/bidders/smartx.md +++ b/dev-docs/bidders/smartx.md @@ -47,6 +47,6 @@ Please reach out to your smartclip business contact for any questions and assist | `maxAdWidth` | optional | Maximum size of the player. | `900` | `integer` | | `title` | optional | Makes a defined advertising text appear in the below right corner. `[remainingTime]` can be used to display the remaining time of the advertisement. | `'Advertisement [remainingTime]s'` | `string` | | `skipOffset` | optional | Define whenever the advertisement can be skipped. 0 = never | `0` | `integer` | -| `startOpen` | optional | Define whether the player should be initialized open or open when it is within view. | `false` | `bool` | -| `endingScreen` | optional | Define whether the player should stay open after advertising or not. | `true` | `bool` | +| `startOpen` | optional | Define whether the player should be initialized open or open when it is within view. | `'false'` | `string` | +| `endingScreen` | optional | Define whether the player should stay open after advertising or not. | `'true'` | `string` | | `desiredBitrate`| optional | Define the desired bitrate of the mediafile. | `800` | `integer` | diff --git a/dev-docs/bidders/smartyads.md b/dev-docs/bidders/smartyads.md index 3b0738bee3..671cf75ef0 100644 --- a/dev-docs/bidders/smartyads.md +++ b/dev-docs/bidders/smartyads.md @@ -9,7 +9,7 @@ coppa_supported: true schain_supported: true media_types: banner, video, native safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/sonobi.md b/dev-docs/bidders/sonobi.md index a484ffb450..73d3b538ff 100644 --- a/dev-docs/bidders/sonobi.md +++ b/dev-docs/bidders/sonobi.md @@ -12,6 +12,7 @@ usp_supported: true coppa_supported: true schain_supported: true pbs_app_supported: true +fpd_supported: true --- ### Note: diff --git a/dev-docs/bidders/sortable.md b/dev-docs/bidders/sortable.md index 95621f2f67..2ac98e8707 100644 --- a/dev-docs/bidders/sortable.md +++ b/dev-docs/bidders/sortable.md @@ -10,7 +10,7 @@ usp_supported: true schain_supported: true prebid_member: true gvl_id: 145 -getFloor: true +floors_supported: true userIds: all --- diff --git a/dev-docs/bidders/sovrn.md b/dev-docs/bidders/sovrn.md index 3905d8c32e..98c383cbeb 100644 --- a/dev-docs/bidders/sovrn.md +++ b/dev-docs/bidders/sovrn.md @@ -11,7 +11,8 @@ userIds: all prebid_member: true schain_supported: true gvl_id: 13 -getFloor: true +floors_supported: true +fpd_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/spotx.md b/dev-docs/bidders/spotx.md index 9a63dfb00d..db387ff88f 100644 --- a/dev-docs/bidders/spotx.md +++ b/dev-docs/bidders/spotx.md @@ -12,6 +12,7 @@ usp_supported: true safeframes_ok: false pbjs: true gvl_id: 165 +floors_supported: true pbjs_version_notes: avoid 4.31-4.35 --- @@ -32,7 +33,7 @@ Publishers using SpotX that haven't yet updated their ad server line items and t | `secure` | optional | Boolean identifying whether the requests should be https or not (used to override the protocol if the page isn't secure). | `true` | `boolean` | | `mimes` | optional | List of MIME types to allow in ad. | `['application/javascript', 'video/mp4', 'video/webm']` | `array` | | `ad_volume` | optional | Value between 0 and 1 to denote the volume the ad should start at | `0.7` | `float` | -| `price_floor` | optional | Set the current channel price floor in real time. | `10` | `integer` | +| `price_floor` | optional | Set the current channel price floor in real time. | `10` | `float` | | `hide_skin` | optional | Set to true to hide the SpotX skin | | `boolean` | | `custom` | optional | An object containing key-value pairs for reporting. See SpotX documentation [here](https://developer.spotxchange.com/content/local/docs/sdkDocs/DirectSdk/dsdk-custom-configs.md#custom-key-value-pair-reporting) | | `object` | | `min_duration` | optional | Minimum video ad duration in seconds | | `integer` | diff --git a/dev-docs/bidders/sspBC.md b/dev-docs/bidders/sspBC.md index 41a319747a..18889255a4 100644 --- a/dev-docs/bidders/sspBC.md +++ b/dev-docs/bidders/sspBC.md @@ -4,9 +4,10 @@ title: sspBC description: Prebid sspBC Bidder Adaptor pbjs: true biddercode: sspBC -media_types: banner -getFloor: true +media_types: banner, video, native +floors_supported: true gdpr_supported: true +fpd_supported: true gvl_id: 676 --- @@ -21,4 +22,4 @@ gvl_id: 676 | `publisherId` | optional | publisher id | `'728'` | `string` | | `domain` | optional | site domain | `'somesite.com'` | `string` | | `page` | optional | page url | `'somesite.com/index.html'` | `string` | -| `tmax` | optional | tmax for server connection | `400` | `integer` | \ No newline at end of file +| `tmax` | optional | tmax for server connection | `400` | `integer` | diff --git a/dev-docs/bidders/stroeerCore.md b/dev-docs/bidders/stroeerCore.md index 9c0bae38c6..307ccd4b25 100644 --- a/dev-docs/bidders/stroeerCore.md +++ b/dev-docs/bidders/stroeerCore.md @@ -13,7 +13,7 @@ prebid_member: false pbjs: true pbs: false gvl_id: 136 -bidder_supports_deals: true +deals_supported: true --- ### Bid Params diff --git a/dev-docs/bidders/talkads.md b/dev-docs/bidders/talkads.md new file mode 100644 index 0000000000..8a8dfe4419 --- /dev/null +++ b/dev-docs/bidders/talkads.md @@ -0,0 +1,74 @@ +--- +layout: bidder +title: Talkads +description: Talkads Prebid Bidder Adapter +biddercode: talkads +gdpr_supported: true +gvl_id: +usp_supported: false +coppa_supported: false +media_types: banner, native +safeframes_ok: false +pbjs: true +pbs: false +prebid_member: false +pbjs_version_notes: v4.35 and later +--- + +### Registration + +The Talkads Adapter requires setup before beginning. Please contact us at www.natexo.com and register to the publisher side. + +### Configuration + +#### Prebid.js + +The TalkAds adapter does not work without setting the correct tag ID and bidder URL. +These parameters are totally specific to each Publisher, you will receive them when contacting us. + +### Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|--------------|----------|----------------------------------------------------------------|---------------------------------------------------------|----------------| +| `tag_id` | required | The publisher tag id given by the Natexo team | `99` | `number` | +| `bidder_url` | required | The publisher bidder url given by the Natexo team | `'https://test.natexo-programmatic.com/tad/tag/prebid'` | `string` | + +#### Native example + +``` +var adUnits = [ + code: '/19968336/prebid_native_example_1', + mediaTypes: { + native: { + } + }, + bids: [{ + bidder: 'talkads', + params: { + tag_id: 0, + bidder_url: 'https://d.natexo-programmatic.com/tad/tag/testbid', + }, + }] +]; +``` + +#### Banner example +``` +var adUnits = [ + code: '/19968336/prebid_display_example_1', + mediaTypes: { + banner: { + sizes: [[300, 250]] + } + }, + bids: [{ + bidder: 'talkads', + params: { + tag_id: 0, + bidder_url: 'https://d.natexo-programmatic.com/tad/tag/testbid', + }, + }] +]; +``` diff --git a/dev-docs/bidders/tappx.md b/dev-docs/bidders/tappx.md index dfa28cea56..46673da937 100644 --- a/dev-docs/bidders/tappx.md +++ b/dev-docs/bidders/tappx.md @@ -1,6 +1,6 @@ --- layout: bidder -title: :tappx +title: tappx pbs: true pbjs: true media_types: banner, video @@ -27,6 +27,9 @@ Please contact tappx@tappx.com to get set up. | tappxkey | required | An ID which identifies the adunit | 'key1' | string | | endpoint | required | Endpoint provided to publisher | 'endpoint1' | string | | bidfloor | optional | Minimum bid for this impression expressed in CPM (USD) | 1.2 | number | +| mktag | optional | An ID which identifies a group of adunits | 'key1' | string | +| bcid | optional | Block list of CID | ["1234"] | array of strings | +| bcrid | optional | Block list of CRID | ["1234"] | array of strings | ### Test Parameters diff --git a/dev-docs/bidders/targetvideo.md b/dev-docs/bidders/targetvideo.md new file mode 100644 index 0000000000..945d941235 --- /dev/null +++ b/dev-docs/bidders/targetvideo.md @@ -0,0 +1,46 @@ +--- +layout: bidder +title: TargetVideo +description: Prebid TargetVideo Bidder Adaptor +biddercode: targetVideo +media_types: video +gdpr_supported: true +prebid_member: true +userIds: criteo, unifiedId, netId, identityLink, flocId, uid2 +schain_supported: true +coppa_supported: true +usp_supported: true +floors_supported: true +pbjs: true +pbs: true +gvl_id: 32 +--- + +### Table of Contents + +- [Bid Params](#targetvideo-bid-params) +- [Video Object](#targetvideo-video-object) + + + +#### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------|------------------| +| `placementId` | required | The placement ID from TargetVideo. You may identify a placement using the `invCode` and `member` instead of a placement ID. The `placementID` parameter can be either a `string` or `integer` for Prebid.js, however `integer` is preferred. Legacy code can retain the `string` value. **Prebid Server requires an integer value.** | `234234` | `integer` | + + + +#### Video Object + +{: .table .table-bordered .table-striped } +| Name | Description | Type | +|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------| +| `minduration` | Integer that defines the minimum video ad duration in seconds. | `integer` | +| `maxduration` | Integer that defines the maximum video ad duration in seconds. | `integer` | +|`context` | A string that indicates the type of video ad requested. Allowed values: `"pre_roll"`; `"mid_roll"`; `"post_roll"`; `"outstream"`. | `string` | +| `skippable` | Boolean which, if `true`, means the user can click a button to skip the video ad. Defaults to `false`. | `boolean` | +|`skipoffset`| Integer that defines the number of seconds until an ad can be skipped. Assumes `skippable` setting was set to `true`. | `integer` | +| `playback_method` | A string that sets the playback method supported by the publisher. Allowed values: `"auto_play_sound_on"`; `"auto_play_sound_off"`; `"click_to_play"`; `"mouse_over"`; `"auto_play_sound_unknown"`. | `string` | +| `frameworks` | Array of integers listing API frameworks supported by the publisher. Allowed values: None: `0`; VPAID 1.0: `1`; VPAID 2.0: `2`; MRAID 1.0: `3`; MRAID 2.0: `4`; ORMMA: `5`; OMID 1.0 `6`. | `Array` | diff --git a/dev-docs/bidders/teads.md b/dev-docs/bidders/teads.md index 4ca58d6654..905567f301 100644 --- a/dev-docs/bidders/teads.md +++ b/dev-docs/bidders/teads.md @@ -7,9 +7,10 @@ biddercode: teads gdpr_supported: true usp_supported: true schain_supported: true +userIds: flocId, uid2Id media_types: banner, video gvl_id: 132 -bidder_supports_deals: true +deals_supported: true --- ### Note: diff --git a/dev-docs/bidders/triplelift.md b/dev-docs/bidders/triplelift.md index 9406329245..24f4b522f3 100644 --- a/dev-docs/bidders/triplelift.md +++ b/dev-docs/bidders/triplelift.md @@ -7,18 +7,24 @@ gdpr_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true media_types: banner, video userIds: criteo, identityLink, unifiedId, pubCommonId prebid_member: true safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true +fpd_supported: true gvl_id: 28 --- +{% capture version2 %} +The Triplelift Prebid Server bidding adapter and user sync endpoint require setup before beginning. Please contact us at prebid@triplelift.com. +{% endcapture %} +{% include alerts/alert_important.html content=version2 %} + ### Bid Params {: .table .table-bordered .table-striped } diff --git a/dev-docs/bidders/triplelift_native.md b/dev-docs/bidders/triplelift_native.md index 09829e00cf..8a8c2e00af 100644 --- a/dev-docs/bidders/triplelift_native.md +++ b/dev-docs/bidders/triplelift_native.md @@ -8,12 +8,12 @@ tcf2_supported: true usp_supported: true coppa_supported: true schain_supported: true -getFloor: true +floors_supported: true media_types: banner, video, native userIds: criteo, identityLink, unifiedId prebid_member: true safeframes_ok: true -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true pbs_app_supported: true diff --git a/dev-docs/bidders/trustx.md b/dev-docs/bidders/trustx.md index 7f530c9f1a..d0d938c60d 100644 --- a/dev-docs/bidders/trustx.md +++ b/dev-docs/bidders/trustx.md @@ -8,6 +8,7 @@ biddercode: trustx media_types: banner, video gdpr_supported: true usp_supported: true +fpd_supported: true --- diff --git a/dev-docs/bidders/turktelekom.md b/dev-docs/bidders/turktelekom.md index a6b2395bca..d845c7e845 100644 --- a/dev-docs/bidders/turktelekom.md +++ b/dev-docs/bidders/turktelekom.md @@ -1,19 +1,29 @@ --- layout: bidder title: Türk Telekom -description: Prebid Türk Telekom Bidder Adaptor +description: Türk Telekom Bidder Adaptor pbjs: true +pbs: true biddercode: turktelekom -media_types: banner, video +aliasCode : adkernel +media_types: banner, native, video gdpr_supported: true -pbjs_version_notes: not in 5.x +usp_supported: true +coppa_supported: true +pbs_app_supported: true +schain_supported: true +pbjs_version_notes: v5.18+ +safeframes_ok: true --- +### Note: + +The Türk Telekom bidding adapter requires setup and approval before implementation. Please reach out to for more details. ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|-----------| -| `uid` | required | Represents the Türk Telekom bidder system Ad Slot ID associated with the respective div id from the site page. | `42` | `integer` | -| `priceType` | optional | Can take the values `gross` or `net`, default value is `net`. Net represents the header bid price with the Türk Telekom header bidder margin already extracted. Gross price does contain the Türk Telekom bidder margin within. | `'gross'` | `string` | +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | RTB host | `'cpm.programattik.com'` | `string` | +| `zoneId` | required | Zone Id | 30164 | `integer` | diff --git a/dev-docs/bidders/ucfunnel.md b/dev-docs/bidders/ucfunnel.md index 5d102e23c1..a825957ad8 100644 --- a/dev-docs/bidders/ucfunnel.md +++ b/dev-docs/bidders/ucfunnel.md @@ -15,7 +15,9 @@ gvl_id: 607 pbs_app_supported: true --- -### Bid params +### Prebid JS + +#### Bid params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -46,3 +48,16 @@ Sizes set in the `adUnit` object will also apply to the ucfunnel bid requests. - [Banner Ads](https://cdn.aralego.net/ucfad/test/ucfunnel/compliance/pbjs_banner.html) - [Instream Video Ads](https://cdn.aralego.net/ucfad/test/ucfunnel/compliance/pbjs_video.html) - [Native Ads](https://cdn.aralego.net/ucfad/test/ucfunnel/compliance/pbjs_native.html) + + +### Prebid server + +#### Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|--------|----------|-------------------------------------------------|---------|----------| +| `adunitid` | required | ID for ad unit | | `string` | +| `partnerid` | required | ID for partner | | `string` | + +``` diff --git a/dev-docs/bidders/unibots.md b/dev-docs/bidders/unibots.md new file mode 100644 index 0000000000..d8b859e629 --- /dev/null +++ b/dev-docs/bidders/unibots.md @@ -0,0 +1,27 @@ +--- +layout: bidder +title: Unibots +description: Unibots Bidder Adaptor +pbjs: true +pbs: true +biddercode: unibots +aliasCode : adkernel +media_types: banner, native, video +gdpr_supported: true +usp_supported: true +coppa_supported: true +pbs_app_supported: true +schain_supported: true +--- + +### Note: + +The Unibots bidding adapter requires setup and approval before implementation. Please reach out to for more details. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------|----------|-----------------------|---------------------------|----------| +| `host` | required | RTB host | `'cpm.unibots.in'` | `string` | +| `zoneId` | required | Zone Id | 30164 | `integer` | diff --git a/dev-docs/bidders/unicorn.md b/dev-docs/bidders/unicorn.md index 7b2e69f7d0..21a645f404 100644 --- a/dev-docs/bidders/unicorn.md +++ b/dev-docs/bidders/unicorn.md @@ -7,7 +7,6 @@ pbs: true pbs_app_supported: true media_types: banner biddercode: unicorn -pbjs_version_notes: not in 5.x --- ### bid params @@ -17,7 +16,6 @@ pbjs_version_notes: not in 5.x |---------------|----------|-------------------------------------------|------------|-----------| | `placementId` | optional | Your placement ID | `'rectangle-ad-1'` | `string` | | `accountId` | required | Account ID for charge request (provided by UNICORN) | `12345` | `integer` | -| `bidfloorCpm` | optional for Prebid.js | Floor CPM (JPY); defaults to 0. | `0.2` | `float` | | `publisherId` | optional | Account specific publisher id. | `67890` | `integer` | | `mediaId` | required for Prebid Server, optional for Prebid.js | Publisher specific media id. | `'example'` | `string` | | `bcat` | optional for Prebid.js | Blocked IAB categories | `['IAB-1', 'IAB-2']` | `[string]` | diff --git a/dev-docs/bidders/unruly.md b/dev-docs/bidders/unruly.md index e3a8e665a3..89bdd181cd 100644 --- a/dev-docs/bidders/unruly.md +++ b/dev-docs/bidders/unruly.md @@ -7,16 +7,16 @@ gdpr_supported: true usp_supported: true coppa_supported: false schain_supported: true -getFloor: true +floors_supported: true media_types: banner, video userIds: all prebid_member: false safeframes_ok: check with bidder -bidder_supports_deals: check with bidder +deals_supported: check with bidder pbjs: true pbs: true pbs_app_supported: true -gvl_id: 162 +gvl_id: 36 --- ### Bid Params diff --git a/dev-docs/bidders/valueimpression.md b/dev-docs/bidders/valueimpression.md index 75e9352402..38b86c78ca 100644 --- a/dev-docs/bidders/valueimpression.md +++ b/dev-docs/bidders/valueimpression.md @@ -10,9 +10,9 @@ gdpr_supported: true schain_supported: true usp_supported: true userIds: all -getFloor: true +floors_supported: true pbs: true --- # Description -Valueimpression is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. \ No newline at end of file +Valueimpression is an aliased bidder of Apacdex bid adapter. Please refer to [Apacdex documentation](https://docs.prebid.org/dev-docs/bidders/apacdex) for bid parameters and implementation guide. diff --git a/dev-docs/bidders/vidcrunch.md b/dev-docs/bidders/vidcrunch.md new file mode 100644 index 0000000000..41a592a164 --- /dev/null +++ b/dev-docs/bidders/vidcrunch.md @@ -0,0 +1,45 @@ +--- +layout: bidder +title: VidCrunch +description: Prebid VidCrunch Bidder Adapter +pbjs: true +biddercode: vidcrunch +aliasCode: aniview +media_types: banner, video +gdpr_supported: true +usp_supported: true +schain_supported: true +safeframes_ok: true +--- + +### Note: +For more information about [VidCrunch](https://vidcrunch.com/), please contact info@vidcrunch.com. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------------|----------|------------------|------------------------------|----------| +| `AV_PUBLISHERID` | required | Publisher/Netid | `'55b88d4a181f465b3e8b4567'` | `string` | +| `AV_CHANNELID` | required | Channel id | `'5a5f17a728a06102d14c2718'` | `string` | + +### Test Parameters +``` +videoAdUnit = [ +{ + code: 'video1', + mediaTypes: { + video: { + playerSize: [[640, 480]], + context: 'outstream' + }, + }, + bids: [{ + bidder: 'vidcrunch', + params: { + AV_PUBLISHERID: '55b78633181f4603178b4568', + AV_CHANNELID: '5d19dfca4b6236688c0a2fc4' + } + }] +}]; +``` diff --git a/dev-docs/bidders/vidoomy.md b/dev-docs/bidders/vidoomy.md new file mode 100644 index 0000000000..5757ad9b74 --- /dev/null +++ b/dev-docs/bidders/vidoomy.md @@ -0,0 +1,23 @@ +--- +layout: bidder +title: Vidoomy +description: Prebid Vidoomy Bidder Adaptor +pbjs: true +biddercode: vidoomy +media_types: banner, video +gdpr_supported: true +gvl_id: 380 +usp_supported: true +coppa_supported: true +--- + +### Note: +[Vidoomy](https://vidoomy.com/), for more info please contact support@vidoomy.com + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------------|----------|------------------|------------------------------|----------| +| `id` | required | id | `123123` | `string` | +| `pid` | required | pid | `'123123'` | `string` | diff --git a/dev-docs/bidders/viewdeos.md b/dev-docs/bidders/viewdeos.md new file mode 100644 index 0000000000..aacb4a2a6d --- /dev/null +++ b/dev-docs/bidders/viewdeos.md @@ -0,0 +1,39 @@ +--- +layout: bidder +title: Viewdeos Server +description: Prebid Server ViewDeos Adapter +pbjs: false +pbs: true +biddercode: viewdeos +media_types: banner,video +gdpr_supported: true +gvl_id: 924 +--- + +### Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------|----------|---------------------------------|----------|-----------| +| `aid` | required | The source ID from member zone | `350975` | `integer` | + +### Test Parameters +``` + var adUnits = [ + // Banner adUnit + { + code: 'div-test-div', + mediaTypes: { + banner: { + sizes:[[300, 250]] + } + }, + bids: [{ + bidder: 'viewdeos', + params: { + aid: 672854 + } + }] + } + ]; +``` diff --git a/dev-docs/bidders/viewdeosDX.md b/dev-docs/bidders/viewdeosDX.md index 6aab7f7107..3c8ee83b72 100644 --- a/dev-docs/bidders/viewdeosDX.md +++ b/dev-docs/bidders/viewdeosDX.md @@ -1,15 +1,17 @@ --- layout: bidder -title: Viewdeos -description: Prebid ViewDeos Bidder Adaptor +title: ViewdeosDX Client +description: Prebid.js ViewDeos Bidder Adapter pbjs: true -pbs: true +pbs: false biddercode: viewdeosDX media_types: banner,video gdpr_supported: true gvl_id: 924 --- +Note that for Prebid Server, use "viewdeos" bidder code. + ### Bid params {: .table .table-bordered .table-striped } diff --git a/dev-docs/bidders/visx.md b/dev-docs/bidders/visx.md index 9fdb7cb190..f39b0db05d 100644 --- a/dev-docs/bidders/visx.md +++ b/dev-docs/bidders/visx.md @@ -9,7 +9,7 @@ gvl_id: 154 schain_supported: true userIds: id5Id, unifiedId media_types: banner, video -bidder_supports_deals: true +deals_supported: true pbjs: true pbs: true --- diff --git a/dev-docs/bidders/vrtcal.md b/dev-docs/bidders/vrtcal.md index 16b40e6050..cdb1948a8e 100644 --- a/dev-docs/bidders/vrtcal.md +++ b/dev-docs/bidders/vrtcal.md @@ -4,7 +4,7 @@ title: VRTCAL Markets, Inc. description: VRTCAL Markets, Inc. Bid Adapter pbjs: true pbs: true -media_ytpes: banner +media_types: banner, video gdpr_supported: false biddercode: vrtcal gvl_id: 706 diff --git a/dev-docs/bidders/weborama.md b/dev-docs/bidders/weborama.md deleted file mode 100644 index 0fa88f3951..0000000000 --- a/dev-docs/bidders/weborama.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: bidder -title: Weborama -description: Prebid Weborama Bidder Adaptor -pbjs: true -biddercode: weborama ---- - -### Bid Params - -{: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | -| :----------- | :--------- | :------------ | :----------------- | -| `placementId` | required | Placement Id will be generated on Weborama Platform. | 0 | -| `traffic` | optional | Type traffic | 'banner' | diff --git a/dev-docs/bidders/winr.md b/dev-docs/bidders/winr.md index ba15ca619d..38a0bc7a59 100644 --- a/dev-docs/bidders/winr.md +++ b/dev-docs/bidders/winr.md @@ -9,9 +9,10 @@ userIds: criteo, unifiedId, netId, identityLink, flocId, uid2 schain_supported: true coppa_supported: true usp_supported: true -getFloor: true +floors_supported: true pbjs: true safeframes_ok: false +fpd_supported: true --- ### Note: diff --git a/dev-docs/bidders/wipes.md b/dev-docs/bidders/wipes.md index 999f0fe4e5..25e1ed80cc 100644 --- a/dev-docs/bidders/wipes.md +++ b/dev-docs/bidders/wipes.md @@ -5,7 +5,6 @@ description: Prebid WIPES Bidder Adaptor pbjs: true biddercode: wipes media_types: video -pbjs_version_notes: not in 5.x --- ### Note: diff --git a/dev-docs/bidders/yahoossp.md b/dev-docs/bidders/yahoossp.md new file mode 100644 index 0000000000..4f6324795b --- /dev/null +++ b/dev-docs/bidders/yahoossp.md @@ -0,0 +1,44 @@ +--- +layout: bidder +title: Yahoo SSP +description: Yahoo SSP Bid Adapter +pbs: true +pbjs: true +media_types: banner, video +biddercode: yahoossp +prebid_member: true +gdpr_supported: true +usp_supported: true +schain_supported: true +coppa_supported: true +gvl_id: 25 +userIds: All +--- + +### Bid Params +The 'yahoossp' bid adapter supports 2 integration types: +1. **dcn & pos** (Site/App & Position explicit targeting) - For legacy "aol", "oneMobile" adapter partners/publishers. +2. **pubId** (Publisher ID) - For New partners/publishers joining Yahoo SSP and legacy "oneVideo" partners/publishers migrating to the Yahoo SSP. + + +**Important:** pubId integration (option 2) is only possible when your Seller account is setup for "Inventory Mapping", Please contact your Account Manager to verify your setup. + +#### DCN & POS Integration Parameters +For legacy "aol", "oneMobile" adapter partners/publishers. + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------|----------|------------------------|---------|----------| +| dcn | Required | Site ID provided by Yahoo SSP | 'site1' | string | +| pos | Required | Placement ID provided by Yahoo SSP | 'placement1' | string | + +#### PubId Integration Parameters +For New partners/publishers joining Yahoo SSP +floors_supported: true and legacy "oneVideo" partners/publishers migrating to the Yahoo SSP. + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|------------|----------|------------------------|---------|----------| +| pubId | Required | Your Publisher External ID provided by Yahoo SSP | 'DemoPublisher' | string | +| siteId | Optional | Ability to target a specific Site using an External ID provided by Yahoo SSP | '1234567' | string | +| placementId | Optional | Ability to target a specific Placement using an External ID provided by Yahoo SSP | 'header' | string | diff --git a/dev-docs/bidders/yieldmo.md b/dev-docs/bidders/yieldmo.md index 18a5a691bb..9ec5b17793 100644 --- a/dev-docs/bidders/yieldmo.md +++ b/dev-docs/bidders/yieldmo.md @@ -4,17 +4,18 @@ title: Yieldmo description: Prebid Yieldmo Bidder Adaptor biddercode: yieldmo media_types: banner, video -userIds: pubCommonId, unifiedId, criteo +userIds: pubCommonId, unifiedId, criteo, sharedId gdpr_supported: true usp_supported: true schain_supported: true prebid_member: true +fpd_supported: true pbjs: true pbs: true --- # Registration -## In order to use Yieldmo adapter please reach out to your Yieldmo account's person or support@yieldmo.com for more information. +### Note: In order to use Yieldmo adapter please reach out to your Yieldmo account's person or support@yieldmo.com for more information.
    ### Bid Params @@ -52,7 +53,6 @@ In addition, Yieldmo adapter relies on parameters specified in the `mediaTypes.v |-------------------|----------|--------------------------------------------------------|-----------------|------------------| | `playerSize` | required | Width and height of the player | `[640, 480]` | `Array` | | `context` | required | `instream` or `outstream ` are only supported | `instream` | `string` | - ### Example of in-stream Video Ad-unit ```javascript var videoAdUnits = [{ @@ -77,7 +77,7 @@ var videoAdUnits = [{ bids: [{ bidder: 'yieldmo', params: { - placementId: '1524592390382976659' // required + placementId: '1524592390382976659',// required, } }] }]; @@ -88,23 +88,23 @@ var videoAdUnit = [{ code: 'div-video-ad-1234567890', mediaTypes: { video: { - playerSize: [640, 480], // required + playerSize: [640, 480], // required context: 'outstream', - mimes: ['video/mp4'], // required, array of strings - placement: 3, // required, integer ( 3,4,5 ) - maxduration: 30, // required, integer - protocols: [2, 3], // required, array of integers - api: [2, 3], // required, array of integers - playbackmethod: [1,2] // required, array of integers + mimes: ['video/mp4'], // required, array of strings + placement: 3, // required, integer ( 3,4,5 ) + maxduration: 30, // required, integer + protocols: [2, 3], // required, array of integers + api: [2, 3], // required, array of integers + playbackmethod: [1,2] // required, array of integers } }, bids: [{ bidder: 'yieldmo', params: { - placementId: '1524592390382976659' // required + placementId: '1524592390382976659', // required } }] }]; ``` -> Prebid out-stream demo - https://prebid-outstream-qa.yieldmo.com/prebid-outstream.html +> [Prebid out-stream demo](https://prebid-outstream-qa.yieldmo.com/prebid-outstream.html) diff --git a/dev-docs/bidders/zeta_global.md b/dev-docs/bidders/zeta_global.md index 1167b31a9c..08a51def28 100644 --- a/dev-docs/bidders/zeta_global.md +++ b/dev-docs/bidders/zeta_global.md @@ -4,7 +4,7 @@ title: Zeta Global description: Zeta Global Prebid Bidder Adapter pbjs: true biddercode: zeta_global -bidder_supports_deals: false +deals_supported: false media_types: banner gdpr_supported: true tcf2_supported: true diff --git a/dev-docs/bidders/zeta_global_ssp.md b/dev-docs/bidders/zeta_global_ssp.md index 74c092c0fb..1a375294cc 100644 --- a/dev-docs/bidders/zeta_global_ssp.md +++ b/dev-docs/bidders/zeta_global_ssp.md @@ -4,13 +4,14 @@ title: Zeta Global Ssp description: Zeta Global Ssp Prebid Bidder Adapter pbjs: true biddercode: zeta_global_ssp -bidder_supports_deals: false +deals_supported: false media_types: banner gdpr_supported: true usp_supported: true coppa_supported: true userIds: all prebid_member: true +fpd_supported: true gvl_id: 833 --- diff --git a/dev-docs/common-issues.md b/dev-docs/common-issues.md index 66eb3693ab..ac9cd05993 100644 --- a/dev-docs/common-issues.md +++ b/dev-docs/common-issues.md @@ -38,6 +38,6 @@ Check the bid prices. If they are low and are getting reduced to $0 due to price {:toc} + [Prebid.js FAQ](/dev-docs/faq.html) -+ [Prebid Tips for Troubleshooting]({{site.github.url}}/dev-docs/troubleshooting-tips.html) ++ [Prebid Tips for Troubleshooting](/troubleshooting/troubleshooting-guide.html) diff --git a/dev-docs/examples/meta-bid-filtering.md b/dev-docs/examples/meta-bid-filtering.md new file mode 100644 index 0000000000..6fe914df06 --- /dev/null +++ b/dev-docs/examples/meta-bid-filtering.md @@ -0,0 +1,15 @@ +--- +layout: example +title: Meta Bid Filtering +left_nav_override: Examples +description: Bid filtering on meta object example +sidebarType: 1 + +about: +- Bidders can supply metadata about the bid such as advertiser domain. See the "meta" fields in the
    bid response for the full list. +- This is an example that filters bid responses based on the metadata object. + +jsfiddle_link: jsfiddle.net/Prebid_Examples/0s4eug1d/18/embedded/html,result + +code_height: 2300 +--- diff --git a/dev-docs/faq.md b/dev-docs/faq.md index d5a397137e..805f7a1256 100644 --- a/dev-docs/faq.md +++ b/dev-docs/faq.md @@ -160,6 +160,11 @@ It's technically possible, but we don't recommend doing this: If all this wasn't enough to warn you away from trying, it should work if you name the PBJS global differently for each instance (https://github.com/prebid/Prebid.js/blob/master/package.json#L20) +## Can I filter bid responses that don't meet my criteria? + +Yes. Many bidders provide metadata about the bid that can be used in troubleshooting +and filtering. See the [list of bid response metadata](/dev-docs/bidder-adaptor.html#interpreting-the-response) and the [filtering example](/dev-docs/examples/meta-bid-filtering.html). + ## Does Prebid.js resolve the AUCTION_PRICE macro? Yes, but in a way that could cause discrepancies in reporting. It's recommended @@ -168,9 +173,8 @@ that [bid adapters resolve OpenRTB macros](/dev-docs/bidder-adaptor.html#resolve For historic reasons, Prebid will resolve the AUCTION_PRICE macro, but it will be after currency conversion and any bid adjustments. This differs from how OpenRTB defines this value as being the clearing price in the bid currency. Header Bidding is a first-price auction, the best candidate for “clearing price” is the original bid itself. - ## Related Reading -+ [Prebid.js Dev Tips]({{site.baseurl}}/dev-docs/troubleshooting-tips.html) -+ [Prebid.js Common Issues]({{site.baseurl}}/dev-docs/common-issues.html) ++ [Prebid.js Troubleshooting Guide](/troubleshooting/troubleshooting-guide.html) ++ [Prebid.js Common Issues](/dev-docs/common-issues.html) + [Prebid.js issues tagged 'question'](https://github.com/prebid/Prebid.js/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20) diff --git a/dev-docs/modules/adpod.md b/dev-docs/modules/adpod.md index 519b1a1a87..0519cd9db6 100644 --- a/dev-docs/modules/adpod.md +++ b/dev-docs/modules/adpod.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Adpod -description: Adds functions to validate, cache, and modify long-form video bids. +description: Enables developers to add support for a new adserver that handles ad pod (long-form) videos. module_code : adpod display_name : Adpod enable_download : true diff --git a/dev-docs/modules/bidViewable.md b/dev-docs/modules/bidViewable.md index b76fb8bf98..a9da963a12 100644 --- a/dev-docs/modules/bidViewable.md +++ b/dev-docs/modules/bidViewable.md @@ -1,15 +1,16 @@ --- layout: page_v2 page_type: module -title: Module - Bid Viewable Event -description: Triggers BID_VIEWABLE event when a rendered PBJS-Bid is viewable according to [Active View criteria](https://support.google.com/admanager/answer/4524488) +title: Module - Bid Viewability - GAM +description: Triggers a BID_VIEWABLE event when a rendered bid is viewable according to Active View criteria module_code : bidViewability -display_name : Bid Viewable Event +display_name : Bid Viewability - GAM enable_download : true +vendor_specific: true sidebarType : 1 --- -# Bid Viewable Event +# Bid Viewability - GAM {:.no_toc} * TOC @@ -19,33 +20,37 @@ sidebarType : 1 This optional module will trigger a BID_VIEWABLE event which can be consumed by Analytics adapters. In addition, the winning bidder can implement an `onBidViewable` method to capture this event. - Notes: -- The module does not work with adservers other than GAM and only with GPT integration. -- The GPT API is used to find when a bid is viewable, See https://developers.google.com/publisher-tag/reference#googletag.events.impressionviewableevent . +- The module does not work with adservers other than GAM and only with GPT integration. See the [other Bid Viewable Event](/dev-docs/modules/bidViewableIO.html) module for an ad server independent version. +- The GPT API is used to find when a bid is viewable. See [GPT documentation](https://developers.google.com/publisher-tag/reference#googletag.events.impressionviewableevent) for more details. - This event is fired when an impression becomes viewable, according to [Active View criteria](https://support.google.com/admanager/answer/4524488). -- Logic used to find a matching Prebid.js bid for a GPT slot is ` (slot.getAdUnitPath() === bid.adUnitCode || slot.getSlotElementId() === bid.adUnitCode) ` this logic can be changed by using param ` customMatchFunction ` - When a rendered PBJS bid is viewable the module will trigger BID_VIEWABLE event, which can be consumed by the winning bidder and analytics adapters - The module works with Banner, Outsteam and Native creatives -Instead of listening for events, bidders may supply a ` bid.vurls ` array and this module may fire those pixels when the viewability signal is received. Publishers can control this with module config ` firePixels: true `. Please note that GDPR and USP related parameters will be added to the given URLs. +Instead of listening for events, bidders may supply a `bid.vurls` array and this module may fire those pixels when the viewability signal is received. Publishers can control this with module config ` firePixels: true `. Please note that GDPR and USP related parameters will be added to the given URLs. {: .alert.alert-warning :} -This feature doesn't seem to work with [Instream Video](/dev-docs/examples/instream-banner-mix.html), as GPT's impressionViewable event is not triggered for instream-video-creative +This feature doesn't work with [Instream Video](/dev-docs/examples/instream-banner-mix.html), as GPT's impressionViewable event is not triggered for instream-video-creative + +The default logic used to find a matching Prebid.js bid for a GPT slot is +``` +(bid, slot) => (slot.getAdUnitPath() === bid.adUnitCode || + slot.getSlotElementId() === bid.adUnitCode) +``` ## Configuration {: .table .table-bordered .table-striped } -| Field | Scope | Type | Description | -|----------+---------+--------+---------------------------------------------------------------------------------------| -| `bidViewability` | Required | Object | Configuration object for instream tracking | +| Field | Scope | Type | Description | +|----------+---------+--------+-----------------------------------------| +| `bidViewability` | Required | Object | Configuration object | | `bidViewability.enabled` | Required | Boolean | when set to true, the module will emit BID_VIEWABLE when applicable. Default: `false` | | `bidViewability.firePixels` | Optional | Boolean | when set to true, will fire the urls mentioned in `bid.vurls` which should be array of URLs. Default: `false` | -| `bidViewability.customMatchFunction` | Optional | function(bid, slot) | when passed this function will be used to `find` the matching winning bid for the GPT slot. Default value is ` (bid, slot) => (slot.getAdUnitPath() === bid.adUnitCode || slot.getSlotElementId() === bid.adUnitCode) ` | +| `bidViewability.customMatchFunction` | Optional | function(bid, slot) | this function will be used to find the matching winning bid for the GPT slot. See above for the default. | ## Example of setting module config {% highlight js %} - pbjs.setConfig({ + pbjs.setConfig({ bidViewability: { enabled: true, firePixels: true, diff --git a/dev-docs/modules/bidViewableIO.md b/dev-docs/modules/bidViewableIO.md new file mode 100644 index 0000000000..b483bc5b80 --- /dev/null +++ b/dev-docs/modules/bidViewableIO.md @@ -0,0 +1,66 @@ +--- +layout: page_v2 +page_type: module +title: Module - Bid Viewability - Ad Server Independent +description: Triggers a BID_VIEWABLE event when a rendered bid is viewable according to an approximation of IAB viewability criteria +module_code : bidViewabilityIO +display_name : Bid Viewability - Ad Server Independent +enable_download : true +sidebarType : 1 +--- + +# Bid Viewability - Ad Server Independent +{:.no_toc} + +* TOC +{:toc} + +## Overview + +This optional module will trigger a BID_VIEWABLE event which can be consumed by Analytics adapters. In addition, the winning bidder can implement an `onBidViewable` method to capture this event. + +Notes: +- The module works with any adserver, or with no ad server at all. +- Publishers using GAM/GPT might consider using the [Bid Viewable Event - GAM](/dev-docs/modules/bidViewable.html) module +- Requires the site to polyfill the [IntersectionObserver API](https://github.com/w3c/IntersectionObserver/tree/main/polyfill) (v1) to find when a bid is viewable. This implementation assumes that the publisher and the bidder are acting in good faith, and does not attempt to detect any bad behavior from either party. We assume that the ad is rendered into the element it has been told to render into, and is not hidden or obfuscated at any time. +- This event is fired when an impression becomes viewable, according to IAB's viewability guidelines +- When a rendered PBJS bid is determined to be viewable this module will trigger a BID_VIEWABLE event, which can be consumed by the winning bidder and analytics adapters +- The module works with Banner creatives, with additional support to come. + +## Known Issues + +{: .alert.alert-warning :} +This feature is not intended to be a perfect measure of viewability. It is however intended to be a reasonable approximation of a bids viewability for creative types that are supported. + +1. Only supports Banner creatives +2. Only works on browsers that support or on sites that have [polyfilled the IntersectionObserver API](https://github.com/w3c/IntersectionObserver/tree/main/polyfill) +3. Results can only be trusted if both the publisher and winning bidder are assumed to be acting in good faith. + +## Configuration + +{: .table .table-bordered .table-striped } +| Field | Scope | Type | Description | +|----------+---------+--------+---------------------------------------------------------------------------------------| +| `bidViewabilityIO` | Required | Object | Configuration object for viewability tracking for supported media types (IO stands for IntersectionObserver) | +| `bidViewabilityIO.enabled` | Required | Boolean | when set to true, the module will emit BID_VIEWABLE when applicable. Default: `false` | + +## Example of setting module config +{% highlight js %} + pbjs.setConfig({ + bidViewabilityIO: { + enabled: true, + } + }); +{% endhighlight %} + +## Example of consuming BID_VIEWABLE event +{% highlight js %} + pbjs.onEvent('bidViewable', function(bid){ + console.log('got bid details in bidViewable event', bid); + }); +{% endhighlight %} + +## Related Reading + +- [Building a PBJS analytics adapter](/dev-docs/integrate-with-the-prebid-analytics-api.html) +- [Building a PBJS bidder adapter](/dev-docs/bidder-adaptor.html) diff --git a/dev-docs/modules/browsiRtdProvider.md b/dev-docs/modules/browsiRtdProvider.md index 6d269adf3a..062f47f45f 100644 --- a/dev-docs/modules/browsiRtdProvider.md +++ b/dev-docs/modules/browsiRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : browsiRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/categoryTranslation.md b/dev-docs/modules/categoryTranslation.md index 4102eb82c6..cb1bd0f987 100644 --- a/dev-docs/modules/categoryTranslation.md +++ b/dev-docs/modules/categoryTranslation.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Category Translation -description: Converts IAB sub category to ad server group. +description: Converts IAB category to ad server category for long-form videos. module_code : categoryTranslation display_name : CategoryTranslation enable_download : true diff --git a/dev-docs/modules/consentManagement.md b/dev-docs/modules/consentManagement.md index a1dc9b9794..f3ea32002f 100644 --- a/dev-docs/modules/consentManagement.md +++ b/dev-docs/modules/consentManagement.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Consent Management - GDPR -description: Module to consume and distribute GDPR consent information to bidder adapters +description: If you have users in Europe, this module works with your Consent Management Platform to pass consent info to bidders and help align with EU regulations. See also the GDPR Enforcement module. module_code : consentManagement display_name : Consent Management - GDPR enable_download : true +recommended: true sidebarType : 1 --- diff --git a/dev-docs/modules/consentManagementUsp.md b/dev-docs/modules/consentManagementUsp.md index c365dd0ce5..ddfa9be3fc 100644 --- a/dev-docs/modules/consentManagementUsp.md +++ b/dev-docs/modules/consentManagementUsp.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Consent Management - US Privacy -description: Module to consume and distribute US Privacy information to bidder adapters +description: If you have users in California, this module works with your Consent Management Platform to pass CCPA/US-Privacy data to bidders. module_code : consentManagementUsp display_name : Consent Management - US Privacy enable_download : true +recommended: true sidebarType : 1 --- diff --git a/dev-docs/modules/currency.md b/dev-docs/modules/currency.md index 5f51829cf8..bc8dd3562d 100644 --- a/dev-docs/modules/currency.md +++ b/dev-docs/modules/currency.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Currency -description: Converts bids to the ad server currency +description: Converts bid currency into ad server currency based on data in a supplied exchange rate file. module_code : currency display_name : Currency enable_download : true diff --git a/dev-docs/modules/dfp_express.md b/dev-docs/modules/dfp_express.md index 598fb1c126..fef264c9db 100644 --- a/dev-docs/modules/dfp_express.md +++ b/dev-docs/modules/dfp_express.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Module - Google Ad Manager Express -description: Simplified installation mechanism for publishers that have Google Ad Manager in their pages +description: A simplified installation mechanism for publishers that have Google Publisher Tag (GPT) ad calls in their pages. module_code : express display_name : Google Ad Manager Express enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/dfp_video.md b/dev-docs/modules/dfp_video.md index 95f51a11e7..e9219ac3b6 100644 --- a/dev-docs/modules/dfp_video.md +++ b/dev-docs/modules/dfp_video.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Module - Google Ad Manager Video -description: Addition of GAM Video to the Prebid package +description: Required for serving instream video through Google Ad Manager. module_code : dfpAdServerVideo -display_name : DFP Video +display_name : Google Ad Manager Video Support enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/dgkeywordRtdProvider.md b/dev-docs/modules/dgkeywordRtdProvider.md index 2153cddc64..217971cc31 100644 --- a/dev-docs/modules/dgkeywordRtdProvider.md +++ b/dev-docs/modules/dgkeywordRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : dgkeywordRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/enrichmentFpdModule.md b/dev-docs/modules/enrichmentFpdModule.md index 833b8c88e7..857c4f2129 100644 --- a/dev-docs/modules/enrichmentFpdModule.md +++ b/dev-docs/modules/enrichmentFpdModule.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Module - First Party Data Enrichment -description: Enriches First Party Data +description: Injects additional data into the auction stream, including: domain, keywords, and page url. module_code : enrichmentFpdModule display_name : First Party Data Enrichment enable_download : true +recommended: true sidebarType : 1 --- @@ -46,7 +47,8 @@ pbjs.refreshFpd(); |---+---+---| | page URL | site.page | Uses pbjs getRefererInfo().canonicalUrl | | referer URL | site.ref | Uses pbjs getRefererInfo().referer | -| domain | site.domain | Pulled from the getRefererInfo().canonicalUrl, the host domain is used, with www dropped. | +| host domain | site.domain | Pulled from the getRefererInfo().canonicalUrl the host domain is used with the www component dropped. | +| aggregated domain | site.publisher.domain | The highest level domain in which cookies can be set. | | viewport width | device.w | Hunts for window.innerWidth, window.document.documentElement.clientWidth, window.document.body.clientWidth | | viewport height | device.w | Hunts for window.innerHeight, window.document.documentElement.clientHeight, window.document.body.clientHeight | | meta keywords | site.keywords | Looks for a meta tag. e.g. | diff --git a/dev-docs/modules/floors.md b/dev-docs/modules/floors.md index 054907fa5f..212b6fa9ad 100644 --- a/dev-docs/modules/floors.md +++ b/dev-docs/modules/floors.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Price Floors -description: Determine and enforce auction price floors +description: Configure and enforce minimum bids. module_code : priceFloors display_name : Price Floors enable_download : true @@ -1265,6 +1265,7 @@ If the currency function is unable to derive the correct cpm in any of the scena {: .table } | Partner | Contact | About | -| | Contact Magnite (Formerly Rubicon Project) support at [globalsupport@mangite.com](mailto:globalsupport@magnite.com) to use Magnite as a floor provider. | | -| pubx.ai | Reach out to PubX at [hello@pubx.ai](mailto:hello@pubx.ai) to learn more about our AI-powered dynamic floor optimization. | | -| Assertive Yield | [assertiveyield.com] | Holistic flooring covering Prebid, Amazon, GAM UPR, RTB and more | +| | [globalsupport@magnite.com](mailto:globalsupport@magnite.com) | Magnite data-science applied to dynamic floors +| pubx.ai | [hello@pubx.ai](mailto:hello@pubx.ai) | AI-powered dynamic floor optimization | +| Assertive Yield | [assertiveyield.com](https://assertiveyield.com) | Holistic flooring covering Prebid, Amazon, GAM UPR, RTB and more | +| OpenX | Reach out to OpenX at [apollo@openx.com] | Dynamic floor optimization and more | diff --git a/dev-docs/modules/freewheel.md b/dev-docs/modules/freewheel.md index 24cba9286f..2aa357c750 100644 --- a/dev-docs/modules/freewheel.md +++ b/dev-docs/modules/freewheel.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Module - Freewheel -description: Returns targeting key/value pairs for adpod mediaType adUnits. +description: Passes key value targeting to Freewheel SDK for adpod mediaType adUnits. module_code : freeWheelAdserverVideo -display_name : Freewheel +display_name : Freewheel Video Support enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/gdprEnforcement.md b/dev-docs/modules/gdprEnforcement.md index 03acfeb352..2afd260ac9 100644 --- a/dev-docs/modules/gdprEnforcement.md +++ b/dev-docs/modules/gdprEnforcement.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: GDPR Enforcement Module -description: Module to enforce GDPR consent +description: If you have users in Europe, you'll want this module that enforces GDPR consent module_code : gdprEnforcement display_name : GDPR Enforcement enable_download : true +recommended: true sidebarType : 1 --- diff --git a/dev-docs/modules/geoedgeRtdProvider.md b/dev-docs/modules/geoedgeRtdProvider.md index a9c4367cef..42113e0086 100644 --- a/dev-docs/modules/geoedgeRtdProvider.md +++ b/dev-docs/modules/geoedgeRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : geoedgeRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/gpt-pre-auction.md b/dev-docs/modules/gpt-pre-auction.md index a701cc8796..504b648e59 100644 --- a/dev-docs/modules/gpt-pre-auction.md +++ b/dev-docs/modules/gpt-pre-auction.md @@ -2,10 +2,12 @@ layout: page_v2 page_type: module title: Module - GPT Pre-Auction -description: Adds PB Ad Slot and matching GAM ad unit name to each ad unit's first-party data before bid requests are sent to the adapters +description: If you run GAM, this module generates the 'global placement id' that's becoming required for successful auctions. module_code : gptPreAuction display_name : GPT Pre-Auction enable_download : true +recommended: true +vendor_specific: true sidebarType : 1 --- @@ -22,9 +24,9 @@ This module enables targeting and tracking at the ad server adunit level. Enabled by default if compiled into your package, this module will add the [Prebid Ad Slot](/features/pbAdSlot.html) and matching GAM ad unit name to each ad unit's first-party data before bid requests are sent to the adapters. * **Prebid.js Adapters** - will be able to utilize these values as: - * AdUnit.ortb2imp.ext.data.adserver.name="gam" - * AdUnit.ortb2imp.ext.data.adserver.adslot="/1111/home" - * AdUnit.ortb2imp.ext.data.pbadslot="/1111/home-left" + * AdUnit.ortb2Imp.ext.data.adserver.name="gam" + * AdUnit.ortb2Imp.ext.data.adserver.adslot="/1111/home" + * AdUnit.ortb2Imp.ext.data.pbadslot="/1111/home-left" * **Prebid Server Adapters** - will see the OpenRTB as: * imp[].ext.data.adserver.name * imp[].ext.data.adserver.adslot @@ -38,10 +40,14 @@ into the Prebid.js package. Optional initialization parameters: -- enabled (on by default) -- customGptSlotMatching function -- customPbAdSlot function +{: .table .table-bordered .table-striped } +| Param | Required? | Type | Description | Example | +| enabled | no | boolean | allows turning off of module. Default value is true | true | +| customGptSlotMatching | no | function | GPT slot matching function should match the customSlotMatching function sent to [setTargetingForGptAsync](/dev-docs/publisher-api-reference/setTargetingForGPTAsync.html) | | +| customPbAdSlot | no | function | Custom PB AdSlot function | | +| mcmEnabled | no | boolean | Removes extra network IDs when Multiple Customer Management is active. Default is false. | true | +For example: ``` pbjs.setConfig({ gptPreAuction: { @@ -53,7 +59,8 @@ pbjs.setConfig({ customGptSlotMatching: function(gptSlotObj) { ... return true; // or false - } + }, + mcmEnabled: true } }); ``` @@ -67,13 +74,13 @@ When this module is on, it uses the BEFORE_REQUEST_BIDS event to insert function If GPT slot matching succeeds: -- it sets the Adunit ortb2imp.ext.data.adserver.name to 'gam' -- it copies the resulting GPT slot name to ortb2imp.ext.data.adserver.adslot +- it sets the Adunit ortb2Imp.ext.data.adserver.name to 'gam' +- it copies the resulting GPT slot name to ortb2Imp.ext.data.adserver.adslot -The customPbAdSlot function is called if it was specified, writing the results to ortb2imp.ext.data.pbadslot. -If there's no customPbAdSlot, a default algorithm is used to determine ortb2imp.ext.data.pbadslot: +The customPbAdSlot function is called if it was specified, writing the results to ortb2Imp.ext.data.pbadslot. +If there's no customPbAdSlot, a default algorithm is used to determine ortb2Imp.ext.data.pbadslot: -- first use the AdUnit's ortb2imp.ext.data.pbadslot if defined +- first use the AdUnit's ortb2Imp.ext.data.pbadslot if defined - else, see if the AdUnit.code corresponds to a div and if so, try to retrieve a data element from the div called data-adslotid. - else if the GPT slot matching succeeded, use the GPT slot name - else, just use the AdUnit.code, assuming that that's the ad unit slot diff --git a/dev-docs/modules/haloRtdProvider.md b/dev-docs/modules/haloRtdProvider.md index 3f36b19946..6e9be1b0d5 100644 --- a/dev-docs/modules/haloRtdProvider.md +++ b/dev-docs/modules/haloRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : haloRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- @@ -16,21 +17,24 @@ sidebarType : 1 * TOC {:toc} -Audigent is a next-generation data management platform and a first-of-a-kind -"data agency" containing some of the most exclusive content-consuming audiences -across desktop, mobile and social platforms. - -This real-time data module provides an integrated post-cookie Halo identity and -real-time user segmentation solution that seamlessly integrates into your bid -request cycle. Users are identified and bid request objects are augmented -with first-party data derived segments prior to being sent to exchange/ssp -services in order to optimize targeting and increase publisher revenue. - -Audigent maintains a large database of first-party Tradedesk Unified ID, -Audigent Halo ID and other id provider mappings to various third-party segment -types that are utilizable across different backends. With the Halo RTD module, -these segments and other data can be retrieved and utilized by supporting -exchange and SSP backends in real-time during your bid request cycle. +Audigent is a next-generation, first-party data management platform and the +world’s first "data agency", powering the programmatic landscape and DTC +eCommerce with actionable first-party audience and contextual data from +retailers, lifestyle publishers, content creators, athletes and artists. + +The Halo real-time data module in Prebid has been built so publishers +can maximize the power of their first-party audiences and contextual data. +This module provides both an integrated cookieless Halo identity, contextual +targeting and audience segmentation solution that seamlessly and easily +integrates into your existing Prebid deployment. + +Users, devices, content, cohorts and other features are identified and utilized +to augment every bid request with targeted, first-party data-derived segments +before being submitted to supply-side platforms. Enriching the bid request with +robust first-party audience and contextual data, Audigent's Halo RTD module +helps optimize targeting and header-bidding performance. For more information, +please visit https://audigent.com or contact our Prebid integration team at +prebid@audigent.com. ## Publisher Usage diff --git a/dev-docs/modules/iabCatagoryTranslation.md b/dev-docs/modules/iabCatagoryTranslation.md deleted file mode 100644 index 7831fbd198..0000000000 --- a/dev-docs/modules/iabCatagoryTranslation.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -layout: page_v2 -page_type: module -title: Module - IAB Category Translation -description: Converts between ad agency brand categories and IAB brand categories. -module_code : CategoryTranslation -display_name : CategoryTranslation -enable_download : true -sidebarType : 1 ---- - -# IAB Category Translation - -{:.no_toc} - -This module converts the IAB sub category to FreeWheel industry group identifiers. The FreeWheel identifiers ensure competitve separation of industries and products. - -Each bid request must return one [IAB subcategory](https://support.aerserv.com/hc/en-us/articles/207148516-List-of-IAB-Categories). - -The module provides the following: - -- Converts IAB subcategories to a FreewWheel industry group identifier. - -## How to use the module: - -1. A Prebid.js package is built that contains this module and the [FreeWheel](/dev-docs/modules/freewheel.html) module. -2. The inclusion of this module causes Prebid to download a mapping file to local storage. The user also has the option to provide their own mapping file. -3. At runtime, brand category translation happens as needed. - - -## Using A Custom Map File -The IAB Category Translation module uses a default mapping file to convert adserver categories to IAB sub categories. If a publisher prefers to use their own mapping file they will need to set the URL location of that file. They can do so by adding the following to their Prebid.js configuration: - -``` -pbjs.setConfig({ - "brandCategoryTranslation": { - "translationFile": "" - } -}); -``` - -This file will be stored locally to expedite the conversion process. If a publisher opts to not provide a conversion mapping file Prebid will use its default conversion mapping file. - -Publishers should ensure that the JSON returned from their custom file is valid for Prebid by adhering to the following structure: - -```JSON -{ - “mapping”: { - ““: { - “id”: ““, - “name”: “” - }, - .... - } -} -``` - -Refer to Prebid Github repository for a [custom file reference](https://github.com/prebid/category-mapping-file). - - -## Further Reading - -[Prebid.js](/dev-docs/getting-started.html) -[Prebid Video](/prebid-video/video-overview.html) -[FreeWheel Module](/dev-docs/modules/freewheel.html) -[Adapter Integration](/dev-docs/bidder-adaptor.html) - - - - - - - diff --git a/dev-docs/modules/iasRtdProvider.md b/dev-docs/modules/iasRtdProvider.md index b1585553a1..99dae5c16a 100644 --- a/dev-docs/modules/iasRtdProvider.md +++ b/dev-docs/modules/iasRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : iasRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/idLibrary.md b/dev-docs/modules/idLibrary.md index 306b877158..5874353f8e 100644 --- a/dev-docs/modules/idLibrary.md +++ b/dev-docs/modules/idLibrary.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: ID Import Library -description: ID Graphing Adapter +description: Retrieve user ids deployed on your site, and return them to a configurable endpoint for ID Graphing. module_code : currency display_name : ID Import Library enable_download : true diff --git a/dev-docs/modules/index.md b/dev-docs/modules/index.md index 7721060433..4b62546f54 100644 --- a/dev-docs/modules/index.md +++ b/dev-docs/modules/index.md @@ -1,6 +1,6 @@ --- layout: page_v2 -title: Prebid Modules +title: Prebid.js Modules description: Module Documentation sidebarType: 1 --- @@ -8,94 +8,89 @@ sidebarType: 1 # Prebid.js Module Overview {:.no_toc} -The core of Prebid.js contains only the foundational code needed for header bidding. Any functionality that could be considered an add-on or that covers a special case is being moved out into modules. Examples of this kind of code include: +The core of Prebid.js contains only the foundational code needed for header bidding. Any functionality that could be considered an add-on is part of a module. These are the major categories: -- Bidder adapters -- Special auction logic -- Ad server API integrations -- Any other extensible functionality - -This section of the site contains user-submitted module documentation. We're hoping that it will grow over time. - -To see all of the modules that are available, see the [`modules` folder in the repo](https://github.com/prebid/Prebid.js/tree/master/modules). - -If you are looking for bidder adapter parameters, see [Bidders' Params]({{site.baseurl}}/dev-docs/bidders.html). +- [Bidder adapters](/dev-docs/bidders.html) +- [Analytics adapters](/overview/analytics.html) +- Any other extensible functionality - documented on this page * TOC {:toc} -## General Modules - -{: .table .table-bordered .table-striped } -| Module | Description | -|---------------------+--------------| -| [**Currency**](/dev-docs/modules/currency.html) | Converts bid currency into ad server currency based on data in a supplied exchange rate file. | -| **ConsentManagement** | Collecting and passing consent information in support of privacy regulations:{::nomarkdown}{:/} See [CMP Best Practices.](/dev-docs/cmp-best-practices.html) | -| [**Google Ad Manager Express**](/dev-docs/modules/dfp_express.html) | A simplified installation mechanism for publishers that have Google Publisher Tag (GPT) ad calls in their pages. | -| [**Supply Chain Object**](/dev-docs/modules/schain.html) | Validates and makes the Supply Object available to bidders | -| [**User ID**](/dev-docs/modules/userId.html) | Sub-modules are available to support a range of identification approaches. | -| [**ID Import Library**](/dev-docs/modules/idLibrary.html) | Retrieve user ids deployed on your site, and return them to a configurable endpoint for ID Graphing | -| [**Advanced Size Mapping**](/dev-docs/modules/sizeMappingV2.html) | Display Responsive AdUnits in demanding page environments. | -| [**Price Floors Module**](/dev-docs/modules/floors.html) | Configure and enforce minimum bids. | -| [**GPT Pre-Auction Module**](/dev-docs/modules/gpt-pre-auction.html) | Adds a PB Ad Slot and matching GAM ad unit name to each ad unit's first-party data before bid requests are sent to the adapters. | -| [**ID Import Library**](/dev-docs/modules/idLibrary.html) | Retrieve user ids deployed on your site, and return them to a configurable endpoint for ID Graphing | -| [**First Party Data Enrichment**](/dev-docs/modules/enrichmentFpdModule.html) | Pulls well-known FPD from the environment to form a base of data available to all adapters. | -| [**MASS**](/dev-docs/modules/mass.html) | Enables the MASS protocol for Prebid and custom renderers by DealID | -| [**MultiBid Module**](/dev-docs/modules/multibid.html) | Allows bidders to send multiple bids to the ad server. | -| [**Bid Viewability**](/dev-docs/modules/bidViewable.html) | Triggers an event which can be consumed by analytics and bid adapters. | +{% assign module_pages = site.pages | where: "page_type", "module" %} -## Real-Time Data Providers +## Recommended Modules -All of the modules that fall under the Real-Time Data (RTD) category conform to -a consistent set of publisher controls. The pub can choose to run multiple -RTD modules, define an overall amount of time they're willing to wait for -results, and even flag some of the modules as being more "important" -than others. +Prebid.org highly recommends that publishers utilize the following modules: +
    + + + + + + + + +{% for page in module_pages %}{% if page.recommended == true %} + + + + +{% endif %}{% endfor %} + +
    ModuleDescription
    {{page.display_name}}{{page.description}}
    -See [the realTimeData setConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-realTimeData) reference for more details. +## General Modules -{% assign module_pages = site.pages | where: "page_type", "module" | where: "module_type", "rtd" %} +Modules in the Real-Time Data (RTD) category conform to +a consistent set of publisher controls. The publisher can choose to run multiple +RTD modules, define an overall amount of time they're willing to wait for +results, and even flag some of the modules as being higher priority +than others. See [the realTimeData setConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-realTimeData) reference for more details. + -{% for page in module_pages %} - {% if page.enable_download == false %}{% continue %}{% endif %} +{% for page in module_pages %}{% if page.recommended == true or page.vendor_specific == true %}{% continue %}{% endif %} - + + {% if page.module_type == "rtd" %}{% else %}{% endif %} {% endfor %}
    Module DescriptionRTD?
    {{page.title}}{{page.display_name}} {{page.description}}yesno
    -## Video Modules - -{: .table .table-bordered .table-striped } -| Module | Description | -|---------------------+--------------| -| [**Ad Pod**](/dev-docs/modules/adpod.html) | Enables developers to add support for a new adserver that handles ad pod (long-form) videos | -| [**Freewheel**](/dev-docs/modules/freewheel.html) | Passes key value targeting to Freewheel SDK | -| [**Google Ad Manager Video**](/dev-docs/modules/dfp_video.html) | Required for serving instream video through Google Ad Manager. | -| [**IAB Category Translation**](/dev-docs/modules/categoryTranslation.html) | Converts IAB sub category to Ad server category for long-form videos. | -| [**Instream Video Ads Tracking**](/dev-docs/modules/instreamTracking.html) | Allow Analytics Adapters and Bid Adapters to track `BID_WON` events for Instream video bids. | -| [**Konduit Accelerate**](/dev-docs/modules/konduit.html) | Provides Real Time Start Rate Performance per Bidder. | - -## Testing and Debug Modules - -{: .table .table-bordered .table-striped } -| Module | Description | -|---------------------+--------------| -| [**Server-to-Server Testing**](/dev-docs/modules/s2sTesting.html) | Adds A/B test support to ease into server-side header bidding. | -| [**First Party Data Validation**](/dev-docs/modules/validationFpdModule.html) | Verify First Party Data ortb2 fields and data types. | +## Vendor-Specific Modules +These modules may require accounts with a service provider. + + + + + + + + + +{% for page in module_pages %}{% if page.recommended == true %}{% continue %}{% endif %}{% if page.vendor_specific == true %} + + + + {% if page.module_type == "rtd" %}{% else %}{% endif %} + +{% endif %}{% endfor %} + +
    ModuleDescriptionRTD?
    {{page.display_name}}{{page.description}}yesno
    ## Further Reading + [Source code of all modules](https://github.com/prebid/Prebid.js/tree/master/modules) -+ [Bidders' Params](/dev-docs/bidders.html) ++ [How to add a Bid Adapter](/dev-docs/bidder-adaptor.html) ++ [How to add an Analytics Adapter](/dev-docs/integrate-with-the-prebid-analytics-api.html) + [How to add a Real Time Data Submodule](/dev-docs/add-rtd-submodule.html) diff --git a/dev-docs/modules/instreamTracking.md b/dev-docs/modules/instreamTracking.md index 4e3d18255e..1e2c16f128 100644 --- a/dev-docs/modules/instreamTracking.md +++ b/dev-docs/modules/instreamTracking.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Instream Video Ads Tracking -description: Allows to track `BID WON` events for instream ad units +description: Allow Analytics Adapters and Bid Adapters to track `BID_WON` events for instream video bids. module_code : instreamTracking display_name : Instream Tracking enable_download : true diff --git a/dev-docs/modules/jwplayerRtdProvider.md b/dev-docs/modules/jwplayerRtdProvider.md index 66b4fc3024..2950e4fceb 100644 --- a/dev-docs/modules/jwplayerRtdProvider.md +++ b/dev-docs/modules/jwplayerRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : jwplayerRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/konduit.md b/dev-docs/modules/konduit.md index 7623ae7aa2..f9bb831eea 100644 --- a/dev-docs/modules/konduit.md +++ b/dev-docs/modules/konduit.md @@ -2,10 +2,11 @@ layout: page_v2 page_type: module title: Module - Konduit Accelerate -description: Applies Konduit video ad acceleration optimization to a provided bid. +description: Applies Konduit video ad acceleration optimization to wining video bid. module_code : konduitWrapper display_name : Konduit Accelerate enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/mass.md b/dev-docs/modules/mass.md index d447773ca3..019e5c58b6 100644 --- a/dev-docs/modules/mass.md +++ b/dev-docs/modules/mass.md @@ -2,9 +2,9 @@ layout: page_v2 page_type: module title: Module - MASS -description: Enable MASS protocol for Prebid +description: General deal rendering functionality. module_code : mass -display_name : MASS +display_name : Deal Rendering (aka MASS) enable_download : true sidebarType : 1 --- @@ -139,16 +139,46 @@ pbjs.que.push(function() { ## Integration Example +There are two options to view the integration example: + +### Option 1 - Your own development environment To view the integration example: -1) in your cli run: +1) Build Prebid using the following required options + +``` +gulp build --modules=ixBidAdapter,mass +``` + +2) Use a http server with a valid hostname to access its content. It is not advised to run the bid simulation using localhost or 127.0.0.1 ``` -gulp serve --modules=ixBidAdapter,mass +http://hostname/integrationExamples/mass/index.html ``` -2) in your browser, navigate to: +### Option 2 - Hosted online +Mass Platform Limited hosts an official integration and demo page that can be accessed using the following link: http://demo.massplatform.com/ix/prebid/ + +## Testing MASS +Testing requires valid bids to be returned to Prebid. To assist with this process, we recommend you use the MASS Bid Simulation tool found at https://github.com/massplatform/bidsim. Your Exchange partner might be able to assist you with other specialist tools and browser plugins to achieve similar resuls. +The instructions below assume that you have followed the installation instructions for the MASS Bidsim tool found at https://github.com/massplatform/bidsim/blob/master/README.md. + +### Testing using MASS compliant tags +The bidsim tool ships with working DSP example tags that can be found under the bidsim/tags folder. + +A quick way to test the Integration test page in combination with the official bootloader is to use the following command: +``` +node bidsim --inject --bid 2000 --width 300 --height 250 --dealid 'MASS' --tag "tags/inskin-housead-desktop.js" -o https://demo.massplatform.net/ix/prebid ``` -http://localhost:9999/integrationExamples/mass/index.html +### For third-party technology companies +Third-parties that wish to integrate with the official MASS bootloader can get started by running the following command: ``` +node bidsim --inject --bid 2000 --width 300 --height 250 --dealid 'MASS' --tag "tags/test.js" -o https://demo.massplatform.net/ix/prebid +``` + +Explanation: The tags/test.js tag calls a reference endpoint for developers that can be accessed here: https://demo.massplatform.net/reference/endpoint.js. +When running the above command to invoke this reference endpoint, you will see all the params that MASS collected and passed onto your endpoint. This includes inputs, parsed inputs, tag parameters and MASS/Provider specific configurations. + +### Testing on live sites +Any sites that have been MASS configured will work with the Bidsim tool. This is a convenient way to test whether your publisher ad server and slot is correctly configured. diff --git a/dev-docs/modules/medianetRtdProvider.md b/dev-docs/modules/medianetRtdProvider.md index b80a3aa501..fac7f1cf1c 100644 --- a/dev-docs/modules/medianetRtdProvider.md +++ b/dev-docs/modules/medianetRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : medianetRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/multibid.md b/dev-docs/modules/multibid.md index 49f04d8786..e9ae46f0cc 100644 --- a/dev-docs/modules/multibid.md +++ b/dev-docs/modules/multibid.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - MultiBid -description: Allows bidders to return more than one bid response +description: Allows bidders to send multiple bids to the ad server. module_code : multibid display_name : MultiBid enable_download : true diff --git a/dev-docs/modules/optimeraRtdProvider.md b/dev-docs/modules/optimeraRtdProvider.md index 19fdfb4b89..351febd353 100644 --- a/dev-docs/modules/optimeraRtdProvider.md +++ b/dev-docs/modules/optimeraRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : optimeraRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- diff --git a/dev-docs/modules/permutiveRtdProvider.md b/dev-docs/modules/permutiveRtdProvider.md new file mode 100644 index 0000000000..0983fe4d8a --- /dev/null +++ b/dev-docs/modules/permutiveRtdProvider.md @@ -0,0 +1,76 @@ +--- +layout: page_v2 +title: Permutive Real Time Data Provider +display_name: Permutive Real Time Data Module +description: Permutive Real Time Data Module +page_type: module +module_type: rtd +module_code : permutiveRtdProvider +enable_download : true +vendor_specific: true +sidebarType : 1 +--- + +# Permutive RTD Provider +{:.no_toc} + +* TOC +{:toc} + +## Overview +This module reads cohorts from Permutive and attaches them as targeting keys to bid requests. + +## Usage +Compile the Permutive RTD module into your Prebid build: +``` +gulp build --modules=rtdModule,permutiveRtdProvider +``` + +> Note that the global RTD module, `rtdModule`, is a prerequisite of the Permutive RTD module. + +You then need to enable the Permutive RTD in your Prebid configuration, using the below format: + +```javascript +pbjs.setConfig({ + ..., + realTimeData: { + auctionDelay: 50, // optional auction delay + dataProviders: [{ + name: 'permutive', + waitForIt: true, // should be true if there's an `auctionDelay` + params: { + acBidders: ['appnexus'] + } + }] + }, + ... +}) +``` + +## Supported Bidders +The Permutive RTD module sets Audience Connector cohorts as bidder-specific `ortb2.user.data` first-party data, following the Prebid `ortb2` convention, for any bidder included in `acBidders`. The module also supports bidder-specific data locations per ad unit (custom parameters) for the below bidders: + +{: .table .table-bordered .table-striped } +| Bidder | ID | Custom Cohorts | Audience Connector | +| ----------- | ---------- | -------------------- | ------------------ | +| Xandr | `appnexus` | Yes | Yes | +| Magnite | `rubicon` | Yes | No | +| Ozone | `ozone` | No | Yes | + +Key-values details for custom parameters: +* **Custom Cohorts:** The module configuration will automatically reflect the SSP integrations (_Activations_) you have enabled in your Permutive dashboard. Any additional bidders you want to pass data to will need to be configured. Permutive cohorts will be sent in the permutive key-value. + +* **Audience Connector:** You'll need to define which bidders should receive Audience Connector cohorts. You need to include the `ID` of any bidder in the `acBidders` array. Audience Connector cohorts will be sent in the `p_standard` key-value. + + +## Parameters + +{: .table .table-bordered .table-striped } +| Name | Type | Description | Default | +| ----------------- | -------------------- | ------------------ | ------------------ | +| name | String | This should always be `permutive` | - | +| waitForIt | Boolean | Should be `true` if there's an `auctionDelay` defined (optional) | `false` | +| params | Object | | - | +| params.acBidders | String[] | An array of bidders which should receive Audience Connector cohorts. | `[]` | +| params.maxSegs | Integer | Maximum number of cohorts to be included in either the `permutive` or `p_standard` key-value. | `500` | + diff --git a/dev-docs/modules/pubCommonId.md b/dev-docs/modules/pubCommonId.md index 7e42c44ade..455e89bb38 100644 --- a/dev-docs/modules/pubCommonId.md +++ b/dev-docs/modules/pubCommonId.md @@ -4,7 +4,7 @@ page_type: module title: Module - Publisher Common ID description: User ID persisted in first party domain module_code : pubCommonId -display_name : Publisher Common ID +display_name : Publisher Common ID (deprecated) enable_download : true sidebarType : 1 --- diff --git a/dev-docs/modules/reconciliationRtdProvider.md b/dev-docs/modules/reconciliationRtdProvider.md index da9da39642..47ff52d92e 100644 --- a/dev-docs/modules/reconciliationRtdProvider.md +++ b/dev-docs/modules/reconciliationRtdProvider.md @@ -5,8 +5,9 @@ description: Reconciliation Real Time Data Module page_type: module module_type: rtd module_code: reconciliationRtdProvider -display_name: Reconciliation +display_name: Reconciliation Supply Chain Validation enable_download: true +vendor_specific: true sidebarType: 1 --- diff --git a/dev-docs/modules/schain.md b/dev-docs/modules/schain.md index 77934e227c..4534f4840b 100644 --- a/dev-docs/modules/schain.md +++ b/dev-docs/modules/schain.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Supply Chain Object -description: Validates Supply Chain object and makes it available to bidder +description: Validates the Supply Chain object and makes it available to bidders. module_code : schain display_name : Supply Chain Object enable_download : true diff --git a/dev-docs/modules/sirdataRtdProvider.md b/dev-docs/modules/sirdataRtdProvider.md index 419c8f0876..68a07237f2 100644 --- a/dev-docs/modules/sirdataRtdProvider.md +++ b/dev-docs/modules/sirdataRtdProvider.md @@ -7,6 +7,7 @@ page_type: module module_type: rtd module_code : sirdataRtdProvider enable_download : true +vendor_specific: true sidebarType : 1 --- @@ -195,4 +196,4 @@ To view an example of available segments returned by Sirdata's backends: and then point your browser at: -`http://localhost:9999/integrationExamples/gpt/sirdataRtdProvider_example.html` \ No newline at end of file +`http://localhost:9999/integrationExamples/gpt/sirdataRtdProvider_example.html` diff --git a/dev-docs/modules/sizeMappingV2.md b/dev-docs/modules/sizeMappingV2.md index e51406e929..7583b4bb5d 100644 --- a/dev-docs/modules/sizeMappingV2.md +++ b/dev-docs/modules/sizeMappingV2.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - Size Mapping -description: Display Conditional and Responsive Ad Units +description: Display Responsive AdUnits in demanding page environments. module_code: sizeMappingV2 display_name: Advanced Size Mapping enable_download: true diff --git a/dev-docs/modules/timeoutRtdProvider.md b/dev-docs/modules/timeoutRtdProvider.md new file mode 100644 index 0000000000..7c22f6cec0 --- /dev/null +++ b/dev-docs/modules/timeoutRtdProvider.md @@ -0,0 +1,153 @@ +--- +layout: page_v2 +title: Timeout Rtd Module +display_name: Timeout RTD +description: Module for managing timeouts in real time +page_type: module +module_type: rtd +module_code : timeoutRtdProvider +enable_download : true +sidebarType : 1 +--- + +## Overview +The timeout RTD module enables publishers to set rules that determine the timeout based on +certain features. It supports rules dynamically retrieved from a timeout provider as well as rules +set directly via configuration. +Build the timeout RTD module into the Prebid.js package with: +``` +gulp build --modules=timeoutRtdProvider,rtdModule... +``` + +## Configuration +The module is configured in the realTimeData.dataProviders object. The module will override +`bidderTimeout` in the pbjs config. + +### Timeout Data Provider interface +The timeout RTD module provides an interface of dynamically fetching timeout rules from +a data provider just before the auction begins. The endpoint url is set in the config just as in +the example below, and the timeout data will be used when making bid requests. + +``` +pbjs.setConfig({ + ... + "realTimeData": { + "dataProviders": [{ + "name": 'timeout', + "params": { + "endpoint": { + "url": "http://{cdn-link}.json" + } + } + } + ]}, + + // This value below will be modified by the timeout RTD module if it successfully + // fetches the timeout data. + "bidderTimeout": 1500, + ... +}); +``` + +Sample Endpoint Response: +``` +{ + "rules": { + "includesVideo": { + "true": 200, + "false": 50 + }, + "numAdUnits" : { + "1-5": 100, + "6-10": 200, + "11-15": 300 + }, + "deviceType": { + "2": 50, + "4": 100, + "5": 200 + }, + "connectionSpeed": { + "slow": 200, + "medium": 100, + "fast": 50, + "unknown": 10 + }, +} +``` + +### Rule Handling: +The rules retrieved from the endpoint will be used to add time to the `bidderTimeout` based on certain features such as +the user's deviceType, connection speed, etc. These rules can also be configured statically on page via a `rules` object. +Note that the timeout Module will ignore the static rules if an endpoint url is provided. The timeout rules follow the +format: +``` +{ + '': { + '': + } +} +``` +See bottom of page for examples. + +Currently supported features: + +|Name |Description | Keys | Example +| :------------ | :------------ | :------------ |:------------ | +| includesVideo | Adds time to the timeout based on whether there is a video ad unit in the auction or not | 'true'/'false'| { "true": 200, "false": 50 } | +| numAdUnits | Adds time based on the number of ad units. Ranges in the format `'lowerbound-upperbound` are accepted. This range is inclusive | numbers or number ranges | {"1": 50, "2-5": 100, "6-10": 200} | +| deviceType | Adds time based on device type| 2, 4, or 5| {"2": 50, "4": 100} | +| connectionSpeed | Adds time based on connection speed. `connectionSpeed` defaults to 'unknown' if connection speed cannot be determined | slow, medium, fast, or unknown | { "slow": 200} | + +If there are multiple rules set, all of them would be used and any that apply will be added to the base timeout. For example, if the rules object contains: +``` +{ + "includesVideo": { + "true": 200, + "false": 50 + }, + "numAdUnits" : { + "1-3": 100, + "4-5": 200 + } +} +``` +and there are 3 ad units in the auction, all of which are banner, then the timeout to be added will be 150 milliseconds (50 for `includesVideo[false]` + 100 for `numAdUnits['1-3']`). + +Full example: +``` +pbjs.setConfig({ + ... + "realTimeData": { + "dataProviders": [{ + "name": 'timeout', + "params": { + "rules": { + "includesVideo": { + "true": 200, + "false": 50 + }, + "numAdUnits" : { + "1-5": 100, + "6-10": 200, + "11-15": 300 + }, + "deviceType": { + "2": 50, + "4": 100, + "5": 200 + }, + "connectionSpeed": { + "slow": 200, + "medium": 100, + "fast": 50, + "unknown": 10 + } + } + } + ]} + } + ... + // The timeout RTD module will add time to `bidderTimeout` based on the rules set above. + "bidderTimeout": 1500, +``` diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 2c4cfd2e42..c24b455483 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - User ID -description: Supports multiple cross-vendor user IDs +description: Vendor-specific user ID sub-modules are available to support a range of identification approaches. module_code : userId display_name : User ID enable_download : false @@ -72,7 +72,7 @@ of sub-objects. The table below has the options that are common across ID system {: .table .table-bordered .table-striped } | Param under userSync.userIds[] | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | -| name | Required | String | May be: `"admixerId"`,`"akamaiDAPId"`, `"amxId"`, `"britepoolId"`, `"criteo"`, `"fabrickId"`, `"flocId"`, `"haloId"`, `"id5id"`, `identityLink`, `"idx"`, `"intentIqId"`, `"liveIntentId"`, `"lotamePanoramaId"`, `"merkleId"`, `"mwOpenLinkId"`, `"netId"`, `"novatiqId"`, `"parrableId"`, `"quantcastId"`, `"pubProvidedId"`, `"sharedId"`, `"tapadId"`, `"unifiedId"`,`"uid2"`, `"verizonMediaId"`, `"zeotapIdPlus"` | `"unifiedId"` +| name | Required | String | May be: `"admixerId"`, `"adtelligentId"`, `"akamaiDAPId"`, `"amxId"`, `"britepoolId"`, `"criteo"`, `"fabrickId"`, `"flocId"`, `"haloId"`, `"id5id"`, `identityLink`, `"idx"`, `"intentIqId"`, `"liveIntentId"`, `"lotamePanoramaId"`, `"merkleId"`, `"naveggId"`, `"mwOpenLinkId"`, `"netId"`, `"novatiqId"`, `"parrableId"`, `"quantcastId"`, `"pubProvidedId"`, `"sharedId"`, `"tapadId"`, `"unifiedId"`,`"uid2"`, `"verizonMediaId"`, `"zeotapIdPlus"` | `"unifiedId"` | params | Based on User ID sub-module | Object | | | | bidders | Optional | Array of Strings | An array of bidder codes to which this user ID may be sent. | `['bidderA', 'bidderB']` | | storage | Optional | Object | The publisher can specify some kind of local storage in which to store the results of the call to get the user ID. This can be either cookie or HTML5 storage. This is not needed when `value` is specified or the ID system is managing its own storage | | @@ -228,6 +228,49 @@ gulp build --modules=admixerIdSystem }); {% endhighlight %} +### Adtelligent + +The [Adtelligent](https://adtelligent.com) ID system is a unique per-session user identifier for providing high quality DMP data for advertisers + +Add it to your Prebid.js package with: + +{: .alert.alert-info :} +gulp build --modules=userId,adtelligentIdSystem + +#### Adtelligent Configuration + +adtelligentIdSystem adapter doesn't require any configuration or storage params. The adapter performs asynchronously and to achieve better performance it is recommended to set the `storage` object `refreshInSeconds` to a short period, such as ten minutes. At the end of the set storage refresh the adapter will refresh its configuration. + +#### Adtelligent Example + +{% highlight javascript %} + pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'adtelligent' + }] + } + }); +{% endhighlight %} + +Example with a short storage for ~10 minutes and refresh in 5 minutes: + +{% highlight javascript %} + pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'adtelligent', + storage: { + type: "html5", + name: "adt_id", + expires:0.003, + refreshInSeconds: 60 * 5 + } + }] + } + }); +{% endhighlight %} + ### AMX RTB ID The AMX RTB ID is a first-party identifier designed for publishers using the AMX RTB adapter. For more information please contact [prebid@amxrtb.com](prebid@amxrtb.com) @@ -594,13 +637,21 @@ pbjs.setConfig({ }); ``` -The `request.userId.haloId` will contain the Audigent HaloId and associated segments: +The `request.userId.haloId` will contain the Audigent HaloId: ``` { - "haloId": "user-halo-id", - "auSeg": ["segment1", "segment2"] + "haloId": "0201chpvai07jv2yg08xizqr0bwpa1w0evvmq014d2ykn0b5oe" } ``` +The following configuration parameters are available: + +{: .table .table-bordered .table-striped } +| Param under usersync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | ID value for the HaloID module - `"haloId"` | `"haloId"` | +| params | Optional | Object | Used to store params for the HaloId system | +| params.url | Optional | String | Set an alternate GET url for HaloId with this parameter | +| params.urlArg | Optional | Object | Optional url parameter for params.url | ### ID+ @@ -741,6 +792,46 @@ pbjs.setConfig({ }); {% endhighlight %} +### IM-UID by Intimate Merger + +IM-UID, provided by [Intimate Merger](https://corp.intimatemerger.com/), is a universal identifier that designed for publishers, platforms and advertisers to perform segmentation and targeting even in environments where 3rd party cookies are not available. IM-UID is currently only available in Japan. + +Add it to your Prebid.js package with: + +{: .alert.alert-info :} +gulp build --modules=imuIdSystem + +#### IM-UID Registration + +Please visit [https://lp.intimatemerger.com/im-uid](https://lp.intimatemerger.com/im-uid) and request your Customer ID to get started. + +The Intimate Merger privacy policy is at https://corp.intimatemerger.com/privacypolicy/ + +#### IM-UID Configuration + +{: .table .table-bordered .table-striped } +| Param under userSync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | The name of this module. | `"imuid"` | +| params | Required | Object | Details of module params. | | +| params.cid | Required | Number | This is the Customer ID value obtained via Intimate Merger. | `5126` | +| params.url | Optional | String | Use this to change the default endpoint URL. | `"https://example.com/some/api"` | + +#### IM-UID Example + +{% highlight javascript %} +pbjs.setConfig({ + userSync: { + userIds: [{ + name: "imuid", + params: { + cid: 5126 // Set your Intimate Merger Customer ID here for production + } + }] + } +}); +{% endhighlight %} + ### Intent IQ ID Intent IQ’s universal ID with its unparalleled coverage of over 80% of ad inventory, protects publishers’ ability to rely on advertising as their main revenue source while preserving user privacy in a third party cookieless world. @@ -854,6 +945,41 @@ pbjs.setConfig({ }); {% endhighlight %} +### Kinesso ID + +Kinesso ID solution is a new approach to persistent cross domain authentication. + +#### How it works + +The Kinesso identity solution creates a persistent cross domain authenticated user id that is then used to link users with their interest signals (commonly known as segments). The Kinesso user ID (knsso) is never broadcast into the bid stream. Instead it is sent to a server side data store, merged with accompanying data from the Prebid Id Library and shipped to Kinesso. All data is encrypted at rest and in transit so your identifiers are never stored or transmitted in an insecure manner. + +The Kinesso ID sub adapter sets two cookies, one as a third party cookie and the other as a first party cookie in the publisher's domain. These cookies are merged with the user's hashed email address (when present) server side and sent to Kinesso. The combined output looks like this: + +{: .table .table-bordered .table-striped } +| kpuid | knsso | hid | account_id | created on | +| --- | --- | --- | --- | --- | +| `` | `` | `` | `` | `` | + +Kinesso will then attach these users to deals ids that they will target in the ORTB bid stream by brands and agencies represented by IPG. + +Add it to your Prebid.js package with: + +{: .alert.alert-info :} +gulp build --modules=kinessoIdSystem + +#### Kinesso ID Registration + +You can set up Kinesso ID sub adapter by contacting Kinesso at prebid@kinesso.com + +The Kinesso ID privacy policy is covered under the [Kinesso Privacy Notice](https://kinesso.com/privacy-policy/). Please note, at present the Kinesso ID module is not meant for use inside the EEA. + +{: .table .table-bordered .table-striped } +| Param under userSync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | The name of this module. | `'kinessoId'` | +| params | Required | Object | Details for KinessoId initialization | | +| params.accountid | Required | Int | Your SSP Account Id | 123 | + ### LiveIntent nonID LiveIntent offers audience resolution by leveraging our next-generation identity solutions. The LiveIntent identity graph is built around a people-based set of data that is authenticated daily through active engagements with email newsletters and media across the web. The LiveIntent nonID is a user identifier tied to an active, encrypted email in our graph and functions in cookie-challenged environments and browsers. @@ -1098,6 +1224,24 @@ pbjs.setConfig({ }); {% endhighlight %} +### Navegg ID + +[Navegg](https://www.navegg.com) enables publishers, advertisers and agencies to use their own first party data together to activate media in a cookie-less way across several Ad Tech platforms. Navegg has one of the largest data networks in Latin America which also allows the enhancement of data with unique categories. + +#### Navegg ID Examples + +Publisher stores NaveggId in local storage and/or 1st party cookies + +{% highlight javascript %} +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'naveggId' + }] + } +}); +{% endhighlight %} + ### netID The [European netID Foundation (EnID)](https://developerzone.netid.de/index.html) aims to establish with the netID an independent European alternative in the digital market for Demand and Supply side. With the netID Single-Sign-On, the EnID established an open standard for consumer logins for services of Buyers and Brands, that also includes user-centric consent management capabilities that results in a standardized, EU-GDPR compliant, IAB TCF aware, cross-device enabled Advertising Identifier, which can be leveraged by publishers and advertisers (and vendors supporting them) to efficiently deliver targeted advertising through programmatic systems to already more than 38 million Europeans on mobile and desktop devices. @@ -1260,6 +1404,53 @@ pbjs.setConfig({ }); {% endhighlight %} +### Publisher Link +Publisher Link, provided by [Epsilon](https://www.epsilon.com/us), is a cross-device identity solution that activates publisher first-party, authenticated +data to improve audience identification and increase bid opportunities, specifically designed for sites with authenticated +traffic. Publisher first-party authenticated data and a user's unique encrypted ID is linked to an existing people-based +Epsilon CORE ID. By utilizing Publisher Link, publishers are able to reap the benefits of Epsilon's CORE ID. + +#### Publisher Link Registration +Please contact [Epsilon](mailto:PublisherSupport@Epsilon.com) to sign up. + +The Epsilon privacy is covered in the [Epsilon Privacy Policy](https://www.epsilon.com/us/privacy-policy). + +The Publisher Link opt-out is included [here](https://www.epsilon.com/privacy/dms/opt-out/email) + +#### Publisher Link Configuration + +In addition to the parameters documented above in the Basic Configuration section the following Publisher Link specific configuration is available: + +{: .table .table-bordered .table-striped } +| Param under userSync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | The name of this module. | `'publinkId'` | +| params | Required | Object | Customized parameters. | | +| params.e | Required | String | Hashed email address of the user. Supports MD5 and SHA256. | `'7D320454942620664D96EF78ED4E3A2A'` | +| params.site_id | Required | String | Site ID provided by Epsilon. | `'123456'` | +| params.api_key | Required | String | API key provided by Epsilon. | `'7ab62359-bdc0-4095-b573-ef474fb55d2'` + +#### Publisher Link Examples +```javascript + pbjs.setConfig({ + userSync: { + userIds: [{ + name: "publinkId", + storage: { + name: "pbjs_publink", + type: "cookie", + expires: 30 + }, + params: { + e: "7D320454942620664D96EF78ED4E3A2A", // example hashed email (md5) + site_id: "123456", + api_key: "7ab62359-bdc0-4095-b573-ef474fb55d2" + } + }] + } + }); +``` + ### RampID RampID, formerly known as IdentityLink, provided by [LiveRamp](https://liveramp.com) is a single person-based identifier which allows marketers, platforms and publishers to perform personalized segmentation, targeting and measurement use cases that require a consistent, cross-channel view of the user in anonymous spaces. @@ -1810,6 +2001,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | ID System Name | ID System Host | Prebid.js Attr: bidRequest.userId. | EID Source | Example Value | | --- | --- | --- | --- | --- | --- | --- | | Admixer ID | Admixer | admixerId | admixer.net | "1111" | +| Adtelligent ID | Adtelligent | bidRequest.userId.adtelligentId | `"1111"` | | Akamai DAP ID | Akamai DAP | dapId | akamai.com | "eyJhbGciOiJka....YIsj7"| | AMX RTB ID | AMX RTB | amxId | amxrtb.com | "3ca11058-..." | | BritePool ID | BritePool | britepoolid | britepool.com | "1111" | @@ -1823,10 +2015,12 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | ID5 ID | ID5 | id5id | id5-sync.com | {uid: "1111", ext: { linkType: 2, abTestingControlGroup: false } } | | IdentityLink | LiveRamp | idl_env | liveramp.com | "1111" | | Intent IQ ID | Intent IQ | intentiqid | intentiq.com | "1111" | +| Kinesso ID | Kinesso | kpuid | kpuid.com | "1111" | | LiveIntent ID | Live Intent | lipb.lipbid | liveintent.com | "1111" | | Lotame Panorama ID | Lotame | lotamePanoramaId | crwdcntrl.net | "e4b9..." | | MediaWallah OpenLink ID | MediaWallah | mwOpenLinkId | mediawallahscript.com | "1111" | | merkleID | Merkle | merkleId | merkleinc.com | "1111" | +| naveggId | Navegg | naveggId | navegg.com | "1111" | | netID | netID | netId | netid.de | "fH5A..." | | NextRoll ID | NextRoll | nextrollId | nextroll.com | "bf3Ka.../SjP/zpVGr09voA" | | Novatiq ID | Novatiq | novatiqId | novatiq.com | "1111" | diff --git a/dev-docs/modules/validationFpdModule.md b/dev-docs/modules/validationFpdModule.md index 00c3cae15a..571eb26f7f 100644 --- a/dev-docs/modules/validationFpdModule.md +++ b/dev-docs/modules/validationFpdModule.md @@ -2,7 +2,7 @@ layout: page_v2 page_type: module title: Module - First Party Data Validation -description: Validates First Party Data +description: Verify First Party Data fields and data types. Not recommended for production use. module_code : validationFpdModule display_name : First Party Data Validation enable_download : true diff --git a/dev-docs/modules/weboramaRtdProvider.md b/dev-docs/modules/weboramaRtdProvider.md new file mode 100644 index 0000000000..9fc5ec5e10 --- /dev/null +++ b/dev-docs/modules/weboramaRtdProvider.md @@ -0,0 +1,83 @@ +--- +layout: page_v2 +title: Weborama Real Time Data Provider +display_name: Weborama Real-time Segmentation Module +description: Weborama Real-time Segmentation Module +page_type: module +module_type: rtd +module_code : weboramaRtdProvider +enable_download : true +vendor_specific: true +sidebarType : 1 +--- + +# Weborama RTD Segmentation Module +{:.no_toc} + +* TOC +{:toc} + +Weborama provides a Semantic AI Contextual API that classifies in Real-time a web page seen by a web user within generic and custom topics. It enables publishers to better monetize their inventory and unlock it to programmatic. + +ORTB2 compliant and FPD support for Prebid versions < 4.29 + +Please contact prebid-support@weborama.com for more information. + +## Publisher Usage + +### Configure Prebid.js + +Compile the Weborama RTD module into your Prebid build: + +`gulp build --modules=rtdModule,weboramaRtdProvider` + +Add the Weborama RTD provider to your Prebid config. + + +#### Minimal configuration + +``` +pbjs.setConfig( + ... + realTimeData: { + auctionDelay: 1000, + dataProviders: [ + { + name: "weborama", + waitForIt: true, + params: { + weboCtxConf: { + token: "" + } + } + } + ] + } + ... +); +``` + +### Parameter Descriptions for the Weborama Configuration Section + +| Name |Type | Description | Notes | +| :------------ | :------------ | :------------ |:------------ | +| name | String | Real time data module name | Mandatory. Always 'Weborama' | +| waitForIt | Boolean | Mandatory. Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false but recommended to true | +| params | Object | | Optional | +| params.weboCtxConf | Object | Weborama Contextual Configuration | Optional | +| params.weboCtxConf.token | String | Security Token provided by Weborama, unique per client | Mandatory | +| params.weboCtxConf.targetURL | String | Url to be profiled in the contextual api | Optional. Defaults to `document.URL` | +| params.weboCtxConf.defaultProfile | Object | default value of the profile to be used when there are no response from contextual api (such as timeout)| Optional. Default is `{}` | +| params.weboCtxConf.setTargeting|Boolean|If true, will use the contextual profile to set the gam targeting of all adunits managed by prebid.js| Optional. Default is *true*.| +| params.weboCtxConf.setOrtb2|Boolean|If true, will use the contextual profile to set the ortb2 configuration on `site.ext.data`| Optional. Default is *false*.| + + +### Testing + +To view an example of available segments returned by Weborama's backends: + +`gulp serve --modules=rtdModule,weboramaRtdProvider,appnexusBidAdapter` + +and then point your browser at: + +`http://localhost:9999/integrationExamples/gpt/weboramaRtdProvider_example.html` diff --git a/dev-docs/pbs-bidders.md b/dev-docs/pbs-bidders.md index 491c6d70a2..d9b5ccee80 100644 --- a/dev-docs/pbs-bidders.md +++ b/dev-docs/pbs-bidders.md @@ -49,8 +49,9 @@ You can also download the full CSV | **User IDs** | {% if page.userIds and page.userIds != '' %}{{page.userIds}}{% else %}none{% endif %} | **USP/CCPA Support** | {% if page.usp_supported == true %}yes{% else %}no{% endif %} | | **Supply Chain Support** | {% if page.schain_supported == true %}yes{% else %}no{% endif %} | **COPPA Support** | {% if page.coppa_supported == true %}yes{% else %}no{% endif %} | | **Demand Chain Support** | {% if page.dchain_supported == true %}yes{% else %}no{% endif %} | **Safeframes OK** | {% if page.safeframes_ok and page.safeframes_ok == false %}no{% elsif page.safeframes_ok and page.safeframes_ok == true %}yes{% else %}check with bidder{% endif %} | -| **Supports Deals** | {% if page.bidder_supports_deals and page.bidder_supports_deals == false %}no{% else %}yes{% endif %} | **Prebid.js Adapter** | {% if page.pbjs == true %}yes{% else %}no{% endif %} | +| **Supports Deals** | {% if page.deals_supported and page.deals_supported == false %}no{% else %}yes{% endif %} | **Prebid.js Adapter** | {% if page.pbjs == true %}yes{% else %}no{% endif %} | | **Mobile App Support** | {% if page.pbs_app_supported and page.pbs_app_supported == false %}no{% elsif page.pbs_app_supported and page.pbs_app_supported == true %}yes{% else %}check with bidder{% endif %} | **Prebid Server Adapter** | yes | +| **Floors Support** | {% if page.floors_supported == false %}no{% elsif page.floors_supported == true %}yes{% else %}check with bidder{% endif %} | **First Party Data Support** | {% if page.fpd_supported == true %}yes{% elsif page.fpd_supported == false %}no{% else %}check with bidder{% endif %} |

    "Send All Bids" Ad Server Keys

    diff --git a/dev-docs/prebid-troubleshooting-guide.md b/dev-docs/prebid-troubleshooting-guide.md index a842461c37..70f4d1f22b 100644 --- a/dev-docs/prebid-troubleshooting-guide.md +++ b/dev-docs/prebid-troubleshooting-guide.md @@ -2,10 +2,6 @@ layout: page_v2 title: Prebid.js Troubleshooting Guide head_title: Prebid.js Troubleshooting Guide -description: How to troubleshoot Prebid.js from the perspective of an ad call from start to finish. -pid: 10 -top_nav_section: dev_docs -nav_section: troubleshooting sidebarType: 1 --- @@ -14,109 +10,4 @@ sidebarType: 1 # Prebid.js Troubleshooting Guide {:.no_toc} -{: .alert.alert-danger :} -Prebid.org does not support any version of Prebid.js prior to version 1.0. - -Use this guide to troubleshoot your Prebid.js integration. You can follow this guide sequentially to determine whether Prebid.js is working as intended on your website. It takes you through the ad call from start to finish. - -* TOC -{:toc} - -## Check Your Prebid Version - -The open source code in Prebid.js can change frequently. To see what version of Prebid.js you are using, open your browser console and type `pbjs.version;`. - -You can reference this against the changes listed in the [Prebid.js Release Notes](https://github.com/prebid/Prebid.js/releases). - -## Delay the Ad Server Call so Key-Values can be Set - -Make sure that you delay any calls to the ad server. This allows all of the key-values to be set before the auction in the ad server occurs. - -Within Google Ad Manager, this is achieved by adding the following code to your page. It should be called before any of the ad server code to make sure it runs first. - -{% highlight js %} -var googletag = googletag || {}; -googletag.cmd = googletag.cmd || []; -googletag.cmd.push(function() { - googletag.pubads().disableInitialLoad(); -}); -{% endhighlight %} - -## Check the Ad Units on the Page - -Make sure the ad units configured for Prebid.js match up with the ad units that have been set up in your ad server. - -You can review what ad units have been configured for Prebid by opening your browser console and typing `pbjs.getBidResponses();`. This will show a list of what div IDs are present: - -![pbjs.getBidResponses() showing ad units in browser console]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/ad-units.png "pbjs.getBidResponses() showing ad units in browser console"){: .pb-lg-img :} - -## List your Bids and Bidders - -Open your browser console and type `pbjs.getBidResponses();` to see a list of the ad units that have been configured. This also shows what bids have been returned from each of the bidder partners in chronological order as shown in the screenshot below. - -To see all of the winning bids, open your browser console and type [`pbjs.getAllWinningBids();`]({{site.baseurl}}/dev-docs/publisher-api-reference/getAllWinningBids.html). - -{: .alert.alert-danger :} -Keep in mind that any bid responses that come back after [the timeout you configured during setup]({{site.github.url}}/dev-docs/getting-started.html#set-the-ad-server-timeout) will not be sent to the ad server. - -{: .alert.alert-success :} -You can also [print this data to the console in table format]({{site.baseurl}}/dev-docs/troubleshooting-tips.html#see-all-bids-in-the-console) for easier reading. - -![pbjs.getBidResponses() in browser console]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/bids.png "pbjs.getBidResponses()"){: .pb-lg-img :} - -## Verify your Ad Server Targeting - -After the auction on page has occurred, Prebid.js will set key-value targeting for the ad server for those bids that have been returned before the [timeout you configured during setup]({{site.github.url}}/dev-docs/getting-started.html#set-the-ad-server-timeout). - -To see what values Prebid.js intends to send to the ad server, open your browser console and type `pbjs.getAdserverTargeting();` as shown below: - -![pbjs.getAdserverTargeting() in browser console]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/ad-server-target.png "pbjs.getAdserverTargeting()"){: .pb-lg-img :} - -{: .alert.alert-danger :} -Note that if no bids are returned, no key-values will be set. You may need to increase your timeout setting or reach out to your bidder partners to determine why no bid responses are being sent. - -## Check the Ad Server's Auction - -After the Prebid auction has occurred and key-values have been set for the ad server, the ad server will use the line items targeting those key-values within its auction. - -If you're using Google Ad Manager, you can verify this by using the [Google Publisher Console](https://support.google.com/dfp_sb/answer/2462712?hl=en), which can be accessed as follows: - -+ Open your browser's console and type `googletag.openConsole();` - -+ Append `googfc` as a query parameter to the URL. Then, click the *Delivery Diagnostics* option to reveal most of the information described below. - -To make sure your ad server is set up correctly, answer the following questions: - -+ **How many ads have been fetched for an ad unit?** Ideally, only 1 ad will be requested on page load. If not, check for unnecessary extra calls to the ad server in your page's source code. - - ![Google Publisher Console Ad fetch count]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/ad-server-1.png "Google Publisher Console Ad fetch count"){: .pb-sm-img :} - -+ **Are the key-values being set in the ad server?** If not, review your page's source code to ensure that the Prebid auction completes **before** sending the key-value targeting to the ad server. - - ![Google Ad Manager Delivery Troubleshooting]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/ad-server-2.png "Google Ad Manager Delivery Troubleshooting"){: .pb-lg-img :} - -+ **Has the ad server order been activated?** If not, you'll have to activate the order to see Prebid-delivered ads. - -+ **Are there other higher priority campaigns running within your ad server?** Higher priority campaigns will prevent Prebid ads with a higher CPM bid from winning in the ad server's auction. For testing purposes, you may want to pause these campaigns or have them excluded when the prebid key values are present. - -+ **Is there other remnant inventory in the ad server with a higher CPM that is winning?** To test for this, you may want to use a test creative set up within a bidder partner that has a high CPM or create artificial demand with a [bidCPMadjustment]({{site.github.url}}/dev-docs/publisher-api-reference/bidderSettings.html). - -+ **Have you set up all of the line items in the ad server to match the [setPriceGranularity setting]({{site.github.url}}/dev-docs/examples/custom-price-buckets.html) within Prebid.js?** All of the line items that correspond to your price granularity settings must be set up in your ad server. When there are gaps in the price granularity of your line item setup, bids will be reduced according to the size of the gap. For example, with [dense granularity]({{site.github.url}}/dev-docs/publisher-api-reference.html#dense-granularity), a $3.32 bid will be sent to the ad server as $3.30. - -## Look for the Winning Bid - -When a prebid line item wins the ad server's auction, a `renderAd` event will be logged in the browser console. To see this event, you need to do either of the following before the auction: - -+ Have typed `pbjs.logging=true` into your your browser console - -+ Appended `pbjs_debug=true` as a query parameter to the URL - -When this event is logged, it shows that Prebid.js has requested to render the ad from the winning bidder partner, and that this partner's bid has won both the Prebid and ad server auctions. - -![renderAd event in browser console]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/render-ad.png "renderAd event in browser console"){: .pb-lg-img :} - -## Related Topics - -+ [Developer Troubleshooting Tips]({{site.github.url}}/dev-docs/troubleshooting-tips.html) - -+ [Common Setup Issues]({{site.github.url}}/dev-docs/common-issues.html) +Moved to a new [Troubleshooting Guide](/troubleshooting/troubleshooting-guide.html) diff --git a/dev-docs/publisher-api-reference/getConfig.md b/dev-docs/publisher-api-reference/getConfig.md index 9ff5f12ff9..99ac02fd88 100644 --- a/dev-docs/publisher-api-reference/getConfig.md +++ b/dev-docs/publisher-api-reference/getConfig.md @@ -4,8 +4,9 @@ title: pbjs.getConfig([string]) description: --- +## Overview -The `getConfig` function is for retrieving the current configuration object or subscribing to configuration updates. When called with no parameters, the entire config object is returned. When called with a string parameter, a single configuration property matching that parameter is returned. +The `getConfig` function is used for retrieving the current configuration object or subscribing to configuration updates. When called with no parameters, the entire config object is returned. When called with a string parameter, a single configuration property matching that parameter is returned. Be careful with use of this function, as it returns a reference to the configuration instead of a clone. The readConfig function has been introduced for safer use. {% highlight js %} /* Get config object */ @@ -15,7 +16,10 @@ config.getConfig() config.getConfig('debug') {% endhighlight %} -The `getConfig` function also contains a 'subscribe' ability that adds a callback function to a set of listeners that are invoked whenever `setConfig` is called. The subscribed function will be passed the options object that was used in the `setConfig` call. Individual topics can be subscribed to by passing a string as the first parameter and a callback function as the second. For example: + +### Subscribe + +The `getConfig` function contains a `subscribe` feature that adds a callback function to a set of listeners that are invoked whenever `setConfig` is called. The `subscribed` function will be passed the `options` object that was used in the `setConfig` call. Individual topics can be subscribed to by passing a string as the first parameter and a callback function as the second. For example: {% highlight js %} @@ -31,4 +35,4 @@ unsubscribe(); // no longer listening {% endhighlight %} -
    \ No newline at end of file +
    diff --git a/dev-docs/publisher-api-reference/getEvents.md b/dev-docs/publisher-api-reference/getEvents.md index 5e67d3e491..fb1168f5fd 100644 --- a/dev-docs/publisher-api-reference/getEvents.md +++ b/dev-docs/publisher-api-reference/getEvents.md @@ -4,23 +4,19 @@ title: pbjs.getEvents() description: --- +The `getEvents` method returns a copy of all emitted events since the page loaded. -The methods `onEvent` and `offEvent` are provided for you to register -a callback to handle a Prebid.js event. +**Kind**: static method of `pbjs` -The `getEvents` method returns a copy of all emitted events. +**Args**: none -The optional `id` parameter provides more finely-grained event -callback registration. This makes it possible to register callback -events for a specific item in the event context. +**Returns**: `array of objects` -For example, `bidWon` events will accept an `id` for ad unit code. -`bidWon` callbacks registered with an ad unit code id will be called -when a bid for that ad unit code wins the auction. Without an `id` -this method registers the callback for every `bidWon` event. - -{: .alert.alert-info :} -Currently, `bidWon` is the only event that accepts the `id` parameter. +**Returned Object Params**: +- eventType (see table below) +- args (varies for each event type) +- id (only for bidWon, set to adUnit.code) +- elapsedTime The available events are: @@ -30,6 +26,7 @@ The available events are: | auctionInit | The auction has started | Object containing auction details | | auctionEnd | The auction has ended | Object containing auction details | | beforeRequestBids | Bids are about to be requested from adapters (added in 3.x) | Array of adunits in the auction | +| beforeBidderHttp | bidder network request is about be triggered | Array of Bid request objects | | bidRequested | A bid was requested from a specific bidder | Bid request object | | bidResponse | A bid response has arrived | Bid response object | | bidAdjustment | A bid was adjusted | Bid response object | @@ -44,71 +41,15 @@ The available events are: | bidderDone | A bidder has signaled they are done responding | Bid request object | | tcf2Enforcement | There was a TCF2 enforcement action taken | `{ storageBlocked: ['moduleA', 'moduleB'], biddersBlocked: ['moduleB'], analyticsBlocked: ['moduleC'] }` | -The examples below show how these events can be used. - -Events example 1 -{% highlight js %} - - /* Log when ad units are added to Prebid */ - pbjs.onEvent('addAdUnits', function() { - console.log('Ad units were added to Prebid.') - console.log(pbjs.adUnits); - }); - - /* Log when Prebid wins the ad server auction */ - pbjs.onEvent('bidWon', function(data) { - console.log(data.bidderCode+ ' won the ad server auction for ad unit ' +data.adUnitCode+ ' at ' +data.cpm+ ' CPM'); - }); - -{% endhighlight %} - -Events example 2: Use the optional 3rd parameter for the `bidWon` event -{% highlight js %} - /* This handler will be called only for rightAdUnit */ - /* Uses the `pbjs.offEvent` method to remove the handler once it has been called */ - var bidWonHandler = function bidWonHandler() { - console.log('bidWonHandler: ', arguments); - pbjs.offEvent('bidWon', bidWonHandler, rightAdUnit); - }; - - var rightAdUnit="/111111/right"; - pbjs.que.push(function () { - var adUnits = [{ - code: rightAdUnit, - ... - },{ - ... - }]; - - pbjs.addAdUnits(adUnits); - pbjs.requestBids({ - ... - }); - - /* Register a callback for just the rightSlot `bidWon` event */ - /* Note that defining an event that uses the 3rd parameter must come after initiating the auction */ - pbjs.onEvent('bidWon', bidWonHandler, rightAdUnit); +The example below shows how these events can be used. - ... -{% endhighlight %} - -Events example 3: Dynamically modify the auction {% highlight js %} - var bidderFilter = function bidderFilter(adunits) { - // pub-specific logic to optimize bidders - // e.g. "remove any that haven't bid in the last 4 refreshes" - }; - pbjs.onEvent('beforeRequestBids', bidderFilter); + pbjs.getEvents().forEach(event => { + console.log("event: "+event.eventType) + }); {% endhighlight %} -Events example 4: Log errors and render fails to your own endpoint -{% highlight js %} - pbjs.onEvent('adRenderFailed', function () { - // pub-specific logic to call their own endpoint - }); - pbjs.onEvent('auctionDebug', function () { - // pub-specific logic to call their own endpoint - }); -{% endhighlight %} -
    \ No newline at end of file +## See Also +- [onEvent](/dev-docs/publisher-api-reference/onEvent.html) +- [offEvent](/dev-docs/publisher-api-reference/offEvent.html) diff --git a/dev-docs/publisher-api-reference/getNoBids.md b/dev-docs/publisher-api-reference/getNoBids.md index 8730a42852..aa2ebd491f 100644 --- a/dev-docs/publisher-api-reference/getNoBids.md +++ b/dev-docs/publisher-api-reference/getNoBids.md @@ -5,6 +5,6 @@ description: --- -Use this method to get all of the bid requests that resulted in a NO_BID. These are bid requests that were sent to a bidder but, for whatever reason, the bidder decided not to bid on. Used by debugging snippet in [Tips for Troubleshooting](/dev-docs/troubleshooting-tips.html). +Use this method to get all of the bid requests that resulted in a NO_BID. These are bid requests that were sent to a bidder but, for whatever reason, the bidder decided not to bid on. Used by debugging snippet in the [Troubleshooting Guide](/troubleshooting/troubleshooting-guide.html). -+ `pbjs.getNoBids()`: returns an array of bid request objects that were deliberately not bid on by a bidder. \ No newline at end of file ++ `pbjs.getNoBids()`: returns an array of bid request objects that were deliberately not bid on by a bidder. diff --git a/dev-docs/publisher-api-reference/offEvent.md b/dev-docs/publisher-api-reference/offEvent.md index 1a365aafc2..31dc71af82 100644 --- a/dev-docs/publisher-api-reference/offEvent.md +++ b/dev-docs/publisher-api-reference/offEvent.md @@ -1,6 +1,56 @@ --- layout: api_prebidjs -title: pbjs.offEvent(event, handler, id) +title: pbjs.offEvent(eventType, handler, id) description: --- +Turns off an event callback defined with [onEvent](/dev-docs/publisher-api-reference/onEvent.html) + +**Kind**: static method of `pbjs` + +**Args**: eventType, callbackFunction, id + +**Returns**: none + +See the [getEvents](/publisher-api-reference/getEvents.html) function for the full list of eventTypes supported. + +Causes PBJS to search through registered event callbacks and remove the +supplied callbackFunction for the specifc eventType. + +The optional `id` parameter provides more finely-grained event +callback de-registration. This makes it possible to de-register callback +events for a specific item in the event context. + +Example + +{% highlight js %} + /* This handler will be called only for rightAdUnit */ + /* Uses the `pbjs.offEvent` method to remove the handler once it has been called */ + var bidWonHandler = function bidWonHandler() { + console.log('bidWonHandler: ', arguments); + pbjs.offEvent('bidWon', bidWonHandler, rightAdUnit); + }; + + var rightAdUnit="/111111/right"; + pbjs.que.push(function () { + var adUnits = [{ + code: rightAdUnit, + ... + },{ + ... + }]; + pbjs.addAdUnits(adUnits); + pbjs.requestBids({ + ... + }); + + /* Register a callback for just the rightSlot `bidWon` event */ + /* Note that defining an event that uses the 3rd parameter must come after initiating the auction */ + pbjs.onEvent('bidWon', bidWonHandler, rightAdUnit); + + ... +{% endhighlight %} + +## See Also +- [getEvents](/dev-docs/publisher-api-reference/getEvents.html) +- [onEvent](/dev-docs/publisher-api-reference/onEvent.html) diff --git a/dev-docs/publisher-api-reference/onEvent.md b/dev-docs/publisher-api-reference/onEvent.md index 716048f519..e322367352 100644 --- a/dev-docs/publisher-api-reference/onEvent.md +++ b/dev-docs/publisher-api-reference/onEvent.md @@ -1,6 +1,65 @@ --- layout: api_prebidjs -title: pbjs.onEvent(event, handler, id) +title: pbjs.onEvent(eventType, handler, id) description: --- +This routine allows the page (or module) to create a callback function that's invoked when heading bidding events are fired. + +**Kind**: static method of `pbjs` + +**Args**: eventType, callbackFunction, id + +**Returns**: none + +See the [getEvents](/publisher-api-reference/getEvents.html) function for the full list of eventTypes supported. + +The optional `id` parameter provides more finely-grained event +callback registration. This makes it possible to register callback +events for a specific item in the event context. + +For example, `bidWon` events will accept an `id` for ad unit code. +`bidWon` callbacks registered with an ad unit code id will be called +when a bid for that ad unit code wins the auction. Without an `id` +this method registers the callback for every `bidWon` event. + +{: .alert.alert-info :} +Currently, `bidWon` is the only event that accepts the `id` parameter. + +Example 1: Basic event logging +``` + /* Log when ad units are added to Prebid */ + pbjs.onEvent('addAdUnits', function() { + console.log('Ad units were added to Prebid.') + console.log(pbjs.adUnits); + }); + + /* Log when Prebid wins the ad server auction */ + pbjs.onEvent('bidWon', function(data) { + console.log(data.bidderCode+ ' won the ad server auction for ad unit ' +data.adUnitCode+ ' at ' +data.cpm+ ' CPM'); + }); + +``` + +Example 2: Dynamically modify the auction +``` + var bidderFilter = function bidderFilter(adunits) { + // pub-specific logic to optimize bidders + // e.g. "remove any that haven't bid in the last 4 refreshes" + }; + pbjs.onEvent('beforeRequestBids', bidderFilter); +``` + +Example 3: Log errors and render fails to your own endpoint +``` + pbjs.onEvent('adRenderFailed', function () { + // pub-specific logic to call their own endpoint + }); + pbjs.onEvent('auctionDebug', function () { + // pub-specific logic to call their own endpoint + }); +``` + +## See Also +- [getEvents](/dev-docs/publisher-api-reference/getEvents.html) +- [offEvent](/dev-docs/publisher-api-reference/offEvent.html) diff --git a/dev-docs/publisher-api-reference/readConfig.md b/dev-docs/publisher-api-reference/readConfig.md new file mode 100644 index 0000000000..734647e762 --- /dev/null +++ b/dev-docs/publisher-api-reference/readConfig.md @@ -0,0 +1,18 @@ +--- +layout: api_prebidjs +title: pbjs.readConfig([string]) +description: +--- + + +The `readConfig` function is used for retrieving the current configuration object or subscribing to configuration updates. When called with no parameters, the entire config object is returned. When called with a string parameter, a single configuration property matching that parameter is returned. The readConfig function has been introduced for safer use of the getConfig functionality, as it returns a clone. + +{% highlight js %} +/* Get config object */ +config.readConfig() + +/* Get debug config */ +config.readConfig('debug') +{% endhighlight %} + +
    diff --git a/dev-docs/publisher-api-reference/setConfig.md b/dev-docs/publisher-api-reference/setConfig.md index ce957e0eca..1d2904bc70 100644 --- a/dev-docs/publisher-api-reference/setConfig.md +++ b/dev-docs/publisher-api-reference/setConfig.md @@ -52,7 +52,7 @@ Debug mode can be enabled permanently in a page if desired. In debug mode, Prebid.js will post additional messages to the browser console and cause Prebid Server to return additional information in its response. If not specified, debug is off. Note that debugging can be specified for a specific page view by adding -`pbjs_debug=true` to the URL's query string. e.g. /pbjs_demo.html?pbjs_debug=true See [Prebid.js troubleshooting tips](/dev-docs/troubleshooting-tips.html) for more information. +`pbjs_debug=true` to the URL's query string. e.g. /pbjs_demo.html?pbjs_debug=true See [Prebid.js troubleshooting guide](/troubleshooting/troubleshooting-guide.html) for more information. Turn on debugging permanently in the page: {% highlight js %} @@ -472,7 +472,7 @@ The `s2sConfig` properties: | `endpoint` | Required | URL or Object | Defines the auction endpoint for the Prebid Server cluster. See table below for object config properties. | | `syncEndpoint` | Required | URL or Object | Defines the cookie_sync endpoint for the Prebid Server cluster. See table below for object config properties. | | `userSyncLimit` | Optional | Integer | Max number of userSync URLs that can be executed by Prebid Server cookie_sync per request. If not defined, PBS will execute all userSync URLs included in the request. | -| `coopSync` | Optional | Boolean | Whether or not PBS is allowed to perform "cooperative syncing" for bidders not on this page. Publishers help each other improve match rates by allowing this. Default is true. Supported in PBS-Java only. | +| `coopSync` | Optional | Boolean | Whether or not PBS is allowed to perform "cooperative syncing" for bidders not on this page. Publishers help each other improve match rates by allowing this. Default is true. | | `defaultTtl` | Optional | Integer | Configures the default TTL in the Prebid Server adapter to use when Prebid Server does not return a bid TTL - 60 if not set | | `adapterOptions` | Optional | Object | Arguments will be added to resulting OpenRTB payload to Prebid Server in every impression object at request.imp[].ext.BIDDER. See the example above. | | `extPrebid` | Optional | Object | Arguments will be added to resulting OpenRTB payload to Prebid Server in request.ext.prebid. See the examples below. | diff --git a/dev-docs/show-prebid-ads-on-amp-pages.md b/dev-docs/show-prebid-ads-on-amp-pages.md index 0195cc63fe..e03048365e 100644 --- a/dev-docs/show-prebid-ads-on-amp-pages.md +++ b/dev-docs/show-prebid-ads-on-amp-pages.md @@ -91,34 +91,40 @@ that doesn't come from /amp parameters: } } }, - "imp": [ - { - "id": "some-impression-id", - "banner": { - "format": [ - { - "w": 300, - "h": 250 - } - ] - }, - "ext": { + "imp": [{ + "id": "some-impression-id", + "banner": { + "format": [{ + "w": 300, + "h": 250 + }] + }, + "ext": { + "prebid": { + "bidder": { "bidderA": { // Insert parameters here }, "bidderB": { // Insert parameters here } - } + } } - ] + } + }] } - ``` This basic OpenRTB record will be enhanced by the parameters from the call to the [/amp endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html). ### AMP content page +First ensure that the amp-ad component is imported in the header. + +``` + +``` +This script provides code libraries that will convert `` properties to the endpoint query parameters usint the [Real Time Config](https://github.com/ampproject/amphtml/blob/main/extensions/amp-a4a/rtc-documentation.md) (RTC) protocol. + The `amp-ad` elements in the page body need to be set up as shown below, especially the following attributes: + `data-slot`: Identifies the ad slot for the auction. @@ -130,7 +136,7 @@ e.g. for the AppNexus cluster of Prebid Servers: ```html ``` @@ -139,11 +145,20 @@ e.g. for Rubicon Project's cluster of Prebid Servers: ```html ``` +For other hosts, you can specify the URL directly rather than using one of the convenient vendor aliases. e.g. +```html + +``` + ### HTML Creative This is the creative that your Ad Ops team needs to upload to the ad server (it's also documented at [Setting up Prebid for AMP in Google Ad Manager]({{site.github.url}}/adops/setting-up-prebid-for-amp-in-dfp.html)). @@ -244,37 +259,45 @@ If you're using AppNexus' managed service, you would enter something like this: height="1" sandbox="allow-scripts allow-same-origin" frameborder="0" - src="https://acdn.adnxs.com/prebid/amp/user-sync/load-cookie.html?endpoint=appnexus&max_sync_count=5"> + src="https://acdn.adnxs.com/prebid/amp/user-sync/load-cookie.html?endpoint=appnexus&max_sync_count=5&source=amp"> ``` -If you are utilizing Magnite's managed service, there's an extra parameter: +If you are utilizing Magnite's managed service, there's an extra `args` parameter: ```html + src="https://GET_URL_FROM_MAGNITE_ACCOUNT_TEAM/prebid/load-cookie.html?endpoint=rubicon&max_sync_count=5&source=amp&args=account:MAGNITE_ACCOUNT_ID"> ``` + +Or you can specify a full URL to another Prebid Server location (including a QA site) by setting `endpoint` to a URL-encoded string. e.g. +```html + + + +``` + The usage of `load-cookie.html` and `load-cookie-with-consent.html` is the same. The arguments available on the query string are: {: .table .table-bordered .table-striped } | Param | Scope | Values | Description | | --- | --- | --- | --- | -| endpoint | recommended | appnexus or rubicon | Determines which cluster of prebid servers to load from. Default, for legacy reasons, is appnexus. | +| endpoint | recommended | 'appnexus', 'rubicon', or URL | Determines which cluster of prebid servers to load from. Default, for legacy reasons, is appnexus. | +| source | optional | recommended | Set it to 'amp' to tell Prebid Server to exclude iframe syncs, which don't work on AMP. | | max_sync_count | optional | integer | How many sync pixels should be returned from Prebid Server | | args | optional | attr1:val1,attr2:val2 | These attribute value pairs will be passed to Prebid Server in the /cookie_sync call. The attribute and value will be quoted by the system when appropriate. | | gdpr | optional | 0 or 1 | Defines whether GDPR processing is in scope for this request. 0=no, 1=yes. Leave unknown if not sure. | | gdpr_consent | optional | String | IAB CMP-formatted consent string | -{% capture endpointNote %} -Currently, if you need to sync with a Prebid Server other than appnexus or rubicon, you'll need to fork the repo, change the endpoint, and host it somewhere. There is an [issue open to resolve](https://github.com/prebid/prebid-universal-creative/issues/122) this. -{% endcapture %} -{% include alerts/alert_note.html content=endpointNote %} - ### AMP RTC and GDPR The two Prebid Server RTC vendor strings 'prebidappnexus' and 'prebidrubicon' @@ -283,7 +306,25 @@ support passing GDPR consent to Prebid Server. The CONSENT_STRING macro will be populated if you've integrated with a CMP that supports amp-consent v2 -- custom CMP integration. -If you're using a custom RTC callout, you'll need to add `gdpr_consent=CONSENT_STRING` to the list of parameters. +If you're using a custom RTC callout, here are the parameters that can be passed through the RTC string: +- tag_id +- w=ATTR(width) +- h=ATTR(height) +- ow=ATTR(data-override-width) +- oh=ATTR(data-override-height) +- ms=ATTR(data-multi-size) +- slot=ATTR(data-slot) +- targeting=TGT +- curl=CANONICAL_URL +- timeout=TIMEOUT +- adc=ADCID +- purl=HREF +- gdpr_consent=CONSENT_STRING +- consent_type=CONSENT_METADATA(consentStringType) +- gdpr_applies=CONSENT_METADATA(gdprApplies) +- attl_consent=CONSENT_METADATA(additionalConsent) + +See the entries in the [AMP vendors callout file](https://github.com/ampproject/amphtml/blob/main/src/service/real-time-config/callout-vendors.js). ## Debugging Tips To review that Prebid on AMP is working properly the following aspects can be looked at: diff --git a/dev-docs/troubleshooting-tips.md b/dev-docs/troubleshooting-tips.md index 874e3d90e6..1b2375c9e1 100644 --- a/dev-docs/troubleshooting-tips.md +++ b/dev-docs/troubleshooting-tips.md @@ -3,12 +3,9 @@ layout: page_v2 title: Dev Tips description: Troubleshooting tips for developers implementing Prebid.js Header Bidding. pid: 0 - -top_nav_section: dev_docs nav_section: troubleshooting redirect_from: "/dev-docs/toubleshooting-tips.html" sidebarType: 1 - --- @@ -16,221 +13,4 @@ sidebarType: 1 # Tips for Troubleshooting {:.no_toc} -This page has tips and tricks for troubleshooting issues with your Prebid.js integration. - -* TOC -{:toc} - -## Turn on Prebid.js debug messages - -Add `pbjs_debug=true` to the end of your page's URL. For example: /pbjs_demo.html?pbjs_debug=true. This will add two types of messages to your browser's developer console: - -1. Prebid.js suppresses Javascript errors in the normal mode to not break the rest of your page. Adding the `pbjs_debug` parameter will expose the Javascript errors. -2. You'll find additional debug messages. Filter the messages by string `MESSAGE:`. For example: - -
    - -![Prebid.js Debug Console]({{ site.github.url }}/assets/images/dev-docs/pbjs_debug-console-log.png){: .pb-sm-img :} - -
    - -{: .table .table-bordered .table-striped } -| Message | Description | -| :---- |:--------| -| Calling bidder | When Prebid.js sends out bid requests, this message is logged | -| Set key value for placement | After all the bids came back, or when timeout is reached, prebid.js will set keyword targeting for the defined ad units. | -| Calling renderAd | If a header bidding bid wins the ad server's auction, prebid.js will render the winning bid's creative. | - -
    - -## Turn on your ad server's developer console - -The ad server's developer console usually provide information such as targeting, latency, and key events logging. For example, here is a screenshot of Google Ad Manager's GPT developer console logs: - -
    - -![Prebid.js Debug Console]({{ site.github.url }}/assets/images/dev-docs/googfc.png){: .pb-md-img :} - -
    - -## See all bids in the console - -To print information about all of the bids that come in to the Console on any page that is running Prebid.js, follow these steps. - -Open the Chrome Dev Tools. In the **Sources** tab, next to **Content Scripts**, click the **>>** button and you can add **Snippets**: - -![View Snippets in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/01-view-snippets.png){: .pb-sm-img :} - -
    - -Right-click to add a **New** snippet: - -![Add New Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/02-add-new-snippet.png){: .pb-sm-img :} - -
    - -Paste in the following code using Control-V (or Command-V on Mac), and give the snippet a name, such as 'show-all-bids': - -```javascript -(function() { - function forEach(responses, cb) { - Object.keys(responses).forEach(function(adUnitCode) { - var response = responses[adUnitCode]; - response.bids.forEach(function(bid) { - cb(adUnitCode, bid); - }); - }); - } - var winners = pbjs.getAllWinningBids(); - var output = []; - forEach(pbjs.getBidResponses(), function(code, bid) { - output.push({ - bid: bid, - adunit: code, - adId: bid.adId, - bidder: bid.bidder, - time: bid.timeToRespond, - cpm: bid.cpm, - msg: bid.statusMessage, - rendered: !!winners.find(function(winner) { - return winner.adId==bid.adId; - }) - }); - }); - forEach(pbjs.getNoBids && pbjs.getNoBids() || {}, function(code, bid) { - output.push({ - msg: "no bid", - adunit: code, - adId: bid.bidId, - bidder: bid.bidder - }); - }); - if (output.length) { - if (console.table) { - console.table(output); - } else { - for (var j = 0; j < output.length; j++) { - console.log(output[j]); - } - } - } else { - console.warn('NO prebid responses'); - } -})(); -``` - -
    - -Right-click the snippet and choose **Run**: - -![Run a Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/03-run-snippet.png){: .pb-sm-img :} - -
    - -Check the output in Console to see the bids: - -![See Snippet Output in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/04-snippet-output.png){: .pb-sm-img :} - -## See all winning bids in the console - -To print information about all of the winning bids that come in to the Console on any page that is running Prebid.js, follow these steps. - -Open the Chrome Dev Tools. In the **Sources** tab, next to **Content Scripts**, click the **>>** button and you can add **Snippets**: - -![View Snippets in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/01-view-snippets.png){: .pb-sm-img :} - -
    - -Right-click to add a **New** snippet: - -![Add New Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/02-add-new-snippet.png){: .pb-sm-img :} - -
    - -Paste in the following code using Control-V (or Command-V on Mac), and give the snippet a name, such as 'show-all-winning-bids': - -```javascript -var bids = pbjs.getAllWinningBids(); -var output = []; -for (var i = 0; i < bids.length; i++) { - var b = bids[i]; - output.push({ - 'adunit': b.adUnitCode, 'adId': b.adId, 'bidder': b.bidder, - 'time': b.timeToRespond, 'cpm': b.cpm - }); -} -if (output.length) { - if (console.table) { - console.table(output); - } else { - for (var j = 0; j < output.length; j++) { - console.log(output[j]); - } - } -} else { - console.warn('No prebid winners'); -} -``` - -
    - -Right-click the snippet and choose **Run**: - -![Run a Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/03-run-snippet.png){: .pb-sm-img :} - -
    - -Check the output in Console to see the bids (note that this screenshot shows the output from "see all bids" but they're very similar): - -![See Snippet Output in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/04-snippet-output.png){: .pb-sm-img :} - -## Modify bid responses for testing - -Using `pbjs.setConfig({debugging:{ ... }})` from the javascript console, it is possible to override and filter bids as they come in. -When this type of debugging is enabled it will persist across page loads using `sessionStorage`. This allows -for easy testing of pages that immediately start auctions (most pages), but also means you need to remember -to deactivate debugging when you are done (or clear your local storage / use incognito mode when testing). - -``` -// Filtering bidders -javascript console> pbjs.setConfig({ - debugging: { - enabled: true, // suppresses bids from other bidders - bidders: ['bidderA', 'bidderB'] - } -}); - -// Overwriting bid responses for all bidders -javascript console> pbjs.setConfig({ - debugging: { - enabled: true, - bids: [{ - cpm: 1.5 - }] - } -}); - -// Overwriting bid responses for a specific bidder and adUnit code (can use either separately) -javascript console> pbjs.setConfig({ - debugging: { - enabled: true, - bids: [{ - bidder: 'bidderA', - adUnitCode: '/19968336/header-bid-tag-0', - cpm: 1.5 - }] - } -}); - -// Disabling debugging -javascript console> pbjs.setConfig({ - debugging: { - enabled: false - } -}); -``` - -## Related Reading - -+ [Prebid.js FAQ](/dev-docs/faq.html) -+ [Prebid.js Common Issues](/dev-docs/common-issues.html) +Moved to [the PBJS Troubleshooting Guide](/troubleshooting/troubleshooting-guide.html). diff --git a/download.md b/download.md index aec6962607..c648268a4d 100644 --- a/download.md +++ b/download.md @@ -5,6 +5,33 @@ description: Documentation on how to download Prebid.js for header bidding. sidebarType: 0 --- + + - ``` - -This script provides code libraries that will convert the `` properties to the endpoint query parameters. In the most basic usage pass `width` and `height` as well as `type` and a `rtc-config`. The `type` value is the ad network you will be using. The `rtc-config` is used to pass JSON configuration to the Prebid Server, which handles the communication with [AMP RTC](https://medium.com/ampfuel/better-than-header-bidding-amp-rtc-fc54e80f3999). Vendors is an object that defines any vendors that will be receiving the RTC callout. In this example, the required parameter `tag_id` will receive the `PLACEMENT_ID` (or `REQUEST_ID`) value. - -```html - -``` -Here's a simplified URL: - -``` -/openrtb2/amp?tag_id='ef8299d0-cc32-46cf-abcd-41cebe8b4b85'&w=300&h=250&timeout=500 -``` - -Some endpoint parameters will override parts of the Stored Request. - -1. `ow`, `oh`, `w`, `h`, and/or `ms` will be used to set `request.imp[0].banner.format` if `request.imp[0].banner` is present. -2. `curl` will be used to set `request.site.page` -3. `timeout` will generally be used to set `request.tmax`. However, the Prebid Server host can [configure](https://github.com/prebid/prebid-server/blob/master/docs/developers/configuration.md) their deploy to reduce this timeout for technical reasons. -4. `debug` will be used to set `request.test`, causing the `response.debug` to have extra debugging info in it. +| Checking if app exists. | 999 | The `app` object must not exist in AMP stored requests. | Error is returned. | ### Resolving Sizes @@ -271,15 +208,23 @@ track the logic used by `doubleclick` when resolving sizes used to fetch ads fro Specifically: -1. If `ow` and `oh` exist, `request.imp[0].banner.format` will be a single element with `w: ow` and `h: oh` -2. If `ow` and `h` exist, `request.imp[0].banner.format` will be a single element with `w: ow` and `h: h` -3. If `oh` and `w` exist, `request.imp[0].banner.format` will be a single element with `w: w` and `h: oh` -4. If `ms` exists, `request.imp[0].banner.format` will contain an element for every size it uses. -5. If `w` and `h` exist, `request.imp[0].banner.format` will be a single element with `w: w` and `h: h` -6. If `w` _or_ `h` exist, it will be used to override _one_ of the dimensions inside each element of `request.imp[0].banner.format` -7. If none of these exist then the Stored Request values for `request.imp[0].banner.format` will be used without modification. +1. If `ow` and `oh` exist, `imp[0].banner.format` will be a single element with `w: ow` and `h: oh` +2. If `ow` and `h` exist, `imp[0].banner.format` will be a single element with `w: ow` and `h: h` +3. If `oh` and `w` exist, `imp[0].banner.format` will be a single element with `w: w` and `h: oh` +4. If `ms` exists, `imp[0].banner.format` will contain an element for every size it uses. +5. If `w` and `h` exist, `imp[0].banner.format` will be a single element with `w: w` and `h: h` +6. If `w` _or_ `h` exist, it will be used to override _one_ of the dimensions inside each element of `imp[0].banner.format` +7. If none of these exist then the Stored Request values for `imp[0].banner.format` will be used without modification. + +## Configuration Options + +- settings.generate-storedrequest-bidrequest-id: replace the stored request `id` with a UUID (PBS-Java only) +- amp.default-timeout-ms: default operation timeout for AMP requests +- amp.timeout-adjustment-ms: reduces timeout value passed in AMP request. Can be used to account for estimated latency so that Prebid Server can respond to the AMP RTC request before it times out. +- amp.max-timeout-ms: maximum operation timeout for AMP requests ## Further Reading - [Prebid and AMP](/formats/amp.html) - [Prebid Server AMP Use Case Overview](/prebid-server/use-cases/pbs-amp.html) - [Prebid Server First Party Data](/prebid-server/features/pbs-fpd.html) +- [Stored Requests](/prebid-server/features/pbs-storedreqs.html) diff --git a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md index 079e38ee65..007d721f2b 100644 --- a/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md +++ b/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md @@ -211,10 +211,10 @@ It's also possible to define different bid adjustment factors by mediatype, whic "prebid": { "bidadjustmentfactors": { "bidderA": 0.9, - "bidderB": 0.8 + "bidderB": 0.8, "mediatypes": { "banner": { - "bidderA": 0.8, + "bidderA": 0.8 }, "video-outstream": { "bidderC": 0.9 @@ -222,7 +222,7 @@ It's also possible to define different bid adjustment factors by mediatype, whic "video": { "bidderB": 0.85 } - } + } } } } @@ -268,7 +268,8 @@ to set these params on the response at `response.seatbid[i].bid[j].ext.prebid.ta "precision": 2, "ranges": [{ "max": 20.00, - "increment": 0.10 // This is equivalent to the deprecated "pricegranularity": "medium" + "increment": 0.10 // This is equivalent to the deprecated + // "pricegranularity": "medium" }] }, "includewinners": true, // Optional param defaulting to false @@ -423,9 +424,9 @@ This prevents breaking API changes as new Bidders are added to the project. For example, if the Request defines an alias like this: ``` - "aliases": { - "appnexus": "rubicon" - } +"aliases": { + "appnexus": "rubicon" +} ``` then any `imp.ext.appnexus` params will actually go to the **rubicon** adapter. @@ -438,13 +439,16 @@ For environments that have turned on [GDPR enforcement](/prebid-server/features/ To do this, just set `ext.prebid.aliasgvlids` alongside ext.prebid.aliases: ``` -"ext": +"ext": { "prebid": { - "aliases": { "newAlias": "originalBidderCode" }, - "aliasgvlids": { "newAlias": 11111 } + "aliases": { + "newAlias": "originalBidderCode" + }, + "aliasgvlids": { + "newAlias": 11111 } } -}); +} ``` ##### Stored Requests @@ -526,12 +530,10 @@ Example: { "imp": [{ ... - "banner": { - ... - } + "banner": { ... }, "instl": 1, ... - }] + }], "device": { ... "h": 640, @@ -556,20 +558,20 @@ PBS with interstitial support will come preconfigured with a list of common ad s To set the desired 'ad server currency', use the standard OpenRTB `cur` attribute. Note that Prebid Server only looks at the first currency in the array. ``` - "cur": ["USD"] +"cur": ["USD"] ``` If you want or need to define currency conversion rates (e.g. for currencies that your Prebid Server doesn't support), -define ext.prebid.currency.rates. (Currently supported in PBS-Java only) +define ext.prebid.currency.rates. ``` "ext": { "prebid": { - "currency": { - "rates": { - "USD": { "UAH": 24.47, "ETB": 32.04 } - } - } + "currency": { + "rates": { + "USD": { "UAH": 24.47, "ETB": 32.04 } + } + } } } ``` @@ -585,9 +587,9 @@ Basic supply chains are passed to Prebid Server on `source.ext.schain` and passe Bidder-specific schains: ``` -ext.prebid.schains: [ - { bidders: ["bidderA"], schain: { SCHAIN OBJECT 1}}, - { bidders: ["*"], schain: { SCHAIN OBJECT 2}} +"ext.prebid.schains": [ + { "bidders": ["bidderA"], "schain": { SCHAIN OBJECT 1}}, + { "bidders": ["*"], "schain": { SCHAIN OBJECT 2}} ] ``` In this scenario, Prebid Server sends the first schain object to `bidderA` and the second schain object to everyone else. @@ -600,24 +602,23 @@ Prebid Server adapters can support the [Prebid.js User ID modules](/dev-docs/mod ``` { - "user": { - "ext": { - "eids": [{ - "source": "adserver.org", - "uids": [{ - "id": "111111111111", - "ext": { - "rtiPartner": "TDID" - } - }] - }, - { - "source": "pubcid.org", - "id":"11111111" - } - ] - } + "user": { + "ext": { + "eids": [{ + "source": "adserver.org", + "uids": [{ + "id": "111111111111", + "ext": { + "rtiPartner": "TDID" + } + }] + }, + { + "source": "pubcid.org", + "id":"11111111" + }] } + } } ``` @@ -627,17 +628,17 @@ Publishers can constrain which bidders receive which user.ext.eids entries. See ``` { - ext: { - prebid: { - data: { - eidpermissions: [ // prebid server will use this to filter user.ext.eids - {"source": "sharedid.org", "bidders": ["*"]}, // * is the default - {"source": "neustar.biz", "bidders": ["bidderB"]}, - {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} - ] - } - } + "ext": { + "prebid": { + "data": { + "eidpermissions": [ // prebid server will use this to filter user.ext.eids + {"source": "sharedid.org", "bidders": ["*"]}, // * is the default + {"source": "neustar.biz", "bidders": ["bidderB"]}, + {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} + ] + } } + } } ``` @@ -678,24 +679,34 @@ When a storedauctionresponse ID is specified: This request: ``` { - "test":1, - "tmax":500, + "test": 1, + "tmax": 500, "id": "test-auction-id", "app": { ... }, "ext": { - "prebid": { - "targeting": {}, - "cache": { "bids": {} } - } + "prebid": { + "targeting": {}, + "cache": { + "bids": {} + } + } }, "imp": [ { "id": "a", - "ext": { "prebid": { "storedauctionresponse": { "id": "1111111111" } } } + "ext": { + "prebid": { + "storedauctionresponse": { "id": "1111111111" } + } + } }, { "id": "b", - "ext": { "prebid": { "storedauctionresponse": { "id": "22222222222" } } } + "ext": { + "prebid": { + "storedauctionresponse": { "id": "22222222222" } + } + } } ] } @@ -704,16 +715,16 @@ This request: Will result in this response, assuming that the ids exist in the appropriate DB table read by Prebid Server: ``` { - "id": "test-auction-id", - "seatbid": [ - { - // BidderA bids from storedauctionresponse=1111111111 - // BidderA bids from storedauctionresponse=22222222 - }, - { - // BidderB bids from storedauctionresponse=1111111111 - // BidderB bids from storedauctionresponse=22222222 - } + "id": "test-auction-id", + "seatbid": [ + { + // BidderA bids from storedauctionresponse=1111111111 + // BidderA bids from storedauctionresponse=22222222 + }, + { + // BidderB bids from storedauctionresponse=1111111111 + // BidderB bids from storedauctionresponse=22222222 + } ] } ``` @@ -724,37 +735,37 @@ In contrast to what's outlined above, this approach lets some real auctions take ``` { - "test":1, - "tmax":500, + "test": 1, + "tmax": 500, "id": "test-auction-id", "app": { ... }, "ext": { - "prebid": { - "targeting": {}, - "cache": { "bids": {} } - } + "prebid": { + "targeting": {}, + "cache": { "bids": {} } + } }, "imp": [ { "id": "a", "ext": { - "prebid": { - "storedbidresponse": [ - { "bidder": "BidderA", "id": "333333" }, - { "bidder": "BidderB", "id": "444444" }, - ] - } + "prebid": { + "storedbidresponse": [ + { "bidder": "BidderA", "id": "333333" }, + { "bidder": "BidderB", "id": "444444" }, + ] + } } }, { "id": "b", "ext": { - "prebid": { - "storedbidresponse": [ - { "bidder": "BidderA", "id": "5555555" }, - { "bidder": "BidderB", "id": "6666666" }, - ] - } + "prebid": { + "storedbidresponse": [ + { "bidder": "BidderA", "id": "5555555" }, + { "bidder": "BidderB", "id": "6666666" }, + ] + } } } ] @@ -764,18 +775,18 @@ Could result in this response: ``` { - "id": "test-auction-id", - "seatbid": [ - { - "bid": [ - // contents of storedbidresponse=3333333 as parsed by bidderA adapter - // contents of storedbidresponse=5555555 as parsed by bidderA adapter - ] - }, - { - // contents of storedbidresponse=4444444 as parsed by bidderB adapter - // contents of storedbidresponse=6666666 as parsed by bidderB adapter - } + "id": "test-auction-id", + "seatbid": [ + { + "bid": [ + // contents of storedbidresponse=3333333 as parsed by bidderA adapter + // contents of storedbidresponse=5555555 as parsed by bidderA adapter + ] + }, + { + // contents of storedbidresponse=4444444 as parsed by bidderB adapter + // contents of storedbidresponse=6666666 as parsed by bidderB adapter + } ] } ``` @@ -793,49 +804,52 @@ It specifies where in the OpenRTB request non-standard attributes should be pass ``` { + "ext": { + "prebid": { + "data": { "bidders": [ "rubicon", "appnexus" ] } // these are the bidders allowed to see protected data + } + }, + "site": { + "keywords": "", + "search": "", "ext": { - "prebid": { - "data": { "bidders": [ "rubicon", "appnexus" ] } // these are the bidders allowed to see protected data - } - }, - "site": { - "keywords": "", - "search": "", - "ext": { - data: { GLOBAL SITE DATA } // only seen by bidders named in ext.prebid.data.bidders[] - } - }, - "user": { - "keywords": "", - "gender": "", - "yob": 1999, - "geo": {}, - "ext": { - data: { GLOBAL USER DATA } // only seen by bidders named in ext.prebid.data.bidders[] + "data": { GLOBAL SITE DATA } // only seen by bidders named in ext.prebid.data.bidders[] + } + }, + "user": { + "keywords": "", + "gender": "", + "yob": 1999, + "geo": {}, + "ext": { + "data": { GLOBAL USER DATA } // only seen by bidders named in ext.prebid.data.bidders[] + } + }, + "imp": [ + { + ... + "ext": { + "data": { + ADUNIT SPECFIC CONTEXT DATA // can be seen by all bidders } - }, - "imp": [ - ... - "ext": { - "data": { - ADUNIT SPECFIC CONTEXT DATA // can be seen by all bidders - } - } - ] + } + } + ] +} ``` Bidder-specific data can be defined with ext.prebid.bidderconfig: ``` -ext: { - prebid: { - bidderconfig: - bidders: ["bidderA", "bidderB"], - config: [ - ortb2: { - site: { ... }, - user: { ... } - } - ] +"ext": { + "prebid": { + "bidderconfig": { + "bidders": ["bidderA", "bidderB"] + }, + "config": { + "ortb2": { + "site": { ... }, + "user": { ... } + } } } } @@ -858,20 +872,21 @@ An OpenRTB extension, whether in the the original request or the [stored-request The OpenRTB field is `ext.prebid.adservertargeting`. Here's an example: ``` - ext.prebid.adservertargeting: [{ - "key": "hb_amp_ow", // the targeting key - "source": "bidrequest", // pull the value from the path specified in the bid request object - "value": "ext.prebid.amp.data.ow" // path to value in the bidrequest - },{ - "key": "hb_static_thing", - "source": "static", // just use the 'value' provided - "value": "my-static-value" - },{ - "key": "{{BIDDER}}_custom1", // {{BIDDER}} is a macro to be resolved - "source": "bidresponse", // pull the value from the path specified in the bid response object - "value": "seatbid.bid.ext.custom1" - } - }] +"ext.prebid.adservertargeting": [ + { + "key": "hb_amp_ow", // the targeting key + "source": "bidrequest", // pull the value from the path specified in the bid request object + "value": "ext.prebid.amp.data.ow" // path to value in the bidrequest + },{ + "key": "hb_static_thing", + "source": "static", // just use the 'value' provided + "value": "my-static-value" + },{ + "key": "{% raw %}{{BIDDER}}{% endraw %}_custom1", // {% raw %}{{BIDDER}}{% endraw %} is a macro to be resolved + "source": "bidresponse", // pull the value from the path specified in the bid response object + "value": "seatbid.bid.ext.custom1" + } +] ``` `ext.prebid.adservertargeting` is an array objects. Each object has the following format: @@ -884,30 +899,30 @@ The OpenRTB field is `ext.prebid.adservertargeting`. Here's an example: In order to pull AMP parameters out into targeting, Prebid Server places AMP query string parameters in ext.prebid.amp.data. e.g. ``` - "ext": { - "prebid": { - "amp": { - "data": { - "adc": "GA1.2.662776284.1602172186", - "curl": "https://example.com/index.html", - "debug": "1", - "pvid": "", // page view ID - "ms": "", // multi-size - "ow": "", // override-width - "oh": "", // override-height - "w": "300", - "h": "50", - "gdpr_consent": "", - "purl": "https://example.com/index.html", - "slot": "/11111/amp_test", - "timeout": "1000", - "targeting": "{\"site\":{\"attr\":\"val\"}}", - "tag_id": "amp-AMP_Test-300x250", - "account": "22222" - } - } - } +"ext": { + "prebid": { + "amp": { + "data": { + "adc": "GA1.2.662776284.1602172186", + "curl": "https://example.com/index.html", + "debug": "1", + "pvid": "", // page view ID + "ms": "", // multi-size + "ow": "", // override-width + "oh": "", // override-height + "w": "300", + "h": "50", + "gdpr_consent": "", + "purl": "https://example.com/index.html", + "slot": "/11111/amp_test", + "timeout": "1000", + "targeting": "{\"site\":{\"attr\":\"val\"}}", + "tag_id": "amp-AMP_Test-300x250", + "account": "22222" + } } + } +} ``` ##### EID Permissions (PBS-Go only) @@ -917,17 +932,17 @@ in user.ext.eids is allowed to be passed to which bid adapter. For example: ``` { - ext: { - prebid: { - data: { - eidpermissions: [ // prebid server will use this to filter user.ext.eids - {"source": "sharedid.org", "bidders": ["*"]}, // * is the default - {"source": "neustar.biz", "bidders": ["bidderB"]}, - {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} - ] - } - } + "ext": { + "prebid": { + "data": { + "eidpermissions": [ // prebid server will use this to filter user.ext.eids + {"source": "sharedid.org", "bidders": ["*"]}, // * is the default + {"source": "neustar.biz", "bidders": ["bidderB"]}, + {"source": "id5-sync.com", "bidders": ["bidderA","bidderC"]} + ] + } } + } } ``` @@ -942,19 +957,19 @@ The Prebid extension to the OpenRTB protocol is `ext.prebid.multibid`. For examp ``` { - ext: { - prebid: { - multibid: [{ - bidder: "bidderA", - maxbids: 2, - targetbiddercodeprefix: "bidA" - },{ - bidder: "bidderB", - maxbids: 3, - targetbiddercodeprefix: "bidB" - },{ - bidders: ["bidderC", "bidderD"] - maxbids: 2 + "ext": { + "prebid": { + "multibid": [{ + "bidder": "bidderA", + "maxbids": 2, + "targetbiddercodeprefix": "bidA" + }, { + "bidder": "bidderB", + "maxbids": 3, + "targetbiddercodeprefix": "bidB" + }, { + "bidders": ["bidderC", "bidderD"], + "maxbids": 2 }] } } @@ -980,36 +995,36 @@ Prebid Server core does the following when it sees `ext.prebid.multibid`: Here's an example response: ``` { -seatbid: [{ - seat: "bidderA", - bid: [{ - id: "bid1", - impid: "imp1", - price: 1.04, - ext: { - prebid: { - targeting: { - hb_pb_bidderA: 1.00 - }, - targetbiddercode: "bidderA" + "seatbid": [{ + "seat": "bidderA", + "bid": [{ + "id": "bid1", + "impid": "imp1", + "price": 1.04, + "ext": { + "prebid": { + "targeting": { + "hb_pb_bidderA": 1.00 + }, + "targetbiddercode": "bidderA" } - } - ... - },{ - id: "bid2", - impid: "imp1", // same imp as above - price:0.8, - ext: { - prebid: { - targeting: { - hb_pb_bidA2: 0.50 - }, - targetbiddercode: "bidA2" + } + ... + }, { + "id": "bid2", + "impid": "imp1", // same imp as above + "price": 0.8, + "ext": { + "prebid": { + "targeting": { + "hb_pb_bidA2": 0.50 + }, + "targetbiddercode": "bidA2" } - } - ... + } + ... + }] }] -}] } ``` @@ -1022,24 +1037,25 @@ which causes PBS-core to place the video-related attributes on the response. ``` { - ... - - "imp": [ - { - "id": "123456789", - "video": { ... }, - "ext": { - "prebid": { - "storedrequest": { "id": "xxx" }, - "options": { - "echovideoattrs": true - } - } - }, - ... + ... + "imp": [{ + "id": "123456789", + "video": { + ... + }, + "ext": { + "prebid": { + "storedrequest": { + "id": "xxx" + }, + "options": { + "echovideoattrs": true } - ] + } + }, ... + }] + ... } ``` 1. Prebid Server receives this request and expands the `storedrequest` value, merging it with the imp object. @@ -1047,31 +1063,26 @@ which causes PBS-core to place the video-related attributes on the response. ``` { - "seatbid": [{ - "bid": [{ - ... - "ext": { - "prebid": { - "storedrequestattributes":{ - "maxduration": 60, - "mimes": [ - "video/mp4" - ], - "minduration": 15, - "protocols": [ - 1, - 2 - ], - "skipafter": 0, - "skipmin": 0, - "startdelay": 0, - "playbackmethod": [1] - } - } - } - }] - }], -... + "seatbid": [{ + "bid": [{ + ... + "ext": { + "prebid": { + "storedrequestattributes": { + "maxduration": 60, + "mimes": ["video/mp4"], + "minduration": 15, + "protocols": [1, 2], + "skipafter": 0, + "skipmin": 0, + "startdelay": 0, + "playbackmethod": [1] + } + } + } + }] + }], + ... } ``` @@ -1133,31 +1144,31 @@ Prebid Server will generate ad server targeting variables as defined by request ``` { -seatbid: [{ - seat: "bidderA", - bid: [{ - id: "bid1", - impid: "imp1", - price: 1.04, - ext: { - prebid: { - targeting: { - hb_pb: 1.00, // values without prefixes on the winning bids only - hb_pb_bidderA: 1.00, // only if includebidderkeys is true - hb_bidder: "bidderA", - hb_size: "300x250", - hb_size_bidderA: "300x250", - hb_format: "video" // only if includeformat is specified - hb_deal: "123" // only if bid response contains a deal - } + "seatbid": [{ + "seat": "bidderA", + "bid": [{ + "id": "bid1", + "impid": "imp1", + "price": 1.04, + "ext": { + "prebid": { + "targeting": { + "hb_pb": 1.00, // values without prefixes on the winning bids only + "hb_pb_bidderA": 1.00, // only if includebidderkeys is true + "hb_bidder": "bidderA", + "hb_size": "300x250", + "hb_size_bidderA": "300x250", + "hb_format": "video", // only if includeformat is specified + "hb_deal": "123" // only if bid response contains a deal + } } - } - ... + } + ... + }] }] -}] +} ``` - ##### Debug Output `response.ext.debug.httpcalls.{bidder}` will be populated only if `test:1` or `ext.prebid.debug:true`. @@ -1170,20 +1181,16 @@ It is only returned on `test` bids for performance reasons, but may be useful du This contains the request after the resolution of stored requests and implicit information (e.g. site domain, device user agent). ``` - "ext": { - "debug": { - "httpcalls": { - "bidderA": [ - ... - ] - }, - "resolvedrequest": { - ... - }, - "responsetimemillis": { - ... - } - ... +"ext": { + "debug": { + "httpcalls": { + "bidderA": [ ... ] + }, + "resolvedrequest": { ... }, + "responsetimemillis": { ... } + ... + } +} ``` ##### Original Bid CPM (PBS-Java only) @@ -1244,9 +1251,9 @@ The PBJS version comes from ext.prebid.channel: `{name: "pbjs", version: "4.39"} The Prebid SDK version comes from: ``` -app.ext.prebid: { - source: "prebid-mobile" - version: "1.2.3" +"app.ext.prebid": { + "source": "prebid-mobile" + "version": "1.2.3" } ``` @@ -1281,6 +1288,7 @@ app.ext.prebid: { | req | ext.prebid.auctiontimestamp | timestamp for use in correlating PBJS and PBS events | long int | 123456789 | yes | | req | ext.prebid.options. echovideoattrs | causes PBS-core to [echo video attributes](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#echo-storedrequest-video-attributes-pbs-java-only) on seatbid[].bid[].ext.prebid.storedrequestattributes so the player has access to them | boolean | true | yes | | req | ext.prebid.multibid | allows bidders to respond with more than one bid | object | see [docs](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#multibid-pbs-java-only) | yes, but only their value | +| req | ext.prebid.buyeruid | An alternate to [/cookie_sync](/prebid-server/endpoints/pbs-endpoint-cookieSync.html), the request can supply bidder ID values | object | See [doc](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#buyer-uid) | no | | resp | seatbid[].bid[].ext. prebid.targeting | ad server targeting values. Related to req ext.prebid.targeting. | object | see [docs](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#ad-server-targeting) | n/a | | resp | seatbid[].bid[].ext.prebid. type | "banner", "video", "native" | string | "banner" | n/a | | resp | seatbid[].bid[].ext.prebid. cache.bids.url | URL location of the bid or VAST | string | URL | n/a | diff --git a/prebid-server/endpoints/pbs-endpoint-admin.md b/prebid-server/endpoints/pbs-endpoint-admin.md index 15f77672ab..bca308651e 100644 --- a/prebid-server/endpoints/pbs-endpoint-admin.md +++ b/prebid-server/endpoints/pbs-endpoint-admin.md @@ -138,6 +138,7 @@ Query Params - statusCode - specifies that only interactions resulting in this response status code should be logged; valid values: >=200 and <=500 - account - specifies that only interactions involving this account should be logged - limit - number of interactions to log; there is an upper threshold for this value set in configuration +- bidder - name of the bidder whose adapter request will be logged ## /logging/changelevel diff --git a/prebid-server/endpoints/pbs-endpoint-event.md b/prebid-server/endpoints/pbs-endpoint-event.md index 0c354142a3..28a4f38b05 100644 --- a/prebid-server/endpoints/pbs-endpoint-event.md +++ b/prebid-server/endpoints/pbs-endpoint-event.md @@ -7,7 +7,7 @@ title: Prebid Server | Endpoints | Events # Prebid Server | Endpoints | Events (Java-only) -PBS-Java supports events as described in these GitHub issues: +Prebid Server supports events as described in these GitHub issues: - [Prebid Server Event Notification proposal](https://github.com/prebid/prebid-server/issues/800) - [Prebid Server Event Updates](https://github.com/prebid/prebid-server/issues/1202) diff --git a/prebid-server/endpoints/pbs-endpoint-overview.md b/prebid-server/endpoints/pbs-endpoint-overview.md index 502dcfe7b1..e6f0e6c739 100644 --- a/prebid-server/endpoints/pbs-endpoint-overview.md +++ b/prebid-server/endpoints/pbs-endpoint-overview.md @@ -22,8 +22,8 @@ The API endpoints recognized by Prebid Server: | [GET /getuids](/prebid-server/endpoints/pbs-endpoint-getuids.html) | Parses the `uids` cookie and returns JSON. | | [GET /status](/prebid-server/endpoints/pbs-endpoint-status.html) | A health check. | | [GET /info](/prebid-server/endpoints/info/pbs-endpoint-info.html) | Returns various information about how the server is configured. | -| [GET /event](/prebid-server/endpoints/pbs-endpoint-event.html) | (PBS-Java only) Alerts Prebid Server to process an event. | -| [POST /vtrack](/prebid-server/endpoints/pbs-endpoint-event.html) | (PBS-Java only) Cache VAST XML after inserting tracking string. | +| [GET /event](/prebid-server/endpoints/pbs-endpoint-event.html) | Alerts Prebid Server to process an event. | +| [POST /vtrack](/prebid-server/endpoints/pbs-endpoint-event.html) | Cache VAST XML after inserting tracking string. | | [/currency/rates](/prebid-server/endpoints/pbs-endpoint-admin.html) | (Admin port only) Retrieves the server's current currency conversion rates. | ## Prebid Cache diff --git a/prebid-server/endpoints/pbs-endpoint-setuid.md b/prebid-server/endpoints/pbs-endpoint-setuid.md index ea379418ac..eb47472dd5 100644 --- a/prebid-server/endpoints/pbs-endpoint-setuid.md +++ b/prebid-server/endpoints/pbs-endpoint-setuid.md @@ -16,7 +16,7 @@ This endpoint saves a UserID for a Bidder in the Cookie. Saved IDs will be recog ### Query Params -- `bidder`: The FamilyName of the Usersyncer (`../../usersync/usersync.go`) which is being synced. +- `bidder`: The key of the bidder which is being synced. This may not always match the bidder name,. - `uid`: The ID which the Bidder uses to recognize this user. If undefined, the UID for `bidder` will be deleted. - `gdpr`: This should be `1` if GDPR is in effect, `0` if not, and undefined if the caller isn't sure - `gdpr_consent`: This is required if `gdpr` is one, and optional (but encouraged) otherwise. If present, it should be an [unpadded base64-URL](https://tools.ietf.org/html/rfc4648#page-7) encoded [Vendor Consent String](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/Consent%20string%20and%20vendor%20list%20formats%20v1.1%20Final.md). @@ -38,16 +38,8 @@ If in doubt, contact the company hosting Prebid Server and ask if they're GDPR-r ### Return Values -PBS-Go: - -- HTTP 200 - - Success: blank body with Set-Cookies header - - Failure: error message in body - -PBS-Java: - - HTTP 400 - The request is in GDPR scope and the consent string is missing or invalid. -- HTTP 451 - PBS does not have permission to set a cookie due to GDPR or other privacy rule. +- HTTP 451 - PBS does not have permission to set a cookie due to GDPR or another privacy rule. - HTTP 200 - Success with image response: if the f=i parameter is specified or if the named bidder prefers redirect cookie_syncs, then PBS responds with a blank 1x1 PNG, set the Content-Length to the appropriate number of bytes, and set Content-Type to image/png - Success with empty response: if the f=b parameter is specified or if the named bidder prefers iframe cookie_syncs, then PBS responds with empty HTML, Content-Length 0 and Content-Type to text/html diff --git a/prebid-server/features/pbs-currency.md b/prebid-server/features/pbs-currency.md index 8b6201fb5f..347abf63e6 100644 --- a/prebid-server/features/pbs-currency.md +++ b/prebid-server/features/pbs-currency.md @@ -80,17 +80,17 @@ Here are a couple examples showing the logic behind the currency converter: ## Request-Defined Conversion Rates -Using PBS-Java, rates can be passed in on the request: +Rates can be passed in on the request: ``` "ext": { - "prebid": { - "currency": { - "rates": { - "USD": { "UAH": 24.47, "ETB": 32.04, "EUR": 0.92, ... } - }, - "usepbsrates": false // defaults to true - } + "prebid": { + "currency": { + "rates": { + "USD": { "UAH": 24.47, "ETB": 32.04, "EUR": 0.92, ... } + }, + "usepbsrates": false // defaults to true + } } } ``` @@ -104,3 +104,9 @@ Note that the `usepbsrates` flag allows you to define which rates to use when PB A dedicated endpoint on the Admin port will allow you to see what's happening within the currency converter. See [currency rates endpoint](/prebid-server/endpoints/pbs-endpoint-admin.html) for more details. + +## Price Granularity + +When converting to a currency where the typical nominal CPMs are much different than USD such as JPY or INR, use a custom price granularity that reflects the typical range of CPMs in that currency. + +The predefined price granularities such as `medium` or `dense` will not be correctly scaled and thus almost every bid will end in the top bucket. Unlike Prebid.js, Prebid Server does not support `granularityMultiplier` to scale granularities so a custom price granularity needs to be used. \ No newline at end of file diff --git a/prebid-server/features/pbs-default-request.md b/prebid-server/features/pbs-default-request.md index 3badc95482..d11b01a092 100644 --- a/prebid-server/features/pbs-default-request.md +++ b/prebid-server/features/pbs-default-request.md @@ -21,7 +21,7 @@ default_request: alias_info: false ``` -The `file.name` option is the path/filename of a JSON file containing default request JSON. See the [stored request doc](/prebid-server/features/pbs-storedreqs.html) and the [openrtb2/auction endpoint doc](/prebid-server/endpoints/openrtb2/auction.html) for details about the syntax. +The `file.name` option is the path/filename of a JSON file containing default request JSON. See the [stored request doc](/prebid-server/features/pbs-storedreqs.html) and the [openrtb2/auction endpoint doc](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html) for details about the syntax. PBS-Java has a slightly different configuration in application.yaml: ``` diff --git a/prebid-server/features/pbs-feature-idx.md b/prebid-server/features/pbs-feature-idx.md index a6c9655753..6a11cfb541 100644 --- a/prebid-server/features/pbs-feature-idx.md +++ b/prebid-server/features/pbs-feature-idx.md @@ -11,8 +11,8 @@ title: Prebid Server | Features | Feature Set | Feature | Description | PBS-Go | PBS-Java | |-------------+---------+-------------+--------+----------| | [Currency](/prebid-server/features/pbs-currency.html) | Core | Loads currency conversions from an outside source, allows non-supported currencies to come in on the OpenRTB2 request, converts bid currencies to the request's prefered currency. | | | -| [Currency](/prebid-server/features/pbs-currency.html) | Request-Defined Rates | Allows the request to define its own currency rates. | | | -| Currency | pbsConvertCurrency method | Allows adapters to convert bid floors to a different currency if needed. | | | +| [Currency](/prebid-server/features/pbs-currency.html) | Request-Defined Rates | Allows the request to define its own currency rates. | | | +| Currency | Convert Currency Method | Allows adapters to convert bid floors to a different currency if needed. | | | | [Deals](/prebid-server/features/pbs-deals.html) | Core | Basic deal support, creating hb_deal targeting when appropriate. | | | | Deals | Deal prioritization | Supports the 'preferdeals' [targeting flag](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting) to give deals the priority when PBS returns ad server targeting. | | | | [AMP](/prebid-server/use-cases/pbs-amp.html) | Core | Reads and responds to the /openrtb2/amp endpoint | | | @@ -49,27 +49,27 @@ title: Prebid Server | Features | [Supply Chain](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#supply-chain-support) | Bidder-specific schains | Accepts bidder-specific schain | | | | Supply Chain | Host SChain | The host company can supply a global schain that's appended to the list of incoming nodes in source.ext.schain. | | | | Publisher Accounts | Core | Ability to enforce that requests coming in have a valid account ID. | | | -| Publisher Accounts | AMP account parameter | Accept the account parameter on the AMP request. | | | +| Publisher Accounts | AMP account parameter | Accept the account parameter on the AMP request. | | | | Publisher Accounts | Account-specific TTLs | Allow each account ID to have a custom PBC time-to-live for banner and video. | | | | [Video](/formats/video.html) | Core | Support for basic instream and outstream video: passes video parameters to adapters, stores VAST responses when instructed. | | | | Video | Outstream renderers | Support for bidders specifying their own renderers for outstream video. | | | | Video | Long-form video | Support for the [long-form video endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-video.html). | | | | Video | IAB advertiser category mapping | Able to map IAB advertiser categories to a supplied mapping table. | | | -| Video | [Echo video attributes](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#echo-storedrequest-video-attributes-pbs-java-only) | To support mobile video, copies stored request video attributes to the response. | | | +| Video | [Echo video attributes](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#echo-storedrequest-video-attributes-pbs-java-only) | To support mobile video, copies stored request video attributes to the response. | | | | [Interstitials](/prebid-server/features/pbs-interstitials.html) | Core | Support device.ext.prebid.interstitial.minwidthperc and device.ext.prebid.interstitial.minheightperc parameters, [dynamically updating the impression format object](https://github.com/prebid/prebid-server/issues/755) from a configurable list of sizes filtered by these parameters. | | | | [Aliases](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-aliases) | Core | Maps a biddercode on an incoming request to a specific server-side bid adapter named in the request or defined in config. | | | | Aliases | [GVL ID support](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#bidder-alias-gvl-ids-pbs-java-only) | Define the IAB GVL ID for an aliased biddercode. | | | | [User ID Sync](/prebid-server/developers/pbs-cookie-sync.html) | Core | Implements the /cookie_sync and /setuid endpoints. Bidders may choose either redirect or iframe method. | | | -| User ID Sync | Multi-Method | Bidders can supply both pixel redirects as well as iframe syncs. | | | -| User ID Sync | Cooperative sync | Does a pixel sync with more than just the bidders on the page. | | | +| User ID Sync | Multi-Method | Bidders can supply both pixel redirects as well as iframe syncs. | | | +| User ID Sync | Cooperative sync | Does a pixel sync with more than just the bidders on the page. | | | | User ID Permissions | Extended ID Permissions | Allows publishers to determine which bidders are allowed to receive which extended ID. | | | | User ID Sync | Account override | Allows accounts to override the cooperative sync feature and bidder limits. | | | | User ID | [EID Permissions](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#eid-permissions) | The Publisher can define which bidders receive which extended user IDs. | | | -| [Events](https://docs.google.com/document/d/1ry0X4C2EV-R0pMrm1IQk9BstxaT395UCl3KKqTGa5c8/edit#heading=h.7w5yevygp2gz) | Events | Ability to process the /event endpoint, place /event URLs in the OpenRTB response, and place /event URLs in VAST XML. | | | -| Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | -| Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | +| [Events](https://docs.google.com/document/d/1ry0X4C2EV-R0pMrm1IQk9BstxaT395UCl3KKqTGa5c8/edit#heading=h.7w5yevygp2gz) | Events | Ability to process the /event endpoint, place /event URLs in the OpenRTB response, and place /event URLs in VAST XML. | | | +| Events | Events vasttrack endpoint | Ability to process the /vasttrack endpoint initated by Prebid.js, placing /event URLs in VAST XML. | | | +| Events | Events BidID Generation | Some bidders don't generate unique enough BidIDs to join with auction events. This feature allows the host company to inject a PBS-generated BidID alongside the bidder-generated ID. | | | | Auction | [MultiBid](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#multibid-pbs-java-only) | Allow named bidders to supply more than one response. | | | -| Analytics | Analytics module support | Allows developers to plug in a [custom analytics adapter](/developers/pbs-build-an-analytics-adapter.html). | | | +| Analytics | Analytics module support | Allows developers to plug in a [custom analytics adapter](/prebid-server/developers/pbs-build-an-analytics-adapter.html). | | | | Bid Response Validation | Validate secure markup | PBS can configurably reject bid responses that don't supply a secure creative when in a secure context. | | | | Bid Response Validation | Validate bid sizes | PBS can configurably reject bid responses with sizes that are bigger than the request dimensions. | | | | [Bidder Info Endpoints](/prebid-server/endpoints/info/pbs-endpoint-info.html) | Core | Provides details on which bidders and parameters exist in this Prebid Server. | | | @@ -79,5 +79,7 @@ title: Prebid Server | Features | Operations | Circuit breaker | Protects system performance during fault scenarios by detecting problems with external and internal endpoints, turning them off temporarily when a problem occurs. | | | | Operations | [Server default request](/prebid-server/features/pbs-default-request.html) | Support global defaults for incoming requests. | | | | Operations | IPv6 | Support taking IPv6 addresses and forwarding them to bidders. | | | +| [Programmatic Guaranteed](/prebid-server/features/pg/pbs-pg-idx.html) | Integration and Targeting | Ability to load, target, and report PG line items | | | | Operations | [Request Logging Admin Endpoints](/troubleshooting/pbs-troubleshooting.html#request-logging) | Log a limited number of requests to understand the raw data clients are sending. | | | | Metadata | [x-prebid header](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#http-headers) | Put version information in outgoing HTTP headers. | | | +| Modules | [ortb2-blocking](/prebid-server/pbs-modules/ortb2-blocking.html) | Configure per-account OpenRTB blocking details. | | | diff --git a/prebid-server/features/pbs-privacy.md b/prebid-server/features/pbs-privacy.md index bceda67ffe..bc83cc5a6c 100644 --- a/prebid-server/features/pbs-privacy.md +++ b/prebid-server/features/pbs-privacy.md @@ -58,7 +58,7 @@ There are a number of GDPR configuration settings that PBS Host Companies must consider: - **GDPR enabled** - Allows the host company to turn off GDPR support. Default setting is enabled=true. -- **Default GDPR applies** - How Prebid Server should respond if the incoming request doesn't have the `gdpr` flag. (Note: this config is currently called `usersync_if_ambiguous` in PBS-Go and gdpr.default-value in PBS-Java.) +- **Default GDPR applies** - How Prebid Server should respond if the incoming request doesn't have the `gdpr` flag. (Note: this config is currently called `gdpr.default_value` in PBS-Go and `gdpr.default-value` in PBS-Java.) - **Host company GVL ID** - Currently PBS requires the host company to have a GVL-ID or the setting of the `uids` cookie in GDPR scope will fail. - **GDPR enforcement flags** - for each Purpose - **Host Cookie TTL** - The default expiration time of the `uids` cookie set in the host company domain should be defined to match what's in the TCF 2.1 `maxCookieAgeSeconds` GVL field. (This is the host-cookie.ttl-days setting in both Go and Java.) diff --git a/prebid-server/features/pbs-storedreqs.md b/prebid-server/features/pbs-storedreqs.md index 966eace171..822b9b5237 100644 --- a/prebid-server/features/pbs-storedreqs.md +++ b/prebid-server/features/pbs-storedreqs.md @@ -8,27 +8,35 @@ title: Prebid Server | Features | Stored Requests # Prebid Server | Features | Stored Requests 'Stored Requests' are blocks of OpenRTB stored on the server-side that are merged into -OpenRTB requests in a couple of scenarios. +OpenRTB requests for Mobile App and AMP scenarios. The data source can be local files on Prebid Server, but more commonly it would be a relational database distributed across all the Prebid Servers in the host company's installation. ## Mobile App -Hardcoding bidders and parameters in a mobile app isn't ideal. Prebid Server allows Stored Request IDs to be -used in two ways: +We want to avoid hardcoding parameters into a mobile app like bidders and parameters. Because of this, Prebid Server allows host companies to store two types of JSON that are retrieved with a key called a 'Stored Request ID': -1. Define cross-adunit parameters like currency and price granularity -1. Define adunit-specific details: bidders and their parameters +- "top-level" requests, also called "wrapper-level" requests. This block is merged into the root level of the incoming ORTB request. It's not expected to have an imp object. +- "impression-level" requests are merged into a particular ORTB imp element. + +![App stored request model](/assets/images/prebid-server/stored-requests-app.png){: .pb-lg-img :} + +1. The SDK creates a 'skeleton' framework of the OpenRTB JSON that doesn't +contain the bidders or any other parameter that might be changed by AdOps. +2. Prebid Server merges all the stored requests into this template. +3. Creating the final OpenRTB JSON just like Prebid.js would have sent using the PBS Bid Adapter. See the [Mobile SDK Use Case reference](/prebid-server/use-cases/pbs-sdk.html) for specific examples. ## AMP The AMP protocol is converted to OpenRTB primarily using Stored Requests: the `tag_id` is used to look up -the base OpenRTB from the data source. After getting the bulk of the OpenRTB, AMP query string parameters +a single base OpenRTB from the data source. After getting the bulk of the OpenRTB, AMP query string parameters are used to inject and adjust parameters like size, url, etc. See the [AMP endpoint documentation](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html) for more details. +![AMP stored request model](/assets/images/prebid-server/stored-requests-amp.png){: .pb-lg-img :} + See the [AMP Use Case reference](/prebid-server/use-cases/pbs-amp.html) for specific examples. ## Creating Stored Requests diff --git a/prebid-server/features/pg/pbs-pg-bidder.md b/prebid-server/features/pg/pbs-pg-bidder.md new file mode 100644 index 0000000000..88e4dc53ec --- /dev/null +++ b/prebid-server/features/pg/pbs-pg-bidder.md @@ -0,0 +1,141 @@ +--- +layout: page_v2 +sidebarType: 5 +title: Building a PG Bidder +--- + +# Building a Programmatic Guaranteed Bidder +{: .no_toc} + +* TOC +{:toc} + +## What is a PG Bidder? + +The architecture of Prebid Programmatic Guaranteed (PG) is inherently multi-vendor. A PG `Host Company` runs a global distributed cluster of Prebid Servers. These servers handle the 'real-time' requests... those that need to have millisecond response times. They also run a couple of backend servers that help manage the PG line items. One of them +is called the `General Planner`. The General Planner can connect out to multiple sources of PG Line Items, and that's where you come in -- as a PG Bidder, you can contribute PG Line Items into the auction ecosystem for the publishers who utilize the Host Company's installation. +Here's a diagram from the [white paper](https://files.prebid.org/pg/Prebid_Programmatic_Guaranteed_White_Paper.pdf). + +![PG High Level Framework](/assets/images/prebid-server/pg/pg-arch-2.png){: .pb-lg-img :} + +1. The PG Host Company runs clusters of Prebid Servers that receive requests from publishers. +2. Prebid Servers look up additional data for use in targeting. +3. The General Planner queries your PG Bidder endpoint and allocates your line items across the Prebid Server clusters. +4. The `Delivery Stats Service` is available for PG Bidders to obtain up-to-date reports on how line items are delivering. +5. The `Dimension Value API` should be used by bidders to create targeting values. +6. Each PG Bidder has it's own logic for pacing their line items in 1 or 5-minute increments called "plans". +7. The publisher or a service team enter the PG Line Items into the PG Bidder's user interface. + +Notes: +- It's possible that you could deliver PG Line Items through more than one PG Host Company. +- It it the responsibility of the PG Bidder to manage their own finance arrangements with each Publisher. +- It's possible that the Host Company may charge a fee to deliver PG Line Items through their infrastructure. + +## What's involved in building a PG Bidder? + +These are the high level steps for how to develop a PG Bidder and plug it into a Host Company's implementation. + +1. Contact a PG Host Company to make sure they're ready to incorporate a new PG Bidder. They may have additional requirements. +1. Obtain access to the Host Company's Dimension Value API and Delivery Stats server. You will receive a "biddercode" similar to the codes used in Prebid.js. e.g. "pgExample". +1. Develop a User Interface for the customer to enter PG info: date range, targeting details, price, and pacing details. The targeting information comes from the Host Company's Dimension Value API. +1. Develop a pacing algorithm that uses data from the Host Company's Delivery Stats server and your own data stores. +1. Develop a report that uses data from the Host Company's Delivery Stats server and your own data stores. +1. Develop an external API that can respond to requests from the Host Company's General Planner for line item data. +1. Develop a method for estimating inventory forecast and availability. The Host Company may have data available. +1. Contact the Host Company to begin integration testing. + +### Obtain targeting dimensions + +The Host Company will give PG Bidders access to their Dimension Value API which will let them know what attributes and values their Prebid Servers can target at runtime for particular clients. +The values used will differ between Host Companies and publishers. For example, there may be different geographic and device info services. Publisher AdSlot and First Party Data fields will also vary. + +Once granted authenticated access to the Dimension Value endpoint, you'll use the it to query it to get attribute names and values specific to the accounts you're working with. e.g. + +- GET /dim-val/api/v2/attr/names?account=1001 +- GET /dim-val/api/v2/attr/values?account=1001 + +There are various options for filtering data. See the [Dimension Value API documentation](https://github.rp-core.com/ContainerTag/pg-dim-val-api/blob/master-rubicon/docs/server_endpoints.md) for more details. + +{: .alert.alert-info :} +In order to access client-specific targeting data, you'll need to know the account ID the Host Company uses for each publisher. + +See [PG Targeting Syntax](/prebid-server/features/pg/pbs-pg-targeting.html) for a list of targeting attributes you may be able +to get from the PG Host Company and how to format them as part of the [PG Plan](/prebid-server/features/pg/pbs-pg-plan.html). + +### Getting data from the Delivery Stats Service + +There are two reasons PG Bidders need data from the Host Company's PG Delivery Stats Service: + +1. **Line Item reporting**: detailed info is available about where in the delivery funnel each Line Item is getting attention or running into problems. See the [PG Glossary](/prebid-server/features/pg/pbs-pg-glossary.html#metrics) for which statistics you can expect. +1. **Inform the pacing algorithm**: in order to write a robust and responsive pacing algorithm, the PG Bidder is going to need fresh data. If the bidder's impression data stream is real-time, that may be enough. If not, the Host Company's Delivery Stats server can provide recent (5-minute) summaries of important metrics like tokens spend and bidsWon. See [PG Plans](/prebid-server/features/pg/pbs-pg-plan.html) for more details. + +Some example Delivery Stats queries: + +- GET /del-stats-summ/api/v1/report/line-item-summary?startTime=YYYY-MM-DDT00:00:00.000Z -- this returns an hourly aggregration for all of your line items since the specified time. See the [Line Item Summary Report endpoint documentation](https://github.rp-core.com/ContainerTag/pg-del-stats-svc/blob/master-rubicon/docs/line_item_summary_endpoint.md) for more info. +- GET /del-stats-pa/api/v2/report/delivery?bidderCode=pgExample&startTime=YYYY-MM-DDT00:00:00.000Z -- this returns 5-minute aggregations for all of your line items since the specified time. See the [Delivery Report endpoint documentation](https://github.rp-core.com/ContainerTag/pg-del-stats-svc/blob/master-rubicon/docs/delivery_report_endpoints.md) + + +### Answering General Planner requests + +When the PG Bidder is ready for integration with the Host Company, they'll provide an authenticated secure endpoint that will answer requests from the Host Company's General Planner. +The path of this endpoint can be anything you'd like. It will receive these query string parameters: + +{: .table .table-bordered .table-striped } +| Parameter | Format | Required? | Description | +| --- | --- | --- | --- | +| since | string | no | Timestamp in ISO-8601 format. For example, 2019-02-01T03:00:00.000Z. Service should respond with all meta data for active or nearly-active line items and schedules that got updated since this timestamp. Absence of this parameter signals request to return all active or nearly-active line items. | +| hours | string | no | Number of hours of plans desired i.e. provide the next 3 hours worth of plans | + +Here's an [example JSON response](https://github.rp-core.com/ContainerTag/pg-general-planner/blob/master-rubicon/docs/samples/pa_rsp.json) that might come from your bidder planner. + +At this point, your endpoint needs to respond quickly with the most recently calculated set of PG line item pacing plans. A `plan` is a set +of instructions to Prebid Server that tells the system how often to serve +a line item in a given period. e.g. "serve LineA 50 times from noon-12:05, 55 times from 12:05-12:10, ..." + +The General Planner will be configured to call your endpoint every 1-10 minutes depending on the Host Company. + +See [PG Plan Definition](/prebid-server/features/pg/pbs-pg-plan.html) for more details. + +### General notes on writing a pacing algorithm + +At a high level, pacing a line item seems like it might be simple: + +``` +NumberOfImpressionsEach5MinPeriod=TotalImpressionsRemaining+3percentBuffer / NumberOf5MinPeriodsRemaining +``` + +But this approach wouldn't perform well: +- When the line falls behind, it won't take advantage of higher traffic periods to catch up. It will fall behind during normal low-traffic periods, saving all impressions for the last minute. +- As covered in the description of [tokens](/prebid-server/features/pg/pbs-pg-plan.html#tokens), a PG line item cannot assume that it'll be chosen every time it's offered to the ad server. Prebid PG paces based on tokens, not impressions, so the pacing algorithm needs to estimate how many times each line item needs to be offered to the ad server in order to land a final certified impression. + +Likewise, another naive approach is to try and immediately catch up to the "even delivery" line: +``` +ImpressionDeficit=TotalImpressions+3percentBuffer - TotalImpressionsShouldHaveByNow + +NumberOfImpressionsThis5MinPeriod=ImpressionDeficit * NoiseFactor +``` + +Potential problems with this algorithm: +- If it falls far behind, it could be overly aggressive in trying to catch up, affecting the delivery of other line items. +- If it gets ahead somehow, it will stop delivering entirely until time catches up to the delivery curve. + +Here are some examples of desirable delivery patterns: + +![Desirable delivery patterns](/assets/images/prebid-server/pg/pg-good-delivery.png){: .pb-lg-img :} + +And these are examples of delivery patterns to avoid: + +![Undesirable delivery patterns](/assets/images/prebid-server/pg/pg-bad-delivery.png){: .pb-lg-img :} + +For more information, see the "Plans" section of the [Intro to PG Whitepaper](https://files.prebid.org/pg/Prebid_Programmatic_Guaranteed_White_Paper.pdf). + +{: .alert.alert-warning :} +The PG Host Company may require periodic of testing with your pacing algorithm because undesirable +token management from on PG Bidder could affect line item delivery from other PG Bidders. + +## Related Topics + +- [PG Home Page](/prebid-server/features/pg/pbs-pg-idx.html) +- [PG Plans](/prebid-server/features/pg/pbs-pg-plan.html) +- [PG Glossary](/prebid-server/features/pg/pbs-pg-glossary.html) +- [PG Targeting](/prebid-server/features/pg/pbs-pg-targeting.html) diff --git a/prebid-server/features/pg/pbs-pg-glossary.md b/prebid-server/features/pg/pbs-pg-glossary.md new file mode 100644 index 0000000000..c4dd2df468 --- /dev/null +++ b/prebid-server/features/pg/pbs-pg-glossary.md @@ -0,0 +1,80 @@ +--- +layout: page_v2 +sidebarType: 5 +title: Programmatic Guaranteed Glossary +--- + +# Programmatic Guaranteed Glossary +{: .no_toc} + +* TOC +{:toc} + +## Basic terminology + +- **Programmatic Ad** - an ad request that flows through the multi-vendor ad tech ecosystem +- **Guaranteed** - A buyer and seller have entered into a contract: to deliver a certain amount of impressions to a particular target over a particular date range. If contract isn't met, there may be financial penalties or extra impressions. +- **PG Host Company** - the entity running the Prebid PG software: Prebid Servers, General Planner, Delivery Stats, and Dimension Value API. +- **Prebid Ad Slot** - the "hole in the page" that's requesting an ad (note: this is not currently standard Prebid.org terminology). +- **Prebid Ad Unit** - a package of bidding parameters that defines which bidders and bid parameters are to be used for a specific "hole in the page". +- **Client Requests** - OpenRTB-like network calls from a client to the Prebid Server requesting one or more auctions. +- **Auction Requests** - a single OpenRTB ad request may contain 1 or more 'imp' blocks that define different auction scenarios. Each of these blocks is an "auction". Auctions are sent to one or more bidders and are associated with auction parameters for each bidder. +- **PG Bidder** - the ad exchange, demand side platform, or other bid source that directly or indirectly connects the Auction Request to a bid. Example bidders include Magnite, Criteo, etc. +- **Bidder Parameters** - the specific parameters required by the bidder describing the auction to take place. The Rubicon account, site, and zone are example parameters. +- **PG Line Item** - the base unit of ad delivery has a goal, date range, target, creatives, deal ID, and pacing options. +- **AdServer Line Item** - corresponding to the PG Line Item, the AdServer has a similar line item which prioritizes the PG Line Item in relation to other direct-sold agreements. It may also have a goal and date range, but the targeting will be just to the deal ID, not the full PG target. The creative is the Prebid-standard creative instead of the actual creative. +- **Deal** - an agreement between a buyer and a seller. In the PG context, a Deal may be comprised of 1 or more line items for different media types, targets, date ranges, etc. Since most bidders won't understand "line items", a candidate Deal ID is likely to be what's passed to each bidder. +- **Line Item Type** - sponsorship, guaranteed, non-guaranteed, house. +- **Creative** - the actual ad that will be seen by an end user. May be an image, HTML, video, or native. +- **Target** - a description of the specific sites, user, device, and geographic characteristics a line item is aimed at. +- **Goal** - How many total impressions a campaign line needs to serve +- **Bonus** - Extra impressions assigned to a campaign line to make sure it delivers at least the total goal. This may be stated as a percentage or a number of impressions. Bonus is important to make sure that impression counting discrepancies don't cause the campaign to be perceived as missing its goal. +- **Goal Type** - which metric is used to meet the goal. (i.e. wins or views) +- **Start and End Datetime** - the date range for the campaign could include starting and ending mid-day. Each campaign may also be associated with a timezone. +- **Delivery Type** - defines the general shape of the desired delivery curve: + - even delivery - impressions are roughly equal each day of the campaign + - front-loaded delivery - there may be more impressions delivered in the early days of the campaign + - as-soon-as-possible - serve this thing whenever there's a chance +- **Historic Delivery** - Number of impressions a line delivered until the end of previous day. +- **Deficit** - The number of impressions a line is behind due to lack of overall inventory, existence of road-blocks, or other reason. +- **Late Deficit** - Number of impressions that a line is behind due to trafficking reasons, normally late creative. We may choose to catch up on a late deficit differently than other kinds of deficits because it's the fault of the advertiser, and it could affect other campaigns. +- **Priority** - a way of ranking competing line items against each other. +- **Oversold** - one or more guaranteed line items are struggling and are unlikely to reach their goals. In some cases it may be better to let some of the line items finish at the expense of others, while in other scenarios it's better to distribute what's available. +- **Underdelivery** - when a line item is not serving enough impressions to meet its goal. +- **Overdelivery** - when a line item is serving too many impressions, or has met its delivery goal too early. +- **Frequency Cap** - how often a given user is allowed to see the advertising message. +- **Discrepancy** - impressions are counted by multiple systems which often different from each other by a few percent. The buyer and seller agree on which numbers are billable. The ad system needs to deliver enough impressions that the goal is met in the system-of-record. +- **Ad Inventory** - the combined set of attributes supplied with an ad request, whether direct or indirect. e.g. page context, user info, device info, etc. Line Item 'Targets' inspect these inventory attributes for matching. +- **Forecast** - how much inventory of a particular type is expected to come in over a specified time period. e.g. "how many 300x250 ad requests from example.com will come from Windows machines next week?" +- **Commitment** - a guaranteed line item that the publisher has promised to deliver to an advertiser. +- **Availability** - starts with the Projection, but removes traffic that's already sold to other committed line items. +- **Availability Buffer** - a safety factor to recognize that projections are always an estimate, and only the most sophisticated delivery systems can properly support the juggling involved in tightly sold overlapping inventory. + +## Metrics + +The basic design of the metrics offered by the PG system is a funnel that allows us to see where a line item's chance to deliver may be struggling. Here are the metrics available: + +- **clientAuctions** - the total number of auction impression requests seen by the system across all accounts. A single HTTPS request to PBS may contain multiple auction requests – this number basically reflects all auctions taking place. +- **accountAuctions** - the number of auctions taking place for the specific Rubicon Project account ID +- **domainMatched** - the number of times the domain portion of this line item's target matched an impression request. e.g. "1000 auctions for example.com". If there is no domain targeting, this number should be the same as accountAuctions. +- **targetMatched** - the number of times the line item's entire target matched a request. +- **targetMatchedButFcapped** - the number of times the line item's entire target matched a request, but the user ad already reached their personal frequency cap limit for this line item. +- **targetMatchedButFcapLookupFailed** - the number of times the line item's entire target matched a request, but was removed from consideration because the lines item has a frequency cap and the lookup to the Frequency Capping system failed. +- **pacingDeferred** - Prebid has taken the line item out of consideration in order to make sure it's not delivering too often +- **sentToBidder** - only the top few matching line items or deals will be sent to each bidder. This metric indicates whether the line item was in the top few. +- **sentToBidderAsTopMatch** - if the line item was considered most ready to serve by Prebid Server before going to the bidder, this metric will be incremented. +- **receivedFromBidder** - this metric indicates whether the bidder chose this deal/line item from the candidates sent to it. Bidders may reject any suggested Deal ID or fail to respond. +- **receivedFromBidderInvalidated** - indicates the number of times this deal/line item was received from a bidder, but rejected by Prebid Server for any reason. Rejection reasons include: incorrect size for auction, target didn't match, ahead of pace and not ready to serve. +- **sentToClient** - indicates how many times this line item was sent as the bidder's top match to the client, and therefore the ad server. +- **sentToClientAsTopMatch** - indicates how many times this line item was sent to the client/ad server flagged by Prebid Server as the most eligible PG line item. +- **lostToLineItems** - this array provides a measure of which competing line items have been considered more eligible to serve than this line item +- **events** - how many times this line item received notification of the stated event type. For now only the only supported event type is "win", but eventually there may be other types like "click", "video 50% played", etc. + +Here's a graphical representation showing what point in the delivery funnel each of these metrics measures: + +![PG Metrics](/assets/images/prebid-server/pg/pg-metrics.png){: .pb-xlg-img :} + +## Related Topics + +- [PG Home Page](/prebid-server/features/pg/pbs-pg-idx.html) +- [PG White Paper](https://files.prebid.org/pg/Prebid_Programmatic_Guaranteed_White_Paper.pdf) diff --git a/prebid-server/features/pg/pbs-pg-host.md b/prebid-server/features/pg/pbs-pg-host.md new file mode 100644 index 0000000000..3abf6b3d5e --- /dev/null +++ b/prebid-server/features/pg/pbs-pg-host.md @@ -0,0 +1,67 @@ +--- +layout: page_v2 +sidebarType: 5 +title: Becoming a PG Host Company +--- + +# Becoming a PG Host Company +{: .no_toc} + +* TOC +{:toc} + +## Overview + +Prebid PG is open source, so anyone can spin up the 4 different types of servers +needed to offer a PG service. + +1. Prebid Servers handle the real-time mix of open market and PG auctions. +1. The General Planner collects PG line items from one or more PG Bidders. +1. The Delivery Stats Service provides pacing and reporting information. +1. The Dimension Value API provides the user interface the details required to build targets. + +See [Adding a PG Bidder](/prebid-server/features/pg/pbs-pg-bidder.html) for the +high level view of the components. + +As a PG Host Company, you will have expenses in running and maintaining a global high-performance cluster of servers and databases. You'll need at least one PG Bidder, +which might be one you build on your own or partner with someone else. You're under +no obligation to support other PG Bidders, but your publishers may request it. + +## Installing the Servers + +For now, the only information about building and running the servers is in +the relevant GitHub repos: + +- [Prebid Server Java](https://github.com/prebid/prebid-server-java). Note that Prebid Server Go doesn't currently support Programmatic Guaranteed. +- [General Planner](https://github.com/prebid/pg-general-planner) +- [Delivery Stats Service](https://github.com/prebid/pg-del-stats) +- [Dimension Value API](https://github.com/prebid/pg-dim-val-api) + +Prebid does not offer specific guidance about fault-tolerant architectures. +It's left up to each Host Company to determine what will happen if one of the servers goes down. i.e. Will there be load-balancing, automatic failover, a warm stand-by, or no fault tolerance? + +## General notes on testing the service + +There are a fair number of moving parts in a Prebid PG installation. Prebid.org +does not run a test cluster. Changes are made by Prebid member companies, which do +have test clusters, but they may not test every possible configuration. e.g. different databases, geographic lookup vendors, + +We recommend that PG Host Companies commit to regular testing of software updates +against their specific configuration. + +The testing of PG Bidders and their pacing algorithms may be important to you, +as publishers and advertisers care about the delivery patterns of their ad campaigns +in a variety of challenging scenarios. Prebid.org may have extended recommendations +about PG Bidder testing in the future, but in the meantime, you should consider +joining Prebid.org and chatting with the development teams involved. + +## Announcing your service + +When ready to open their doors for business, Prebid.org members can ask to +have their contact info added to the list of [PG Managed Services](/prebid-server/features/pg/pbs-pg-idx.html#list-of-pg-managed-services). + +## Related Topics + +- [PG Home Page](/prebid-server/features/pg/pbs-pg-idx.html) +- [PG White Paper](https://files.prebid.org/pg/Prebid_Programmatic_Guaranteed_White_Paper.pdf) +- [PG Glossary](/prebid-server/features/pg/pbs-pg-glossary.html) diff --git a/prebid-server/features/pg/pbs-pg-idx.md b/prebid-server/features/pg/pbs-pg-idx.md new file mode 100644 index 0000000000..391b4e0b38 --- /dev/null +++ b/prebid-server/features/pg/pbs-pg-idx.md @@ -0,0 +1,67 @@ +--- +layout: page_v2 +sidebarType: 5 +title: Prebid Programmatic Guaranteed +--- + +# Prebid Programmatic Guaranteed +{: .no_toc} + +* TOC +{:toc} + +## Prebid Programmatic Guaranteed +In general, Programmatic Guaranteed (PG) has existed for several years as an ad server-based function. +While anchoring PG in the ad server is helpful from a deployment perspective, +the lack of transparency and configurability in the ad server has slowed down product momentum +and made it harder for buyers and sellers to flexibly adjust their strategy and +configurations for PG deals. The introduction of open-source, standards-based +Programmatic Guaranteed, anchored in Prebid Sever, helps both buyers and sellers in +several key ways: + +- It allows publishers to utilize preferred partners and data in the Programmatic infrastructure. +- It streamlines the traditional RFP and I/O process between buyers and sellers +- It separates the pacing, capping and forecasting functions from the ad server so publishers can more easily control and modify deals +- Enables a seamless, software-based negotiation process between buyers and sellers +- Ensures easier interoperability with a wider universe of buy-side platforms + +At a high level, the system allows any **Host Company** running Prebid Server (only PBS-Java for now) to integrate open source components into their existing UIs and data delivery systems. + +In addition, the Host Company can support other **PG Bidders** connecting into their system to make their environment richer for publishers. + +![PG High Level Framework](/assets/images/prebid-server/pg/pg-arch-1.png){: .pb-sm-img :} + +We want to encourage an ecosystem where programmatic vendors can compete on their strengths: some companies may be excellent at hosting a technical infrastructure, while others may excel at usability, reporting, or delivery algorithms. + + +## PG For Publishers + +Publishers interested in trying Programmatic Guaranteed through Prebid should +contact one of the companies hosting a PG cluster. They'll explain how it all works and walk you through the setup process. + +### List of PG Managed Services + +If you're a publisher looking to try Programmatic Guaranteed or a PG bidder that wants to integrate into an existing cluster, here's a list of Prebid.org members to consider: + +- **Magnite** - contact your account representative or globalsupport@magnite.com + +## PG for Bidders + +If you have a demand source and are ready to implement a guaranteed delivery algorithm, learn how to [become a PG Bidder](/prebid-server/features/pg/pbs-pg-bidder.html). + +## Hosting your own PG Cluster + +If you're ready to host a global high-performance cluster, learn how to [become a PG Host Company](/prebid-server/features/pg/pbs-pg-host.html). + +## Questions? + +Contact prebid-server@prebid.org. + +## Related Topics + +- Intro to PG: [video](https://files.prebid.org/pg/PG_in_Prebid.mp4), [pdf](https://files.prebid.org/pg/PG_in_Prebid_Overview.pdf) +- [PG White Paper](https://files.prebid.org/pg/Prebid_Programmatic_Guaranteed_White_Paper.pdf) +- [Becoming a PG Bidder](/prebid-server/features/pg/pbs-pg-bidder.html) +- [Becoming a PG Host Company](/prebid-server/features/pg/pbs-pg-host.html) +- [PG Targeting](/prebid-server/features/pg/pbs-pg-targeting.html) +- [PG Glossary](/prebid-server/features/pg/pbs-pg-glossary.html) diff --git a/prebid-server/features/pg/pbs-pg-plan.md b/prebid-server/features/pg/pbs-pg-plan.md new file mode 100644 index 0000000000..8c9c9e045e --- /dev/null +++ b/prebid-server/features/pg/pbs-pg-plan.md @@ -0,0 +1,284 @@ +--- +layout: page_v2 +sidebarType: 5 +title: Programmatic Guaranteed Plans +--- + +# Programmatic Guaranteed Plans +{: .no_toc} + +* TOC +{:toc} + +## What is a PG Plan? + +A `Plan` is a set of instructions to Prebid Server that tells it how often to serve a PG line item in a given period. + +1. Plans are created by each [PG Bidder](/prebid-server/features/pg/pbs-pg-bidder.html) as an output of their bidder-specific pacing algorithm. +1. The 'General Planner' run by the Host Company will spread the Plan out across the cluster of Prebid Servers. +1. Each Prebid Server works to deliver its part of the Plan. + +Here's what one looks like at a high level: + +``` +[ + { + "lineItemId": "2291", + ... other line item attributes ... + deliverySchedule: [{ + "planId": "2656179", + "startTimeStamp": "2020-08-28T11:50:00.000Z", + "endTimeStamp": "2020-08-28T11:55:00.000Z", + "updatedTimeStamp": "2020-08-28T10:04:12.000Z", + "tokens": [{ + "class": 1, + "total": 50 + }] + },{ + ... next delivery schedule ... + }] + }, + ... next line item ... + } +] +``` + +The key parts of the Plan are: +- Line item details. (See [example](#annotated-plan-example) below) +- An array of Delivery Schedules broken into 5-minute periods +- Each 5-minute period defines a number of `tokens` that need to be delivered + +### Tokens + +A `token` is an ad impression scaled up to overcome delivery obstacles. + +When Prebid Server (PBS) sends a PG line item to the ad server, it might be +chosen to win, or maybe not. In either case, the act of sending a +line item to the ad server causes PBS to create a "cool down" period for that +line item. This is what pacing is all about -- making sure that delivery of the +daily impression goal doesn't complete 20 minutes after midnight. PG delivery +needs to be spread through the day, through the hour, and through each 5-minute period. + +If we could guarantee that the ad server would choose the PG line item to win every time, +we wouldn't need tokens... PG could just use impressions. But that's not the case. There are several reasons why a candidate PG line item might not end up +getting a final certified ad impression: +- competing line items in the ad server +- competing PG line items from another vendor +- user leaves the page before ad render +- the impression may be discounted as non-human traffic + +Basically, the pacing algorithms are working in a "noisy" environment. Not only are there +many things that can get in the way of delivering a certified an ad impression, +conditions can change rapidly, e.g. competing line items may start or stop, or the DSP may change its bidding pattern. + +So a "token" is Prebid PG's way of dealing with noise in the system. +Instead of being satifisfied with offering a PG line item to the ad server +and assuming that it will become a certified impression, PG operates in tokens instead, knowing that some of those opportunities won't materialize. +You can think of it in terms of this basic formula: + +``` +Tokens = ImpressionsNeeded * Noise +``` + +Where the "noise" factor is how many tokens it's currently taking to get an ad +impression through the gauntlet of challenges. Determining this noise factor +is part of what the pacing algorithm needs to do -- adjusting it in real time +as needed. e.g. if it's been taking 2 trips to the ad server to get a "bid won", the noise factor is 2, so in a plan that requires 50 impressions, there would be 100 tokens. +You might wonder "why doesn't Prebid Server just take care of this?" Because Prebid Server is stateless... useful statistics are forwarded from hundreds of front-end servers and it's the job of the backend servers to aggregate and use that data. + +Of course noise could be infinite. For example, if there's a 'roadblock' +ad in the ad server, it's possible that a PG line item will just stop delivering +entirely for a day or more, and that's ok. But even though noise can be infinite, +tokens cannot be. The Host Company will cap tokens at some reasonable level, +but the best strategy for the infinite noise scenario is to give up and use a +very small token count, waiting for when the problem has lifted. + +A good real-time way to monitor noise is to compare two fields +in the Delivery Stats reports: sentToClientAsTopMatch vs events.bidsWon. (See the [glossary.](/prebid-server/features/pg/pbs-pg-glossary.html#metrics)) These values +are indications of how many times the line item was offered to the ad server +and accepted. But this value may also be tempered with data from your +clean financial pipeline that compares certified impressions with events.bidsWon. + +### Plan Attributes + +These are the attributes that are part of a Plan. See below for an [annotated example](#annotated-plan-example). + +{: .table .table-bordered .table-striped } +| Attribute | Required? | Description | Data Type | +| --- | --- |--- |--- | +| lineItemId | yes | Bidder-specific ID for this line item | string | +| source | yes | Your PG bidder code. e.g. "pgBidderA" | string | +| status | yes | Whether this line item is currently "active" or not. The only value that matters to the General Planner is "active". Any other value will cause the line item to be ignored. | string | +| dealId | yes | Bidder-specific deal ID. Note that a Deal ID may be used by multiple line items. | string | +| accountId | yes | Host Company-specific value for the publisher. | string | +| price.cpm | yes | The CPM of the line item. | float | +| price.currency | yes | The currency for the CPM of the line item. | string | +| relativePriority | yes | Relative ranking specific to your pacing algorithm. You can put every line item at the same priority, or create 1000 different levels managed by your pacing algorithm. | integer | +| sizes | yes | An array of creative sizes associated with the line item. e.g. `[{"w": 468,"h": 60},{"w": 728,"h": 90}]` | array of objects | +| frequencyCaps.fcapId | no | Bidder-specific frequency cap ID. Needs to be uniqueo within your line items. | string | +| frequencyCaps.count | no | How many impressions can be served | integer | +| frequencyCaps.periods | no | Over how many periods | integer | +| frequencyCaps.periodType | no | Period length. E.g. "day" or "hour" | string | +| targeting | yes | Defines which ad requests are of interest to this line item. See [PG Targeting](/prebid-server/features/pg/pbs-pg-targeting.html) | object | +| startTimeStamp | yes | Line start time in UTC. e.g. 2020-08-28T07:22:14.000Z | string | +| endTimeStamp | yes | Line end time in UTC. | string | +| updatedTimeStamp | no | When this plan was last modified. | string | +| deliverySchedules | yes | array of objects | +| deliverySchedules.planId | yes? | Bidder-specific ID for use in debugging. Should be unique. | string | +| deliverySchedules.startTimeStamp | yes | Start time of plan period in UTC | string | +| deliverySchedules.endTimeStamp | yes | End time of plan period in UTC | string | +| deliverySchedules.updatedTimeStamp | no | When this plan period was last modified.| string | +| deliverySchedules.tokens.class | no | For future use. Set to 1 for now. | integer | +| deliverySchedules.tokens.total | yes | Token count (Impressions * Noise) for this plan period. | integer | + +## Plans and the General Planner + +The General Planner will poll the PG Bidder endpoint frequently - e.g. every minute or every 5-minutes. The exact period will be determined between you and the Host Company, but it needs to be often because pacing line items is a dynamic business. +Even though it will be contacted frequently, they should still generate +several hours worth of the delivery schedule in case communication breaks down somehow. + +Once it receives the Plan, the General Planner will split up the tokens across +Prebid Servers. When a line item first starts, it does this in a really blunt way: just divides them evenly across the servers. But it will soon start adjusting for geographic differences +in line item delivery. e.g. if a line item only serves tokens in Europe, the Prebid Servers in Europe will get all the tokens within a few cycles. + +## Plans and Prebid Server + +Each PBS polls the General Planner once per minute, getting new and updated Plans. +Here's how it works: + +1. When an auction request comes in, check to see if the account has any active PG line items. If it doesn't, process the request normally. +2. If it is an account with active PG line items, enhance the request with geographic, device, user, and frequency capping information +3. Find out which PG line items have targets that match the current request +4. Loop through the matching line items + 1. Increment the "targetMatched" metric. + 1. If the PG line item has a frequency cap and there's no user ID or the lookup failed, increment the "targetMatchedButFcapLookupFailed" metric and take it off the list. + 1. If the PG line item has a frequency cap and it's met the cap, increment the "targetMatchedButFcapped" metric and take it off the list. + 1. If the PG line item is in "cool-down", increment the "pacingDeferred" metric and take it off the list +5. Sort the remaining line items into priority order based on the PG-bidder-provided "relative priority", with a random secondary sort. +6. Take the first 3 PG line items for each PG Bidder and send them the relevant bid adapter, incrementing the "sentToBidder" metric for each, and the "sentToBidderAsTopMatch" metric for one of them. +7. Wait for the auction delay for the results. Increment "receivedFromBidder" and "receivedFromBidderInvalidated" metrics as appropriate. +8. Take the highest priority bid from each PG Bidder and prepare ad server targeting. Increment the "sentToClient" metric. +9. If there's more than one bid from a PG Bidder, randomly choose one to be the overall winner and increment the "sentToClientAsTopMatch" metric. Only this line item is considered to have spent a token and is put into "cool-down": PBS calculates how many milliseconds it needs to wait before offering this line item to the ad server again. + +{: .alert.alert-info :} +Random numbers are used at a couple of points in the PG algorithm. This is to avoid choosing the same aggressive-but-blocked line item every time. + +## Annotated Plan Example + +Here's a complete example of a Plan with all line item and delivery schedule fields. + +``` +[ // each line item has a plan entry + { + "lineItemId": "2291", // this is specific to your internal systems + "dealId": "710216", // also specific to your internal systems + "accountId": "1001", // the Host Company's account ID for the publisher + "price": { + "cpm": 7.29, + "currency": "EUR" + }, + "relativePriority": 2, // relative stacking specific to your pacing algorithm + "sizes": [{ // creative sizes + "w": 468, + "h": 60 + }, + { + "w": 728, + "h": 90 + } + ], + "frequencyCaps": [{ // Host Company may support multiple cap levels + "fcapId": "LI-2291", // ID specific to your system + "count": 2, // show no more than 2 times per 1 day + "periods": 1, + "periodType": "day" + } + ], + "targeting": { // Line Item targeting + "$and": [{ + "adunit.size": { + "$intersects": [{ + "h": 60, + "w": 468 + }, + { + "h": 90, + "w": 728 + } + ] + } + },{ + "adunit.mediatype": { + "$intersects": [ + "banner" + ] + } + },{ + "device.ext.deviceatlas.browser": { + "$in": [ + "Chrome", + "Firefox" + ] + } + },{ + "device.geo.ext.netacuity.country": { + "$in": [ + "us", + "jp" + ] + } + },{ + "adunit.adslot": { + "$in": [ + "/1111/QA_Tests" + ] + } + } + ] + }, + "startTimeStamp": "2020-08-28T07:22:14.000Z", // line start time in UTC + "endTimeStamp": "2020-08-30T17:22:14.000Z", // line end time in UTC + "updatedTimeStamp": "2020-08-28T06:22:15.000Z", + "deliverySchedules": [ // now starts the plans + { + "planId": "2656177", // ID is specific to your system + "startTimeStamp": "2020-08-28T11:40:00.000Z", // UTC 11:40 to 11:45 + "endTimeStamp": "2020-08-28T11:45:00.000Z", + "updatedTimeStamp": "2020-08-28T11:36:30.000Z", + "tokens": [ + { + "class": 1, // always 1 for now + "total": 8 // number of tokens + } + ] + }, + { + "planId": "2656178", + "startTimeStamp": "2020-08-28T11:45:00.000Z", // UTC 11:45 to 11:50 + "endTimeStamp": "2020-08-28T11:50:00.000Z", + "updatedTimeStamp": "2020-08-28T11:38:19.000Z", + "tokens": [ + { + "class": 1, + "total": 10 + } + ] + },{ + ... more plans ... + } + ], + "source": "pgBidderCode", + "status": "active" + }, + { + ... next line item ... + } +] +``` + +## Related Topics + +- [PG Home Page](/prebid-server/features/pg/pbs-pg-idx.html) +- [Becoming a PG Bidder](/prebid-server/features/pg/pbs-pg-bidder.html) +- [PG Targeting](/prebid-server/features/pg/pbs-pg-targeting.html) +- [PG Glossary](/prebid-server/features/pg/pbs-pg-glossary.html) diff --git a/prebid-server/features/pg/pbs-pg-targeting.md b/prebid-server/features/pg/pbs-pg-targeting.md new file mode 100644 index 0000000000..dd8157733a --- /dev/null +++ b/prebid-server/features/pg/pbs-pg-targeting.md @@ -0,0 +1,177 @@ +--- +layout: page_v2 +sidebarType: 5 +title: Programmatic Guaranteed Targeting Syntax +--- + +# Programmatic Guaranteed Targeting Syntax +{: .no_toc} + +* TOC +{:toc} + +## Overview + +Targeting is the ability for Prebid Server (PBS) to match PG line items with +incoming OpenRTB auction requests. + +Here's a simple example target that says this line item will match any request for a 300x250 banner: + +``` +{ + "$and": [ + { + "adunit.size": {"$intersects": [{"w": 300,"h": 250}]} + }, + { + "adunit.mediatype": {"$intersects": ["banner"]} + } + ] +} +``` + +In general, the syntax is: +``` +{ + "$and/$or": [ + { "ATTRIBUTE": { "OPERATOR": CONDITION } }, + "$and/$or": [ ... ], + "$not": { "ATTRIBUTE": { "OPERATOR": CONDITION } } + ] +} +``` +Here are the supported OPERATORs: + +{: .table .table-bordered .table-striped } +| Operator | Description | Attribute Datatype | Condition Datatype | Example | +| --- | --- | --- | --- | +| $matches | True if the scalar ATTRIBUTE is the same as the CONDITION, or matches with an asterisk wildcard. | string | string | "$matches": "{::nomarkdown}*sports*{:/}" | +| $in | True if the scalar ATTRIBUTE is on the CONDITION's array. | string | array of strings | "$in": ["a","b"] | +| $intersects | True if at least one value from the ATTRIBUTE's array is on the CONDITION's array | array of strings | array of strings | "$intersects": ["hockey","soccer"] | +| $within | True if user's lat/long are available and within the circle defined by the CONDITION. | from geolookup service | object with attributes: lat, lon, and radiusMiles | "$within": {"lat": 123.456,"lon": 789.123,"radiusMiles": 50} | + +## Targeting Attributes + +The full list of attributes supported by Prebid Server may differ by PG Host Company because they might use different geographic and device information services. But here's an example list: + +{: .table .table-bordered .table-striped } +| Attribute | Description | Encoding | PBS Source | OpenRTB path | Operators | +| --- | --- | --- | --- | --- | --- | +| adunit.size | Ad Sizes | [{w: 300, h: 250},...] | OpenRTB | imp[].banner.format[] | intersects | +| adunit.mediatype | Mediatype | string | OpenRTB | mediatype="banner" if imp.banner exists. mediatype="video-instream" if imp.video exists and placement is 1. mediatype="video-outstream" if imp.video exists and placement is <> 1. mediatype="native" if imp.native exists | intersects | +| adunit.adslot | The ad server slot name | string | OpenRTB | imp[].ext.context.data.pbadslot | in, matches | +| site.domain | Site domain | string | OpenRTB | site.domain | in, matches | +| site.referrer | Referring URL | string | OpenRTB | site.page | in, matches | +| app.bundle | Mobile application bundle | string | OpenRTB | app.bundle | in, matches | +| pos | Page position | 0=unknown, 1=ATF, 3=BTF | OpenRTB | imp.banner.pos | in | +| geo.distance | User's lat/lon is within a defined circle | none | Geo vendor | device.geo.lat, device.geo.lon | within | +| device.geo.ext.VENDOR.country | Country | string | Geo vendor | device.geo.ext.VENDOR.country | in| +| device.geo.ext.VENDOR.region | Region | string | Geo vendor | device.geo.ext.VENDOR.region | in| +| device.geo.ext.VENDOR.metro | Metro (DMA) | string | Geo vendor | device.geo.ext.VENDOR.metro | in| +| device.geo.ext.VENDOR.city | City | string | Geo vendor | device.geo.ext.VENDOR.city | in| +| device.geo.ext.VENDOR.zip | Postal Code | string | Geo vendor | device.geo.ext.VENDOR.zip | in| +| device.ext.VENDOR.connspeed | Connection Speed | string | Device vendor | device.ext.VENDOR.connspeed | in| +| device.ext.VENDOR.type | Device Type | string | Device vendor | device.ext.VENDOR.type | in| +| device.ext.VENDOR.make | Device Make | string | Device vendor | device.ext.VENDOR.make | in| +| device.ext.VENDOR.model | Device Model | string | Device vendor | device.ext.VENDOR.model | in| +| device.ext.VENDOR.os | Operating System | string | Device vendor | device.ext.VENDOR.os | in| +| device.ext.VENDOR.browser | Browser | string | Device vendor | device.ext.VENDOR.browser | in| +| device.ext.VENDOR.browserver | Browser Version | string | Device vendor | device.ext.VENDOR.browserver | in| +| device.ext.VENDOR.language | Device Language | string | Device vendor | device.ext.VENDOR.language | in| +| device.ext.VENDOR.osver | Operating System Version | string | Device vendor | device.ext.VENDOR.osver | in| +| device.ext.VENDOR.carrier | Internet Carrier | string | Device vendor | device.ext.VENDOR.carrier | in| +| user.ext.time.userdow | User Day of Week | 1=sun, 7=sat | Geo vendor + clock | user.ext.time.userdow | in| +| user.ext.time.userhour | User Hour | 0-23 |Geo vendor + clock | user.ext.time.userhour | in| +| ufpd.ATTR | User First Party Data | string | OpenRTB | user.ATTR or user.ext.data.ATTR | in, matches, intersects | +| sfpd.ATTR | Site First Party Data | string | OpenRTB | imp[].ext.context.data.ATTR=VAL OR site.ext.data.ATTR=VAL OR app.ext.data.ATTR=VAL | in, matches, intersects | +| segment.SOURCE | User Segment Data | string | OpenRTB | user.data[].id=SOURCE AND VALUE in user.data[].segment[].id | intersects | +| bidp.BIDDER.ATTR | Bid Parameter Data | string | OpenRTB | imp[].ext.BIDDER.ATTR | in, matches, intersects| + +## Targeting Syntax + +Here's an example of a ridiculously specific target that uses most of the +attributes and specific geographic and device info services: + +``` +{ + "$and": [ + { + "adunit.size": {"$intersects": [{"w": 300,"h": 250},{"w": 300,"h": 600}]} + }, + { + "adunit.mediatype": {"$intersects": ["banner"]} + }, + { + "$or": [ + {"site.ext.domain": {"$matches": "*.example.com"}}, + {"site.ext.domain": {"$in": ["prebid.org"]}} + ] + }, + { + "$or": [ + {"site.referrer": {"$matches": "*sports*"}}, + {"site.referrer": {"$matches": "*prebid*"}} + ] + }, + { + "$or": [ + {"adunit.adslot": {"$matches": "/home/top*"}}, + {"adunit.adslot": {"$in": ["/home/bottom"]}} + ] + }, + { + "pos": {"$in": [1,3]} + }, + { + "device.geo.ext.netacuity.country": {"$in": ["us","de"]} + }, + { + "device.geo.ext.netacuity.region": {"$in": ["de-bw","de-by"]} + }, + { + "device.geo.ext.netacuity.metro": {"$in": ["111","222"]} + }, + { + "device.geo.ext.netacuity.city": {"$in": ["444","555"]} + }, + { + "geo.distance": {"$within": {"lat": 123.456,"lon": 789.123,"radiusMiles": 50}} + }, + { + "device.ext.deviceatlas.type": {"$in": ["tablet","phone"]} + }, + { + "$or": [ + {"bidp.rubicon.siteId": {"$in": [123,321]}}, + {"bidp.appnexus.placementName": {"$matches": "*99999*"}}, + ] + }, + { + "$or": [ + {"segment.rp": {"$intersects": [123,234,345]}}, + {"segment.bluekai": {"$intersects": [123,234,345]}} + ] + }, + { + "sfpd.sport": {"$intersects": ["hockey","soccer"]} + }, + { + "user.ext.time.userdow": {"$in": [5,6]} + }, + { + "user.ext.time.userhour": {"$in": [10,11,12,13,14]} + }, + { + "$not": { + "ufpd.registered": {"$matches": ["false"]} + } + } + ] +} +``` + + +## Related Topics + +- [PG Home Page](/prebid-server/features/pg/pbs-pg-idx.html) +- [PG Plans](/prebid-server/features/pg/pbs-pg-plan.html) diff --git a/prebid-server/hosting/pbs-database.md b/prebid-server/hosting/pbs-database.md index 4dfde3d158..08efe50163 100644 --- a/prebid-server/hosting/pbs-database.md +++ b/prebid-server/hosting/pbs-database.md @@ -99,7 +99,7 @@ create a view as desired. We'll fix this someday. Account data is queried on every request to pull in important data. There is an LRU cache in the server so the database isn't actually hit on every request. -In PBS-Java, many account-configuration options come from the database, while in PBS-Go, those options are available in YAML configuration. +In PBS-Java, many account-configuration options come from the database. In PBS-Go, those options are available in either a YAML configuration or from an HTTP API. In both versions the server can optionally validate the account against this database and reject accounts from unknown sources. @@ -108,7 +108,7 @@ The algorithm the server uses for determining the account ID of the incoming req 1. look in site.publisher.id 2. look in app.publisher.id -3. if AMP, look for the 'account' parameter on the query string (PBS-Java only) +3. if AMP, look for the 'account' parameter on the query string Here are the fields the server can recognize in the database response: diff --git a/prebid-server/hosting/pbs-hosting.md b/prebid-server/hosting/pbs-hosting.md index 96402bd87c..144fd0f196 100644 --- a/prebid-server/hosting/pbs-hosting.md +++ b/prebid-server/hosting/pbs-hosting.md @@ -68,7 +68,7 @@ populating data from their internal systems. You'll want to hook both Prebid Server and Prebid Cache up to an operational monitoring system. -- PBS-Go currently supports Influx and Promotheus +- PBS-Go currently supports Influx and Prometheus - PBS-Java currently supports Influx and Graphite ## Installing the Software diff --git a/prebid-server/pbs-modules/index.md b/prebid-server/pbs-modules/index.md new file mode 100644 index 0000000000..5a1b32b172 --- /dev/null +++ b/prebid-server/pbs-modules/index.md @@ -0,0 +1,127 @@ +--- +layout: page_v2 +title: Prebid Server Modules +description: Prebid Server Module Documentation +sidebarType: 5 +--- + +# Prebid Server Modules +{:.no_toc} + +The core of Prebid Server contains the foundational code needed for header bidding. Any functionality that could be considered an add-on or that covers a special case is covered by modules. + +If you're looking for bidder adapter parameters, see [Bidders' Params](/dev-docs/pbs-bidders.html). + +{: .alert.alert-info :} +Only the Java version of PBS currently supports the module infrastructure. + +* TOC +{:toc} + +## The Modules + +{: .table .table-bordered .table-striped } +| Module | Description | PBS-Go | PBS-Java | +|---------------------+--------------+--------+----------| +| [**ORTB2 Blocking**](/prebid-server/pbs-modules/ortb2-blocking.html) | Support bidders that aren't full-service SSPs. | | | + +## Installing a PBS Module + +Once a Prebid Server host company decides which modules they want to support, +here's how installation works: + +### 1. Build PBS with modules. + +Note that modules are currently an all-or-nothing nothing from a code perspective. +``` +mvn clean package --file extra/pom.xml +``` + +### 2. Define an 'execution plan' + +The execution plan details: +- which modules are used in your server +- what order they're invoked in +- how long modules have to run before timeout +- whether any modules depend on each other + +If you want the module to run on every request regardless of account, this is a +host-level config you should place in `application.yaml`. If the module should +be active only for certain accounts, you'll need to place the plan in the account-specific config. + +To define a plab, you'll need to know the following module details, which should be availble in the module documenation: +- urls: which PBS 'entry points' are relevant. e.g. /openrtb2/auction, /openrtb2/amp +- stages: one or more of the 7 workflow stages where the module should be called: entrypoint, raw-auction-request, processed-auction-request, bidder-request, raw-bidder-response, processed-bidder-response, and/or auction-response. +- hooks: for each stage where a module runs, its documentation will provide the hook function name. + +Here's an example application.yaml entry: +``` +hooks: + host-execution-plan: > # these hooks are always run for all accounts + { + "/openrtb2/auction": { # endpoint + "stages": { + "entrypoint": { # stage + "groups": [ + { + "timeout": 3, # in milliseconds + "hook-sequence": [ + { + "modulecode": "modulecode1", + "hookimplcode": "hook1" + }, + { + "modulecode": "modulecode2", + "hookimplcode": "hook2" + } + ] + },{ // this group depends on the results of the first group + "timeout": 5, # in milliseconds + "hook-sequence": [ + { + "modulecode": "modulecode3", + "hookimplcode": "hook3-depends-on-hook1" + } + ] + } + ] + } + } + } + } + # these hooks are run for all accounts unless overridden by DB config + default-account-execution-plan: > + { + "/openrtb2/amp": { # endpoint + "stages": { + "raw-auction-request": { # stage + "groups": [ + { + "timeout": 5, + "hook-sequence": [ + { + "modulecode": "modulecodeA", + "hookimplcode": "hookA" + } + ] + } + ] + } + } + } + } +``` + +### 3. Supply the module with configuration + +Modules may require configuration at startup or during the request: + +- If the module requires config at initialization, its documentation will +describe where the config file lives and what format it should take. +- If the module requires runtime config, it should be passed via the account-conig mechanism. + + +## Further Reading + ++ [Developing a Prebid Server Module](/prebid-server/developers/add-a-module.html) ++ [Prebid Server Features](/prebid-server/features/pbs-feature-idx.html) diff --git a/prebid-server/pbs-modules/ortb2-blocking.md b/prebid-server/pbs-modules/ortb2-blocking.md new file mode 100644 index 0000000000..74cfb12388 --- /dev/null +++ b/prebid-server/pbs-modules/ortb2-blocking.md @@ -0,0 +1,565 @@ +--- +layout: page_v2 +page_type: pbs-module +title: Prebid Server ORTB2 Blocking Module +display_name : ORTB2 Blocking Module +sidebarType : 5 +--- + +# ORTB2 Blocking Module +{:.no_toc} + +* TOC +{:toc } + +{: .alert.alert-warning :} +Currently only available for the Java version of Prebid Server + +## Overview + +This module helps support bidders that aren't full-service SSPs by allowing +PBS host companies to configure per-account OpenRTB blocking details. +[OpenRTB 2.5](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) defines the following 6 attributes available for some kind +of bid exclusion logic: + +1. badv: blocked advertiser domains +1. bcat: blocked advertiser categories +1. bapp: blocked advertiser mobile app bundles +1. btype: blocked creative types (e.g. XHTML) +1. battr: blocked creative attributes (e.g. audio) +1. bseat: blocked bidder seat (e.g. agency) + +The module supports all of these blocking scenarios except the last: bseat. Prebid uses the 'seat' field in OpenRTB to indicate the biddercode, losing any agency +information that might have been passed to the bid adapter. + +### Features + +For each of the supported attributes, there are a range of behaviors that +can be configured: + +- **Configure Blocks**: allows host companies to define blocks globally, per-account, or per-account/bidder combination. This blocking config is sent in the OpenRTB requests to all or specific bidders for consideration in bid determination. +- **Enforce Blocks**: PBS can reject bids from bidders that don't conform to the blocking lists sent in the request. +- **Enforce Unknown Values**: for some attributes it may makes sense to reject requests that don't contain a required value. For instance, the publisher may want to drop any bid that doesn't report the advertiser domain. +- **Deal Overrides**: Private Marketplace deals may have exceptions to standard blocked attributes. + +Here's a summary of the features the module supports: + +{: .table .table-bordered .table-striped } +| Scenario | Configure Blocks | Enforce Blocks | Enforce Unknown Values | Deal Overrides | +|---+---+---+---+---| +| Advertiser Domains | | | | | +| Advertiser Categories | | | | | +| Apps | | | | | +| Banner Types | | | | | +| Banner Attributes | | | | | + +## Configuration + +### Execution Plan + +This module supports running at two stages: + +- bidder-request: this is where outgoing auction requests to each bidder are enriched with the account-specific blocks. +- raw-bidder-response: this is where incoming bid responses are verified and enforced. If a host-company or account don't want to do any enforcement activities, this part of the module doesn't need to be configured. + +We recommend defining the execution plan right in the account config +so the module is only invoked for specific accounts. See below for an example. + +### Global Config + +There is no host-company level config for this module. + +### Account-Level Config + +Here's a general template for the account config: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { // start of this module's config + "attributes": { + "ATTRIBUTE": { // badv, bcat, bapp, btype, battr + DEFAULT_SETTINGS, + "action-overrides": [{ + OVERRIDE_SETTING: [{ + "conditions": { ... }, + // the value below will be the datatype of the SETTING + "override": VALUE + }] + }] + } + } + } + }, + "execution-plan": { + ... + } + } +} +``` + +The 'ATTRIBUTE' above is one of the 5 blockable entities defined in OpenRTB. A 'SETTING' is a feature this module supports. +The following sections detail each of the 5 blockable entities. + +Here's a detailed example: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { + "attributes": { + "badv": { + "enforce-blocks": false, + "blocked-adomain": [], + "action-overrides": { + "blocked-adomain": [ + { + "override": [ "example.com" ], + "conditions": { + "bidders": [ "bidderA" ] + } + } + ] + } + }, + "bcat": { + "enforce-blocks": false, + "blocked-adv-cat": [], + "action-overrides": { + "blocked-adv-cat": [ + { + "override": [ "IAB7" ], + "conditions": { + "bidders": [ "bidderA" ] + } + } + ] + } + }, + "battr": { + "enforce-blocks": false, + "action-overrides": { + "blocked-banner-attr": [ + { + "override": [1,3,8,9,10,13,14,17], + "conditions": { + "bidders": [ + "bidderA" + ] + } + } + ] + }, + "blocked-banner-attr": [] + } + } + } + }, + "execution-plan": { + "endpoints": { + "/openrtb2/amp": { + "stages": { + "bidder-request": { + "groups": [ + { + "timeout": 5, + "hook-sequence": [ + { + "module-code": "ortb2-blocking", + "hook-impl-code": "ortb2-blocking-bidder-request" + } + ] + } + ] + } + } + }, + "/openrtb2/auction": { + "stages": { + "bidder-request": { + "groups": [ + { + "timeout": 5, + "hook-sequence": [ + { + "module-code": "ortb2-blocking", + "hook-impl-code": "ortb2-blocking-bidder-request" + } + ] + } + ] + } + } + } + } + } + } +} +``` + +### Configuration Details + +The module supports flexibile definition of behavior surrounding the 5 blocked attributes. Here are the details. + +#### Blocked Advertiser Config + +This attribute is related to the 'badv' of the request, and the 'adomain' of the response. + +{: .table .table-bordered .table-striped } +| Setting | Description | Data Type | Override Conditions Supported | +|---+---+---+---| +| blocked-adomain | List of adomains not allowed to display on this inventory | array of strings | bidders (array of strings), media-types (array of strings). | +| enforce-blocks | Whether to enforce adomains in responses | boolean | bidders (array of strings), media-types (array of strings) | +| block-unknown-adomain | Whether to block responses not specifying adomain. Only active if enforce-blocks is true. | bidders (array of strings), media-types (array of strings) | +| allowed-adomain-for-deals | List of adomains allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global. | + +Here's an example account config with several scenarios: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { // start of this module's config + "attributes": { + "badv": { + // enforce domain blocks by default + "enforce-blocks": true, + "block-unknown-adomain": true, + // these are the default undesirable domains + "blocked-adomain": [ "a.com", "b.com", "c.com" ], + // but deals can return this one + "allowed-adomain-for-deals": [ "a.com" ], + "action-overrides": [{ + "blocked-adomain": [{ + // c.com allowed on these bidders for video + "conditions": { + "bidders": [ "bidderA", "bidderB" ], + "media-type": [ "video" ] + }, + "override": [ "a.com", "b.com" ] + }, + { + // more domains blocked for this bidder + "conditions": { + "bidders": [ "bidderc" ] + }, + "override": [ "a.com", "b.com", "c.com", "d.com", "e.com" ] + } + ], + "block-unknown-adomain": [ + { + // don't block unnknown for video bids from this bidder + "conditions": { + "bidders": [ "bidderA" ], + "media-type": [ "video" ] + }, + "override": false + } + ], + "allowed-adomain-for-deals": [ + { + // this deal is for normally blocked domain b.com + "conditions": { + "deal-ids": [ "12345678" ] + }, + "override": [ "b.com" ] + } + ] + } + ] + } + } + } + } + } +} +``` + +#### Blocked Advertiser Category + +This attribute is related to the 'bcat' of the request and 'cat' of the response. + +{: .table .table-bordered .table-striped } +| Setting | Description | Data Type | Override Conditions Supported | +|---+---+---+---| +| blocked-adv-cat | List of IAB categories not allowed to display on this inventory | array of strings | bidders (array of strings), media-types (array of strings) | +| enforce-blocks | Whether to enforce cat in responses | boolean | bidders (array of strings), media-types (array of strings) | +| block-unknown-adv-cat | Whether to block responses not specifying cat. Only active if enforce-blocks is true. | bidders (array of strings), media-types (array of strings) | +| allowed-adv-cat-for-deals | List of adomains allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global.| + +Here's an example account config with several scenarios: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { // start of this module's config + "attributes": { + "bcat": { + // don't enforce blocks + "enforce-blocks": false, + // block these categories by default + "blocked-adv-cat": [ "IAB-1", "IAB-2" ], + // deals can return this cat + "allowed-adv-cat-for-deals": [ "IAB-1" ], + "action-overrides": [ { + "blocked-adv-cat": [ + { + // block additional categories for video + "conditions": { + "media-types": [ "video" ] + }, + "override": [ "IAB-1", "IAB-2", "IAB-3", "IAB-4" ] + } + ], + "enforce-blocks": [ + { + // enforce bcat blocks for this bidder + "conditions": { + "bidders": [ "bidderA" ] + }, + "override": true + } + ], + "block-unknown-adv-cat": [ + { + // enforce unknown cat for this bidder + "conditions": { + "bidders": [ "bidderA" ] + }, + "override": true + } + ], + "allowed-adv-cat-for-deals": [ + { + // this deal ID allowed to be this category + "conditions": { + "deal-ids": [ "1111111" ] + }, + "override": [ "IAB-2" ] + } + ] + } + ] + } + } + } + } + } +} +``` + +#### Blocked App + +This attribute is related to the 'bapp' of the request and 'bundle' of the response. + +{: .table .table-bordered .table-striped } +| Setting | Description | Data Type | Override Conditions Supported | +|---+---+---+---| +| blocked-app | List of bundles not allowed to display on this inventory | array of strings | bidders (array of strings), media-types (array of strings) | +| enforce-blocks | Whether to enforce bundles in responses | boolean | bidders (array of strings), media-types (array of strings) | +| allowed-bapp-for-deals | List of bundles allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global. | + +Here's an example account config: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { // start of this module's config + "attributes": { + "bapp": { + // don't enforce + "enforce-blocks": false, + // these bundles blocked by default + "blocked-app": [ "app1", "app2" ], + "action-overrides": [ + { + "blocked-app": [ + { + // this bidder also blocked for an additional app + "conditions": { + "bidders": [ "bidderA" ] + }, + "override": [ "app1", "app2", "app3" ] + } + ] + } + ] + } + } + } + } + } +} +``` + +#### Blocked Banner Type + +This attribute is related to the 'btype' of the request. + +{: .table .table-bordered .table-striped } +| Setting | Description | Data Type | Override Conditions Supported | +|---+---+---+---| +| blocked-banner-type | List of IAB banner types not allowed to display on this inventory | array of int | bidders (array of strings), media-types (array of strings) | + +See Table 5.2 in the [OpenRTB 2.5 spec](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) for the possible values. + +Note: no enforcement is possible because the creative type is not explictly +part of the response and Prebid Server does not currently contain logic to +parse creatives to derive the type. + +Here's an example account config: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { // start of this module's config + "attributes": { + "btype": { + // block these types for all bidders + "blocked-banner-type": [ 3, 4 ], + "action-overrides": [ + { + "blocked-banner-type": [ + { + // block an additional type for this bidder + "conditions": { + "bidders": [ "bidderA" ] + }, + "override": [ 3, 4, 5 ] + } + ] + } + ] + } + } + } + } + } +} +``` + +#### Blocked Banner Attributes + +This attribute is related to the 'battr' of the request and 'attr' of the response. + +{: .table .table-bordered .table-striped } +| Setting | Description | Data Type | Override Conditions Supported | +|---+---+---+---| +| blocked-banner-attr | List of IAB banner attributes not allowed to display on this inventory | array of int | bidders (array of strings), media-types (array of strings) | +| enforce-blocks | Whether to enforce attr in responses | boolean | bidders (array of strings), media-types (array of strings) | +| allowed-banner-attr-for-deals | List of IAB attributes allowed for deals in general or a specific dealid. | array of strings | deal-ids (array of strings). This isn't a true override - values are added to the global. | + +See Table 5.3 in the [OpenRTB 2.5 spec](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) for the possible values. + +Here's an example account config: +``` +{ + "hooks": { + "modules": { + "ortb2-blocking": { // start of this module's config + "attributes": { + "battr": { + // don't enforce + "enforce-blocks": false, + // block these attributes for all bidders + "blocked-banner-attr": [ 1, 8, 9, 10 ], + "action-overrides": [ + { + "enforce-blocks": [ + { + // enforce the attr block for this bidder + "conditions": { + "bidders": [ "bidderA" ] + }, + "override": true + } + ] + } + ] + } + } + } + } + } +} +``` +## Analytics Tags + +There's only one analytics activity defined by this module: "enforce-blocking". +It's only applied to attributes where `enforce-blocks` is true, which means 'btype' never shows up here. ATag values: + +1. for activities[].results[].status **success-block** + 1. Attributes in the `values` block: + 1. **bidder**: which bidder triggered the response analysis + 1. **attributes**: string array indicating 1 or more of the 4 blockable attributes (badv, bcat, battr, bapp) triggered the enforcement action + 1. **adomain**: array-of-strings. if badv enforcement fired, which domain(s) triggered the action. Could include the empty string for unknown domain. + 1. **bcat**: array-of-strings. if bcat enforcement fired, which IAB category(s) triggered the action. Could include the empty string for unknown category. + 1. **bundle**: string. If bapp enforcement fired, which bundle triggered the action. + 1. **attr**: array-of-ints. If battr enforcement fired, which IAB creative attribute(s) triggered the action. + 1. Attributes in the `appliedto` block: + 1. **imp**: the seatbid.bid.impid of the blocked response + 1. **bidder**: the biddercode of the blocked response +1. for activities[].results[].status **success-allow** + 1. No `values` block + 1. Attributes in the `appliedto` block: + 1. **imp**: the seatbid.bid.impid of the blocked response + 1. **bidder**: the biddercode of the blocked response + +Here's an example analytics tag that might be produced for use in an analytics adapter: +``` +[{ + activities: [{ + name: "enforce-blocking", + status: "success", + results: [{ + // bidderA was blocked for both badv and bcat for imp=1 + status: "success-block", + values: { + "attributes": ["badv", "bcat"], + "adomain": ["bad.com"], + "bcat": ["IAB-7"] + }, + appliedto: { + "bidder": "bidderA", + imp: ["1"] + } + },{ + // the other 3 bids from bidderA were ok + status: "success-allow", + appliedto: { + "bidder": "bidderA", + "imp": ["2","3","4"] + } + },{ + // scenario: bidderB not blocked at all + status: "success-allow", + appliedto: { + "bidder": "bidderB", + "imp": ["1","2","3","4"] } + },{ + // scenario: bidderC blocked on battr and bapp for imp=3 + status: "success-block", + values: { + "app": "com.test", + "attr": [2] + "attributes": ["bapp", "battr"] + }, + appliedto: { + "bidder": "bidderC", + "imp": ["3"] + } + },{ + // otherwise bidderC's bids were fine + status: "success-allow", + appliedto: { + "bidder": "bidderC", + "imp": ["1","2","4"] + } + }] + }] +}] +``` + +## Further Reading + +- [Prebid Server Module List](/prebid-server/pbs-modules/index.html) +- [Building a Prebid Server Module ](/prebid-server/developers/add-a-module.html) diff --git a/prebid-server/use-cases/pbs-amp.md b/prebid-server/use-cases/pbs-amp.md index ecd191ed02..d5ec56c52e 100644 --- a/prebid-server/use-cases/pbs-amp.md +++ b/prebid-server/use-cases/pbs-amp.md @@ -47,7 +47,7 @@ There are two basic ways of invoking AMP RTC: data-slot="/11111/amp_test" data-multi-size-validation="false" rtc-config='{"vendors": {"prebidrubicon": {"REQUEST_ID": "14062-amp-AMP_Test-300x250"}, "ACCOUNT_ID": "1001"}}' - json='{ "targeting": {"site":{"keywords":"article, las vegas","cat":{"blah":"1"},"other-attribute":"other-value","ext":{"data":{"entry_group":["front-page","featured-stories"],"page_type":"AMP"}}},"user":{"gender":"m"},"bidders":["bidderA","bidderB"],"keywords":"las vegas hospitality employees","foo":{"bar":"baz"}}' > + json='{ "targeting": {"attr1": "val1", "attr2": "val2"}}' > ``` @@ -61,13 +61,10 @@ There are two basic ways of invoking AMP RTC: type="doubleclick" data-slot="/000/amp_test" data-multi-size-validation="false" - rtc-config='{"urls": ["https://prebid-server-qa.example.com/openrtb2/amp?tag_id=11111&w=300&h=50&slot=%2F000%2Famp_test&targeting=%7B%22site%22%3A%20%7B%22key1%22%3A%20%22val1%22%7D%2C%20%22user%22%3A%20%7B%22key2%22%3A%20%22val2%22%7D%7D%7D&purl=encoded_page_url&account=333&gdpr_consent=encoded_cmp_consent_string"] + rtc-config='{"urls": ["https://prebid-server-qa.example.com/openrtb2/amp?tag_id=11111&w=300&h=50&slot=%2F000%2Famp_test&purl=encoded_page_url&account=333&gdpr_consent=encoded_cmp_consent_string"] ``` -{: .alert.alert-info :} -First party data may be passed in on the "targeting" field. See the [`/openrtb2/amp` endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html) documentation for more details. - ### Prebid Server Receives the AMP Request Prebid Server's first job on the [/openrtb2/amp endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html) is to create an OpenRTB block to pass to the adapters. @@ -76,15 +73,8 @@ Prebid Server's first job on the [/openrtb2/amp endpoint](/prebid-server/endpoin The `tag_id` in the AMP URL is used to look up the bulk of the request. If the lookup fails, the request can't proceed. If it's successful, the next step is to parse the AMP query string parameters and place them -in the appropriate OpenRTB locations: - -- w added into the openrtb packet at imp.banner.format[0].w -- h added into the openrtb packet at imp.banner.format[0].h -- ms (multiple-sizes) - takes values like "970x90, 728x90". Parse sizes and add to imp.banner.format array -- ow, oh - override width, override height -- curl added as site.page -- slot added as imp.tagid -- timeout added as tmax +in the appropriate OpenRTB locations. See the [AMP endpoint documentation](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html) +for details. So for the /openrtb2/amp URL above, the resulting OpenRTB might be: ``` @@ -116,17 +106,7 @@ So for the /openrtb2/amp URL above, the resulting OpenRTB might be: "id": "0000" }, "ext": { - "amp": 1, - "data": { - "key1": "val1" - } - } - }, - "user": { - "ext": { - "data": { - "key2": "val2" - } + "amp": 1 } }, "device": { @@ -169,7 +149,7 @@ Only a few dynamic parameters on the query string are integrated into the result #### First Party Data Support Ad Server targeting data passed in through the [`/openrtb2/amp`](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html) endpoint is merged -into the OpenRTB JSON in imp[].ext.data for each bidder if permissions allow. +into the OpenRTB JSON in imp[].ext.data. #### Auction and Response @@ -180,7 +160,6 @@ From here, the header bidding auction is mostly the same as it is for Prebid.js: 1. Collect responses 1. Prepare the response - ### AMP Gets the Response AMP RTC endpoints can only respond with targeting, not OpenRTB. The @@ -216,4 +195,5 @@ into an iframe for display. ## Further Reading -- [AMP Support](/formats/amp.html) +- [Prebid AMP Support](/formats/amp.html) +- [PBS AMP endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-amp.html) diff --git a/prebid-server/versions/pbs-versions-go.md b/prebid-server/versions/pbs-versions-go.md index 9f6a45ea99..d2de934923 100644 --- a/prebid-server/versions/pbs-versions-go.md +++ b/prebid-server/versions/pbs-versions-go.md @@ -28,7 +28,7 @@ The Go version of Prebid Server is for those who: ## Features -PBS-Go has all the core PBS features, but does have a backlog of newer [features](/prebid-server/features/pbs-feature-idx.html), so you'll want to look over the list to be familiar with the differences. +We recommend you review the [feature comparison list](/prebid-server/features/pbs-feature-idx.html) to familiarize yourself with the differences between this and PBS-Java in deciding which version is right for you. ## Code Repositories diff --git a/prebid-server/versions/pbs-versions-java.md b/prebid-server/versions/pbs-versions-java.md index d024930727..7f68600244 100644 --- a/prebid-server/versions/pbs-versions-java.md +++ b/prebid-server/versions/pbs-versions-java.md @@ -27,7 +27,7 @@ The Java version of Prebid Server is for those who: ## Features -PBS-Java look over the [feature list](/prebid-server/features/pbs-feature-idx.html) to be familiar with the differences. +We recommend you review the [feature comparison list](/prebid-server/features/pbs-feature-idx.html) to familiarize yourself with the differences between this and PBS-Go in deciding which version is right for you. ## Code Repositories diff --git a/prebid-video/video-getting-started.md b/prebid-video/video-getting-started.md index 82bc941d97..fbc05431c3 100644 --- a/prebid-video/video-getting-started.md +++ b/prebid-video/video-getting-started.md @@ -137,7 +137,7 @@ And this is where setups for instream and outstream diverge. Please follow one o Be sure to note the setting for price granularity. You might need to set up a custom price granularity. (See “Custom CPM Bucket Sizing” under [Price Granularity](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Price-Granularity). Or, if you’re monetizing both banner and video inventory with Prebid, you might need to define format-specific price granularity settings through [mediaTypePriceGranularity](/dev-docs/publisher-api-reference/setConfig.html#setConfig-MediaType-Price-Granularity). {: .alert.alert-info :} -**Prebid Server** If you’re using Prebid Server, you also need to configure your server-to-server bidder adapters. See [Getting Started with Prebid Server]({{site.github.url}}/dev-docs/get-started-with-prebid-server.html#step-4-configure-s2s-bidder-adapters) for details and examples. +**Prebid Server** If you’re using Prebid Server, you also need to configure your server-to-server bidder adapters. See [Getting Started with Prebid Server](/overview/prebid-server-overview.html). ### Examples diff --git a/prebid/prebidjs.md b/prebid/prebidjs.md index 224260da91..8dd597b47f 100644 --- a/prebid/prebidjs.md +++ b/prebid/prebidjs.md @@ -9,7 +9,7 @@ sidebarType: 1 # What is Prebid.js? -Prebid.js is a feature-rich header bidding platform for the web, including more than 200 demand sources and 15 analytics adapters. It supports currency conversion, GDPR, common ID systems, and multiple ad servers. +Prebid.js is a feature-rich header bidding platform for the web, including more than 300 demand sources and 50 analytics adapters. It supports currency conversion, GDPR, common ID systems, and multiple ad servers. ## How Does Prebid.js Work? @@ -44,9 +44,9 @@ We want Prebid.js Core to be fast, fair, and open because it represents the head The Prebid.js Adapters plug into Prebid.js Core and are meant to be interchangeable depending on who the publisher wants to work with. There are two types of adapters: bidder and analytics. -Bidder Adapters are supposed to represent the SSPs & Exchanges you want to work with. There are currently over 200 bidder adapters. This set of working header bidding integrations is part of what makes Prebid.js so special. Each company maintains their own Prebid.js adapter to provide the freshest code for publishers, rather than a proprietary wrapper solution trying to reverse engineer another company's adapter. It's a win-win for everyone. +Bidder Adapters are supposed to represent the SSPs & Exchanges you want to work with. There are currently over 300 bidder adapters. This set of working header bidding integrations is part of what makes Prebid.js so special. Each company maintains their own Prebid.js adapter to provide the freshest code for publishers, rather than a proprietary wrapper solution trying to reverse engineer another company's adapter. It's a win-win for everyone. -Analytics adapters offer the ability to learn more about latency, revenues, bid rates, etc. Please see our [analytics page]({{site.github.url}}/dev-docs/integrate-with-the-prebid-analytics-api.html) for more information. +Analytics adapters offer the ability to learn more about latency, revenues, bid rates, etc. Please see our [analytics page](/dev-docs/integrate-with-the-prebid-analytics-api.html) for more information. ## Prebid.js Modules @@ -54,17 +54,17 @@ Prebid.js Modules also plug into the Prebid.js Core. They add functionality not in the Core that not every publisher needs. Example modules: + GDPR support (the [consentManagement]({{site.baseurl}}/dev-docs/modules/consentManagement.html) module) -+ currency conversion (the [currency]({{site.baseurl}}/dev-docs/modules/currency.html) module) ++ Currency conversion (the [currency]({{site.baseurl}}/dev-docs/modules/currency.html) module) + Server-to-server testing (the [s2sTest]({{site.baseurl}}/dev-docs/modules/s2sTesting.html) module) -+ ... others ++ ... [many others](/dev-docs/modules/index.html) ## Cookies and Local Storage -On behalf of publishers or third-parties, Prebid.js may set cookies or local storage in your browser. These are the first party cookies it can set on behalf of publishers, meaning that consent is not checked: +On behalf of publishers or third-parties, Prebid.js may set cookies or local storage in your browser. These are the first party cookies it can set on behalf of publishers: - prebid.cookieTest - used to verify whether other cookies should be set. - _pbjs_userid_consent_data - used to make consent data conveniently available through various modules. -All other cookies and local storage (including those set by Prebid.org-owned modules like [SharedId](/dev-docs/modules/userId.html#shared-id-user-id-submodule)) are subject to privacy regulations such as GDPR. +All other cookies and local storage (including those set by Prebid.org-owned modules like [SharedId](/identity/sharedid.html) are subject to privacy regulations such as GDPR. ## Further Reading diff --git a/prebid/prebidjsReleases.md b/prebid/prebidjsReleases.md index 23b022efc7..7aaa82aaa8 100644 --- a/prebid/prebidjsReleases.md +++ b/prebid/prebidjsReleases.md @@ -16,6 +16,16 @@ The table below is a summary of feature changes and important bug fixes in core {: .table .table-bordered .table-striped } | Release | Feature | | --- | --- | +| 5.9 | Support numeric ad targeting keys | +| 5.8 | [GPT Pre-Auction module](/dev-docs/modules/gpt-pre-auction.html) supports mcmEnabled flag | +| 5.3 | add AD_RENDER_SUCCEEDED event | +| 5.0 | See [Prebid.js 5.0 blog](https://prebid.org/blog/prebid-5-0-release/) | +| 4.43 | Support [allowSendAllBidsTargetingKeys](/dev-docs/publisher-api-reference/setConfig.html#setConfig-targetingControls) option for control over which keys are sent to the ad server | +| 4.41 | Support [suppressStaleRender](/dev-docs/publisher-api-reference/setConfig.html#auction-options) option | +| 4.40 | First Party Data [enrichment](/dev-docs/modules/enrichmentFpdModule.html) and [validation](/dev-docs/modules/validationFpdModule.html) modules are introduced | +| 4.39 | Prebid Core: removed size check on native icons and image assets | +| 4.38 | PBS Bid Adapter allows stored impression configuration | +| 4.37 | PBS bid adapter adds support for non-purpose1 consent domains | | 4.36 | Introduced pbjs.installedModules array | | 4.35 | Introduced pbjs.pbjs.getHighestUnusedBidResponseForAdUnitCode function | | 4.34 | Bug fix: canBidderRegisterSync ignoring iframe sync disabled by default | diff --git a/troubleshooting/troubleshooting-guide.md b/troubleshooting/troubleshooting-guide.md index 8254dd21a7..12843faac9 100644 --- a/troubleshooting/troubleshooting-guide.md +++ b/troubleshooting/troubleshooting-guide.md @@ -106,7 +106,7 @@ To see all of the winning bids, open your browser console and type `pbjs.getAllW Keep in mind that any bid responses that come back after the [timeout you configured](/dev-docs/getting-started.html#set-the-ad-server-timeout) during setup will not be sent to the ad server. {: .pb-alert .pb-alert-tip :} -You can also print this data to the console in [table format](/dev-docs/troubleshooting-tips.html#see-all-bids-in-the-console) for easier reading. +You can also print this data to the console in [table format](#see-all-bids-in-the-console) for easier reading.
    ## Modify bid responses for testing @@ -182,7 +182,7 @@ Here's another scenario using the 'debugging' feature described in the previous This section covers cases in which a particular server-side bidder doesn't always respond with a bid, or you want to try specific bid CPM values to verify line item setup. -If you're using Prebid Server (i.e. the [s2sConfig](/dev-docs/publisher-api-reference/setconfig#setConfig-Server-to-Server) option), you can force it to respond with a particular canned response on any page by defining a storedAuctionResponse ID on the javascript console: +If you're using Prebid Server (i.e. the [s2sConfig](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Server-to-Server) option), you can force it to respond with a particular canned response on any page by defining a storedAuctionResponse ID on the javascript console: ```javascript javascript console> pbjs.setConfig({ @@ -217,12 +217,12 @@ Open your browser console and type `pbjs.getBidResponses();` to see a list of th To see all of the winning bids, open your browser console and type [`pbjs.getAllWinningBids();`](/dev-docs/publisher-api-reference/getAllWinningBids.html). {: .alert.alert-danger :} -Keep in mind that any bid responses that come back after [the timeout you configured during setup]({{site.github.url}}/dev-docs/getting-started.html#set-the-ad-server-timeout) will not be sent to the ad server. +Keep in mind that any bid responses that come back after [the timeout you configured during setup](/dev-docs/getting-started.html#set-the-ad-server-timeout) will not be sent to the ad server. {: .alert.alert-success :} -You can also [print this data to the console in table format]({{site.baseurl}}/dev-docs/troubleshooting-tips.html#see-all-bids-in-the-console) for easier reading. +You can also [print this data to the console in table format](#see-all-bids-in-the-console) for easier reading. -![pbjs.getBidResponses() in browser console]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/bids.png "pbjs.getBidResponses()"){: .pb-lg-img :} +![pbjs.getBidResponses() in browser console](/assets/images/overview/prebid-troubleshooting-guide/bids.png "pbjs.getBidResponses()"){: .pb-lg-img :}
    @@ -232,13 +232,13 @@ To print information about all of the bids that come in to the Console on any pa Open the Chrome Dev Tools. In the **Sources** tab, next to **Content Scripts**, click the **>>** button and you can add **Snippets**: -![View Snippets in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/01-view-snippets.png){: .pb-sm-img :} +![View Snippets in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/01-view-snippets.png){: .pb-sm-img :}
    Right-click to add a **New** snippet: -![Add New Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/02-add-new-snippet.png){: .pb-sm-img :} +![Add New Snippet in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/02-add-new-snippet.png){: .pb-sm-img :}
    @@ -296,13 +296,13 @@ Paste in the following code using Control-V (or Command-V on Mac), and give the Right-click the snippet and choose **Run**: -![Run a Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/03-run-snippet.png){: .pb-sm-img :} +![Run a Snippet in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/03-run-snippet.png){: .pb-sm-img :}
    Check the output in Console to see the bids: -![See Snippet Output in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/04-snippet-output.png){: .pb-sm-img :} +![See Snippet Output in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/04-snippet-output.png){: .pb-sm-img :}
    @@ -312,13 +312,13 @@ To print information about all of the winning bids that come in to the Console o Open the Chrome Dev Tools. In the **Sources** tab, next to **Content Scripts**, click the **>>** button and you can add **Snippets**: -![View Snippets in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/01-view-snippets.png){: .pb-sm-img :} +![View Snippets in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/01-view-snippets.png){: .pb-sm-img :}
    Right-click to add a **New** snippet: -![Add New Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/02-add-new-snippet.png){: .pb-sm-img :} +![Add New Snippet in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/02-add-new-snippet.png){: .pb-sm-img :}
    @@ -351,13 +351,13 @@ if (output.length) { Right-click the snippet and choose **Run**: -![Run a Snippet in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/03-run-snippet.png){: .pb-sm-img :} +![Run a Snippet in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/03-run-snippet.png){: .pb-sm-img :}
    Check the output in Console to see the bids (note that this screenshot shows the output from "see all bids" but they're very similar): -![See Snippet Output in Dev Tools]({{site.github.url}}/assets/images/dev-docs/troubleshooting-tips/04-snippet-output.png){: .pb-sm-img :} +![See Snippet Output in Dev Tools](/assets/images/dev-docs/troubleshooting-tips/04-snippet-output.png){: .pb-sm-img :}
    @@ -399,7 +399,7 @@ To make sure your ad server is set up correctly, answer the following questions: + **Is there other remnant inventory in the ad server with a higher CPM that is winning?** To test for this, you may want to use a test creative set up within a bidder partner that has a high CPM or create artificial demand with a [bidCPMadjustment](/dev-docs/publisher-api-reference/bidderSettings.html). -+ **Have you set up all of the line items in the ad server to match the [setPriceGranularity setting]({{site.github.url}}/dev-docs/examples/custom-price-buckets.html) within Prebid.js?** All of the line items that correspond to your price granularity settings must be set up in your ad server. When there are gaps in the price granularity of your line item setup, bids will be reduced according to the size of the gap. For example, with [dense granularity](/dev-docs/publisher-api-reference/setConfig.html#denseGranularityBucket), a $3.32 bid will be sent to the ad server as $3.30. ++ **Have you set up all of the line items in the ad server to match the [setPriceGranularity setting](/dev-docs/examples/custom-price-buckets.html) within Prebid.js?** All of the line items that correspond to your price granularity settings must be set up in your ad server. When there are gaps in the price granularity of your line item setup, bids will be reduced according to the size of the gap. For example, with [dense granularity](/dev-docs/publisher-api-reference/setConfig.html#denseGranularityBucket), a $3.32 bid will be sent to the ad server as $3.30.
    @@ -413,7 +413,7 @@ When a prebid line item wins the ad server's auction, a `renderAd` event will be When this event is logged, it shows that Prebid.js has requested to render the ad from the winning bidder partner, and that this partner's bid has won both the Prebid and ad server auctions. -![renderAd event in browser console]({{site.github.url}}/assets/images/overview/prebid-troubleshooting-guide/render-ad.png "renderAd event in browser console"){: .pb-lg-img :} +![renderAd event in browser console](/assets/images/overview/prebid-troubleshooting-guide/render-ad.png "renderAd event in browser console"){: .pb-lg-img :}
    @@ -425,7 +425,7 @@ The following parameters in the `bidResponse` object are common across all bidde | Name | Type | Description | Example | |----------+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------| | `bidder` | String | Unique bidder code used by ad server's line items to identify the bidder | `"appnexus"` | -| `adId` | String | Unique identifier of a bid creative. Used by the line item's creative as in [this example]({{site.baseurl}}/adops/send-all-bids-adops.html#step-3-add-a-creative) | `"123"` | +| `adId` | String | Unique identifier of a bid creative. Used by the line item's creative as in [this example](/adops/send-all-bids-adops.html#step-3-add-a-creative) | `"123"` | | `pbLg` | String | Low granularity price bucket: $0.50 increment, capped at $5, floored to 2 decimal places (0.50, 1.00, 1.50, ..., 5.00) | `"1.50"` | | `pbMg` | String | Medium granularity price bucket: 0.10 increment, capped at $20, floored to 2 decimal places (0.10, 0.20, ..., 19.90, 20.00) | `"1.60"` | | `pbHg` | String | High granularity price bucket: 0.01 increment, capped at $20, floored to 2 decimal places (0.01, 0.02, ..., 19.99, 20.00) | `"1.61"` |