diff --git a/modules/startioBidAdapter.js b/modules/startioBidAdapter.js index e5a24ea0861..55699cb0924 100644 --- a/modules/startioBidAdapter.js +++ b/modules/startioBidAdapter.js @@ -51,6 +51,11 @@ const converter = ortbConverter({ request.regs.ext.us_privacy = bidderRequest.uspConsent; } + const startioEid = request.user?.ext?.eids?.find(eid => eid.source === 'start.io'); + if (startioEid?.uids?.[0]?.id) { + request.user.buyeruid = startioEid.uids[0].id; + } + request.bcat = ortb?.bcat || bidParams?.bcat; request.badv = ortb?.badv || bidParams?.badv; request.bapp = ortb?.bapp || bidParams?.bapp; diff --git a/modules/startioBidAdapter.md b/modules/startioBidAdapter.md index b727acd3195..1030999868f 100644 --- a/modules/startioBidAdapter.md +++ b/modules/startioBidAdapter.md @@ -10,6 +10,14 @@ Maintainer: prebid@start.io The Start.io Bid Adapter enables publishers to integrate with Start.io's demand sources for banner, video and native ad formats. The adapter supports OpenRTB standards and processes bid requests efficiently using the Prebid.js framework. +# Build + +To build Prebid.js with the Start.io User ID submodule and bid adapter, include the following modules: + +```bash +gulp build --modules=startioBidAdapter,userId,startioIdSystem,consentManagementTcf,consentManagementGpp,consentManagementUsp,... +``` + # Test Parameters ``` var adUnits = [ diff --git a/test/spec/modules/startioBidAdapter_spec.js b/test/spec/modules/startioBidAdapter_spec.js index 1541007cc74..59de4368485 100644 --- a/test/spec/modules/startioBidAdapter_spec.js +++ b/test/spec/modules/startioBidAdapter_spec.js @@ -259,6 +259,41 @@ describe('Prebid Adapter: Startio', function () { expect(request.regs.coppa).to.equal(1); }); + it('should set buyeruid from start.io eid', function () { + let bidderRequest = deepClone(DEFAULT_BIDDER_REQUEST); + bidderRequest.ortb2 = { + user: { + ext: { + eids: [ + { source: 'start.io', uids: [{ id: 'test-startio-id', atype: 1 }] } + ] + } + } + }; + + const request = spec.buildRequests([DEFAULT_REQUEST_DATA], bidderRequest)[0].data; + + expect(request.user).to.exist; + expect(request.user.buyeruid).to.equal('test-startio-id'); + }); + + it('should not set buyeruid when start.io eid is absent', function () { + let bidderRequest = deepClone(DEFAULT_BIDDER_REQUEST); + bidderRequest.ortb2 = { + user: { + ext: { + eids: [ + { source: 'other.com', uids: [{ id: 'other-id', atype: 1 }] } + ] + } + } + }; + + const request = spec.buildRequests([DEFAULT_REQUEST_DATA], bidderRequest)[0].data; + + expect(request.user?.buyeruid).to.not.exist; + }); + it('should provide blocked parameters', function () { let bidRequest = deepClone(DEFAULT_REQUEST_DATA); let bidderRequest = deepClone(DEFAULT_BIDDER_REQUEST);