You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/endpoints/post-identity-map-v2.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ For details about the UID2 opt-out workflow and how users can opt out, see [User
20
20
This documentation is for version 2 of this endpoint, which is not the latest version. For the latest version, v3, see [POST /identity/map](post-identity-map.md).
21
21
22
22
:::note
23
-
If you're using the v2 version, we recommend that you upgrade as soon as possible, to take advantage of improvements. For migration guidance, see [Migration from v2 Identity Map](post-identity-map.md#migration-from-v2-identity-map).
23
+
If you're using an earlier version, we recommend that you upgrade as soon as possible, to take advantage of improvements. For migration guidance, see [Migration from v2 Identity Map](post-identity-map.md#migration-from-v2-identity-map). For deprecation information, see [Deprecation Schedule: Endpoint Versions](../ref-info/deprecation-schedule.md#endpoint-versions).
24
24
:::
25
25
26
26
## Batch Size and Request Parallelization Requirements
|`u`| string | The raw UID2 corresponding to the email or phone number provided in the request. |
177
-
|`p`| string | One of the following:<ul><li>If the current raw UID2 has been rotated in the last 90 days: the previous value.</li><li>If the current raw UID2 is older than 90 days: `null`.</li></ul> |
178
+
|`p`| string | One of the following:<ul><li>If the current raw UID2 was rotated in the last 90 days: the previous raw UID2.</li><li>Otherwise: `null`.</li></ul> |
178
179
|`r`| number | The Unix timestamp (in milliseconds) that indicates when the raw UID2 might be refreshed. The raw UID2 is guaranteed to be valid until this timestamp. |
179
180
180
181
For unsuccessfully mapped input values, the mapped object includes the properties shown in the following table.
@@ -206,19 +207,13 @@ The following sections provide general information and guidance for migrating to
206
207
207
208
### Version 3 Improvements
208
209
209
-
The v3 Identity Map API provides the following improvements over v2:
210
-
211
-
-**Simplified Refresh Management**: You can monitor for UID2s reaching `refresh_from` timestamps instead of polling <Linkhref="../ref-info/glossary-uid#gl-salt-bucket-id">salt buckets</Link> for rotation.
212
-
-**Previous UID2 Access**: You have access to previous raw UID2s for 90 days after rotation for campaign measurement.
213
-
-**Single Endpoint**: You use only one endpoint, `/v3/identity/map`, instead of both `/v2/identity/map` and `/v2/identity/buckets`.
214
-
-**Multiple Identity Types in One Request**: You can process both emails and phone numbers in a single request.
215
-
-**Improved Performance**: The updated version uses significantly less bandwidth to process the same amount of DII.
210
+
<POSTIdentityMapImprovements />
216
211
217
212
### Key Differences Between v2 and v3
218
213
219
214
The following table shows key differences between the versions.
Copy file name to clipboardExpand all lines: docs/getting-started/gs-faqs.md
+8-7Lines changed: 8 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -175,7 +175,7 @@ Here are some frequently asked questions for advertisers and data providers usin
175
175
-[Does the same DII always result in the same raw UID2?](#does-the-same-dii-always-result-in-the-same-raw-uid2)
176
176
-[If two operators process the same DII, are the results the same?](#if-two-operators-process-the-same-dii-are-the-results-the-same)
177
177
-[How do I know when to refresh the UID2 due to salt bucket rotation?](#how-do-i-know-when-to-refresh-the-uid2-due-to-salt-bucket-rotation)
178
-
-[Do refreshed emails get assigned to the same bucket with which they were previously associated?](#do-refreshed-emails-get-assigned-to-the-same-bucket-with-which-they-were-previously-associated)
178
+
-[Do refreshed emails get assigned to the same bucket that they were previously associated with?](#do-refreshed-emails-get-assigned-to-the-same-bucket-that-they-were-previously-associated-with)
179
179
180
180
#### How do I know when to refresh a raw UID2?
181
181
@@ -198,7 +198,7 @@ A raw UID2 for a specific user changes roughly once per year. The latest version
198
198
199
199
For implementations that reference earlier versions of this endpoint (see [POST /identity/map v2](../endpoints/post-identity-map-v2.md)):
200
200
201
-
Even though each <Linkhref="../ref-info/glossary-uid#gl-salt-bucket">salt bucket</Link> is updated roughly once a year, individual bucket updates are spread over the year. This means that about 1/365th of all buckets are rotated daily. If fidelity is critical, consider calling the [POST /identity/buckets](../endpoints/post-identity-buckets.md) endpoint more frequently; for example, hourly.
201
+
Even though each <Linkhref="../ref-info/glossary-uid#gl-salt-bucket">salt bucket</Link> is updated roughly once a year, individual bucket updates are spread over the year. This means that about 1/365th of all buckets are rotated daily. If fidelity is critical, consider calling the [POST /identity/buckets](../endpoints/post-identity-buckets.md) endpoint more frequently: for example, hourly.
202
202
203
203
#### How should I generate the SHA-256 of DII for mapping?
204
204
@@ -224,7 +224,7 @@ If a user opts out through your website, you should follow your internal procedu
224
224
225
225
In general yes, the process of generating a raw UID2 from DII is the same, and results in the same value, no matter who sent the request. If two UID2 participants were to send the same email address to the [POST /identity/map](../endpoints/post-identity-map.md) endpoint at the same time, they would both get the same raw UID2 in response.
226
226
227
-
However, there is a variable factor that's used in generating the raw UID2. The underlying values are refreshed roughly once per year (for details, see [How often should raw UID2s be refreshed for incremental updates?](#how-often-should-raw-uid2s-be-refreshed-for-incremental-updates)). If these values change between one request and another, those two requests result in two different raw UID2, even when the DII is the same.
227
+
However, there is a variable factor that's used in generating the raw UID2. The underlying values are refreshed roughly once per year (for details, see [How often should raw UID2s be refreshed for incremental updates?](#how-often-should-raw-uid2s-be-refreshed-for-incremental-updates)). If these values change between one request and another, those two requests result in two different raw UID2s, even when the DII is the same.
228
228
229
229
For more information, see [Monitor for Raw UID2 Refresh](../guides/integration-advertiser-dataprovider-overview.md#5-monitor-for-raw-uid2-refresh) in the *Advertiser/Data Provider Integration Guide*.
230
230
@@ -240,13 +240,13 @@ However, if a publisher sends DII in a request for a <Link href="../ref-info/glo
240
240
241
241
#### How do I know when to refresh the UID2 due to salt bucket rotation?
242
242
243
-
Metadata supplied with the UID2 generation request indicates the <Linkhref="../ref-info/glossary-uid#gl-salt-bucket">salt bucket</Link> used for generating the UID2. Salt buckets persist and correspond to the underlying <Linkhref="../ref-info/glossary-uid#gl-dii">DII</Link> used to generate a UID2. Use the [POST /identity/buckets](../endpoints/post-identity-buckets.md) endpoint to return which salt buckets rotated since a given timestamp. The returned rotated salt buckets inform you which UID2s to refresh.
243
+
Metadata supplied with the UID2 generation request indicates the <Linkhref="../ref-info/glossary-uid#gl-salt-bucket">salt bucket</Link> used for generating the UID2. Salt buckets persist and correspond to the underlying <Linkhref="../ref-info/glossary-uid#gl-dii">DII</Link> used to generate a raw UID2. Use the [POST /identity/buckets](../endpoints/post-identity-buckets.md) endpoint to return which salt buckets rotated since a given timestamp. The returned rotated salt buckets inform you which UID2s to refresh.
244
244
245
245
:::note
246
246
We do not make any promises about when the rotation takes place. To stay as up-to-date as possible, we recommend doing the checks once per hour.
247
247
:::
248
248
249
-
#### Do refreshed emails get assigned to the same bucket with which they were previously associated?
249
+
#### Do refreshed emails get assigned to the same bucket that they were previously associated with?
250
250
251
251
Not necessarily. After you remap emails associated with a particular bucket ID, the emails might be assigned to a different bucket ID. To check the bucket ID, see [Generate Raw UID2s from DII](../guides/integration-advertiser-dataprovider-overview.md#1-generate-raw-uid2s-from-dii) and save the returned raw UID2 and bucket ID again.
252
252
@@ -262,6 +262,7 @@ Here are some frequently asked questions for demand-side platforms (DSPs).
262
262
-[Where do I get the decryption keys?](#where-do-i-get-the-decryption-keys)
263
263
-[How many decryption keys may be present in memory at any point?](#how-many-decryption-keys-may-be-present-in-memory-at-any-point)
264
264
-[How do I know when to refresh mapped raw UID2s?](#how-do-i-know-when-to-refresh-mapped-raw-uid2s)
265
+
-[How do I know if/when the raw UID2 has rotated?](#how-do-i-know-ifwhen-the-raw-uid2-has-rotated)
265
266
-[Should the DSP be concerned with latency?](#should-the-dsp-be-concerned-with-latency)
266
267
-[How should the DSP maintain proper frequency capping with UID2?](#how-should-the-dsp-maintain-proper-frequency-capping-with-uid2)
267
268
-[Will all user opt-out traffic be sent to the DSP?](#will-all-user-opt-out-traffic-be-sent-to-the-dsp)
@@ -288,7 +289,7 @@ There may be thousands of decryption keys present in the system at any given poi
288
289
289
290
#### How do I know when to refresh mapped raw UID2s?
290
291
291
-
See [Advertisers and Data Providers section](#how-do-i-know-when-to-refresh-a-raw-uid2).
292
+
See [How do I know when to refresh a raw UID2?](#how-do-i-know-when-to-refresh-a-raw-uid2) in the FAQs for Advertisers and Data Providers.
292
293
293
294
#### How do I know if/when the raw UID2 has rotated?
294
295
@@ -300,7 +301,7 @@ The UID2 service does not introduce latency into the bidding process. Any latenc
300
301
301
302
#### How should the DSP maintain proper frequency capping with UID2?
302
303
303
-
The UID2 has the same chance as a cookie of becoming stale. Hence, the DSP can adapt the same infrastructure currently used for cookie or deviceID-based frequency capping for UID2. For details, see [How do I know when to refresh a raw UID2?](#how-do-i-know-when-to-refresh-a-raw-uid2).
304
+
The UID2 has the same chance as a cookie of becoming stale. Hence, the DSP can adapt the same infrastructure currently used for cookie or deviceID-based frequency capping for UID2. For details, see [How do I know when to refresh a raw UID2?](#how-do-i-know-when-to-refresh-a-raw-uid2)
304
305
305
306
#### Will all user opt-out traffic be sent to the DSP?
Copy file name to clipboardExpand all lines: docs/getting-started/gs-normalization-encoding.md
+17-15Lines changed: 17 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,6 +60,7 @@ An email hash is a Base64-encoded <Link href="../ref-info/glossary-uid#gl-sha-25
60
60
61
61
| Type | Example | Comments and Usage |
62
62
| :--- | :--- | :--- |
63
+
| Raw email address |`USER@example.com`| N/A |
63
64
| Normalized email address |`user@example.com`| Normalization is always the first step. |
64
65
| SHA-256 hash of normalized email address |`b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514`| This 64-character string is a hex-encoded representation of the 32-byte SHA-256. |
65
66
| Hex to Base64 encoding of SHA-256 hash |`tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=`| This 44-character string is a Base64-encoded representation of the 32-byte SHA-256.<br/>WARNING: The SHA-256 hash string in the example above is a hex-encoded representation of the hash value. You must Base64-encode the raw bytes of the hash or use a Base64 encoder that takes a hex-encoded value as input.<br/>Use this encoding for `email_hash` values sent in the request body. |
@@ -70,6 +71,21 @@ When applying Base64 encoding, be sure to Base64-encode the raw bytes of the has
70
71
71
72
For additional examples, see [Normalization Examples for Email](#normalization-examples-for-email).
72
73
74
+
## Normalization Examples for Email
75
+
76
+
The following table shows examples of original email addresses and the normalized and hashed values.
77
+
78
+
Some of the examples show email addresses that include the plus sign (+), with different domains. For `gmail` addresses, the plus sign and following characters, up to the `@` sign, are ignored in normalization. For other domains, these characters are included in the normalized value.
79
+
80
+
| Original Value | Normalized | Hashed and Base64-Encoded |
@@ -99,6 +115,7 @@ The following table shows an example of a simple input phone number, and the res
99
115
100
116
| Type | Example | Comments and Usage |
101
117
| :--- | :--- | :--- |
118
+
| Raw phone number |`1 (234) 567-8901`| N/A |
102
119
| Normalized phone number |`+12345678901`| Normalization is always the first step. |
103
120
| SHA-256 hash of normalized phone number |`10e6f0b47054a83359477dcb35231db6de5c69fb1816e1a6b98e192de9e5b9ee`|This 64-character string is a hex-encoded representation of the 32-byte SHA-256. |
104
121
| Hex to Base64 encoding of SHA-256 hash |`EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4=`| This 44-character string is a Base64-encoded representation of the 32-byte SHA-256.<br/>NOTE: The SHA-256 hash is a hexadecimal value. You must use a Base64 encoder that takes a hex value as input. Use this encoding for `phone_hash` values sent in the request body. |
@@ -107,21 +124,6 @@ The following table shows an example of a simple input phone number, and the res
107
124
When applying Base64 encoding, be sure to use a function that takes a hex value as input. If you use a function that takes text as input, the result is a longer string which is invalid for the purposes of UID2.
108
125
:::
109
126
110
-
## Normalization Examples for Email
111
-
112
-
The following table shows examples of original email addresses and the normalized and hashed values.
113
-
114
-
Some of the examples show email addresses that include the plus sign (+), with different domains. For `gmail` addresses, the plus sign and following characters, up to the `@` sign, are ignored in normalization. For other domains, these characters are included in the normalized value.
115
-
116
-
| Original Value | Normalized | Hashed and Base64-Encoded |
For an example of how to generate email and phone hashes in JavaScript, see [Example Code: Hashing and Base-64 Encoding](../guides/integration-javascript-client-side#example-code-hashing-and-base-64-encoding).
0 commit comments