-
Notifications
You must be signed in to change notification settings - Fork 50
Staging identity map v3 #899
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
74 commits
Select commit
Hold shift + click to select a range
a4c487c
Add POST /identity/map v3
genwhittTTD 4bb0bbf
initial update of identity map docs with v3 fields
sophia-chen-ttd c7899f4
small fixes
sophia-chen-ttd e1146d6
added more detail on response properties
sophia-chen-ttd fb32e80
small fix
sophia-chen-ttd e2669aa
added example previous uid
sophia-chen-ttd b5f24e1
fixed wording
sophia-chen-ttd cf110c4
removed dii object in request
sophia-chen-ttd cd95e48
fixed response table
sophia-chen-ttd eaf3bdf
removing unwanted files
sophia-chen-ttd fc604d3
updated version section
sophia-chen-ttd d3a8492
small word fix
sophia-chen-ttd ef811bf
Removed mentions of migration
sophia-chen-ttd 9872640
Update content and links
vishalegbert-ttd afa8cdf
Rename
vishalegbert-ttd 6ba50ad
Clean up
vishalegbert-ttd 4ed42b2
Update
vishalegbert-ttd 9801714
Update title
vishalegbert-ttd 7c2af7e
Clarity
vishalegbert-ttd 774cbcd
Update Japanese translation links
vishalegbert-ttd 18af9b1
Revert (v3)
vishalegbert-ttd 4f49e04
Add input example
vishalegbert-ttd 3ce7252
Clean up
vishalegbert-ttd f981484
Clean up
vishalegbert-ttd 0c780ba
Merge branch 'main' into sch-UID2-5558-v3-identity-map
genwhittTTD 32ae9a3
POST /identity/map update, partial GWH edits
genwhittTTD b09c6f2
Reverted Japanese file changes
gmsdelmundo 84402a1
Updated post-identity-map filenames and corresponding URLs
gmsdelmundo 8278704
Fixed broken link in sidebar
gmsdelmundo 46debc6
Merge pull request #898 from IABTechLab/sch-UID2-5558-v3-identity-map
gmsdelmundo a290931
integration overview
aulme 25ae8fb
Updated advertiser summary mermaid
aulme 0ffa745
Integration HTTP guide
aulme 26a439f
Endpoint Integration mermaid
aulme 18174c2
FAQ changes for V3 Identity Map
aulme f74b43e
Fixing some links
aulme 6c2abc3
glossary
aulme 78bb707
Advertiser and Data Provider overviews, excluding diagrams
aulme 997b3e7
Addressed Gen's feedback and some changes in the same spirit
aulme 26bba33
Some more changes inspired by Gen's feedback
aulme cb50b6b
Including both old and new docs
aulme c37cfd9
Re-added older faqs
aulme 3caf042
POST Identity Map V3 improvements and tests for sample code
aulme c38cc60
V3 Identity Map doc
aulme 24b84a8
Merge pull request #909 from IABTechLab/aul-UID2-5560-java-identity-m…
aulme b66c8fe
Updating in response to feedback
aulme ab61ebb
Merge pull request #900 from IABTechLab/aul-UID2-5559-integration-page-2
aulme 952f615
Merge pull request #907 from IABTechLab/aul-UID2-5558-identity-map-v3…
aulme b18cbaa
Making it clear input is a variable
aulme 8a62eeb
Preparing RC
aulme 2dc45e4
Japanese files
aulme 3a488ab
Release notes first draft
aulme 5eb498e
Small fixes
aulme 2d9a8cb
fix broken link in FAQs file
genwhittTTD 656114c
edits to POST /identity/map migration section
genwhittTTD b1f7301
update to SDK Summary page
genwhittTTD 34b60ce
Java sdk link uncommented
aulme 029854d
at least -> roughly
aulme 12aba10
update sidebar settings, fix merge conflicts
genwhittTTD c1001cc
edits to adv guide, mermain diagrams, other edits
genwhittTTD a9fb1cd
Updated V2/3 -> v2/3 for consistency with other docs
aulme 2e288dd
DIIs -> DII
aulme f499466
Addressed Gen's feedback re v2 stuff docs being too verbose
aulme 5cd5051
Merge branch 'main' into staging-identity-map-v3
genwhittTTD 4710fca
mods to ADP file updates
genwhittTTD 0a5e576
Figma diagram updates
genwhittTTD 9993d26
few edits
genwhittTTD 5b68657
fix typo
genwhittTTD 2f74875
additional edits
genwhittTTD 62adee8
Copy the English Identity Map content into Japanese until translation…
aulme 7cbff81
Clearer optional steps for Java SDK.
aulme 3b0884d
minor edits
genwhittTTD 20a8d39
Merge branch 'main' into staging-identity-map-v3
genwhittTTD 7571842
Using js null instead of Java Null in JSON api docs
aulme File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,207 @@ | ||
| --- | ||
| title: POST /identity/map (v2) | ||
| description: Maps DII to raw UID2s and salt bucket IDs. | ||
| hide_table_of_contents: false | ||
| sidebar_position: 07 | ||
| --- | ||
|
|
||
| import Link from '@docusaurus/Link'; | ||
|
|
||
| # POST /identity/map (v2) | ||
|
|
||
| Maps multiple email addresses, phone numbers, or their respective hashes to their raw UID2s and <Link href="../ref-info/glossary-uid#gl-salt-bucket-id">salt bucket IDs</Link>. You can also use this endpoint to check for updates to opt-out information. | ||
|
|
||
| Used by: This endpoint is used mainly by advertisers and data providers. For details, see [Advertiser/Data Provider Integration Overview](../guides/integration-advertiser-dataprovider-overview.md). | ||
|
|
||
| For details about the UID2 opt-out workflow and how users can opt out, see [User Opt-Out](../getting-started/gs-opt-out.md). | ||
|
|
||
| ## Version | ||
|
|
||
| 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). | ||
|
|
||
| :::note | ||
| 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). | ||
| ::: | ||
|
|
||
| ## Batch Size and Request Parallelization Requirements | ||
|
|
||
| Here's what you need to know: | ||
|
|
||
| - The maximum request size is 1MB. | ||
| - To map a large number of email addresses, phone numbers, or their respective hashes, send them in *sequential* batches with a maximum batch size of 5,000 items per batch. | ||
| - Unless you are using a <Link href="../ref-info/glossary-uid#gl-private-operator">Private Operator</Link>, do not send batches in parallel. In other words, use a single HTTP connection and send batches of hashed or unhashed <Link href="../ref-info/glossary-uid#gl-dii">directly identifying information (DII)</Link> values consecutively, without creating multiple parallel connections. | ||
| - Be sure to store mappings of email addresses, phone numbers, or their respective hashes.<br/>Not storing mappings could increase processing time drastically when you have to map millions of email addresses or phone numbers. Recalculating only those mappings that actually need to be updated, however, reduces the total processing time because only about 1/365th of raw UID2s need to be updated daily. See also [Advertiser/Data Provider Integration Overview](../guides/integration-advertiser-dataprovider-overview.md) and [FAQs for Advertisers and Data Providers](../getting-started/gs-faqs.md#faqs-for-advertisers-and-data-providers). | ||
|
|
||
| ## Request Format | ||
|
|
||
| `POST '{environment}/v2/identity/map'` | ||
|
|
||
| For authentication details, see [Authentication and Authorization](../getting-started/gs-auth.md). | ||
|
|
||
| :::important | ||
| You must encrypt all requests using your secret. For details, and code examples in different programming languages, see [Encrypting Requests and Decrypting Responses](../getting-started/gs-encryption-decryption.md). | ||
| ::: | ||
|
|
||
| ### Path Parameters | ||
|
|
||
| | Path Parameter | Data Type | Attribute | Description | | ||
| | :--- | :--- | :--- | :--- | | ||
| | `{environment}` | string | Required | Testing (integration) environment: `https://operator-integ.uidapi.com`<br/>Production environment: The best choice depends on where your users are based. For information about how to choose the best URL for your use case, and a full list of valid base URLs, see [Environments](../getting-started/gs-environments.md). | | ||
|
|
||
| :::note | ||
| The integration environment and the production environment require different <Link href="../ref-info/glossary-uid#gl-api-key">API keys</Link>. For information about getting credentials for each environment, see [Getting Your Credentials](../getting-started/gs-credentials.md#getting-your-credentials). | ||
| ::: | ||
|
|
||
| ### Unencrypted JSON Body Parameters | ||
|
|
||
| :::important | ||
| You must include only **one** of the following four conditional parameters as a key-value pair in the JSON body of the request when encrypting it. | ||
| ::: | ||
|
|
||
| | Body Parameter | Data Type | Attribute | Description | | ||
| | :--- | :--- | :--- | :--- | | ||
| | `email` | string array | Conditionally Required | The list of email addresses to be mapped. | | ||
| | `email_hash` | string array | Conditionally Required | The list of [Base64-encoded SHA-256](../getting-started/gs-normalization-encoding.md#email-address-hash-encoding) hashes of [normalized](../getting-started/gs-normalization-encoding.md#email-address-normalization) email addresses to be mapped. | | ||
| | `phone` | string array | Conditionally Required | The list of [normalized](../getting-started/gs-normalization-encoding.md#phone-number-normalization) phone numbers to be mapped. | | ||
| | `phone_hash` | string array | Conditionally Required | The list of [Base64-encoded SHA-256](../getting-started/gs-normalization-encoding.md#phone-number-hash-encoding) hashes of [normalized](../getting-started/gs-normalization-encoding.md#phone-number-normalization) phone numbers to be mapped. | | ||
|
|
||
| ### Request Examples | ||
|
|
||
| The following are unencrypted JSON request body examples for each parameter, one of which you should include in your requests to the `POST /identity/map` endpoint: | ||
|
|
||
| ```json | ||
| { | ||
| "email":[ | ||
| "user@example.com", | ||
| "user2@example.com" | ||
| ] | ||
| } | ||
| ``` | ||
| ```json | ||
| { | ||
| "email_hash":[ | ||
| "tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=", | ||
| "KzsrnOhCq4tqbGFMsflgS7ig1QLRr0nFJrcrEIlOlbU=" | ||
| ] | ||
| } | ||
| ``` | ||
| ```json | ||
| { | ||
| "phone":[ | ||
| "+12345678901", | ||
| "+441234567890" | ||
| ] | ||
| } | ||
| ``` | ||
| ```json | ||
| { | ||
| "phone_hash":[ | ||
| "EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4=", | ||
| "Rx8SW4ZyKqbPypXmswDNuq0SPxStFXBTG/yvPns/2NQ=" | ||
| ] | ||
| } | ||
| ``` | ||
|
|
||
| Here's an encrypted request example to the `POST /identity/map` endpoint for a phone number: | ||
|
|
||
| ```sh | ||
| echo '{"phone": ["+12345678901", "+441234567890"]}' | python3 uid2_request.py https://prod.uidapi.com/v2/identity/map [Your-Client-API-Key] [Your-Client-Secret] | ||
| ``` | ||
|
|
||
| For details, and code examples in different programming languages, see [Encrypting Requests and Decrypting Responses](../getting-started/gs-encryption-decryption.md). | ||
|
|
||
| ## Decrypted JSON Response Format | ||
|
|
||
| :::note | ||
| The response is encrypted only if the HTTP status code is 200. Otherwise, the response is not encrypted. | ||
| ::: | ||
|
|
||
| A successful decrypted response returns the raw UID2s and salt bucket IDs for the specified email addresses, phone numbers, or their respective hashes. | ||
|
|
||
| ```json | ||
| { | ||
| "body":{ | ||
| "mapped": [ | ||
| { | ||
| "identifier": "EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4=", | ||
| "advertising_id": "AdvIvSiaum0P5s3X/7X8h8sz+OhF2IG8DNbEnkWSbYM=", | ||
| "bucket_id": "a30od4mNRd" | ||
| }, | ||
| { | ||
| "identifier": "Rx8SW4ZyKqbPypXmswDNuq0SPxStFXBTG/yvPns/2NQ=", | ||
| "advertising_id": "IbW4n6LIvtDj/8fCESlU0QG9K/fH63UdcTkJpAG8fIQ=", | ||
| "bucket_id": "ad1ANEmVZ" | ||
| } | ||
| ] | ||
| }, | ||
| "status":"success" | ||
| } | ||
| ``` | ||
|
|
||
| If some identifiers are considered invalid, they are included in the response in an "unmapped" list. In this case, the response status is still "success". If all identifiers are mapped, the "unmapped" list is not included in the response. | ||
|
|
||
| ```json | ||
| { | ||
| "body":{ | ||
| "mapped": [ | ||
| { | ||
| "identifier": "EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4=", | ||
| "advertising_id": "AdvIvSiaum0P5s3X/7X8h8sz+OhF2IG8DNbEnkWSbYM=", | ||
| "bucket_id": "a30od4mNRd" | ||
| } | ||
| ], | ||
| "unmapped": [ | ||
| { | ||
| "identifier": "some@malformed@email@hash", | ||
| "reason": "invalid identifier" | ||
| } | ||
| ] | ||
| }, | ||
| "status":"success" | ||
| } | ||
| ``` | ||
|
|
||
| If some identifiers have opted out from the UID2 ecosystem, the opted-out identifiers are moved to the "unmapped" list along with any invalid identifiers found. In this case, the response status is still "success". | ||
|
|
||
| ```json | ||
| { | ||
| "body":{ | ||
| "mapped": [ | ||
| { | ||
| "identifier": "EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4=", | ||
| "advertising_id": "AdvIvSiaum0P5s3X/7X8h8sz+OhF2IG8DNbEnkWSbYM=", | ||
| "bucket_id": "a30od4mNRd" | ||
| } | ||
| ], | ||
| "unmapped": [ | ||
| { | ||
| "identifier": "tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=", | ||
| "reason": "optout" | ||
| } | ||
| ] | ||
| }, | ||
| "status":"success" | ||
| } | ||
| ``` | ||
|
|
||
| ### Response Body Properties | ||
|
|
||
| The response body includes the properties shown in the following table. | ||
|
|
||
| | Property | Data Type | Description | | ||
| | :--- | :--- | :--- | | ||
| | `identifier` | string | The email address, phone number, or respective hash specified in the request body. | | ||
| | `advertising_id` | string | The corresponding advertising ID (raw UID2). | | ||
| | `bucket_id` | string | The ID of the salt bucket used to generate the raw UID2. | | ||
|
|
||
| ### Response Status Codes | ||
|
|
||
| The following table lists the `status` property values and their HTTP status code equivalents. | ||
|
|
||
| | Status | HTTP Status Code | Description | | ||
| | :--- | :--- | :--- | | ||
| | `success` | 200 | The request was successful. The response will be encrypted. | | ||
| | `client_error` | 400 | The request had missing or invalid parameters.| | ||
| | `unauthorized` | 401 | The request did not include a bearer token, included an invalid bearer token, or included a bearer token unauthorized to perform the requested operation. | | ||
|
|
||
| If the `status` value is anything other than `success`, the `message` field provides additional information about the issue. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.