<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dsmullen-ppd-protocol-04" category="std" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="PPDProt">Privacy Preference Declaration Protocol Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-protocol-04"/>
    <author fullname="Daniel Smullen">
      <organization>CableLabs</organization>
      <address>
        <email>d.smullen@cablelabs.com</email>
      </address>
    </author>
    <author fullname="Brian Scriber">
      <organization>CableLabs</organization>
      <address>
        <email>brian.scriber@computer.org</email>
      </address>
    </author>
    <date year="2026" month="October" day="13"/>
    <keyword>privacy preferences</keyword>
    <keyword>home networks</keyword>
    <keyword>internet of things</keyword>
    <keyword>device signaling</keyword>
    <abstract>
      <?line 36?>

<t>This document specifies a participant-facing protocol for Privacy Preference
Declarations (PPDs) in home networks.  The protocol is between a home-side PPD
service endpoint and a device-side actor, formally the <tt>PPD participant</tt>, which
is a device or a service acting on behalf of a device.  It defines baseline
operations for endpoint metadata confirmation, participant registration,
optional participant declaration, effective-policy retrieval, policy
acknowledgment, renewal, and reassociation.  This document complements the PPD
architecture and taxonomy documents by defining the message and sequencing
behavior needed for interoperable policy signaling.  The household policy
instances carried by this protocol express privacy preferences for signaling
and comparison; they do not by themselves define an enforcement mechanism that
guarantees participant behavior.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drspangle.github.io/draft-dsmullen-ppd-protocol/draft-dsmullen-ppd-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-dsmullen-ppd-protocol/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/drspangle/draft-dsmullen-ppd-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.draft-dsmullen-ppd-architecture"/> defines the architectural roles,
trust boundaries, and lifecycle meaning for Privacy Preference Declarations
(PPDs) in home-network environments.
<xref target="I-D.draft-dsmullen-ppd-taxonomy"/> defines the shared semantic floor used to
express privacy rules and participant declarations.
This document specifies the participant-facing protocol behavior that sits
between those two companion documents.
The broader relationship between PPD and earlier work such as DNT, P3P, MUD,
and privacy-vocabulary or policy-expression efforts is discussed in
<xref target="I-D.draft-dsmullen-ppd-architecture"/>.
This document does not restate that comparison except where needed to explain
protocol behavior.</t>
      <t>The protocol defined here is intentionally narrow.
It is designed to ensure that a device-side actor can discover or be
provisioned with candidate home-side PPD service endpoints, confirm the
selected endpoint, register, optionally describe itself, retrieve the current
effective household policy that applies to it, and provide a protected receipt
acknowledgment for that exact policy instance.
The protocol also defines how the home-side service and the device-side actor
keep association current over time, including renewal and reassociation
behavior.</t>
      <t>The policy instances retrieved through this protocol express household privacy
preferences and comparison inputs. They do not by themselves create or prove a
separate enforcement action against participant behavior. Deployment-specific
enforcement, gating, or control responses are outside the baseline
participant-facing protocol defined here, because this document standardizes
only the interoperable signaling path between the household-side endpoint and
the participant, while enforcement depends on deployment-specific control
surfaces and capabilities beyond that shared protocol baseline.</t>
      <t>In the formal architecture terminology reused here, the device-side actor is
the <tt>PPD participant</tt>.
That term can be easy to misread, so this document makes the intended boundary
explicit:
the protocol-side participant is a device or a service acting for a device, not
the homeowner, household member, or operator who set or review household
policy.</t>
    </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 reuses the terminology defined in
<xref target="I-D.draft-dsmullen-ppd-architecture"/>.
In particular, it relies on the meanings of <tt>PPD participant</tt>,
<tt>PPD service endpoint</tt>, <tt>policy authority</tt>, <tt>effective policy</tt>,
<tt>association</tt>, <tt>current association</tt>, <tt>stale association</tt>, and
<tt>needs reassociation</tt>.</t>
      <t>For clarity in this document, <tt>PPD participant</tt> always means a device or a
service acting on behalf of a device.
It does not refer to a homeowner, household member, or other human actor on
the household side of the system.</t>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>This document specifies:</t>
      <ul spacing="normal">
        <li>
          <t>the participant-facing transport and serialization baseline;</t>
        </li>
        <li>
          <t>metadata confirmation for discovered candidate service endpoints;</t>
        </li>
        <li>
          <t>the baseline operation set for participant registration, optional
declaration, policy retrieval, policy acknowledgment, and renewal;</t>
        </li>
        <li>
          <t>message-object expectations for those operations;</t>
        </li>
        <li>
          <t>reassociation behavior when current association can no longer be confirmed;
and</t>
        </li>
        <li>
          <t>protocol-visible error and security behavior.</t>
        </li>
      </ul>
      <t>This document does not specify:</t>
      <ul spacing="normal">
        <li>
          <t>operator-only status, dashboard, or diagnostics surfaces;</t>
        </li>
        <li>
          <t>household policy authoring interfaces;</t>
        </li>
        <li>
          <t>internal service-to-authority protocols;</t>
        </li>
        <li>
          <t>automated enforcement behavior; or</t>
        </li>
        <li>
          <t>non-HTTP transport profiles.</t>
        </li>
      </ul>
    </section>
    <section anchor="protocol-model">
      <name>Protocol Model</name>
      <section anchor="roles">
        <name>Roles</name>
        <t>This protocol defines a participant-facing contract between:</t>
        <ul spacing="normal">
          <li>
            <t>a home-side <tt>PPD service endpoint</tt>, which presents effective policy
instances and records protected policy acknowledgments; and</t>
          </li>
          <li>
            <t>a device-side <tt>PPD participant</tt>, which is a device or backend service acting
on behalf of a device.</t>
          </li>
        </ul>
        <t>A <tt>policy authority</tt> may exist behind the PPD service endpoint, but this
protocol does not require participants to discover or address that authority
directly.
When the service endpoint and policy authority are distinct, the deployment
<bcp14>MUST</bcp14> preserve the authenticity and integrity of the policy information presented
through the participant-facing endpoint.</t>
        <t>The baseline end-to-end story is therefore:</t>
        <ol spacing="normal" type="1"><li>
            <t>the device-side participant learns or is provisioned with a home-side PPD
service endpoint;</t>
          </li>
          <li>
            <t>it confirms the endpoint and the applicable trust profile;</t>
          </li>
          <li>
            <t>it registers and may optionally submit declaration data;</t>
          </li>
          <li>
            <t>the home-side service endpoint returns the current effective policy for that
participant;</t>
          </li>
          <li>
            <t>the device-side participant acknowledges receipt of that exact policy
instance; and</t>
          </li>
          <li>
            <t>both sides use freshness and lifecycle state to determine whether
association remains current or must be renewed or replayed.</t>
          </li>
        </ol>
      </section>
      <section anchor="transport-and-serialization">
        <name>Transport and Serialization</name>
        <t>The baseline participant-facing protocol uses:</t>
        <ul spacing="normal">
          <li>
            <t>HTTP over IP;</t>
          </li>
          <li>
            <t>JSON request and response bodies using <tt>application/json</tt>.</t>
          </li>
        </ul>
        <t>HTTP method, status-code, and representation semantics follow RFC 9110
<xref target="RFC9110"/> unless this document specifies otherwise.
Any message body containing a PPD request or successful response object <bcp14>MUST</bcp14>
use <tt>Content-Type: application/json</tt>.</t>
        <t>The protocol does not prescribe a fixed deployment path for its API.
The participant discovers the API base URI through the origin-level
well-known resource defined below, and resolves the operation references
against that base URI using <xref target="RFC3986"/>.</t>
        <t>This document treats JSON as the baseline interoperable encoding.
More compact encodings <bcp14>MAY</bcp14> be defined by future deployment profiles where
resource constraints justify them, but such profiles need to preserve the same
message semantics.</t>
      </section>
      <section anchor="security-profiles">
        <name>Security Profiles</name>
        <t>This protocol defines explicit participant-facing security profiles.
The metadata <tt>security_profile</tt> value identifies which profile a participant-facing
service endpoint expects.</t>
        <t>The following profile identifiers are defined:</t>
        <ul spacing="normal">
          <li>
            <t><tt>direct-constrained</tt>:
authenticated direct-device participation for devices that can meet the
minimum authenticated direct-participant bar without full certificate
lifecycle expectations;</t>
          </li>
          <li>
            <t><tt>direct-certificate</tt>:
authenticated direct-device participation for devices that can support
stronger certificate-capable deployments; and</t>
          </li>
          <li>
            <t><tt>backend-mediated</tt>:
