<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-ppm-dap-attribution-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DAP Extensions for Attribution">Distributed Aggregation Protocol (DAP) Extensions for the Attribution API</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-ppm-dap-attribution-01"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2026" month="February" day="18"/>
    <area>Security</area>
    <workgroup>Privacy Preserving Measurement</workgroup>
    <keyword>decibels</keyword>
    <keyword>replay</keyword>
    <abstract>
      <?line 93?>

<t>This defines extensions to the DAP protocol
that support the Attribution API.
These extensions provide support for differentially-private aggregation
and the operating modes that the Attribution API depends on.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/dap-attribution/draft-thomson-ppm-dap-attribution.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-ppm-dap-attribution/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Privacy Preserving Measurement Working Group mailing list (<eref target="mailto:ppm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ppm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ppm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/dap-attribution"/>.</t>
    </note>
  </front>
  <middle>
    <?line 101?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Attribution API <xref target="ATTR"/> is a web platform feature
that provides sites that use advertising
with the ability to measure the effectiveness of that advertising.
Measurements that the API produce are aggregated
using the Distributed Aggregation Protocol (DAP) <xref target="DAP"/>.</t>
      <t>This document defines extensions to DAP
that support the use of DAP by the Attribution API.
These extensions fall into two categories:</t>
      <ul spacing="normal">
        <li>
          <t>Support for the differential privacy model
used in the Attribution API.</t>
        </li>
        <li>
          <t>Support for the operational modes
that better fit the deployment model that the Attribution API uses.</t>
        </li>
      </ul>
      <t>These extensions are not narrowly defined
such that they can only be used by the Attribution API.
Other applications might be able to use them,
but any effort to make them fully generic
stops short of making the extensions more complex
that is required for Attribution.</t>
      <t>For example, privacy budget extensions are defined
to use the epsilon definition
from (ε, 0)-differential privacy
or (ε, δ)-differential privacy with a fixed δ value.
This is simpler than a design
that might allow for multiple budget metrics.</t>
      <section anchor="differential-privacy-in-attribution">
        <name>Differential Privacy in Attribution</name>
        <t>The Attribution API provides information to websites
based on user activity on other websites,
which is ordinarily prohibited for privacy reasons <xref target="WEB-PRIV"/>.</t>
        <t>To protect privacy,
the Attribution API uses differential privacy <xref target="DP"/>
in a combination of the central and individual models <xref target="ATTR-DP"/>.
The privacy architecture of the Attribution API
allocates responsibility for managing sensitivity and privacy budgets
to browser instances (DAP Clients)
and for the addition of noise
to an aggregation service (DAP Aggregators, collectively).</t>
        <t>To this end,
reports that are submitted for aggregation need to be bound
to the privacy budget that was expended at a Client
when the report was generated.
This ensures that Aggregators can apply noise
with sufficient amplitude
to maintain the intended differential privacy guarantee.</t>
        <t>An extension that reports the amount of privacy budget
that was consumed in the generation of a report
is described in <xref target="dp"/>.</t>
      </section>
      <section anchor="attribution-operating-mode-extensions">
        <name>Attribution Operating Mode Extensions</name>
        <t>The Attribution API is expected to operate in a mode
that differs somewhat from the way that DAP is architected.
Several extensions are defined to support this operating mode.</t>
        <t>In DAP, a task is a long-running context
that Clients continuously contribute to.
Reports are directly uploaded by Clients to the Leader
as they are generated.
The DAP batch mode determines how reports are grouped for aggregation.
A new collection job is initiated by the Collector
when an aggregate is needed,
though this might fail if the requirements for the task --
the batch mode and minimum batch size, primary --
are not met.</t>
        <t>A simple representation of the DAP architecture
is illustrated in <xref target="f-arch-dap"/>.</t>
        <figure anchor="f-arch-dap">
          <name>Simplified DAP Architecture</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,112 L 8,144" fill="none" stroke="black"/>
                <path d="M 24,128 L 24,160" fill="none" stroke="black"/>
                <path d="M 40,144 L 40,176" fill="none" stroke="black"/>
                <path d="M 88,112 L 88,128" fill="none" stroke="black"/>
                <path d="M 104,128 L 104,144" fill="none" stroke="black"/>
                <path d="M 120,144 L 120,176" fill="none" stroke="black"/>
                <path d="M 232,32 L 232,64" fill="none" stroke="black"/>
                <path d="M 232,144 L 232,176" fill="none" stroke="black"/>
                <path d="M 266,72 L 266,136" fill="none" stroke="black"/>
                <path d="M 262,72 L 262,136" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,64" fill="none" stroke="black"/>
                <path d="M 304,144 L 304,176" fill="none" stroke="black"/>
                <path d="M 424,144 L 424,176" fill="none" stroke="black"/>
                <path d="M 520,144 L 520,176" fill="none" stroke="black"/>
                <path d="M 232,32 L 304,32" fill="none" stroke="black"/>
                <path d="M 232,64 L 304,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 88,112" fill="none" stroke="black"/>
                <path d="M 24,128 L 104,128" fill="none" stroke="black"/>
                <path d="M 8,144 L 24,144" fill="none" stroke="black"/>
                <path d="M 40,144 L 120,144" fill="none" stroke="black"/>
                <path d="M 136,144 L 216,144" fill="none" stroke="black"/>
                <path d="M 232,144 L 304,144" fill="none" stroke="black"/>
                <path d="M 424,144 L 520,144" fill="none" stroke="black"/>
                <path d="M 24,160 L 40,160" fill="none" stroke="black"/>
                <path d="M 136,160 L 216,160" fill="none" stroke="black"/>
                <path d="M 320,160 L 408,160" fill="none" stroke="black"/>
                <path d="M 40,176 L 120,176" fill="none" stroke="black"/>
                <path d="M 136,176 L 216,176" fill="none" stroke="black"/>
                <path d="M 232,176 L 304,176" fill="none" stroke="black"/>
                <path d="M 320,176 L 408,176" fill="none" stroke="black"/>
                <path d="M 424,176 L 520,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="416,176 404,170.4 404,181.6" fill="black" transform="rotate(0,408,176)"/>
                <polygon class="arrowhead" points="328,160 316,154.4 316,165.6" fill="black" transform="rotate(180,320,160)"/>
                <polygon class="arrowhead" points="272,136 260,130.4 260,141.6" fill="black" transform="rotate(90,264,136)"/>
                <polygon class="arrowhead" points="272,72 260,66.4 260,77.6" fill="black" transform="rotate(270,264,72)"/>
                <polygon class="arrowhead" points="224,176 212,170.4 212,181.6" fill="black" transform="rotate(0,216,176)"/>
                <polygon class="arrowhead" points="224,160 212,154.4 212,165.6" fill="black" transform="rotate(0,216,160)"/>
                <polygon class="arrowhead" points="224,144 212,138.4 212,149.6" fill="black" transform="rotate(0,216,144)"/>
                <g class="text">
                  <text x="268" y="52">Helper</text>
                  <text x="316" y="100">Validate &amp;</text>
                  <text x="312" y="116">Aggregate</text>
                  <text x="168" y="132">Reports</text>
                  <text x="364" y="148">Collection</text>
                  <text x="80" y="164">Clients</text>
                  <text x="268" y="164">Leader</text>
                  <text x="472" y="164">Collector</text>
                  <text x="364" y="196">Result</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                            +--------+
                            | Helper |
                            +--------+
                                ^
                                ║ Validate &
+---------+                     ║ Aggregate
| +-------+-+    Reports        v
+-+ +-------+-+ ----------> +--------+  Collection  +-----------+
  +-+ Clients | ----------> | Leader | <----------- | Collector |
    +---------+ ----------> +--------+ -----------> +-----------+
                                          Result
]]></artwork>
          </artset>
        </figure>
        <t>In the Attribution API,
