From 8a1d1e72b039096191f593230925486520d710a5 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Tue, 5 Sep 2023 11:05:44 -0400 Subject: [PATCH 1/5] DSP guide initial edits + mermaid diagram updates --- docs/guides/dsp-guide.md | 20 +++++----- docs/guides/images/dsp-guide-optout.png | Bin 0 -> 35369 bytes .../resource/dsp-guide-optout-mermaid.md.bak | 35 ++++++++++++++++++ .../images/resource/dsp-guide-optout.png | Bin 0 -> 35369 bytes .../dsp-guide-flow-mermaid.md.bak | 0 .../{ => notused}/dsp-guide-flow-mermaid.png | Bin .../dsp-guide-optout-check-mermaid.md.bak | 0 .../dsp-guide-optout-check-mermaid.png | Bin 8 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 docs/guides/images/dsp-guide-optout.png create mode 100644 docs/guides/images/resource/dsp-guide-optout-mermaid.md.bak create mode 100644 docs/guides/images/resource/dsp-guide-optout.png rename docs/guides/images/resource/{ => notused}/dsp-guide-flow-mermaid.md.bak (100%) rename docs/guides/images/resource/{ => notused}/dsp-guide-flow-mermaid.png (100%) rename docs/guides/images/resource/{ => notused}/dsp-guide-optout-check-mermaid.md.bak (100%) rename docs/guides/images/resource/{ => notused}/dsp-guide-optout-check-mermaid.png (100%) diff --git a/docs/guides/dsp-guide.md b/docs/guides/dsp-guide.md index 7704a9d46..6b07fcfd9 100644 --- a/docs/guides/dsp-guide.md +++ b/docs/guides/dsp-guide.md @@ -7,7 +7,7 @@ sidebar_position: 05 # DSP Integration Guide -This guide is for DSPs who transact on UID2s in the bid stream. +This guide is for DSPs who transact on UID2s in the bid stream. ![DSP Flow](https://mermaid.ink/svg/eyJjb2RlIjoiICBzZXF1ZW5jZURpYWdyYW1cbiAgICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICBwYXJ0aWNpcGFudCBTU1BcbiAgICBwYXJ0aWNpcGFudCBEU1BcbiAgICBwYXJ0aWNpcGFudCBVSUQyIGFzIFVJRDIgU2VydmljZVxuICAgIHBhcnRpY2lwYW50IFRDIGFzIFRyYW5zcGFyZW5jeSAmIENvbnNlbnQgUG9ydGFsXG4gICAgTm90ZSBvdmVyIFUsVEM6IDEuIEhvbm9yIHVzZXIgb3B0LW91dHMuXG4gICAgVS0-PlRDOiAxLWEuIFVzZXIgb3B0cyBvdXQuXG4gICAgYWN0aXZhdGUgVENcbiAgICBUQy0-PlVJRDI6IDEtYi4gVUlEMiBzZXJ2aWNlIHJlY2VpdmVzIG9wdC1vdXQuXG4gICAgZGVhY3RpdmF0ZSBUQ1xuICAgIGFjdGl2YXRlIFVJRDJcbiAgICBVSUQyLT4-RFNQOiAxLWMuIERTUCByZWNlaXZlcyBvcHQtb3V0LlxuICAgIGRlYWN0aXZhdGUgVUlEMlxuICAgIE5vdGUgb3ZlciBVLFRDOiAyLiBEZWNyeXB0IFVJRDIgdG9rZW5zIHRvIHVzZSBpbiBSVEIuXG4gICAgU1NQLS0-PkRTUDogVGhlIFNTUCBjYWxscyBhIERTUCBmb3IgYmlkLlxuICAgIERTUC0-PkRTUDogMi1hLiBEZWNyeXB0IFVJRDIgdG9rZW5zLlxuICAgIERTUC0-PkRTUDogMi1iLiBFeGVjdXRlIGJpZGRpbmcgbG9naWMsIGhvbm9yaW5nIHVzZXIgb3B0LW91dHMuXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZm9yZXN0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9) + + ### Honor User Opt-Outs -To receive and honor user opt-outs from the UID2 service, DSPs establish a pre-configured interface and provides it to the UID2 service during onboarding. The UID2 service sends the user's UID2 and an opt-out timestamp to the pre-determined interface. Examples of interfaces include webhooks and API endpoints. +To receive and honor user opt-outs from the UID2 service, the DSP establishes a pre-configured interface and provides it to the UID2 service during onboarding. The UID2 service sends the user's UID2 token and an opt-out timestamp to the pre-configured interface. Examples of interfaces include webhooks and API endpoints. -The UID2 service will send the following data within seconds of a user's opt-out, which the DSP records and uses the bidding logic defined in [Decrypt UID2 Tokens for RTB Use](#decrypt-uid2-tokens-for-rtb-use). +The UID2 service sends the following data within seconds of a user's opt-out, which the DSP records and uses the bidding logic defined in [Decrypt UID2 Tokens for RTB Use](#decrypt-uid2-tokens-for-rtb-use). | Parameter | Description | | :--- | :--- | -| `identity` | The UID2 for the user who opted out. | +| `identity` | The UID2 for the user who opted out. | | `timestamp` | The time when the user opted out. | @@ -45,13 +47,13 @@ https://dsp.example.com/optout?user=%%identity%%&optouttime=%%timestamp%% Use the logic below during bidding (2-b) to honor a user's opt-out. -Leverage one of the server-side SDKs (see [SDKs](../sdks/summary-sdks.md)) to decrypt incoming UID2 tokens. The response contains the UID2 and time the UID2 was created, represented in the psuedocode below as `established_timestamp`. DSPs are required to check the most recent opt-out timestamp for a UID2, represented in the pseudocode below as `optout_timestamp`. +Leverage one of the server-side SDKs (see [SDKs](../sdks/summary-sdks.md)) to decrypt incoming UID2 tokens. The response contains the UID2 token and the time that the UID2 token was created, represented in the pseudocode below as `established_timestamp`. DSPs are required to check the most recent opt-out timestamp for a UID2, represented in the pseudocode below as `optout_timestamp`. The following diagram illustrates opt-out logic. -![DSP Opt-Out Check](https://mermaid.ink/svg/eyJjb2RlIjoiZ3JhcGggTFJcbkFbRGVjcnlwdCBVSUQyIFRva2VuXSAtLT4gQltSZXRyaWV2ZSBPcHQtb3V0IGZvciBVSUQyXVxuICAgIEIgLS0-IEN7Q2hlY2sgT3B0LW91dH1cbiAgICBDIC0tPiB8T3B0ZWQgT3V0fCBEW0JpZCB3aXRob3V0IFVJRDJdXG4gICAgQyAtLT4gfE5vdCBPcHRlZCBPdXR8IEVbQmlkIHdpdGggVUlEMl1cbiIsIm1lcm1haWQiOnsidGhlbWUiOiJmb3Jlc3QifSwidXBkYXRlRWRpdG9yIjpmYWxzZX0) +![DSP Opt-Out Check](images/dsp-guide-optout.png) -If the `established_timestamp` value is less than the `optout_timestamp` value, the user opted out and the UID2 should not be used for RTB. In these cases, it is up to the DSP whether they want to send an alternate ID for bidding or not bid. +If the `established_timestamp` value is less than the `optout_timestamp` value, the user has opted out and the UID2 should not be used for RTB. In these cases, the DSP can choose to send an alternate ID for bidding or can choose not to bid. The logic for the check opt-out step is the following: @@ -71,5 +73,3 @@ if (established_timestamp < optout_timestamp) { ## FAQs For a list of frequently asked questions for DSPs, see [FAQs for Demand-Side Platforms (DSPs)](../getting-started/gs-faqs.md#faqs-for-demand-side-platforms-dsps). - -For a full list, see [Frequently Asked Questions](../getting-started/gs-faqs.md). diff --git a/docs/guides/images/dsp-guide-optout.png b/docs/guides/images/dsp-guide-optout.png new file mode 100644 index 0000000000000000000000000000000000000000..524bc49e763f2afb9dda4606dff1c1ada8dbaba1 GIT binary patch literal 35369 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 JBdq)3{{Wa`8Ug?S literal 0 HcmV?d00001 diff --git a/docs/guides/images/resource/dsp-guide-optout-mermaid.md.bak b/docs/guides/images/resource/dsp-guide-optout-mermaid.md.bak new file mode 100644 index 000000000..5e64ea081 --- /dev/null +++ b/docs/guides/images/resource/dsp-guide-optout-mermaid.md.bak @@ -0,0 +1,35 @@ +graph LR +A[Decrypt UID2 Token] --> B[Retrieve Opt-out for UID2] + B --> C{Check Opt-out} + C --> |Opted Out| D[Bid without UID2] + C --> |Not Opted Out| E[Bid with UID2] + + + +-------------------- above is legacy -------------------- + +For the above: link to SVG, in doc, is: + + + +-------------------- below is update 9/5/23 -------------------- + +graph LR +A[Decrypt UID2 token] --> B[Retrieve UID2 opt-out status] + B --> C{Check for
opt-out} + C --> |Opted out| D[Bid without UID2] + C --> |Not opted out| E[Bid with UID2] + +Edit link: + +https://mermaid-js.github.io/mermaid-live-editor/edit#pako:eNpVkMtugzAQRX_FmjWkPJK4WFWkJmRRqQ8pVTcNWbgwKSgFIzO0pYR_r4EGqbPyXJ-5Y98WYpUgCHjXskzZ_S4qbvchxropib3chR4jdcLiwGx7xdb7HZLO8BPHK1WSrWpiFUmqq0NUMFPrAd20mxTjEzsqzW7e9NXqj-1GaDNA56eSMGFGPrNwv84S9pVR2jv29od_6KOift8F3074hQULctS5zBLzm7afjYBSzDECYY7mIVhRBFHRGVLWpJ6bIgZBukYL6jKRhGEmTQw5iKP8qCZ1m2Sk9CTi0D6MqQ3hWVDK4lWp_OJmWhAtfINw_Znjc-65rjsPgiXnFjQg5ov5zFkE3Fl4ge_yoLPgZxh3ZsFYfOka4Nrj3S-UhoHv + +SVG URL -- but the SVG doesn't include the colors so that doesn't work. Need to figure out how to include the CSS in the SVG output: + +https://mermaid.ink/svg/pako:eNpVkM1ugzAQhF_F2jOkYBJCrCpSE3Ko1B8pVS8FDi5sCkrByCxtU8K715AmUnzyzn479k4HqcoQBHxoWefsYRtXd1GIqT7UxF7vQ85I7bFKmG0v2SraIukCv_DUUjXZqiXWkKS2SeKKmbMa0XW3zjHds53S7PZd3yz_2f4ErUfo-FwTZszIRxZGqyJj3wXlg-Ngn1yhT4qG98745oKfWbCgRF3KIjPbdMNsDJRjiTEIczUfwYZiiKvekLIl9XKoUhCkW7SgrTNJGBbSxFBei5usIKVB7ORnY0Qcy8dTaGN2FtSyelPqMmdKEB38gHC9iePN59zxA4d7fuD6FhxATGfTiTNb-AvuBTxw-ay34Hc0cPs_j19-aQ + +Exported SVG: dsp-guide-optout.svg but it didn't display, so, not saved. + +Summary 9/5/23: still not able to export to SVG with theme applied. Saved PNG in UI instead. + +PNG saved from UI display: dsp-guide-optout.png. diff --git a/docs/guides/images/resource/dsp-guide-optout.png b/docs/guides/images/resource/dsp-guide-optout.png new file mode 100644 index 0000000000000000000000000000000000000000..524bc49e763f2afb9dda4606dff1c1ada8dbaba1 GIT binary patch literal 35369 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 JBdq)3{{Wa`8Ug?S literal 0 HcmV?d00001 diff --git a/docs/guides/images/resource/dsp-guide-flow-mermaid.md.bak b/docs/guides/images/resource/notused/dsp-guide-flow-mermaid.md.bak similarity index 100% rename from docs/guides/images/resource/dsp-guide-flow-mermaid.md.bak rename to docs/guides/images/resource/notused/dsp-guide-flow-mermaid.md.bak diff --git a/docs/guides/images/resource/dsp-guide-flow-mermaid.png b/docs/guides/images/resource/notused/dsp-guide-flow-mermaid.png similarity index 100% rename from docs/guides/images/resource/dsp-guide-flow-mermaid.png rename to docs/guides/images/resource/notused/dsp-guide-flow-mermaid.png diff --git a/docs/guides/images/resource/dsp-guide-optout-check-mermaid.md.bak b/docs/guides/images/resource/notused/dsp-guide-optout-check-mermaid.md.bak similarity index 100% rename from docs/guides/images/resource/dsp-guide-optout-check-mermaid.md.bak rename to docs/guides/images/resource/notused/dsp-guide-optout-check-mermaid.md.bak diff --git a/docs/guides/images/resource/dsp-guide-optout-check-mermaid.png b/docs/guides/images/resource/notused/dsp-guide-optout-check-mermaid.png similarity index 100% rename from docs/guides/images/resource/dsp-guide-optout-check-mermaid.png rename to docs/guides/images/resource/notused/dsp-guide-optout-check-mermaid.png From be75faaa380de659da79a4d4266dd1ce660922d1 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Wed, 6 Sep 2023 09:22:14 -0400 Subject: [PATCH 2/5] copy update --- docs/guides/dsp-guide.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/guides/dsp-guide.md b/docs/guides/dsp-guide.md index 6b07fcfd9..dd1bc09b3 100644 --- a/docs/guides/dsp-guide.md +++ b/docs/guides/dsp-guide.md @@ -7,7 +7,7 @@ sidebar_position: 05 # DSP Integration Guide -This guide is for DSPs who transact on UID2s in the bid stream. +This guide is for DSPs who transact on UID2s in the bid stream. +2. [Decrypt UID2 tokens to use in RTB](#decrypt-uid2-tokens-for-rtb-use) ![DSP Flow](https://mermaid.ink/svg/eyJjb2RlIjoiICBzZXF1ZW5jZURpYWdyYW1cbiAgICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICBwYXJ0aWNpcGFudCBTU1BcbiAgICBwYXJ0aWNpcGFudCBEU1BcbiAgICBwYXJ0aWNpcGFudCBVSUQyIGFzIFVJRDIgU2VydmljZVxuICAgIHBhcnRpY2lwYW50IFRDIGFzIFRyYW5zcGFyZW5jeSAmIENvbnNlbnQgUG9ydGFsXG4gICAgTm90ZSBvdmVyIFUsVEM6IDEuIEhvbm9yIHVzZXIgb3B0LW91dHMuXG4gICAgVS0-PlRDOiAxLWEuIFVzZXIgb3B0cyBvdXQuXG4gICAgYWN0aXZhdGUgVENcbiAgICBUQy0-PlVJRDI6IDEtYi4gVUlEMiBzZXJ2aWNlIHJlY2VpdmVzIG9wdC1vdXQuXG4gICAgZGVhY3RpdmF0ZSBUQ1xuICAgIGFjdGl2YXRlIFVJRDJcbiAgICBVSUQyLT4-RFNQOiAxLWMuIERTUCByZWNlaXZlcyBvcHQtb3V0LlxuICAgIGRlYWN0aXZhdGUgVUlEMlxuICAgIE5vdGUgb3ZlciBVLFRDOiAyLiBEZWNyeXB0IFVJRDIgdG9rZW5zIHRvIHVzZSBpbiBSVEIuXG4gICAgU1NQLS0-PkRTUDogVGhlIFNTUCBjYWxscyBhIERTUCBmb3IgYmlkLlxuICAgIERTUC0-PkRTUDogMi1hLiBEZWNyeXB0IFVJRDIgdG9rZW5zLlxuICAgIERTUC0-PkRTUDogMi1iLiBFeGVjdXRlIGJpZGRpbmcgbG9naWMsIGhvbm9yaW5nIHVzZXIgb3B0LW91dHMuXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZm9yZXN0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9) - + ### Honor User Opt-Outs -To receive and honor user opt-outs from the UID2 service, the DSP establishes a pre-configured interface and provides it to the UID2 service during onboarding. The UID2 service sends the user's UID2 token and an opt-out timestamp to the pre-configured interface. Examples of interfaces include webhooks and API endpoints. +To receive and honor user opt-outs from the UID2 service, the DSP establishes a pre-configured interface and provides it to the UID2 service during onboarding. The UID2 service sends the user's UID2 token and an opt-out timestamp to the pre-configured interface. Examples of interfaces include webhooks and API endpoints. The UID2 service sends the following data within seconds of a user's opt-out, which the DSP records and uses the bidding logic defined in [Decrypt UID2 Tokens for RTB Use](#decrypt-uid2-tokens-for-rtb-use). | Parameter | Description | | :--- | :--- | -| `identity` | The UID2 for the user who opted out. | +| `identity` | The UID2 for the user who opted out. | | `timestamp` | The time when the user opted out. | @@ -47,7 +47,7 @@ https://dsp.example.com/optout?user=%%identity%%&optouttime=%%timestamp%% Use the logic below during bidding (2-b) to honor a user's opt-out. -Leverage one of the server-side SDKs (see [SDKs](../sdks/summary-sdks.md)) to decrypt incoming UID2 tokens. The response contains the UID2 token and the time that the UID2 token was created, represented in the pseudocode below as `established_timestamp`. DSPs are required to check the most recent opt-out timestamp for a UID2, represented in the pseudocode below as `optout_timestamp`. +Leverage one of the server-side SDKs (see [SDKs](../sdks/summary-sdks.md)) to decrypt incoming UID2 tokens. The response contains the UID2 token and the time that the UID2 token was created, represented in the pseudocode below as `established_timestamp`. DSPs are required to check the most recent opt-out timestamp for a UID2, represented in the pseudocode below as `optout_timestamp`. The following diagram illustrates opt-out logic. From 361917c0bd93816c1c080b538d25f792fdb42699 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Fri, 8 Sep 2023 09:56:51 -0400 Subject: [PATCH 3/5] edits from meeting with JN --- docs/guides/dsp-guide.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/guides/dsp-guide.md b/docs/guides/dsp-guide.md index b8cbb4fec..f0bf94759 100644 --- a/docs/guides/dsp-guide.md +++ b/docs/guides/dsp-guide.md @@ -8,7 +8,7 @@ sidebar_position: 05 # DSP Integration Guide -This guide is for DSPs who transact on UID2s in the bid stream. +This guide is for DSPs who transact on UID2s in the bid stream. (**GWH/JN _01) what actual functions do they do? 2) Do DSPs have to use SDKs? If so, which ones? I think we should list them?**) +2. [Decrypt UID2 tokens to use in RTB](#decrypt-uid2-tokens-for-rtb-use) (**GWH/JN_02 is this affected by mods for Sharing?**) ![DSP Flow](https://mermaid.ink/svg/eyJjb2RlIjoiICBzZXF1ZW5jZURpYWdyYW1cbiAgICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJcbiAgICBwYXJ0aWNpcGFudCBTU1BcbiAgICBwYXJ0aWNpcGFudCBEU1BcbiAgICBwYXJ0aWNpcGFudCBVSUQyIGFzIFVJRDIgU2VydmljZVxuICAgIHBhcnRpY2lwYW50IFRDIGFzIFRyYW5zcGFyZW5jeSAmIENvbnNlbnQgUG9ydGFsXG4gICAgTm90ZSBvdmVyIFUsVEM6IDEuIEhvbm9yIHVzZXIgb3B0LW91dHMuXG4gICAgVS0-PlRDOiAxLWEuIFVzZXIgb3B0cyBvdXQuXG4gICAgYWN0aXZhdGUgVENcbiAgICBUQy0-PlVJRDI6IDEtYi4gVUlEMiBzZXJ2aWNlIHJlY2VpdmVzIG9wdC1vdXQuXG4gICAgZGVhY3RpdmF0ZSBUQ1xuICAgIGFjdGl2YXRlIFVJRDJcbiAgICBVSUQyLT4-RFNQOiAxLWMuIERTUCByZWNlaXZlcyBvcHQtb3V0LlxuICAgIGRlYWN0aXZhdGUgVUlEMlxuICAgIE5vdGUgb3ZlciBVLFRDOiAyLiBEZWNyeXB0IFVJRDIgdG9rZW5zIHRvIHVzZSBpbiBSVEIuXG4gICAgU1NQLS0-PkRTUDogVGhlIFNTUCBjYWxscyBhIERTUCBmb3IgYmlkLlxuICAgIERTUC0-PkRTUDogMi1hLiBEZWNyeXB0IFVJRDIgdG9rZW5zLlxuICAgIERTUC0-PkRTUDogMi1iLiBFeGVjdXRlIGJpZGRpbmcgbG9naWMsIGhvbm9yaW5nIHVzZXIgb3B0LW91dHMuXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZm9yZXN0In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9) - + (**GWH/JN_03 Do we need changes to the diagram?**) ### Honor User Opt-Outs -To receive and honor user opt-outs from the UID2 service, the DSP establishes a pre-configured interface and provides it to the UID2 service during onboarding. The UID2 service sends the user's UID2 token and an opt-out timestamp to the pre-configured interface. Examples of interfaces include webhooks and API endpoints. +To receive and honor user opt-outs from the UID2 service, the DSP establishes a pre-configured interface and provides it to the UID2 service during onboarding. The UID2 service sends the user's UID2 token and an opt-out timestamp to the pre-configured interface. Examples of interfaces include webhooks and API endpoints. (**GWH/JN_04 can we be clearer what we're talking about here? Maybe an example or something?**) The UID2 service sends the following data within seconds of a user's opt-out, which the DSP records and uses the bidding logic defined in [Decrypt UID2 Tokens for RTB Use](#decrypt-uid2-tokens-for-rtb-use). | Parameter | Description | | :--- | :--- | -| `identity` | The UID2 for the user who opted out. | +| `identity` | The UID2 for the user who opted out. (**GWH/JN_05 is this incorrect now? On opt-out, we don't send the identity I believe?**) | | `timestamp` | The time when the user opted out. | @@ -48,7 +48,7 @@ https://dsp.example.com/optout?user=%%identity%%&optouttime=%%timestamp%% Use the logic below during bidding (2-b) to honor a user's opt-out. -Leverage one of the server-side SDKs (see [SDKs](../sdks/summary-sdks.md)) to decrypt incoming UID2 tokens. The response contains the UID2 token and the time that the UID2 token was created, represented in the pseudocode below as `established_timestamp`. DSPs are required to check the most recent opt-out timestamp for a UID2, represented in the pseudocode below as `optout_timestamp`. +Leverage one of the server-side SDKs (see [SDKs](../sdks/summary-sdks.md)) to decrypt incoming UID2 tokens. The response (**GWH/JN_06 to what? to the decrypt function?**) contains the UID2 token and the time that the UID2 token was created, represented in the pseudocode below as `established_timestamp`. DSPs are required to check the most recent opt-out timestamp for a UID2, represented in the pseudocode below as `optout_timestamp`. (**GWH/JN_07 I see no pseudocode. Would it be a good thing to add? Or, is it the "the logic..." below perhaps? Unclear.**) The following diagram illustrates opt-out logic. From 3324b5b9bfbf3ce8d4af914ad34a0f4f8ad96667 Mon Sep 17 00:00:00 2001 From: genwhittTTD Date: Fri, 8 Sep 2023 11:41:26 -0400 Subject: [PATCH 4/5] light edit to DSP guide --- docs/guides/dsp-guide.md | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/docs/guides/dsp-guide.md b/docs/guides/dsp-guide.md index f0bf94759..f909fe8dc 100644 --- a/docs/guides/dsp-guide.md +++ b/docs/guides/dsp-guide.md @@ -8,7 +8,16 @@ sidebar_position: 05 # DSP Integration Guide -This guide is for DSPs who transact on UID2s in the bid stream. (**GWH/JN _01) what actual functions do they do? 2) Do DSPs have to use SDKs? If so, which ones? I think we should list them?**) +This guide is for DSPs who transact on UID2s in the bid stream. + +DSPs receive UID2 tokens in bid requests, and decrypt the UID2 tokens to arrive at raw UID2s that they can use for bidding, using one of the server-side SDKs that support this function: + +- UID2 SDK for Java: see [UID2 SDK for Java (Server-Side) Reference Guide](../sdks/uid2-sdk-ref-java.md) +- UID2 SDK for Python: see [UID2 SDK for Python (Server-Side) Reference Guide](../sdks/uid2-sdk-ref-python.md) +- UID2 SDK for C# / .NET: see [UID2 SDK for C# / .NET (Server-Side) Reference Guide](../sdks/uid2-sdk-ref-csharp-dotnet.md) +- UID2 SDK for C++: see [UID2 SDK for C++ (Server-Side) Reference Guide](../sdks/uid2-sdk-ref-cplusplus.md) + +>NOTE: If your back end is written in a language not covered by one of these SDKs, ask your UID2 contact in case there is additional information available to help you. If you're not sure who to ask, see [Contact Info](../getting-started/gs-account-setup.md#contact-info).