authenticated participation by a service acting on behalf of a device.</t>
          </li>
        </ul>
        <t>The baseline interoperable profile set for this document consists of
<tt>direct-constrained</tt> and <tt>direct-certificate</tt>.
<tt>backend-mediated</tt> is an extension profile.</t>
        <t>This document does not define an unauthenticated direct-participation profile.
Extremely constrained devices that cannot satisfy the minimum authenticated
direct-participant bar are expected to participate indirectly through a trusted
intermediary, or remain non-participating.</t>
        <t>Authenticated participation, regardless of mechanism family, <bcp14>MUST</bcp14> provide:</t>
        <ul spacing="normal">
          <li>
            <t>endpoint authentication sufficient for the participant to authenticate the
selected PPD service endpoint;</t>
          </li>
          <li>
            <t>participant authentication sufficient to bind registration and acknowledgment
state to the same participant identity;</t>
          </li>
          <li>
            <t>confidentiality and integrity protection for participant-facing exchanges;</t>
          </li>
          <li>
            <t>policy-instance integrity sufficient to identify the acknowledged policy
instance unambiguously; and</t>
          </li>
          <li>
            <t>freshness protection sufficient to prevent replay of old acknowledgments as
evidence of current association.</t>
          </li>
        </ul>
        <t>This document does not require one universal credential mechanism across all
participant classes.
It is specific about required security properties first, while leaving room for
deployment profiles to realize those properties differently for constrained
direct devices, certificate-capable direct devices, and backend-mediated
extensions.</t>
      </section>
      <section anchor="candidate-discovery-and-metadata-confirmation">
        <name>Candidate Discovery and Metadata Confirmation</name>
        <t>Every participant <bcp14>MUST</bcp14> support a configured or provisioned candidate PPD
service origin.
That is the minimum interoperable discovery floor.
A candidate origin is an HTTP or HTTPS URI identifying a scheme, host, and
optional port; a non-default port <bcp14>MUST</bcp14> be explicit.
It <bcp14>MUST NOT</bcp14> contain user information, a non-root path, a query, or a fragment.
A discovery profile that yields only a hostname <bcp14>MUST</bcp14> define how the scheme and
port are selected.</t>
        <t>This protocol does not standardize one universal automatic discovery mechanism.
Participants <bcp14>MAY</bcp14> additionally learn candidate PPD service origins through
local naming, DHCP-delivered hints, multicast service discovery,
default-gateway probing, Wi-Fi onboarding hints, or comparable local-network
mechanisms.
Such mechanisms are optional discovery profiles unless a deployment profile
requires them.
A discovery profile <bcp14>MAY</bcp14> define an ordered candidate sequence for a deployment
or participant class, but this protocol does not require one universal
automatic sequence.
Discovery yields candidate origins only; it does not establish authority.</t>
        <t>A participant that learns a candidate origin through any discovery method
<bcp14>MUST</bcp14> confirm that the endpoint supports this protocol before deeper
interaction.
For an HTTP or HTTPS candidate origin, the participant retrieves the Service
Metadata Object from the origin-level well-known URI <tt>/.well-known/ppd</tt>,
defined in accordance with <xref target="RFC8615"/>.
The well-known URI confirms the PPD service and advertises its API base URI;
it does not require the API itself to be mounted at the origin root.
Retrieving the metadata confirms protocol support but does not establish
endpoint authority or trust.</t>
        <t>The Service Metadata Object <bcp14>MUST</bcp14> include a <tt>service_base_uri</tt> identifying the
API base URI for the advertised protocol version.
It <bcp14>MUST</bcp14> be an absolute HTTP or HTTPS URI whose scheme, host, and effective
port match the candidate origin, with a path ending in <tt>/</tt> and no userinfo,
query, or fragment component.
The path <bcp14>MAY</bcp14> include any deployment-selected prefix, including a version
segment.
Operation references defined below are relative URI references and <bcp14>MUST</bcp14> be
resolved against <tt>service_base_uri</tt> according to <xref target="RFC3986"/>.</t>
        <t>For example, if the candidate origin is <tt>https://home.example:8443</tt> and the
metadata advertises <tt>https://home.example:8443/home/ppd/v1/</tt>, resolving the
relative reference <tt>device/register</tt> yields
<tt>https://home.example:8443/home/ppd/v1/device/register</tt>.</t>
        <t>The metadata response <bcp14>MUST</bcp14> include the following fields:</t>
        <ul spacing="normal">
          <li>
            <t><tt>service_base_uri</tt>, identifying the participant-facing API base URI;</t>
          </li>
          <li>
            <t><tt>protocol_version</tt>, identifying the protocol version or profile;</t>
          </li>
          <li>
            <t><tt>declaration_supported</tt>, indicating whether participant declarations are
supported;</t>
          </li>
          <li>
            <t><tt>ack_supported</tt>, indicating whether protected acknowledgments are
supported; and</t>
          </li>
          <li>
            <t><tt>security_profile</tt>, identifying the expected deployment security profile.</t>
          </li>
        </ul>
        <t>The response <bcp14>MAY</bcp14> also include <tt>supported_taxonomy_releases</tt> to identify
taxonomy releases understood by the service.</t>
        <t>The metadata response <bcp14>MUST NOT</bcp14> expose household policy contents, participant
inventory, or acknowledgment history before the normal participant-facing trust
checks succeed.
The participant-facing discovery target is the PPD service endpoint itself, not
an internal repository or policy-authority endpoint.</t>
      </section>
    </section>
    <section anchor="participant-lifecycle">
      <name>Participant Lifecycle</name>
      <section anchor="initial-association">
        <name>Initial Association</name>
        <t>The baseline participant lifecycle is:</t>
        <ol spacing="normal" type="1"><li>
            <t>obtain one or more candidate PPD service origins;</t>
          </li>
          <li>
            <t>retrieve metadata from <tt>GET /.well-known/ppd</tt> on a selected origin;</t>
          </li>
          <li>
            <t>authenticate the advertised service endpoint according to the deployment's
trust profile;</t>
          </li>
          <li>
            <t>register participant identity and metadata;</t>
          </li>
          <li>
            <t>optionally submit a participant declaration;</t>
          </li>
          <li>
            <t>retrieve the current applicable effective policy instance; and</t>
          </li>
          <li>
            <t>acknowledge receipt of that specific policy instance.</t>
          </li>
        </ol>
        <t>Association is established only when the current applicable effective policy
instance has been delivered and acknowledged.
Acknowledgment is a receipt signal; it is not a claim of compatibility or
compliance.</t>
      </section>
      <section anchor="renewal-and-stale-association">
        <name>Renewal and Stale Association</name>
        <t>Current association is freshness-bound.
A participant <bcp14>MUST</bcp14> renew association often enough that the PPD service endpoint
does not treat the participant as stale.
The participant-facing protocol therefore needs a way to communicate renewal
expectations.</t>
        <t>The baseline effective-policy response and acknowledgment response <bcp14>MUST</bcp14> convey
one of the following:</t>
        <ul spacing="normal">
          <li>
            <t>an absolute renewal deadline; or</t>
          </li>
          <li>
            <t>a bounded renewal interval from the time of response.</t>
          </li>
        </ul>
        <t>For baseline interoperability, the minimum renewal procedure is:</t>
        <ol spacing="normal" type="1"><li>
            <t>the participant retrieves the current applicable effective policy instance
using the relative reference <tt>policy/effective/{device_id}</tt> resolved
against <tt>service_base_uri</tt>;</t>
          </li>
          <li>
            <t>if the returned <tt>policy_id</tt> and <tt>policy_hash</tt> still identify the same policy
instance the participant currently treats as associated, the participant
renews by sending a fresh Policy Acknowledgment Object for that instance; and</t>
          </li>
          <li>
            <t>if the returned policy instance differs, or if the service indicates
<tt>reassociation-required</tt>, the participant <bcp14>MUST</bcp14> treat the renewal attempt as
escalated to reassociation.</t>
          </li>
        </ol>
        <t>If the applicable effective policy instance remains unchanged but the
participant does not complete that retrieval-and-acknowledgment renewal
procedure before the conveyed freshness limit, the participant enters stale
association.
The participant no longer has current association until it successfully
completes the minimum renewal procedure or, when required by the service,
reassociation.</t>
      </section>
      <section anchor="reassociation-triggers">
        <name>Reassociation Triggers</name>
        <t>A participant enters <tt>needs reassociation</tt> when current association can no
