Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
249b829
gwh-APIDOCS-3914-change-heading-case add js+bat+modify gitignore
genwhittTTD Apr 15, 2026
cd8eed3
Merge branch 'main' into gwh-APIDOCS-3914-change-heading-case
genwhittTTD Apr 22, 2026
8153eb4
gwh-APIDOCS-3914-change-heading-case test
genwhittTTD Apr 22, 2026
8171ce2
remove 2 new files
genwhittTTD Apr 23, 2026
9e37922
Change all MD headings to sentence case
genwhittTTD Apr 29, 2026
29e9d15
revert mods
genwhittTTD Apr 29, 2026
577d5c2
update sidebars.js
genwhittTTD Apr 29, 2026
f1224ed
Merge branch 'main' into gwh-APIDOCS-3914-change-heading-case
genwhittTTD Apr 29, 2026
baf6af5
update sidebars.js
genwhittTTD Apr 29, 2026
b5d0ae0
change case on headings
genwhittTTD Apr 29, 2026
85ca3ad
refresh from main, fix merge conflicts
genwhittTTD May 8, 2026
9af9f24
ran capitalization script again, plus fixes
genwhittTTD May 8, 2026
eedff3e
additional mods based on GWH/C review
genwhittTTD May 8, 2026
9ab0672
additional mods based on GWH/C review #2
genwhittTTD May 8, 2026
5213ff9
additional GWH/C edits from comare of UID2 and EUID PRs
genwhittTTD May 8, 2026
6fc7e3d
mods to YAML metadata (partial)
genwhittTTD May 8, 2026
eb812d6
mods to YAML metadata, more
genwhittTTD May 8, 2026
8bd6226
mods to YAML metadata, many more
genwhittTTD May 8, 2026
d676c15
mods to YAML metadata, rest of EN-US
genwhittTTD May 8, 2026
3bcae75
additional YAML mods
genwhittTTD May 9, 2026
b6330de
fix couple YAML inconsistencies
genwhittTTD May 11, 2026
4da7271
updates to JA title, sidebar, pagination YAML GWH/C
genwhittTTD May 11, 2026
9e22332
GWH/C title fix
genwhittTTD May 11, 2026
b723614
add sidebar label for consistency with EUID
genwhittTTD May 11, 2026
62e9e0c
GWH/C mods
genwhittTTD May 11, 2026
3e0168d
Merge branch 'main' into gwh-APIDOCS-3914-change-heading-case
genwhittTTD May 12, 2026
3b2882d
sidebar fixes for consistency
genwhittTTD May 12, 2026
0d0f36f
consistency edit from SW/C review of EUID
genwhittTTD May 14, 2026
efeaa10
consistency edit from SW/C review of EUID, #2
genwhittTTD May 14, 2026
f92cc15
consistency edit from SW/C review of EUID, #3 re implementation resou…
genwhittTTD May 14, 2026
02ea8e0
consistency edit from SW/C review of EUID, #4 re Client Refresh mode
genwhittTTD May 14, 2026
6356964
consistency edit from SW/C review of EUID, #5 re Prebid Mobile SDK
genwhittTTD May 14, 2026
e1167b4
consistency edit from SW/C review of EUID, #6
genwhittTTD May 14, 2026
122c8dc
consistency edit from SW/C review of EUID, #7: Plugin, other mods
genwhittTTD May 14, 2026
f3ab318
consistency edit from SW/C review of EUID, #8: glossary
genwhittTTD May 14, 2026
6698c8d
consistency edit from SW/C review of EUID, #9
genwhittTTD May 14, 2026
cab5b0e
consistency edit from SW/C review of EUID, #10
genwhittTTD May 14, 2026
d70f270
fix typo
genwhittTTD May 14, 2026
e347b65
address SW/C comment
genwhittTTD May 14, 2026
a044767
Merge branch 'main' into gwh-APIDOCS-3914-change-heading-case
genwhittTTD May 15, 2026
0901388
fix unformatted doc titles missed by script
genwhittTTD May 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,6 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
.aider*

# Temporary exclusion for Claude project 4/10/26
# md-sentence-case*
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ npm i

After you've checked out the repo (and whenever you pull in new changes) you should run this command to install any new packages.

## Local Development
## Local development

```
npm start
Expand All @@ -31,7 +31,7 @@ npm run build

This command generates static content into the `build` directory and can be served using any static contents hosting service.

## Build All Languages
## Build all languages

```
npm run build && npm run serve
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# UID2 Documentation
# UID2 documentation

