├── .nvmrc ├── test ├── helpers │ ├── testing-utils.js │ ├── pbjs-test-only.js │ ├── prebidGlobal.js │ └── karma-init.js ├── test_index.js ├── fixtures │ ├── config.json │ ├── ad-server-targeting.json │ ├── googletag-slots.json │ ├── video │ │ ├── vastUrlResponse.json │ │ ├── vastPayloadResponse.json │ │ ├── adUnit.json │ │ └── bidRequest.json │ └── targeting-map.json ├── mocks │ ├── adloaderStub.js │ └── videoCacheStub.js ├── spec │ ├── unit │ │ └── adUnits_spec.js │ ├── modules │ │ ├── googleAnalyticsAdapter_spec.js │ │ └── digitrustIdSystem_spec.js │ ├── aliasBidder_spec.js │ ├── adloader_spec.js │ └── integration │ │ └── faker │ │ └── fixtures.js └── .eslintrc.js ├── .editorconfig ├── genius-adapters.json ├── modules ├── realvuAnalyticsAdapter.md ├── sortableAnalyticsAdapter.md ├── .submodules.json ├── rivrAnalyticsAdapter.md ├── adagioAnalyticsAdapter.md ├── prebidmanagerAnalyticsAdapter.md ├── kargoAnalyticsAdapter.js ├── meazyBidAdapter.md ├── adxcgAnalyticsAdapter.md ├── vubleAnalyticsAdapter.md ├── sigmoidAnalyticsAdapter.md ├── datablocksAnalyticsAdapter.js ├── datablocksAnalyticsAdapter.md ├── eplanningAnalyticsAdapter.md ├── vmgBidAdapter.md ├── eplanningBidAdapter.md ├── appnexusAnalyticsAdapter.js ├── atomxBidAdapter.md ├── pulsepointAnalyticsAdapter.js ├── scaleableAnalyticsAdapter.md ├── innityBidAdapter.md ├── sovrnAnalyticsAdapter.md ├── yuktamediaAnalyticsAdapter.md ├── outconAdapter.md ├── piximediaBidAdapter.md ├── adkernelAdnAnalyticsAdapter.md ├── yieldoneAnalyticsAdapter.md ├── freeWheelAdserverVideo.js ├── appierAnalyticsAdapter.md ├── staqAnalyticsAdapter.md ├── lockerdomeBidAdapter.md ├── timBidAdapter.md ├── sonobiAnalyticsAdapter.md ├── giantsBidAdapter.md ├── kargoBidAdapter.md ├── logicadBidAdapter.md ├── bidfluenceBidAdapter.md ├── fidelityBidAdapter.md ├── rdnBidAdapter.md ├── rtbdemandBidAdapter.md ├── orbidderBidAdapter.md ├── prebidServerBidAdapter │ └── config.js ├── livewrappedBidAdapter.md ├── aardvarkBidAdapter.md ├── playgroundxyzBidAdapter.md ├── videoreachBidAdapter.md ├── undertoneBidAdapter.md ├── colombiaBidAdapter.md ├── huddledmassesBidAdapter.md ├── invibesBidAdapter.md ├── microadBidAdapter.md ├── imonomyBidAdapter.md ├── adliveBidAdapter.md ├── arteebeeBidAdapter.md ├── peak226BidAdapter.md ├── underdogmediaBidAdapter.md ├── pubnxBidAdapter.md ├── bizzclickBidAdapter.md ├── mantisBidAdapter.md ├── padsquadBidAdapter.md ├── smartyadsBidAdapter.md ├── advenueBidAdapter.md ├── hpmdnetworkBidAdapter.md ├── nextMillenniumBidAdapter.md ├── vertozBidAdapter.md ├── komoonaBidAdapter.md ├── weboramaBidAdapter.md ├── adponeBidAdapter.md ├── freewheel-sspBidAdapter.md ├── reklamstoreBidAdapter.md ├── bidphysicsBidAdapter.md ├── decenteradsBidAdapter.md ├── inskinBidAdapter.md ├── collectcentBidAdapter.md ├── colossussspBidAdapter.md ├── topRTBBidAdapter.md ├── taphypeBidAdapter.md ├── adagioAnalyticsAdapter.js ├── unrulyBidAdapter.md ├── coinzillaBidAdapter.md ├── yieldmoBidAdapter.md ├── andbeyondBidAdapter.md ├── 33acrossBidAdapter.md ├── fairtradeBidAdapter.md ├── nafdigitalBidAdapter.md ├── optimaticBidAdapter.md ├── rexrtbBidAdapter.md ├── vidazooBidAdapter.md ├── brightcomBidAdapter.md ├── pubCommonId.md ├── adspiritBidAdapter.md ├── admanBidAdapter.md ├── contentigniteBidAdapter.md ├── bidglassBidAdapter.md ├── c1xBidAdapter.md ├── gjirafaBidAdapter.md ├── marsmediaBidAdapter.md ├── otmBidAdapter.md ├── telariaBidAdapter.md ├── brainyBidAdapter.md ├── readpeakBidAdapter.md ├── adyoulikeBidAdapter.md ├── go2net.md ├── nasmediaAdmixerBidAdapter.md ├── ucfunnelBidAdapter.md ├── videoNowBidAdapter.md ├── aniviewBidAdapter.md ├── divreachBidAdapter.md ├── adoceanBidAdapter.md ├── criteoBidAdapter.md ├── emoteevBidAdapter.md ├── onetagBidAdapter.md ├── polluxBidAdapter.md ├── aduptechBidAdapter.md ├── gumgumBidAdapter.md ├── my6senseBidAdapter.md ├── radsBidAdapter.md ├── bucksenseBidAdapter.md ├── interactiveOffersBidAdapter.md ├── adbutlerBidAdapter.md ├── cpmstarBidAdapter.md ├── adformBidAdapter.md ├── iasBidAdapter.md ├── sovrnBidAdapter.md ├── mobfoxBidAdapter.md ├── madvertiseBidAdapter.md ├── loopmeBidAdapter.md ├── open8BidAdapter.md ├── papyrusBidAdapter.md ├── widespaceBidAdapter.md ├── mytargetBidAdapter.md ├── fyberBidAdapter.md ├── sekindoUMBidAdapter.md ├── admediaBidAdapter.md ├── openxoutstreamBidAdapter.md ├── sharethroughBidAdapter.md ├── slimcutBidAdapter.md ├── eywamediaBidAdapter.md ├── jcmBidAdapter.md ├── trafficrootsBidAdapter.md ├── etargetBidAdapter.md ├── adkernelBidAdapter.md ├── adxpremiumAnalyticsAdapter.md ├── justpremiumBidAdapter.md ├── saraBidAdapter.md ├── gxoneBidAdapter.md ├── supply2BidAdapter.md ├── teadsBidAdapter.md ├── visxBidAdapter.md ├── djaxBidAdapter.md ├── danmarketBidAdapter.md ├── a4gBidAdapter.md ├── adkernelAdnBidAdapter.md ├── conversantBidAdapter.md ├── serverbidBidAdapter.md ├── rtbdemandadkBidAdapter.md ├── trionBidAdapter.md ├── smartrtbBidAdapter.md ├── xendizBidAdapter.md ├── aolBidAdapter.md ├── fintezaAnalyticsAdapter.md ├── somoBidAdapter.md ├── stvBidAdapter.md ├── cedatoBidAdapter.md ├── rockyouBidAdapter.md ├── lifestreetBidAdapter.md ├── googleAnalyticsAdapter.md ├── lkqdBidAdapter.md ├── sortableBidAdapter.md ├── rivrAnalyticsAdapter.js ├── getintentBidAdapter.md ├── appierBidAdapter.md ├── consumableBidAdapter.md ├── uolBidAdapter.md ├── oneVideoBidAdapter.md ├── oneplanetonlyBidAdapter.md ├── tripleliftBidAdapter.md ├── dgadsBidAdapter.md ├── ebdrBidAdapter.md ├── audienceNetworkBidAdapter.md ├── adxcgBidAdapter.md ├── taphypeBidAdapter.js ├── sublimeBidAdapter.md ├── iqmBidAdapter.md ├── rhythmoneBidAdapter.md ├── polymorphBidAdapter.md ├── advangelistsBidAdapter.md ├── nobidBidAdapter.md └── yieldlabBidAdapter.md ├── plugins ├── eslint │ └── package.json └── RequireEnsureWithoutJsonp.js ├── src ├── adapter.js ├── adapters │ └── analytics │ │ ├── example.js │ │ └── example2.js ├── prebidGlobal.js ├── mediaTypes.js ├── hook.js ├── adUnits.js └── bidfactory.js ├── integrationExamples ├── gpt │ ├── amp │ │ ├── gulpfile.js │ │ ├── README.md │ │ └── creative.html │ └── creative_rendering.html └── longform │ └── longform_testpages_style.css ├── allowedModules.js ├── .babelrc.js ├── .github ├── stale.yml └── ISSUE_TEMPLATE.md ├── nightwatch.json ├── .eslintrc.js ├── nightwatch.conf.js └── nightwatch.browserstack.json /.nvmrc: -------------------------------------------------------------------------------- 1 | 8.9 2 | -------------------------------------------------------------------------------- /test/helpers/testing-utils.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | host: (process.env.TEST_SERVER_HOST) ? process.env.TEST_SERVER_HOST : 'localhost', 3 | protocol: (process.env.TEST_SERVER_PROTOCOL) ? 'https' : 'http' 4 | } 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | 7 | [*.js] 8 | charset = utf-8 9 | indent_style = space 10 | indent_size = 2 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /genius-adapters.json: -------------------------------------------------------------------------------- 1 | [ 2 | "appnexusBidAdapter", 3 | "consentManagement", 4 | "ixBidAdapter", 5 | "prebidServerBidAdapter", 6 | "tripleliftBidAdapter", 7 | "rubiconBidAdapter", 8 | "undertoneBidAdapter" 9 | ] 10 | -------------------------------------------------------------------------------- /test/helpers/pbjs-test-only.js: -------------------------------------------------------------------------------- 1 | export const pbjsTestOnly = { 2 | 3 | getAdUnits() { 4 | return $$PREBID_GLOBAL$$.adUnits; 5 | }, 6 | 7 | clearAllAdUnits() { 8 | $$PREBID_GLOBAL$$.adUnits = []; 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /test/helpers/prebidGlobal.js: -------------------------------------------------------------------------------- 1 | window.$$PREBID_GLOBAL$$ = (window.$$PREBID_GLOBAL$$ || {}); 2 | window.$$PREBID_GLOBAL$$.cmd = window.$$PREBID_GLOBAL$$.cmd || []; 3 | window.$$PREBID_GLOBAL$$.que = window.$$PREBID_GLOBAL$$.que || []; 4 | -------------------------------------------------------------------------------- /test/helpers/karma-init.js: -------------------------------------------------------------------------------- 1 | (function (window) { 2 | if (!window.parent.pbjsKarmaInitDone && window.location.pathname === '/context.html') { 3 | window.parent.pbjsKarmaInitDone = true; 4 | window.open('/debug.html', '_blank'); 5 | } 6 | })(window); 7 | -------------------------------------------------------------------------------- /test/test_index.js: -------------------------------------------------------------------------------- 1 | require('test/helpers/prebidGlobal.js'); 2 | require('test/mocks/adloaderStub.js'); 3 | 4 | var testsContext = require.context('.', true, /_spec$/); 5 | testsContext.keys().forEach(testsContext); 6 | 7 | window.$$PREBID_GLOBAL$$.processQueue(); 8 | -------------------------------------------------------------------------------- /modules/realvuAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: RealVu Analytics Adapter 4 | Module Type: Analytics Adapter 5 | Maintainer: it@realvu.com 6 | 7 | # Description 8 | 9 | Analytics adapter for realvu.com. Contact support@realvu.com for information. 10 | -------------------------------------------------------------------------------- /modules/sortableAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Sortable Analytics Adapter 4 | Module Type: Analytics Adapter 5 | Maintainer: prebid@sortable.com 6 | 7 | # Description 8 | 9 | Analytics adapter for Sortable. Contact prebid@sortable.com for information. 10 | -------------------------------------------------------------------------------- /modules/.submodules.json: -------------------------------------------------------------------------------- 1 | { 2 | "userId": [ 3 | "digiTrustIdSystem", 4 | "id5IdSystem", 5 | "criteortusIdSystem", 6 | "parrableIdSystem", 7 | "liveIntentIdSystem" 8 | ], 9 | "adpod": [ 10 | "freeWheelAdserverVideo", 11 | "dfpAdServerVideo" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "adUnitElementIDs": [ 3 | "div-test-ad-0", 4 | "div-test-ad-1", 5 | "div-test-ad-2" 6 | ], 7 | "adUnitCodes": [ 8 | "/19968336/header-bid-tag-0", 9 | "/123456/header-bid-tag-1", 10 | "/123456/header-bid-tag-2" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /modules/rivrAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Rivr Analytics Adapter 4 | 5 | Module Type: Analytics Adapter 6 | 7 | Maintainer: rnd@simplaex.com 8 | 9 | # Description 10 | 11 | Analytics adapter for www.rivr.ai. 12 | 13 | Contact support@simplaex.com for information and support. 14 | -------------------------------------------------------------------------------- /modules/adagioAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Adagio Analytics Adapter 4 | Module Type: Adagio Adapter 5 | Maintainer: dev@adagio.io 6 | 7 | # Description 8 | 9 | Analytics adapter for Adagio 10 | 11 | # Test Parameters 12 | 13 | ``` 14 | { 15 | provider: 'adagio' 16 | } 17 | ``` 18 | -------------------------------------------------------------------------------- /test/fixtures/ad-server-targeting.json: -------------------------------------------------------------------------------- 1 | { 2 | "/9968336/header-bid-tag-0": { 3 | "hb_bidder": "rubicon", 4 | "hb_adid": "13f44b0d3c", 5 | "hb_pb": "1.50" 6 | }, 7 | "/9968336/header-bid-tag1": { 8 | "hb_bidder": "openx", 9 | "hb_adid": "147ac541a", 10 | "hb_pb": "1.00" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/fixtures/googletag-slots.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "getSlotElementId": "function(){ return \"div-gpt-ad-1438287399331-0\"; }" 4 | }, 5 | { 6 | "getSlotElementId": "function(){ return \"div-gpt-ad-1438287399331-1\"; }" 7 | }, 8 | { 9 | "getSlotElementId": "function(){ return \"div-gpt-ad-1438287399331-2\"; }" 10 | } 11 | ] -------------------------------------------------------------------------------- /modules/prebidmanagerAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Prebid Manager Analytics Adapter 4 | Module Type: Analytics Adapter 5 | Maintainer: admin@prebidmanager.com 6 | 7 | # Description 8 | 9 | Analytics adapter for Prebid Manager. Contact admin@prebidmanager.com for information. 10 | -------------------------------------------------------------------------------- /plugins/eslint/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-plugin-prebid", 3 | "version": "1.0.0", 4 | "description": "validates module imports can be found without custom webpack resolvers, are in module whitelist, and not module entry points", 5 | "main": "validateImports.js", 6 | "author": "the prebid.js contributors", 7 | "license": "Apache-2.0" 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/video/vastUrlResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "adUnitCode": "video1", 3 | "bidder": "appnexus", 4 | "bidderCode": "appnexus", 5 | "code": "appnexus", 6 | "dealId": "foo", 7 | "cpm": 0.1, 8 | "height": 480, 9 | "mediaType": "video", 10 | "auctionId": "6172477f-987f-4523-a967-fa6d7a434ddf", 11 | "vastUrl": "www.myVastUrl.com", 12 | "width": 640 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/video/vastPayloadResponse.json: -------------------------------------------------------------------------------- 1 | { 2 | "adUnitCode": "video1", 3 | "bidder": "appnexus", 4 | "bidderCode": "appnexus", 5 | "code": "appnexus", 6 | "dealId": "foo", 7 | "cpm": 0.1, 8 | "height": 480, 9 | "mediaType": "video", 10 | "auctionId": "6172477f-987f-4523-a967-fa6d7a434ddf", 11 | "vastXml": "", 12 | "width": 640 13 | } 14 | -------------------------------------------------------------------------------- /test/fixtures/video/adUnit.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "video1", 3 | "sizes": [640,480], 4 | "mediaType": "video", 5 | "bids": [ 6 | { 7 | "bidder": "appnexus", 8 | "params": { 9 | "placementId": "9333431", 10 | "video": { 11 | "skipppable": false, 12 | "playback_methods": ["auto_play_sound_off"] 13 | } 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /modules/kargoAnalyticsAdapter.js: -------------------------------------------------------------------------------- 1 | import adapter from '../src/AnalyticsAdapter'; 2 | import adapterManager from '../src/adapterManager'; 3 | 4 | var kargoAdapter = adapter({ 5 | analyticsType: 'endpoint', 6 | url: 'https://krk.kargo.com/api/v1/event/prebid' 7 | }); 8 | 9 | adapterManager.registerAnalyticsAdapter({ 10 | adapter: kargoAdapter, 11 | code: 'kargo' 12 | }); 13 | 14 | export default kargoAdapter; 15 | -------------------------------------------------------------------------------- /src/adapter.js: -------------------------------------------------------------------------------- 1 | export default function Adapter(code) { 2 | var bidderCode = code; 3 | 4 | function setBidderCode(code) { 5 | bidderCode = code; 6 | } 7 | 8 | function getBidderCode() { 9 | return bidderCode; 10 | } 11 | 12 | function callBids() { 13 | } 14 | 15 | return { 16 | callBids: callBids, 17 | setBidderCode: setBidderCode, 18 | getBidderCode: getBidderCode 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /src/adapters/analytics/example.js: -------------------------------------------------------------------------------- 1 | /** 2 | * example.js - analytics adapter for Example Analytics Library example 3 | */ 4 | 5 | import adapter from '../../AnalyticsAdapter'; 6 | 7 | export default adapter( 8 | { 9 | url: 'http://localhost:9999/src/adapters/analytics/libraries/example.js', 10 | global: 'ExampleAnalyticsGlobalObject', 11 | handler: 'on', 12 | analyticsType: 'library' 13 | } 14 | ); 15 | -------------------------------------------------------------------------------- /modules/meazyBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Meazy Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: dima@meazy.co 6 | 7 | # Description 8 | 9 | Module that connects to Meazy demand sources 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'test-div', 15 | sizes: [[300, 250]], 16 | bids: [{ 17 | bidder: "meazy", 18 | params: { 19 | pid: '6910b7344ae566a1' 20 | } 21 | }] 22 | }]; 23 | ``` -------------------------------------------------------------------------------- /modules/adxcgAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: adxcg Analytics Adapter 3 | 4 | Module Type: Analytics Adapter 5 | 6 | Maintainer: info@adxcg.com 7 | 8 | # Description 9 | 10 | Analytics adapter for Adxcg. We are an advanced programmatic solutions company. 11 | https://www.adxcg.com/ 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | { 17 | provider: 'adxcg', 18 | options : { 19 | publisherId: ["42"] 20 | } 21 | } 22 | 23 | ``` 24 | -------------------------------------------------------------------------------- /modules/vubleAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Vuble Analytics Adapter 4 | 5 | Module Type: Vuble Analytics Adapter 6 | 7 | Maintainer: abruyere@mediabong.com 8 | 9 | # Description 10 | 11 | Analytics adapter for vuble.tv Contact contact@mediabong.com for information. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | { 17 | provider: 'vuble', 18 | options: { 19 | pubId: 18, // require 20 | env: 'net', // require 21 | } 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /integrationExamples/gpt/amp/gulpfile.js: -------------------------------------------------------------------------------- 1 | /** Run `gulp serve` to serve files from this directory in development 2 | * Set two different entries in hosts to use x-domain iframes 3 | * AMP requires https 4 | */ 5 | 6 | var gulp = require('gulp'); 7 | var connect = require('gulp-connect'); 8 | var port = 5000; 9 | 10 | gulp.task('serve', function() { 11 | connect.server({ 12 | port: port, 13 | root: './', 14 | livereload: true, 15 | https: true 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /modules/sigmoidAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: Sigmoid Analytics Adapter 3 | 4 | Module Type: Analytics Adapter 5 | 6 | Maintainer: ramees@sigmoidanalytics.com 7 | 8 | # Description 9 | 10 | Analytics adapter for Sigmoid. We are an advanced analytical solutions company. 11 | https://www.sigmoid.com/ 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | { 17 | provider: 'sigmoid', 18 | options : { 19 | publisherIds: ["3gxdf18d32"] 20 | } 21 | } 22 | 23 | ``` 24 | -------------------------------------------------------------------------------- /src/prebidGlobal.js: -------------------------------------------------------------------------------- 1 | // if $$PREBID_GLOBAL$$ already exists in global document scope, use it, if not, create the object 2 | // global defination should happen BEFORE imports to avoid global undefined errors. 3 | window.$$PREBID_GLOBAL$$ = (window.$$PREBID_GLOBAL$$ || {}); 4 | window.$$PREBID_GLOBAL$$.cmd = window.$$PREBID_GLOBAL$$.cmd || []; 5 | window.$$PREBID_GLOBAL$$.que = window.$$PREBID_GLOBAL$$.que || []; 6 | 7 | export function getGlobal() { 8 | return window.$$PREBID_GLOBAL$$; 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/targeting-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "/19968336/header-bid-tag-0": [ 3 | { 4 | "hb_bidder": [ 5 | "appnexus" 6 | ] 7 | }, 8 | { 9 | "hb_adid": [ 10 | "233bcbee889d46d" 11 | ] 12 | }, 13 | { 14 | "hb_pb": [ 15 | "10.00" 16 | ] 17 | }, 18 | { 19 | "hb_size": [ 20 | "300x250" 21 | ] 22 | }, 23 | { 24 | "foobar": [ 25 | "300x250" 26 | ] 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /modules/datablocksAnalyticsAdapter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Analytics Adapter for Datablocks 3 | */ 4 | 5 | import adapter from '../src/AnalyticsAdapter'; 6 | import adapterManager from '../src/adapterManager'; 7 | 8 | var datablocksAdapter = adapter({ 9 | global: 'datablocksAnalytics', 10 | handler: 'on', 11 | analyticsType: 'bundle' 12 | }); 13 | 14 | adapterManager.registerAnalyticsAdapter({ 15 | adapter: datablocksAdapter, 16 | code: 'datablocks' 17 | }); 18 | 19 | export default datablocksAdapter; 20 | -------------------------------------------------------------------------------- /modules/datablocksAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Datablocks Analytics Adapter 4 | Module Type: Datablocks Adapter 5 | Maintainer: support@datablocks.net 6 | 7 | # Description 8 | 9 | Analytics adapter for Datablocks.net. Contact support@datablocks.net for information. 10 | 11 | # Test Parameters 12 | 13 | ``` 14 | { 15 | provider: 'datablocks', 16 | options: { 17 | publisherId: 12345, 18 | sourceId: 12356, 19 | host: 'prebid.datablocks.net' 20 | 21 | } 22 | } 23 | ``` -------------------------------------------------------------------------------- /modules/eplanningAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: E-Planning Analytics Adapter 5 | Module Type: Analytics Adapter 6 | Maintainer: mmartinho@e-planning.net 7 | ``` 8 | 9 | # Description 10 | 11 | Analytics adapter for E-Planning. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | { 17 | provider: 'eplanning', 18 | options : { 19 | host: 'https://ads.us.e-planning.net/hba/1/', // Host (optional) 20 | ci: "123456" // Client ID (required) 21 | } 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /modules/vmgBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: VMG Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: paul@vmgood.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects DFP to the VMG Predict engine. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'div-0', 17 | mediaTypes: { 18 | banner: { 19 | sizes: sizes 20 | } 21 | }, 22 | bids: [ 23 | { 24 | bidder: 'vmg' 25 | } 26 | ] 27 | }]; 28 | ``` 29 | -------------------------------------------------------------------------------- /modules/eplanningBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: E-Planning Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: ainsua@e-planning.net 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to E-Planning exchange for bids. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'div-gpt-ad-1460505748561-0', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'eplanning', 20 | params: { 21 | t: 1 22 | } 23 | }] 24 | }]; 25 | ``` 26 | -------------------------------------------------------------------------------- /modules/appnexusAnalyticsAdapter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * appnexus.js - AppNexus Prebid Analytics Adapter 3 | */ 4 | 5 | import adapter from '../src/AnalyticsAdapter'; 6 | import adapterManager from '../src/adapterManager'; 7 | 8 | var appnexusAdapter = adapter({ 9 | global: 'AppNexusPrebidAnalytics', 10 | handler: 'on', 11 | analyticsType: 'bundle' 12 | }); 13 | 14 | adapterManager.registerAnalyticsAdapter({ 15 | adapter: appnexusAdapter, 16 | code: 'appnexus' 17 | }); 18 | 19 | export default appnexusAdapter; 20 | -------------------------------------------------------------------------------- /modules/atomxBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: Atomx Bidder Adapter Module 3 | Type: Bidder Adapter 4 | Maintainer: erik@atomx.com 5 | 6 | # Description 7 | Atomx Bidder Adapter for Prebid.js. 8 | 9 | # Test Parameters 10 | ``` 11 | var adUnits = [ 12 | { 13 | code: 'test-div', 14 | sizes: [[300, 250]], 15 | bids: [ 16 | { 17 | bidder: 'atomx', 18 | params: { 19 | id: 4025860, 20 | } 21 | } 22 | ] 23 | } 24 | ]; 25 | ``` 26 | -------------------------------------------------------------------------------- /modules/pulsepointAnalyticsAdapter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * pulsepoint.js - Analytics Adapter for PulsePoint 3 | */ 4 | 5 | import adapter from '../src/AnalyticsAdapter'; 6 | import adapterManager from '../src/adapterManager'; 7 | 8 | var pulsepointAdapter = adapter({ 9 | global: 'PulsePointPrebidAnalytics', 10 | handler: 'on', 11 | analyticsType: 'bundle' 12 | }); 13 | 14 | adapterManager.registerAnalyticsAdapter({ 15 | adapter: pulsepointAdapter, 16 | code: 'pulsepoint' 17 | }); 18 | 19 | export default pulsepointAdapter; 20 | -------------------------------------------------------------------------------- /modules/scaleableAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Scaleable Analytics Adapter 4 | Module Type: Analytics Adapter 5 | Maintainer: chris@scaleable.ai 6 | 7 | # Description 8 | 9 | Analytics adapter for scaleable.ai. Contact team@scaleable.ai for more information or to sign up for analytics. 10 | 11 | # Implementation Code 12 | 13 | ``` 14 | pbjs.enableAnalytics({ 15 | provider: 'scaleable', 16 | options: { 17 | site: '' // Contact Scaleable to receive your unique site id 18 | } 19 | }); 20 | ``` 21 | -------------------------------------------------------------------------------- /modules/innityBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Innity Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: engtat@innity.com 6 | 7 | # Description 8 | 9 | Innity Bidder Adapter for Prebid.js. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'div-gpt-ad-1460505748561-0', 15 | sizes: [[300, 250]], 16 | bids: [{ 17 | bidder: 'innity', 18 | params: { 19 | pub: 267, 20 | zone: 62546 21 | } 22 | }] 23 | }]; 24 | 25 | ``` -------------------------------------------------------------------------------- /modules/sovrnAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Sovrn Analytics Adapter 5 | Module Type: Analytics Adapter 6 | Maintainer: jrosendahl@sovrn.com 7 | ``` 8 | 9 | # Description 10 | 11 | Sovrn's analytics adaptor allows you to view detailed auction information in Meridian. 12 | 13 | For more information, visit Sovrn.com. 14 | 15 | # Test Parameters 16 | ``` 17 | { 18 | provider: 'sovrn', 19 | options: { 20 | sovrnId: 'xxxxx', // Sovrn ID (required) you can get this by contacting Sovrn support. 21 | } 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /modules/yuktamediaAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: YuktaMedia Analytics Adapter 3 | 4 | Module Type: Analytics Adapter 5 | 6 | Maintainer: info@yuktamedia.com 7 | 8 | # Description 9 | 10 | Analytics adapter for prebid provided by YuktaMedia. Contact info@yuktamedia.com for information. 11 | 12 | # Test Parameters 13 | 14 | ``` 15 | { 16 | provider: 'yuktamedia', 17 | options : { 18 | pubId : 50357 //id provided by YuktaMedia LLP 19 | pubKey: 'xxx' //key provided by YuktaMedia LLP 20 | } 21 | } 22 | ``` 23 | -------------------------------------------------------------------------------- /modules/outconAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: outconAdapter 5 | Module Type: Bidder Adapter 6 | Maintainer: mfolmer@dokkogroup.com.ar 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Outcon demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | bidder: 'outcon', 18 | params: { 19 | internalId: '12345678', 20 | publisher: '5d5d66f2306ea4114a37c7c2', 21 | bidId: '123456789', 22 | env: 'test' 23 | } 24 | } 25 | ]; 26 | ``` -------------------------------------------------------------------------------- /modules/piximediaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Piximedia Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: contact@piximedia.fr 6 | 7 | # Description 8 | 9 | Piximedia Bidder Adapter for Prebid.js. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'mpu', 15 | sizes: [[300, 250]], 16 | bids: [{ 17 | bidder: 'piximedia', 18 | params: { 19 | siteId: 'PIXIMEDIA', 20 | placementId: 'PREBID' 21 | } 22 | }] 23 | }]; 24 | 25 | ``` 26 | -------------------------------------------------------------------------------- /modules/adkernelAdnAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: Adkernel ADN Analytics Adapter 3 | 4 | Module Type: Analytics Adapter 5 | 6 | Maintainer: denis@adkernel.com 7 | 8 | # Description 9 | 10 | Analytics adapter for Adkernel Ad Delivery Network. Contact contact@adkernel.com for information. 11 | 12 | # Test Parameters 13 | 14 | ``` 15 | { 16 | provider: 'adkernelAdn', 17 | options : { 18 | pubId : 50357, //id provided by adkernel 19 | host: 'dsp-staging.adkernel.com' //optional host for validation purposes 20 | } 21 | } 22 | ``` 23 | -------------------------------------------------------------------------------- /modules/yieldoneAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: Platform One Analytics 3 | 4 | Module Type: Analytics Adapter 5 | 6 | Maintainer: y1s@platform-one.co.jp 7 | 8 | # Description 9 | 10 | Analytics adapter for Platform One. Please contact y1s@platform-one.co.jp for any additional information. Official website link to the vendor: www.platform-one.co.jp/. 11 | 12 | # Test Parameters 13 | 14 | ``` 15 | { 16 | provider: 'yieldone', 17 | options : { 18 | pubId : 'TestAnalyticsPublisher', //id provided by Platform One publisher team 19 | } 20 | } 21 | ``` -------------------------------------------------------------------------------- /modules/freeWheelAdserverVideo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This module adds Freewheel support for Video to Prebid. 3 | */ 4 | 5 | import { registerVideoSupport } from '../src/adServerManager'; 6 | import { getHook, submodule } from '../src/hook'; 7 | 8 | export const adpodUtils = {}; 9 | export function notifyTranslationModule(fn) { 10 | fn.call(this, 'freewheel'); 11 | } 12 | 13 | getHook('registerAdserver').before(notifyTranslationModule); 14 | 15 | registerVideoSupport('freewheel', { 16 | getTargeting: (args) => adpodUtils.getTargeting(args) 17 | }); 18 | 19 | submodule('adpod', adpodUtils); 20 | -------------------------------------------------------------------------------- /modules/appierAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Appier Analytics Adapter 4 | Module Type: Analytics Adapter 5 | Maintainer: apn-dev@appier.com 6 | 7 | # Description 8 | 9 | Analytics adapter for Appier 10 | 11 | # Test Parameters 12 | 13 | ``` 14 | { 15 | provider: 'appierAnalytics', 16 | options: { 17 | 'configId': 'YOUR_CONFIG_ID', 18 | 'affiliateId': 'YOUR_AFFILIATE_ID', 19 | } 20 | } 21 | ``` 22 | 23 | PS. [Prebid currency module](http://prebid.org/dev-docs/modules/currency.html) is required, please make sure your prebid code contains currency module code. 24 | -------------------------------------------------------------------------------- /modules/staqAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: STAQ Analytics Adapter 3 | 4 | Module Type: Analytics Adapter 5 | 6 | Maintainer: dev@staq.com 7 | 8 | # Description 9 | 10 | Analytics adapter for STAQ. Contact support@staq.com for information. 11 | 12 | # Test Parameters 13 | 14 | ``` 15 | { 16 | provider: 'staq', 17 | options: { 18 | host: , // HOST URL of site. Optional. Only required for whitelisting. 19 | url: 'localhost:3000', // REQUIRED host URL for delivery of information to STAQ 20 | connId: '5678' // REQUIRED STAQ connection ID 21 | } 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /modules/lockerdomeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: LockerDome Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: bidding@lockerdome.com 7 | ``` 8 | 9 | #Description 10 | Connects to LockerDome Ad Server for bids. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [{ 15 | code: 'ad-div', 16 | mediaTypes: { 17 | banner: { 18 | sizes: [[300, 250]] 19 | } 20 | }, 21 | bids: [{ 22 | bidder: 'lockerdome', 23 | params: { 24 | adUnitId: 'LD10809467961050726' 25 | } 26 | }] 27 | }]; 28 | ``` 29 | -------------------------------------------------------------------------------- /modules/timBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: tim Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: boris@thetimmedia.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to tim's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | "code":"99", 17 | "sizes":[[300,250]], 18 | "bids":[{"bidder":"tim", 19 | "params":{ 20 | "placementCode":"testPlacementCode", 21 | "publisherid":"testpublisherid" 22 | } 23 | }] 24 | }] 25 | ``` 26 | 27 | -------------------------------------------------------------------------------- /modules/sonobiAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Sonobi Analytics Adapter 5 | Module Type: Analytics Adapter 6 | Maintainer: apex@sonobi.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Sonobi's Analytics service 12 | 13 | # Test Parameters 14 | ``` 15 | 16 | pbjs.enableAnalytics({ 17 | provider: 'sonobi', 18 | options: { 19 | pubId: 'ffBB352', 20 | siteId: 57463, 21 | delay: 300 22 | } 23 | }); 24 | ``` 25 | -------------------------------------------------------------------------------- /src/mediaTypes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file contains the valid Media Types in Prebid. 3 | * 4 | * All adapters are assumed to support banner ads. Other media types are specified by Adapters when they 5 | * register themselves with prebid-core. 6 | */ 7 | 8 | /** 9 | * @typedef {('native'|'video'|'banner')} MediaType 10 | * @typedef {('adpod')} VideoContext 11 | */ 12 | 13 | /** @type MediaType */ 14 | export const NATIVE = 'native'; 15 | /** @type MediaType */ 16 | export const VIDEO = 'video'; 17 | /** @type MediaType */ 18 | export const BANNER = 'banner'; 19 | /** @type VideoContext */ 20 | export const ADPOD = 'adpod'; 21 | -------------------------------------------------------------------------------- /integrationExamples/longform/longform_testpages_style.css: -------------------------------------------------------------------------------- 1 | #videoPlayer { 2 | height: 480px; 3 | width: 100%; 4 | background-color: #000; 5 | } 6 | 7 | .outer { 8 | position: relative; 9 | } 10 | 11 | #skip { 12 | position: absolute; 13 | right: 20px; 14 | bottom: 20px; 15 | display: none; 16 | color: white; 17 | background-color: black; 18 | border: 1px solid gray; 19 | } 20 | 21 | #adCount { 22 | color: white; 23 | position: absolute; 24 | left: 20px; 25 | bottom: 20px; 26 | display: none; 27 | } 28 | 29 | #showad { 30 | color: white; 31 | position: absolute; 32 | left: 20px; 33 | top: 20px; 34 | } -------------------------------------------------------------------------------- /modules/giantsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Giants Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: info@prebid.org 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Giants exchange for bids. 12 | 13 | Giants bid adapter supports Banner. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | // Banner adUnit 19 | { 20 | code: 'banner-div', 21 | sizes: [[300, 250], [300,600]], 22 | bids: [{ 23 | bidder: 'giants', 24 | params: { 25 | zoneId: '584072408' 26 | } 27 | }] 28 | } 29 | ]; 30 | ``` -------------------------------------------------------------------------------- /modules/kargoBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Kargo Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: kraken@kargo.com 6 | 7 | # Description 8 | 9 | Please use `kargo` as the bidder code. Also, you *must* test on a mobile device, or emulate a mobile device by manipulating the user agent string sent to the server. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'div-gpt-ad-1460505748561-1', 15 | sizes: [[300,250],[1,1]], 16 | bids: [{ 17 | bidder: 'kargo', 18 | params: { 19 | placementId: '_m1Xt2E5dez' 20 | } 21 | }] 22 | }]; 23 | ``` 24 | -------------------------------------------------------------------------------- /modules/logicadBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | ``` 3 | Module Name: Logicad for Publishers 4 | Module Type: Bidder Adapter 5 | Maintainer: prebid@so-netmedia.jp 6 | ``` 7 | 8 | # Description 9 | Module that connects to Logicad's demand sources. 10 | Currently module supports only banner mediaType. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [{ 15 | code: 'test-code', 16 | sizes: [[300, 250],[300, 600]], 17 | bids: [{ 18 | bidder: 'logicad', 19 | params: { 20 | tid: 'test', 21 | page: 'url', 22 | } 23 | }] 24 | }]; 25 | ``` 26 | -------------------------------------------------------------------------------- /modules/bidfluenceBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Bidfluence Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: integrations@bidfluence.com 7 | prebid_1_0_supported : true 8 | gdpr_supported: true 9 | ``` 10 | 11 | # Description 12 | 13 | Bidfluence adapter for prebid. 14 | 15 | # Test Parameters 16 | 17 | ``` 18 | var adUnits = [ 19 | { 20 | code: 'test-prebid', 21 | sizes: [[300, 250]], 22 | bids: [{ 23 | bidder: 'bidfluence', 24 | params: { 25 | placementId: '1000', 26 | publisherId: '1000' 27 | } 28 | }] 29 | } 30 | ] 31 | ``` 32 | -------------------------------------------------------------------------------- /modules/fidelityBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Fidelity Media fmxSSP Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: on@fidelity-media.com 6 | 7 | # Description 8 | 9 | Connects to Fidelity Media fmxSSP demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'banner-ad-div', 15 | sizes: [[300, 250]], 16 | bids: [{ 17 | bidder: 'fidelity', 18 | params: { 19 | zoneid: '27248', 20 | floor: 0.005, 21 | server: 'x.fidelity-media.com' 22 | } 23 | }] 24 | }]; 25 | 26 | ``` 27 | -------------------------------------------------------------------------------- /modules/rdnBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: RDN Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: engineer@lob-inc.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to RDN for bids. 12 | 13 | RDN bid adapter supports Banner currently. 14 | 15 | # Test Parameters 16 | 17 | ``` 18 | var adUnits = [ 19 | { 20 | code: 'test-ad-div', 21 | sizes: [[300, 250]], 22 | mediaTypes: {banner: {}}, 23 | bids: [ 24 | { 25 | bidder: 'rdn', 26 | params: { 27 | adSpotId: '10000' 28 | } 29 | } 30 | ] 31 | } 32 | ]; 33 | ``` 34 | -------------------------------------------------------------------------------- /modules/rtbdemandBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Rtbdemand Media fmxSSP Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: rtb@rtbdemand.com 6 | 7 | # Description 8 | 9 | Connects to Rtbdemand Media fmxSSP demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'banner-ad-div', 15 | sizes: [[300, 250]], 16 | bids: [{ 17 | bidder: 'rtbdemand', 18 | params: { 19 | zoneid: '9999', 20 | floor: 0.005, 21 | server: 'bidding.rtbdemand.com' 22 | } 23 | }] 24 | }]; 25 | 26 | ``` 27 | -------------------------------------------------------------------------------- /modules/orbidderBidAdapter.md: -------------------------------------------------------------------------------- 1 | #Overview 2 | 3 | ``` 4 | Module Name: Orbidder Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: orbidder@otto.de 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to orbidder demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: '/105091519/bidder_test', 17 | mediaTypes: { 18 | banner: { 19 | sizes: [728, 90] 20 | } 21 | }, 22 | bids: [{ 23 | bidder: 'orbidder' 24 | params: { 25 | accountId: "someAccount", 26 | placementId: "somePlace" 27 | } 28 | }] 29 | }]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/prebidServerBidAdapter/config.js: -------------------------------------------------------------------------------- 1 | // accountId and bidders params are not included here, should be configured by end-user 2 | export const S2S_VENDORS = { 3 | 'appnexus': { 4 | adapter: 'prebidServer', 5 | enabled: true, 6 | endpoint: '//prebid.adnxs.com/pbs/v1/openrtb2/auction', 7 | syncEndpoint: '//prebid.adnxs.com/pbs/v1/cookie_sync', 8 | timeout: 1000 9 | }, 10 | 'rubicon': { 11 | adapter: 'prebidServer', 12 | enabled: true, 13 | endpoint: '//prebid-server.rubiconproject.com/openrtb2/auction', 14 | syncEndpoint: '//prebid-server.rubiconproject.com/cookie_sync', 15 | timeout: 500 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/livewrappedBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Livewrapped Bid Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: info@livewrapped.com 6 | 7 | # Description 8 | 9 | Connects to Livewrapped Header Bidding wrapper for bids. 10 | 11 | Livewrapped supports banner. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'banner-div', 19 | sizes: [[300, 250], [300,600]], 20 | bids: [{ 21 | bidder: 'livewrapped', 22 | params: { 23 | adUnitId: '6A32352E-BC17-4B94-B2A7-5BF1724417D7' 24 | } 25 | }] 26 | } 27 | ]; 28 | ``` 29 | -------------------------------------------------------------------------------- /allowedModules.js: -------------------------------------------------------------------------------- 1 | 2 | const sharedWhiteList = [ 3 | "core-js/library/fn/array/find", // no ie11 4 | "core-js/library/fn/array/includes", // no ie11 5 | "core-js/library/fn/set", // ie11 supports Set but not Set#values 6 | "core-js/library/fn/string/includes", // no ie11 7 | "core-js/library/fn/number/is-integer", // no ie11, 8 | "core-js/library/fn/array/from" // no ie11 9 | ]; 10 | 11 | module.exports = { 12 | 'modules': [ 13 | ...sharedWhiteList, 14 | 'jsencrypt', 15 | 'crypto-js' 16 | ], 17 | 'src': [ 18 | ...sharedWhiteList, 19 | 'fun-hooks/no-eval', 20 | 'just-clone', 21 | 'dlv', 22 | 'dset' 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /modules/aardvarkBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Aardvark Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: chris@rtk.io 6 | 7 | # Description 8 | 9 | Module that connects to a RTK.io Ad Units to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | mediaTypes: { 15 | banner: { 16 | sizes: [[300, 250]], 17 | } 18 | }, 19 | code: 'div-gpt-ad-1460505748561-0', 20 | 21 | bids: [{ 22 | bidder: 'aardvark', 23 | params: { 24 | ai: '0000', 25 | sc: '1234' 26 | } 27 | }] 28 | 29 | }]; 30 | ``` 31 | -------------------------------------------------------------------------------- /integrationExamples/gpt/creative_rendering.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 21 | -------------------------------------------------------------------------------- /modules/playgroundxyzBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Playground XYZ Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: tech+prebid@playgroundxyz.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to playgroundxyz ad server for bids. 12 | 13 | Playground XYZ bid adapter supports Banner. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | // Banner adUnit 19 | { 20 | code: 'banner-div', 21 | sizes: [[300, 250], [300,600]], 22 | bids: [{ 23 | bidder: 'playgroundxyz', 24 | params: { 25 | placementId: '10433394' 26 | } 27 | }] 28 | } 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/videoreachBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Video Reach Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: hello@videoreach.com 6 | 7 | # Description 8 | 9 | Video Reach Bidder Adapter for Prebid.js. 10 | 11 | Use `videoreach` as bidder. 12 | 13 | `TagId` ist required. 14 | 15 | ## AdUnits configuration example 16 | ``` 17 | var adUnits = [{ 18 | code: 'your-slot', //use exactly the same code as your slot div id. 19 | sizes: [[1, 1]], 20 | bids: [{ 21 | bidder: 'videoreach', 22 | params: { 23 | TagId: 'XXXXX' 24 | } 25 | }] 26 | }]; 27 | ``` 28 | -------------------------------------------------------------------------------- /test/mocks/adloaderStub.js: -------------------------------------------------------------------------------- 1 | 2 | import * as adloader from 'src/adloader'; 3 | 4 | let sandbox; 5 | 6 | export let loadScript; 7 | export let loadExternalScript; 8 | export let loadScriptStub; 9 | export let loadExternalScriptStub; 10 | 11 | beforeEach(function() { 12 | sandbox = sinon.sandbox.create(); 13 | loadScript = adloader.loadScript; 14 | loadExternalScript = adloader.loadExternalScript; 15 | loadScriptStub = sandbox.stub(adloader, 'loadScript').callsFake((...args) => { 16 | args[1](); 17 | }); 18 | loadExternalScriptStub = sandbox.stub(adloader, 'loadExternalScript'); 19 | }); 20 | 21 | afterEach(function() { 22 | sandbox.restore(); 23 | }); 24 | -------------------------------------------------------------------------------- /modules/undertoneBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Example Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: RampProgrammatic@perion.com 7 | ``` 8 | # Description 9 | 10 | Module that connects to Undertone's demand sources 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'test-div', 17 | sizes: [[300, 250]], 18 | bids: [ 19 | { 20 | bidder: "undertone", 21 | params: { 22 | placementId: '10433394', 23 | publisherId: 12345 24 | } 25 | } 26 | ] 27 | } 28 | ]; 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/colombiaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: COLOMBIA Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: colombiaonline@timesinteret.in 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to COLOMBIA for bids. 12 | 13 | THE COLOMBIA adapter requires setup and approval from the COLOMBIA team. Please reach out to your account team or colombiaonline@timesinteret.in for more information. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [{ 18 | code: 'test-ad-div', 19 | sizes: [[300, 250]], 20 | bids: [{ 21 | bidder: 'colombia', 22 | params: { 23 | placementId: '307466' 24 | } 25 | }] 26 | }]; 27 | ``` 28 | -------------------------------------------------------------------------------- /integrationExamples/gpt/amp/README.md: -------------------------------------------------------------------------------- 1 | ##WARNING 2 | The below documented method of deploying prebid on AMP requires remote.html 3 | This is being deprecated on March 29th. A new method the requires Prebid Server 4 | is being developed, see [Prebid Server](http://github.com/prebid/prebid-server). 5 | 6 | ## Old method: 7 | 8 | This README provides steps to run amp example page. 9 | 10 | Add following entries to your hosts file 11 | 12 | 127.0.0.1 publisher.com 13 | 127.0.0.1 amp.publisher.com 14 | 15 | Command to run 16 | 17 | gulp serve --https 18 | 19 | Additional documentation can be found at [Prebid AMP](http://prebid.org/dev-docs/how-prebid-on-amp-works.html) 20 | -------------------------------------------------------------------------------- /modules/huddledmassesBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: HuddledMasses Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: supply@huddledmasses.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to HuddledMasses' demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementid_0', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'huddledmasses', 20 | params: { 21 | placement_id: 0 22 | } 23 | }] 24 | } 25 | ]; 26 | ``` 27 | -------------------------------------------------------------------------------- /modules/invibesBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Invibes Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: system_operations@invibes.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to Invibes for bids. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div', 18 | sizes: [[400, 300]], 19 | bids: [ 20 | { 21 | bidder: 'invibes', 22 | params: { 23 | placementId: '12345' 24 | } 25 | } 26 | ] 27 | } 28 | ] 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/microadBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: MicroAd SSP Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: prebid@microad.co.jp 6 | 7 | # Description 8 | 9 | Module that connects to MicroAd SSP demand sources. 10 | 11 | # Test Parameters 12 | 13 | ```javascript 14 | var adUnits = [ 15 | code: '209e56872ae8b0442a60477ae0c58be9', 16 | mediaTypes: { 17 | banner: { 18 | sizes: [[200, 200]] 19 | } 20 | }, 21 | bids: [{ 22 | bidder: 'microad', 23 | params: { 24 | spot: '209e56872ae8b0442a60477ae0c58be9' 25 | } 26 | }] 27 | ]; 28 | ``` 29 | -------------------------------------------------------------------------------- /modules/imonomyBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Imonomy Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: support@imonomy.com 6 | 7 | # Description 8 | 9 | Connects to Imonomy demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'banner-ad-div', 15 | sizes: [[300, 250]], 16 | 17 | // Replace this object to test a new Adapter! 18 | bids: [{ 19 | bidder: 'imonomy', 20 | params: { 21 | placementId: 'e69148e0ba6c4c07977dc2daae5e1577', 22 | hbid: '14567718624', 23 | floorPrice: 0.5 24 | } 25 | }] 26 | }]; 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /modules/adliveBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | ``` 3 | Module Name: Adlive Bid Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: traffic@adlive.io 6 | ``` 7 | 8 | # Description 9 | Module that connects to Adlive's server for bids. 10 | Currently module supports only banner mediaType. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [{ 15 | code: '/test/div', 16 | mediaTypes: { 17 | banner: { 18 | sizes: [[300, 250]] 19 | } 20 | }, 21 | bids: [{ 22 | bidder: 'adlive', 23 | params: { 24 | hashes: ['1e100887dd614b0909bf6c49ba7f69fdd1360437'] 25 | } 26 | }] 27 | }]; 28 | ``` -------------------------------------------------------------------------------- /modules/arteebeeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Arteebee Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: jeffyecn@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Arteebee's demand source 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'banner-ad-div', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'arteebee', 22 | params: { 23 | ssp: 'mock', 24 | pub: 'prebidtest', 25 | source: 'prebidtest', 26 | test: true 27 | } 28 | } 29 | ] 30 | } 31 | ]; 32 | ``` -------------------------------------------------------------------------------- /modules/peak226BidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Peak226 Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@edge226.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Peak226's demand sources 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: "test-div", 19 | sizes: [[300, 250]], 20 | mediaType: "banner", 21 | bids: [ 22 | { 23 | bidder: "peak226", 24 | params: { 25 | uid: 76131369 26 | } 27 | } 28 | ] 29 | } 30 | ]; 31 | ``` 32 | -------------------------------------------------------------------------------- /modules/underdogmediaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Underdog Media Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: jake@underdogmedia.com 6 | 7 | # Description 8 | 9 | Module that connects to Underdog Media's servers to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], // a display size 17 | bids: [ 18 | { 19 | bidder: "underdogmedia", 20 | params: { 21 | siteId: '12143' 22 | } 23 | } 24 | ] 25 | } 26 | ]; 27 | ``` -------------------------------------------------------------------------------- /modules/pubnxBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: PubNX Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid-team@pubnx.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to PubNX exchange for bids. 12 | PubNX Bidder adapter supports Banner ads. 13 | Use bidder code ```pubnx``` for all PubNX traffic. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | // Banner adUnit 19 | { 20 | code: 'banner-div', 21 | sizes: [[300, 250], [300,600]], // a display size(s) 22 | bids: [{ 23 | bidder: 'pubnx', 24 | params: { 25 | placementId: 'PNX-HB-G396432V4809F3' 26 | } 27 | }] 28 | }, 29 | ]; 30 | ``` 31 | 32 | -------------------------------------------------------------------------------- /modules/bizzclickBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: BizzClick SSP Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@bizzclick.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to BizzClick SSP demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementId', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'bizzclick', 20 | params: { 21 | placementId: 0, 22 | type: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` -------------------------------------------------------------------------------- /modules/mantisBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: MANTIS Ad Network Bid Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: paris@mantisadnetwork.com 8 | 9 | # Description 10 | 11 | Module that connects to MANTIS's demand sources 12 | 13 | # Test Parameters 14 | ```javascript 15 | var adUnits = [ 16 | { 17 | code: 'test', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'mantis', 22 | params: { 23 | property: 'demo', 24 | zone: 'zone' 25 | } 26 | } 27 | ] 28 | } 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/padsquadBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Padsquad Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: yeeldpadsquad@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Padsquad exchange for bids. 12 | 13 | Padsquad bid adapter supports Banner ads. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: 'banner-ad-div', 20 | mediaTypes: { 21 | banner: { 22 | sizes: [[300, 250], [300,600]] 23 | } 24 | }, 25 | bids: [{ 26 | bidder: 'padsquad', 27 | params: { 28 | unitId: 'test' 29 | } 30 | }] 31 | } 32 | ]; 33 | ``` 34 | -------------------------------------------------------------------------------- /modules/smartyadsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: SmartyAds Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: supply@smartyads.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to SmartyAds' demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementId_0', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'smartyads', 20 | params: { 21 | placementId: 0, 22 | traffic: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` -------------------------------------------------------------------------------- /modules/advenueBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Advenue SSP Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: dev.advenue@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Advenue SSP demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementCode', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'advenue', 20 | params: { 21 | placementId: 0, 22 | traffic: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` 28 | -------------------------------------------------------------------------------- /modules/hpmdnetworkBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: HPMD Network Bidder Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: a.fominov@hpmdnetwork.ru 8 | 9 | # Description 10 | 11 | You can use this adapter to get a bid from HPMD Network. 12 | 13 | About us : https://www.hpmdnetwork.ru/ 14 | 15 | 16 | # Test Parameters 17 | ```javascript 18 | var adUnits = [ 19 | { 20 | code: 'test-div', 21 | bids: [ 22 | { 23 | bidder: "hpmdnetwork", 24 | params: { 25 | placementId: "123" 26 | } 27 | } 28 | ] 29 | } 30 | ]; 31 | ``` 32 | 33 | -------------------------------------------------------------------------------- /modules/nextMillenniumBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | ``` 3 | Module Name: NextMillennium Bid Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: mikhail.ivanchenko@iageengineering.net 6 | ``` 7 | 8 | # Description 9 | Module that connects to NextMillennium's server for bids. 10 | Currently module supports only banner mediaType. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [{ 15 | code: '/test/div', 16 | mediaTypes: { 17 | banner: { 18 | sizes: [[300, 250]] 19 | } 20 | }, 21 | bids: [{ 22 | bidder: 'nextMillennium', 23 | params: { 24 | placement_id: -1 25 | } 26 | }] 27 | }]; 28 | ``` -------------------------------------------------------------------------------- /modules/vertozBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Vertoz Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid-team@vertoz.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Vertoz exchange for bids. 12 | Vertoz Bidder adapter supports Banner ads. 13 | Use bidder code ```vertoz``` for all Vertoz traffic. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | // Banner adUnit 19 | { 20 | code: 'banner-div', 21 | sizes: [[300, 250], [300,600]], // a display size(s) 22 | bids: [{ 23 | bidder: 'vertoz', 24 | params: { 25 | placementId: 'VZ-HB-B784382V6C6G3C' 26 | } 27 | }] 28 | }, 29 | ]; 30 | ``` 31 | 32 | -------------------------------------------------------------------------------- /modules/komoonaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Komoona Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: support@komoona.com 6 | 7 | # Description 8 | 9 | Connects to Komoona demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'banner-ad-div', 15 | sizes: [[300, 250]], 16 | 17 | // Replace this object to test a new Adapter! 18 | bids: [{ 19 | bidder: 'komoona', 20 | params: { 21 | placementId: 'e69148e0ba6c4c07977dc2daae5e1577', 22 | hbid: '1f5b2c10e66e419580bd943b9af692ab', 23 | floorPrice: 0.5 24 | } 25 | }] 26 | }]; 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /modules/weboramaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Weborama SSP Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: devweborama@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Weborama SSP demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementCode', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'weborama', 20 | params: { 21 | placementId: 0, 22 | traffic: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` 28 | -------------------------------------------------------------------------------- /modules/adponeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Adpone Bidder Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: tech@adpone.com 8 | 9 | # Description 10 | 11 | You can use this adapter to get a bid from adpone.com. 12 | 13 | About us : https://www.adpone.com 14 | 15 | 16 | # Test Parameters 17 | ```javascript 18 | var adUnits = [ 19 | { 20 | code: 'div-adpone-example', 21 | sizes: [[300, 250]], 22 | bids: [ 23 | { 24 | bidder: "adpone", 25 | params: { 26 | placementId: "1234" 27 | } 28 | } 29 | ] 30 | } 31 | ]; 32 | ``` 33 | -------------------------------------------------------------------------------- /modules/freewheel-sspBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Freewheel SSP Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: clientsidesdk@freewheel.tv 6 | 7 | # Description 8 | 9 | Module that connects to Freewheel ssp's demand sources 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], // a display size 17 | bids: [ 18 | { 19 | bidder: "freewheel-ssp", 20 | params: { 21 | zoneId : '41852' 22 | } 23 | } 24 | ] 25 | } 26 | ]; 27 | ``` -------------------------------------------------------------------------------- /modules/reklamstoreBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: ReklamStore Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: it@reklamstore.com 6 | 7 | # Description 8 | 9 | Module that connects to ReklamStore's demand sources. 10 | 11 | ReklamStore supports display. 12 | 13 | 14 | # Test Parameters 15 | # display 16 | ``` 17 | 18 | var adUnits = [ 19 | { 20 | code: 'banner-ad-div', 21 | sizes: [[300, 250]], 22 | bids: [ 23 | { 24 | bidder: 'reklamstore', 25 | params: { 26 | regionId:532211 27 | } 28 | } 29 | ] 30 | } 31 | ]; 32 | ``` -------------------------------------------------------------------------------- /modules/bidphysicsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: BidPhysics Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: info@bidphysics.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to BidPhysics exchange for bids. 12 | 13 | BidPhysics bid adapter supports Banner ads. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: 'banner-ad-div', 20 | mediaTypes: { 21 | banner: { 22 | sizes: [[300, 250], [300,600]] 23 | } 24 | }, 25 | bids: [{ 26 | bidder: 'bidphysics', 27 | params: { 28 | unitId: 'bidphysics-test' 29 | } 30 | }] 31 | } 32 | ]; 33 | ``` 34 | -------------------------------------------------------------------------------- /modules/decenteradsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: DecenterAds Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: publishers@decenterads.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to DecenterAds' demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementId_0', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'decenterads', 20 | params: { 21 | placementId: 0, 22 | traffic: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` 28 | -------------------------------------------------------------------------------- /modules/inskinBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: InSkin Bid Adapter 4 | 5 | Module Type: Bid Adapter 6 | 7 | Maintainer: jgrimes@adzerk.com 8 | 9 | # Description 10 | 11 | Connects to InSkin Media for receiving bids from configured demand sources. 12 | 13 | # Test Parameters 14 | ```javascript 15 | var adUnits = [ 16 | { 17 | code: 'test-ad-1', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'inskin', 22 | params: { 23 | networkId: '9874', 24 | siteId: '983808' 25 | } 26 | } 27 | ] 28 | } 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /.babelrc.js: -------------------------------------------------------------------------------- 1 | 2 | let path = require('path'); 3 | 4 | function useLocal(module) { 5 | return require.resolve(module, { 6 | paths: [ 7 | __dirname 8 | ] 9 | }) 10 | } 11 | 12 | module.exports = { 13 | "presets": [ 14 | [ 15 | useLocal('@babel/preset-env'), 16 | { 17 | "targets": { 18 | "browsers": [ 19 | "chrome >= 61", 20 | "safari >=8", 21 | "edge >= 14", 22 | "ff >= 57", 23 | "ie >= 10", 24 | "ios >= 8" 25 | ] 26 | } 27 | } 28 | ] 29 | ], 30 | "plugins": [ 31 | path.resolve(__dirname, './plugins/pbjsGlobals.js'), 32 | useLocal('babel-plugin-transform-object-assign') 33 | ] 34 | }; 35 | -------------------------------------------------------------------------------- /modules/collectcentBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Collectcent SSP Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: dev.collectcent@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Collectcent SSP demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementCode', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'collectcent', 20 | params: { 21 | placementId: 0, 22 | traffic: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` 28 | -------------------------------------------------------------------------------- /modules/colossussspBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Colossus SSP Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@colossusmediallc.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Colossus SSP demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'placementid_0', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'colossusssp', 20 | params: { 21 | placement_id: 0, 22 | traffic: 'banner' 23 | } 24 | }] 25 | } 26 | ]; 27 | ``` 28 | -------------------------------------------------------------------------------- /modules/topRTBBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: topRTB Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: karthikeyan.d@djaxtech.com 7 | ``` 8 | 9 | # Description 10 | 11 | topRTB Bidder Adapter for Prebid.js. 12 | Only Banner & video format is supported. 13 | 14 | # Test Parameters 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-div-0', 19 | sizes: [[728, 90]], // a display size 20 | bids: [ 21 | { 22 | bidder: 'topRTB', 23 | params: { 24 | adUnitId: 'c5c06f77430c4c33814a0577cb4cc978' 25 | } 26 | } 27 | ] 28 | } 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/taphypeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: TapHype Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: admin@taphype.com 6 | 7 | # Description 8 | 9 | You can use this adapter to get a bid from taphype.com. 10 | 11 | 12 | # Test Parameters 13 | ```javascript 14 | var adUnits = [ 15 | { 16 | code: 'div-taphype-example', 17 | sizes: [[300, 250]], 18 | bids: [ 19 | { 20 | bidder: "taphype", 21 | params: { 22 | placementId: 12345 23 | } 24 | } 25 | ] 26 | } 27 | ]; 28 | ``` 29 | 30 | Where: 31 | 32 | * placementId - TapHype Placement ID 33 | -------------------------------------------------------------------------------- /modules/adagioAnalyticsAdapter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Analytics Adapter for Adagio 3 | */ 4 | 5 | import adapter from '../src/AnalyticsAdapter'; 6 | import adapterManager from '../src/adapterManager'; 7 | 8 | // This config makes Prebid.js call this function on each event: 9 | // `window['AdagioPrebidAnalytics']('on', eventType, args)` 10 | // If it is missing, then Prebid.js will immediately log an error, 11 | // instead of queueing the events until the function appears. 12 | var adagioAdapter = adapter({ 13 | global: 'AdagioPrebidAnalytics', 14 | handler: 'on', 15 | analyticsType: 'bundle' 16 | }); 17 | 18 | adapterManager.registerAnalyticsAdapter({ 19 | adapter: adagioAdapter, 20 | code: 'adagio' 21 | }); 22 | 23 | export default adagioAdapter; 24 | -------------------------------------------------------------------------------- /modules/unrulyBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Unruly Bid Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: prodev@unrulymedia.com 6 | 7 | # Description 8 | 9 | Module that connects to UnrulyX for bids. 10 | 11 | # Test Parameters 12 | 13 | ```js 14 | const adUnits = [{ 15 | code: 'ad-slot', 16 | sizes: [[728, 90], [300, 250]], 17 | mediaTypes: { 18 | video: { 19 | context: 'outstream' 20 | } 21 | }, 22 | bids: [{ 23 | bidder: 'unruly', 24 | params: { 25 | targetingUUID: '6f15e139-5f18-49a1-b52f-87e5e69ee65e', 26 | siteId: 1081534 27 | } 28 | } 29 | ] 30 | }]; 31 | ``` 32 | -------------------------------------------------------------------------------- /modules/coinzillaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Coinzilla Bidder Adapter 5 | Module Type: Coinzilla Adapter 6 | Maintainer: technical@sevio.com 7 | ``` 8 | 9 | # Description 10 | 11 | Our module helps you have an easier time implementing Coinzilla on your website. All you have to do is replace the ``placementId`` with your zoneID, depending on the required size in your account dashboard. If you need additional information please contact us at ``publishers@coinzilla.com``. 12 | # Test Parameters 13 | ``` 14 | var adUnits = [{ 15 | code: 'test-ad-div', 16 | sizes: [[300, 250]], 17 | bids: [{ 18 | bidder: 'coinzilla', 19 | params: { 20 | placementId: 'testPlacementId' 21 | } 22 | }] 23 | }]; 24 | ``` -------------------------------------------------------------------------------- /modules/yieldmoBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Yieldmo Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: opensource@yieldmo.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Yieldmo Ad Server for bids. 12 | 13 | Yieldmo bid adapter supports Banner. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | // Banner adUnit 19 | { 20 | code: 'div-gpt-ad-1460505748561-0', 21 | sizes: [[300, 250], [300,600]], 22 | bids: [{ 23 | bidder: 'yieldmo', 24 | params: { 25 | placementId: '1779781193098233305', // string with at most 19 characters (may include numbers only) 26 | bidFloor: .28 // optional param 27 | } 28 | }] 29 | } 30 | ]; 31 | ``` -------------------------------------------------------------------------------- /src/adapters/analytics/example2.js: -------------------------------------------------------------------------------- 1 | import { ajax } from '../../../src/ajax'; 2 | 3 | /** 4 | * example2.js - analytics adapter for Example2 Analytics Endpoint example 5 | */ 6 | 7 | import adapter from '../../AnalyticsAdapter'; 8 | 9 | const url = 'https://httpbin.org/post'; 10 | const analyticsType = 'endpoint'; 11 | 12 | export default Object.assign(adapter( 13 | { 14 | url, 15 | analyticsType 16 | } 17 | ), 18 | { 19 | // Override AnalyticsAdapter functions by supplying custom methods 20 | track({ eventType, args }) { 21 | console.log('track function override for Example2 Analytics'); 22 | ajax(url, (result) => console.log('Analytics Endpoint Example2: result = ' + result), JSON.stringify({ eventType, args })); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /modules/andbeyondBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: andbeyond Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: shreyanschopra@rtbdemand.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to andbeyond whitelabel platform. 12 | Banner formats are supported. 13 | 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: 'banner-ad-div', 20 | sizes: [[300, 250]], // banner size 21 | bids: [ 22 | { 23 | bidder: 'andbeyond', 24 | params: { 25 | zoneId: '30164', //required parameter 26 | host: 'cpm.metaadserving.com' //required parameter 27 | } 28 | } 29 | ] 30 | } 31 | ]; 32 | ``` 33 | -------------------------------------------------------------------------------- /modules/33acrossBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: 33Across Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: headerbidding@33across.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to 33Across's exchange for bids. 12 | 13 | 33Across bid adapter supports only Banner at present and follows MRA 14 | 15 | # Sample Ad Unit: For Publishers 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: '33across-hb-ad-123456-1', // ad slot HTML element ID 20 | sizes: [ 21 | [300, 250], 22 | [728, 90] 23 | ], 24 | bids: [{ 25 | bidder: '33across', 26 | params: { 27 | siteId: 'cxBE0qjUir6iopaKkGJozW', 28 | productId: 'siab' 29 | } 30 | }] 31 | } 32 | ``` 33 | -------------------------------------------------------------------------------- /modules/fairtradeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: FairTrade Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: Tammy.l@VaticDigital.com 6 | 7 | # Description 8 | 9 | Module that connects to FairTrade demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], 17 | bids: [ 18 | { 19 | bidder: "fairtrade", 20 | params: { 21 | uid: '166', 22 | priceType: 'gross' // by default is 'net' 23 | } 24 | } 25 | ] 26 | } 27 | ]; 28 | ``` -------------------------------------------------------------------------------- /modules/nafdigitalBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: NAF Digital Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: vyatsun@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | NAF Digital adapter integration to the Prebid library. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-leaderboard', 19 | sizes: [[728, 90]], 20 | bids: [{ 21 | bidder: 'nafdigital', 22 | params: { 23 | publisherId: 2141020, 24 | bidFloor: 0.01 25 | } 26 | }] 27 | }, { 28 | code: 'test-banner', 29 | sizes: [[300, 250]], 30 | bids: [{ 31 | bidder: 'nafdigital', 32 | params: { 33 | publisherId: 2141020 34 | } 35 | }] 36 | } 37 | ] 38 | ``` 39 | -------------------------------------------------------------------------------- /modules/optimaticBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Optimatic Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid@optimatic.com 7 | ``` 8 | 9 | # Description 10 | 11 | Optimatic Bid Adapter Module connects to Optimatic Demand Sources for Video Ads 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div', 18 | sizes: [[640,480]], // a video size 19 | bids: [ 20 | { 21 | bidder: "optimatic", 22 | params: { 23 | placement: "2chy7Gc2eSQL", 24 | bidfloor: 2.5 25 | } 26 | } 27 | ] 28 | }, 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/rexrtbBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: REXRTB Bidder Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: tech@rexrtb.com 8 | 9 | 10 | # Description 11 | 12 | Module that connects to REXRTB's demand source 13 | 14 | # Test Parameters 15 | ```javascript 16 | var adUnits = [ 17 | { 18 | code: 'test-ad', 19 | sizes: [[728, 98]], 20 | bids: [ 21 | { 22 | bidder: 'rexrtb', 23 | params: { 24 | id: 89, 25 | token: '658f11a5efbbce2f9be3f1f146fcbc22', 26 | source: 'prebidtest' 27 | } 28 | } 29 | ] 30 | }, 31 | ]; 32 | ``` -------------------------------------------------------------------------------- /modules/vidazooBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name:** Vidazoo Bidder Adapter 4 | 5 | **Module Type:** Bidder Adapter 6 | 7 | **Maintainer:** server-dev@getintent.com 8 | 9 | # Description 10 | 11 | Module that connects to Vidazoo's demand sources. 12 | 13 | # Test Parameters 14 | ```js 15 | var adUnits = [ 16 | { 17 | code: 'test-ad', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'vidazoo', 22 | params: { 23 | cId: '5a1c419d95fce900044c334e', 24 | pId: '59ac17c192832d0011283fe3', 25 | bidFloor: 0.0001, 26 | ext: { 27 | param1: 'loremipsum', 28 | param2: 'dolorsitamet' 29 | } 30 | } 31 | } 32 | ] 33 | } 34 | ]; 35 | ``` 36 | -------------------------------------------------------------------------------- /modules/brightcomBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Brightcom Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: vladislavy@brightcom.com 7 | ``` 8 | 9 | # Description 10 | 11 | Brightcom's adapter integration to the Prebid library. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-leaderboard', 19 | sizes: [[728, 90]], 20 | bids: [{ 21 | bidder: 'brightcom', 22 | params: { 23 | publisherId: 2141020, 24 | bidFloor: 0.01 25 | } 26 | }] 27 | }, { 28 | code: 'test-banner', 29 | sizes: [[300, 250]], 30 | bids: [{ 31 | bidder: 'brightcom', 32 | params: { 33 | publisherId: 2141020 34 | } 35 | }] 36 | } 37 | ] 38 | ``` 39 | -------------------------------------------------------------------------------- /modules/pubCommonId.md: -------------------------------------------------------------------------------- 1 | ## Publisher Common ID Example Configuration 2 | 3 | When the module is included, it's automatically enabled and saves an id to both cookie and local storage with an expiration time of 1 year. 4 | 5 | Example of disabling publisher common id. 6 | 7 | ``` 8 | pbjs.setConfig( 9 | pubcid: { 10 | enable: false 11 | } 12 | ); 13 | ``` 14 | 15 | Example of setting expiration interval to 30 days. The interval is expressed in minutes. 16 | 17 | ``` 18 | pbjs.setConfig( 19 | pubcid: { 20 | expInterval: 43200 21 | } 22 | ); 23 | ``` 24 | 25 | Example of using local storage only and setting expiration interval to 30 days. 26 | 27 | ``` 28 | pbjs.setConfig( 29 | pubcid: { 30 | expInterval: 43200, 31 | type: 'html5' 32 | } 33 | ); 34 | ``` 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /modules/adspiritBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: AdSpirit Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: prebid@adspirit.de 6 | 7 | # Description 8 | 9 | Module that connects to an AdSpirit zone to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'display-div', 16 | sizes: [[300, 250]], // a display size 17 | bids: [ 18 | { 19 | bidder: "adspirit", 20 | params: { 21 | placementId: '5', 22 | host: 'n1test.adspirit.de' 23 | } 24 | } 25 | ] 26 | } 27 | ]; 28 | ``` 29 | -------------------------------------------------------------------------------- /modules/admanBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Adman Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: prebid@admanmedia.com 6 | 7 | # Description 8 | 9 | Use `adman` as bidder. 10 | 11 | `id` is required and must be 8 alphanumeric characters. 12 | 13 | ## AdUnits configuration example 14 | ``` 15 | var adUnits = [{ 16 | code: 'test-div', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'adman', 20 | params: { 21 | id: 1234asdf 22 | } 23 | }] 24 | },{ 25 | code: 'test-div, 26 | sizes: [[600, 338]], 27 | bids: [{ 28 | bidder: 'adman', 29 | params: { 30 | id: asdf1234 31 | } 32 | }] 33 | }]; 34 | ``` 35 | 36 | -------------------------------------------------------------------------------- /modules/contentigniteBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Content Ignite Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: jamie@contentignite.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Content Ignites bidder application. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [{ 17 | code: 'display-div', 18 | sizes: [[728, 90]], // a display size 19 | bids: [{ 20 | bidder: "contentignite", 21 | params: { 22 | accountID: '168237', 23 | zoneID: '299680', 24 | keyword: 'business', //optional 25 | minCPM: '0.10', //optional 26 | maxCPM: '1.00' //optional 27 | } 28 | }] 29 | }]; 30 | ``` 31 | -------------------------------------------------------------------------------- /test/fixtures/video/bidRequest.json: -------------------------------------------------------------------------------- 1 | { 2 | "auctionStart": 1462918897459, 3 | "bidderCode": "appnexus", 4 | "bidderRequestId": "2946b569352ef2", 5 | "bids": [ 6 | { 7 | "bidder": "appnexus", 8 | "params": { 9 | "placementId": "9333431", 10 | "video": { 11 | "skipppable": false, 12 | "playback_methods": ["auto_play_sound_off"] 13 | } 14 | }, 15 | "placementCode": "video1", 16 | "sizes": [640,480], 17 | "bidId": "392b5a6b05d648", 18 | "bidderRequestId": "2946b569352ef2", 19 | "auctionId": "6172477f-987f-4523-a967-fa6d7a434ddf", 20 | "startTime": 1462918897462 21 | } 22 | ], 23 | "auctionId": "6172477f-987f-4523-a967-fa6d7a434ddf", 24 | "start": 1462918897460, 25 | "timeout": 5000 26 | } 27 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 14 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | - bug 10 | - feature 11 | - on hold 12 | # Label to use when marking an issue as stale 13 | staleLabel: stale 14 | # Comment to post when marking an issue as stale. Set to `false` to disable 15 | markComment: > 16 | This issue has been automatically marked as stale because it has not had 17 | recent activity. It will be closed if no further activity occurs. Thank you 18 | for your contributions. 19 | # Comment to post when closing a stale issue. Set to `false` to disable 20 | closeComment: false 21 | -------------------------------------------------------------------------------- /modules/bidglassBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Bid Glass Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: dliebner@gmail.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Bid Glass and allows bids on ad units to compete within prebid. 12 | 13 | # Sample Ad Unit: For Publishers 14 | ``` 15 | var adUnits = [{ 16 | code: 'bg-test-rectangle', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'bidglass', 20 | params: { 21 | adUnitId: '-1' 22 | } 23 | }] 24 | },{ 25 | code: 'bg-test-leaderboard', 26 | sizes: [[728, 90]], 27 | bids: [{ 28 | bidder: 'bidglass', 29 | params: { 30 | adUnitId: '-1' 31 | } 32 | }] 33 | }] 34 | ``` -------------------------------------------------------------------------------- /modules/c1xBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: C1X Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: cathy@c1exchange.com 6 | 7 | # Description 8 | 9 | Module that connects to C1X's demand sources 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 600], [300, 250]], 17 | bids: [ 18 | { 19 | bidder: 'c1x', 20 | params: { 21 | siteId: '9999', 22 | pixelId: '12345', 23 | floorPriceMap: { 24 | '300x250': 0.20, 25 | '300x600': 0.30 26 | }, //optional 27 | } 28 | } 29 | ] 30 | }, 31 | ]; 32 | ``` -------------------------------------------------------------------------------- /modules/gjirafaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Module Name: Gjirafa Bidder Adapter Module 3 | Type: Bidder Adapter 4 | Maintainer: agonq@gjirafa.com 5 | 6 | # Description 7 | Gjirafa Bidder Adapter for Prebid.js. 8 | 9 | # Test Parameters 10 | var adUnits = [ 11 | { 12 | code: 'test-div', 13 | sizes: [[728, 90]], // leaderboard 14 | bids: [ 15 | { 16 | bidder: 'gjirafa', 17 | params: { 18 | placementId: '71-3' 19 | } 20 | } 21 | ] 22 | },{ 23 | code: 'test-div', 24 | sizes: [[300, 250]], // mobile rectangle 25 | bids: [ 26 | { 27 | bidder: 'gjirafa', 28 | params: { 29 | minCPM: 0.0001, 30 | minCPC: 0.001, 31 | explicit: true 32 | } 33 | } 34 | ] 35 | } 36 | ]; -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Type of issue 2 | 3 | 4 | ## Description 5 | 6 | 7 | ## Steps to reproduce 8 | 11 | 12 | ## Test page 13 | 17 | 18 | ### Expected results 19 | 20 | ### Actual results 21 | 22 | ## Platform details 23 | 24 | 25 | ## Other information 26 | 27 | -------------------------------------------------------------------------------- /modules/marsmediaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Mars Media Group (mars.media) Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: vladi@mars.media 7 | ``` 8 | 9 | # Description 10 | 11 | Prebid adapter for Mars Media Group RTB. Requires approval and account setup. 12 | 13 | # Test Parameters 14 | 15 | ## Web 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: 'test-div', 20 | sizes: [[300, 250]], 21 | bids: [ 22 | { 23 | bidder: "marsmedia", 24 | params: { 25 | publisherID: 9999, 26 | floor: 0.11 27 | } 28 | } 29 | ] 30 | } 31 | ]; 32 | ``` -------------------------------------------------------------------------------- /modules/otmBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: OTM Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: ? 6 | 7 | # Description 8 | 9 | You can use this adapter to get a bid from otm-r.com. 10 | 11 | About us : http://otm-r.com 12 | 13 | 14 | # Test Parameters 15 | ```javascript 16 | var adUnits = [ 17 | { 18 | code: 'div-otm-example', 19 | sizes: [[320, 480]], 20 | bids: [ 21 | { 22 | bidder: "otm", 23 | params: { 24 | tid: "99", 25 | bidfloor: 20 26 | } 27 | } 28 | ] 29 | } 30 | ]; 31 | ``` 32 | 33 | Where: 34 | 35 | * tid - A tag id (should have low cardinality) 36 | * bidfloor - Floor price 37 | -------------------------------------------------------------------------------- /modules/telariaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Telaria Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: github@telaria.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Telaria's exchange. 12 | 13 | Telaria bid adapter supports insteream Video. 14 | 15 | # Test Parameters 16 | ``` 17 | { 18 | code: 'video1', 19 | mediaTypes: { 20 | 'video': { 21 | playerSize: [640, 480], 22 | context: 'instream' 23 | } 24 | }, 25 | bids: [{ 26 | bidder: 'telaria', 27 | params: { 28 | supplyCode: 'ssp-demo-rm6rh', 29 | adCode: 'ssp-!demo!-lufip', 30 | videoId: 'MyCoolVideo' 31 | } 32 | }] 33 | } 34 | ``` 35 | 36 | # Example: 37 | https://console.telaria.com/examples/hb/headerbidding.jsp 38 | -------------------------------------------------------------------------------- /modules/brainyBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: brainy Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@mg.brainy-inc.co.jp 7 | ``` 8 | 9 | # Description 10 | This module connects to brainy's demand sources. It supports display, and rich media formats. 11 | brainy will provide ``accountID`` and ``slotID`` that are specific to your ad type. 12 | Please reach out to ``support@mg.brainy-inc.co.jp`` to set up an brainy account and above ids. 13 | Use bidder code ```brainy``` for all brainy traffic. 14 | 15 | 16 | # Test Parameters 17 | 18 | ``` 19 | var adUnits = [{ 20 | code: 'test-div', 21 | sizes: [[300, 250], 22 | bids: [{ 23 | bidder: 'brainy', 24 | params: { 25 | accountID: "3481", 26 | slotID: "5569" 27 | } 28 | }] 29 | } 30 | ]; 31 | ``` 32 | -------------------------------------------------------------------------------- /modules/readpeakBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: ReadPeak Bid Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: kurre.stahlberg@readpeak.com 8 | 9 | # Description 10 | 11 | Module that connects to ReadPeak's demand sources 12 | 13 | This adapter requires setup and approval from ReadPeak. 14 | Please reach out to your account team or hello@readpeak.com for more information. 15 | 16 | # Test Parameters 17 | ```javascript 18 | var adUnits = [{ 19 | code: '/19968336/prebid_native_example_2', 20 | mediaTypes: { native: { type: 'image' } }, 21 | bids: [{ 22 | bidder: 'readpeak', 23 | params: { 24 | bidfloor: 5.00, 25 | publisherId: 'test', 26 | siteId: 'test' 27 | }, 28 | }] 29 | }]; 30 | ``` 31 | -------------------------------------------------------------------------------- /src/hook.js: -------------------------------------------------------------------------------- 1 | 2 | import funHooks from 'fun-hooks/no-eval'; 3 | 4 | export let hook = funHooks({ 5 | ready: funHooks.SYNC | funHooks.ASYNC | funHooks.QUEUE 6 | }); 7 | 8 | export const getHook = hook.get; 9 | 10 | export function setupBeforeHookFnOnce(baseFn, hookFn, priority = 15) { 11 | let result = baseFn.getHooks({hook: hookFn}); 12 | if (result.length === 0) { 13 | baseFn.before(hookFn, priority); 14 | } 15 | } 16 | 17 | export function module(name, install) { 18 | hook('async', function (submodules) { 19 | submodules.forEach(args => install(...args)); 20 | }, name)([]); // will be queued until hook.ready() called in pbjs.processQueue(); 21 | } 22 | 23 | export function submodule(name, ...args) { 24 | getHook(name).before((next, modules) => { 25 | modules.push(args); 26 | next(modules); 27 | }); 28 | } 29 | -------------------------------------------------------------------------------- /modules/adyoulikeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Adyoulike Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: prebid@adyoulike.com 6 | 7 | # Description 8 | 9 | Module that connects to Adyoulike demand sources. 10 | Banner formats are supported. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'test-div', 17 | sizes: [[300, 250]], 18 | bids: [ 19 | { 20 | bidder: "adyoulike", 21 | params: { 22 | placement: 194f787b85c829fb8822cdaf1ae64435, 23 | DC: 'fra01', // Optional for set the data center name 24 | } 25 | } 26 | ] 27 | } 28 | ]; 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/go2net.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Go2Net Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: vprytuzhalova@go2net.com.ua 6 | 7 | # Description 8 | 9 | Connects to Go2Net demand source to fetch bids. 10 | Banner and Video formats are supported. 11 | Please use ```go2net``` as the bidder code. 12 | 13 | # Ad Unit Example 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'desktop-banner-ad-div', 18 | sizes: [[300, 250]], // a display size 19 | bids: [ 20 | { 21 | bidder: "go2net", 22 | params: { 23 | zone: 'fb3d34d0-7a88-4a4a-a5c9-8088cd7845f4' 24 | } 25 | } 26 | ] 27 | } 28 | ]; 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/nasmediaAdmixerBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: NasmediaAdmixer Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid@nasmedia.co.kr 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to NasmediaAdmixer demand sources. 12 | Banner formats are supported. 13 | The NasmediaAdmixer adapter doesn't support multiple sizes per ad-unit and will use the first one if multiple sizes are defined. 14 | 15 | 16 | # Test Parameters 17 | ``` 18 | var adUnits = [ 19 | { 20 | code: 'banner-ad-div', 21 | sizes: [[320, 480]], // banner size 22 | bids: [ 23 | { 24 | bidder: 'nasmediaAdmixer', 25 | params: { 26 | ax_key: 'ajj7jba3', //required parameter 27 | } 28 | } 29 | ] 30 | } 31 | ]; 32 | ``` 33 | -------------------------------------------------------------------------------- /modules/ucfunnelBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: ucfunnel Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: ryan.chou@ucfunnel.com 7 | ``` 8 | 9 | # Description 10 | 11 | This module connects to ucfunnel's demand sources. It supports display, and rich media formats. 12 | ucfunnel will provide ``adid`` that are specific to your ad type. 13 | Please reach out to ``pr@ucfunnel.com`` to set up an ucfunnel account and above ids. 14 | Use bidder code ```ucfunnel``` for all ucfunnel traffic. 15 | 16 | # Test Parameters 17 | 18 | ``` 19 | var adUnits = [ 20 | { 21 | code: 'test-LERC', 22 | sizes: [[300, 250]], 23 | bids: [{ 24 | bidder: 'ucfunnel', 25 | params: { 26 | adid: "test-ad-83444226E44368D1E32E49EEBE6D29" //String - required 27 | } 28 | } 29 | ]; 30 | ``` -------------------------------------------------------------------------------- /modules/videoNowBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Videonow Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: info@videonow.ru 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to Videonow for bids. 12 | 13 | The Videonow bidder adapter requires setup and approval from the videoNow team. 14 | Please reach out to your account team or info@videonow.ru for more information. 15 | 16 | # Test Parameters 17 | ```javascript 18 | var adUnits = [ 19 | // Banner adUnit 20 | { 21 | code: 'banner-div', 22 | mediaTypes: { 23 | banner: { 24 | sizes: [[640, 480], [300, 250], [336, 280]] 25 | } 26 | }, 27 | bids: [{ 28 | bidder: 'videonow', 29 | params: { 30 | pId: 1, 31 | placementId: '36891' 32 | } 33 | }] 34 | }] 35 | ``` 36 | -------------------------------------------------------------------------------- /modules/aniviewBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: ANIVIEW Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@aniview.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to ANIVIEW Ad server for bids. 12 | 13 | ANIVIEW bid adapter supports Video ads currently. 14 | 15 | For more information about [Aniview](http://www.aniview.com), please contact [support@aniview.com](support@aniview.com). 16 | 17 | # Sample Ad Unit: For Publishers 18 | ```javascript 19 | var videoAdUnit = [ 20 | { 21 | code: 'video1', 22 | sizes: [ 23 | [300, 250], 24 | [640, 480] 25 | ], 26 | bids: [{ 27 | bidder: 'aniview', 28 | params: { 29 | AV_PUBLISHERID: '55b78633181f4603178b4568', 30 | AV_CHANNELID: '55b7904d181f46410f8b4568' 31 | } 32 | }] 33 | }]; 34 | ``` 35 | 36 | ``` 37 | -------------------------------------------------------------------------------- /modules/divreachBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: DivReach Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: Zeke@divreach.com 6 | 7 | # Description 8 | 9 | Connects to DivReach demand source to fetch bids. 10 | Please use ```divreach``` as the bidder code. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'desktop-banner-ad-div', 17 | sizes: [[300, 250]], 18 | bids: [ 19 | { 20 | bidder: "divreach", 21 | params: { 22 | accountID: '167283', 23 | zoneID: '335105', 24 | domain: 'ad.divreach.com', 25 | } 26 | } 27 | ] 28 | }, 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/adoceanBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: AdOcean Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: prebid@gemius.com 6 | 7 | # Description 8 | 9 | Module that connects to AdOcean demand sources. 10 | Banner formats are supported. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'test-div', 17 | sizes: [[300, 250]], 18 | bids: [ 19 | { 20 | bidder: "adocean", 21 | params: { 22 | slaveId: 'adoceanmyaozpniqismex', 23 | masterId: 'tmYF.DMl7ZBq.Nqt2Bq4FutQTJfTpxCOmtNPZoQUDcL.G7', 24 | emiter: 'myao.adocean.pl' 25 | } 26 | } 27 | ] 28 | } 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/criteoBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Criteo Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: pi-direct@criteo.com 6 | 7 | # Description 8 | 9 | Module that connects to Criteo's demand sources. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'banner-ad-div', 16 | sizes: [[300, 250], [728, 90]], 17 | bids: [ 18 | { 19 | bidder: 'criteo', 20 | params: { 21 | zoneId: 497747 22 | } 23 | } 24 | ] 25 | } 26 | ]; 27 | ``` 28 | 29 | # Additional Config (Optional) 30 | Set the "ceh" property to provides the user's hashed email if available 31 | ``` 32 | pbjs.setConfig({ 33 | criteo: { 34 | ceh: 'hashed mail' 35 | } 36 | }); 37 | ``` -------------------------------------------------------------------------------- /modules/emoteevBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Emoteev Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: engineering@emoteev.io 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Emoteev's demand sources 12 | 13 | # Test Parameters 14 | 15 | ``` javascript 16 | var adUnits = [ 17 | { 18 | code: 'test-div', 19 | mediaTypes: { 20 | banner: { 21 | sizes: [[720, 90]], 22 | } 23 | }, 24 | bids: [ 25 | { 26 | bidder: 'emoteev', 27 | params: { 28 | adSpaceId: 5084, 29 | context: 'footer', 30 | externalId: 42, 31 | } 32 | } 33 | ] 34 | } 35 | ]; 36 | ``` 37 | -------------------------------------------------------------------------------- /modules/onetagBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: OneTag Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: devops@onetag.com 7 | ``` 8 | 9 | # Description 10 | 11 | OneTag Bid Adapter supports only banner at present. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: "test-div", 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[300, 250]] 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: "onetag", 26 | params: { 27 | pubId: "your_publisher_id", // required 28 | type: "banner" // optional. Default "banner" 29 | }, 30 | } 31 | ] 32 | }]; 33 | 34 | ``` 35 | -------------------------------------------------------------------------------- /modules/polluxBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Pollux Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: tech@polluxnetwork.com 6 | 7 | # Description 8 | 9 | Module that connects to Pollux Network LLC demand source to fetch bids. 10 | All bids will present CPM in EUR (Euro). 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [{ 15 | code: '34f724kh32', 16 | sizes: [[300, 250]], // a single size 17 | bids: [{ 18 | bidder: 'pollux', 19 | params: { 20 | zone: '1806' // a single zone 21 | } 22 | }] 23 | },{ 24 | code: '34f789r783', 25 | sizes: [[300, 250], [728, 90]], // multiple sizes 26 | bids: [{ 27 | bidder: 'pollux', 28 | params: { 29 | zone: '1806,276' // multiple zones, max 5 30 | } 31 | }] 32 | }]; 33 | ``` 34 | -------------------------------------------------------------------------------- /src/adUnits.js: -------------------------------------------------------------------------------- 1 | import { deepAccess } from './utils'; 2 | 3 | let adUnits = {}; 4 | 5 | /** 6 | * Increments and returns current Adunit counter 7 | * @param {string} adunit id 8 | * @returns {number} current adunit count 9 | */ 10 | function incrementCounter(adunit) { 11 | adUnits[adunit] = adUnits[adunit] || {}; 12 | adUnits[adunit].counter = (deepAccess(adUnits, `${adunit}.counter`) + 1) || 1; 13 | return adUnits[adunit].counter; 14 | } 15 | 16 | /** 17 | * Returns current Adunit counter 18 | * @param {string} adunit id 19 | * @returns {number} current adunit count 20 | */ 21 | function getCounter(adunit) { 22 | return deepAccess(adUnits, `${adunit}.counter`) || 0; 23 | } 24 | 25 | /** 26 | * A module which counts how many times an adunit was called 27 | * @module adunitCounter 28 | */ 29 | let adunitCounter = { 30 | incrementCounter, 31 | getCounter 32 | } 33 | 34 | export { adunitCounter }; 35 | -------------------------------------------------------------------------------- /modules/aduptechBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Ad Up Technology Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: steffen.anders@adup-tech.com, berlin@adup-tech.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Ad Up Technology demand sources to fetch bids. 12 | Please use ```aduptech``` as bidder code. Only banner formats are supported. 13 | 14 | The Ad Up Technology Bidding adapter requires setup and approval before beginning. 15 | For more information visit [www.adup-tech.com](http://www.adup-tech.com/en). 16 | 17 | # Test Parameters 18 | ``` 19 | var adUnits = [ 20 | { 21 | code: 'banner', 22 | sizes: [[300, 250], [300, 600]], 23 | bids: [{ 24 | bidder: 'aduptech', 25 | params: { 26 | publisher: 'prebid', 27 | placement: '12345' 28 | } 29 | }] 30 | } 31 | ]; 32 | ``` 33 | -------------------------------------------------------------------------------- /modules/gumgumBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: GumGum Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: engineering@gumgum.com 7 | ``` 8 | 9 | # Description 10 | 11 | GumGum adapter for Prebid.js 1.0 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'gumgum', 22 | params: { 23 | inSlot: '15901', // GumGum Slot ID given to the client, 24 | bidfloor: 0.03 // CPM bid floor 25 | } 26 | } 27 | ] 28 | },{ 29 | code: 'test-div', 30 | sizes: [[300, 50]], 31 | bids: [ 32 | { 33 | bidder: 'gumgum', 34 | params: { 35 | inScreen: 'dc9d6be1', // GumGum Zone ID given to the client 36 | bidfloor: 0.03 // CPM bid floor 37 | } 38 | } 39 | ] 40 | } 41 | ]; 42 | ``` 43 | -------------------------------------------------------------------------------- /modules/my6senseBidAdapter.md: -------------------------------------------------------------------------------- 1 | # HeaderBiddingAdapter 2 | 3 | # Overview 4 | 5 | ``` 6 | Module Name: my6sense Bidder Adapter 7 | Module Type: Bidder Adapter 8 | ``` 9 | 10 | # Description 11 | 12 | Module that connects to my6sense demand sources. 13 | Banner formats are supported. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | 19 | // { 20 | // 21 | // sizes: [[1000, 600]], 22 | // bids: [{ 23 | // bidder: 'my6sense', 24 | // params: { 25 | // key: 'OAJJBW2LRYi2CxfhzqogkA', 26 | // pageUrl: '[PAGE_URL]', 27 | // zone: '[ZONE]', 28 | // dataView: '' 29 | // organicClicks:'', 30 | // paidClicks:'', 31 | // } 32 | // }] 33 | // } 34 | ]; 35 | 36 | ``` 37 | -------------------------------------------------------------------------------- /modules/radsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: RADS Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid@recognified.net 7 | ``` 8 | 9 | # Description 10 | 11 | RADS Bidder Adapter for Prebid.js 1.x 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: "test-div", 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[320, 50]] 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: "rads", 26 | params: { 27 | placement: 3, // placement ID 28 | devMode: true // if true: library uses dev server for tests 29 | } 30 | } 31 | ] 32 | } 33 | ]; 34 | ``` 35 | 36 | Required param field is only `placement`. 37 | 38 | -------------------------------------------------------------------------------- /modules/bucksenseBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Bucksense Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: stefano.dechicchis@bucksense.com 7 | ``` 8 | 9 | # Description 10 | 11 | Use `bucksense` as bidder. 12 | 13 | `placementId` is required, use the Placement ID received by Bucksense. 14 | 15 | 16 | Module that connects to Example's demand sources 17 | 18 | ## AdUnits configuration example 19 | ``` 20 | var adUnits = [ 21 | { 22 | code: 'test-div', 23 | mediaTypes: { 24 | banner: { 25 | sizes: [[300, 250]], 26 | } 27 | }, 28 | bids: [ 29 | { 30 | bidder: "bucksense", 31 | params: { 32 | placementId : 1000 33 | } 34 | } 35 | ] 36 | } 37 | ]; 38 | ``` -------------------------------------------------------------------------------- /modules/interactiveOffersBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: interactiveOffers Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: devteam@interactiveoffers.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to interactiveOffers demand sources. Param pubId is required. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'interactiveOffers-slot', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[300, 250]] 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: "interactiveOffers", 26 | params: { 27 | pubId: '10', 28 | tmax: 5000 29 | } 30 | } 31 | ] 32 | } 33 | ]; 34 | ``` -------------------------------------------------------------------------------- /modules/adbutlerBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: AdButler Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: dan@sparklit.com 6 | 7 | # Description 8 | 9 | Module that connects to an AdButler zone to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'display-div', 16 | sizes: [[300, 250]], // a display size 17 | bids: [ 18 | { 19 | bidder: "adbutler", 20 | params: { 21 | accountID: '167283', 22 | zoneID: '210093', 23 | keyword: 'red', //optional 24 | minCPM: '1.00', //optional 25 | maxCPM: '5.00' //optional 26 | } 27 | } 28 | ] 29 | } 30 | ]; 31 | ``` -------------------------------------------------------------------------------- /modules/cpmstarBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Cpmstar Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: josh@cpmstar.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Cpmstar's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'banner-ad-div', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[300, 250]], 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: 'cpmstar', 26 | params: { 27 | placementId: 81006 28 | } 29 | }, 30 | ] 31 | }, 32 | { 33 | code: 'video-ad-div', 34 | mediaTypes: { 35 | video: { 36 | context: 'instream', 37 | sizes: [[640, 480]] 38 | } 39 | }, 40 | bids:[ 41 | { 42 | bidder: 'cpmstar', 43 | params: { 44 | placementId: 81007 45 | } 46 | } 47 | ] 48 | } 49 | ]; 50 | ``` -------------------------------------------------------------------------------- /modules/adformBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Adform Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: Scope.FL.Scripts@adform.com 6 | 7 | # Description 8 | 9 | Module that connects to Adform demand sources to fetch bids. 10 | Banner and video formats are supported. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'div-gpt-ad-1460505748561-0', 17 | sizes: [[300, 250], [250, 300], [300, 600], [600, 300]], // a display size 18 | bids: [ 19 | { 20 | bidder: "adform", 21 | params: { 22 | adxDomain: 'adx.adform.net', //optional 23 | mid: '292063', 24 | priceType: 'net' // default is 'gross' 25 | } 26 | } 27 | ] 28 | }, 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/iasBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Integral Ad Science(IAS) Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: kat@integralads.com 7 | ``` 8 | 9 | # Description 10 | 11 | This module is an integration with prebid.js with an IAS product, pet.js. It is not a bidder per se but works in a similar way: retrieve data that publishers might be interested in setting keyword targeting. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'ias-dfp-test-async', 18 | sizes: [[300, 250]], // a display size 19 | bids: [ 20 | { 21 | bidder: "ias", 22 | params: { 23 | pubId: '99', 24 | adUnitPath: '/57514611/news.com' 25 | } 26 | } 27 | ] 28 | } 29 | ]; 30 | ``` 31 | -------------------------------------------------------------------------------- /modules/sovrnBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Sovrn Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: trand@sovrn.com 7 | ``` 8 | 9 | # Description 10 | 11 | Sovrn's adapter integration to the Prebid library. Posts plain-text JSON to the /rtb/bid endpoint. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-leaderboard', 19 | sizes: [[728, 90]], 20 | bids: [{ 21 | bidder: 'sovrn', 22 | params: { 23 | tagid: '403370', 24 | bidfloor: 0.01 25 | } 26 | }] 27 | }, { 28 | code: 'test-banner', 29 | sizes: [[300, 250]], 30 | bids: [{ 31 | bidder: 'sovrn', 32 | params: { 33 | tagid: '403401' 34 | } 35 | }] 36 | }, { 37 | code: 'test-sidebar', 38 | size: [[160, 600]], 39 | bids: [{ 40 | bidder: 'sovrn', 41 | params: { 42 | tagid: '531000' 43 | } 44 | }] 45 | } 46 | ] 47 | ``` -------------------------------------------------------------------------------- /modules/mobfoxBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Mobfox Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: solutions-team@matomy.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Mobfox's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'div-gpt-ad-1460505748561-0', 17 | sizes: [[320, 480], [300, 250], [300,600]], 18 | 19 | // Replace this object to test a new Adapter! 20 | bids: [{ 21 | bidder: 'mobfox', 22 | params: { 23 | s: "267d72ac3f77a3f447b32cf7ebf20673", // required - The hash of your inventory to identify which app is making the request, 24 | imp_instl: 1 // optional - set to 1 if using interstitial otherwise delete or set to 0 25 | } 26 | }] 27 | 28 | }]; 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/madvertiseBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Madvertise Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@madvertise.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to Madvertise's exchange for bids. 12 | 13 | The Madvertise adapter requires setup and approval from the 14 | Madvertise team. Please reach out to your account team or 15 | support@madvertise.com for more information. 16 | 17 | # Test Parameters 18 | ``` 19 | var adUnits = [ 20 | { 21 | code: 'test-div', 22 | mediaTypes: { 23 | banner: { 24 | sizes: [ 25 | [320, 50] 26 | ] 27 | } 28 | }, 29 | bids: [ 30 | { 31 | bidder: "madvertise", 32 | params: { 33 | s: "/4543756/prebidadaptor/madvertiseHB" 34 | } 35 | } 36 | ] 37 | } 38 | ]; 39 | ``` 40 | -------------------------------------------------------------------------------- /test/spec/unit/adUnits_spec.js: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | import { adunitCounter } from 'src/adUnits'; 3 | 4 | describe('Adunit Counter', function () { 5 | const ADUNIT_ID_1 = 'test1'; 6 | const ADUNIT_ID_2 = 'test2'; 7 | 8 | it('increments and checks counter of adunit 1', function () { 9 | adunitCounter.incrementCounter(ADUNIT_ID_1); 10 | expect(adunitCounter.getCounter(ADUNIT_ID_1)).to.be.equal(1); 11 | }); 12 | it('checks counter of adunit 2', function () { 13 | expect(adunitCounter.getCounter(ADUNIT_ID_2)).to.be.equal(0); 14 | }); 15 | it('increments and checks counter of adunit 1', function () { 16 | adunitCounter.incrementCounter(ADUNIT_ID_1); 17 | expect(adunitCounter.getCounter(ADUNIT_ID_1)).to.be.equal(2); 18 | }); 19 | it('increments and checks counter of adunit 2', function () { 20 | adunitCounter.incrementCounter(ADUNIT_ID_2); 21 | expect(adunitCounter.getCounter(ADUNIT_ID_2)).to.be.equal(1); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /modules/loopmeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: LoopMe Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@loopme.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to LoopMe's exchange for bids. 12 | 13 | # Test Parameters (Banner) 14 | ``` 15 | var adUnits = [{ 16 | code: 'test-div', 17 | mediaTypes: { 18 | banner: { 19 | sizes: [[300, 250], [300,600]], 20 | } 21 | }, 22 | bids: [{ 23 | bidder: 'loopme', 24 | params: { 25 | ak: 'cc885e3acc' 26 | } 27 | }] 28 | }]; 29 | ``` 30 | 31 | # Test Parameters (Video) 32 | ``` 33 | var adUnits = [{ 34 | code: 'video1', 35 | mediaTypes: { 36 | video: { 37 | playerSize: [640, 480], 38 | context: 'outstream' 39 | } 40 | }, 41 | bids: [{ 42 | bidder: 'loopme', 43 | params: { 44 | ak: '223051e07f' 45 | } 46 | }] 47 | }]; 48 | ``` 49 | -------------------------------------------------------------------------------- /modules/open8BidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Open8 Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: tdd-adtech@open8.com 6 | 7 | # Description 8 | 9 | Innity Bidder Adapter for Prebid.js. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | // Banner adUnit 15 | { 16 | code: 'banner-div', 17 | mediaTypes: { 18 | banner: { 19 | sizes: [ 20 | [300, 250] 21 | ], 22 | } 23 | }, 24 | bids: [{ 25 | bidder: 'open8', 26 | params: { 27 | slotKey: '504c2e89' 28 | } 29 | }] 30 | }, 31 | // Video outstream adUnit 32 | { 33 | code: 'video-outstream', 34 | sizes: [ 35 | [640, 360] 36 | ], 37 | mediaTypes: { 38 | video: { 39 | context: 'outstream' 40 | } 41 | }, 42 | bids: [{ 43 | bidder: 'open8', 44 | params: { 45 | slotKey: '2ae5a533' 46 | } 47 | }] 48 | }]; 49 | 50 | ``` -------------------------------------------------------------------------------- /modules/papyrusBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Papyrus Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: alexander.holodov@papyrus.global 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to Papyrus system for bids. 12 | 13 | Papyrus bid adapter supports Banner. 14 | 15 | Please contact to info@papyrus.global for 16 | further details 17 | 18 | # Test Parameters 19 | ``` 20 | var adUnits = [ 21 | { 22 | code: 'test-div', 23 | mediaTypes: { 24 | banner: { 25 | sizes: [ 26 | [320, 50] 27 | ] 28 | } 29 | }, 30 | bids: [ 31 | { 32 | bidder: 'papyrus', 33 | params: { 34 | address: '0xd7e2a771c5dcd5df7f789477356aecdaeee6c985', 35 | placementId: 'b57e55fd18614b0591893e9fff41fbea' 36 | } 37 | } 38 | ] 39 | } 40 | ]; 41 | ``` 42 | -------------------------------------------------------------------------------- /modules/widespaceBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | 4 | **Module Name:** Widespace Bidder Adapter. 5 | **Module Type:** Bidder Adapter. 6 | **Maintainer:** support@widespace.com 7 | 8 | 9 | # Description 10 | 11 | Widespace Bidder Adapter for Prebid.js. 12 | Banner and video formats are supported. 13 | 14 | # Test Parameters 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-div', 19 | sizes: [[300, 250], [300, 300]], 20 | bids: [ 21 | { 22 | bidder: 'widespace', 23 | params: { 24 | sid: '7b6589bf-95c8-4656-90b9-af9737bb9ad3', // Required 25 | currency: 'EUR', // Optional 26 | bidfloor: '0.5', // Optional 27 | demo: { // Optional 28 | gender: 'M', 29 | country: 'Sweden', 30 | region: 'Stockholm', 31 | postal: '15115', 32 | city: 'Stockholm', 33 | yob: '1984' 34 | } 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | ``` 41 | -------------------------------------------------------------------------------- /modules/mytargetBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: myTarget Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support_target@corp.my.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to myTarget demand sources. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [{ 17 | code: 'placementCode', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[240, 400]], 21 | } 22 | }, 23 | bids: [{ 24 | bidder: 'mytarget', 25 | params: { 26 | placementId: '379783', 27 | 28 | // OPTIONAL: custom bid floor 29 | bidfloor: 10000, 30 | 31 | // OPTIONAL: if you know the ad position on the page, specify it here 32 | // (this corresponds to "Ad Position" in OpenRTB 2.3, section 5.4) 33 | position: 0, 34 | 35 | // OPTIONAL: bid response type: 0 - ad url (default), 1 - ad markup 36 | response: 0 37 | } 38 | }] 39 | }]; 40 | ``` 41 | -------------------------------------------------------------------------------- /modules/fyberBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Fyber Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: uri@inner-active.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Fyber's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[300, 250]], // a display rectangle size 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: 'fyber', 26 | params: { 27 | APP_ID: 'MyCompany_MyApp', 28 | spotType: 'rectangle', 29 | customParams: { 30 | portal: 7002 31 | } 32 | } 33 | } 34 | ] 35 | },{ 36 | code: 'test-div', 37 | mediaTypes: { 38 | banner: { 39 | sizes: [[320, 50]], // a banner size 40 | } 41 | }, 42 | bids: [ 43 | { 44 | bidder: 'fyber', 45 | params: { 46 | APP_ID: 'MyCompany_MyApp', 47 | spotType: 'banner', 48 | customParams: { 49 | portal: 7001 50 | } 51 | } 52 | } 53 | ] 54 | } 55 | ]; 56 | ``` 57 | -------------------------------------------------------------------------------- /modules/sekindoUMBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: sekindoUM Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: nissime@sekindo.com 6 | 7 | # Description 8 | 9 | Connects to Sekindo (part of UM) demand source to fetch bids. 10 | Banner, Outstream and Native formats are supported. 11 | 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'banner-ad-div', 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'sekindoUM', 20 | params: { 21 | spaceId: 14071 22 | width:300, ///optional 23 | height:250, //optional 24 | } 25 | }] 26 | }, 27 | { 28 | code: 'video-ad-div', 29 | sizes: [[640, 480]], 30 | bids: [{ 31 | bidder: 'sekindoUM', 32 | params: { 33 | spaceId: 87812, 34 | video:{ 35 | playerWidth:640, 36 | playerHeight:480, 37 | vid_vastType: 5 //optional 38 | } 39 | } 40 | }] 41 | } 42 | ]; 43 | ``` 44 | -------------------------------------------------------------------------------- /modules/admediaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Admedia Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: developers@admedia.com 7 | ``` 8 | 9 | # Description 10 | 11 | Admedia Bidder Adapter for Prebid.js. 12 | Only Banner format is supported. 13 | 14 | # Test Parameters 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-div-0', 19 | sizes: [[300, 250]], // a display size 20 | bids: [ 21 | { 22 | bidder: 'admedia', 23 | params: { 24 | aid: 86858 25 | } 26 | } 27 | ] 28 | }, 29 | { 30 | code: 'test-div-1', 31 | sizes: [[300, 50]], // a mobile size 32 | bids: [ 33 | { 34 | bidder: 'admedia', 35 | params: { 36 | aid: 86858 37 | } 38 | } 39 | ] 40 | } 41 | ]; 42 | ``` 43 | -------------------------------------------------------------------------------- /modules/openxoutstreamBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: OpenX Outstream Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: opensource@yieldmo.com, jimmy.tu@openx.com 7 | Note: Ads will only render in mobile 8 | ``` 9 | 10 | # Description 11 | 12 | Module that connects to OpenX's demand sources for outstream to Yieldmo. 13 | 14 | This bid adapter supports Banner. 15 | 16 | Note that the only supported size for demand is currently 400 x 300. 17 | 18 | # Example 19 | ```javascript 20 | var adUnits = [ 21 | { 22 | code: 'test-div', 23 | mediaTypes: { 24 | 'banner': { 25 | sizes: [[400, 300], // a display size 26 | } 27 | }, 28 | bids: [ 29 | { 30 | bidder: 'openxoutstream', 31 | params: { 32 | unit: '540141567', 33 | delDomain: 'se-demo-d.openx.net', 34 | } 35 | } 36 | ] 37 | } 38 | ]; 39 | ``` 40 | 41 | # Additional Details 42 | [Banner Ads](https://docs.openx.com/Content/developers/containers/prebid-adapter.html) 43 | 44 | -------------------------------------------------------------------------------- /modules/sharethroughBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Sharethrough Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: pubgrowth.engineering@sharethrough.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Sharethrough's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div', 18 | sizes: [[300,250], [1, 1]], 19 | bids: [ 20 | { 21 | bidder: "sharethrough", 22 | params: { 23 | // REQUIRED - The placement key 24 | pkey: 'LuB3vxGGFrBZJa6tifXW4xgK', 25 | 26 | // OPTIONAL - Render Sharethrough creative in an iframe, defaults to false 27 | iframe: true, 28 | 29 | // OPTIONAL - If iframeSize is provided, we'll use this size for the iframe 30 | // otherwise we'll grab the largest size from the sizes array 31 | // This is ignored if iframe: false 32 | iframeSize: [250, 250] 33 | } 34 | } 35 | ] 36 | } 37 | ]; 38 | ``` 39 | -------------------------------------------------------------------------------- /test/spec/modules/googleAnalyticsAdapter_spec.js: -------------------------------------------------------------------------------- 1 | import ga from 'modules/googleAnalyticsAdapter'; 2 | 3 | var assert = require('assert'); 4 | 5 | describe('Ga', function () { 6 | describe('enableAnalytics', function () { 7 | var cpmDistribution = function(cpm) { 8 | return cpm <= 1 ? '<= 1$' : '> 1$'; 9 | } 10 | var config = { options: { trackerName: 'foo', enableDistribution: true, cpmDistribution: cpmDistribution } }; 11 | 12 | // enableAnalytics can only be called once 13 | ga.enableAnalytics(config); 14 | 15 | it('should accept a tracker name option and output prefixed send string', function () { 16 | var output = ga.getTrackerSend(); 17 | assert.equal(output, 'foo.send'); 18 | }); 19 | 20 | it('should use the custom cpm distribution', function() { 21 | assert.equal(ga.getCpmDistribution(0.5), '<= 1$'); 22 | assert.equal(ga.getCpmDistribution(1), '<= 1$'); 23 | assert.equal(ga.getCpmDistribution(2), '> 1$'); 24 | assert.equal(ga.getCpmDistribution(5.23), '> 1$'); 25 | }); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /modules/slimcutBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Slimcut Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: support@slimcut.com 6 | 7 | # Description 8 | 9 | Use `slimcut` as bidder. 10 | 11 | `placementId` is required and must be integer. 12 | 13 | The Slimcut adapter requires setup and approval from the Slimcut team. 14 | Please reach out to your account manager for more information. 15 | 16 | # Test Parameters 17 | 18 | ``` 19 | var adUnits = [ 20 | { 21 | code: 'test-div', 22 | sizes: [[640, 480]], 23 | bids: [ 24 | { 25 | bidder: "slimcut", 26 | params: { 27 | placementId: 1234 28 | } 29 | } 30 | ] 31 | } 32 | ]; 33 | ``` 34 | 35 | ## UserSync example 36 | 37 | ``` 38 | pbjs.setConfig({ 39 | userSync: { 40 | iframeEnabled: true, 41 | syncEnabled: true, 42 | syncDelay: 1 43 | } 44 | }); 45 | ``` 46 | -------------------------------------------------------------------------------- /test/mocks/videoCacheStub.js: -------------------------------------------------------------------------------- 1 | import * as videoCache from 'src/videoCache'; 2 | 3 | /** 4 | * Function which can be called from unit tests to stub out the video cache. 5 | * 6 | * @param {Object} responses 7 | * @param {} responses.store If this is an Error, we'll stub out the store function so that it fails. 8 | * If it's anything else, the store function will succeed, sending that value into the callback. 9 | * 10 | * @return {function} A function which returns the current stubs for the mocked functions. 11 | */ 12 | export default function useVideoCacheStub(responses) { 13 | let storeStub; 14 | 15 | beforeEach(function () { 16 | storeStub = sinon.stub(videoCache, 'store'); 17 | 18 | if (responses.store instanceof Error) { 19 | storeStub.callsArgWith(1, responses.store); 20 | } else { 21 | storeStub.callsArgWith(1, null, responses.store); 22 | } 23 | }); 24 | 25 | afterEach(function () { 26 | videoCache.store.restore(); 27 | }); 28 | 29 | return function() { 30 | return { 31 | store: storeStub 32 | }; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /modules/eywamediaBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Eywamedia Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: sharath@eywamedia.com 7 | Note: Our ads will only render in mobile and desktop 8 | ``` 9 | 10 | # Description 11 | 12 | Connects to Eywamedia Ad Server for bids. 13 | 14 | Eywamedia bid adapter supports Banners. 15 | 16 | # Test Parameters 17 | ``` 18 | var adUnits = [ 19 | // Banner adUnit 20 | { 21 | code: 'div-gpt-ad-1460505748561-0', 22 | sizes: [[300, 250], [300,600]], 23 | bids: [{ 24 | bidder: 'eywamedia', 25 | params: { 26 | publisherId: 'f63a2362-5aa4-4829-bbd2-2678ced8b63e', //Required - GUID (may include numbers and characters) 27 | bidFloor: 0.50, // optional 28 | cats: ["iab1-1","iab23-2"], // optional 29 | keywords: ["sports", "cricket"], // optional 30 | lat: 12.33333, // optional 31 | lon: 77.32322, // optional 32 | locn: "country$region$city$zip" // optional 33 | } 34 | }] 35 | } 36 | ]; 37 | ``` 38 | -------------------------------------------------------------------------------- /modules/jcmBidAdapter.md: -------------------------------------------------------------------------------- 1 | #Overview 2 | 3 | ``` 4 | Module Name: JCM Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: george@jcartermarketing.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to J Carter Marketing demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div1', 18 | sizes: [[300, 250]], // display 300x250 19 | bids: [ 20 | { 21 | bidder: 'jcm', 22 | params: { 23 | siteId: '3608' 24 | } 25 | } 26 | ] 27 | },{ 28 | code: 'test-div2', 29 | sizes: [[728, 90]], // display 728x90 30 | bids: [ 31 | { 32 | bidder: 'jcm', 33 | params: { 34 | siteId: '3608' 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | 41 | -------------------------------------------------------------------------------- /modules/trafficrootsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Trafficroots Bid Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: cary@trafficroots.com 8 | 9 | # Description 10 | 11 | Module that connects to Trafficroots demand sources 12 | 13 | # Test Parameters 14 | ```javascript 15 | 16 | var adUnits = [ 17 | { 18 | code: 'test-div', 19 | sizes: [[300, 250],[300,600]], // a display size 20 | bids: [ 21 | { 22 | bidder: 'trafficroots', 23 | params: { 24 | zoneId: 'aa0444af31', 25 | deliveryUrl: location.protocol + '//service.trafficroots.com/prebid' 26 | } 27 | },{ 28 | bidder: 'trafficroots', 29 | params: { 30 | zoneId: '8f527a4835', 31 | deliveryUrl: location.protocol + '//service.trafficroots.com/prebid' 32 | } 33 | } 34 | ] 35 | } 36 | ]; 37 | ``` 38 | -------------------------------------------------------------------------------- /test/spec/aliasBidder_spec.js: -------------------------------------------------------------------------------- 1 | import { pbjsTestOnly } from 'test/helpers/pbjs-test-only'; 2 | 3 | describe('Publisher API _ Alias Bidder', function () { 4 | var assert = require('chai').assert; 5 | var expect = require('chai').expect; 6 | var should = require('chai').should(); 7 | var prebid = require('../../src/prebid'); 8 | 9 | before(function () { 10 | var topSlotCode = '/19968336/header-bid-tag1'; 11 | var topSlotSizes = [[728, 90], [970, 90]]; 12 | var adUnit = { 13 | code: topSlotCode, 14 | sizes: topSlotSizes, 15 | bids: [ 16 | { 17 | bidder: 'appnexus', 18 | params: { 19 | placementId: '5215561' 20 | } 21 | } 22 | ] 23 | }; 24 | 25 | $$PREBID_GLOBAL$$.addAdUnits(adUnit); 26 | }); 27 | 28 | after(function () { 29 | pbjsTestOnly.clearAllAdUnits(); 30 | }); 31 | 32 | describe('set Alias Bidder', function () { 33 | it('should have both of target bidder and alias bidder', function () { 34 | $$PREBID_GLOBAL$$.aliasBidder('appnexus', 'bRealTime1'); 35 | }); 36 | }); 37 | }); 38 | -------------------------------------------------------------------------------- /modules/etargetBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: ETARGET Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: info@etarget.sk 6 | 7 | # Description 8 | 9 | Module that connects to ETARGET demand sources to fetch bids. 10 | Banner and video formats are supported. 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'div-gpt-ad-1460505748561-0', // ID of elemnt where ad will be shown 17 | sizes: [[300, 250], [300, 300], [300, 600], [160, 600]], // a display size 18 | bids: [ 19 | { 20 | bidder: "etarget", 21 | params: { 22 | country: 1, //require // specific to your country {1:'sk',2:'cz',3:'hu',4:'ro',5:'rs',6:'bg',7:'pl',8:'hr',9:'at',11:'de',255:'en'} 23 | refid: '12345' // require // you can create/find this ID in Our portal administration on https://sk.etarget-media.com/partner/ 24 | } 25 | } 26 | ] 27 | } 28 | ]; 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/adkernelBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: AdKernel Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid-dev@adkernel.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to AdKernel whitelabel platform. 12 | Banner and video formats are supported. 13 | 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [{ 18 | code: 'banner-ad-div', 19 | mediaTypes: { 20 | banner: { 21 | sizes: [[300, 250]], // banner size 22 | } 23 | }, 24 | bids: [ 25 | { 26 | bidder: 'adkernel', 27 | params: { 28 | zoneId: '30164', //required parameter 29 | host: 'cpm.metaadserving.com' //required parameter 30 | } 31 | } 32 | ] 33 | }, { 34 | code: 'video-ad-player', 35 | mediaTypes: { 36 | video: { 37 | context: 'instream', // or 'outstream' 38 | playerSize: [640, 480] // video player size 39 | } 40 | }, 41 | bids: [ 42 | { 43 | bidder: 'adkernel', 44 | params: { 45 | zoneId: '30164', //required parameter 46 | host: 'cpm.metaadserving.com' //required parameter 47 | } 48 | } 49 | ] 50 | }]; 51 | ``` 52 | -------------------------------------------------------------------------------- /test/spec/adloader_spec.js: -------------------------------------------------------------------------------- 1 | import * as utils from 'src/utils'; 2 | import * as adLoader from 'test/mocks/adloaderStub'; 3 | 4 | describe('adLoader', function () { 5 | let utilsinsertElementStub; 6 | let utilsLogErrorStub; 7 | 8 | beforeEach(function () { 9 | utilsinsertElementStub = sinon.stub(utils, 'insertElement'); 10 | utilsLogErrorStub = sinon.stub(utils, 'logError'); 11 | }); 12 | 13 | afterEach(function () { 14 | utilsinsertElementStub.restore(); 15 | utilsLogErrorStub.restore(); 16 | }); 17 | 18 | describe('loadExternalScript', function () { 19 | it('requires moduleCode to be included on the request', function () { 20 | adLoader.loadExternalScript('someURL'); 21 | expect(utilsLogErrorStub.called).to.be.true; 22 | expect(utilsinsertElementStub.called).to.be.false; 23 | }); 24 | 25 | it('only allows whitelisted vendors to load scripts', function () { 26 | adLoader.loadExternalScript('someURL', 'criteo'); 27 | expect(utilsLogErrorStub.called).to.be.false; 28 | expect(utilsinsertElementStub.called).to.be.true; 29 | }); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /modules/adxpremiumAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: AdxPremium Analytics Adapter 4 | 5 | Module Type: Analytics Adapter 6 | 7 | Maintainer: info@luponmedia.com 8 | 9 | --- 10 | 11 | # Description 12 | 13 | Analytics adapter for luponmedia.com prebid platform. Contact [info@luponmedia.com]() if you have any questions about integration. 14 | 15 | --- 16 | 17 | # Integration 18 | 19 | AdxPremium Anaytics Adapter can be used as: 20 | 21 | - Part of the whole AdxPremium Header Bidding Ecosystem *(free)* 22 | 23 | - External Analytics tool for your Prebid script *(Paid)* 24 | 25 | ##### AdxPremium Header Bidding Ecosystem 26 | 27 | Integration is as easy as adding the following lines of code: 28 | 29 | ```javascript 30 | pbjs.que.push(function () { 31 | pbjs.enableAnalytics([{ 32 | provider: 'adxpremium', 33 | options: { 34 | pubID: 12345678 35 | } 36 | }); 37 | }]); 38 | }); 39 | ``` 40 | 41 | *Note*: To use AdxPremium Prebid Analytics Adapter, you have to be AdxPremium publisher and get the publisher ID as well as include the adapter in your **Prebid Core** script. 42 | -------------------------------------------------------------------------------- /modules/justpremiumBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Justpremium Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: headerbidding-dev@justpremium.com 6 | 7 | # Description 8 | 9 | To get more information or your unique zone id please contact Justpremium. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | sizes: [[1, 1]], 16 | code: 'div-gpt-ad-1471513102552-0', 17 | bids: [ 18 | { 19 | bidder: 'justpremium', 20 | params: { 21 | zone: 34364, 22 | allow : ['wp'] 23 | } 24 | }, 25 | ] 26 | }, 27 | { 28 | sizes: [[300, 600]], 29 | code: 'div-gpt-ad-1471513102552-1', 30 | bids: [ 31 | { 32 | bidder: 'justpremium', 33 | params: { 34 | zone: 34364, 35 | exclude : ['wp'] 36 | } 37 | } 38 | ] 39 | } 40 | ]; 41 | ``` 42 | -------------------------------------------------------------------------------- /modules/saraBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Sara Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: github@sara.media 6 | 7 | # Description 8 | 9 | Module that connects to Sara demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], 17 | bids: [ 18 | { 19 | bidder: "sara", 20 | params: { 21 | uid: '5', 22 | priceType: 'gross' // by default is 'net' 23 | } 24 | } 25 | ] 26 | },{ 27 | code: 'test-div', 28 | sizes: [[728, 90]], 29 | bids: [ 30 | { 31 | bidder: "sara", 32 | params: { 33 | uid: 6, 34 | priceType: 'gross' 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | ``` -------------------------------------------------------------------------------- /modules/gxoneBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: GXOne Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: olivier@geronimo.co 6 | 7 | # Description 8 | 9 | Module that connects to GXOne demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], 17 | bids: [ 18 | { 19 | bidder: "gxone", 20 | params: { 21 | uid: '2', 22 | priceType: 'gross' // by default is 'net' 23 | } 24 | } 25 | ] 26 | },{ 27 | code: 'test-div', 28 | sizes: [[728, 90]], 29 | bids: [ 30 | { 31 | bidder: "gxone", 32 | params: { 33 | uid: 9, 34 | priceType: 'gross' 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | ``` -------------------------------------------------------------------------------- /modules/supply2BidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Supply2 Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: vishal@mediadonuts.com 6 | 7 | # Description 8 | 9 | Module that connects to Media Donuts demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], 17 | bids: [ 18 | { 19 | bidder: "supply2", 20 | params: { 21 | uid: '23', 22 | priceType: 'gross' // by default is 'net' 23 | } 24 | } 25 | ] 26 | },{ 27 | code: 'test-div', 28 | sizes: [[728, 90]], 29 | bids: [ 30 | { 31 | bidder: "supply2", 32 | params: { 33 | uid: 24, 34 | priceType: 'gross' 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | ``` -------------------------------------------------------------------------------- /modules/teadsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Teads Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: innov-ssp@teads.tv 6 | 7 | # Description 8 | 9 | Use `teads` as bidder. 10 | 11 | `placementId` & `pageId` are required and must be integers. 12 | 13 | ## AdUnits configuration example 14 | ``` 15 | var adUnits = [{ 16 | code: 'your-slot_1-div', //use exactly the same code as your slot div id. 17 | sizes: [[300, 250]], 18 | bids: [{ 19 | bidder: 'teads', 20 | params: { 21 | placementId: 12345, 22 | pageId: 1234 23 | } 24 | }] 25 | },{ 26 | code: 'your-slot_2-div', //use exactly the same code as your slot div id. 27 | sizes: [[600, 800]], 28 | bids: [{ 29 | bidder: 'teads', 30 | params: { 31 | placementId: 12345, 32 | pageId: 1234 33 | } 34 | }] 35 | }]; 36 | ``` 37 | 38 | ## UserSync example 39 | 40 | ``` 41 | pbjs.setConfig({ 42 | userSync: { 43 | iframeEnabled: true, 44 | syncEnabled: true, 45 | syncDelay: 1 46 | } 47 | }); 48 | ``` 49 | -------------------------------------------------------------------------------- /modules/visxBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: YOC VIS.X Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: service@yoc.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to YOC VIS.X® demand source to fetch bids. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | // YOC Mystery Ad adUnit 17 | { 18 | code: 'yma-test-div', 19 | sizes: [[1, 1]], 20 | bids: [ 21 | { 22 | bidder: 'visx', 23 | params: { 24 | uid: '903535' 25 | } 26 | } 27 | ] 28 | }, 29 | // YOC Understitial Ad adUnit 30 | { 31 | code: 'yua-test-div', 32 | sizes: [[300, 250]], 33 | bids: [ 34 | { 35 | bidder: 'visx', 36 | params: { 37 | uid: '903536' 38 | } 39 | } 40 | ] 41 | } 42 | ]; 43 | ``` -------------------------------------------------------------------------------- /modules/djaxBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: djax Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer : support@djaxtech.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Djax Ad Server for bids. 12 | 13 | djax bid adapter supports Banner and Video. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | //bannner object 19 | { 20 | code: 'banner-ad-slot', 21 | mediaTypes: { 22 | banner: { 23 | sizes: [[300, 250], [300,600]], 24 | } 25 | }, 26 | bids: [{ 27 | bidder: 'djax', 28 | params: { 29 | publisherId: 2 30 | } 31 | }] 32 | 33 | }, 34 | //video object 35 | { 36 | code: 'video-ad-slot', 37 | mediaTypes: { 38 | video: { 39 | context: 'instream', 40 | playerSize: [640, 480], 41 | }, 42 | }, 43 | bids: [{ 44 | bidder: "djax", 45 | params: { 46 | publisherId: 2 47 | } 48 | }] 49 | }]; 50 | ``` -------------------------------------------------------------------------------- /modules/danmarketBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Dentsu Aegis Network Marketplace Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: niels@baarsma.net 6 | 7 | # Description 8 | 9 | Module that connects to DAN Marketplace demand source to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], 17 | bids: [ 18 | { 19 | bidder: "danmarket", 20 | params: { 21 | uid: '4', 22 | priceType: 'gross' // by default is 'net' 23 | } 24 | } 25 | ] 26 | },{ 27 | code: 'test-div', 28 | sizes: [[728, 90]], 29 | bids: [ 30 | { 31 | bidder: "danmarket", 32 | params: { 33 | uid: 5, 34 | priceType: 'gross' 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | ``` -------------------------------------------------------------------------------- /nightwatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "src_folders": ["./test/spec/e2e"], 3 | "output_folder": "./build/coverage/e2e/reports", 4 | "custom_commands_path" : "", 5 | "custom_assertions_path" : "./test/spec/e2e/custom-assertions", 6 | "page_objects_path" : "", 7 | "globals_path" : "", 8 | "end_session_on_fail" : true, 9 | "skip_testcases_on_fail" : false, 10 | 11 | "selenium" : { 12 | "start_process" : true, 13 | "server_path" : "${SELENIUM_JAR_PATH}", 14 | "log_path" : "", 15 | "host" : "127.0.0.1", 16 | "port" : 4444, 17 | "cli_args" : { 18 | "webdriver.ie.driver" : "" 19 | } 20 | }, 21 | 22 | "test_settings" : { 23 | "default" : { 24 | "launch_url" : "http://localhost", 25 | "selenium_port" : 4444, 26 | "selenium_host" : "localhost", 27 | "silent": true, 28 | "exclude":["custom-assertions","custom-commands","common","custom-reporter"], 29 | "screenshots" : { 30 | "enabled" : false, 31 | "path" : "" 32 | }, 33 | "desiredCapabilities": { 34 | "browserName": "firefox", 35 | "javascriptEnabled": true, 36 | "acceptSslCerts": true 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /modules/a4gBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Ad4Game Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: devops@ad4game.com 6 | 7 | # Description 8 | 9 | Ad4Game Bidder Adapter for Prebid.js. It should be tested on real domain. `localhost` should be rewritten (ex. example.com). 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], // a display size 17 | bids: [ 18 | { 19 | bidder: 'a4g', 20 | params: { 21 | zoneId: 59304, 22 | deliveryUrl: 'http://dev01.ad4game.com/v1/bid' 23 | } 24 | } 25 | ] 26 | },{ 27 | code: 'test-div', 28 | sizes: [[300, 50]], // a mobile size 29 | bids: [ 30 | { 31 | bidder: 'a4g', 32 | params: { 33 | zoneId: 59354, 34 | deliveryUrl: 'http://dev01.ad4game.com/v1/bid' 35 | } 36 | } 37 | ] 38 | } 39 | ]; 40 | ``` 41 | -------------------------------------------------------------------------------- /modules/adkernelAdnBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: AdKernel ADN Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid-dev@adkernel.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to AdKernel Ad Delivery Network 12 | Banner and video formats are supported. 13 | 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [{ 18 | code: 'banner-ad-div', 19 | mediaTypes: { 20 | banner: { 21 | sizes: [ 22 | [300, 250], 23 | [300, 200] // banner sizes 24 | ], 25 | } 26 | }, 27 | bids: [{ 28 | bidder: 'adkernelAdn', 29 | params: { 30 | pubId: 50357, 31 | host: 'dsp-staging.adkernel.com' 32 | } 33 | }] 34 | }, { 35 | code: 'video-ad-player', 36 | mediaTypes: { 37 | video: { 38 | context: 'instream', // or 'outstream' 39 | playerSize: [640, 480] // video player size 40 | } 41 | }, 42 | bids: [{ 43 | bidder: 'adkernelAdn', 44 | params: { 45 | pubId: 50357, 46 | host: 'dsp-staging.adkernel.com' 47 | } 48 | }] 49 | }]; 50 | ``` 51 | -------------------------------------------------------------------------------- /modules/conversantBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | - Module Name: Conversant Bidder Adapter 4 | - Module Type: Bidder Adapter 5 | - Maintainer: mediapsr@conversantmedia.com 6 | 7 | # Description 8 | 9 | Module that connects to Conversant's demand sources. Supports banners and videos. 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'banner-test-div', 16 | mediaTypes: { 17 | banner: { 18 | sizes: [[300, 250],[300,600]] 19 | } 20 | }, 21 | bids: [{ 22 | bidder: "conversant", 23 | params: { 24 | site_id: '108060' 25 | } 26 | }] 27 | },{ 28 | code: 'video-test-div', 29 | mediaTypes: { 30 | video: { 31 | context: 'instream', 32 | playerSize: [640, 480] 33 | } 34 | }, 35 | bids: [{ 36 | bidder: "conversant", 37 | params: { 38 | site_id: '108060', 39 | api: [2], 40 | protocols: [1, 2], 41 | mimes: ['video/mp4'] 42 | } 43 | }] 44 | }]; 45 | ``` 46 | -------------------------------------------------------------------------------- /modules/serverbidBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Serverbid Bid Adapter 4 | 5 | Module Type: Bid Adapter 6 | 7 | Maintainer: jgrimes@serverbid.com, jswart@serverbid.com 8 | 9 | # Description 10 | 11 | Connects to Serverbid for receiving bids from configured demand sources. 12 | 13 | # Test Parameters 14 | ```javascript 15 | var adUnits = [ 16 | { 17 | code: 'test-ad-1', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'serverbid', 22 | params: { 23 | networkId: '9969', 24 | siteId: '980639' 25 | } 26 | } 27 | ] 28 | }, 29 | { 30 | code: 'test-ad-2', 31 | sizes: [[300, 250]], 32 | bids: [ 33 | { 34 | bidder: 'serverbid', 35 | params: { 36 | networkId: '9969', 37 | siteId: '980639', 38 | zoneIds: [178503] 39 | } 40 | } 41 | ] 42 | } 43 | ]; 44 | ``` 45 | -------------------------------------------------------------------------------- /modules/rtbdemandadkBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Rtbdemandadk Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: shreyanschopra@rtbdemand.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Rtbdemandadk whitelabel platform. 12 | Banner and video formats are supported. 13 | 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: 'banner-ad-div', 20 | sizes: [[300, 250]], // banner size 21 | bids: [ 22 | { 23 | bidder: 'rtbdemandadk', 24 | params: { 25 | zoneId: '30164', //required parameter 26 | host: 'cpm.metaadserving.com' //required parameter 27 | } 28 | } 29 | ] 30 | }, { 31 | code: 'video-ad-player', 32 | sizes: [640, 480], // video player size 33 | bids: [ 34 | { 35 | bidder: 'rtbdemandadk', 36 | mediaType : 'video', 37 | params: { 38 | zoneId: '30164', //required parameter 39 | host: 'cpm.metaadserving.com' //required parameter 40 | } 41 | } 42 | ] 43 | } 44 | ]; 45 | ``` 46 | -------------------------------------------------------------------------------- /test/spec/integration/faker/fixtures.js: -------------------------------------------------------------------------------- 1 | import faker from 'faker'; 2 | import { makeSlot } from './googletag'; 3 | 4 | export function makeAdSlot(overrides = {}) { 5 | return Object.assign(makeSlot( 6 | { 7 | code: overrides.code, 8 | divId: overrides.divId 9 | }), overrides); 10 | } 11 | 12 | export function makeAdUnit(overrides = {}) { 13 | return Object.assign({ 14 | code: `ad-unit-code-${randomFive()}`, 15 | sizes: [[300, 250], [300, 600]], 16 | bids: [] 17 | }, overrides); 18 | } 19 | 20 | export function makeBidder(overrides = {}) { 21 | let adapter; 22 | adapter = Object.assign({ 23 | bidder: `${faker.company.bsBuzz()}Media`, 24 | params: { 25 | abc: faker.random.alphaNumeric(10), 26 | xyz: faker.random.number({ max: 10, precision: 2 }) 27 | }, 28 | callBids: sinon.spy() 29 | }, overrides); 30 | 31 | return adapter; 32 | } 33 | 34 | export function makeRequest(overrides = {}) { 35 | return Object.assign({ 36 | adUnits: overrides.adUnits, 37 | bidsBackHandler: sinon.spy(), 38 | timeout: 2000 39 | }, overrides); 40 | } 41 | 42 | export function randomFive() { return faker.random.number({ min: 10000, max: 99999 }); } 43 | -------------------------------------------------------------------------------- /modules/trionBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Trion Interactive Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: mgroh@trioninteractive.com 6 | **Publisher Contact**: publishers@trioninteractive.com 7 | 8 | # Description 9 | 10 | This module connects to Trion's demand sources. It supports display, outstream, and rich media formats. 11 | Trion will provide ``pubId`` and ``sectionId`` that are specific to your ad type. 12 | Please reach out to ``publishers@trioninteractive.com`` to set up a trion account and above ids. 13 | Use bidder code ```trion``` for all Trion traffic. 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: 'ad-div', 20 | sizes: [[300, 250]], // a display size 21 | bids: [ 22 | { 23 | bidder: 'trion', 24 | params: { 25 | pubId: '12345', 26 | sectionId: '1', 27 | re : 'http://clicktrackingurl.com?re='// optional 28 | } 29 | } 30 | ] 31 | } 32 | ]; 33 | ``` -------------------------------------------------------------------------------- /modules/smartrtbBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Smart RTB (smrtb.com) Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: evanm@smrtb.com 7 | ``` 8 | 9 | # Description 10 | 11 | Prebid adapter for Smart RTB. Requires approval and account setup. 12 | Video is supported but requires a publisher supplied adunit renderer at this time. 13 | 14 | # Test Parameters 15 | 16 | ## Web 17 | ``` 18 | var adUnits = [ 19 | { 20 | code: 'test-div', 21 | mediaTypes: { 22 | banner: { 23 | sizes: [[300,250]] 24 | }, 25 | video: { /* requires publisher supplied renderer */ 26 | context: 'outstream', 27 | playerDimension: [640, 480] 28 | } 29 | }, 30 | bids: [ 31 | { 32 | bidder: "smartrtb", 33 | params: { 34 | zoneId: "N4zTDq3PPEHBIODv7cXK", 35 | forceBid: true 36 | } 37 | } 38 | ] 39 | } 40 | ]; 41 | ``` 42 | -------------------------------------------------------------------------------- /plugins/RequireEnsureWithoutJsonp.js: -------------------------------------------------------------------------------- 1 | /** 2 | * RequireEnsureWithoutJsonp 3 | * 4 | * This plugin redefines the behavior of require.ensure that is used by webpack to load chunks. Usually require.ensure 5 | * includes code that allows the asynchronous loading of webpack chunks through jsonp requests AND includes a manifest 6 | * of all the build chunks so that they can be requested by name (e.g. require.ensure('./module.js'). Since that 7 | * functionality is not required and we plan on loading all of our chunks manually (either by concatenating all the 8 | * files together or including as individual scripts) we don't want the overhead of including that loading code or the 9 | * file manifest. In this plugin, that code is replaced with an error message if a module is requested that hasn't been 10 | * loaded manually. 11 | * 12 | * @constructor 13 | */ 14 | function RequireEnsureWithoutJsonp() {} 15 | RequireEnsureWithoutJsonp.prototype.apply = function(compiler) { 16 | compiler.plugin('compilation', function(compilation) { 17 | compilation.mainTemplate.plugin('require-ensure', function(_, chunk, hash) { 18 | return ''; 19 | }); 20 | }); 21 | }; 22 | 23 | module.exports = RequireEnsureWithoutJsonp; 24 | -------------------------------------------------------------------------------- /test/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "env": { 3 | "browser": true, 4 | "mocha": true 5 | }, 6 | "extends": "standard", 7 | "globals": { 8 | "$$PREBID_GLOBAL$$": false 9 | }, 10 | "parserOptions": { 11 | "sourceType": "module" 12 | }, 13 | "rules": { 14 | "comma-dangle": "off", 15 | "semi": "off", 16 | "space-before-function-paren": "off", 17 | 18 | // Exceptions below this line are temporary, so that eslint can be added into the CI process. 19 | // Violations of these styles should be fixed, and the exceptions removed over time. 20 | // 21 | // See Issue #1111. 22 | "camelcase": "off", 23 | "eqeqeq": "off", 24 | "no-mixed-spaces-and-tabs": "off", 25 | "no-tabs": "off", 26 | "no-unused-expressions": "off", 27 | "import/no-duplicates": "off", 28 | "no-template-curly-in-string": "off", 29 | "no-global-assign": "off", 30 | "no-path-concat": "off", 31 | "no-redeclare": "off", 32 | "node/no-deprecated-api": "off", 33 | "no-return-assign": "off", 34 | "no-undef": "off", 35 | "no-unused-vars": "off", 36 | "no-use-before-define": "off", 37 | "no-useless-escape": "off", 38 | "one-var": "off", 39 | } 40 | }; 41 | -------------------------------------------------------------------------------- /modules/xendizBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Xendiz Bidder Adapter 4 | Module Type: Bidder Adapter 5 | Maintainer: hello@xendiz.com 6 | 7 | # Description 8 | 9 | Module that connects to Xendiz demand sources 10 | 11 | # Test Parameters 12 | ``` 13 | var adUnits = [ 14 | { 15 | code: 'test-div', 16 | sizes: [[300, 250]], 17 | bids: [ 18 | { 19 | bidder: "xendiz", 20 | params: { 21 | pid: '00000000-0000-0000-0000-000000000000' 22 | } 23 | } 24 | ] 25 | },{ 26 | code: 'test-div', 27 | sizes: [[300, 50]], 28 | bids: [ 29 | { 30 | bidder: "xendiz", 31 | params: { 32 | pid: '00000000-0000-0000-0000-000000000000', 33 | ext: { 34 | uid: '550e8400-e29b-41d4-a716-446655440000' 35 | } 36 | } 37 | } 38 | ] 39 | } 40 | ]; 41 | ``` -------------------------------------------------------------------------------- /modules/aolBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: AOL Bid Adapter 4 | 5 | Module Type: AOL Adapter 6 | 7 | Maintainer: hb-fe-tech@oath.com 8 | 9 | # Description 10 | 11 | Module that connects to AOL's demand sources 12 | 13 | # Test Parameters 14 | ```javascript 15 | var adUnits = [ 16 | { 17 | code: 'test-ad', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'onedisplay', 22 | params: { 23 | placement: '3611253', 24 | network: '9599.1', 25 | keyValues: { 26 | test: 'key' 27 | } 28 | } 29 | } 30 | ] 31 | }, 32 | { 33 | code: 'test-mobile-ad', 34 | sizes: [[300, 250]], 35 | bids: [ 36 | { 37 | bidder: 'onemobile', 38 | params: { 39 | dcn: '2c9d2b50015a5aa95b70a9b0b5b10012', 40 | pos: 'header' 41 | } 42 | } 43 | ] 44 | } 45 | ]; 46 | ``` 47 | -------------------------------------------------------------------------------- /modules/fintezaAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Finteza Analytics Adapter 5 | Module Type: Analytics Adapter 6 | Maintainer: renat@finteza.com 7 | ``` 8 | 9 | # Description 10 | 11 | The Finteza adapter for integration with Prebid is an analytics tool for publishers who use the Header Bidding technology. The adapter tracks auction opening, offer sending to advertisers, receipt of bids by the publisher and auction winner selection. All tracks are sent to Finteza and enable visual advertiser quality evaluation: how many offers partners accept, what prices they provide, how fast they respond and how often their bids win. 12 | 13 | For more information, visit the [official Finteza website](https://www.finteza.com/). 14 | 15 | # Test Parameters 16 | 17 | ``` 18 | { 19 | provider: 'finteza', 20 | options: { 21 | id: 'xxxxx', // Website ID (required) 22 | bidRequestTrack: 'Bid Request %BIDDER%', 23 | bidResponsePriceTrack: 'Bid Response Price %BIDDER%', 24 | bidResponseTimeTrack: 'Bid Response Time %BIDDER%', 25 | bidTimeoutTrack: 'Bid Timeout %BIDDER%', 26 | bidWonTrack: 'Bid Won %BIDDER%' 27 | } 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /modules/somoBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Somo Audience Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: prebid@somoaudience.com 6 | # Description 7 | Connects to Somo Audience demand source. 8 | Please use ```somo``` as the bidder code. 9 | 10 | For video integration, somoAudience returns content as vastXML and requires the publisher to define the cache url in config passed to Prebid for it to be valid in the auction 11 | # Test Site Parameters 12 | ``` 13 | var adUnits = [{ 14 | code: 'banner-ad-div', 15 | sizes: [[300, 250]], 16 | bids: [{ 17 | bidder: 'somo', 18 | params: { 19 | placementId: '22a58cfb0c9b656bff713d1236e930e8' 20 | } 21 | }] 22 | }]; 23 | ``` 24 | # Test App Parameters 25 | ``` 26 | var adUnits = [{ 27 | code: 'banner-ad-div', 28 | sizes: [[300, 250]], 29 | bids: [{ 30 | bidder: 'somo', 31 | params: { 32 | placementId: '22a58cfb0c9b656bff713d1236e930e8', 33 | app: { 34 | bundle: 'com.somoaudience.apps', 35 | storeUrl: 'http://somoaudience.com/apps', 36 | domain: 'somoaudience.com', 37 | } 38 | } 39 | }] 40 | }]; 41 | ``` 42 | -------------------------------------------------------------------------------- /modules/stvBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: STV Video Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid@dspx.tv 7 | ``` 8 | 9 | # Description 10 | 11 | STV video adapter for Prebid.js 1.x 12 | 13 | # Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | // video settings 18 | code: 'video-obj', 19 | mediaTypes: { 20 | video: { 21 | context: 'instream', 22 | playerSize: [640, 480] 23 | } 24 | }, 25 | bids: [ 26 | { 27 | bidder: "stv", 28 | params: { 29 | placement: "", // placement ID of inventory with STV 30 | noskip: 1, // 0 or 1 31 | pfilter: {/* 32 | min_duration: 10, // min duration 33 | max_duration: 30, // max duration 34 | min_bitrate: 300, // min bitrate 35 | max_bitrate: 1600, // max bitrate 36 | */} 37 | } 38 | } 39 | ] 40 | } 41 | ]; 42 | ``` 43 | 44 | -------------------------------------------------------------------------------- /modules/cedatoBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Cedato Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: alexk@cedato.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Cedato Bidder. 12 | Player ID must be replaced. You can approach your Cedato account manager to get one. 13 | 14 | # Test Parameters 15 | ``` 16 | var adUnits = [ 17 | // Banner 18 | { 19 | code: 'div-gpt-ad-1460505748561-0', 20 | mediaTypes: { 21 | banner: { 22 | // You can choose one of them 23 | sizes: [ 24 | [300, 250], 25 | [300, 600], 26 | [240, 400], 27 | [728, 90], 28 | ] 29 | } 30 | }, 31 | bids: [ 32 | { 33 | bidder: "cedato", 34 | params: { 35 | player_id: 1450133326, 36 | } 37 | } 38 | ] 39 | } 40 | ]; 41 | 42 | pbjs.que.push(() => { 43 | pbjs.setConfig({ 44 | userSync: { 45 | syncEnabled: true, 46 | enabledBidders: ['cedato'], 47 | pixelEnabled: true, 48 | syncsPerBidder: 200, 49 | syncDelay: 100, 50 | }, 51 | }); 52 | }); 53 | ``` 54 | -------------------------------------------------------------------------------- /modules/rockyouBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: RockYou Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid.adapter@rockyou.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to the RockYou exchange for bids. 12 | 13 | The RockYou bid adapter supports Banner and Video. 14 | 15 | For publishers who wish to be set up on the RockYou Ad Network, please contact 16 | publishers@rockyou.com. 17 | 18 | RockYou user syncing requires the `userSync.iframeEnabled` property be set to `true`. 19 | 20 | # Test PARAMETERS 21 | ``` 22 | var adUnits = [ 23 | 24 | // Banner adUnit 25 | { 26 | code: 'banner-div', 27 | mediaTypes: { 28 | banner: { 29 | sizes: [[720, 480]] 30 | } 31 | }, 32 | 33 | bids: [{ 34 | bidder: 'rockyou', 35 | params: { 36 | placementId: '4954' 37 | } 38 | }] 39 | }, 40 | 41 | // Video (outstream) 42 | { 43 | code: 'video-outstream', 44 | mediaTypes: { 45 | video: { 46 | context: 'outstream', 47 | playerSize: [720, 480] 48 | } 49 | }, 50 | bids: [{ 51 | bidder: 'rockyou', 52 | params: { 53 | placementId: '4957' 54 | } 55 | }] 56 | } 57 | ] 58 | ``` 59 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | 2 | const allowedModules = require("./allowedModules"); 3 | 4 | module.exports = { 5 | "env": { 6 | "browser": true, 7 | "commonjs": true 8 | }, 9 | "settings": { 10 | "import/resolver": { 11 | "node": { 12 | "moduleDirectory": ["node_modules", "./"] 13 | } 14 | } 15 | }, 16 | "extends": "standard", 17 | "plugins": [ 18 | "prebid" 19 | ], 20 | "globals": { 21 | "$$PREBID_GLOBAL$$": false 22 | }, 23 | "parserOptions": { 24 | "sourceType": "module" 25 | }, 26 | "rules": { 27 | "comma-dangle": "off", 28 | "semi": "off", 29 | "space-before-function-paren": "off", 30 | 31 | // Exceptions below this line are temporary, so that eslint can be added into the CI process. 32 | // Violations of these styles should be fixed, and the exceptions removed over time. 33 | // 34 | // See Issue #1111. 35 | "eqeqeq": "off", 36 | "no-return-assign": "off", 37 | "no-throw-literal": "off", 38 | "no-undef": "off", 39 | "no-useless-escape": "off", 40 | }, 41 | "overrides": Object.keys(allowedModules).map((key) => ({ 42 | "files": key + "/**/*.js", 43 | "rules": { 44 | "prebid/validate-imports": ["error", allowedModules[key]] 45 | } 46 | })) 47 | }; 48 | -------------------------------------------------------------------------------- /modules/lifestreetBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Lifestreet Bid Adapter 4 | 5 | Module Type: Lifestreet Adapter 6 | 7 | Maintainer: hb.tech@lifestreet.com 8 | 9 | # Description 10 | 11 | Module that connects to Lifestreet's demand sources 12 | 13 | # Test Parameters 14 | ```javascript 15 | var adUnits = [ 16 | // Banner adUnit 17 | { 18 | code: 'test-ad', 19 | sizes: [[160, 600]], 20 | bids: [ 21 | { 22 | bidder: 'lifestreet', 23 | params: { 24 | slot: 'slot166704', 25 | adkey: '78c', 26 | ad_size: '160x600' 27 | } 28 | } 29 | ] 30 | }, 31 | // Video instream adUnit 32 | { 33 | code: 'test-video-ad', 34 | sizes: [[640, 480]], 35 | bids: [ 36 | { 37 | bidder: 'lifestreet', 38 | params: { 39 | slot: 'slot1227631', 40 | adkey: 'a98', 41 | ad_size: '640x480' 42 | } 43 | } 44 | ] 45 | } 46 | ]; 47 | ``` 48 | -------------------------------------------------------------------------------- /modules/googleAnalyticsAdapter.md: -------------------------------------------------------------------------------- 1 | # Google Analytics Adapter 2 | 3 | The google analytics adapter pushes prebid events into google analytics. 4 | 5 | ## Usage 6 | 7 | The simplest way to enable the analytics adapter is this 8 | 9 | ```javascript 10 | pbjs.enableAnalytics([{ 11 | provider: 'ga' 12 | }]); 13 | ``` 14 | 15 | Defaults will be used and you should see events being pushed to analytics. 16 | 17 | You can customize the adapter with various `options` like this 18 | 19 | ```javascript 20 | pbjs.enableAnalytics([{ 21 | provider: 'ga', 22 | options: { ... } 23 | }]); 24 | 25 | Here is a full list of settings available 26 | 27 | - `global` (string) - name of the global analytics object. Default is `ga` 28 | - `trackerName` (string) - use another tracker for prebid events. Default is the default tracker 29 | - `sampling` (number) - choose a value from `0` to `1`, where `0` means 0% and `1` means 100% tracked 30 | - `enableDistribution` (boolean) - enables additional events that track load time and cpm distribution 31 | by creating buckets for load time and cpm 32 | - `cpmDistribution` (cpm: number => string) - customize the cpm buckets for the cpm distribution 33 | 34 | 35 | ## Additional resources 36 | 37 | - [Prebid GA Analytics](http://prebid.org/overview/ga-analytics.html) 38 | -------------------------------------------------------------------------------- /modules/lkqdBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: LKQD Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@lkqd.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to LKQD exchange for bids. 12 | 13 | LKQD bid adapter supports Video ads currently. 14 | 15 | For more information about [LKQD Ad Serving and Management](http://www.lkqd.com/ad-serving-and-management/), please contact [info@lkqd.com](info@lkqd.com). 16 | 17 | # Sample Ad Unit: For Publishers 18 | ```javascript 19 | var videoAdUnit = [ 20 | { 21 | code: 'video1', 22 | sizes: [ 23 | [300, 250], 24 | [640, 480] 25 | ], 26 | bids: [{ 27 | bidder: 'lkqd', 28 | params: { 29 | siteId: '662921', 30 | placementId: '263' 31 | } 32 | }] 33 | }]; 34 | ``` 35 | 36 | # Configuration 37 | 38 | The LKQD Bidder Adapter expects Prebid Cache to be enabled so that we can store and retrieve a single vastXml. If this value is not set it will have to use vastUrl to make a duplicate call to the SSP and cannot guarantee the same ad will be received after auctionEnd. 39 | 40 | ```javascript 41 | pbjs.setConfig({ 42 | usePrebidCache: true, 43 | cache: { 44 | url: 'https://prebid.adnxs.com/pbc/v1/cache' 45 | } 46 | }); 47 | ``` 48 | -------------------------------------------------------------------------------- /modules/sortableBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Sortable Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid@sortable.com 7 | ``` 8 | 9 | # Description 10 | 11 | Sortable's adapter integration to the Prebid library. Posts plain-text JSON to the /openrtb2/auction endpoint. 12 | 13 | # Test Parameters 14 | 15 | ``` 16 | var adUnits = [ 17 | { 18 | code: 'test-pb-leaderboard', 19 | sizes: [[728, 90]], 20 | bids: [{ 21 | bidder: 'sortable', 22 | params: { 23 | tagId: 'test-pb-leaderboard', 24 | siteId: 'prebid.example.com', 25 | 'keywords': { 26 | 'key1': 'val1', 27 | 'key2': 'val2' 28 | } 29 | } 30 | }] 31 | }, { 32 | code: 'test-pb-banner', 33 | sizes: [[300, 250]], 34 | bids: [{ 35 | bidder: 'sortable', 36 | params: { 37 | tagId: 'test-pb-banner', 38 | siteId: 'prebid.example.com' 39 | } 40 | }] 41 | }, { 42 | code: 'test-pb-sidebar', 43 | size: [[160, 600]], 44 | bids: [{ 45 | bidder: 'sortable', 46 | params: { 47 | tagId: 'test-pb-sidebar', 48 | siteId: 'prebid.example.com', 49 | 'keywords': { 50 | 'keyA': 'valA' 51 | } 52 | } 53 | }] 54 | } 55 | ] 56 | ``` 57 | -------------------------------------------------------------------------------- /modules/rivrAnalyticsAdapter.js: -------------------------------------------------------------------------------- 1 | import {ajax} from '../src/ajax'; 2 | import adapter from '../src/AnalyticsAdapter'; 3 | import adapterManager from '../src/adapterManager'; 4 | import * as utils from '../src/utils'; 5 | 6 | const analyticsType = 'endpoint'; 7 | 8 | let rivrAnalytics = Object.assign(adapter({analyticsType}), { 9 | track({ eventType, args }) { 10 | if (window.rivraddon && window.rivraddon.analytics && window.rivraddon.analytics.getContext() && window.rivraddon.analytics.trackPbjsEvent) { 11 | utils.logInfo(`ARGUMENTS FOR TYPE: ============= ${eventType}`, args); 12 | window.rivraddon.analytics.trackPbjsEvent({ eventType, args }); 13 | } 14 | } 15 | }); 16 | 17 | // save the base class function 18 | rivrAnalytics.originEnableAnalytics = rivrAnalytics.enableAnalytics; 19 | 20 | // override enableAnalytics so we can get access to the config passed in from the page 21 | rivrAnalytics.enableAnalytics = (config) => { 22 | if (window.rivraddon && window.rivraddon.analytics) { 23 | window.rivraddon.analytics.enableAnalytics(config, {utils, ajax, pbjsGlobalVariable: $$PREBID_GLOBAL$$}); 24 | rivrAnalytics.originEnableAnalytics(config); 25 | } 26 | }; 27 | 28 | adapterManager.registerAnalyticsAdapter({ 29 | adapter: rivrAnalytics, 30 | code: 'rivr' 31 | }); 32 | 33 | export default rivrAnalytics; 34 | -------------------------------------------------------------------------------- /modules/getintentBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: GetIntent Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: server-dev@getintent.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to GetIntent's demand sources. 12 | Banner and Video formats are supported. 13 | 14 | # Required parameters 15 | * ```pid``` for Publisher ID 16 | * ```tid``` for Tag ID. 17 | 18 | # Test Parameters 19 | ``` 20 | var adUnits = [ 21 | { 22 | code: 'test-ad', 23 | sizes: [[300, 250]], 24 | bids: [ 25 | { 26 | bidder: "getintent", 27 | params: { 28 | pid: "7", 29 | tid: "test01" 30 | } 31 | } 32 | ] 33 | },{ 34 | code: 'test-video-ad', 35 | sizes: [[300, 250]], 36 | bids: [ 37 | { 38 | bidder: "getintent", 39 | params: { 40 | pid: "7", 41 | tid: "test01" 42 | }, 43 | mediaType: "video" 44 | } 45 | ] 46 | } 47 | ]; 48 | ``` 49 | -------------------------------------------------------------------------------- /nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = (function(settings) { 2 | var browsers = require('./browsers.json'); 3 | delete browsers['bs_ie_9_windows_7']; 4 | 5 | for(var browser in browsers) { 6 | if(browsers[browser].browser === 'iphone') continue; 7 | 8 | var desiredCapabilities = { 9 | "browserName": browsers[browser].browser, 10 | "version": browsers[browser].browser_version, 11 | "platform": browsers[browser].os, 12 | "os": browsers[browser].os, 13 | "os_version": browsers[browser].os_version, 14 | "browser": browsers[browser].browser, 15 | "browser_version": browsers[browser].browser_version, 16 | }; 17 | 18 | settings.test_settings[browser] = { 19 | "silent": true, 20 | "exclude":["custom-assertions","custom-commands","common","custom-reporter"], 21 | "screenshots" : { 22 | "enabled" : false, 23 | "path" : "" 24 | }, 25 | "javascriptEnabled": true, 26 | "acceptSslCerts": true, 27 | "browserstack.local": true, 28 | "browserstack.debug": true, 29 | "browserstack.selenium_version" : "2.53.0", 30 | "browserstack.user": "${BROWSERSTACK_USERNAME}", 31 | "browserstack.key": "${BROWSERSTACK_KEY}" 32 | }; 33 | settings.test_settings[browser]['desiredCapabilities'] = desiredCapabilities; 34 | } 35 | return settings; 36 | 37 | })(require('./nightwatch.browserstack.json')); 38 | -------------------------------------------------------------------------------- /modules/appierBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Appier Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: apn-dev@appier.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Appier exchange for bids. 12 | 13 | NOTE: 14 | - Appier bid adapter only supports Banner at the moment. 15 | - Multi-currency is not supported. Please make sure you have correct DFP currency settings according to your deal with Appier. 16 | 17 | # Sample Ad Unit Config 18 | ``` 19 | var adUnits = [ 20 | // Banner adUnit 21 | { 22 | code: 'banner-div', 23 | mediaTypes: { 24 | banner: { 25 | sizes: [[300, 250], [300,600]] 26 | } 27 | }, 28 | bids: [{ 29 | bidder: 'appier', 30 | params: { 31 | hzid: 'WhM5WIOp' 32 | } 33 | }] 34 | } 35 | ]; 36 | ``` 37 | 38 | # Additional Config (Optional) 39 | Set the "farm" to use region-specific server 40 | ``` 41 | // use the bid server in Taiwan (country code: tw) 42 | pbjs.setConfig({ 43 | appier: { 44 | 'farm': 'tw' 45 | } 46 | }); 47 | ``` 48 | 49 | Explicitly override the bid server used for bidding 50 | ``` 51 | // use the bid server specified and override the default 52 | pbjs.setConfig({ 53 | appier: { 54 | 'server': '${HOST_NAME_OF_THE_SERVER}' 55 | } 56 | }); 57 | ``` 58 | -------------------------------------------------------------------------------- /modules/consumableBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Consumable Bid Adapter 4 | 5 | Module Type: Consumable Adapter 6 | 7 | Maintainer: naffis@consumable.com 8 | 9 | # Description 10 | 11 | Module that connects to Consumable's demand sources 12 | 13 | # Test Parameters 14 | ```javascript 15 | var adUnits = [ 16 | { 17 | code: 'test-ad-1', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: 'consumable', 22 | params: { 23 | networkId: '9969', 24 | siteId: '980639', 25 | unitId: '123456', 26 | unitName: 'cnsmbl-unit' 27 | } 28 | } 29 | ] 30 | }, 31 | { 32 | code: 'test-ad-2', 33 | sizes: [[300, 250]], 34 | bids: [ 35 | { 36 | bidder: 'consumable', 37 | params: { 38 | networkId: '9969', 39 | siteId: '980639', 40 | unitId: '123456', 41 | unitName: 'cnsmbl-unit', 42 | zoneIds: [178503] 43 | } 44 | } 45 | ] 46 | } 47 | ]; 48 | ``` -------------------------------------------------------------------------------- /modules/uolBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: UOL Project Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: l-prebid@uolinc.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to UOL Project's exchange for bids. 12 | 13 | For proper setup, please contact UOL Project's team at l-prebid@uolinc.com 14 | 15 | # Test Parameters 16 | ``` 17 | var adUnits = [ 18 | { 19 | code: '/19968336/header-bid-tag-0', 20 | mediaTypes: { 21 | banner: { 22 | sizes: [[300, 250],[300, 600]] 23 | } 24 | }, 25 | bids: [{ 26 | bidder: 'uol', 27 | params: { 28 | placementId: 1231244, 29 | test: true, 30 | cpmFactor: 2 31 | } 32 | } 33 | ] 34 | }, 35 | { 36 | code: '/19968336/header-bid-tag-1', 37 | mediaTypes: { 38 | banner: { 39 | sizes: [[970, 250],[728, 90]] 40 | } 41 | }, 42 | bids: [{ 43 | bidder: 'uol', 44 | params: { 45 | placementId: 1231242, 46 | test: false 47 | } 48 | }] 49 | } 50 | ]; 51 | ``` 52 | -------------------------------------------------------------------------------- /integrationExamples/gpt/amp/creative.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 39 | -------------------------------------------------------------------------------- /modules/oneVideoBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: One Video Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: ankur.modi@oath.com 6 | 7 | # Description 8 | 9 | Connects to One Video demand source to fetch bids. 10 | 11 | 12 | # Test Parameters 13 | ``` 14 | var adUnits = [ 15 | { 16 | code: 'video1', 17 | sizes: [640,480], 18 | mediaTypes: { 19 | video: { 20 | context: "instream" 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: 'oneVideo', 26 | params: { 27 | video: { 28 | playerWidth: 480, 29 | playerHeight: 640, 30 | mimes: ['video/mp4', 'application/javascript'], 31 | protocols: [2,5], 32 | api: [2], 33 | position: 1, 34 | delivery: [2], 35 | playbackmethod: [1,5], 36 | placement: 123, 37 | sid: , 38 | rewarded: 1 39 | }, 40 | }, 41 | site: { 42 | id: 1, 43 | page: 'http://abhi12345.com', 44 | referrer: 'http://abhi12345.com' 45 | }, 46 | pubId: 'brxd' 47 | } 48 | } 49 | ] 50 | } 51 | ]; 52 | ``` 53 | -------------------------------------------------------------------------------- /modules/oneplanetonlyBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: OnePlanetOnly Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: vitaly@oneplanetonly.com 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to OnePlanetOnly's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'desktop-banner-ad-div', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[300, 250], [300, 600]], 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: 'oneplanetonly', 26 | params: { 27 | siteId: '5', 28 | adUnitId: '5-4587544' 29 | } 30 | } 31 | ] 32 | },{ 33 | code: 'mobile-banner-ad-div', 34 | mediaTypes: { 35 | banner: { 36 | sizes: [[320, 50], [320, 100]], 37 | } 38 | }, 39 | bids: [ 40 | { 41 | bidder: "oneplanetonly", 42 | params: { 43 | siteId: '5', 44 | adUnitId: '5-81037880' 45 | } 46 | } 47 | ] 48 | } 49 | ]; 50 | ``` -------------------------------------------------------------------------------- /modules/tripleliftBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Triplelift Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: prebid@triplelift.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Triplelift Exchange for bids. 12 | Triplelift bid adapter supports Banner format only. 13 | 14 | # Test Parameters 15 | ``` 16 | var adUnits = [{ 17 | code: 'banner-div', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [[300, 600], [300, 250], [320, 90]], 21 | } 22 | }, 23 | bids: [ 24 | { 25 | bidder: 'triplelift', 26 | params: { 27 | inventoryCode: 'forbes_main', 28 | floor: 1.009 29 | } 30 | }] 31 | }, { 32 | code: 'banner-div-2', 33 | mediaTypes: { 34 | banner: { 35 | sizes: [[300, 300]], 36 | } 37 | }, 38 | bids: [ 39 | { 40 | bidder: 'triplelift', 41 | params: { 42 | inventoryCode: 'foodgawker', 43 | floor: 0.00 44 | } 45 | }] 46 | }, { 47 | code: 'banner-div-3', 48 | mediaTypes: { 49 | banner: { 50 | sizes: [[300, 600], [300, 250]], 51 | } 52 | }, 53 | bids: [ 54 | { 55 | bidder: 'triplelift', 56 | params: { 57 | inventoryCode: 'forbes_main', 58 | floor: 0 59 | } 60 | }] 61 | }]; 62 | ``` 63 | -------------------------------------------------------------------------------- /modules/dgadsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Digital Garage Ads Platform Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer:dgads-support@garage.co.jp 7 | ``` 8 | 9 | # Description 10 | 11 | Connect to Digital Garage Ads Platform for bids. 12 | This adapter supports Banner and Native. 13 | 14 | # Test Parameters 15 | ``` 16 | var adUnits = [ 17 | // Banner 18 | { 19 | code: 'banner-div', 20 | sizes: [[300, 250]], 21 | bids: [{ 22 | bidder: 'dgads', 23 | mediaTypes: 'banner', 24 | params: { 25 | location_id: '1', 26 | site_id: '1' 27 | } 28 | }] 29 | }, 30 | // Native 31 | { 32 | code: 'native-div', 33 | sizes: [[300, 250]], 34 | mediaTypes: { 35 | native: { 36 | title: { 37 | required: true, 38 | len: 25 39 | }, 40 | body: { 41 | required: true, 42 | len: 140 43 | }, 44 | sponsoredBy: { 45 | required: true, 46 | len: 40 47 | }, 48 | image: { 49 | required: true 50 | }, 51 | clickUrl: { 52 | required: true 53 | }, 54 | } 55 | }, 56 | bids: [{ 57 | bidder: 'dgads', 58 | params: { 59 | location_id: '10', 60 | site_id: '1' 61 | } 62 | }] 63 | }, 64 | ]; 65 | ``` 66 | -------------------------------------------------------------------------------- /modules/ebdrBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: EngageBDR Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: tech@engagebdr.com 7 | ``` 8 | 9 | # Description 10 | 11 | Adapter that connects to EngageBDR's demand sources. 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [{ 16 | code: 'div-gpt-ad-1460505748561-0', 17 | mediaTypes: { 18 | banner: { 19 | sizes: [[300, 250], [300,600]], 20 | } 21 | }, 22 | bids: [{ 23 | bidder: 'ebdr', 24 | params: { 25 | zoneid: '99999', 26 | bidfloor: '1.00', 27 | IDFA:'xxx-xxx', 28 | ADID:'xxx-xxx', 29 | latitude:'34.089811', 30 | longitude:'-118.392805' 31 | } 32 | }] 33 | },{ 34 | code: 'test-video', 35 | mediaTypes: { 36 | video: { 37 | context: 'instream', 38 | playerSize: [300, 250] 39 | } 40 | }, 41 | bids: [{ 42 | bidder: 'ebdr', 43 | params: { 44 | zoneid: '99998', 45 | bidfloor: '1.00', 46 | IDFA:'xxx-xxx', 47 | ADID:'xxx-xxx', 48 | latitude:'34.089811', 49 | longitude:'-118.392805' 50 | } 51 | }] 52 | }]; 53 | ``` 54 | -------------------------------------------------------------------------------- /modules/audienceNetworkBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | Module Name: Audience Network Bid Adapter 4 | 5 | Module Type: Bidder Adapter 6 | 7 | Maintainer: Lovell Fuller 8 | 9 | # Parameters 10 | 11 | | Name | Scope | Description | Example | 12 | | :------------ | :------- | :---------------------------------------------- | :--------------------------------- | 13 | | `placementId` | required | The Placement ID from Audience Network | "555555555555555\_555555555555555" | 14 | | `format` | optional | Format, one of "native" or "video" | "native" | 15 | 16 | # Example ad units 17 | 18 | ```javascript 19 | const adUnits = [{ 20 | code: "test-iab", 21 | sizes: [[300, 250]], 22 | bids: [{ 23 | bidder: "audienceNetwork", 24 | params: { 25 | placementId: "555555555555555_555555555555555" 26 | } 27 | }] 28 | }, { 29 | code: "test-native", 30 | sizes: [[300, 250]], 31 | bids: [{ 32 | bidder: "audienceNetwork", 33 | params: { 34 | format: "native", 35 | placementId: "555555555555555_555555555555555" 36 | } 37 | }] 38 | }, { 39 | code: "test-video", 40 | sizes: [[640, 360]], 41 | bids: [{ 42 | bidder: "audienceNetwork", 43 | params: { 44 | format: "video", 45 | placementId: "555555555555555_555555555555555" 46 | } 47 | }] 48 | }]; 49 | ``` 50 | -------------------------------------------------------------------------------- /nightwatch.browserstack.json: -------------------------------------------------------------------------------- 1 | { 2 | "src_folders": ["./test/spec/e2e"], 3 | "output_folder": "./build/coverage/e2e/reports", 4 | "custom_commands_path": "", 5 | "custom_assertions_path": "", 6 | "page_objects_path": "", 7 | "globals_path": "", 8 | 9 | "selenium" : { 10 | "start_process" : false, 11 | "host" : "hub.browserstack.com", 12 | "port" : 80 13 | }, 14 | 15 | "test_settings": { 16 | "default": { 17 | "launch_url" : "http://hub.browserstack.com", 18 | "selenium_port" : 80, 19 | "selenium_host" : "hub.browserstack.com", 20 | "silent": true, 21 | "exclude":["custom-assertions","custom-commands","common","custom-reporter"], 22 | "screenshots" : { 23 | "enabled" : false, 24 | "path" : "" 25 | }, 26 | "desiredCapabilities": { 27 | "browserName": "chrome", 28 | "browser_version" : "51.0", 29 | "platform" : "WINDOWS", 30 | 31 | "javascriptEnabled": true, 32 | "acceptSslCerts": true, 33 | 34 | "os" : "WINDOWS", 35 | "os_version" : "7", 36 | "browser" : "Chrome", 37 | "browser_version" : "51.0", 38 | "browserstack.local": true, 39 | "browserstack.debug": true, 40 | "browserstack.selenium_version" : "2.53.0", 41 | "browserstack.user": "${BROWSERSTACK_USERNAME}", 42 | "browserstack.key": "${BROWSERSTACK_KEY}" 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /modules/adxcgBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | **Module Name**: Adxcg Bidder Adapter 4 | **Module Type**: Bidder Adapter 5 | **Maintainer**: info@adxcg.com 6 | 7 | # Description 8 | 9 | Module that connects to an Adxcg.com zone to fetch bids. 10 | 11 | # Test Parameters 12 | ``` 13 | `` 14 | var adUnits = [{ 15 | code: 'banner-ad-div', 16 | sizes: [[300, 250]], 17 | bids: [{ 18 | bidder: 'adxcg', 19 | params: { 20 | adzoneid: '1' 21 | } 22 | }] 23 | },{ 24 | code: 'native-ad-div', 25 | sizes: [[300, 250], [1, 1]], 26 | nativeParams: { 27 | title: { required: true, len: 75 }, 28 | image: { required: true }, 29 | body: { len: 200 }, 30 | sponsoredBy: { len: 20 } 31 | }, 32 | bids: [{ 33 | bidder: 'adxcg', 34 | params: { 35 | adzoneid: '2379' 36 | } 37 | } 38 | }] 39 | },{ 40 | code: 'video', 41 | sizes: [[640, 480]], 42 | bids: [{ 43 | bidder: 'adxcg', 44 | params: { 45 | adzoneid: '20' 46 | } 47 | } 48 | }] 49 | }]; 50 | ``` 51 | -------------------------------------------------------------------------------- /modules/taphypeBidAdapter.js: -------------------------------------------------------------------------------- 1 | import {registerBidder} from '../src/adapters/bidderFactory'; 2 | 3 | export const spec = { 4 | code: 'taphype', 5 | isBidRequestValid: function (bid) { 6 | return !!bid.params.placementId; 7 | }, 8 | buildRequests: function (bidRequests) { 9 | const requests = bidRequests.map(function (bid) { 10 | const params = { 11 | placementId: bid.params.placementId, 12 | url: encodeURIComponent(window.location.href), 13 | size: bid.sizes[0][0] + 'x' + bid.sizes[0][1], 14 | rnd: Math.random(), 15 | bidId: bid.bidId, 16 | }; 17 | 18 | return {method: 'GET', url: 'https://us-central1-taphype-internal.cloudfunctions.net/th-prebid', data: params, options: {withCredentials: false}} 19 | }); 20 | 21 | return requests; 22 | }, 23 | interpretResponse: function (serverResponse, bidRequest) { 24 | if (!serverResponse || !serverResponse.body || !serverResponse.body.ad) { 25 | return []; 26 | } 27 | 28 | const bid = serverResponse.body; 29 | const sizes = bid.size.split(','); 30 | 31 | return [{ 32 | requestId: bidRequest.data.bidId, 33 | cpm: bid.price, 34 | width: sizes[0], 35 | height: sizes[1], 36 | creativeId: bidRequest.data.bidId, 37 | currency: bid.currency || 'USD', 38 | netRevenue: true, 39 | ad: bid.ad, 40 | ttl: 360 41 | }]; 42 | }, 43 | }; 44 | 45 | registerBidder(spec); 46 | -------------------------------------------------------------------------------- /modules/sublimeBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Sublime Bid Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: pbjs@sublimeskinz.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Sublime for bids. 12 | Sublime bid adapter supports Skinz and M-Skinz formats. 13 | 14 | # Nota Bene 15 | 16 | Our prebid adapter is unusable with SafeFrame. 17 | 18 | # Build 19 | 20 | You can build your version of prebid.js, execute: 21 | 22 | ```shell 23 | gulp build --modules=sublimeBidAdapter 24 | ``` 25 | 26 | Or to build with multiple adapters 27 | 28 | ```shell 29 | gulp build --modules=sublimeBidAdapter,secondAdapter,thirdAdapter 30 | ``` 31 | 32 | More details in the root [README](../README.md#Build) 33 | 34 | ## To build from you own repository 35 | 36 | - copy `/modules/sublimeBidAdapter.js` to your `/modules/` directory 37 | - copy `/modules/sublimeBidAdapter.md` to your `/modules/` directory 38 | - copy `/test/spec/modules/sublimeBidAdapter_spec.js` to your `/test/spec/modules/` directory 39 | 40 | Then build 41 | 42 | 43 | # Invocation Parameters 44 | 45 | ```js 46 | var adUnits = [{ 47 | code: 'sublime', 48 | mediaTypes: { 49 | banner: { 50 | sizes: [1800, 1000] 51 | } 52 | }, 53 | bids: [{ 54 | bidder: 'sublime', 55 | params: { 56 | zoneId: 57 | } 58 | }] 59 | }]; 60 | ``` 61 | 62 | Where you replace `` by your Sublime Zone id 63 | -------------------------------------------------------------------------------- /modules/iqmBidAdapter.md: -------------------------------------------------------------------------------- 1 | #Overview 2 | 3 | ``` 4 | Module Name: iQM Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: hbteam@iqm.com 7 | ``` 8 | 9 | # Parameters 10 | 11 | | Name | Scope | Description | Example | 12 | | :------------ | :------- | :------------------------ | :------------------- | 13 | | `publisherId` | required | The Publisher ID from iQM | "df5fd732-c5f3-11e7" | 14 | | `tagId` | required | The tag ID from iQM | "1c5c9ec2-c5f4-11e7" | 15 | | `placementId` | required | The Placement ID from iQM | "50cc36fe-c5f4-11e7" | 16 | | `bidfloor` | optional | Bid Floor | 0.50 | 17 | 18 | # Description 19 | 20 | Module that connects to iQM demand sources 21 | 22 | # Test Parameters 23 | ``` 24 | var adUnits = [ 25 | { 26 | code: 'test-div1', 27 | sizes: [[320, 50]], // display 320x50 28 | bids: [ 29 | { 30 | bidder: 'iqm', 31 | params: { 32 | publisherId: 'df5fd732-c5f3-11e7-abc4-cec278b6b50a', 33 | tagId: '1c5c9ec2-c5f4-11e7-abc4-cec278b6b50a', 34 | placementId: '50cc36fe-c5f4-11e7-abc4-cec278b6b50a', 35 | bidfloor: 0.50, 36 | } 37 | } 38 | ] 39 | } 40 | ]; 41 | ``` 42 | -------------------------------------------------------------------------------- /modules/rhythmoneBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: RhythmOne Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: support@rhythmone.com 7 | ``` 8 | 9 | # Description 10 | 11 | This module relays Prebid bids from Rhythm Exchange, RhythmOne's ad exchange. 12 | 13 | # Test Parameters 14 | 15 | ```js 16 | const adUnits = [{ 17 | code: 'adSlot-1', 18 | mediaTypes: { 19 | banner: { 20 | sizes: [ 21 | [300, 250], 22 | [300, 600] 23 | ] 24 | } 25 | }, 26 | bids: [ 27 | { 28 | bidder: 'rhythmone', 29 | params: 30 | { 31 | placementId: '80184', // REQUIRED 32 | zone: '1r', // OPTIONAL 33 | path: 'mvo', // OPTIONAL 34 | endpoint: "//tag.1rx.io/rmp/80184/0/mvo?z=1r" // OPTIONAL, only required for testing. this api guarantees no 204 responses 35 | } 36 | } 37 | ] 38 | }, 39 | { 40 | code: 'adSlot-2', 41 | mediaTypes: { 42 | video: { 43 | context: "instream", 44 | playerSize: [640, 480] 45 | } 46 | }, 47 | bids: [ 48 | { 49 | bidder: 'rhythmone', 50 | params: 51 | { 52 | placementId: '80184', // REQUIRED 53 | zone: '1r', // OPTIONAL 54 | path: 'mvo', // OPTIONAL 55 | endpoint: "//tag.1rx.io/rmp/80184/0/mvo?z=1r" // OPTIONAL, only required for testing. this api guarantees no 204 responses 56 | } 57 | } 58 | ] 59 | }]; 60 | ``` 61 | -------------------------------------------------------------------------------- /modules/polymorphBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Polymorph Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: kuldeep@getpolymorph.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Polymorph Demand Cloud (s2s header-bidding) 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: 'test-div-1', 18 | sizes: [[300, 250]], 19 | bids: [ 20 | { 21 | bidder: "polymorph", 22 | params: { 23 | placementId: 'ping' 24 | } 25 | } 26 | ] 27 | },{ 28 | code: 'test-div-2', 29 | sizes: [[300, 250], [300,600]] 30 | bids: [ 31 | { 32 | bidder: "polymorph", 33 | params: { 34 | placementId: 'ping', 35 | // In case multiple ad sizes are supported, it's recommended to specify default height and width for native ad (in case native ad is chose as a winner). In case of banner or outstream ad any one of the above sizes can be chosen depending on the highest bid. 36 | defaultWidth: 300, 37 | defaultHeight: 600 38 | } 39 | } 40 | ] 41 | } 42 | ]; 43 | ``` -------------------------------------------------------------------------------- /src/bidfactory.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils.js'); 2 | 3 | /** 4 | Required paramaters 5 | bidderCode, 6 | height, 7 | width, 8 | statusCode 9 | Optional paramaters 10 | adId, 11 | cpm, 12 | ad, 13 | adUrl, 14 | dealId, 15 | priceKeyString; 16 | */ 17 | function Bid(statusCode, bidRequest) { 18 | var _bidSrc = (bidRequest && bidRequest.src) || 'client'; 19 | var _statusCode = statusCode || 0; 20 | 21 | this.bidderCode = (bidRequest && bidRequest.bidder) || ''; 22 | this.width = 0; 23 | this.height = 0; 24 | this.statusMessage = _getStatus(); 25 | this.adId = utils.getUniqueIdentifierStr(); 26 | this.requestId = bidRequest && bidRequest.bidId; 27 | this.mediaType = 'banner'; 28 | this.source = _bidSrc; 29 | 30 | function _getStatus() { 31 | switch (_statusCode) { 32 | case 0: 33 | return 'Pending'; 34 | case 1: 35 | return 'Bid available'; 36 | case 2: 37 | return 'Bid returned empty or error response'; 38 | case 3: 39 | return 'Bid timed out'; 40 | } 41 | } 42 | 43 | this.getStatusCode = function () { 44 | return _statusCode; 45 | }; 46 | 47 | // returns the size of the bid creative. Concatenation of width and height by ‘x’. 48 | this.getSize = function () { 49 | return this.width + 'x' + this.height; 50 | }; 51 | } 52 | 53 | // Bid factory function. 54 | export function createBid(statusCode, bidRequest) { 55 | return new Bid(statusCode, bidRequest); 56 | } 57 | -------------------------------------------------------------------------------- /test/spec/modules/digitrustIdSystem_spec.js: -------------------------------------------------------------------------------- 1 | import { 2 | digiTrustIdSubmodule, 3 | surfaceTestHook 4 | } from 'modules/digiTrustIdSystem'; 5 | 6 | let assert = require('chai').assert; 7 | let expect = require('chai').expect; 8 | 9 | var testHook = null; 10 | 11 | describe('DigiTrust Id System', function () { 12 | it('Should create the test hook', function (done) { 13 | testHook = surfaceTestHook(); 14 | assert.isNotNull(testHook, 'The test hook failed to surface'); 15 | var conf = { 16 | init: { 17 | member: 'unit_test', 18 | site: 'foo' 19 | }, 20 | callback: function (result) { 21 | } 22 | }; 23 | testHook.initDigitrustFacade(conf); 24 | window.DigiTrust.getUser(conf); 25 | expect(window.DigiTrust).to.exist; 26 | expect(window.DigiTrust.isMock).to.be.true; 27 | done(); 28 | }); 29 | 30 | it('Should report as client', function (done) { 31 | delete window.DigiTrust; 32 | testHook = surfaceTestHook(); 33 | 34 | var conf = { 35 | init: { 36 | member: 'unit_test', 37 | site: 'foo' 38 | }, 39 | callback: function (result) { 40 | expect(window.DigiTrust).to.exist; 41 | expect(result).to.exist; 42 | expect(window.DigiTrust.isMock).to.be.true; 43 | } 44 | }; 45 | testHook.initDigitrustFacade(conf); 46 | expect(window.DigiTrust).to.exist; 47 | expect(window.DigiTrust.isClient).to.be.true; 48 | done(); 49 | }); 50 | }); 51 | -------------------------------------------------------------------------------- /modules/advangelistsBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Advangelists Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: lokesh@advangelists.com 7 | ``` 8 | 9 | # Description 10 | 11 | Connects to Advangelists exchange for bids. 12 | 13 | Advangelists bid adapter supports Banner and Video ads currently. 14 | 15 | For more informatio 16 | 17 | # Sample Display Ad Unit: For Publishers 18 | ```javascript 19 | var displayAdUnit = [ 20 | { 21 | code: 'display', 22 | sizes: [ 23 | [300, 250], 24 | [320, 50] 25 | ], 26 | bids: [{ 27 | bidder: 'advangelists', 28 | params: { 29 | pubid: '0cf8d6d643e13d86a5b6374148a4afac', 30 | placement: 1234 31 | } 32 | }] 33 | }]; 34 | ``` 35 | 36 | # Sample Video Ad Unit: For Publishers 37 | ```javascript 38 | 39 | var videoAdUnit = { 40 | code: 'video', 41 | sizes: [320,480], 42 | mediaTypes: { 43 | video: { 44 | playerSize : [[320, 480]], 45 | context: 'instream' 46 | } 47 | }, 48 | bids: [ 49 | { 50 | bidder: 'advangelists', 51 | params: { 52 | pubid: '8537f00948fc37cc03c5f0f88e198a76', 53 | placement: 1234, 54 | video: { 55 | id: 123, 56 | skip: 1, 57 | mimes : ['video/mp4', 'application/javascript'], 58 | playbackmethod : [2,6], 59 | maxduration: 30 60 | } 61 | } 62 | } 63 | ] 64 | }; 65 | ``` -------------------------------------------------------------------------------- /modules/nobidBidAdapter.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: bidder 3 | title: Nobid 4 | description: Prebid Nobid Bidder Adaptor 5 | biddercode: nobid 6 | hide: true 7 | media_types: banner 8 | gdpr_supported: true 9 | --- 10 | 11 | ### Bid Params 12 | 13 | {: .table .table-bordered .table-striped } 14 | | Name | Scope | Description | Example | Type | 15 | |---------------|----------|-------------|---------|----------| 16 | | `siteId` | required | siteId is provided by your Nobid account manager | | `integer` | 17 | 18 | # Test Parameters 19 | ``` 20 | var adUnits = [ 21 | { 22 | code: 'test-div', 23 | mediaTypes: { 24 | banner: { 25 | sizes: [[300, 250]], // a display size 26 | } 27 | }, 28 | bids: [ 29 | { 30 | bidder: "nobid", 31 | params: { 32 | siteId: 2 33 | } 34 | } 35 | ] 36 | },{ 37 | code: 'test-div', 38 | mediaTypes: { 39 | banner: { 40 | sizes: [[320, 50]], // a mobile size 41 | } 42 | }, 43 | bids: [ 44 | { 45 | bidder: "nobid", 46 | params: { 47 | siteId: 2 48 | } 49 | } 50 | ] 51 | } 52 | ]; 53 | ``` -------------------------------------------------------------------------------- /modules/yieldlabBidAdapter.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | ``` 4 | Module Name: Yieldlab Bidder Adapter 5 | Module Type: Bidder Adapter 6 | Maintainer: solutions@yieldlab.de 7 | ``` 8 | 9 | # Description 10 | 11 | Module that connects to Yieldlab's demand sources 12 | 13 | # Test Parameters 14 | ``` 15 | var adUnits = [ 16 | { 17 | code: "banner", 18 | sizes: [[728, 90]], 19 | bids: [{ 20 | bidder: "yieldlab", 21 | params: { 22 | adslotId: "5220336", 23 | supplyId: "1381604", 24 | adSize: "728x90", 25 | targeting: { 26 | key1: "value1", 27 | key2: "value2" 28 | }, 29 | extId: "abc" 30 | } 31 | }] 32 | }, { 33 | code: "video", 34 | sizes: [[640, 480]], 35 | mediaTypes: { 36 | video: { 37 | context: "instream" // or "outstream" 38 | } 39 | }, 40 | bids: [{ 41 | bidder: "yieldlab", 42 | params: { 43 | adslotId: "5220339", 44 | supplyId: "1381604", 45 | adSize: "640x480" 46 | } 47 | }] 48 | } 49 | ]; 50 | ``` 51 | --------------------------------------------------------------------------------