Skip to content

Commit

Permalink
Prebid Server privacy sandbox updates (#5173)
Browse files Browse the repository at this point in the history
* privacy sandbox updates

* linting
  • Loading branch information
bretg authored Feb 23, 2024
1 parent e79aff2 commit 3136ddb
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 14 deletions.
2 changes: 1 addition & 1 deletion dev-docs/modules/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ This module allows to "intercept" bids and replace their contents with arbitrary
Bids intercepted in this way are never seen by bid adapters or their backend SSPs, but they are nonetheless injected into the auction as if they originated from them.

{: .pb-alert .pb-alert-warning :}
For convenience, `debugging` configuration is persisted to the browser's session storage, so that you may type `pbjs.setConfig({debugging: ...})` in the console and reload the page to immediately see the effects. This means that you need to remember to **deactivate debuggging (or clear session storage) when you are done**.
For convenience, `debugging` configuration is persisted to the browser's session storage, so that you may type `pbjs.setConfig({debugging: ...})` in the console and reload the page to immediately see the effects. This means that you need to remember to **deactivate debugging (or clear session storage) when you are done**.

<a name="example"></a>

Expand Down
1 change: 1 addition & 0 deletions prebid-server/endpoints/openrtb2/pbs-endpoint-auction.md
Original file line number Diff line number Diff line change
Expand Up @@ -1679,6 +1679,7 @@ The codes currently returned:
| 101 | Timeout | Java | The bid adapter timed out. |
| 200 | Request Blocked - General | Java | This impression not sent to the bid adapter for an unspecified reason. |
| 202 | Request Blocked due to mediatype | Java | This impression not sent to the bid adapter because it doesn't support the requested mediatype. |
| 300 | Response Rejected - General | Java | The bid response was rejected for an unspecified reason. See warnings in debug mode. (Mostly caused by DSA validation rules) |
| 301 | Response Rejected - Below Floor | Java | The bid response did not meet the floor for this impression. |

See the [IAB's community extension](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/seat-non-bid.md) for the full list of status codes that may be supported in the future.
Expand Down
3 changes: 3 additions & 0 deletions prebid-server/features/pbs-feature-idx.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ title: Prebid Server | Features
| Modules | [ortb2-blocking](/prebid-server/pbs-modules/ortb2-blocking.html) | Configure per-account OpenRTB blocking details. | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> |
| Anti-Fraud | Ads.Cert 2.0 Authenticated Connections | Includes authenticated connection signing header on outgoing bid requests to supported adapters. * | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> | |
| Request Enrichment | Enhanced tid and request IDs | Fills out id, imp.id, source.tid, and imp.ext.tid | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> |
| Privacy Sandbox | Passthrough | "auction enabled" flags are passed through to bidders and auctionconfig is forwarded from bidders. | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> |
| Privacy Sandbox | Topics headers | PBS reads the Chrome topics header and copies to user.data segments. | | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> |
| Privacy Sandbox | Testing labels | PBS reads the Chrome labels header and copies to device.ext.cdep | | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> |
| Auction Response | Bidders can supply [Fledge](https://github.com/google/ads-privacy/tree/master/proposals/fledge-multiple-seller-testing) auction config | If the request contains imp.ext.ae, bid adapters can return ext.prebid.fledge.auctionconfigs | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> | <img alt="check" src="/assets/images/icons/icon-check-green.png" width="30"> |

\* Experimental feature not yet recommended for production.
29 changes: 21 additions & 8 deletions prebid-server/features/pbs-fpd.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ sidebarType: 5
title: First Party Data - Prebid Server
---

# First Party Data - Prebid Server
# Prebid Server First Party Data
{: .no_toc}

* TOC
- TOC
{:toc}

Prebid allows publishers to supply attributes related to their content
Expand All @@ -21,17 +21,22 @@ party data from the standard Prebid locations.

## How It Works

Each of the three main sources of Prebid Server traffic will place
First Party Data in the OpenRTB JSON in several places:
Each source of Prebid Server traffic will place
First Party Data in the OpenRTB JSON in several locations:

{: .table .table-bordered .table-striped }
| OpenRTB Attribute | Description | Prebid.js Source | SDK Source | AMP Source |
| --- | --- | --- | --- | --- |
| site.ATTR | Only standard OpenRTB attributes should be here: name, domain, cat, sectioncat, pagecat, page, ref, search, keywords. | config ortb2.site.ATTR | n/a | Stored Request |
| site.ext.data.ATTR | Any other site-related attributes should go here. | config ortb2.site.ext.data | n/a | Stored Request |
| site.keywords | Site keywords | config ortb2.site.keywords | n/a | Stored Request |
| site.content.data | Contextual Seller Defined Data segments | config ortb2.site.content.data | n/a | n/a |
| app.ext.data.ATTR | Any app-related attributes should go here. | n/a | Targeting addContextData() | n/a |
| app.keywords | App keywords | n/a | Targeting addContextKeywords() | n/a |
| app.content.data | Contextual Seller Defined Data segments | config ortb2.app.content.data | setRTBConfig() | n/a |
| dooh.ext.data.ATTR | Any dooh-related attributes should go here. | n/a | n/a | n/a |
| dooh.keywords | DOOH keywords | n/a | n/a | n/a |
| dooh.content.data | Contextual Seller Defined Data segments | n/a | n/a | n/a |
| user.keywords | User keywords | config ortb2.user.keywords | addUserKeywords | n/a |
| user.ATTR | Only standard OpenRTB attributes should be here: yob, gender, keywords. | config ortb2.user.ATTR | n/a | n/a |
| user.ext.data.ATTR | Any other user-related attributes should go here. | config ortb2.user.ext.data.ATTR | Targeting addUserData() | n/a |
Expand All @@ -48,10 +53,19 @@ Note that Prebid.js directly supports the [`setBidderConfig`](/dev-docs/publishe
bidder-specific first party data, while SDK only supports the `ext.prebid.data.bidders[]` approach with an in-app call.
Both SDK and AMP can have the stored request define bidder FPD permissions.

## Seller Defined Audience (SDA)

Many publishers utlize data segments that apply to context and audience. See the Prebid.js writeup on [Segments and Taxonomy](/features/firstPartyData.html#segments-and-taxonomy) for more information.

Prebid Server supports these values in `user.data` and `{site,app,dooh}.content.data`.

Note that 'Topics' in Google's Privacy Sandbox are implemented in Prebid as user-related SDA segments with segtaxes in the range 600-609.

## OpenRTB Examples

In this example, only BidderA has access to the global first party data:
```

```json
{
ext: {
prebid: {
Expand All @@ -70,8 +84,6 @@ In this example, only BidderA has access to the global first party data:
},
user: {
keywords: "",
gender: "",
yob: 1999,
geo: {},
ext: {
data: {
Expand All @@ -93,7 +105,8 @@ In this example, only BidderA has access to the global first party data:
```

This example shows an array of bidder-specific config:
```

```json
{
ext: {
prebid: {
Expand Down
31 changes: 26 additions & 5 deletions support/privacy-resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,14 @@ Privacy Sandbox is the name the Chrome browser has given to a series of features
At a high level, the "Topics" feature is Chrome's way of defining a taxonomy of information that can be used for ad targeting. See
[Chrome Topics](https://privacysandbox.com/proposals/topics/) for details.

There's actually nothing to do to enable Topics in Prebid – bidders will receive their own Topics if they've implemented that feature.
That said, Prebid does have a [Topics FPD Module](/dev-docs/modules/topicsFpdModule.html) that allows bidders to share each other's Topics.
There's actually nothing to do to enable Topics in Prebid.js – bidders will receive their own Topics if they've implemented that feature.
That said, Prebid.js does have a [Topics FPD Module](/dev-docs/modules/topicsFpdModule.html) that allows bidders to share each other's Topics.

Prebid Server supports reading the Topics headers and inserting them into the OpenRTB at `user.data`.

#### Protected Audience API

PAAPI is Chrome's solution for ad targeting done in a privacy-friendly way. In short, GAM will kick off an in-browser auction after
PAAPI (also called PAA) is Chrome's solution for ad targeting done in a privacy-friendly way. In short, GAM will kick off an in-browser auction after
the contextual auction. If the in-browser auction wins, it can override the ad chosen by GAM.

See [Chrome's PAAPI documentation](https://developers.google.com/privacy-sandbox/relevance/protected-audience) for the full background.
Expand All @@ -77,14 +79,14 @@ To enable Interest Group bidding in Prebid, you can add the Prebid [Fledge For G
{: .alert.alert-info :}
Note that 'FLEDGE' was the original name of the Protected Audience feature. The name of the Prebid.js module may change in the future.

##### Test Period
##### Prebid.js and the PAA Test Period

During the first part of 2024, Chrome and GAM are running a test of PAAPI on a limited subset of traffic. However, the
[Fledge For GPT Module](/dev-docs/modules/fledgeForGpt.html) enables Interest Group auctions 100% of the time. During the test
period, publishers can better align browser and programmatic ad behavior by only enabling Prebid interest group bids for
the relevant Chrome testing labels.

If you want to gather interest group bids only when IG auctions are very likely to run, you can enable the module like this:
If you want to gather interest group bids only when InterestGroup (IG) auctions are very likely to run, you can enable the module like this:

```javascript
Promise.resolve(navigator.cookieDeprecationLabel?.getValue?.()).then(label => {
Expand All @@ -108,6 +110,12 @@ Promise.resolve(navigator.cookieDeprecationLabel?.getValue?.()).then(label => {
});
```
##### Prebid Server and the PAA Test Period
Chrome sets "cookie-deprecation" labels to let the ecosystem know whether the current request is enabled for IG auctions and whether 3rd party cookies are active.
Prebid Server reads the HTTP header set by Chrome and copies the value to the OpenRTB at `device.ext.cdep`.
#### Prebid.js Versions Supporting Privacy Sandbox
This table may be useful to publishers trying to decide which version of Prebid.js to use to support Privacy Sandbox.
Expand All @@ -120,6 +128,19 @@ This table may be useful to publishers trying to decide which version of Prebid.
| 8.9| Initial release of the fledgeForGpt module, Sec-Browsing-Topics header enabled |
| 8.8| The topicsFpd module is released, allowing bidders to share topics |
#### Prebid Server Versions Supporting Privacy Sandbox
{: .table .table-bordered .table-striped }
| PBS-Go Version | Notes |
|-------------------|-------|
| 0.239.0 | Basic passthrough support |
{: .table .table-bordered .table-striped }
| PBS-Java Version | Notes |
|-------------------|-------|
| 2.11| Topics and Test Labels |
| 1.111| Basic passthrough support |
## Further Reading
- [Prebid Server Privacy Support](/prebid-server/features/pbs-privacy.html)

0 comments on commit 3136ddb

Please sign in to comment.