longer be confirmed because:</t>
        <ul spacing="normal">
          <li>
            <t>the applicable effective policy instance changed;</t>
          </li>
          <li>
            <t>participant state relevant to effective-policy derivation changed;</t>
          </li>
          <li>
            <t>enough state was lost that the previous association can no longer be trusted;
or</t>
          </li>
          <li>
            <t>another invalidating event defined by the applicable deployment profile
occurred.</t>
          </li>
        </ul>
        <t>When reassociation is required, the participant <bcp14>MUST</bcp14> retrieve and acknowledge
the current applicable effective policy instance again before current
association is restored.</t>
      </section>
      <section anchor="non-participating-devices">
        <name>Non-Participating Devices</name>
        <t>This protocol does not require every device on a home network to participate in
PPD.
Devices that do not participate remain outside the active message exchange.
Their presence may influence local management or enforcement decisions, but
such decisions are out of scope for this protocol.
Extremely constrained devices that cannot satisfy the minimum authenticated
direct-participant bar <bcp14>MAY</bcp14> instead be represented indirectly by a trusted
intermediary that participates on their behalf.</t>
      </section>
      <section anchor="comparison-outcome-categories">
        <name>Comparison Outcome Categories</name>
        <t>This protocol does not define a universal conflict-resolution procedure between
participant-supplied descriptive material and household policy.
That depends on household intent, participant capability, and deployment logic.</t>
        <t>When a deployment compares participant-side descriptive or policy-related
inputs against household policy and needs to expose the result at the protocol
boundary in the baseline participant-facing protocol, it <bcp14>SHOULD</bcp14> return a
Comparison Outcome Object on the declaration path and classify the result
using one of the following coarse outcome categories:</t>
        <ul spacing="normal">
          <li>
            <t><tt>compatible</tt>:
the compared inputs can coexist without further action;</t>
          </li>
          <li>
            <t><tt>conditionally_satisfiable</tt>:
the compared inputs can coexist if an allowed exception, alternate mode, or
bounded refinement is applied;</t>
          </li>
          <li>
            <t><tt>decision_required</tt>:
household or operator choice is required before a compatible outcome can be
determined;</t>
          </li>
          <li>
            <t><tt>unsatisfiable</tt>:
the compared inputs cannot be satisfied together under the currently known
conditions; or</t>
          </li>
          <li>
            <t><tt>indeterminate</tt>:
the service cannot currently determine a reliable outcome.</t>
          </li>
        </ul>
        <t>This document defines the categories only.
It does not define a universal resolution procedure.</t>
      </section>
    </section>
    <section anchor="protocol-operations">
      <name>Protocol Operations</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The baseline participant-facing operation set is:</t>
        <ol spacing="normal" type="1"><li>
            <t><tt>GET /.well-known/ppd</tt> on the candidate origin</t>
          </li>
          <li>
            <t><tt>POST device/register</tt> relative to <tt>service_base_uri</tt></t>
          </li>
          <li>
            <t><tt>POST device/declaration</tt> relative to <tt>service_base_uri</tt> (optional)</t>
          </li>
          <li>
            <t><tt>GET policy/effective/{device_id}</tt> relative to <tt>service_base_uri</tt></t>
          </li>
          <li>
            <t><tt>POST device/ack</tt> relative to <tt>service_base_uri</tt></t>
          </li>
        </ol>
        <t>The operation references in this list are relative URI references, not
origin-root paths.</t>
        <t>These operations form a narrow control path.
They let a device-side participant confirm the home-side service, identify
itself, optionally describe itself, retrieve the current effective household
policy that applies to it, and acknowledge receipt of that specific policy
instance.
They do not define household policy authoring, repository-facing workflows,
compliance attestation, or conflict-resolution procedure.</t>
        <t>When the effective policy changes, when freshness expires, or when other
invalidating events occur, the same narrow operation set is replayed as needed
to restore current association.</t>
        <t>A deployment <bcp14>MAY</bcp14> expose additional readback or manageability operations, but
those are not required for baseline interoperability.
This document also does not define internal repository-facing operations or
operator-only status endpoints.</t>
      </section>
      <section anchor="metadata-confirmation">
        <name>Metadata Confirmation</name>
        <section anchor="get-well-knownppd">
          <name><tt>GET /.well-known/ppd</tt></name>
          <t>This request targets the root-level well-known URI on a candidate origin.
It is defined for the <tt>http</tt> and <tt>https</tt> URI schemes.</t>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>confirm that a candidate endpoint supports the expected PPD protocol profile;</t>
            </li>
            <li>
              <t>advertise baseline feature support; and</t>
            </li>
            <li>
              <t>communicate security expectations before registration or policy retrieval.</t>
            </li>
          </ul>
          <t>A successful response <bcp14>MUST</bcp14> include a Service Metadata Object and the
<tt>Content-Type: application/json</tt> header field.</t>
        </section>
      </section>
      <section anchor="registration">
        <name>Registration</name>
        <section anchor="post-deviceregister">
          <name><tt>POST device/register</tt></name>
          <t>Resolve this relative reference against <tt>service_base_uri</tt>.</t>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>create or refresh the service endpoint's stored registration for a
participant; and</t>
            </li>
            <li>
              <t>bind the participant's current protocol identity to the registration state.</t>
            </li>
          </ul>
          <t>The request body <bcp14>MUST</bcp14> be a Device Registration Object.</t>
          <t>The request body <bcp14>SHOULD</bcp14> include, when available and appropriate for the
deployment:</t>
          <ul spacing="normal">
            <li>
              <t><tt>manufacturer</tt></t>
            </li>
            <li>
              <t><tt>model</tt></t>
            </li>
            <li>
              <t><tt>firmware_version</tt></t>
            </li>
            <li>
              <t><tt>hostname</tt></t>
            </li>
          </ul>
          <t>The following fields <bcp14>MAY</bcp14> be included when the deployment profile permits them:</t>
          <ul spacing="normal">
            <li>
              <t><tt>mac_address</tt></t>
            </li>
            <li>
              <t><tt>ip_address</tt></t>
            </li>
          </ul>
          <t>A successful response <bcp14>MUST</bcp14> be a Registration Result Object.
Registration success returns the canonical participant identity established or
confirmed by the service.
It <bcp14>MUST NOT</bcp14> repeat metadata-confirmation fields such as the participant-facing
service URI, supported feature flags, or security profile.</t>
        </section>
      </section>
      <section anchor="declaration">
        <name>Declaration</name>
        <section anchor="post-devicedeclaration">
          <name><tt>POST device/declaration</tt></name>
          <t>Resolve this relative reference against <tt>service_base_uri</tt>.</t>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>provide optional participant-side declaration data that can inform effective
policy derivation or later operator review.</t>
            </li>
          </ul>
          <t>Declarations are optional.
A participant that does not submit a declaration can still establish
association if it can retrieve and acknowledge the applicable policy instance.</t>
          <t>The request body <bcp14>MUST</bcp14> be a Device Declaration Object.
See Device Declaration Object and Declaration Statement Object below for the
precise object shape.</t>
          <t>A declaration carries one or more descriptive statements that use the taxonomy
dimensions defined in <xref target="I-D.draft-dsmullen-ppd-taxonomy"/>, such as data type,
purpose, action, source, and handling context.
In this model, handling context means the context in which a dataflow occurs
or into which it is directed; it is not limited to transfer destinations.
The taxonomy document defines the meaning and composition of those dimensions.</t>
          <t>A successful declaration response without comparison detail <bcp14>SHOULD</bcp14> use
<tt>204 No Content</tt>.
When the service chooses to expose the result of comparing the declaration
against household policy or effective-policy constraints at this boundary, a
successful response <bcp14>MUST</bcp14> be <tt>200 OK</tt> with a Comparison Outcome Object.
Services are not required to compute or return such an outcome synchronously.
This document does not define a participant-controlled request flag for
comparison outcomes, and this declaration path <bcp14>MUST NOT</bcp14> be treated as a
baseline negotiation or homeowner-prompt channel.</t>
        </section>
      </section>
      <section anchor="effective-policy-retrieval">
        <name>Effective Policy Retrieval</name>
        <section anchor="get-policyeffectivedeviceid">
          <name><tt>GET policy/effective/{device_id}</tt></name>
          <t>Resolve this relative reference against <tt>service_base_uri</tt>.
The <tt>{device_id}</tt> template value <bcp14>MUST</bcp14> be percent-encoded as a single URI path
segment before the reference is resolved.</t>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>return the effective policy instance currently applicable to the participant;</t>
            </li>
            <li>
              <t>return enough policy-instance provenance information to identify what was
acknowledged; and</t>
            </li>
            <li>
              <t>communicate the association-freshness limit for current association.</t>
            </li>
          </ul>
          <t>A successful response <bcp14>MUST</bcp14> be an Effective Policy Object.
