Skip to content

Commit f1ea594

Browse files
authored
Convert id5id to an object to support passing additional data points to platforms (#5756)
* move id5id to an object to support passing linkType and other data in the future * update bid adapters supporting the ID5 ID to use the new object instead of a string * remove `.only` from test
1 parent 3612308 commit f1ea594

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+172
-79
lines changed

modules/adheseBidAdapter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ function getAccount(validBidRequests) {
150150
}
151151

152152
function getId5Id(validBidRequests) {
153-
if (validBidRequests[0] && validBidRequests[0].userId && validBidRequests[0].userId.id5id) {
154-
return validBidRequests[0].userId.id5id;
153+
if (validBidRequests[0] && validBidRequests[0].userId && validBidRequests[0].userId.id5id && validBidRequests[0].userId.id5id.uid) {
154+
return validBidRequests[0].userId.id5id.uid;
155155
}
156156
}
157157

modules/adxcgBidAdapter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ export const spec = {
170170
beaconParams.tdid = validBidRequests[0].userId.tdid;
171171
}
172172

173-
if (utils.isStr(utils.deepAccess(validBidRequests, '0.userId.id5id'))) {
174-
beaconParams.id5id = validBidRequests[0].userId.id5id;
173+
if (utils.isStr(utils.deepAccess(validBidRequests, '0.userId.id5id.uid'))) {
174+
beaconParams.id5id = validBidRequests[0].userId.id5id.uid;
175175
}
176176

177177
if (utils.isStr(utils.deepAccess(validBidRequests, '0.userId.idl_env'))) {

modules/avocetBidAdapter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ export const spec = {
7777

7878
// ID5 identifier
7979
let id5id;
80-
if (bidRequests[0].userId && bidRequests[0].userId.id5id) {
81-
id5id = bidRequests[0].userId.id5id;
80+
if (bidRequests[0].userId && bidRequests[0].userId.id5id && bidRequests[0].userId.id5id.uid) {
81+
id5id = bidRequests[0].userId.id5id.uid;
8282
}
8383

8484
// Build the avocet ext object

modules/colossussspBidAdapter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export const spec = {
102102
if (bid.userId) {
103103
getUserId(placement.eids, bid.userId.britepoolid, 'britepool.com');
104104
getUserId(placement.eids, bid.userId.idl_env, 'identityLink');
105-
getUserId(placement.eids, bid.userId.id5id, 'id5-sync.com')
105+
getUserId(placement.eids, utils.deepAccess(bid, 'userId.id5id.uid'), 'id5-sync.com', utils.deepAccess(bid, 'userId.id5id.ext'));
106106
getUserId(placement.eids, bid.userId.tdid, 'adserver.org', {
107107
rtiPartner: 'TDID'
108108
});

modules/districtmDMXBidAdapter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export const spec = {
106106
let eids = [];
107107
if (bidRequest[0] && bidRequest[0].userId) {
108108
bindUserId(eids, utils.deepAccess(bidRequest[0], `userId.idl_env`), 'liveramp.com', 1);
109-
bindUserId(eids, utils.deepAccess(bidRequest[0], `userId.id5id`), 'id5-sync.com', 1);
109+
bindUserId(eids, utils.deepAccess(bidRequest[0], `userId.id5id.uid`), 'id5-sync.com', 1);
110110
bindUserId(eids, utils.deepAccess(bidRequest[0], `userId.pubcid`), 'pubcid.org', 1);
111111
bindUserId(eids, utils.deepAccess(bidRequest[0], `userId.tdid`), 'adserver.org', 1);
112112
bindUserId(eids, utils.deepAccess(bidRequest[0], `userId.criteoId`), 'criteo.com', 1);

modules/gamoshiBidAdapter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export const spec = {
157157

158158
let eids = [];
159159
if (bidRequest && bidRequest.userId) {
160-
addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.id5id`), 'id5-sync.com', 'ID5ID');
160+
addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.id5id.uid`), 'id5-sync.com', 'ID5ID');
161161
addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.tdid`), 'adserver.org', 'TDID');
162162
}
163163
if (eids.length > 0) {

modules/gridBidAdapter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,8 @@ function buildNewRequest(validBidRequests, bidderRequest) {
431431
if (userId.tdid) {
432432
userExt.unifiedid = userId.tdid;
433433
}
434-
if (userId.id5id) {
435-
userExt.id5id = userId.id5id;
434+
if (userId.id5id && userId.id5id.uid) {
435+
userExt.id5id = userId.id5id.uid;
436436
}
437437
if (userId.digitrustid && userId.digitrustid.data && userId.digitrustid.data.id) {
438438
userExt.digitrustid = userId.digitrustid.data.id;

modules/id5IdSystem.js

+15-2
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,27 @@ export const id5IdSubmodule = {
3939
* @returns {(Object|undefined)}
4040
*/
4141
decode(value) {
42+
let uid;
43+
let linkType = 0;
44+
4245
if (value && typeof value.ID5ID === 'string') {
4346
// don't lose our legacy value from cache
44-
return { 'id5id': value.ID5ID };
47+
uid = value.ID5ID;
4548
} else if (value && typeof value.universal_uid === 'string') {
46-
return { 'id5id': value.universal_uid };
49+
uid = value.universal_uid;
50+
linkType = value.link_type || linkType;
4751
} else {
4852
return undefined;
4953
}
54+
55+
return {
56+
'id5id': {
57+
'uid': uid,
58+
'ext': {
59+
'linkType': linkType
60+
}
61+
}
62+
};
5063
},
5164

5265
/**

modules/livewrappedBidAdapter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ function handleEids(bidRequests) {
277277
const bidRequest = bidRequests[0];
278278
if (bidRequest && bidRequest.userId) {
279279
AddExternalUserId(eids, utils.deepAccess(bidRequest, `userId.pubcid`), 'pubcommon', 1); // Also add this to eids
280-
AddExternalUserId(eids, utils.deepAccess(bidRequest, `userId.id5id`), 'id5-sync.com', 1);
280+
AddExternalUserId(eids, utils.deepAccess(bidRequest, `userId.id5id.uid`), 'id5-sync.com', 1);
281281
}
282282
if (eids.length > 0) {
283283
return {user: {ext: {eids}}};

modules/openxBidAdapter.js

+3
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ function appendUserIdsToQueryParams(queryParams, userIds) {
281281
case 'parrableId':
282282
queryParams[key] = userIdObjectOrValue.eid;
283283
break;
284+
case 'id5id':
285+
queryParams[key] = userIdObjectOrValue.uid;
286+
break;
284287
default:
285288
queryParams[key] = userIdObjectOrValue;
286289
}

modules/ozoneBidAdapter.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ export const spec = {
539539
*/
540540
findAllUserIds(bidRequest) {
541541
var ret = {};
542-
let searchKeysSingle = ['pubcid', 'tdid', 'id5id', 'parrableId', 'idl_env', 'digitrustid', 'criteortus'];
542+
let searchKeysSingle = ['pubcid', 'tdid', 'parrableId', 'idl_env', 'digitrustid', 'criteortus'];
543543
if (bidRequest.hasOwnProperty('userId')) {
544544
for (let arrayId in searchKeysSingle) {
545545
let key = searchKeysSingle[arrayId];
@@ -551,6 +551,10 @@ export const spec = {
551551
if (lipbid) {
552552
ret['lipb'] = {'lipbid': lipbid};
553553
}
554+
var id5id = utils.deepAccess(bidRequest.userId, 'id5id.uid');
555+
if (id5id) {
556+
ret['id5id'] = id5id;
557+
}
554558
}
555559
if (!ret.hasOwnProperty('pubcid')) {
556560
var pubcid = utils.deepAccess(bidRequest, 'crumbs.pubcid');
@@ -675,7 +679,7 @@ export const spec = {
675679
if (bidRequest && bidRequest.userId) {
676680
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.pubcid`), 'pubcid', 1);
677681
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.pubcid`), 'pubcommon', 1);
678-
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.id5id`), 'id5-sync.com', 1);
682+
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.id5id.uid`), 'id5-sync.com', 1);
679683
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.criteortus.${BIDDER_CODE}.userid`), 'criteortus', 1);
680684
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.idl_env`), 'liveramp.com', 1);
681685
this.addExternalUserId(eids, utils.deepAccess(bidRequest, `userId.lipb.lipbid`), 'liveintent.com', 1);

modules/pulsepointBidAdapter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ function user(bidRequest, bidderRequest) {
420420
addExternalUserId(ext.eids, bidRequest.userId.britepoolid, 'britepool.com');
421421
addExternalUserId(ext.eids, bidRequest.userId.criteoId, 'criteo');
422422
addExternalUserId(ext.eids, bidRequest.userId.idl_env, 'identityLink');
423-
addExternalUserId(ext.eids, bidRequest.userId.id5id, 'id5-sync.com');
423+
addExternalUserId(ext.eids, utils.deepAccess(bidRequest, 'userId.id5id.uid'), 'id5-sync.com', utils.deepAccess(bidRequest, 'userId.id5id.ext'));
424424
addExternalUserId(ext.eids, utils.deepAccess(bidRequest, 'userId.parrableId.eid'), 'parrable.com');
425425
// liveintent
426426
if (bidRequest.userId.lipb && bidRequest.userId.lipb.lipbid) {

modules/richaudienceBidAdapter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ function raiSetEids(bid) {
201201
let eids = [];
202202

203203
if (bid && bid.userId) {
204-
raiSetUserId(bid, eids, 'id5-sync.com', utils.deepAccess(bid, `userId.id5id`));
204+
raiSetUserId(bid, eids, 'id5-sync.com', utils.deepAccess(bid, `userId.id5id.uid`));
205205
raiSetUserId(bid, eids, 'pubcommon', utils.deepAccess(bid, `userId.pubcid`));
206206
raiSetUserId(bid, eids, 'criteo.com', utils.deepAccess(bid, `userId.criteoId`));
207207
raiSetUserId(bid, eids, 'liveramp.com', utils.deepAccess(bid, `userId.idl_env`));

modules/spotxBidAdapter.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -228,14 +228,15 @@ export const spec = {
228228
}
229229

230230
// ID5 fied
231-
if (bid && bid.userId && bid.userId.id5id) {
231+
if (utils.deepAccess(bid, 'userId.id5id.uid')) {
232232
userExt.eids = userExt.eids || [];
233233
userExt.eids.push(
234234
{
235235
source: 'id5-sync.com',
236236
uids: [{
237-
id: bid.userId.id5id
238-
}]
237+
id: bid.userId.id5id.uid
238+
}],
239+
ext: bid.userId.id5id.ext || {}
239240
}
240241
)
241242
}

modules/userId/eids.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,16 @@ const USER_IDS_CONFIG = {
3030

3131
// id5Id
3232
'id5id': {
33+
getValue: function(data) {
34+
return data.uid
35+
},
3336
source: 'id5-sync.com',
34-
atype: 1
37+
atype: 1,
38+
getEidExt: function(data) {
39+
if (data.ext) {
40+
return data.ext;
41+
}
42+
}
3543
},
3644

3745
// parrableId

modules/vidazooBidAdapter.js

+3
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ function appendUserIdsToRequestPayload(payloadRef, userIds) {
117117
case 'parrableId':
118118
payloadRef[key] = userId.eid;
119119
break;
120+
case 'id5id':
121+
payloadRef[key] = userId.uid;
122+
break;
120123
default:
121124
payloadRef[key] = userId;
122125
}

modules/visxBidAdapter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ export const spec = {
100100
if (payloadUserId.tdid) {
101101
payload.tdid = payloadUserId.tdid;
102102
}
103-
if (payloadUserId.id5id) {
104-
payload.id5 = payloadUserId.id5id;
103+
if (payloadUserId.id5id && payloadUserId.id5id.uid) {
104+
payload.id5 = payloadUserId.id5id.uid;
105105
}
106106
if (payloadUserId.digitrustid && payloadUserId.digitrustid.data && payloadUserId.digitrustid.data.id) {
107107
payload.dtid = payloadUserId.digitrustid.data.id;

test/spec/modules/adheseBidAdapter_spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ describe('AdheseAdapter', function () {
116116
});
117117

118118
it('should include id5 id as /x5 param', function () {
119-
let req = spec.buildRequests([ bidWithParams({}, { 'id5id': 'ID5-1234567890' }) ], bidderRequest);
119+
let req = spec.buildRequests([ bidWithParams({}, { 'id5id': { 'uid': 'ID5-1234567890' } }) ], bidderRequest);
120120

121121
expect(JSON.parse(req.data).parameters).to.deep.include({ 'x5': [ 'ID5-1234567890' ] });
122122
});

test/spec/modules/adxcgBidAdapter_spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ describe('AdxcgAdapter', function () {
281281
let bid = deepClone([bidBanner]);
282282
let bidderRequests = {};
283283

284-
bid[0].userId = {id5id: 'id5idsample'};
284+
bid[0].userId = {id5id: {uid: 'id5idsample'}};
285285

286286
it('should send pubcid if available', function () {
287287
let request = spec.buildRequests(bid, bidderRequests);

test/spec/modules/amxBidAdapter_spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ describe('AmxBidAdapter', () => {
224224
britepoolid: 'sample-britepool',
225225
criteoId: 'sample-criteo',
226226
digitrustid: {data: {id: 'sample-digitrust'}},
227-
id5id: 'sample-id5',
227+
id5id: {uid: 'sample-id5'},
228228
idl_env: 'sample-liveramp',
229229
lipb: {lipbid: 'sample-liveintent'},
230230
netId: 'sample-netid',

test/spec/modules/avocetBidAdapter_spec.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ describe('Avocet adapter', function () {
6969
placement: '012345678901234567890123',
7070
},
7171
userId: {
72-
id5id: 'test'
72+
id5id: {
73+
uid: 'test'
74+
}
7375
}
7476
},
7577
{

test/spec/modules/colossussspBidAdapter_spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ describe('ColossussspAdapter', function () {
108108
bid.userId.britepoolid = 'britepoolid123';
109109
bid.userId.idl_env = 'idl_env123';
110110
bid.userId.tdid = 'tdid123';
111-
bid.userId.id5id = 'id5id123'
111+
bid.userId.id5id = { uid: 'id5id123' };
112112
let serverRequest = spec.buildRequests([bid], bidderRequest);
113113
it('Returns valid data if array of bids is valid', function () {
114114
let data = serverRequest.data;

test/spec/modules/districtmDmxBidAdapter_spec.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ const bidRequest = [{
103103
id: {}
104104
}
105105
},
106-
id5id: {},
106+
id5id: {
107+
uid: ''
108+
},
107109
pubcid: {},
108110
tdid: {},
109111
criteoId: {},

test/spec/modules/eids_spec.js

+33-9
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,39 @@ describe('eids array generation for known sub-modules', function() {
2929
});
3030
});
3131

32-
it('id5Id', function() {
33-
const userId = {
34-
id5id: 'some-random-id-value'
35-
};
36-
const newEids = createEidsArray(userId);
37-
expect(newEids.length).to.equal(1);
38-
expect(newEids[0]).to.deep.equal({
39-
source: 'id5-sync.com',
40-
uids: [{id: 'some-random-id-value', atype: 1}]
32+
describe('id5Id', function() {
33+
it('does not include an ext if not provided', function() {
34+
const userId = {
35+
id5id: {
36+
uid: 'some-random-id-value'
37+
}
38+
};
39+
const newEids = createEidsArray(userId);
40+
expect(newEids.length).to.equal(1);
41+
expect(newEids[0]).to.deep.equal({
42+
source: 'id5-sync.com',
43+
uids: [{ id: 'some-random-id-value', atype: 1 }]
44+
});
45+
});
46+
47+
it('includes ext if provided', function() {
48+
const userId = {
49+
id5id: {
50+
uid: 'some-random-id-value',
51+
ext: {
52+
linkType: 0
53+
}
54+
}
55+
};
56+
const newEids = createEidsArray(userId);
57+
expect(newEids.length).to.equal(1);
58+
expect(newEids[0]).to.deep.equal({
59+
source: 'id5-sync.com',
60+
uids: [{ id: 'some-random-id-value', atype: 1 }],
61+
ext: {
62+
linkType: 0
63+
}
64+
});
4165
});
4266
});
4367

test/spec/modules/gamoshiBidAdapter_spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ describe('GamoshiAdapter', () => {
423423
it('build request with ID5 Id', () => {
424424
const bidRequestClone = utils.deepClone(bidRequest);
425425
bidRequestClone.userId = {};
426-
bidRequestClone.userId.id5id = 'id5-user-id';
426+
bidRequestClone.userId.id5id = { uid: 'id5-user-id' };
427427
let request = spec.buildRequests([bidRequestClone], bidRequestClone)[0];
428428
expect(request.data.user.ext.eids).to.deep.equal([{
429429
'source': 'id5-sync.com',

test/spec/modules/gridBidAdapter_spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ describe('TheMediaGrid Adapter', function () {
536536
const bidRequestsWithUserIds = bidRequests.map((bid) => {
537537
return Object.assign({
538538
userId: {
539-
id5id: 'id5id_1',
539+
id5id: { uid: 'id5id_1' },
540540
tdid: 'tdid_1',
541541
digitrustid: {data: {id: 'DTID', keyv: 4, privacy: {optout: false}, producer: 'ABC', version: 2}},
542542
lipb: {lipbid: 'lipb_1'}

0 commit comments

Comments
 (0)