Skip to content

Commit ef71010

Browse files
Merge branch 'main' into tquintanilla-report-ttl
2 parents ebd2ff5 + 3e8b1b9 commit ef71010

30 files changed

+1420
-473
lines changed

AGGREGATE.md

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
- [Hide the true number of attribution reports](#hide-the-true-number-of-attribution-reports)
2121
- [Optional: reduce report delay with trigger context ID](#optional-reduce-report-delay-with-trigger-context-id)
2222
- [Optional: flexible contribution filtering with filtering IDs](#optional-flexible-contribution-filtering-with-filtering-ids)
23+
- [Optional: named budgets](#optional-named-budgets)
2324
- [Data processing through a Secure Aggregation Service](#data-processing-through-a-secure-aggregation-service)
2425
- [Privacy considerations](#privacy-considerations)
2526
- [Differential Privacy](#differential-privacy)
@@ -37,9 +38,10 @@
3738

3839
## Authors
3940

40-
* csharrison@chromium.org
41-
* johnidel@chromium.org
42-
* marianar@google.com
41+
* Charlie Harrison (csharrison@chromium.org)
42+
* John Delaney (johnidel@chromium.org)
43+
* Mariana Raykova (marianar@google.com)
44+
* Nan Lin (linnan@chromium.org)
4345

4446
## Introduction
4547

@@ -260,7 +262,7 @@ The report will be JSON encoded with the following scheme:
260262
"payload": "[base64-encoded HPKE encrypted data readable only by the aggregation service]",
261263
"key_id": "[string identifying public key used to encrypt payload]",
262264

263-
// Optional debugging information, if the cookie `ar_debug` is present.
265+
// Optional debugging information, if cookie-based debugging is allowed.
264266
"debug_cleartext_payload": "[base64-encoded unencrypted payload]",
265267
},
266268
],
@@ -269,7 +271,7 @@ The report will be JSON encoded with the following scheme:
269271
"aggregation_coordinator_origin": "https://publickeyservice.msmt.aws.privacysandboxservices.com",
270272

271273
// Optional debugging information (also present in event-level reports),
272-
// if the cookie `ar_debug` is present.
274+
// if cookie-based debugging is allowed.
273275
"source_debug_key": "[64 bit unsigned integer]",
274276
"trigger_debug_key": "[64 bit unsigned integer]",
275277

@@ -503,6 +505,9 @@ As the trigger context ID in the aggregatable report explicitly reveals the
503505
association between the report and the trigger, these reports can be sent
504506
immediately without delay.
505507

508+
When a trigger context ID is provided, the aggregatable report will not count
509+
towards the limit of aggregatable reports per source, nor be limited by it.
510+
506511
Note: This is an [alternative](https://github.com/WICG/attribution-reporting-api/blob/main/report_verification.md#could-we-just-tag-reports-with-a-trigger_id-instead-of-using-anonymous-tokens)
507512
considered for [report verification](https://github.com/WICG/attribution-reporting-api/blob/main/report_verification.md),
508513
and achieves all of the higher priority [security goals](https://github.com/WICG/attribution-reporting-api/blob/main/report_verification.md#security-goals).
@@ -551,6 +556,56 @@ as when a trigger context ID is set.
551556

552557
See [flexible_filtering.md](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/flexible_filtering.md) for more details.
553558

559+
### Optional: named budgets
560+
561+
Named budgets is an optional feature that gives API callers the ability
562+
to manage `L1` contribution budget distribution across different types of
563+
attributions, addressing common challenges such as:
564+
565+
- Allocating the privacy budget between different types of attributions
566+
(e.g., biddable vs. non-biddable).
567+
- Distributing the budget across multiple product categories to prevent any
568+
single product category from consuming all available privacy budget.
569+
570+
[Source registrations](#attribution-source-registration) will accept an optional
571+
field `named_budgets`, which is a dictionary used to set the
572+
maximum contribution for each named budget for this source.
573+
574+
```jsonc
575+
{
576+
..., // existing fields
577+
"named_budgets": {
578+
"budgetName1": 32768, // Max contribution budget for budgetName1.
579+
"budgetName2": 32768 // Max contribution budget for budgetName2.
580+
}
581+
}
582+
```
583+
584+
[Trigger registrations](#attribution-trigger-registration) will accept an
585+
optional field `named_budgets`, which will be used to select the
586+
named budget for the generated aggregatable report.
587+
588+
```jsonc
589+
{
590+
..., // existing fields
591+
"named_budgets": [
592+
{
593+
"name": "budgetName1",
594+
"filters": {"source_type": ["navigation"]}
595+
}
596+
]
597+
}
598+
```
599+
600+
The first named budget from the trigger that matches the source's filter data
601+
will be selected. If there is no budget name specified or no matching filters, the
602+
`L1` contribution budget will still be applied.
603+
604+
When generating an aggregatable report, in addition to performing the
605+
current `L1` budget limit check, the contributions for the report will
606+
be checked against the available budget with the selected budget name, if applicable.
607+
If the budget is insufficient, the aggregatable report will not be generated.
608+
554609
## Data processing through a Secure Aggregation Service
555610

556611
The exact design of the service is not specified here. We expect to have more

AGGREGATION_SERVICE_TEE.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Aggregation Service for the Attribution Reporting API
22

3-
Authors:
4-
* Carlos Cela <cjcela@google.com>
5-
* Ruchi Lohani <rlohani@google.com>
6-
* Martin Pál <mpal@google.com>
7-
* Chanda Patel <chandapatel@google.com>
3+
## Authors
4+
* Carlos Cela (cjcela@google.com)
5+
* Ruchi Lohani (rlohani@google.com)
6+
* Martin Pál (mpal@google.com)
7+
* Chanda Patel (chandapatel@google.com)
88

99
## Introduction
1010

@@ -96,6 +96,7 @@ throughout this proposal.
9696
* _Coordinator:_ an entity responsible for key management and aggregatable report
9797
accounting. The coordinator maintains a list of hashes of approved aggregation
9898
service configurations and configures access to decryption keys.
99+
* _Shared ID:_ A unique identifier assigned to a group of reports in combination with [filtering IDs](https://github.com/patcg-individual-drafts/private-aggregation-api/blob/main/flexible_filtering.md#proposal-filtering-id-in-the-encrypted-payload) to prevent overlap between batches of reports. This eliminates the need to track individual reports and allows for efficient privacy budget management at the group level.
99100

100101
## Aggregation workflow
101102

@@ -243,7 +244,7 @@ single aggregation batch (as duplicates) or in multiple batches. Because
243244
of this, the aggregation service enforces a "no duplicates" rule:
244245

245246
* No aggregatable report can appear more than once within a batch.
246-
* No aggregatable report can appear in more than one batch or contribute
247+
* No Shared ID can appear in more than one batch or contribute
247248
to more than one summary report.
248249

249250
The no-duplicates rule is enforced during aggregation. If duplicates are
@@ -254,8 +255,8 @@ found, these batches may be rejected or duplicates may be filtered out.
254255
It is not technically practical to keep track of every single aggregatable
255256
report submitted for aggregation to check for batch disjointness, that is,
256257
that batches are not overlapping. Instead, each aggregatable report will
257-
be assigned a shared ID. This ID is generated from the combined data points: API version, reporting origin, destination site, source registration time and scheduled report time.
258-
These data points come from the report's [shared_info](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATE.md#aggregatable-reports) field.
258+
be assigned a shared ID. This ID is generated from the combined data points: API version, reporting origin, destination site, source registration time, scheduled report time, and filtering ID.
259+
These data points come from the report's [shared_info](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATE.md#aggregatable-reports) field and from the job parameter in the request.
259260

260261
The aggregation service will enforce that all aggregatable reports with
261262
the same ID must be included in the same batch. Conversely, if more than

EVENT.md

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,15 @@ window.open(
149149
attributionsrc="https://adtech.example/attribution_source?my_ad_id=123">
150150
```
151151
152-
The `attributionsrc` attribute on `<a>`, `<img>`, and `<script>` may be empty or
152+
The `attributionsrc` attribute on `<a>`, `<area>`, `<img>`, and `<script>` may be empty or
153153
non-empty. If it is non-empty, it contains a space-separated list of URLs
154154
to which the browser will initiate a separate `keepalive` fetch request in the
155155
background. If it is empty, no background requests will be made. In both
156156
cases, the request(s) (originating from `href`, `src`, or `attributionsrc`) will
157157
contain an `Attribution-Reporting-Eligible` header that indicates the types of
158158
registrations that are allowed in the response.
159159
160-
For `<a>` and `window.open`, background requests, if any, are made when the user
160+
For `<a>`, `<area>`, and `window.open`, background requests, if any, are made when the user
161161
navigates. For `<img>` and `<script>`, background requests are made when the
162162
`attributionsrc` attribute is set on the DOM element.
163163
@@ -318,7 +318,7 @@ The reporting origin may use the value of this header to determine which
318318
registrations, if any, to include in its response. The browser will likewise
319319
ignore invalid registrations:
320320
321-
1. `<a>` and `window.open` will have `navigation-source`.
321+
1. `<a>`, `<area>`, and `window.open` will have `navigation-source`.
322322
2. Other APIs that automatically set `Attribution-Reporting-Eligible` (like
323323
`<img>`) will contain `event-source, trigger`.
324324
3. Requests from JavaScript, e.g. `window.fetch`, can set this header using an
@@ -725,28 +725,14 @@ fully understood during roll-out and help flush out any bugs (either in browser
725725
or caller code), and more easily compare the performance to cookie-based
726726
alternatives.
727727
728-
To ensure that this data (which could enable cross-site tracking) is only
729-
available in a transitional phase while third-party cookies are available and
730-
are already capable of user tracking, the browser will check (at both source
731-
and trigger registration) for the presence of a special cookie
732-
set by the reporting origin:
733-
```http
734-
Set-Cookie: ar_debug=1; SameSite=None; Secure; HttpOnly
735-
```
736-
If a cookie of this form is not present, debugging information will be ignored. Additionally,
737-
browsers may choose to enable debugging for specific use-cases (for example, reporting origins
728+
Debugging will only be permitted if third-party cookies are
729+
available for the current site, and will be prohibited if
730+
third-party cookies are disabled generally or for a particular site.
731+
732+
Additionally, browsers may choose to enable debugging for specific use-cases (for example, reporting origins
738733
can enable debugging without the cookie check for
739734
[Mode B groups during Chrome-facilitated testing](https://developers.google.com/privacy-sandbox/setup/web/chrome-facilitated-testing#mode-b)).
740735
741-
Note that in the context of proposals such as
742-
[CHIPS](https://github.com/privacycg/CHIPS), the cookie must be unpartitioned in
743-
order to allow debug keys to be registered.
744-
745-
Responses that register sources/triggers can also set the `ar_debug` cookie to
746-
ensure that registration is eligible for debug reports. When using the `fetch`
747-
APIs to do this, it will require ensuring the request is allowed to include
748-
[`credentials`](https://developer.mozilla.org/en-US/docs/Web/API/fetch).
749-
750736
#### Attribution-success debugging reports
751737
752738
Source and trigger registrations will both accept a new field `debug_key`:
@@ -818,8 +804,11 @@ The debugging reports will be sent to a new endpoint:
818804
https://<reporting origin>/.well-known/attribution-reporting/debug/verbose
819805
```
820806
821-
In order to receive verbose debug reports on trigger registrations, the special
822-
`ar_debug` cookie needs to be present for both source and trigger registrations.
807+
In order to receive verbose debug reports on trigger registrations, the
808+
reporting origin needs to be able to access third-party cookies on the
809+
destination site. If the trigger is attributed to a source, the reporting
810+
origin also needed to be able to access third-party cookies on the source site
811+
at the time of source registration.
823812
824813
TODO: Consider adding support for the top-level site to opt in to receiving
825814
debug reports without cross-site leak.

aggregate_debug_reporting.md

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,29 @@
44
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
55
**Table of Contents**
66

7-
- [Aggregate Debug Reporting](#aggregate-debug-reporting)
8-
- [Introduction](#introduction)
9-
- [API changes](#api-changes)
10-
- [Opting-in aggregate debug reporting](#opting-in-aggregate-debug-reporting)
11-
- [Aggregatable debug reports](#aggregatable-debug-reports)
12-
- [Encrypted payload](#encrypted-payload)
13-
- [Privacy and Security](#privacy-and-security)
14-
- [Contribution bounding and budgeting](#contribution-bounding-and-budgeting)
15-
- [Make count of reports deterministic with null reports](#make-count-of-reports-deterministic-with-null-reports)
16-
- [Rate limits](#rate-limits)
17-
- [No reporting delay](#no-reporting-delay)
18-
- [Future considerations](#future-considerations)
19-
- [Report verification with debug context ID](#report-verification-with-debug-context-id)
20-
- [Application to aggregate error reporting for the Private Aggregation API](#application-to-aggregate-error-reporting-for-the-private-aggregation-api)
7+
- [Authors](#authors)
8+
- [Introduction](#introduction)
9+
- [API changes](#api-changes)
10+
- [Opting-in aggregate debug reporting](#opting-in-aggregate-debug-reporting)
11+
- [Aggregatable debug reports](#aggregatable-debug-reports)
12+
- [Encrypted payload](#encrypted-payload)
13+
- [Privacy and Security](#privacy-and-security)
14+
- [Contribution bounding and budgeting](#contribution-bounding-and-budgeting)
15+
- [Make count of reports deterministic with null reports](#make-count-of-reports-deterministic-with-null-reports)
16+
- [Rate limits](#rate-limits)
17+
- [No reporting delay](#no-reporting-delay)
18+
- [Future considerations](#future-considerations)
19+
- [Report verification with debug context ID](#report-verification-with-debug-context-id)
20+
- [Application to aggregate error reporting for the Private Aggregation API](#application-to-aggregate-error-reporting-for-the-private-aggregation-api)
2121

2222
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
2323

24+
## Authors
25+
26+
* John Delaney (johnidel@chromium.org)
27+
* Arpana Hosabettu (arpanah@chromium.org)
28+
* Nan Lin (linnan@chromium.org)
29+
2430
## Introduction
2531

2632
The [transitional debugging reports](https://github.com/WICG/attribution-reporting-api/blob/main/EVENT.md#optional-transitional-debugging-reports),

aggregate_key_discovery.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Summary reports with key discovery
22

3+
## Authors
4+
5+
* Charlie Harrison (csharrison@chromium.org)
6+
* Hidayet Aksu (aksu@google.com)
7+
8+
9+
## Introduction
310
This document describes possible new functionality in the server-side mechanisms for the aggregation service, which allows ad techs to query the Attribution Reporting API’s and Private Aggregation API’s summary reports without [pre-declaring every aggregation bucket](https://github.com/WICG/attribution-reporting-api/blob/main/AGGREGATION_SERVICE_TEE.md#pre-declaring-aggregation-buckets).
411

512
This proposal is backward compatible; ad techs can still work with pre-declared buckets.

app_to_web.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# Cross App and Web Attribution Measurement
22

3-
## Authors:
4-
* Charlie Harrison
5-
* Michael Thiessen
6-
* John Delaney
3+
## Authors
4+
* Arpana Hosabettu (arpanah@chromium.org)
5+
* Charlie Harrison (csharrison@chromium.org)
6+
* John Delaney (johnidel@chromium.org)
7+
* Michael Thiessen (mthiesse@google.com)
78

89
## Participate
910
See [Participate](https://github.com/WICG/conversion-measurement-api#participate).

ara-tester-list.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ The usefulness of this page depends on testers sharing information and updates;
5757
| KelkooGroup | Adtech services for affiliate marketing | From 01.12.2023 | | privacysandbox@kelkoogroup.com |
5858
| Quantcast | Demand-side platform (DSP) | Testing ongoing | | chrome-privacy-sandbox@quantcast.com |
5959
| Optable | Adtech services | Testing ongoing | | privacysandbox@optable.co |
60+
| UOL | Adtech | | | privacysandbox@uolinc.com |
61+
| Taboola | Adtech | Testing ongoing | | privacy-sandbox@taboola.com |
62+
| Basis | DSP | 2024 | | |
63+
6064

6165
## Table - Publishers and Advertisers Interested in Testing or Early Adoption
6266
Companies who may be interested in participating in tests and early adoption opportunities provided by ad tech companies.
@@ -69,3 +73,4 @@ Companies who may be interested in participating in tests and early adoption opp
6973
| Globo | Publisher | | adtech-delivery@g.globo |
7074
| A Gazeta | Publisher | | cdutra@redegazeta.com.br |
7175
| Bullwhip Technologies | Analytics SaaS | | privacysandbox@bullwhip.io |
76+
| UOL | Publisher | | privacysandbox@uolinc.com |

0 commit comments

Comments
 (0)