reports are delivered to the website that requests them.
The site is expected to gather a bundle of reports
and submit them for aggregation
when they have a sufficiently large set.</t>
        <t>An important feature of this design is that the website
(as a DAP Collector)
chooses which reports to aggregate.
This gives the site an opportunity to review the circumstances
in which reports were generated
and filter reports according to their needs.</t>
        <t>A secondary reason for Clients to deliver reports to the website,
rather than submit them directly to the Leader,
is that this removes a real-time dependency on the Leader.
A Leader can therefore be less available
than the sites that depend on its services.</t>
        <t>A simple representation of the architecture used by the Attribution API
is illustrated in <xref target="f-arch-attr"/>.</t>
        <figure anchor="f-arch-attr">
          <name>Attribution API Architecture</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="616" viewBox="0 0 616 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,96 L 8,144" fill="none" stroke="black"/>
                <path d="M 24,112 L 24,160" fill="none" stroke="black"/>
                <path d="M 40,128 L 40,176" fill="none" stroke="black"/>
                <path d="M 112,96 L 112,112" fill="none" stroke="black"/>
                <path d="M 128,112 L 128,128" fill="none" stroke="black"/>
                <path d="M 144,128 L 144,176" fill="none" stroke="black"/>
                <path d="M 256,128 L 256,176" fill="none" stroke="black"/>
                <path d="M 352,128 L 352,176" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                <path d="M 488,144 L 488,176" fill="none" stroke="black"/>
                <path d="M 522,72 L 522,136" fill="none" stroke="black"/>
                <path d="M 518,72 L 518,136" fill="none" stroke="black"/>
                <path d="M 560,32 L 560,64" fill="none" stroke="black"/>
                <path d="M 560,144 L 560,176" fill="none" stroke="black"/>
                <path d="M 488,32 L 560,32" fill="none" stroke="black"/>
                <path d="M 488,64 L 560,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 112,96" fill="none" stroke="black"/>
                <path d="M 24,112 L 128,112" fill="none" stroke="black"/>
                <path d="M 40,128 L 144,128" fill="none" stroke="black"/>
                <path d="M 160,128 L 240,128" fill="none" stroke="black"/>
                <path d="M 256,128 L 352,128" fill="none" stroke="black"/>
                <path d="M 8,144 L 24,144" fill="none" stroke="black"/>
                <path d="M 160,144 L 240,144" fill="none" stroke="black"/>
                <path d="M 488,144 L 560,144" fill="none" stroke="black"/>
                <path d="M 24,160 L 40,160" fill="none" stroke="black"/>
                <path d="M 160,160 L 240,160" fill="none" stroke="black"/>
                <path d="M 368,158 L 472,158" fill="none" stroke="black"/>
                <path d="M 368,162 L 472,162" fill="none" stroke="black"/>
                <path d="M 40,176 L 144,176" fill="none" stroke="black"/>
                <path d="M 160,176 L 240,176" fill="none" stroke="black"/>
                <path d="M 256,176 L 352,176" fill="none" stroke="black"/>
                <path d="M 368,176 L 472,176" fill="none" stroke="black"/>
                <path d="M 488,176 L 560,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,136 516,130.4 516,141.6" fill="black" transform="rotate(90,520,136)"/>
                <polygon class="arrowhead" points="528,72 516,66.4 516,77.6" fill="black" transform="rotate(270,520,72)"/>
                <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                <polygon class="arrowhead" points="376,176 364,170.4 364,181.6" fill="black" transform="rotate(180,368,176)"/>
                <polygon class="arrowhead" points="248,176 236,170.4 236,181.6" fill="black" transform="rotate(0,240,176)"/>
                <polygon class="arrowhead" points="248,160 236,154.4 236,165.6" fill="black" transform="rotate(0,240,160)"/>
                <polygon class="arrowhead" points="248,144 236,138.4 236,149.6" fill="black" transform="rotate(0,240,144)"/>
                <polygon class="arrowhead" points="248,128 236,122.4 236,133.6" fill="black" transform="rotate(0,240,128)"/>
                <g class="text">
                  <text x="524" y="52">Helper</text>
                  <text x="572" y="100">Validate &amp;</text>
                  <text x="192" y="116">Reports</text>
                  <text x="568" y="116">Aggregate</text>
                  <text x="408" y="132">Batched</text>
                  <text x="88" y="148">Clients</text>
                  <text x="304" y="148">Collector</text>
                  <text x="408" y="148">Reports</text>
                  <text x="92" y="164">(Browsers)</text>
                  <text x="304" y="164">(Website)</text>
                  <text x="524" y="164">Leader</text>
                  <text x="404" y="196">Result</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                                                            +--------+
                                                            | Helper |
                                                            +--------+
                                                                ^
