From af989a7ba6b62d71de618cf7c000b9606726cbee Mon Sep 17 00:00:00 2001 From: 3link <34981284+3link@users.noreply.github.com> Date: Fri, 3 May 2024 09:37:31 +0200 Subject: [PATCH 1/3] fpid --- .../modules/userid-submodules/liveintent.md | 135 ++++++++++++------ 1 file changed, 95 insertions(+), 40 deletions(-) diff --git a/dev-docs/modules/userid-submodules/liveintent.md b/dev-docs/modules/userid-submodules/liveintent.md index 882209903c..1dda3626b7 100644 --- a/dev-docs/modules/userid-submodules/liveintent.md +++ b/dev-docs/modules/userid-submodules/liveintent.md @@ -31,8 +31,8 @@ This is an example of how the `request.userId.lipb` object, which contains the r ```json { -  "lipbid": "T7JiRRvsRAmh88", -  "pubmatic": "9E76F017-86D2-444B-BB4B-9DB35347DB54" + "lipbid": "T7JiRRvsRAmh88", + "pubmatic": "9E76F017-86D2-444B-BB4B-9DB35347DB54" } ``` @@ -63,46 +63,91 @@ For example, the configuration below requests the `nonID` as well as `uid2`, the ```javascript pbjs.setConfig({ -  userSync: { -    userIds: [{ -      name: "liveIntentId", -      params: { -        publisherId: "12432415", -        requestedAttributesOverrides: { -          uid2: true, -          medianet: true, -          bidswitch: true, -          magnite: true -        } -      } -    }] -  } + userSync: { + userIds: [{ + name: "liveIntentId", + params: { + publisherId: "12432415", + requestedAttributesOverrides: { + uid2: true, + medianet: true, + bidswitch: true, + magnite: true + } + } + }] + } }); ``` ### Multiple user IDs -The attributes `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk` are treated specially by LiveIntent's user ID sub-module. Each of these attributes will result in a separate ID returned by the sub-module. +The attributes `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` and `fpid` are treated specially by LiveIntent's user ID sub-module. Each of these attributes will result in a separate ID returned by the sub-module. Note: `thetradedesk` will be exposed as `tdid` because of historical reasons. For example, in case `uid2` is configured to be requested in addition to the `nonID`, the `request.userId` object would look like the following: ```javascript { -  // ... -  "lipb" : { -    "lipbid": "sample-nonid-value", -    "uid2" : "sample-uid2-value" -  }, -  "uid2" : { -    "id" : "sample-uid2-value" -  } -  //... + // ... + "lipb" : { + "lipbid": "sample-nonid-value", + "uid2" : "sample-uid2-value" + }, + "uid2" : { + "id" : "sample-uid2-value" + } + //... } ``` -NOTE: `uid2` is exposed as part of `lipb` as well as separately as `uid2`. `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk` behave the same way. +NOTE: `uid2` is exposed as part of `lipb` as well as separately as `uid2`. `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` (as `tdid`) and `fpid` behave the same way. + +For the attributes `lipbid` (nonID), `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` (`tdid`) and `fpid` there is also support for their conversion into OpenRTB EIDS format. Please refer to [User ID Module](../userId.md) documentation for more information on conversion, and [Example of eids array generated by UserId Module](https://github.com/prebid/Prebid.js/blob/master/modules/userId/eids.md) for output format examples. -For the attributes `lipbid` (nonID), `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk`, there is also support for their conversion into OpenRTB EIDS format. Please refer to [User ID Module](../userId.md) documentation for more information on conversion, and [Example of eids array generated by UserId Module](https://github.com/prebid/Prebid.js/blob/master/modules/userId/eids.md) for output format examples. +### FPID + +The `fpid` is a first party identifier that can be exposed through the liveconnect user ID module. In order to use this functionality tell the module which identifier you want to use as a `fpid` in the config params: + +```javascript +{ + "params": { + "fpid": { + "strategy": "cookie", // "cookie" | "html5" -- Where the identifier should be read from + "name": "foobar" // key in the chosen storage backend + } + } +} +``` + +Additionally, add it to the requested attributes: + +```javascript +{ + //... + "params": { + "fpid": { + "strategy": "cookie", + "name": "foobar" + }, + "requestedAttributesOverrides": {'fpid': true} + } + //... +} +``` + +The user id result will contain both the `fpid` directly in the `lipb` object and separately: + +```javascript +{"lipb":{"fpid":"foobar"},"fpid":{"id":"foobar"}} +``` + +The same applies for the eids: + +```javascript +[{"source":"fpid.liveintent.com","uids":[{"id":"foobar","atype":1}]}] +``` + +NOTE: If COPPA applies, LiveIntent’s user ID module will not return the `fpid`. ### Request uid2 @@ -112,15 +157,15 @@ Enabling this option in addition to the `uid2` module is an easy way to increase ```javascript pbjs.setConfig({ -  userSync: { -    userIds: [{ -    name: "liveIntentId", -      params: { -        publisherId: "12432415", -        requestedAttributesOverrides: { uid2: true } -      } -    }] -  } + userSync: { + userIds: [{ + name: "liveIntentId", + params: { + publisherId: "12432415", + requestedAttributesOverrides: { uid2: true } + } + }] + } }); ``` @@ -139,7 +184,7 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at | params.ajaxTimeout |Optional| Number |This configuration parameter defines the maximum duration of a call to the `IdentityResolution` endpoint. By default, 5000 milliseconds.|`5000`| | params.partner | Optional| String |The name of the partner whose data will be returned in the response.|`prebid`| | params.identifiersToResolve |Optional| Array[String] |Used to send additional identifiers in the request for LiveIntent to resolve against the LiveIntent ID and additional attributes.|`['my-id']`| -| params.requestedAttributesOverrides | Optional | Object | Object containing booleans used to override the default resolution. Attributes set to `true` will be added to the resolved list, while attributes set to `false` will be removed. Valid attributes are `nonId`, `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index` and `thetradedesk`. | `{'uid2': true}` | +| params.requestedAttributesOverrides | Optional | Object | Object containing booleans used to override the default resolution. Attributes set to `true` will be added to the resolved list, while attributes set to `false` will be removed. Valid attributes are `nonId`, `uid2`, `medianet`, `magnite`, `bidswitch`, `pubmatic`, `openx`, `sovrn`, `index`, `thetradedesk` (`tdid`) and `fpid`. | `{'uid2': true}` | | params.emailHash |Optional| String |The hashed email address of a user. We can accept the hashes, which use the following hashing algorithms: md5, sha1, sha2.|`1a79a4d60de6718e8e5b326e338ae533`| | params.url | Optional| String |Use this to change the default endpoint URL if you can call the LiveIntent Identity Exchange within your own domain.|`https://idx.my-domain.com`| | params.liCollectConfig |Optional| Object |Container of all collector params.|| @@ -148,6 +193,12 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at | params.liCollectConfig.fpiExpirationDays |Optional| Number |The expiration time of an identifier created and updated by LiveConnect. By default, 730 days.|`729`| | params.liCollectConfig.collectorUrl |Optional| String |The parameter defines where the signal pixels are pointing to. The params and paths will be defined subsequently. If the parameter is not set, LiveConnect will by default emit the signal towards `https://rp.liadm.com`.| `https://rp.liadm.com`| | params.liCollectConfig.appId |Optional| String |LiveIntent's media business entity application ID.|`a-0012`| +| params.fpid.name | Optional | String | The parameter is cookie/localstorage key name | `'__super_duper_cookie'`| +| params.fpid.strategy | Optional | String | The parameter defines where to get the identifier from. Either from the cookie jar, `'cookie'`, or from the local storage, `'html5'`. | `'html5'`| +| storage | Required | Object | This object defines where and for how long the results of the call to get a user ID will be stored. | | +| storage.type | Required | String | This parameter defines where the resolved user ID will be stored (either `'cookie'` or `'html5'` localstorage).| `'cookie'` | +| storage.name | Required | String | The name of the cookie or html5 localstorage where the resolved user ID will be stored. | `'pbjs_li_nonid'` | +| storage.expires | Recommended | Integer | How long (in days) the user ID information will be stored. The recommended value is `1` | `1` | ## LiveIntent ID examples @@ -156,7 +207,7 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at ```javascript pbjs.setConfig({ userSync: { -    userIds: [{ + userIds: [{ name: "liveIntentId", params: { publisherId: "9896876" @@ -202,6 +253,10 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at fpiExpirationDays: 730, collectorUrl: "https://rp.liadm.com", appId: "a-0012" + }, + fpid: { + strategy: "cookie" + name: "foobar" } } }] @@ -209,4 +264,4 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at }); ``` -Please note: the `distributorId` will be ignored when `liCollectConfig.appId` is present. +Please note: the `distributorId` will be ignored when `liCollectConfig.appId` is present. \ No newline at end of file From 9bd778ce2bc24786e87079cd25641a5cdbf3fbab Mon Sep 17 00:00:00 2001 From: 3link <34981284+3link@users.noreply.github.com> Date: Fri, 3 May 2024 09:42:08 +0200 Subject: [PATCH 2/3] Revert superfluous changes --- .../modules/userid-submodules/liveintent.md | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/dev-docs/modules/userid-submodules/liveintent.md b/dev-docs/modules/userid-submodules/liveintent.md index 1dda3626b7..419f52cdf5 100644 --- a/dev-docs/modules/userid-submodules/liveintent.md +++ b/dev-docs/modules/userid-submodules/liveintent.md @@ -31,8 +31,8 @@ This is an example of how the `request.userId.lipb` object, which contains the r ```json { - "lipbid": "T7JiRRvsRAmh88", - "pubmatic": "9E76F017-86D2-444B-BB4B-9DB35347DB54" +  "lipbid": "T7JiRRvsRAmh88", +  "pubmatic": "9E76F017-86D2-444B-BB4B-9DB35347DB54" } ``` @@ -63,20 +63,20 @@ For example, the configuration below requests the `nonID` as well as `uid2`, the ```javascript pbjs.setConfig({ - userSync: { - userIds: [{ - name: "liveIntentId", - params: { - publisherId: "12432415", - requestedAttributesOverrides: { - uid2: true, - medianet: true, - bidswitch: true, - magnite: true - } - } - }] - } +  userSync: { +    userIds: [{ +      name: "liveIntentId", +      params: { +        publisherId: "12432415", +        requestedAttributesOverrides: { +          uid2: true, +          medianet: true, +          bidswitch: true, +          magnite: true +        } +      } +    }] +  } }); ``` @@ -88,15 +88,15 @@ For example, in case `uid2` is configured to be requested in addition to the `no ```javascript { - // ... - "lipb" : { - "lipbid": "sample-nonid-value", - "uid2" : "sample-uid2-value" - }, - "uid2" : { - "id" : "sample-uid2-value" - } - //... +  // ... +  "lipb" : { +    "lipbid": "sample-nonid-value", +    "uid2" : "sample-uid2-value" +  }, +  "uid2" : { +    "id" : "sample-uid2-value" +  } +  //... } ``` @@ -157,15 +157,15 @@ Enabling this option in addition to the `uid2` module is an easy way to increase ```javascript pbjs.setConfig({ - userSync: { - userIds: [{ - name: "liveIntentId", - params: { - publisherId: "12432415", - requestedAttributesOverrides: { uid2: true } - } - }] - } +  userSync: { +    userIds: [{ +    name: "liveIntentId", +      params: { +        publisherId: "12432415", +        requestedAttributesOverrides: { uid2: true } +      } +    }] +  } }); ``` @@ -207,7 +207,7 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at ```javascript pbjs.setConfig({ userSync: { - userIds: [{ +    userIds: [{ name: "liveIntentId", params: { publisherId: "9896876" From b0dd9b0b658732f6ea1ed25271c7493d6c628f01 Mon Sep 17 00:00:00 2001 From: 3link <34981284+3link@users.noreply.github.com> Date: Fri, 3 May 2024 09:43:32 +0200 Subject: [PATCH 3/3] Add newline --- dev-docs/modules/userid-submodules/liveintent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/userid-submodules/liveintent.md b/dev-docs/modules/userid-submodules/liveintent.md index 419f52cdf5..934fc5dca0 100644 --- a/dev-docs/modules/userid-submodules/liveintent.md +++ b/dev-docs/modules/userid-submodules/liveintent.md @@ -264,4 +264,4 @@ NOTE: For optimal performance, the LiveIntent ID sub-module should be called at }); ``` -Please note: the `distributorId` will be ignored when `liCollectConfig.appId` is present. \ No newline at end of file +Please note: the `distributorId` will be ignored when `liCollectConfig.appId` is present.