See Effective Policy Object and Policy Rule Object below for the precise
object shape.</t>
          <t>A successful response <bcp14>SHOULD</bcp14> include policy-instance provenance fields that let later
inspection distinguish the household baseline from any more specific inputs,
such as:</t>
          <ul spacing="normal">
            <li>
              <t><tt>base_policy_id</tt></t>
            </li>
            <li>
              <t><tt>applied_policy_id</tt> when a more specific policy layer was applied</t>
            </li>
            <li>
              <t><tt>computed_at</tt></t>
            </li>
          </ul>
          <t>These fields describe the provenance of the returned policy instance itself.
They do not describe the provenance of data later collected, transformed, or
derived by participant devices or services.</t>
          <t>This operation returns the policy instance the participant is expected to
acknowledge.
It is not required to expose the internal policy-authority topology or the
full derivation algorithm.</t>
        </section>
      </section>
      <section anchor="policy-acknowledgment">
        <name>Policy Acknowledgment</name>
        <section anchor="post-deviceack">
          <name><tt>POST device/ack</tt></name>
          <t>Resolve this relative reference against <tt>service_base_uri</tt>.</t>
          <t>Purpose:</t>
          <ul spacing="normal">
            <li>
              <t>record a protected acknowledgment that a participant received a specific
policy instance.</t>
            </li>
          </ul>
          <t>The request body <bcp14>MUST</bcp14> be a Policy Acknowledgment Object.</t>
          <t>The acknowledgment payload is a receipt signal only.
It <bcp14>MUST NOT</bcp14> be interpreted as a claim that the participant can satisfy every
policy rule.
If deployments need richer participant-side compatibility or status reporting,
that behavior <bcp14>MUST</bcp14> be defined separately from the baseline acknowledgment.</t>
          <t>A successful acknowledgment response <bcp14>MUST</bcp14> be an Acknowledgment Result Object.
It returns the resulting association state and the next freshness value to be
used for maintaining current association.</t>
          <t>An acknowledgment that refers to a non-current or mismatched policy instance
<bcp14>MUST</bcp14> be rejected.</t>
        </section>
      </section>
    </section>
    <section anchor="message-objects">
      <name>Message Objects</name>
      <t>The following object definitions are normative for baseline interoperability.
Unless otherwise stated:</t>
      <ul spacing="normal">
        <li>
          <t>identifiers such as <tt>device_id</tt>, <tt>declaration_id</tt>, <tt>policy_id</tt>, and
<tt>rule_id</tt> are opaque text strings;</t>
        </li>
        <li>
          <t>timestamp fields use RFC 3339 date-time strings <xref target="RFC3339"/>;</t>
        </li>
        <li>
          <t><tt>policy_hash</tt> uses the form <tt>algorithm:value</tt>, and baseline
implementations <bcp14>MUST</bcp14> support <tt>sha256</tt>.
For the baseline JSON protocol, the hash value is computed over the UTF-8
octets of the Effective Policy Object serialized using the JSON
Canonicalization Scheme (JCS) <xref target="RFC8785"/>, after omitting the <tt>policy_hash</tt>
member itself; and</t>
        </li>
        <li>
          <t><tt>renewal_interval</tt> is a positive integer count of seconds.</t>
        </li>
      </ul>
      <section anchor="compact-term-identifiers">
        <name>Compact Term Identifiers</name>
        <t>Taxonomy-bearing fields use compact term identifiers.
A compact term identifier is a text string whose meaning is determined by:</t>
        <ul spacing="normal">
          <li>
            <t>a reserved core prefix defined by the protocol or taxonomy work; or</t>
          </li>
          <li>
            <t>an explicit extension-prefix declaration in a Taxonomy Context Object.</t>
          </li>
        </ul>
        <t>The term identifier itself is the primary semantic hook.
Taxonomy release metadata remains secondary validation context.
Deployments <bcp14>MAY</bcp14> use company-specific or other non-core taxonomies when their
terms are declared through the applicable taxonomy context and remain reducible
to the shared core semantic model defined by the companion taxonomy work.
For roles such as <tt>data_type</tt>, <tt>purpose</tt>, <tt>source</tt>, <tt>handling_context</tt>,
and <tt>processing_boundary</tt>, that reduction can rely on equivalence or
broader/narrower placement as defined by the taxonomy.
For the flat <tt>action</tt> family, the reduction needs to preserve exact action
meaning.
For structured <tt>jurisdiction</tt>, the reduction needs to preserve the declared
<tt>scope</tt> and the family-specific country or subdivision comparison model
defined by the taxonomy.</t>
        <t>For baseline interoperability, a compact term identifier <bcp14>MUST</bcp14> use the form
<tt>prefix:term</tt>.
The prefix identifies either a reserved core vocabulary or an explicitly
declared non-core vocabulary.
The baseline core prefix is <tt>ppd</tt>.
A receiver <bcp14>MUST NOT</bcp14> silently reinterpret an unresolved compact term as some
other known term.</t>
      </section>
      <section anchor="taxonomy-context-object">
        <name>Taxonomy Context Object</name>
        <t>The Taxonomy Context Object carries optional vocabulary-release context and any
required non-core prefix declarations.</t>
        <t>It <bcp14>MAY</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t><tt>release</tt>:
a text identifier for the taxonomy release or profile in view when the object
was produced; and</t>
          </li>
          <li>
            <t><tt>prefixes</tt>:
an object mapping non-core compact prefixes to stable namespace identifiers.</t>
          </li>
        </ul>
        <t>Reserved core prefixes <bcp14>MUST NOT</bcp14> be remapped in <tt>prefixes</tt>.
A Taxonomy Context Object is <bcp14>REQUIRED</bcp14> whenever non-core compact prefixes appear
in the containing object.</t>
      </section>
      <section anchor="term-resolution-behavior">
        <name>Term Resolution Behavior</name>
        <t>Before processing a taxonomy-bearing field, a receiver <bcp14>MUST</bcp14> be able to
deterministically expand each compact term identifier into the corresponding
stable namespace-based term identifier.</t>
        <t>For the baseline protocol:</t>
        <ul spacing="normal">
          <li>
            <t>the core prefix <tt>ppd</tt> <bcp14>MUST</bcp14> be interpreted according to the companion
taxonomy work;</t>
          </li>
          <li>
            <t>any non-core prefix used in the containing object <bcp14>MUST</bcp14> appear in the
applicable Taxonomy Context Object;</t>
          </li>
          <li>
            <t>reserved core prefixes <bcp14>MUST NOT</bcp14> be redeclared or remapped; and</t>
          </li>
          <li>
            <t>a sender <bcp14>MUST NOT</bcp14> emit a taxonomy-bearing object whose compact identifiers it
cannot itself deterministically resolve.</t>
          </li>
        </ul>
        <t>If deterministic expansion fails because a compact identifier is malformed, a
required non-core prefix declaration is missing, or a reserved core prefix is
redeclared or remapped, the receiver <bcp14>MUST</bcp14> treat the object as semantically
unprocessable.</t>
        <t>If deterministic expansion succeeds but the resulting stable term identifier is
not supported for the relevant operation or deployment profile, the receiver
<bcp14>MUST</bcp14> also treat the object as semantically unprocessable.</t>
        <t>When a PPD service endpoint returns a taxonomy-bearing object, it <bcp14>MUST</bcp14> ensure
that the terms it emits are consistent with any attached Taxonomy Context
Object.</t>
      </section>
      <section anchor="service-metadata-object">
        <name>Service Metadata Object</name>
        <t>The service metadata object describes a candidate endpoint before deeper
interaction.
It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>service_base_uri</tt> (required, absolute HTTP or HTTPS URI):
API base URI for the advertised protocol version, with the same scheme,
host, and effective port as the candidate origin, a path ending in <tt>/</tt>, and
no userinfo, query, or fragment;</t>
          </li>
          <li>
            <t><tt>protocol_version</tt> (required, text):
protocol version or profile identifier for the participant-facing contract;</t>
          </li>
          <li>
            <t><tt>declaration_supported</tt> (required, boolean):
whether the service accepts Device Declaration Objects;</t>
          </li>
          <li>
            <t><tt>ack_supported</tt> (required, boolean):
whether the service accepts Policy Acknowledgment Objects;</t>
          </li>
          <li>
            <t><tt>security_profile</tt> (required, text):
deployment security profile identifier, currently one of
<tt>direct-constrained</tt>, <tt>direct-certificate</tt>, or the extension value
<tt>backend-mediated</tt>; and</t>
          </li>
          <li>
            <t><tt>supported_taxonomy_releases</tt> (optional, array of text):