+------------+                                                  ║ Validate &
| +----------+-+    Reports                                     ║ Aggregate
| | +----------+-+ ----------> +-----------+   Batched          v
+-+ |  Clients   | ----------> | Collector |   Reports      +--------+
  +-+ (Browsers) | ----------> | (Website) | =============> | Leader |
    +------------+ ----------> +-----------+ <------------- +--------+
                                               Result
]]></artwork>
          </artset>
        </figure>
        <t>To support this mode of operation,
a new batch mode for DAP is defined
called "collector-selected"; see <xref target="batch-mode"/>.
For other batch modes,
the Leader has sufficient information to select reports
for inclusion in a collection job.
In comparison,
this batch mode requires that reports carry an annotation
set by the Collector
at the time that each report is uploaded.</t>
      </section>
      <section anchor="other-extensions">
        <name>Other Extensions</name>
        <t>Three other extensions are defined in this document.</t>
        <t>The minimum privacy budget collection job extension (<xref target="min-dp"/>)
added to collection job initialization
places guardrails around what reports can be included
in a collection job.
Reports that lack a privacy budget extension
or those with a value below the indicated threshold
must be rejected by Aggregators.</t>
        <t>For the Attribution API,
setting a minimum privacy budget
is roughly equivalent to capping the noise
that is added to an aggregate.
Without this extension,
noise could be determined from the privacy budget values
bound to each report.
This ensures that reports that do not match expectations
can be dropped efficiently,
rather than having Aggregators add unexpectedly large amounts of noise.</t>
        <t>The collector identity task extension (<xref target="collector-id"/>)
