diff --git a/modules/tripleliftBidAdapter.js b/modules/tripleliftBidAdapter.js index a68bef5584c..a4aeedd0cfc 100644 --- a/modules/tripleliftBidAdapter.js +++ b/modules/tripleliftBidAdapter.js @@ -79,9 +79,26 @@ export const tripleliftAdapterSpec = { interpretResponse: function(serverResponse, {bidderRequest}) { let bids = serverResponse.body.bids || []; - return bids.map(function(bid) { - return _buildResponseObject(bidderRequest, bid); - }); + const paapi = serverResponse.body.paapi || []; + + bids = bids.map(bid => _buildResponseObject(bidderRequest, bid)); + + if (paapi.length > 0) { + const fledgeAuctionConfigs = paapi.map(config => { + return { + bidId: bidderRequest.bids[config.imp_id].bidId, + config: config.auctionConfig + }; + }); + + logMessage('Response with FLEDGE:', { bids, fledgeAuctionConfigs }); + return { + bids, + fledgeAuctionConfigs + }; + } else { + return bids; + } }, getUserSyncs: function(syncOptions, responses, gdprConsent, usPrivacy, gppConsent) { diff --git a/test/spec/modules/tripleliftBidAdapter_spec.js b/test/spec/modules/tripleliftBidAdapter_spec.js index 3874e1f9328..275b9b3bfee 100644 --- a/test/spec/modules/tripleliftBidAdapter_spec.js +++ b/test/spec/modules/tripleliftBidAdapter_spec.js @@ -1548,6 +1548,57 @@ describe('triplelift adapter', function () { expect(result[2].meta.networkId).to.equal('5989'); expect(result[3].meta.networkId).to.equal('5989'); }); + + it('should return fledgeAuctionConfigs if PAAPI response is received', function() { + response.body.paapi = [ + { + imp_id: '0', + auctionConfig: { + seller: 'https://3lift.com', + decisionLogicUrl: 'https://3lift.com/decision_logic.js', + interestGroupBuyers: ['https://some_buyer.com'], + perBuyerSignals: { + 'https://some_buyer.com': { a: 1 } + } + } + }, + { + imp_id: '2', + auctionConfig: { + seller: 'https://3lift.com', + decisionLogicUrl: 'https://3lift.com/decision_logic.js', + interestGroupBuyers: ['https://some_other_buyer.com'], + perBuyerSignals: { + 'https://some_other_buyer.com': { b: 2 } + } + } + } + ]; + + let result = tripleliftAdapterSpec.interpretResponse(response, {bidderRequest}); + + expect(result).to.have.property('bids'); + expect(result).to.have.property('fledgeAuctionConfigs'); + expect(result.fledgeAuctionConfigs.length).to.equal(2); + expect(result.fledgeAuctionConfigs[0].bidId).to.equal('30b31c1838de1e'); + expect(result.fledgeAuctionConfigs[1].bidId).to.equal('73edc0ba8de203'); + expect(result.fledgeAuctionConfigs[0].config).to.deep.equal( + { + 'seller': 'https://3lift.com', + 'decisionLogicUrl': 'https://3lift.com/decision_logic.js', + 'interestGroupBuyers': ['https://some_buyer.com'], + 'perBuyerSignals': { 'https://some_buyer.com': { 'a': 1 } } + } + ); + expect(result.fledgeAuctionConfigs[1].config).to.deep.equal( + { + 'seller': 'https://3lift.com', + 'decisionLogicUrl': 'https://3lift.com/decision_logic.js', + 'interestGroupBuyers': ['https://some_other_buyer.com'], + 'perBuyerSignals': { 'https://some_other_buyer.com': { 'b': 2 } } + } + ); + }); }); describe('getUserSyncs', function() {