taxonomy release identifiers understood by the service for validation and
reproducibility.
These release identifiers are secondary validation context, not the primary
semantic hook for taxonomy-bearing terms.</t>
          </li>
        </ul>
        <t>A participant evaluates <tt>security_profile</tt> from this object as part of deciding
whether it can continue with the candidate endpoint under the applicable
deployment trust model.</t>
      </section>
      <section anchor="device-registration-object">
        <name>Device Registration Object</name>
        <t>The registration object identifies the participant and carries optional device
metadata.
The stable identifier is <tt>device_id</tt>.
Other metadata fields are deployment-dependent and do not replace the stable
participant identifier.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
stable participant identifier for this device-side actor;</t>
          </li>
          <li>
            <t><tt>manufacturer</tt> (optional, text):
participant-reported vendor name;</t>
          </li>
          <li>
            <t><tt>model</tt> (optional, text):
participant-reported model name or number;</t>
          </li>
          <li>
            <t><tt>firmware_version</tt> (optional, text):
participant-reported software or firmware version;</t>
          </li>
          <li>
            <t><tt>hostname</tt> (optional, text):
participant-reported hostname when relevant to the deployment;</t>
          </li>
          <li>
            <t><tt>mac_address</tt> (optional, text):
participant-reported link-layer address when the deployment profile permits
it; and</t>
          </li>
          <li>
            <t><tt>ip_address</tt> (optional, text):
participant-reported network address when the deployment profile permits it.</t>
          </li>
        </ul>
      </section>
      <section anchor="registration-result-object">
        <name>Registration Result Object</name>
        <t>The registration result object confirms the canonical participant identity
bound by registration.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
canonical participant identifier established or confirmed by the service.</t>
          </li>
        </ul>
      </section>
      <section anchor="device-declaration-object">
        <name>Device Declaration Object</name>
        <t>The declaration object carries participant-supplied descriptive dataflow
information.
At minimum it contains <tt>device_id</tt>, <tt>declaration_id</tt>, and a non-empty
<tt>statements</tt> array.
Declaration statements use the shared taxonomy dimensions defined in
<xref target="I-D.draft-dsmullen-ppd-taxonomy"/>.
The taxonomy document defines the meaning of those fields, the qualifier
families used with them, and the core semantic floor that keeps comparison
computable across richer vocabularies; this protocol document defines only how
such statements are carried.
This document uses <tt>operation</tt> for participant-facing protocol exchanges such
as registration, retrieval, and acknowledgment. Terms such as <tt>handling</tt>,
<tt>processing</tt>, and <tt>dataflow</tt> inside declaration statements and policy rules
have the meanings defined by the companion taxonomy specification.
The baseline declaration is intentionally minimal.
Registration carries participant identity, declarations carry descriptive
participant assertions, and Effective Policy and Acknowledgment Objects carry
the lifecycle-critical policy binding and freshness semantics.</t>
        <t>The declaration is descriptive only.
It <bcp14>MUST NOT</bcp14> include normative policy verdicts such as allow or deny.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
participant identifier to which the declaration applies;</t>
          </li>
          <li>
            <t><tt>declaration_id</tt> (required, text):
stable identifier for this declaration instance;</t>
          </li>
          <li>
            <t><tt>taxonomy</tt> (optional, Taxonomy Context Object):
release context and any required non-core prefix declarations;</t>
          </li>
          <li>
            <t><tt>statements</tt> (required, non-empty array of Declaration Statement Objects):
participant-supplied descriptive dataflow cases stating which taxonomy-
defined combinations apply to this participant.</t>
          </li>
        </ul>
        <t>If a declaration uses any non-core compact prefix in its statements or
constraints, the <tt>taxonomy</tt> object is <bcp14>REQUIRED</bcp14>.</t>
      </section>
      <section anchor="declaration-statement-object">
        <name>Declaration Statement Object</name>
        <t>A Declaration Statement Object is an atomic descriptive statement inside a
Device Declaration Object.
It mirrors the same core dimensions used by policy rules so that participant
assertions can be compared at the same grain, but it <bcp14>MUST NOT</bcp14> include a
normative <tt>effect</tt>.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>statement_id</tt> (required, text):
stable identifier for the statement within the declaration instance;</t>
          </li>
          <li>
            <t><tt>data_type</tt> (required, compact term identifier):
data category to which the statement applies;</t>
          </li>
          <li>
            <t><tt>purpose</tt> (required, compact term identifier):
why the dataflow occurs;</t>
          </li>
          <li>
            <t><tt>action</tt> (required, compact term identifier):
which privacy-relevant action the participant performs or may request;</t>
          </li>
          <li>
            <t><tt>source</tt> (required, compact term identifier):
immediate origin of the data in that dataflow;</t>
          </li>
          <li>
            <t><tt>handling_context</tt> (required, compact term identifier):
context in which the dataflow occurs or into which it is directed. For
<tt>collection</tt>, this identifies the context into which collected data is
brought. For <tt>use</tt> and <tt>inference</tt>, it identifies the context in which that
dataflow occurs. For <tt>transfer</tt>, it identifies the recipient-side context
into which data is transferred. The semantic meaning of this field is
defined by <xref target="I-D.draft-dsmullen-ppd-taxonomy"/>; and</t>
          </li>
          <li>
            <t><tt>constraints</tt> (optional, Constraints Object):