binds the identity of the Collector to tasks.
This extension fixes the entity can request collection of reports.</t>
        <t>In the Attribution API,
the Collector is either a "conversion site",
or an "internediary site"; see <xref target="ATTR"/>.
The conversion site is the top-level site where reports are generated.
An intermediary site is any entity that operates
independently from the top-level site,
and it includes the providers of resources (such as images or other content)
and framed content (that is, HTML iframes).</t>
        <t>The budget source task extension (<xref target="budget-source"/>)
binds the identity of the context that provides privacy budget
to tasks.
This extension ensures that reports
that draw from different privacy budgets
cannot be aggregated together.</t>
        <t>For the Attribution API,
each "conversion site" receives their own source of privacy budget.
Binding tasks to their identity
ensures that the privacy guarantees
associated with that privacy budget hold
when Aggregators are responsible for adding noise.
That is, reports that draw from different budgets
cannot be aggregated together with a single quantity of noise.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document relies on the definitions in DAP <xref target="DAP"/>
for protocol roles and functions.
Some reference is made to the terms and concepts in the Attribution API <xref target="ATTR"/>,
though familiarity with these should not be necessary
to understand how the extensions interact with DAP.</t>
    </section>
    <section anchor="dp">
      <name>Differential Privacy Budget Report Extension</name>
      <t>The privacy budget report extension (see <xref section="4.4.3" sectionFormat="of" target="DAP"/>)
codepoint 0xTBD,
encodes the amount of privacy budget
that might have been expended by a Client
as a result of producing a report.</t>
      <t>The value of the codepoint is
an integer encoding of the number of micro-epsilons
of budget that are expended.
That is, each unit is a one-millionth of an epsilon (ε)
as used in (ε, δ)-differential privacy.</t>
      <t>The micro-epsilon value is encoded as a 32-bit integer
in network byte order.
This permits expenditure of up to ε=4294.967295 to be encoded.</t>
      <section anchor="privacy-budgeting">
        <name>Privacy Budgeting</name>
        <t>A privacy budget ensures that the total information release
can be bounded
while providing more flexibility to the recipients
of the noisy results.
Recipients are able to adjust how budget is used
to control how noise is distributed
across multiple information releases.</t>
        <t>The amount of noise added to aggregates
is based on the expended budget.
In general,
spending more privacy budget means that less noise is needed
to maintain the same level of privacy;
conversely, spending less budget means more noise.</t>
        <t>A budget might be specified in terms of a metric
(like the epsilon parameter in (ε, δ)-differential privacy)
that is expended with each information release.
As noted, this extension uses the ε metric.</t>
        <t>For example, for an overall budget of ε=10
might be split four ways: (0.5, 1.5, 2, 6).
Noise might then be added,
drawing from a distribution
with a width inversely proportional to the budget spent;
that is, a distribution with a standard deviation proportional to
2, 2/3, 1/2, and 1/6 respectively.</t>
      </section>
      <section anchor="applicability-to-differential-privacy-models">
        <name>Applicability to Differential Privacy Models</name>
        <t>The extensions in this document (<xref target="dp"/> and <xref target="min-dp"/>)
only support ε-differential privacy
or (ε, δ)-differential privacy with a fixed delta (δ).
Systems that use other budgeting methods
require the use of a different extension.</t>
        <t>A delta (δ) parameter is not directly bound to reports.
This parameter is rarely used in privacy budgeting.
Instead, a maximum value for δ might be fixed
as part of the configuration in a specific deployment.
Setting a value for δ is necessary
when selecting a differential privacy mechanism.
In setting a value for δ,
a deployment needs to consider the total report volume
and the total number of tasks that each client might contribute to.</t>
        <aside>
          <t>Note: Where the delta (δ) value is non-zero,
and a client might generate many reports,
clients might also need to limit the number of reports
to prevent the overall delta value from growing large.</t>
        </aside>
      </section>
      <section anchor="use-in-the-attribution-api">
        <name>Use in the Attribution API</name>
        <t>When used in the Attribution API <xref target="ATTR"/>,
the privacy budget report extension does not always encode the exact amount
of privacy budget that was expended.
The individual DP model used in Attribution (see <xref target="ATTR-DP"/>),
allows a Client to expend less of its budget than this value
for several reasons.</t>
        <t>This introduces some complexity,