> Note: The new location for viewing UID2 documentation content is on the Unified ID website: [Unified ID 2.0 Overview](https://unifiedid.com/docs/intro).

Expand Down
24 changes: 12 additions & 12 deletions docs/endpoints/post-identity-buckets.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,35 @@ import Link from '@docusaurus/Link';

Monitors rotated <Link href="../ref-info/glossary-uid#gl-salt-bucket">salt buckets</Link>.

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).
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).

:::important
If you're using the latest version (v3) of `POST /v3/identity/map`, you don't need to use `POST /identity/buckets` at all. You only need to use it if you're using the earlier version (v2) of `POST /v2/identity/map`.

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 POST /v2/identity/map](post-identity-map.md#migration-from-post-v2identitymap).
:::

## Request Format
## Request format

`POST '{environment}/v2/identity/buckets'`

For authentication details, see [Authentication and Authorization](../getting-started/gs-auth.md).
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).
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 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).
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
### Unencrypted JSON body parameters

:::important
You must include the following parameter as a key-value pair in the JSON body of a request when encrypting it.
Expand All @@ -50,7 +50,7 @@ You must include the following parameter as a key-value pair in the JSON body of
| :--- | :--- | :--- | :--- | :--- |
| `since_timestamp` | date-time or integer | Required | Specify the date and time to which to compare the last updated UTC timestamps of the buckets to be returned. | ISO 8601 format:<br/>`YYYY-MM-DDThh:mm:ss` |

### Request Examples
### Request examples

The following is an unencrypted JSON request body example, which you should include in your identity bucket rotation requests:

Expand All @@ -65,9 +65,9 @@ Here's an encrypted identity bucket rotation request example:
echo '{"since_timestamp": "2023-04-19T13:00:00"}' | python3 uid2_request.py https://prod.uidapi.com/v2/identity/buckets [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).
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
## Decrypted JSON response format

:::note
The response is encrypted only if the HTTP status code is 200. Otherwise, the response is not encrypted.
Expand All @@ -94,7 +94,7 @@ A successful decrypted response returns a list of salt bucket IDs and the timest
"status":"success"
}
```
### Response Body Properties
### Response body properties

The response body includes the properties shown in the following table.

Expand All @@ -103,7 +103,7 @@ The response body includes the properties shown in the following table.
| `bucket_id` | string | The salt bucket ID. |
| `last_updated` | date-time | The UTC timestamp of the last time the bucket salt was rotated. |

### Response Status Codes
### Response status codes

The following table lists the `status` property values and their HTTP status code equivalents.

Expand Down
34 changes: 17 additions & 17 deletions docs/endpoints/post-identity-map-v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,53 +11,53 @@ import Link from '@docusaurus/Link';

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).
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).
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 /v3/identity/map](post-identity-map.md).

:::note
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 POST /v2/identity/map](post-identity-map.md#migration-from-post-v2identitymap). For deprecation information, see [Deprecation Schedule: Endpoint Versions](../ref-info/deprecation-schedule.md#endpoint-versions).
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 POST /v2/identity/map](post-identity-map.md#migration-from-post-v2identitymap). For deprecation information, see [Deprecation schedule: Endpoint versions](../ref-info/deprecation-schedule.md#endpoint-versions).
:::

## Batch Size and Request Parallelization Requirements
## 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 batches with a maximum of 5,000 items per batch. We recommend sending no more than 20 batches in parallel.
- 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).
- 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).

## Rate Limiting
## Rate limiting

To ensure fair usage and platform stability, the `POST /v2/identity/map` endpoint enforces rate limits to safeguard against bursts of incoming traffic. If you send many requests in quick succession, you might receive `429` error responses.

To handle rate limit errors gracefully, we recommend implementing [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) with random jitter when retrying requests. To maximize throughput within the limit, use the maximum batch size of 5,000 items per request rather than sending many small requests.

## Request Format
## Request format

`POST '{environment}/v2/identity/map'`

For authentication details, see [Authentication and Authorization](../getting-started/gs-auth.md).
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).
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 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).
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
### 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.
Expand All @@ -70,7 +70,7 @@ You must include only **one** of the following four conditional parameters as a
| `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
### 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 /v2/identity/map` endpoint:

Expand Down Expand Up @@ -113,9 +113,9 @@ Here's an encrypted request example to the `POST /v2/identity/map` endpoint for
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).
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
## Decrypted JSON response format

:::note
The response is encrypted only if the HTTP status code is 200. Otherwise, the response is not encrypted.
Expand Down Expand Up @@ -189,7 +189,7 @@ If some identifiers have opted out from the UID2 ecosystem, the opted-out identi
}
```

### Response Body Properties
### Response body properties

The response body includes the properties shown in the following table.

Expand All @@ -199,7 +199,7 @@ The response body includes the properties shown in the following table.
| `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
### Response status codes

The following table lists the `status` property values and their HTTP status code equivalents.

Expand Down
Loading
Loading