Skip to content

Commit 4bb9c76

Browse files
committed
Spec: add glue for Private Aggregation's per-context contribution limits
Explainer: patcg-individual-drafts/private-aggregation-api#146 Spec change: patcg-individual-drafts/private-aggregation-api#164
1 parent 7f754f0 commit 4bb9c76

1 file changed

Lines changed: 47 additions & 9 deletions

File tree

spec.bs

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ spec: private-aggregation-api; urlPrefix: https://patcg-individual-drafts.github
9696
text: contribution cache entry; url: #contribution-cache-entry
9797
text: contribution cache; url: #contribution-cache
9898
text: default filtering id max bytes; url: #default-filtering-id-max-bytes
99+
text: pre-specified report parameters
100+
for: pre-specified report parameters
101+
text: context ID
102+
text: filtering ID max bytes
103+
text: requested max contributions
104+
text: set the pre-specified report parameters for a batching scope
99105
spec: Shared Storage API; urlPrefix: https://wicg.github.io/shared-storage
100106
type: dfn
101107
text: shared-storage; url: #permissionspolicy-shared-storage
@@ -247,7 +253,12 @@ dictionary GenerateBidInterestGroup {
247253
record<DOMString, sequence<DOMString>> sizeGroups;
248254
};
249255

250-
dictionary ProtectedAudiencePrivateAggregationConfig {
256+
dictionary ProtectedAudienceAuctionPrivateAggregationConfig {
257+
USVString aggregationCoordinatorOrigin;
258+
[EnforceRange] unsigned long long maxContributions;
259+
};
260+
261+
dictionary ProtectedAudienceInterestGroupPrivateAggregationConfig {
251262
USVString aggregationCoordinatorOrigin;
252263
};
253264

@@ -256,7 +267,7 @@ dictionary AuctionAdInterestGroup : GenerateBidInterestGroup {
256267
record<DOMString, double> prioritySignalsOverrides;
257268
required double lifetimeMs;
258269
DOMString additionalBidKey;
259-
ProtectedAudiencePrivateAggregationConfig privateAggregationConfig;
270+
ProtectedAudienceInterestGroupPrivateAggregationConfig privateAggregationConfig;
260271
};
261272
</xmp>
262273

@@ -772,7 +783,7 @@ dictionary AuctionAdConfig {
772783
record<DOMString, AuctionReportBuyersConfig> auctionReportBuyers;
773784
AuctionReportBuyerDebugModeConfig auctionReportBuyerDebugModeConfig;
774785
sequence<DOMString> requiredSellerCapabilities;
775-
ProtectedAudiencePrivateAggregationConfig privateAggregationConfig;
786+
ProtectedAudienceAuctionPrivateAggregationConfig privateAggregationConfig;
776787

777788
record<DOMString, DOMString> requestedSize;
778789
sequence<record<DOMString, DOMString>> allSlotsRequestedSizes;
@@ -1744,14 +1755,28 @@ To <dfn>check if required seller capabilities are permitted</dfn> given an [=auc
17441755
</div>
17451756

17461757
<div algorithm>
1747-
To <dfn>obtain the coordinator from a Private Aggregation config</dfn> given a
1748-
{{ProtectedAudiencePrivateAggregationConfig}} |config|, perform the following
1749-
steps. They return an [=aggregation coordinator=], null or a {{DOMException}}.
17501758

1751-
1. If |config|["{{ProtectedAudiencePrivateAggregationConfig/aggregationCoordinatorOrigin}}"]
1752-
does not [=map/exist=], return null.
1759+
To <dfn>obtain the coordinator from a Private Aggregation config</dfn> given a
1760+
{{ProtectedAudienceAuctionPrivateAggregationConfig}} or
1761+
{{ProtectedAudienceInterestGroupPrivateAggregationConfig=] |config|, perform the
1762+
following steps. They return an [=aggregation coordinator=], null or a
1763+
{{DOMException}}.
1764+
1765+
1. Let |originString| be null.
1766+
1. If |config| is a {{ProtectedAudienceAuctionPrivateAggregationConfig}}:
1767+
1. If
1768+
|config|["{{ProtectedAudienceAuctionPrivateAggregationConfig/aggregationCoordinatorOrigin}}"]
1769+
does not [=map/exist=], return null.
1770+
1. Set |originString| to
1771+
|config|["{{ProtectedAudienceAuctionPrivateAggregationConfig/aggregationCoordinatorOrigin}}"].
1772+
1. If |config| is a {{ProtectedAudienceInterestGroupPrivateAggregationConfig}}:
1773+
1. If
1774+
|config|["{{ProtectedAudienceInterestGroupPrivateAggregationConfig/aggregationCoordinatorOrigin}}"]
1775+
does not [=map/exist=], return null.
1776+
1. Set |originString| to
1777+
|config|["{{ProtectedAudienceInterestGroupPrivateAggregationConfig/aggregationCoordinatorOrigin}}"].
17531778
1. Return the result of [=obtaining the Private Aggregation coordinator=] given
1754-
|config|["{{ProtectedAudiencePrivateAggregationConfig/aggregationCoordinatorOrigin}}"].
1779+
|originString|.
17551780

17561781
</div>
17571782

@@ -4799,6 +4824,15 @@ an [=auction config=] |auctionConfig| and a [=reporting context=] |reportingCont
47994824
1. [=map/For each=] (|origin|, <var ignore>aggregationCoordinator</var>) →
48004825
|batchingScope| of |reportingContext|'s [=reporting context/private aggregation batching
48014826
scope map=]:
4827+
1. Let |preSpecifiedParams| be a new [=pre-specified report parameters=] with the items:
4828+
: <a spec="private-aggregation-api" for="pre-specified report parameters">context ID</a>
4829+
:: null
4830+
: [=pre-specified report parameters/filtering ID max bytes=]
4831+
:: [=default filtering ID max bytes=]
4832+
: [=requested max contributions=]
4833+
:: |auctionConfig|'s [=auction config/requested max contributions=]
4834+
1. [=Set the pre-specified report parameters for a batching scope=] given
4835+
|preSpecifiedParams| and |batchingScope|.
48024836
1. [=Process contributions for a batching scope=] given |batchingScope|, |origin|,
48034837
"<code>protected-audience</code>" and null.
48044838

@@ -8321,6 +8355,10 @@ An <dfn export>auction config</dfn> is a [=struct=] with the following [=struct/
83218355
:: A [=map=] from [=strings=] to {{AuctionReportBuyersConfig}}s. For buyer metrics delegated to be
83228356
reported to the seller via the [Private Aggregation API](https://github.com/patcg-individual-drafts/private-aggregation-api),
83238357
this determines how each metric bucket is chosen inside the buyer's space, and how to scale it.
8358+
: <dfn>requested max contributions</dfn>
8359+
:: Null or a positive integer. Used to override [Private Aggregation
8360+
API](https://github.com/patcg-individual-drafts/private-aggregation-api)'s
8361+
default number of contributions per report.
83248362
<!-- TODO: this should probably use enums instead -->
83258363
: <dfn>auction report buyer debug details</dfn>
83268364
:: A [=debug details=], initially a new one. Configures

0 commit comments

Comments
 (0)