because any reduction in the budget spent
is based on private information.
Consequently, any reduction in budget expenditure needs to be kept secret.
In that setting,
the extension reports the requested expenditure,
which is the maximum value that might have been spent.</t>
        <t>This extension gives users of the Attribution API
the ability to manage privacy budget expenditure
on a per-report basis.</t>
        <t>By binding the amount of budget spent to each report,
the Client can transfer responsibility
for applying noise to Aggregators.
The addition of noise in a single place
can ensure a better trade-off between
the amount of added noise
and privacy parameters.</t>
        <t>The Attribution API differs from some other uses of DAP.
which instead involve Clients adding noise to reports
at the time they are generated.
To maintain the usefulness of aggregates,
the amount of noise added by each Client is kept low.
To maintain strong privacy,
Clients partly rely on DAP mixing their contributions
with the contributions of other Clients,
following the shuffle DP approach <xref target="SHUFFLE"/>.
Such uses depend on attaining a certain minimum batch size
in order to meet their differential privacy targets.</t>
        <t>Applying noise during aggregation
reduces the importance of the minimum batch size
parameter in task configuration.
However, it adds to the work
that Clients need to trust Aggregators to perform.</t>
        <t>To maintain consistency with the DAP threat model for privacy
(see <xref section="8" sectionFormat="of" target="DAP"/>),
this can mean either performing noise addition in an MPC protocol
or having Aggregators each independently apply the requisite amount of noise.</t>
        <t>A number of MPC protocols for adding noise exist,
but these are often not efficient in the two-party setting
relative to the VDAF protocols typically used.
On the other hand,
the redundant addition of noise by Aggregators
results in more noise when both Aggregators are honest.
Even so,
adding two amounts of noise
often results in less overall noise
than other approaches.</t>
      </section>
    </section>
    <section anchor="batch-mode">
      <name>Collector-Selected Batch Mode</name>
      <t>The collector-selected batch mode
(codepoint 0xTBD)
give the Collector control over which reports are included in collection job.</t>
      <t>In this batch mode
the Leader is not able to determine the associated batch for a report
based on the contents of each report alone.
This differs from the existing leader-selected (<xref section="5.2" sectionFormat="of" target="DAP"/>)
or time interval (<xref section="5.1" sectionFormat="of" target="DAP"/>) batch modes.</t>
      <t>To that end,
uploads of reports use a different URL template
from the usual location for report uploads;
see <xref target="upload"/>.</t>
      <t>This arrangement prevents the Leader from accepting reports
until a collection job is created.
A Leader <bcp14>MAY</bcp14> accept hold requests to upload reports
for a short period prior to the creation of a collection job.
Accepting reports would be on the expectation
that a request to create the indicated collection job
is imminent or still being processed,
so it could reduce latency.</t>
      <t>However, the Leader <bcp14>MUST</bcp14> limit the reports it accepts
prior to accepting the corresponding collection job.
Without a limit,
the Leader gives malicious actors
the unrestricted capability to exhaust its resources.</t>
      <t>A Leader that does not accept reports <bcp14>MUST</bcp14> reject the request,
and can respond with an indication to try later.
This response could use a 404 status code
and the <tt>Retry-After</tt> response field;
see Sections <xref target="HTTP" section="15.5.5" sectionFormat="bare"/> and <xref target="HTTP" section="10.2.3" sectionFormat="bare"/> of <xref target="HTTP"/>.</t>
      <aside>
        <t>Where a collection job already exists,
the high entropy collection job ID in the URL
could make it unnecessary to require authentication of upload requests
for this batch mode; see <xref target="CAP-URL"/>.
This is not the case if reports are accepted
without confirming the existence of the identified collection job.</t>
      </aside>
      <t>A Leader <bcp14>MUST</bcp14> reject attempts
to upload reports to the regular report upload resource
(as defined in <xref section="4.5.2" sectionFormat="of" target="DAP"/>)
when the collector-selected batch mode is configured for a task.</t>
      <section anchor="upload">
        <name>Report Upload URL Template</name>
        <t>Reports in the collector-selected batch mode are uploaded
to a URL that follows the template:</t>
        <artwork><![CDATA[
{leader}/tasks/{task-id}/reports/{collection-job-id}
]]></artwork>
        <t>The inclusion of the collection job ID
(see <xref section="4.7" sectionFormat="of" target="DAP"/>)
differs from other batch modes
where the Collector does not need to provide
any additional information to a Leader.</t>
      </section>
      <section anchor="mode-params">
        <name>Batch Mode Parameters</name>
        <t>This batch mode uses the same parameters