structured qualifiers that refine the statement.</t>
          </li>
        </ul>
        <section anchor="example-device-declaration-object">
          <name>Example Device Declaration Object</name>
          <sourcecode type="json"><![CDATA[
{
  "device_id": "doorbell-7",
  "declaration_id": "doorbell-7-declaration-v1",
  "taxonomy": {
    "release": "ppd-core-2026-05"
  },
  "statements": [
    {
      "statement_id": "content-security-local-use",
      "data_type": "ppd:contentData",
      "purpose": "ppd:security",
      "action": "ppd:use",
      "source": "ppd:participantObserved",
      "handling_context": "ppd:householdContext",
      "constraints": {
        "processing_boundary": "ppd:onDeviceOnly"
      }
    },
    {
      "statement_id": "sensor-improvement-transfer",
      "data_type": "ppd:sensorData",
      "purpose": "ppd:analyticsAndImprovement",
      "action": "ppd:transfer",
      "source": "ppd:participantObserved",
      "handling_context": "ppd:vendorContext",
      "constraints": {
        "retention": "ppd:indefinite",
        "jurisdiction": {
          "scope": "transfer",
          "countrycode": ["us"]
        }
      }
    }
  ]
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="comparison-outcome-object">
        <name>Comparison Outcome Object</name>
        <t>The comparison outcome object carries an optional coarse result for
declaration-to-policy comparison on the declaration path.
It reports a coarse diagnostic result of comparing participant-side atomic
declaration statements against household-side atomic policy rules.
It does not change the meaning of the Effective Policy Object and it is not
part of acknowledgment semantics.
It <bcp14>MUST NOT</bcp14> be treated as a request for policy relaxation, an invitation to
begin a participant-driven bargaining loop, or a trigger for baseline
homeowner consent prompting.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>declaration_id</tt> (required, text):
declaration instance to which this comparison result applies;</t>
          </li>
          <li>
            <t><tt>outcome</tt> (required, text):
one of <tt>compatible</tt>, <tt>conditionally_satisfiable</tt>, <tt>decision_required</tt>,
<tt>unsatisfiable</tt>, or <tt>indeterminate</tt>; and</t>
          </li>
          <li>
            <t><tt>detail</tt> (optional, text):
brief human-readable explanation suitable for diagnostics or operator review.</t>
          </li>
        </ul>
      </section>
      <section anchor="effective-policy-object">
        <name>Effective Policy Object</name>
        <t>The effective policy object represents the policy instance the participant must
acknowledge.
It contains the policy identifier, hash, rule set, and
freshness information.
It <bcp14>SHOULD</bcp14> also contain policy-instance provenance fields that make later
recordkeeping and inspection meaningful.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>policy_id</tt> (required, text):
stable identifier for the policy instance to be acknowledged;</t>
          </li>
          <li>
            <t><tt>policy_hash</tt> (required, text):
stable content hash for the policy instance.
This hash binds the full returned policy instance, including freshness and
provenance fields, as serialized under the baseline canonicalization rule
above;</t>
          </li>
          <li>
            <t><tt>rules</tt> (required, array of Policy Rule Objects):
normative rule set for this effective policy instance;</t>
          </li>
          <li>
            <t><tt>renew_by</tt> (optional, RFC 3339 date-time string):
absolute deadline by which current association must be renewed if this field
is used;</t>
          </li>
          <li>
            <t><tt>renewal_interval</tt> (optional, positive integer seconds):
bounded interval after response generation within which current association
must be renewed if this field is used;</t>
          </li>
          <li>
            <t><tt>taxonomy</tt> (optional, Taxonomy Context Object):
release context and any required non-core prefix declarations for rule terms;</t>
          </li>
          <li>
            <t><tt>base_policy_id</tt> (optional, text):
identifier for the household baseline policy used in this effective result;</t>
          </li>
          <li>
            <t><tt>applied_policy_id</tt> (optional, text):
identifier for a more specific applied policy layer when present; and</t>
          </li>
          <li>
            <t><tt>computed_at</tt> (optional, RFC 3339 date-time string):
time at which the effective policy instance was computed or materialized.</t>
          </li>
        </ul>
        <t>An Effective Policy Object <bcp14>MUST</bcp14> contain exactly one of <tt>renew_by</tt> or
<tt>renewal_interval</tt>.
These fields govern association freshness for the participant-facing lifecycle.
They do not define abstract policy validity outside that lifecycle.
If any rule uses a non-core compact prefix, the <tt>taxonomy</tt> object is <bcp14>REQUIRED</bcp14>.
A complete example appears below under Example Effective Policy and
Acknowledgment.</t>
      </section>
      <section anchor="policy-rule-object">
        <name>Policy Rule Object</name>
        <t>A Policy Rule Object is an atomic normative statement inside an Effective
Policy Object.</t>
        <t>The baseline rule model uses singular core dimensions.
When multiple cases must be expressed, they are represented as multiple rules
rather than array-valued core dimensions inside one rule.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>rule_id</tt> (required, text):
stable identifier for the rule within the policy instance;</t>
          </li>
          <li>
            <t><tt>data_type</tt> (required, compact term identifier):
data category to which the rule applies;</t>
          </li>
          <li>
            <t><tt>purpose</tt> (required, compact term identifier):
why the dataflow occurs;</t>
          </li>
          <li>
            <t><tt>action</tt> (required, compact term identifier):
which privacy-relevant action the rule covers;</t>
          </li>
          <li>
            <t><tt>source</tt> (required, compact term identifier):
immediate origin of the data in that dataflow;</t>
          </li>
          <li>
            <t><tt>handling_context</tt> (required, compact term identifier):
context in which the dataflow occurs or into which it is directed. For
<tt>collection</tt>, this identifies the context into which collected data is
brought. For <tt>use</tt> and <tt>inference</tt>, it identifies the context in which that
dataflow occurs. For <tt>transfer</tt>, it identifies the recipient-side context
into which data is transferred. The semantic meaning of this field is
defined by <xref target="I-D.draft-dsmullen-ppd-taxonomy"/>;</t>
          </li>
          <li>
            <t><tt>effect</tt> (required, text):
normative rule effect, currently one of <tt>allow</tt> or <tt>deny</tt>; and</t>
          </li>
          <li>
            <t><tt>constraints</tt> (optional, Constraints Object):
structured qualifiers that refine the rule.</t>
          </li>
        </ul>
        <t>An Effective Policy Object <bcp14>SHOULD NOT</bcp14> contain two Policy Rule Objects with the
same core dimensions but different <tt>effect</tt> values.
Such contradictions should be resolved before the effective policy is returned.</t>
      </section>
      <section anchor="constraints-object">
        <name>Constraints Object</name>
        <t>The Constraints Object preserves a structured extension point for dataflow
qualifiers without requiring a large qualifier language in the baseline draft.
It is shared by declaration statements and policy rules. The wire container is
named <tt>constraints</tt>, but the companion taxonomy work defines its members as
qualifiers on atomic dataflows.
<xref target="I-D.draft-dsmullen-ppd-taxonomy"/> also defines the semantic meaning of
<tt>retention</tt>, <tt>processing_boundary</tt>, and <tt>jurisdiction</tt>; this document defines
only their participant-facing wire representation.</t>
        <t>The initial standardized members are:</t>
        <ul spacing="normal">
          <li>
            <t><tt>retention</tt> (optional, compact term identifier):
baseline retention qualifier for the scoped dataflow. The baseline compact
form is term-valued; future specifications or deployment profiles <bcp14>MAY</bcp14>
define more structured bounded-retention forms.</t>
          </li>
          <li>
            <t><tt>processing_boundary</tt> (optional, compact term identifier):
processing-placement qualifier for <tt>use</tt> or <tt>inference</tt> within the declared
handling context.</t>
          </li>
          <li>
            <t><tt>jurisdiction</tt> (optional, object):
declarative jurisdiction qualifier for the scoped dataflow or storage
context.</t>
          </li>
        </ul>
        <t>When present, <tt>jurisdiction</tt> contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>scope</tt> (required, text):
one of <tt>collection</tt>, <tt>use</tt>, <tt>inference</tt>, <tt>transfer</tt>, or <tt>storage</tt>;</t>
          </li>
          <li>
            <t><tt>countrycode</tt> (optional, array of text):
one or more lowercase country codes using the <tt>countrycode</tt> format
<xref target="RFC8006"/>; and</t>
          </li>
          <li>
            <t><tt>subdivisioncode</tt> (optional, array of text):
one or more lowercase country subdivision codes using the <tt>subdivisioncode</tt>
format <xref target="RFC9388"/>.</t>
          </li>
        </ul>
        <t>At least one of <tt>countrycode</tt> or <tt>subdivisioncode</tt> <bcp14>MUST</bcp14> be present. A sender
<bcp14>MUST NOT</bcp14> include an empty <tt>countrycode</tt> or <tt>subdivisioncode</tt> array. A receiver
<bcp14>MUST</bcp14> treat an unknown <tt>scope</tt>, a malformed <tt>jurisdiction</tt> object, or an
invalid country or subdivision code as invalid input.</t>
        <t>Future specifications or deployment profiles <bcp14>MAY</bcp14> define additional structured
constraint members.
A Constraints Object <bcp14>MUST NOT</bcp14> be treated as an unstructured free-form text
field.</t>
      </section>
      <section anchor="policy-acknowledgment-object">
        <name>Policy Acknowledgment Object</name>
        <t>The acknowledgment object binds a participant identifier to a specific policy
instance and policy hash.
Deployments that claim strong accountability properties <bcp14>MUST</bcp14> protect the
acknowledgment against forgery, replay, and stale-policy confusion.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>device_id</tt> (required, text):
participant identifier acknowledging receipt;</t>
          </li>
          <li>
            <t><tt>policy_id</tt> (required, text):
policy instance identifier being acknowledged; and</t>
          </li>
          <li>
            <t><tt>policy_hash</tt> (required, text):
content hash of the acknowledged policy instance, computed according to the
baseline <tt>policy_hash</tt> definition above.</t>
          </li>
        </ul>
        <t>This object is evidentiary only.
It is a receipt for a specific policy instance and <bcp14>MUST NOT</bcp14> be interpreted as a
claim of compatibility or compliance.</t>
      </section>
      <section anchor="acknowledgment-result-object">
        <name>Acknowledgment Result Object</name>
        <t>The acknowledgment result object confirms the lifecycle state after the service
records a protected acknowledgment.</t>
        <t>It contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>association_status</tt> (required, text):
resulting association state, currently one of <tt>not_associated</tt>,
<tt>associated</tt>, <tt>needs_reassociation</tt>, <tt>stale_association</tt>, or <tt>broken</tt>;</t>
          </li>
          <li>
            <t><tt>renew_by</tt> (optional, RFC 3339 date-time string):
absolute deadline by which current association must be renewed if this field
is used; and</t>
          </li>
          <li>
            <t><tt>renewal_interval</tt> (optional, positive integer seconds):
bounded interval after response generation within which current association
must be renewed if this field is used.</t>
          </li>
        </ul>
        <t>An Acknowledgment Result Object <bcp14>MUST</bcp14> contain exactly one of <tt>renew_by</tt> or
<tt>renewal_interval</tt>.</t>
        <section anchor="example-effective-policy-and-acknowledgment">
          <name>Example Effective Policy and Acknowledgment</name>
          <t>An Effective Policy Object example:</t>
          <sourcecode type="json"><![CDATA[
{
  "policy_id": "effective-doorbell-7-v3",
  "policy_hash": "sha256:8de72af3c4d6d8c9f0b0f6a4a13c8df0f716c9c0a1130d27c855a2dd8dd8e8c7",
  "renewal_interval": 900,
  "taxonomy": {
    "release": "ppd-core-2026-05"
  },
  "base_policy_id": "home-default-v2",
  "applied_policy_id": "doorbell-exception-v1",
  "computed_at": "2026-05-13T18:00:00Z",
  "rules": [
    {
      "rule_id": "r1",
      "data_type": "ppd:contentData",
      "purpose": "ppd:security",
      "action": "ppd:use",
      "source": "ppd:participantObserved",
      "handling_context": "ppd:householdContext",
      "effect": "allow",
      "constraints": {
        "processing_boundary": "ppd:onDeviceOnly"
      }
    }
  ]
}
]]></sourcecode>
          <t>The matching Policy Acknowledgment Object example is:</t>
          <sourcecode type="json"><![CDATA[
{
  "device_id": "doorbell-7",
  "policy_id": "effective-doorbell-7-v3",
  "policy_hash": "sha256:8de72af3c4d6d8c9f0b0f6a4a13c8df0f716c9c0a1130d27c855a2dd8dd8e8c7"
}
]]></sourcecode>
          <t>An Acknowledgment Result Object example is:</t>
          <sourcecode type="json"><![CDATA[
{
  "association_status": "associated",
  "renewal_interval": 900
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="error-object">
        <name>Error Object</name>
        <t>Error responses <bcp14>SHOULD</bcp14> use Problem Details for HTTP APIs <xref target="RFC9457"/> with the
<tt>Content-Type: application/problem+json</tt> header field.
An error response using this format <bcp14>MUST</bcp14> conform to RFC 9457 and include at
least:</t>
        <ul spacing="normal">
          <li>
            <t><tt>type</tt>:
problem type identifier, including PPD-specific problem types when
applicable;</t>
          </li>
          <li>
            <t><tt>title</tt>:
short problem summary;</t>
          </li>
          <li>
            <t><tt>status</tt>:
HTTP status code for this error, which <bcp14>MUST</bcp14> match the actual HTTP response
status; and</t>
          </li>
          <li>
            <t><tt>detail</tt>:
human-readable explanation when useful.</t>
          </li>
        </ul>
        <t>A deployment <bcp14>MAY</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t><tt>instance</tt>:
problem-instance identifier; and</t>
          </li>
          <li>
            <t><tt>retryable</tt>:
boolean hint about whether retry is appropriate.</t>
          </li>
        </ul>
        <t>Error responses <bcp14>MUST NOT</bcp14> leak more household or participant metadata than is
necessary to explain the failure.</t>
        <t>For PPD-specific problems, the <tt>type</tt> member <bcp14>SHOULD</bcp14> be one of the following
absolute URIs:</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-invalid-request</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-invalid-participant-binding</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-reassociation-required</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-stale-association</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-policy-instance-mismatch</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-unsupported-taxonomy-term</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-term-resolution-failed</tt></t>
          </li>
          <li>
            <t><tt>https://iana.org/assignments/http-problem-types#ppd-policy-authority-unavailable</tt></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>The baseline protocol uses conventional HTTP status codes.
At minimum, participants need to handle:</t>
      <ul spacing="normal">
        <li>
          <t><tt>200 OK</tt> for successful retrieval or update with a response body;</t>
        </li>
        <li>
          <t><tt>204 No Content</tt> for successful declaration acceptance when no diagnostic
response body is returned;</t>
        </li>
        <li>
          <t><tt>400 Bad Request</tt> for invalid payloads or missing required fields;</t>
        </li>
        <li>
          <t><tt>401 Unauthorized</tt> for failed authentication;</t>
        </li>
        <li>
          <t><tt>403 Forbidden</tt> for authenticated participants that are not authorized for
the requested operation;</t>
        </li>
        <li>
          <t><tt>404 Not Found</tt> for missing participant or policy state;</t>
        </li>
        <li>
          <t><tt>409 Conflict</tt> for lifecycle or policy-instance conflicts, such as
acknowledgments that do not match the current policy instance;</t>
        </li>
        <li>
          <t><tt>422 Unprocessable Content</tt> for well-formed content that cannot be processed
semantically, such as unsupported or unresolvable taxonomy terms;</t>
        </li>
        <li>
          <t><tt>503 Service Unavailable</tt> for transient service or policy-authority
unavailability; and</t>
        </li>
        <li>
          <t>other <tt>5xx</tt> errors for unexpected service failures.</t>
        </li>
      </ul>
      <t>The initial PPD-specific problem vocabulary is:</t>
      <t>The short labels below describe the problems; they are not values for the
Problem Details <tt>type</tt> member. When a PPD-specific problem type is used, the
<tt>type</tt> member carries the corresponding absolute URI listed above.</t>
      <ul spacing="normal">
        <li>
          <t><tt>invalid-request</tt>:
malformed request payload, missing required fields, or invalid field shape;</t>
        </li>
        <li>
          <t><tt>invalid-participant-binding</tt>:
authenticated participant identity does not match the bound registration or
requested participant identifier;</t>
        </li>
        <li>
          <t><tt>reassociation-required</tt>:
current association is no longer valid and the participant must replay the
required lifecycle steps;</t>
        </li>
        <li>
          <t><tt>stale-association</tt>:
the acknowledged policy instance may still be current, but freshness expired
and renewal is required;</t>
        </li>
        <li>
          <t><tt>policy-instance-mismatch</tt>:
the supplied <tt>policy_id</tt> or <tt>policy_hash</tt> does not identify the current
policy instance the service expects;</t>
        </li>
        <li>
          <t><tt>unsupported-taxonomy-term</tt>:
the service recognizes the request shape and can resolve the supplied compact
term identifier or identifiers, but does not support one or more resulting
taxonomy terms for the relevant operation or deployment profile;</t>
        </li>
        <li>
          <t><tt>term-resolution-failed</tt>:
the service cannot deterministically resolve a supplied compact term
identifier to usable protocol semantics, such as because the identifier is
malformed, a required non-core prefix declaration is missing, or a reserved
core prefix was redeclared or remapped; and</t>
        </li>
        <li>
          <t><tt>policy-authority-unavailable</tt>:
the participant-facing service cannot currently obtain or materialize the
effective policy instance it needs to serve.</t>
        </li>
      </ul>
      <t>The following HTTP status mappings are <bcp14>RECOMMENDED</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t><tt>400 Bad Request</tt> with <tt>invalid-request</tt>;</t>
        </li>
        <li>
          <t><tt>401 Unauthorized</tt> with <tt>invalid-participant-binding</tt> when authentication
fails to establish the expected participant identity;</t>
        </li>
        <li>
          <t><tt>403 Forbidden</tt> with <tt>invalid-participant-binding</tt> when the participant is
authenticated but not authorized for the targeted participant state;</t>
        </li>
        <li>
          <t><tt>409 Conflict</tt> with <tt>reassociation-required</tt>, <tt>stale-association</tt>, or
<tt>policy-instance-mismatch</tt>;</t>
        </li>
        <li>
          <t><tt>422 Unprocessable Content</tt> with <tt>unsupported-taxonomy-term</tt> or
<tt>term-resolution-failed</tt>; and</t>
        </li>
        <li>
          <t><tt>503 Service Unavailable</tt> with <tt>policy-authority-unavailable</tt>.</t>
        </li>
      </ul>
      <t>A participant that receives an error during renewal or reassociation <bcp14>MUST NOT</bcp14>
assume that it still has current association unless the service endpoint has
explicitly confirmed that state.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Candidate discovery and endpoint trust are separate concerns.
A participant <bcp14>MUST</bcp14> authenticate the selected PPD service endpoint according to
the deployment's security profile before treating policy information as
authoritative.</t>
      <t>All normative PPD participation defined by this document is authenticated
participation.
Deployments <bcp14>MUST NOT</bcp14> present unauthenticated local testing or demo operation as
equivalent to <tt>direct-constrained</tt> or <tt>direct-certificate</tt>
participation when making claims about protected current association.</t>
      <t>All normative PPD participation defined by this document <bcp14>MUST</bcp14> provide:</t>
      <ul spacing="normal">
        <li>
          <t>participant authentication sufficient to bind registration and
acknowledgment state to the same participant identity;</t>
        </li>
        <li>
          <t>participant-facing confidentiality and integrity protection for registration,
policy retrieval, and acknowledgment exchanges;</t>
        </li>
        <li>
          <t>policy integrity sufficient to identify the acknowledged policy instance
unambiguously;</t>
        </li>
        <li>
          <t>freshness protection sufficient to prevent replay of old acknowledgments as
evidence of current association; and</t>
        </li>
        <li>
          <t>protected storage or export of acknowledgment records when those records are
used for later inspection or accountability.</t>
        </li>
      </ul>
      <t>When a PPD service endpoint fronts a distinct policy authority, the deployment
<bcp14>MUST</bcp14> preserve the authenticity and integrity of policy instances, policy hashes,
and freshness metadata across that internal boundary.
This document does not standardize the internal protocol used for that purpose.</t>
      <t>The protocol <bcp14>SHOULD</bcp14> minimize metadata exposure during discovery, registration,
and policy retrieval.
In particular, discovery metadata and unauthenticated error responses <bcp14>SHOULD</bcp14>
avoid exposing household policy contents, participant inventories, or
acknowledgment history.
<xref target="RFC7258"/> remains relevant to these design choices.</t>
    </section>
    <section anchor="internationalization-considerations">
      <name>Internationalization Considerations</name>
      <t>Where policy tags, labels, or other string identifiers are exchanged in this
protocol, future profiles <bcp14>SHOULD</bcp14> define comparison and storage behavior that is
consistent across vendors and locales.
Where internationalized strings are used, alignment with <xref target="RFC7564"/> <bcp14>SHOULD</bcp14> be
considered.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests registration of the following problem types in the
HTTP Problem Types registry <xref target="RFC9457"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-invalid-request</tt>
Title: PPD Invalid Request
Recommended HTTP Status Code: <tt>400</tt>
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-invalid-participant-binding</tt>
Title: PPD Invalid Participant Binding
Recommended HTTP Status Code: <tt>401</tt> or <tt>403</tt>, as specified in this document
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-reassociation-required</tt>
Title: PPD Reassociation Required
Recommended HTTP Status Code: <tt>409</tt>
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-stale-association</tt>
Title: PPD Stale Association
Recommended HTTP Status Code: <tt>409</tt>
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-policy-instance-mismatch</tt>
Title: PPD Policy Instance Mismatch
Recommended HTTP Status Code: <tt>409</tt>
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-unsupported-taxonomy-term</tt>
Title: PPD Unsupported Taxonomy Term
Recommended HTTP Status Code: <tt>422</tt>
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-term-resolution-failed</tt>
Title: PPD Term Resolution Failed
Recommended HTTP Status Code: <tt>422</tt>
Reference: This document</t>
        </li>
        <li>
          <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#ppd-policy-authority-unavailable</tt>
Title: PPD Policy Authority Unavailable
Recommended HTTP Status Code: <tt>503</tt>
Reference: This document</t>
        </li>
      </ul>
      <t>This document requests registration of the following URI suffix in the
Well-Known URI Registry <xref target="RFC8615"/>:</t>
      <ul spacing="normal">
        <li>
          <t>URI suffix: <tt>ppd</tt></t>
        </li>
        <li>
          <t>Change controller: IETF</t>
        </li>
        <li>
          <t>Specification document(s): This document</t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>URI schemes: <tt>http</tt>, <tt>https</tt></t>
        </li>
        <li>
          <t>Related information: A <tt>GET</tt> request to <tt>/.well-known/ppd</tt> returns a Service
Metadata Object using <tt>application/json</tt>. The object identifies the
participant-facing PPD API base URI for the advertised protocol version.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <?line 1319?>

<reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </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>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-dsmullen-ppd-architecture">
          <front>
            <title>Privacy Preference Declaration for Home Networks</title>
            <author fullname="Daniel Smullen" initials="D." surname="Smullen">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Brian Scriber" initials="B." surname="Scriber">
              <organization>CableLabs</organization>
            </author>
            <date day="22" month="May" year="2026"/>
            <abstract>
              <t>   This document describes an architecture for signaling household
   privacy preferences to devices in home networks through Privacy
   Preference Declarations (PPDs).  The architecture enables a PPD
   participant to discover a PPD service endpoint, establish trust in
   that endpoint through the applicable protocol and security profile,
   retrieve the applicable household policy instance, and acknowledge
   receipt of that policy instance.  The acknowledgment establishes that
   a specific policy instance was made available to the participant; it
   does not, by itself, assert anything about the participant's
   subsequent behavior.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-architecture-10"/>
        </reference>
        <reference anchor="I-D.draft-dsmullen-ppd-taxonomy">
          <front>
            <title>Privacy Preference Declaration Taxonomy</title>
            <author fullname="Daniel Smullen" initials="D." surname="Smullen">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Brian Scriber" initials="B." surname="Scriber">
              <organization>CableLabs</organization>
            </author>
            <date day="22" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the core vocabulary, comparison model, and
   extension discipline used by Privacy Preference Declarations (PPDs)
   to express atomic privacy-relevant dataflows in home networks.  It
   complements the companion PPD architecture and protocol work by
   standardizing the core fields used in participant declarations and
   household policy rules.  The core vocabulary is the mandatory shared
   semantic floor for baseline participant-facing interoperability.
   Richer ecosystem-specific vocabularies remain possible, but
   comparison-relevant non-core terms need explicit relationships to the
   shared core so they remain computable.  Baseline participant-facing
   protocol messages use compact identifiers plus taxonomy context
   rather than requiring full ontology exchange on the wire.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dsmullen-ppd-taxonomy-05"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8006">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Metadata</title>
            <author fullname="B. Niven-Jenkins" initials="B." surname="Niven-Jenkins"/>
            <author fullname="R. Murray" initials="R." surname="Murray"/>
            <author fullname="M. Caulfield" initials="M." surname="Caulfield"/>
            <author fullname="K. Ma" initials="K." surname="Ma"/>
            <date month="December" year="2016"/>
            <abstract>
              <t>The Content Delivery Network Interconnection (CDNI) Metadata interface enables interconnected Content Delivery Networks (CDNs) to exchange content distribution metadata in order to enable content acquisition and delivery. The CDNI Metadata associated with a piece of content provides a downstream CDN with sufficient information for the downstream CDN to service content requests on behalf of an upstream CDN. This document describes both a base set of CDNI Metadata and the protocol for exchanging that metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8006"/>
          <seriesInfo name="DOI" value="10.17487/RFC8006"/>
        </reference>
        <reference anchor="RFC9388">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Footprint Types: Country Subdivision Code and Footprint Union</title>
            <author fullname="N. Sopher" initials="N." surname="Sopher"/>
            <author fullname="S. Mishra" initials="S." surname="Mishra"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>&lt;p&gt;Open Caching architecture is a use case of Content Delivery Network Interconnection (CDNI) in which the commercial Content Delivery Network (CDN) is the upstream CDN (uCDN) and the ISP caching layer serves as the downstream CDN (dCDN). RFC 8006 defines footprint types that are used for footprint objects as part of the Metadata interface (MI). The footprint types are also used for the Footprint &amp; Capabilities Advertisement interface (FCI) as defined in RFC 8008. This document defines two new footprint types. The first footprint type defined is an ISO 3166-2 country subdivision code. Defining this country subdivision code improves granularity for delegation as compared to the ISO 3166-1 country code footprint type defined in RFC 8006. The ISO 3166-2 country subdivision code is also added as a new entity domain type in the "ALTO Entity Domain Types" registry defined in Section 7.4 of RFC 9241. The second footprint type defines a footprint union to aggregate footprint objects. This allows for additive semantics over the narrowing semantics defined in Appendix B of RFC 8008 and therefore updates RFC 8008. The two new footprint types are based on the requirements raised by Open Caching but are also applicable to CDNI use cases in general.&lt;/p&gt;</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9388"/>
          <seriesInfo name="DOI" value="10.17487/RFC9388"/>
        </reference>
        <reference anchor="RFC7258">
          <front>
            <title>Pervasive Monitoring Is an Attack</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="188"/>
          <seriesInfo name="RFC" value="7258"/>
          <seriesInfo name="DOI" value="10.17487/RFC7258"/>
        </reference>
        <reference anchor="RFC7564">
          <front>
            <title>PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="M. Blanchet" initials="M." surname="Blanchet"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Application protocols using Unicode characters in protocol strings need to properly handle such strings in order to enforce internationalization rules for strings placed in various protocol slots (such as addresses and identifiers) and to perform valid comparison operations (e.g., for purposes of authentication or authorization). This document defines a framework enabling application protocols to perform the preparation, enforcement, and comparison of internationalized strings ("PRECIS") in a way that depends on the properties of Unicode characters and thus is agile with respect to versions of Unicode. As a result, this framework provides a more sustainable approach to the handling of internationalized strings than the previous framework, known as Stringprep (RFC 3454). This document obsoletes RFC 3454.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7564"/>
          <seriesInfo name="DOI" value="10.17487/RFC7564"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