as the leader-selected batch mode (<xref section="5.2" sectionFormat="of" target="DAP"/>).
That is, the payload Query.config is empty.
Both the PartialBatchSelector.config
and the BatchSelector.config contains a batch ID
that is assigned by the Leader.</t>
      </section>
    </section>
    <section anchor="min-dp">
      <name>Minimum Privacy Budget Collection Job Extension</name>
      <t>The minimum privacy budget collection job extension (see <xref section="4.6.2" sectionFormat="of" target="DAP"/>),
codepoint 0xTBD,
allows a Collector to inform Aggregators
of a minimum value for the privacy budget report extension
(see <xref target="dp"/>)
that it expects to be included in the collection job.</t>
      <t>The format of this extension
is a 32-bit network-endian encoding of an integer
in units of micro-epsilon.
This is identical to the format of the privacy budget report extension (<xref target="dp"/>).</t>
      <t>This extension is defined primarily as a safeguard.
In the absence of this extension,
Aggregators could determine the amount
of privacy budget that was expended by every report
and generate noise based on the minimum value across all reports.</t>
      <t>That approach is potentially error prone.
If a Collector accidentally includes a report with a much lower budget,
the Aggregate it receives would have more noise added than expected.
The collection job extension effectively sets a cap
on the noise that might be added.</t>
      <t>Aggregators can use this extension
in one of two ways:</t>
      <ul spacing="normal">
        <li>
          <t>The value in the collection job extension
directly determines the magnitude of the noise that is added
to the aggregate.</t>
        </li>
        <li>
          <t>The value is only used to filter reports
and the minimum value of the privacy budget report extension
across all accepted reports determines the magnitude of added noise.</t>
        </li>
      </ul>
      <t>Either approach maintains differential privacy guarantees.
The latter can result in adding less noise
in the case that the Collector provides a low value,
but is more complex to implement.
There is also no way provided to indicate to the Collector
that less noise was added than they might have planned.</t>
    </section>
    <section anchor="collector-id">
      <name>Collector Identity Task Extension</name>
      <t>The collector identity task extension (see <xref section="4.2.2" sectionFormat="of" target="DAP"/>),
codepoint 0xTBD,
binds the task --
and all reports submitted to that task --
to a single Collector.</t>
      <t>This extension does not specify how to encode the identity of the Collector.
Different uses of DAP can choose an encoding
that best suits the situation.</t>
      <t>The Attribution API has its own understanding
of how to encode the identity of the Collector.
The value is a UTF-8-encoded string
of the registrable domain
from the intermediary site tuple (if there is an intermediary site)
or the conversion site tuple (where there is no intermediary site).</t>
      <section anchor="collector-identity-and-hpke-configuration">
        <name>Collector Identity and HPKE Configuration</name>
        <t>Regardless of how the Collector is identified,
if an identity is included,
the Leader and Helper <bcp14>MUST</bcp14> have a process
for validating the HPKE configuration they use
to encrypt aggregate shares for the Collector.</t>
        <t>That process <bcp14>MUST</bcp14> provide confirmation that the identified entity
authorizes the HPKE configuration.
This does not depend on active proof of possession
for the corresponding private key <xref target="SIGMA"/>
but rather an affirmation that the public key
is approved by the identified entity.</t>
        <t>One option for Collector identification is to use a URL,
following the pattern used for the Leader and Helper;
see <xref section="4.2" sectionFormat="of" target="DAP"/>.
If the URL uses an authenticated protocol,
such as HTTP with the "https" scheme <xref target="RFC9110"/>,
retrieving an HPKE configuration from that URL
(or similarly authenticated resources
that are referenced from the response)
provides the necessary authorization for the included key.</t>
        <t>The Attribution API does not define a process
for authorizing a Collector HPKE configuration
based on the encoded Collector identity.</t>
      </section>
    </section>
    <section anchor="budget-source">
      <name>Budget Source Task Extension</name>
      <t>The budget source task extension (see <xref section="4.2.2" sectionFormat="of" target="DAP"/>),
codepoint 0xTBD,
binds a task --
and all reports submitted to that task --
to a single source of privacy budget.</t>
      <t>This extension does not specify how to encode the identity of this entity.
Different uses of DAP can choose an encoding
that best suits the needs of the differentially private usage.</t>
      <t>The Attribution API has its own understanding
of how to encode the identity of the budget source.
The value is a UTF-8-encoded string
of the registrable domain
from the conversion site tuple.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security factors specific to each extension
are covered in the respective sections.</t>
      <t>Use of DAP is subject to the security considerations
of DAP (<xref section="8" sectionFormat="of" target="DAP"/>)
and the VDAF that is in use (<xref section="9" sectionFormat="of" target="VDAF"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers a new batch mode
in the "DAP Batch Mode Identifiers" registry
established in <xref section="9.2.1" sectionFormat="of" target="DAP"/>.</t>
      <table anchor="t-dap-bm">
        <name>DAP Match Mode</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">collector_selected</td>
            <td align="left">
              <xref target="batch-mode"/></td>
          </tr>
        </tbody>
      </table>
      <t>This document registers task extensions
in the "DAP Task Extension Identifiers" registry
established in <xref section="9.2.2" sectionFormat="of" target="DAP"/>.</t>
      <t>New task extensions are tabulated
in <xref target="t-dap-task-ext"/>.</t>
      <table anchor="t-dap-task-ext">
        <name>Task Configuration Extensions</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">collector_identity</td>
            <td align="left">
              <xref target="collector-id"/></td>
          </tr>
          <tr>
            <td align="left">TBD</td>
            <td align="left">budget_source</td>
            <td align="left">
              <xref target="budget-source"/></td>
          </tr>
        </tbody>
      </table>
      <t>This document registers a DAP report extension
in the "DAP Report Extension Identifiers" registry
established in <xref section="9.2.3" sectionFormat="of" target="DAP"/>.</t>
      <t>The new report extension registration is tabulated
in <xref target="t-dap-report-ext"/>.</t>
      <table anchor="t-dap-report-ext">
        <name>DAP Extensions</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">privacy_budget</td>
            <td align="left">
              <xref target="dp"/></td>
          </tr>
        </tbody>
      </table>
      <t>This document registers a collection job extension
in the "DAP Collection Job Extension Identifiers" registry
established in <xref section="9.2.4" sectionFormat="of" target="DAP"/>.</t>
      <t>The new collection job extension is tabulated
in <xref target="t-dap-collect-ext"/>.</t>
      <table anchor="t-dap-collect-ext">
        <name>Collection Job Extensions</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">min_dp_budget</td>
            <td align="left">
              <xref target="min-dp"/></td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="DAP">
          <front>
            <title>Distributed Aggregation Protocol for Privacy Preserving Measurement</title>
            <author fullname="Tim Geoghegan" initials="T." surname="Geoghegan">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Brandon Pitman" initials="B." surname="Pitman">
              <organization>ISRG</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="30" month="January" year="2026"/>
            <abstract>
              <t>   There are many situations in which it is desirable to take
   measurements of data which people consider sensitive.  In these
   cases, the entity taking the measurement is usually not interested in
   people's individual responses but rather in aggregated data.
   Conventional methods require collecting individual responses and then
   aggregating them on some server, thus representing a threat to user
   privacy and rendering many such measurements difficult and
   impractical.  This document describes a multi-party Distributed
   Aggregation Protocol (DAP) for privacy preserving measurement which
   can be used to collect aggregate data without revealing any
   individual contributor's data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ppm-dap-17"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="VDAF">
          <front>
            <title>Verifiable Distributed Aggregation Functions</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="David Cook" initials="D." surname="Cook">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Phillipp Schoppmann" initials="P." surname="Schoppmann">
              <organization>Google</organization>
            </author>
            <date day="30" month="January" year="2026"/>
            <abstract>
              <t>   This document describes Verifiable Distributed Aggregation Functions
   (VDAFs), a family of multi-party protocols for computing aggregate
   statistics over user measurements.  These protocols are designed to
   ensure that, as long as at least one aggregation server executes the
   protocol honestly, individual measurements are never seen by any
   server in the clear.  At the same time, VDAFs allow the servers to
   detect if a malicious or misconfigured client submitted an invalid
   measurement.  Two concrete VDAFs are specified, one for general-
   purpose aggregation (Prio3) and another for heavy hitters (Poplar1).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-vdaf-18"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ATTR" target="https://w3c.github.io/attribution">
          <front>
            <title>Attribution API</title>
            <author initials="A." surname="Paseltiner" fullname="Andrew Paseltiner">
              <organization/>
            </author>
            <author initials="A." surname="Leiserson" fullname="Andy Leiserson">
              <organization/>
            </author>
            <author initials="B." surname="Case" fullname="Benjamin Case">
              <organization/>
            </author>
            <author initials="B." surname="Savage" fullname="Benjamin Savage">
              <organization/>
            </author>
            <author initials="C." surname="Harrison" fullname="Charlie Harrison">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date year="2025" month="January" day="14"/>
          </front>
        </reference>
        <reference anchor="ATTR-DP" target="https://arxiv.org/abs/2506.05290">
          <front>
            <title>Beyond Per-Querier Budgets: Rigorous and Resilient Global Privacy Enforcement for the W3C Attribution API</title>
            <author initials="P." surname="Tholoniat" fullname="Pierre Tholoniat">
              <organization/>
            </author>
            <author initials="A." surname="Caulfield" fullname="Alison Caulfield">
              <organization/>
            </author>
            <author initials="G." surname="Cavicchioli" fullname="Giorgio Cavicchioli">
              <organization/>
            </author>
            <author initials="M." surname="Chen" fullname="Mark Chen">
              <organization/>
            </author>
            <author initials="N." surname="Goutzoulias" fullname="Nikos Goutzoulias">
              <organization/>
            </author>
            <author initials="B." surname="Case" fullname="Benjamin Case">
              <organization/>
            </author>
            <author initials="A." surname="Cidon" fullname="Asaf Cidon">
              <organization/>
            </author>
            <author initials="R." surname="Geambasu" fullname="Roxana Geambasu">
              <organization/>
            </author>
            <author initials="M." surname="Lécuyer" fullname="Mathias Lécuyer">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date year="2025" month="October" day="14"/>
          </front>
        </reference>
        <reference anchor="CAP-URL" target="https://www.w3.org/TR/capability-urls/">
          <front>
            <title>Good Practices for Capability URLs</title>
            <author initials="J." surname="Tennison" fullname="Jeni Tennison">
              <organization/>
            </author>
            <date year="2014" month="February" day="18"/>
          </front>
        </reference>
        <reference anchor="SHUFFLE" target="https://arxiv.org/abs/2001.03618">
          <front>
            <title>Encode, Shuffle, Analyze Privacy Revisited: Formalizations and Empirical Evaluation</title>
            <author initials="Ú." surname="Erlingsson" fullname="Úlfar Erlingsson">
              <organization/>
            </author>
            <author initials="V." surname="Feldman" fullname="Vitaly Feldman">
              <organization/>
            </author>
            <author initials="I." surname="Mironov" fullname="Ilya Mironov">
              <organization/>
            </author>
            <author initials="A." surname="Raghunathan" fullname="Ananth Raghunathan">
              <organization/>
            </author>
            <author initials="S." surname="Song" fullname="Shuang Song">
              <organization/>
            </author>
            <author initials="K." surname="Talwar" fullname="Kunal Talwar">
              <organization/>
            </author>
            <author initials="A." surname="Thakurta" fullname="Abhradeep Thakurta">
              <organization/>
            </author>
            <date year="2020" month="January" day="10"/>
          </front>
        </reference>
        <reference anchor="SITE" target="https://html.spec.whatwg.org/#site">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
        </reference>
        <reference anchor="WEB-PRIV" target="https://w3ctag.github.io/privacy-principles/">
          <front>
            <title>Privacy Principles</title>
            <author initials="R." surname="Berjon" fullname="Robin Berjon">
              <organization/>
            </author>
            <author initials="J." surname="Yasskin" fullname="Jeffrey Yasskin">
              <organization/>
            </author>
            <date year="2025" month="November" day="24"/>
          </front>
        </reference>
        <reference anchor="DP">
          <front>
            <title>The Algorithmic Foundations of Differential Privacy</title>
            <author fullname="Cynthia Dwork" initials="C." surname="Dwork">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Aaron Roth" initials="A." surname="Roth">
              <organization>University of Pennsylvania</organization>
            </author>
            <date month="August" year="2014"/>
          </front>
          <seriesInfo name="Foundations and Trends® in Theoretical Computer Science" value="vol. 9, no. 3-4, pp. 211-487"/>
          <seriesInfo name="DOI" value="10.1561/0400000042"/>
          <refcontent>Emerald</refcontent>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="SIGMA">
          <front>
            <title>SIGMA: The ‘SIGn-and-MAc’ Approach to Authenticated Diffie-Hellman and Its Use in the IKE Protocols</title>
            <author fullname="Hugo Krawczyk" initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 400-425"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-45146-4_24"/>
          <seriesInfo name="ISBN" value="[&quot;9783540406747&quot;, &quot;9783540451464&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
      </references>
    </references>
    <?line 719?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Roxana Geambesu noted that a binding to site identity (<xref target="collector-id"/>)
was an important component of a robust differential privacy system design
for the Attribution API.
David Cook provided useful feedback about the design and document.
Chris Patton provided helpful input on how to integrate with the DAP architecture.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
H91awCPOYQAA

-->

</rfc>
