<?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-ietf-core-coap-pubsub-22" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="CoAP pubsub">A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-22"/>
    <author initials="J." surname="Jiménez" fullname="Jaime Jiménez">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <country>Finland</country>
        </postal>
        <email>jaime@iki.fi</email>
      </address>
    </author>
    <author initials="M." surname="Koster" fullname="Michael Koster">
      <organization>Dogtiger Labs</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>michaeljohnkoster@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Keranen" fullname="Ari Keranen">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <country>Finland</country>
        </postal>
        <email>ari.keranen@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Web and Internet Transport</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 87?>

<t>This document describes a publish-subscribe architecture for the Constrained Application Protocol (CoAP), extending the capabilities of CoAP communications for supporting endpoints with long breaks in connectivity and/or up-time. CoAP clients publish on and subscribe to a topic via a corresponding topic resource at a CoAP server acting as broker.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-coap-pubsub/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/coap-pubsub"/>.</t>
    </note>
  </front>
  <middle>
    <?line 91?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> supports machine-to-machine communication across networks of constrained devices and constrained networks. CoAP uses a request/response model where clients make requests to servers in order to request actions on resources. Depending on the situation, the same device may act either as a server, a client, or both.
One important class of constrained devices includes devices that are intended to run for years from a small battery, or by scavenging energy from their environment. These devices have limited up-time because they spend most of their time in a sleeping state with no network connectivity. Another important class of nodes are devices with limited reachability due to middle-boxes like Network Address Translators (NATs) and firewalls.</t>
      <t>For these nodes, the client/server-oriented architecture of REST can be challenging when interactions are not initiated by the devices themselves. A publish/subscribe-oriented architecture where nodes exchange data via topics through a broker entity might fit these nodes better.</t>
      <t>This document applies the idea of broker-based publish-subscribe to Constrained RESTful Environments using CoAP. It defines a broker that allows to create, discover, subscribe, and publish on topics.</t>
      <section anchor="terminology">
        <name>Terminology</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 <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This specification requires readers to be familiar with all the terms and concepts that are discussed in <xref target="RFC8288"/> and <xref target="RFC6690"/>. Readers should also be familiar with the terms and concepts discussed in <xref target="RFC7252"/>, <xref target="RFC9176"/>, and <xref target="RFC7641"/>.</t>
        <t>This specification makes use of the following terminology:</t>
        <dl newline="true">
          <dt>publish-subscribe (pubsub):</dt>
          <dd>
            <t>A message communication model where messages associated with specific topics are sent to a broker. Interested parties, i.e., subscribers, receive these topic-based messages from the broker without the original sender knowing the recipients. The broker handles the dispatching of these messages to the appropriate subscribers.</t>
          </dd>
          <dt>publishers and subscribers:</dt>
          <dd>
            <t>CoAP clients can act as publishers or as subscribers. Publishers send CoAP messages (publications) to the broker on specific topics. Subscribers have an ongoing relation (subscription) to a topic via CoAP Observe <xref target="RFC7641"/>. Both roles operate without any mutual knowledge, guided by their respective topic interests.</t>
          </dd>
          <dt>topic collection:</dt>
          <dd>
            <t>A topic collection is hosted as one collection resource at the broker. A collection resource is a resource that contains links to other resources that a client can add or remove; that concept is described more generally in <xref section="3.1" sectionFormat="of" target="I-D.ietf-core-interfaces"/>.</t>
          </dd>
          <dt>topic:</dt>
          <dd>
            <t>A set of information about an entity at the broker, including its configuration and other metadata. A topic is hosted as one topic resource at the broker, whose representation is the set of topic properties concerning the topic. All the topic resources associated with the same topic collection share a common base URI, i.e., the URI of the topic collection resource.</t>
          </dd>
          <dt>topic property:</dt>
          <dd>
            <t>A single element of configuration information that is associated with a topic.</t>
          </dd>
          <dt>topic-data resource:</dt>
          <dd>
            <t>A resource where clients can publish data and/or subscribe to data for a specific topic. The representation of the topic resource corresponding to such a topic also specifies the URI to the present topic-data resource.</t>
          </dd>
          <dt>broker:</dt>
          <dd>
            <t>A CoAP server component that hosts one or more topic collections with their topics, together with the topic-data resources of those topics. The broker is responsible for the store-and-forward of state update representations and for handling the topic lifecycle as defined in <xref target="topic-lifecycle"/>. A topic-data resource may be served from a different address than the topic resource, e.g., by a server that is part of the same broker deployment. The creation, configuration, and discovery of topics at a broker is specified in <xref target="topics"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="coap-publish-subscribe-architecture">
        <name>CoAP Publish-Subscribe Architecture</name>
        <t><xref target="fig-arch"/> shows a simple publish-subscribe architecture based on CoAP.</t>
        <t>The broker can create its hosted topics and set their initial configurations. Alternatively, topics can be created together with their initial configuration by a client (e.g., a publisher or a dedicated administrator), over the RESTful interface of the topic collection resource hosted by the broker.</t>
        <t>The broker is responsible for the store-and-forward of state update representations between CoAP clients. Publishers submit their data over the RESTful interface of the topic-data resource corresponding to the topic, hosted by the broker. Subscribers to a topic are notified of new publications by using Observe <xref target="RFC7641"/> on the corresponding topic-data resource.</t>
        <t>As CoAP PubSub builds on <xref target="RFC7252"/> and <xref target="RFC7641"/>, its messages are not events but state updates following the principle of eventual consistency rather than per-event delivery. A message may be silently coalesced when a newer message on the same topic is delivered (e.g. by intermediaries or libraries), or be delivered twice, without changing the semantics. Applications requiring stronger guarantees need to handle that explicitly.</t>
        <figure anchor="fig-arch">
          <name>Publish-subscribe architecture based on CoAP</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="488" viewBox="0 0 488 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,128" fill="none" stroke="black"/>
                <path d="M 8,176 L 8,240" fill="none" stroke="black"/>
                <path d="M 104,64 L 104,128" fill="none" stroke="black"/>
                <path d="M 104,176 L 104,240" fill="none" stroke="black"/>
                <path d="M 192,64 L 192,240" fill="none" stroke="black"/>
                <path d="M 280,64 L 280,240" fill="none" stroke="black"/>
                <path d="M 376,64 L 376,128" fill="none" stroke="black"/>
                <path d="M 376,176 L 376,240" fill="none" stroke="black"/>
                <path d="M 480,64 L 480,128" fill="none" stroke="black"/>
                <path d="M 480,176 L 480,240" fill="none" stroke="black"/>
                <path d="M 8,64 L 104,64" fill="none" stroke="black"/>
                <path d="M 192,64 L 280,64" fill="none" stroke="black"/>
                <path d="M 376,64 L 480,64" fill="none" stroke="black"/>
                <path d="M 288,80 L 376,80" fill="none" stroke="black"/>
                <path d="M 104,96 L 184,96" fill="none" stroke="black"/>
                <path d="M 280,96 L 368,96" fill="none" stroke="black"/>
                <path d="M 280,112 L 368,112" fill="none" stroke="black"/>
                <path d="M 8,128 L 104,128" fill="none" stroke="black"/>
                <path d="M 376,128 L 480,128" fill="none" stroke="black"/>
                <path d="M 8,176 L 104,176" fill="none" stroke="black"/>
                <path d="M 376,176 L 480,176" fill="none" stroke="black"/>
                <path d="M 288,192 L 376,192" fill="none" stroke="black"/>
                <path d="M 104,208 L 184,208" fill="none" stroke="black"/>
                <path d="M 280,208 L 368,208" fill="none" stroke="black"/>
                <path d="M 280,224 L 368,224" fill="none" stroke="black"/>
                <path d="M 8,240 L 104,240" fill="none" stroke="black"/>
                <path d="M 192,240 L 280,240" fill="none" stroke="black"/>
                <path d="M 376,240 L 480,240" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="376,224 364,218.4 364,229.6" fill="black" transform="rotate(0,368,224)"/>
                <polygon class="arrowhead" points="376,208 364,202.4 364,213.6" fill="black" transform="rotate(0,368,208)"/>
                <polygon class="arrowhead" points="376,112 364,106.4 364,117.6" fill="black" transform="rotate(0,368,112)"/>
                <polygon class="arrowhead" points="376,96 364,90.4 364,101.6" fill="black" transform="rotate(0,368,96)"/>
                <polygon class="arrowhead" points="296,192 284,186.4 284,197.6" fill="black" transform="rotate(180,288,192)"/>
                <polygon class="arrowhead" points="296,80 284,74.4 284,85.6" fill="black" transform="rotate(180,288,80)"/>
                <polygon class="arrowhead" points="192,208 180,202.4 180,213.6" fill="black" transform="rotate(0,184,208)"/>
                <polygon class="arrowhead" points="192,96 180,90.4 180,101.6" fill="black" transform="rotate(0,184,96)"/>
                <g class="text">
                  <text x="36" y="36">CoAP</text>
                  <text x="244" y="36">CoAP</text>
                  <text x="412" y="36">CoAP</text>
                  <text x="48" y="52">clients</text>
                  <text x="244" y="52">server</text>
                  <text x="424" y="52">clients</text>
                  <text x="328" y="68">observe</text>
                  <text x="144" y="84">publish</text>
                  <text x="56" y="100">publisher</text>
                  <text x="428" y="100">subscriber</text>
                  <text x="56" y="148">...</text>
                  <text x="236" y="148">broker</text>
                  <text x="424" y="148">...</text>
                  <text x="56" y="164">...</text>
                  <text x="424" y="164">...</text>
                  <text x="328" y="180">observe</text>
                  <text x="144" y="196">publish</text>
                  <text x="56" y="212">publisher</text>
                  <text x="428" y="212">subscriber</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
     CoAP                      CoAP                 CoAP
     clients                  server                clients
   .-----------.          .----------.  observe  .------------.
   |           | publish  |          |<----------+            |
   | publisher +--------->+          +---------->| subscriber |
   |           |          |          +---------->|            |
   '-----------'          |          |           '------------'
        ...               |  broker  |                ...
        ...               |          |                ...
   .-----------.          |          |  observe  .------------.
   |           | publish  |          |<----------+            |
   | publisher +--------->|          +---------->| subscriber |
   |           |          |          +---------->|            |
   '-----------'          '----------'           '------------'
]]></artwork>
          </artset>
        </figure>
        <t>Note that CoAP clients that merely interact with topic configuration but not with topic data (e.g., a dedicated administrator) are not depicted in <xref target="fig-arch"/>.</t>
        <t>This document describes two sets of interactions; interactions to configure topics and their lifecycle (see <xref target="topic-create"/> and <xref target="topic-configuration-interactions"/>) and interactions about the topic-data (see <xref target="topic-data-interactions"/>).</t>
        <t>Topic interactions are: discovery, create, read configuration, update configuration, and delete configuration. These operations concern the management of the topics.</t>
        <t>The topic-data interactions are: publish, subscribe, unsubscribe, and read. These operations are oriented on how data is transferred from a publisher to a subscriber.</t>
      </section>
      <section anchor="managing-topics">
        <name>Managing Topics</name>
        <t><xref target="fig-api"/> shows the resources related to a topic collection that can be managed at the broker.</t>
        <figure anchor="fig-api">
          <name>Resources of a Broker</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="496" viewBox="0 0 496 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 92,56 L 100,72" fill="none" stroke="black"/>
                <path d="M 148,136 L 156,152" fill="none" stroke="black"/>
                <path d="M 136,80 L 156,120" fill="none" stroke="black"/>
                <path d="M 124,40 L 132,56" fill="none" stroke="black"/>
                <path d="M 180,120 L 188,136" fill="none" stroke="black"/>
                <path d="M 212,136 L 220,152" fill="none" stroke="black"/>
                <path d="M 212,104 L 220,120" fill="none" stroke="black"/>
                <path d="M 244,120 L 252,136" fill="none" stroke="black"/>
                <path d="M 308,136 L 316,152" fill="none" stroke="black"/>
                <path d="M 308,104 L 316,120" fill="none" stroke="black"/>
                <path d="M 340,120 L 348,136" fill="none" stroke="black"/>
                <path d="M 92,56 L 100,40" fill="none" stroke="black"/>
                <path d="M 124,72 L 132,56" fill="none" stroke="black"/>
                <path d="M 148,136 L 156,120" fill="none" stroke="black"/>
                <path d="M 180,152 L 188,136" fill="none" stroke="black"/>
                <path d="M 212,136 L 220,120" fill="none" stroke="black"/>
                <path d="M 244,152 L 252,136" fill="none" stroke="black"/>
                <path d="M 308,136 L 316,120" fill="none" stroke="black"/>
                <path d="M 340,152 L 348,136" fill="none" stroke="black"/>
                <path d="M 100,40 L 124,40" fill="none" stroke="black"/>
                <path d="M 100,72 L 124,72" fill="none" stroke="black"/>
                <path d="M 148,104 L 308,104" fill="none" stroke="black"/>
                <path d="M 156,120 L 180,120" fill="none" stroke="black"/>
                <path d="M 220,120 L 244,120" fill="none" stroke="black"/>
                <path d="M 316,120 L 340,120" fill="none" stroke="black"/>
                <path d="M 156,152 L 180,152" fill="none" stroke="black"/>
                <path d="M 220,152 L 244,152" fill="none" stroke="black"/>
                <path d="M 316,152 L 340,152" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">topic</text>
                  <text x="44" y="68">collection</text>
                  <text x="44" y="84">resource</text>
                  <text x="280" y="132">...</text>
                  <text x="392" y="132">topic</text>
                  <text x="456" y="132">resources</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
             ___
   topic    /   \
 collection \___/
  resource       \
                  \____________________
                   \___    \___        \___
                   /   \   /   \  ...  /   \   topic resources
                   \___/   \___/       \___/
]]></artwork>
          </artset>
        </figure>
        <t>The broker exports one or more topic collection resources, with resource type "core.ps.coll" defined in <xref target="iana-rt"/> of this document. The interface for the topic collection resource is defined in <xref target="topic-collection-interactions"/>.</t>
        <t>A topic collection resource can have topic resources as its child resources, with resource type "core.ps.conf". Other child resource types are currently not defined for a topic collection resource.</t>
      </section>
    </section>
    <section anchor="topics">
      <name>PubSub Topics</name>
      <t>The broker hosts a collection of topics. These topics as well as the collection itself are exposed by a CoAP server as resources (see <xref target="fig-topic"/>).  Each topic contains a set of properties for configuration, one of which is the URI of the topic-data resource. The topic resource is used by a client for creating or administering a topic. The topic-data resource is used by the publishers and the subscribers to share the data values.</t>
      <figure anchor="fig-topic">
        <name>Topic and topic-data resources of a topic</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="448" viewBox="0 0 448 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 184,152 L 184,232" fill="none" stroke="black"/>
              <path d="M 272,152 L 272,232" fill="none" stroke="black"/>
              <path d="M 400,152 L 400,232" fill="none" stroke="black"/>
              <path d="M 164,248 L 172,264" fill="none" stroke="black"/>
              <path d="M 92,56 L 100,72" fill="none" stroke="black"/>
              <path d="M 164,168 L 172,184" fill="none" stroke="black"/>
              <path d="M 196,232 L 204,248" fill="none" stroke="black"/>
              <path d="M 228,280 L 236,296" fill="none" stroke="black"/>
              <path d="M 136,80 L 172,152" fill="none" stroke="black"/>
              <path d="M 124,40 L 132,56" fill="none" stroke="black"/>
              <path d="M 196,152 L 204,168" fill="none" stroke="black"/>
              <path d="M 252,248 L 260,264" fill="none" stroke="black"/>
              <path d="M 252,168 L 260,184" fill="none" stroke="black"/>
              <path d="M 284,232 L 292,248" fill="none" stroke="black"/>
              <path d="M 236,104 L 260,152" fill="none" stroke="black"/>
              <path d="M 284,152 L 292,168" fill="none" stroke="black"/>
              <path d="M 380,248 L 388,264" fill="none" stroke="black"/>
              <path d="M 380,168 L 388,184" fill="none" stroke="black"/>
              <path d="M 412,232 L 420,248" fill="none" stroke="black"/>
              <path d="M 364,104 L 388,152" fill="none" stroke="black"/>
              <path d="M 412,152 L 420,168" fill="none" stroke="black"/>
              <path d="M 92,56 L 100,40" fill="none" stroke="black"/>
              <path d="M 124,72 L 132,56" fill="none" stroke="black"/>
              <path d="M 164,168 L 172,152" fill="none" stroke="black"/>
              <path d="M 164,248 L 172,232" fill="none" stroke="black"/>
              <path d="M 196,184 L 204,168" fill="none" stroke="black"/>
              <path d="M 196,264 L 204,248" fill="none" stroke="black"/>
              <path d="M 252,168 L 260,152" fill="none" stroke="black"/>
              <path d="M 220,296 L 228,280" fill="none" stroke="black"/>
              <path d="M 252,248 L 260,232" fill="none" stroke="black"/>
              <path d="M 284,184 L 292,168" fill="none" stroke="black"/>
              <path d="M 284,264 L 292,248" fill="none" stroke="black"/>
              <path d="M 380,168 L 388,152" fill="none" stroke="black"/>
              <path d="M 380,248 L 388,232" fill="none" stroke="black"/>
              <path d="M 412,184 L 420,168" fill="none" stroke="black"/>
              <path d="M 412,264 L 420,248" fill="none" stroke="black"/>
              <path d="M 100,40 L 124,40" fill="none" stroke="black"/>
              <path d="M 100,72 L 124,72" fill="none" stroke="black"/>
              <path d="M 148,104 L 364,104" fill="none" stroke="black"/>
              <path d="M 172,152 L 196,152" fill="none" stroke="black"/>
              <path d="M 260,152 L 284,152" fill="none" stroke="black"/>
              <path d="M 388,152 L 412,152" fill="none" stroke="black"/>
              <path d="M 172,264 L 196,264" fill="none" stroke="black"/>
              <path d="M 260,264 L 284,264" fill="none" stroke="black"/>
              <path d="M 388,264 L 412,264" fill="none" stroke="black"/>
              <path d="M 148,296 L 220,296" fill="none" stroke="black"/>
              <path d="M 236,296 L 308,296" fill="none" stroke="black"/>
              <path d="M 364,296 L 436,296" fill="none" stroke="black"/>
              <circle cx="184" cy="160" r="6" class="closeddot" fill="black"/>
              <circle cx="272" cy="160" r="6" class="closeddot" fill="black"/>
              <circle cx="400" cy="160" r="6" class="closeddot" fill="black"/>
              <g class="text">
                <text x="40" y="52">topic</text>
                <text x="44" y="68">collection</text>
                <text x="44" y="84">resource</text>
                <text x="196" y="132">......</text>
                <text x="284" y="132">......</text>
                <text x="412" y="132">......</text>
                <text x="112" y="148">topic</text>
                <text x="152" y="148">:</text>
                <text x="216" y="148">:</text>
                <text x="240" y="148">:</text>
                <text x="304" y="148">:</text>
                <text x="368" y="148">:</text>
                <text x="432" y="148">:</text>
                <text x="100" y="164">resource</text>
                <text x="152" y="164">:</text>
                <text x="216" y="164">:</text>
                <text x="240" y="164">:</text>
                <text x="304" y="164">:</text>
                <text x="368" y="164">:</text>
                <text x="432" y="164">:</text>
                <text x="152" y="180">:</text>
                <text x="176" y="180">_</text>
                <text x="192" y="180">_</text>
                <text x="216" y="180">:</text>
                <text x="240" y="180">:</text>
                <text x="264" y="180">_</text>
                <text x="280" y="180">_</text>
                <text x="304" y="180">:</text>
                <text x="368" y="180">:</text>
                <text x="392" y="180">_</text>
                <text x="408" y="180">_</text>
                <text x="432" y="180">:</text>
                <text x="164" y="196">....</text>
                <text x="204" y="196">....</text>
                <text x="252" y="196">....</text>
                <text x="292" y="196">....</text>
                <text x="380" y="196">....</text>
                <text x="420" y="196">....</text>
                <text x="164" y="212">....</text>
                <text x="204" y="212">....</text>
                <text x="252" y="212">....</text>
                <text x="292" y="212">....</text>
                <text x="380" y="212">....</text>
                <text x="420" y="212">....</text>
                <text x="152" y="228">:</text>
                <text x="176" y="228">_</text>
                <text x="192" y="228">_</text>
                <text x="216" y="228">:</text>
                <text x="240" y="228">:</text>
                <text x="264" y="228">_</text>
                <text x="280" y="228">_</text>
                <text x="304" y="228">:</text>
                <text x="336" y="228">...</text>
                <text x="368" y="228">:</text>
                <text x="392" y="228">_</text>
                <text x="408" y="228">_</text>
                <text x="432" y="228">:</text>
                <text x="92" y="244">topic-data</text>
                <text x="152" y="244">:</text>
                <text x="216" y="244">:</text>
                <text x="240" y="244">:</text>
                <text x="304" y="244">:</text>
                <text x="368" y="244">:</text>
                <text x="432" y="244">:</text>
                <text x="100" y="260">resource</text>
                <text x="152" y="260">:</text>
                <text x="216" y="260">:</text>
                <text x="240" y="260">:</text>
                <text x="304" y="260">:</text>
                <text x="368" y="260">:</text>
                <text x="432" y="260">:</text>
                <text x="184" y="276">:.......:</text>
                <text x="272" y="276">:.......:</text>
                <text x="400" y="276">:.......:</text>
                <text x="144" y="292">\</text>
                <text x="312" y="292">/</text>
                <text x="336" y="292">...</text>
                <text x="360" y="292">\</text>
                <text x="440" y="292">/</text>
                <text x="176" y="308">topic</text>
                <text x="208" y="308">1</text>
                <text x="264" y="308">topic</text>
                <text x="296" y="308">2</text>
                <text x="392" y="308">topic</text>
                <text x="424" y="308">n</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
              ___
    topic    /   \
  collection \___/
   resource       \
                   \___________________________
                    \          \               \
                     \ ......   \ ......        \ ......
             topic  : \___  :  : \___  :       : \___  :
          resource  : / * \ :  : / * \ :       : / * \ :
                    : \_|_/ :  : \_|_/ :       : \_|_/ :
                    ....|....  ....|....       ....|....
                    ....|....  ....|....       ....|....
                    :  _|_  :  :  _|_  :  ...  :  _|_  :
        topic-data  : /   \ :  : /   \ :       : /   \ :
          resource  : \___/ :  : \___/ :       : \___/ :
                    :.......:  :.......:       :.......:
                   \_________/\_________/ ... \_________/
                     topic 1    topic 2         topic n
]]></artwork>
        </artset>
      </figure>
      <section anchor="collection-representation">
        <name>Collection Representation</name>
        <t>Each topic is represented as a link, where the link target is the URI of the corresponding topic resource.</t>
        <t>Publication and subscription to a topic occur at the target of a link, which is the URI of the corresponding topic-data resource. Such a link is specified by the "topic-data" topic property within the topic resource (see <xref target="topic-properties"/>).</t>
        <t>A topic resource can also be simply called "topic".</t>
        <t>The list of links to the topic resources can be retrieved from the associated topic collection resource, represented as a CoRE Link Format document <xref target="RFC6690"/> where each link targets a topic resource of type "core.ps.conf" as defined in this document.</t>
      </section>
      <section anchor="topic-resource-representation">
        <name>Topic Representation</name>
        <t>A CoAP client can create a new topic by submitting an initial configuration for the topic (see <xref target="topic-create"/>). It can also read and update the configuration of existing topics and topic properties as well as delete them when they are no longer needed (see <xref target="topic-configuration-interactions"/>).</t>
        <t>The configuration of a topic itself consists of a set of topic properties that can be set by a client or by the broker. The topic is represented as a CBOR map containing the topic properties as top-level elements.</t>
        <t>The topic properties defined in this document are listed in <xref target="topic-properties"/>, with their CBOR abbreviations in <xref target="pubsub-parameters"/>. Further topic properties can be registered in the registry established in <xref target="iana-coap-pubsub-parameters"/>.</t>
        <section anchor="topic-properties">
          <name>Topic Properties</name>
          <t>The CBOR map includes the following topic properties, whose CBOR abbreviations are defined in <xref target="pubsub-parameters"/>.</t>
          <ul spacing="normal">
            <li>
              <t>"topic-name": A required field used as an application identifier. It encodes the topic name as a CBOR text string. Examples of topic names include human-readable strings (e.g., "room2"), UUIDs, or other values. The "topic-name" is required at topic creation to enable the broker to detect duplicate creation requests and to provide a stable application-level identifier. Applications that do not require human-readable names <bcp14>MAY</bcp14> use automatically generated values such as UUIDs.</t>
            </li>
            <li>
              <t>"topic-data": A required field (optional during creation) containing the URI of the topic-data resource for publishing/subscribing to this topic. It encodes the URI reference as a CBOR text string. The topic-data resource is controlled by the broker but may be served from a different address than the topic resource. Clients <bcp14>MUST</bcp14> use the URI in this field to reach the topic-data resource. Clients <bcp14>MUST NOT</bcp14> derive that URI from the URI of the topic resource. If a URI is not provided when creating the topic, the choice of the URI for the topic-data resource is left to the broker.</t>
            </li>
            <li>
              <t>"resource-type": A required field used to indicate the resource type of the topic-data resource for the topic. It encodes the resource type as a CBOR text string. This document defines the value "core.ps.data". Other specifications or deployments <bcp14>MAY</bcp14> define and use alternative resource type values for the topic-data resource.</t>
            </li>
            <li>
              <t>"topic-content-format": This optional field specifies the canonical CoAP Content-Format identifier of the topic-data resource representation as an unsigned integer, e.g., 60 for the media-type "application/cbor".</t>
            </li>
            <li>
              <t>"topic-type": An optional field used to indicate the attribute or property of the topic-data resource for the topic. It encodes the attribute as a CBOR text string. Example attributes include "temperature".</t>
            </li>
            <li>
              <t>"expiration-date": An optional field used to indicate the expiration date of the topic. It encodes the expiration date as a CBOR tag 1 (epoch-based date/time) as defined in Section <xref target="RFC8949" section="3.4.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>, representing the number of seconds since 1970-01-01T00:00Z in UTC time. If this field is not present, the topic will not expire automatically. When "expiration-date" is reached, the topic resource is deleted as described in <xref target="topic-delete"/>.</t>
            </li>
            <li>
              <t>"max-subscribers": An optional field used to indicate the maximum number of simultaneous subscribers allowed for the topic. It encodes the maximum number as a CBOR unsigned integer. If this field is not present, the topic configuration sets no limit. A broker <bcp14>MAY</bcp14> still enforce its own limit, e.g., based on its available resources, without exposing it in this field. At topic creation or update, this field is a hint from the topic creator; the broker <bcp14>MAY</bcp14> store a different value than the one requested, or none at all. Once stored, the value is enforced: if the limit is reached, new subscriptions are handled as specified in <xref section="4.1" sectionFormat="of" target="RFC7641"/>.</t>
            </li>
            <li>
              <t>"observer-check": An optional field that controls the maximum number of seconds between two consecutive Observe notifications sent as Confirmable messages to each topic subscriber (see <xref target="unsubscribe"/>). It is encoded as a CBOR unsigned integer greater than 0 and no greater than 86400, since <xref section="4.5" sectionFormat="of" target="RFC7641"/> requires a Confirmable notification at least every 24 hours. It ensures that subscribers that have lost interest and silently forgotten the observation do not remain indefinitely on the server's observer list. At topic creation or update, this field is a hint from the topic creator; the broker <bcp14>MAY</bcp14> store a different value than the one requested, within the same bound. Once stored, the server hosting the topic-data resource applies the value. The default value for this field is 86400, which corresponds to 24 hours.</t>
            </li>
          </ul>
          <t>A broker <bcp14>MUST</bcp14> ignore topic properties that it does not recognize. Ignored properties are not stored and do not appear in the representation of the topic resource. Since the responses to topic creation and update return the current representation of the topic resource (see <xref target="topic-create"/>, <xref target="topic-update-resource"/>, and <xref target="topic-update-resource-patch"/>), a client can determine from the response which of the properties it sent were accepted.</t>
          <t>The "resource-type" field carries a single value pertaining to the publish-subscribe functionality of the topic-data resource. The topic-data resource itself <bcp14>MAY</bcp14> have additional resource types visible in Link-Format discovery <xref target="RFC6690"/>, but those are not represented in this field.</t>
        </section>
      </section>
      <section anchor="discovery">
        <name>Discovery</name>
        <t>A client can perform a discovery of: the broker; the topic collection resources and topic resources hosted by the broker; and the topic-data resources associated with those topic resources.
Any server implementing a pubsub broker <bcp14>MUST</bcp14> support CoAP discovery with a query parameter as defined in <xref section="4.1" sectionFormat="of" target="RFC6690"/> and as used in the examples in this section.</t>
        <t>The CoRE Link Format discovery responses shown in the examples in this section are illustrative only.
The normative requirements for this format are defined in <xref target="RFC6690"/>.
The examples make minimal use of CoRE Link Format attributes, in order to reduce the size of discovery responses: this is beneficial for clients connected to constrained networks.
In general, a broker <bcp14>MAY</bcp14> include any CoRE Link Format attributes in each returned link, for example to meet specific use case requirements.</t>
        <section anchor="broker-discovery">
          <name>Broker Discovery</name>
          <t>CoAP clients can discover brokers by using CoAP discovery <xref target="RFC7252"/>, via multicast, through a Resource Directory (RD) <xref target="RFC9176"/> or by other means specified in extensions to <xref target="RFC7252"/>. Brokers can register with an RD by following the steps in <xref section="5" sectionFormat="of" target="RFC9176"/> with the resource type set to "core.ps" as defined in <xref target="iana"/> of this document.</t>
          <t>The following example shows an endpoint discovering a broker using the "core.ps" resource type over a multicast network. Brokers within the multicast scope will answer the query. Even when that discovery is unprotected, it does not disclose the existence of the topics but only that of the broker.</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Host: "kdc.example.com"
   Uri-Path: ".well-known"
   Uri-Path: "core"
   Uri-Query: "rt=core.ps"

   Response:

   Header: Content (Code=2.05)
   Content-Format: 40 (application/link-format)
   Payload:
   <coaps://mythinguri.com/broker/v1>;rt="core.ps"
]]></artwork>
        </section>
        <section anchor="topic-collection-discovery">
          <name>Topic Collection Discovery</name>
          <t>The topic collection resource is the entry point for topic discovery, since its representation lists the topics it contains (see <xref target="topic-get-all"/>). A broker <bcp14>SHOULD</bcp14> make its topic collection resources discoverable via "/.well-known/core" (see <xref section="1.2.2" sectionFormat="of" target="RFC6690"/>), identified by the resource type "core.ps.coll". A broker that restricts the discovery of its topic collections to authorized clients can omit them from "/.well-known/core" and rely on other means, such as a Resource Directory <xref target="RFC9176"/> or pre-configuration.</t>
          <t>The specific resource path is left for implementations. Examples in this document use the "/ps" path. The interactions with a topic collection are further defined in <xref target="topic-collection-interactions"/>.</t>
          <t>Since the representation of the topic collection resource includes the links to the associated topic resources, it is not required to locate those links under "/.well-known/core", also in order to limit the size of the CoRE Link Format document returned as result of the discovery.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: ".well-known"
   Uri-Path: "core"
   Uri-Query: "rt=core.ps.coll"

   Response:

   Header: Content (Code=2.05)
   Content-Format: 40 (application/link-format)
   Payload:
   </ps>;rt="core.ps.coll",
   </other/path>;rt="core.ps.coll"
]]></artwork>
          <t>Note that in this example the "ct" attribute is not included for the two collections in the returned CoRE Link Format document.
This is because the "ct" attribute is an optional hint, which is not needed in this case: the Content-Format of each topic collection resource is implied by its resource type (rt="core.ps.coll") to be 40 ("application/link-format").</t>
        </section>
        <section anchor="topic-discovery">
          <name>Topic Discovery</name>
          <t>A broker can also list its topic resources in /.well-known/core, identified by the resource type "core.ps.conf". Each topic collection is associated with a group of topic resources, each detailing the configuration of its respective topic (refer to <xref target="topic-properties"/>).</t>
          <t>Below is an example of discovery via /.well-known/core with query rt=core.ps.conf that returns a list of topics, as the list of links to the corresponding topic resources.</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: ".well-known"
   Uri-Path: "core"
   Uri-Query: "rt=core.ps.conf"

   Response:

   Header: Content (Code=2.05)
   Content-Format: 40 (application/link-format)
   Payload:
   </ps/h9392>;rt="core.ps.conf",
   </other/path/2e3570>;rt="core.ps.conf"
]]></artwork>
          <t>In certain scenarios, the method described herein may not be applicable, e.g., if the server wants to restrict topic availability. For example, the server hosting /.well-known/core may not be aware of the broker's authorization policy, the discovery interaction may need to be secured, or the size of the returned CoRE Link Format document may grow large. While <xref section="6" sectionFormat="of" target="RFC6690"/> allows per-entry access control in /.well-known/core, in such cases it is recommended to utilize the procedure outlined in <xref target="topic-get-all"/> and <xref target="topic-get-properties"/> for topic discovery instead.</t>
        </section>
        <section anchor="topic-data-discovery">
          <name>Topic-Data Discovery</name>
          <t>The "topic-data" topic property of a topic contains the URI of the topic-data resource used for publishing and subscribing. Retrieving the topic will also provide the URL of the topic-data resource (see <xref target="topic-get-resource"/>).</t>
          <t>This specification defines the resource type "core.ps.data" for topic-data resources. Other specifications or deployments <bcp14>MAY</bcp14> use alternative resource type values (see <xref target="topic-properties"/>). It is also possible to discover a list of topic-data resources by sending a request to the collection resource with a query parameter rt=core.ps.data, as shown in the example below. Every topic collection resource <bcp14>MUST</bcp14> support this query.</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: "ps"
   Uri-Query: "rt=core.ps.data"

   Response:

   Header: Content (Code=2.05)
   Content-Format: 40 (application/link-format)
   Payload:
   </ps/data/62e4f8d>
]]></artwork>
          <t>Note that the "rt" attribute is not included in the returned link in the example response.
This is because the query in the request already constrains all links in the response to be only of type "core.ps.data".
Therefore, including the "rt" attribute for each returned link would be unnecessary and would make the response size much larger.
A broker <bcp14>MAY</bcp14> elide these attributes to minimize the size of discovery response payloads, as the broker in this example does.</t>
        </section>
      </section>
      <section anchor="topic-collection-interactions">
        <name>Topic Collection Interactions</name>
        <t>A broker <bcp14>MUST</bcp14> support all the interactions with a topic collection resource defined in this section. A client <bcp14>MAY</bcp14> use any subset of them.</t>
        <t>The CoRE Link Format responses shown in the examples in this section are illustrative only.
The normative requirements for this format are defined in <xref target="RFC6690"/>.
The examples make minimal use of CoRE Link Format attributes, in order to reduce the size of responses: this is beneficial for clients connected to constrained networks.
In general, a broker <bcp14>MAY</bcp14> include any CoRE Link Format attributes in each returned link, for example to meet specific use case requirements.</t>
        <section anchor="topic-get-all">
          <name>Retrieving all topics</name>
          <t>A client can request a collection of the topics present in the broker by making a GET request to the topic collection URI.</t>
          <t>On success, the broker returns a successful response (typically 2.05 Content), specifying the list of links to topic resources associated with this topic collection (see <xref target="topic-resource-representation"/>).</t>
          <t>The broker <bcp14>MAY</bcp14> limit the returned list to the topics that the client is authorized to access. Discovery of the topic collection resource itself is described in <xref target="topic-collection-discovery"/>.</t>
          <t>The Content-Format 40 ("application/link-format") <bcp14>MUST</bcp14> be supported for the topic collection resource.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: "ps"

   Response:

   Header: Content (Code=2.05)
   Content-Format: 40 (application/link-format)
   Payload:
   </ps/h9392>,</ps/2e3570>
]]></artwork>
          <t>Note that no "rt" or "ct" attributes are returned for the topic resources in the example payload, because
the resource type (rt="core.ps.conf") is already implied by this specification for the topic collection and
the content-format (TBD606) is implied by the resource type.</t>
        </section>
        <section anchor="topic-get-properties">
          <name>Getting Topics by Topic Properties</name>
          <t>A client can filter a collection of topics by submitting the representation of a topic filter (see <xref target="topic-fetch-resource"/>) in a FETCH request to the topic collection URI.
On success, the broker returns a successful response (typically 2.05 Content) with a representation of a list of topics in the collection (see <xref target="topic-discovery"/>) that match the filter in CoRE Link Format <xref target="RFC6690"/>.</t>
          <t>Upon success, the broker responds with a successful response (typically 2.05 Content), providing a list of links to topic resources associated with this topic collection that match the request's filter criteria (refer to <xref target="topic-discovery"/>). A positive match happens only when each topic property in the request payload is present with the indicated value in the topic resource representation.</t>
          <t>This section describes FETCH semantics on the topic collection for request payloads with Content-Format TBD606 ("application/core-pubsub+cbor"), for which the response uses Content-Format 40 ("application/link-format"). Extensions that define other request Content-Formats also define the Content-Format of the corresponding response.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: FETCH (Code=0.05)
   Uri-Path: "ps"
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /         0: "temperature",
      / resource-type /      2: "core.ps.data"
   }


   Response:

   Header: Content (Code=2.05)
   Content-Format: 40 (application/link-format)
   Payload:
   </ps/2e3570>
]]></artwork>
          <t>Note that in this example no "rt" or "ct" attributes are returned in the response payload, since the type of each link
(topic resource with rt="core.ps.conf") is implied as the default resource type of each topic resource by this specification.
Eliding these attributes helps to minimize the size of the response payload.</t>
        </section>
        <section anchor="topic-create">
          <name>Creating a Topic</name>
          <t>A client can add a new topic to a collection of topics by submitting an initial representation of the topic resource (see <xref target="topic-resource-representation"/>) in a POST request to the topic collection URI. The request <bcp14>MUST</bcp14> include the "topic-name" and "resource-type" topic properties, and <bcp14>MAY</bcp14> include any other topic property in <xref target="topic-properties"/>.</t>
          <t>On success, the broker returns a 2.01 (Created) response, indicating the Location-Path of the new topic and the current representation of the topic resource. The response payload is a CBOR map. The response <bcp14>MUST</bcp14> include the required topic properties "topic-name", "resource-type", and "topic-data" (see <xref target="topic-properties"/>), and <bcp14>MAY</bcp14> include optional topic properties. The response <bcp14>MUST</bcp14> support Content-Format TBD606 ("application/core-pubsub+cbor"), which is the default.</t>
          <t>If requirements are defined for the client to create the topic as requested and the broker does not successfully assess that those requirements are met, then the broker <bcp14>MUST</bcp14> reply with a 4.xx client error response (such as 4.03 Forbidden).</t>
          <t>The broker <bcp14>MUST</bcp14> reply with a 4.xx client error response (such as 4.00 Bad Request) if the value of a recognized topic property is invalid, or if the "topic-name" is already in use or otherwise invalid. Unrecognized topic properties are ignored (see <xref target="topic-properties"/>).</t>
          <t>If the request includes a "topic-data" URI at which the broker cannot serve the topic-data resource, the broker <bcp14>MUST</bcp14> reply with a 4.xx client error response (such as 4.00 Bad Request).</t>
          <t>Below is an example of a successful topic creation:</t>
          <artwork><![CDATA[
   Request:

   Header: POST (Code=0.02)
   Uri-Path: "ps"
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /         0: "living-room-sensor",
      / resource-type /      2: "core.ps.data"
   }

   Response:

   Header: Created (Code=2.01)
   Location-Path: "ps"
   Location-Path: "h9392"
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /         0: "living-room-sensor",
      / topic-data /         1: "/ps/data/1bd0d6d",
      / resource-type /      2: "core.ps.data"
   }
]]></artwork>
        </section>
      </section>
      <section anchor="topic-configuration-interactions">
        <name>Topic Interactions</name>
        <t>A broker <bcp14>MUST</bcp14> support all the interactions with a topic resource defined in this section. A client <bcp14>MAY</bcp14> use any subset of them.</t>
        <section anchor="topic-get-resource">
          <name>Getting a topic</name>
          <t>A client can read the configuration of a topic by making a GET request to the topic resource URI.</t>
          <t>On success, the broker returns a successful response (typically 2.05 Content) with a representation of the topic resource, as specified in <xref target="topic-resource-representation"/>.</t>
          <t>If requirements are defined for the client to read the topic as requested and the broker does not successfully assess that those requirements are met, then the broker <bcp14>MUST</bcp14> reply with a 4.xx client error response (such as 4.03 Forbidden).</t>
          <t>The response payload is a CBOR map, whose possible entries are specified in <xref target="topic-resource-representation"/> and use the same abbreviations defined in <xref target="pubsub-parameters"/>.</t>
          <t>Successful responses to GET and FETCH requests on a topic resource are cacheable, following <xref section="5.6" sectionFormat="of" target="RFC7252"/> and <xref section="2" sectionFormat="of" target="RFC8132"/>. The broker uses the Max-Age option to indicate for how long a topic representation can be considered fresh, taking into account that the topic configuration can be updated or the topic deleted at any time.</t>
          <t>For example, below is a request on the topic "/ps/h9392":</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: "ps"
   Uri-Path: "h9392"

   Response:

   Header: Content (Code=2.05)
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /            0: "living-room-sensor",
      / topic-data /            1: "/ps/data/1bd0d6d",
      / resource-type /         2: "core.ps.data",
      / topic-content-format /  3: 112,
      / topic-type /            4: "temperature",
      / expiration-date /       5: 1(1680393599),
      / max-subscribers /       6: 100
   }
]]></artwork>
        </section>
        <section anchor="topic-fetch-resource">
          <name>Getting part of a topic</name>
          <t>A client can read the configuration of a topic by making a FETCH request to the topic resource URI with a filter for specific topic properties. This is done in order to retrieve part of the current topic resource.</t>
          <t>The request payload is a CBOR array of topic property keys, using the same abbreviations defined in <xref target="pubsub-parameters"/>, and is carried with Content-Format 60 ("application/cbor"). Each element of the array specifies one requested topic property of the current topic resource (see <xref target="topic-resource-representation"/>).</t>
          <t>On success, the broker returns a successful response (typically 2.05 Content) with a representation of the topic resource. The response has as payload the partial representation of the topic resource as specified in <xref target="topic-resource-representation"/>.</t>
          <t>If requirements are defined for the client to read the topic as requested and the broker does not successfully assess that those requirements are met, then the broker <bcp14>MUST</bcp14> reply with a 4.xx client error response (such as 4.03 Forbidden).</t>
          <t>The response payload is a CBOR map, whose possible entries are specified in <xref target="topic-resource-representation"/> and use the same abbreviations defined in <xref target="pubsub-parameters"/>.</t>
          <t>Content-Format 60 ("application/cbor") is mandatory to support for the request payload, and Content-Format TBD606 ("application/core-pubsub+cbor") is mandatory to support for the response payload.</t>
          <t>The CBOR map in the response payload includes entries for each topic property specified in the request and available in the topic resource representation.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: FETCH (Code=0.05)
   Uri-Path: "ps"
   Uri-Path: "h9392"
   Content-Format: 60 (application/cbor)
   Payload (in CBOR diagnostic notation):
   [1, 3]

   Response:

   Header: Content (Code=2.05)
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-data /            1: "/ps/data/1bd0d6d",
      / topic-content-format /  3: 112
   }
]]></artwork>
        </section>
        <section anchor="topic-update-resource">
          <name>Updating the topic</name>
          <t>A client can update a topic's configuration by submitting the updated topic representation in a POST request to the topic URI. However, the topic properties "topic-name", "topic-data", and "resource-type" are immutable post-creation, and any request attempting to change them will be deemed invalid by the broker. Since POST replaces the full resource representation, these immutable properties may be included in the request with their current values.</t>
          <t>On success, the topic is overwritten and the broker returns a 2.04 (Changed) response and the current full resource representation.</t>
          <t>Decreasing "max-subscribers" causes some subscribers to be unsubscribed. Unsubscribed endpoints receive a final 4.04 (Not Found) response as per <xref section="3.2" sectionFormat="of" target="RFC7641"/>. The specific queue management for unsubscribing is left for implementors.</t>
          <t>Please note that when using POST the topic is being overwritten, thus any optional topic property (e.g., "max-subscribers", "observer-check") not included in the POST message is reset to its default value.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: POST (Code=0.02)
   Uri-Path: "ps"
   Uri-Path: "h9392"
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /            0: "living-room-sensor",
      / topic-data /            1: "/ps/data/1bd0d6d",
      / resource-type /         2: "core.ps.data",
      / topic-content-format /  3: 112,
      / topic-type /            4: "temperature",
      / expiration-date /       5: 1(1682719199)
   }

   Response:

   Header: Changed (Code=2.04)
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /            0: "living-room-sensor",
      / topic-data /            1: "/ps/data/1bd0d6d",
      / resource-type /         2: "core.ps.data",
      / topic-content-format /  3: 112,
      / topic-type /            4: "temperature",
      / expiration-date /       5: 1(1682719199),
      / max-subscribers /       6: 100,
      / observer-check /        7: 86400
   }
]]></artwork>
          <t>Note that, when a topic changes through either update method (POST or iPATCH), it may result in disruptions for the subscribers. Some potential issues that may arise include:</t>
          <ul spacing="normal">
            <li>
              <t>Reducing the number of subscribers will cause cancellation of ongoing subscriptions if the new "max-subscribers" has been exceeded.</t>
            </li>
            <li>
              <t>Changing the "expiration-date" to an earlier time will cause the topic to expire earlier, cancelling ongoing subscriptions at that time.</t>
            </li>
          </ul>
        </section>
        <section anchor="topic-update-resource-patch">
          <name>Updating the topic with iPATCH</name>
          <t>A client can partially update a topic's configuration by submitting a partial topic representation in an iPATCH request to the topic URI. The request payload is a CBOR map with Content-Format TBD606 ("application/core-pubsub+cbor") carrying the topic properties to update. Each topic property present in the request replaces the current value of that property in the topic resource. Topic properties absent from the request are left unchanged. As with the POST method, the topic properties "topic-name", "topic-data", and "resource-type" are immutable post-creation, and any request attempting to change them will be deemed invalid by the broker.</t>
          <t>On success, the broker returns a 2.04 (Changed) response and the current full resource representation. The broker only updates topic properties that are explicitly mentioned in the request.</t>
          <t>The disruptions for subscribers described in <xref target="topic-update-resource"/> apply to iPATCH updates as well.</t>
          <t>Contrary to POST, iPATCH operations will explicitly update some topic properties, leaving others unmodified.
In the below example, two properties are successfully updated with iPATCH:</t>
          <artwork><![CDATA[
   Request:

   Header: iPATCH (Code=0.07)
   Uri-Path: "ps"
   Uri-Path: "h9392"
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / expiration-date /  5: 1(1709164799),
      / max-subscribers /  6: 5
   }

   Response:

   Header: Changed (Code=2.04)
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / topic-name /            0: "living-room-sensor",
      / topic-data /            1: "/ps/data/1bd0d6d",
      / resource-type /         2: "core.ps.data",
      / topic-content-format /  3: 112,
      / topic-type /            4: "temperature",
      / expiration-date /       5: 1(1709164799),
      / max-subscribers /       6: 5,
      / observer-check /        7: 86400
   }
]]></artwork>
        </section>
        <section anchor="topic-delete">
          <name>Deleting a topic</name>
          <t>A client can delete a topic by making a CoAP DELETE request on the topic resource URI.</t>
          <t>On success, the broker returns a 2.02 (Deleted) response. Since CoAP DELETE is idempotent, a client retransmitting a DELETE request for an already-deleted topic may receive a 4.04 (Not Found) response, which can be considered a successful deletion.</t>
          <t>When a topic resource is deleted, the broker <bcp14>MUST</bcp14> also delete the topic-data resource. As a result, all observers of the topic-data resource are removed from the list of observers and receive a final 4.04 (Not Found) response as per <xref section="3.2" sectionFormat="of" target="RFC7641"/>.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: DELETE (Code=0.04)
   Uri-Path: "ps"
   Uri-Path: "h9392"

   Response:

   Header: Deleted (Code=2.02)
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="pubsub">
      <name>Publish and Subscribe</name>
      <t>The overview of the publish-subscribe mechanism based on CoAP is as follows: a publisher publishes to a topic by submitting the data in a PUT request to a topic-data resource and subscribers subscribe to a topic by submitting a GET request with the Observe option set to 0 (register) to a topic-data resource. When resource state changes, the server will send a notification to current subscribers observing the resource <xref target="RFC7641"/>.</t>
      <t>The broker creates the topic-data resource when it creates the topic. Until a publisher has published to it, the topic-data resource exists but has no representation: a GET request on it returns 2.06 (No Content) <xref target="I-D.jimenez-core-coap-no-content"/>, and a subscriber can register for notifications and receives the first publication as a notification (see <xref target="subscribe"/>).</t>
      <t>URIs for topic resources are broker-generated (see <xref target="topic-create"/>). Clients obtain the URI of the topic-data resource from the "topic-data" property (see <xref target="topic-properties"/>); it has no necessary URI pattern dependence on the URI of the topic resource.</t>
      <section anchor="topic-lifecycle">
        <name>Topic Lifecycle</name>
        <t>When a topic is created, the broker places it in the CREATED state (see <xref target="fig-life"/>) and creates its topic-data resource. In this state a client can read, update and delete the topic, a publisher can publish to the topic-data resource, and a subscriber can read or observe the topic-data resource. Until the first publication, the topic-data resource has no representation: a GET request on it returns 2.06 (No Content), an Observe registration is confirmed with 2.06 (No Content), and observers receive a 2.05 (Content) notification when the first representation is published <xref target="I-D.jimenez-core-coap-no-content"/>.</t>
        <figure anchor="fig-life">
          <name>Lifecycle of a Topic</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="480" viewBox="0 0 480 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 112,112 L 112,176" fill="none" stroke="black"/>
                <path d="M 192,64 L 192,104" fill="none" stroke="black"/>
                <path d="M 224,112 L 224,176" fill="none" stroke="black"/>
                <path d="M 304,64 L 304,128" fill="none" stroke="black"/>
                <path d="M 360,112 L 360,176" fill="none" stroke="black"/>
                <path d="M 472,112 L 472,176" fill="none" stroke="black"/>
                <path d="M 192,64 L 304,64" fill="none" stroke="black"/>
                <path d="M 112,112 L 224,112" fill="none" stroke="black"/>
                <path d="M 360,112 L 472,112" fill="none" stroke="black"/>
                <path d="M 224,128 L 304,128" fill="none" stroke="black"/>
                <path d="M 8,144 L 104,144" fill="none" stroke="black"/>
                <path d="M 224,144 L 352,144" fill="none" stroke="black"/>
                <path d="M 112,176 L 224,176" fill="none" stroke="black"/>
                <path d="M 360,176 L 472,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,144 348,138.4 348,149.6" fill="black" transform="rotate(0,352,144)"/>
                <polygon class="arrowhead" points="200,104 188,98.4 188,109.6" fill="black" transform="rotate(90,192,104)"/>
                <polygon class="arrowhead" points="112,144 100,138.4 100,149.6" fill="black" transform="rotate(0,104,144)"/>
                <g class="text">
                  <text x="140" y="36">Publish,</text>
                  <text x="200" y="36">Read,</text>
                  <text x="268" y="36">Subscribe,</text>
                  <text x="364" y="36">Unsubscribe,</text>
                  <text x="196" y="52">Update</text>
                  <text x="248" y="52">topic</text>
                  <text x="44" y="132">Create</text>
                  <text x="168" y="148">CREATED</text>
                  <text x="416" y="148">DELETED</text>
                  <text x="268" y="164">Delete</text>
                  <text x="320" y="164">topic</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
              Publish, Read, Subscribe, Unsubscribe,
                      Update topic
                        .-------------.
                        |             |
                        v             |
              .---------+---.         |      .-------------.
   Create     |             +---------'      |             |
 ------------>|   CREATED   +--------------->|   DELETED   |
              |             |  Delete topic  |             |
              '-------------'                '-------------'
]]></artwork>
          </artset>
        </figure>
        <t>When a client deletes a topic resource, the topic is placed into the DELETED state and shortly after removed from the server. Both the topic resource and the topic-data resource are deleted. All observers of the topic-data resource are removed from the list of observers with a final 4.04 (Not Found) response as per <xref section="3.2" sectionFormat="of" target="RFC7641"/>, and no further interactions with the topic are possible.</t>
      </section>
      <section anchor="topic-data-interactions">
        <name>Topic-Data Interactions</name>
        <t>The server hosting the topic-data resource <bcp14>MUST</bcp14> support all the interactions defined in this section and in <xref target="read-data"/>. A client <bcp14>MAY</bcp14> use any subset of them.</t>
        <section anchor="publish">
          <name>Publish</name>
          <t>A topic must have been created (see <xref target="topic-create"/>) in order to publish data to its topic-data resource.</t>
          <t>A client can publish data to a topic by submitting the data in a PUT request to the topic-data resource.
The URI for this resource is indicated in the "topic-data" topic property value. Please note that this URI is not the same as the topic URI used for configuring the topic (see <xref target="topic-resource-representation"/>).</t>
          <t>On success, the server returns a successful response, typically 2.04 (Changed). The first publication to a topic-data resource that has no representation is handled like any other publication.</t>
          <t>If the request does not have an acceptable Content-Format, e.g., as specified by the "topic-content-format" property in the topic configuration, the server returns a 4.15 (Unsupported Content-Format) response.</t>
          <t>If the client is sending publications too fast, the server returns a 4.29 (Too Many Requests) response <xref target="RFC8516"/>.</t>
          <t>Example of a publication:</t>
          <artwork><![CDATA[
   Request:

   Header: PUT (Code=0.03)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"
   Content-Format: 112 (application/senml+cbor)
   Payload (in CBOR diagnostic notation):
   {
      "n": "coaps://dev1.example.com/temperature",
      "u": "Cel",
      "t": 1621452149,
      "v": 22.5
   }

   Response:

   Header: Changed (Code=2.04)
]]></artwork>
        </section>
        <section anchor="subscribe">
          <name>Subscribe</name>
          <t>A client can subscribe to a topic-data resource by sending a CoAP GET request with the CoAP Observe Option set to 0 to subscribe to resource updates <xref target="RFC7641"/>.</t>
          <t>On success, the server hosting the topic-data resource returns a successful response (typically 2.05 Content) with the data and the Observe Option. If no Observe Option is present in the response, the client should assume that the subscription was not successful.</t>
          <t>If the topic-data resource has no representation yet, the server confirms the registration with a 2.06 (No Content) response carrying the Observe Option <xref target="I-D.jimenez-core-coap-no-content"/>, and the subscriber receives the first publication as a 2.05 (Content) notification. Since a 2.06 (No Content) response carries no Content-Format, a subscriber that needs a specific Content-Format <bcp14>SHOULD</bcp14> include the Accept Option in the registration request; the "topic-content-format" property, when present, indicates the Content-Format to request.</t>
          <t>The following response codes are defined for the Subscribe operation:</t>
          <dl>
            <dt>Success:</dt>
            <dd>
              <t>2.05 (Content). The current topic data is included in the response. In case of successful subscription, the response includes the Observe Option.</t>
            </dd>
            <dt>Success:</dt>
            <dd>
              <t>2.06 (No Content). The topic-data resource exists and has no representation yet. In case of successful subscription, the response includes the Observe Option.</t>
            </dd>
            <dt>Failure:</dt>
            <dd>
              <t>4.04 (Not Found). The topic does not exist.</t>
            </dd>
          </dl>
          <t>If the "max-subscribers" topic property value has been reached, the server must treat that as specified in <xref section="4.1" sectionFormat="of" target="RFC7641"/>. The 2.05 (Content) or 2.06 (No Content) response <bcp14>MUST NOT</bcp14> include an Observe Option, the absence of which signals to the subscriber that the subscription failed.</t>
          <t>Example of a subscription before the first publication, followed by the notification of that publication:</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"
   Observe: 0
   Accept: 112 (application/senml+cbor)

   Response:

   Header: No Content (Code=2.06)
   Observe: 10000
   Max-Age: 600

   Response:

   Header: Content (Code=2.05)
   Content-Format: 112 (application/senml+cbor)
   Observe: 10001
   Max-Age: 15
   Payload (in CBOR diagnostic notation):
   {
      "n": "urn:dev:os:32473-123456",
      "u": "Cel",
      "t": 1696341182,
      "v": 19.87
   }
]]></artwork>
          <t>Example of a subscription to a topic with data, followed by one update:</t>
          <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"
   Observe: 0

   Response:

   Header: Content (Code=2.05)
   Content-Format: 112 (application/senml+cbor)
   Observe: 10001
   Max-Age: 15
   Payload (in CBOR diagnostic notation):
   {
      "n": "urn:dev:os:32473-123456",
      "u": "Cel",
      "t": 1696341182,
      "v": 19.87
   }

   Response:

   Header: Content (Code=2.05)
   Content-Format: 112 (application/senml+cbor)
   Observe: 10002
   Max-Age: 15
   Payload (in CBOR diagnostic notation):
   {
      "n": "urn:dev:os:32473-123456",
      "u": "Cel",
      "t": 1696340184,
      "v": 21.87
   }
]]></artwork>
        </section>
        <section anchor="unsubscribe">
          <name>Unsubscribe</name>
          <t>A CoAP client can unsubscribe by canceling the observation as described in <xref section="3.6" sectionFormat="of" target="RFC7641"/>. For example, the client can use CoAP GET with the Observe Option set to 1 (deregister), or simply "forget" the observation and let the server remove it through its own observation lifetime mechanisms.</t>
          <t>As per <xref target="RFC7641"/>, a server transmits notifications mostly as Non-confirmable messages, but it sends a notification as a Confirmable message instead of a Non-confirmable message at least every 24 hours.</t>
          <t>This value can be modified at the broker by the administrator of a topic by modifying the topic property "observer-check" (see <xref target="topic-resource-representation"/>). This would allow changing the rate at which different implementations verify that a subscriber is still interested in observing a topic-data resource.</t>
        </section>
      </section>
      <section anchor="read-data">
        <name>Read the latest data</name>
        <t>A client can get the latest published topic-data resource by making a GET request to the "topic-data" URI. Discovery of that URI through the "topic-data" topic property is described in <xref target="topic-get-resource"/>.</t>
        <t>On success, the server returns a successful response (typically 2.05 Content) with the data.</t>
        <t>If the topic-data resource has no representation, the server returns 2.06 (No Content) <xref target="I-D.jimenez-core-coap-no-content"/>. If the target URI does not match an existing resource, the server returns an error response (typically 4.04 Not Found).</t>
        <t>Example:</t>
        <artwork><![CDATA[
   Request:

   Header: GET (Code=0.01)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"

   Response:

   Header: Content (Code=2.05)
   Content-Format: 112 (application/senml+cbor)
   Max-Age: 15
   Payload (in CBOR diagnostic notation):
   {
      "n": "coaps://dev1.example.com/temperature",
      "u": "Cel",
      "t": 1621452122,
      "v": 23.5
   }
]]></artwork>
        <t>This document only defines a mechanism for subscribers to retrieve the latest topic-data resource representation. For example, a future specification could enable subscribers to retrieve earlier representations of the topic-data resource, and could define additional topic properties, registered as described in <xref target="iana-coap-pubsub-parameters"/>, to control how many of them the broker stores.</t>
      </section>
      <section anchor="rate-limit">
        <name>Rate Limiting</name>
        <t>The server hosting the topic-data resource may have to handle a large number of publishers and subscribers at the same time. This means it could become overwhelmed if it receives too many publications in a short period of time.</t>
        <t>If a publisher is sending publications too fast, the server <bcp14>SHOULD</bcp14> return a 4.29 (Too Many Requests) response <xref target="RFC8516"/>. As described in <xref target="RFC8516"/>, the Max-Age option <xref target="RFC7252"/> in this response indicates the number of seconds after which the client may retry. The server <bcp14>MAY</bcp14> also stop dispatching messages from that publisher for the indicated time.</t>
        <t>When a publisher receives a 4.29 (Too Many Requests) response, it <bcp14>MUST NOT</bcp14> send any new publication requests to the same topic-data resource before the time indicated by the Max-Age option has passed.</t>
      </section>
    </section>
    <section anchor="pubsub-parameters">
      <name>Encoding of PubSub Topic Properties</name>
      <t>This document defines topic properties used in the messages exchanged between a client and the broker, for example during the topic creation and configuration process (see <xref target="topic-resource-representation"/>).
<xref target="tab-CoAP-Pubsub-Parameters"/> summarizes them and specifies the CBOR key that <bcp14>MUST</bcp14> be used instead of the full descriptive name.</t>
      <t>Note that the media type "application/core-pubsub+cbor" <bcp14>MUST</bcp14> be used when these topic properties are transported in the respective CoAP message payloads.</t>
      <table anchor="tab-CoAP-Pubsub-Parameters">
        <name>CoAP Pubsub Topic Properties and CBOR Encoding</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">CBOR Key</th>
            <th align="left">CBOR Type</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">topic-name</td>
            <td align="left">0</td>
            <td align="left">tstr</td>
          </tr>
          <tr>
            <td align="left">topic-data</td>
            <td align="left">1</td>
            <td align="left">tstr</td>
          </tr>
          <tr>
            <td align="left">resource-type</td>
            <td align="left">2</td>
            <td align="left">tstr</td>
          </tr>
          <tr>
            <td align="left">topic-content-format</td>
            <td align="left">3</td>
            <td align="left">uint</td>
          </tr>
          <tr>
            <td align="left">topic-type</td>
            <td align="left">4</td>
            <td align="left">tstr</td>
          </tr>
          <tr>
            <td align="left">expiration-date</td>
            <td align="left">5</td>
            <td align="left">#6.1(number)</td>
          </tr>
          <tr>
            <td align="left">max-subscribers</td>
            <td align="left">6</td>
            <td align="left">uint</td>
          </tr>
          <tr>
            <td align="left">observer-check</td>
            <td align="left">7</td>
            <td align="left">uint</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>The architecture presented in this document inherits the security considerations from CoAP <xref target="RFC7252"/> and Observe <xref target="RFC7641"/>, as well as from Web Linking <xref target="RFC8288"/>, CoRE Link Format <xref target="RFC6690"/>, and the CoRE Resource Directory <xref target="RFC9176"/>.</t>
      <t>CoAP communications between each client and the broker <bcp14>MUST</bcp14> be secured. The default security protocol is defined by <xref target="RFC7252"/>. Examples of other security protocols that could be applied to CoAP communications are OSCORE <xref target="RFC8613"/> and DTLS 1.3 <xref target="RFC9147"/>. Protection <bcp14>MAY</bcp14> instead be provided below CoAP, e.g., by a secured link layer or by IPsec, as discussed for the NoSec mode in <xref section="9" sectionFormat="of" target="RFC7252"/>. The choice of a security protocol depends on the requirements of the specific application and deployment. Security considerations for the selected security protocol apply as well.</t>
      <t>The content published on a topic by a publisher client <bcp14>SHOULD</bcp14> be protected end-to-end between the publisher and all the subscribers to that topic. Such protection <bcp14>MUST</bcp14> include source authentication of the published data, so that subscribers can verify its origin. This can be achieved at the application layer, e.g., by using COSE <xref target="STD96"/> <xref target="RFC9053"/>.</t>
      <t>A 2.06 (No Content) response reveals that a topic-data resource exists. A broker that enforces access control on topic-data resources responds to unauthorized clients as it would for a nonexistent resource (see <xref section="7" sectionFormat="of" target="I-D.jimenez-core-coap-no-content"/>).</t>
      <t>Access control of clients at the broker <bcp14>MAY</bcp14> be enforced for performing discovery operations, and <bcp14>SHOULD</bcp14> be enforced in a fine-grained fashion for operations related to the creation, update, and deletion of topic resources, as well as for operations on topic-data resources such as publication on and subscription to topics. This prevents rogue clients to, among other things, repeatedly create topics at the broker or publish (large) contents, which may result in Denial of Service against the broker and the active subscribers.</t>
      <t>The application profile for publish-subscribe communication with CoAP <xref target="I-D.ietf-ace-pubsub-profile"/>, which builds on <xref target="RFC9594"/>, provides a security model that can be used in the architecture presented in this document, in order to enable secure communication between the different parties as well as secure, authorized operations of publishers and subscribers that fulfill the requirements above.</t>
      <t>In particular, the application profile above relies on the ACE framework <xref target="RFC9200"/> and defines a method to:</t>
      <ul spacing="normal">
        <li>
          <t>authorize publishers and subscribers to perform operations at the broker, with fine-grained access control;</t>
        </li>
        <li>
          <t>authorize publishers and subscribers to obtain the keying material required to take part to a topic managed by the broker that also hosts the corresponding topic-data resource;</t>
        </li>
        <li>
          <t>protect published data end-to-end between a publisher and all the subscribers to the targeted topic, ensuring confidentiality, integrity, and source authentication of the published content.</t>
        </li>
      </ul>
      <t>That approach can be extended to enforce authorization and fine-grained access control for administrator clients that are intended to create, update, and delete topics at the broker.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="media-type">
        <name>Media Type Registrations</name>
        <t>This specification registers the "application/core-pubsub+cbor" media type in the IANA Media Types registry.
It is used for messages of the protocols defined in this document and carries topic properties encoded in CBOR. In an iPATCH request to a topic resource, the map carries the topic properties to update (see <xref target="topic-update-resource-patch"/>). This registration follows the procedures specified in <xref target="BCP13"/>.</t>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>core-pubsub+cbor</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>Must be encoded as a CBOR map containing the topic properties defined in [RFC-XXXX].</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="seccons"/> of [RFC-XXXX].</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>[RFC-XXXX]</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>This type is used by clients that create, retrieve, and update topics at servers acting as a broker.</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Person &amp; email address to contact for further information:</dt>
          <dd>
            <t>CoRE WG mailing list (core@ietf.org), or IETF Web and Internet Transport (WIT) Area (wit@ietf.org)</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>none</t>
          </dd>
          <dt>Author/Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Provisional registration:</dt>
          <dd>
            <t>no</t>
          </dd>
        </dl>
      </section>
      <section anchor="content-type">
        <name>CoAP Content-Formats</name>
        <t>IANA is asked to register the following entry to the "CoAP Content-Formats" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <dl>
          <dt>Content Type:</dt>
          <dd>
            <t>application/core-pubsub+cbor</t>
          </dd>
          <dt>Content Coding:</dt>
          <dd>
            <t>-</t>
          </dd>
          <dt>ID:</dt>
          <dd>
            <t>TBD606</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>[RFC-XXXX]</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-rt">
        <name>Resource Types</name>
        <t>IANA is asked to enter the following values from <xref target="tab-CoAP-Pubsub-Resource-Types"/> in the "Resource Type (rt=) Link Target Attribute Values" registry within the "Constrained Restful Environments (CoRE) Parameters" registry group. Reference should always be [RFC-XXXX].</t>
        <table anchor="tab-CoAP-Pubsub-Resource-Types">
          <name>CoAP Pubsub Resource Types</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">core.ps</td>
              <td align="left">Publish-subscribe broker</td>
            </tr>
            <tr>
              <td align="left">core.ps.coll</td>
              <td align="left">Topic collection resource of a publish-subscribe broker</td>
            </tr>
            <tr>
              <td align="left">core.ps.conf</td>
              <td align="left">Topic resource of a publish-subscribe broker</td>
            </tr>
            <tr>
              <td align="left">core.ps.data</td>
              <td align="left">Topic-data resource of a publish-subscribe server</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-coap-pubsub-parameters">
        <name>CoAP Pubsub Topic Properties Registry</name>
        <t>This specification establishes the "CoAP Pubsub Topic Properties" IANA registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
        <t>The registration policy is either "Private Use", "Standards Action with Expert Review", "Specification Required", or "Expert Review" per <xref target="BCP26"/>. "Expert Review" guidelines are provided in <xref target="review"/>.</t>
        <t>All assignments according to "Standards Action with Expert Review" are made on a "Standards Action" basis per Section <xref target="RFC8126" section="4.9" sectionFormat="bare"/> of RFC 8126 <xref target="BCP26"/> with "Expert Review" additionally required per Section <xref target="RFC8126" section="4.5" sectionFormat="bare"/> of RFC 8126 <xref target="BCP26"/>. The procedure for early IANA allocation of "standards track code points" defined in <xref target="BCP100"/> also applies. When such a procedure is used, IANA will ask the designated expert(s) to approve the early allocation before registration. In addition, working group chairs are encouraged to consult the expert(s) early during the process outlined in Section <xref target="RFC7120" section="3.1" sectionFormat="bare"/> of RFC 7120 <xref target="BCP100"/>.</t>
        <t>The columns of this registry are:</t>
        <ul spacing="normal">
          <li>
            <t>Name: This is a descriptive name that enables easier reference to the item. The name <bcp14>MUST</bcp14> be unique. It is not used in the encoding.</t>
          </li>
          <li>
            <t>CBOR Key: This is the value used as the CBOR key of the item. These values <bcp14>MUST</bcp14> be unique. The value is an integer (either positive or negative). Different ranges of values use different registration policies <xref target="BCP26"/>. Integer values from -256 to 255 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535 are designated as "Specification Required". Integer values greater than 65535 are designated as "Expert Review". Integer values less than -65536 are marked as "Private Use".</t>
          </li>
          <li>
            <t>CBOR Type: This contains the CBOR type of the item, or a pointer to the registry that defines its type, when that depends on another item.</t>
          </li>
          <li>
            <t>Reference: This contains a pointer to the public specification for the item.</t>
          </li>
        </ul>
        <t>This registry has been initially populated with the values in <xref target="tab-CoAP-Pubsub-Parameters"/>. For all of them, the reference is [RFC-XXXX].</t>
        <section anchor="review">
          <name>Expert Review Instructions</name>
          <t>The registration policy for the IANA registry established in <xref target="iana-coap-pubsub-parameters"/> is defined as one of "Standards Action with Expert Review", "Specification Required", and "Expert Review". This section gives some general guidelines for what the experts should be looking for; however, they are being designated as experts for a reason, so they should be given substantial latitude.</t>
          <t>These registration policies are designed to accommodate different use cases; "Standards Action with Expert Review" allows for further IETF standards and extensions, maintaining consistency and alignment with established protocols; "Specification Required" allows third-party specifications from Standards Development Organizations (SDOs) to register topic properties, enabling interoperability and broader applicability; and "Expert Review" provides a flexible mechanism for exposing new properties that implementors do not want to keep in a private range.</t>
          <t>Expert reviewers should take into consideration the following points:</t>
          <ul spacing="normal">
            <li>
              <t>Clarity and correctness of registrations. Experts are expected to check the clarity of purpose and use of the requested entries. Experts need to make sure that registered topic properties are clearly defined in the corresponding specification. Properties that do not meet these objectives of clarity and completeness must not be registered.</t>
            </li>
            <li>
              <t>Code point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered and that the code point is likely to be used in deployments. The zones tagged as "Private Use" are intended for testing purposes and closed environments. Code points in other ranges should not be assigned for testing.</t>
            </li>
            <li>
              <t>Specifications are required for the "Standards Action With Expert Review" range of code point assignment. Specifications should exist for "Specification Required" ranges, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the code point is being used for.</t>
            </li>
            <li>
              <t>Experts should take into account the expected usage of fields when approving a code point assignment. Documents published via Standards Action can also register code points outside the Standards Action range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="I-D.jimenez-core-coap-no-content">
          <front>
            <title>The 2.06 (No Content) Response Code for the Constrained Application Protocol (CoAP)</title>
            <author initials="J." surname="Jiménez" fullname="Jaime Jiménez">
              <organization>Ericsson</organization>
            </author>
            <author initials="C." surname="Bormann" fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date year="2026" month="November"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jimenez-core-coap-no-content-00"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="RFC8516">
          <front>
            <title>"Too Many Requests" Response Code for the Constrained Application Protocol</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>A Constrained Application Protocol (CoAP) server can experience temporary overload because one or more clients are sending requests to the server at a higher rate than the server is capable or willing to handle. This document defines a new CoAP response code for a server to indicate that a client should reduce the rate of requests.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8516"/>
          <seriesInfo name="DOI" value="10.17487/RFC8516"/>
        </reference>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
            <front>
              <title>Concise Binary Object Representation (CBOR)</title>
              <author fullname="C. Bormann" initials="C." surname="Bormann"/>
              <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
              <date month="December" year="2020"/>
              <abstract>
                <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
                <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="94"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC9176">
          <front>
            <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
            <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9176"/>
          <seriesInfo name="DOI" value="10.17487/RFC9176"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bcp26">
          <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
            <front>
              <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
              <author fullname="M. Cotton" initials="M." surname="Cotton"/>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <author fullname="T. Narten" initials="T." surname="Narten"/>
              <date month="June" year="2017"/>
              <abstract>
                <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
                <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
                <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="26"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
          </reference>
        </referencegroup>
        <referencegroup anchor="BCP13" target="https://www.rfc-editor.org/info/bcp13">
          <reference anchor="RFC4289" target="https://www.rfc-editor.org/info/rfc4289">
            <front>
              <title>Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures</title>
              <author fullname="N. Freed" initials="N." surname="Freed"/>
              <author fullname="J. Klensin" initials="J." surname="Klensin"/>
              <date month="December" year="2005"/>
              <abstract>
                <t>This document specifies IANA registration procedures for MIME external body access types and content-transfer-encodings. 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="13"/>
            <seriesInfo name="RFC" value="4289"/>
            <seriesInfo name="DOI" value="10.17487/RFC4289"/>
          </reference>
          <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6838">
            <front>
              <title>Media Type Specifications and Registration Procedures</title>
              <author fullname="N. Freed" initials="N." surname="Freed"/>
              <author fullname="J. Klensin" initials="J." surname="Klensin"/>
              <author fullname="T. Hansen" initials="T." surname="Hansen"/>
              <date month="January" year="2013"/>
              <abstract>
                <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="13"/>
            <seriesInfo name="RFC" value="6838"/>
            <seriesInfo name="DOI" value="10.17487/RFC6838"/>
          </reference>
          <reference anchor="RFC9694" target="https://www.rfc-editor.org/info/rfc9694">
            <front>
              <title>Guidelines for the Definition of New Top-Level Media Types</title>
              <author fullname="M.J. Dürst" initials="M.J." surname="Dürst"/>
              <date month="March" year="2025"/>
              <abstract>
                <t>This document defines best practices for defining new top-level media types. It also introduces a registry for top-level media types, and contains a short history of top-level media types. It updates RFC 6838.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="13"/>
            <seriesInfo name="RFC" value="9694"/>
            <seriesInfo name="DOI" value="10.17487/RFC9694"/>
          </reference>
        </referencegroup>
        <referencegroup anchor="BCP100" target="https://www.rfc-editor.org/info/bcp100">
          <reference anchor="RFC7120" target="https://www.rfc-editor.org/info/rfc7120">
            <front>
              <title>Early IANA Allocation of Standards Track Code Points</title>
              <author fullname="M. Cotton" initials="M." surname="Cotton"/>
              <date month="January" year="2014"/>
              <abstract>
                <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="100"/>
            <seriesInfo name="RFC" value="7120"/>
            <seriesInfo name="DOI" value="10.17487/RFC7120"/>
          </reference>
        </referencegroup>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <referencegroup anchor="STD96" target="https://www.rfc-editor.org/info/std96">
          <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
            <front>
              <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
              <author fullname="J. Schaad" initials="J." surname="Schaad"/>
              <date month="August" year="2022"/>
              <abstract>
                <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
                <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="96"/>
            <seriesInfo name="RFC" value="9052"/>
            <seriesInfo name="DOI" value="10.17487/RFC9052"/>
          </reference>
          <reference anchor="RFC9338" target="https://www.rfc-editor.org/info/rfc9338">
            <front>
              <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
              <author fullname="J. Schaad" initials="J." surname="Schaad"/>
              <date month="December" year="2022"/>
              <abstract>
                <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="96"/>
            <seriesInfo name="RFC" value="9338"/>
            <seriesInfo name="DOI" value="10.17487/RFC9338"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
        <reference anchor="RFC9594">
          <front>
            <title>Key Provisioning for Group Communication Using Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document defines how to use the Authentication and Authorization for Constrained Environments (ACE) framework to distribute keying material and configuration parameters for secure group communication. Candidate group members that act as Clients and are authorized to join a group can do so by interacting with a Key Distribution Center (KDC) acting as the Resource Server, from which they obtain the keying material to communicate with other group members. While defining general message formats as well as the interface and operations available at the KDC, this document supports different approaches and protocols for secure group communication. Therefore, details are delegated to separate application profiles of this document as specialized instances that target a particular group communication approach and define how communications in the group are protected. Compliance requirements for such application profiles are also specified.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9594"/>
          <seriesInfo name="DOI" value="10.17487/RFC9594"/>
        </reference>
        <reference anchor="I-D.hartke-t2trg-coral-pubsub">
          <front>
            <title>Publish/Subscribe over the Constrained Application Protocol (CoAP) using the Constrained RESTful Application Language (CoRAL)</title>
            <author fullname="Klaus Hartke" initials="K." surname="Hartke">
              <organization>Ericsson</organization>
            </author>
            <date day="9" month="May" year="2020"/>
            <abstract>
              <t>   This document explores how the Constrained RESTful Application
   Language (CoRAL) might be used for enabling publish/subscribe-style
   communication over the Constrained Application Protocol (CoAP), which
   allows CoAP nodes with long breaks in connectivity and/or up-time to
   exchange data via a publish/subscribe broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hartke-t2trg-coral-pubsub-01"/>
        </reference>
        <reference anchor="I-D.ietf-ace-oscore-gm-admin">
          <front>
            <title>Admin Interface for the OSCORE Group Manager</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="26" month="March" year="2026"/>
            <abstract>
              <t>   Group communication for the Constrained Application Protocol (CoAP)
   can be secured using Group Object Security for Constrained RESTful
   Environments (Group OSCORE).  A Group Manager is responsible for
   handling the joining of new group members, as well as for managing
   and distributing the group keying material.  This document defines a
   RESTful admin interface at the Group Manager that allows an
   Administrator entity to create and delete OSCORE groups, as well as
   to retrieve and update their configuration.  The Authentication and
   Authorization for Constrained Environments (ACE) framework is used to
   enforce authentication and authorization of the Administrator at the
   Group Manager.  Protocol-specific transport profiles of ACE are used
   to achieve communication security, proof of possession, and server
   authentication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-oscore-gm-admin-17"/>
        </reference>
        <reference anchor="I-D.ietf-ace-pubsub-profile">
          <front>
            <title>Publish-Subscribe Profile for Authentication and Authorization for Constrained Environments (ACE)</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Cigdem Sengul" initials="C." surname="Sengul">
              <organization>Brunel University</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="7" month="January" year="2025"/>
            <abstract>
              <t>   This document defines an application profile of the Authentication
   and Authorization for Constrained Environments (ACE) framework, to
   enable secure group communication in the Publish-Subscribe (Pub-Sub)
   architecture for the Constrained Application Protocol (CoAP) [draft-
   ietf-core-coap-pubsub], where Publishers and Subscribers communicate
   through a Broker.  This profile relies on protocol-specific transport
   profiles of ACE to achieve communication security, server
   authentication, and proof-of-possession for a key owned by the Client
   and bound to an OAuth 2.0 access token.  This document specifies the
   provisioning and enforcement of authorization information for Clients
   to act as Publishers and/or Subscribers, as well as the provisioning
   of keying material and security parameters that Clients use for
   protecting their communications end-to-end through the Broker.

   Note to RFC Editor: Please replace "[draft-ietf-core-coap-pubsub]"
   with the RFC number of that document and delete this paragraph.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-pubsub-profile-11"/>
        </reference>
        <reference anchor="I-D.ietf-core-interfaces">
          <front>
            <title>Reusable Interface Definitions for Constrained RESTful Environments</title>
            <author fullname="Zach Shelby" initials="Z." surname="Shelby">
              <organization>ARM</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Christian Groves" initials="C." surname="Groves">
         </author>
            <author fullname="Jintao Zhu" initials="J." surname="Zhu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
              <organization>Tampere University</organization>
            </author>
            <date day="11" month="March" year="2019"/>
            <abstract>
              <t>   This document defines a set of Constrained RESTful Environments
   (CoRE) Link Format Interface Descriptions [RFC6690] applicable for
   use in constrained environments.  These include the: Actuator,
   Parameter, Read-only parameter, Sensor, Batch, Linked Batch and Link
   List interfaces.

   The Batch, Linked Batch and Link List interfaces make use of resource
   collections.  This document further describes how collections relate
   to interfaces.

   Many applications require a set of interface descriptions in order
   provide the required functionality.  This document defines an
   Interface Description attribute value to describe resources
   conforming to a particular interface.

   Editor's notes:

   o  The git repository for the draft is found at https://github.com/
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-interfaces-14"/>
        </reference>
      </references>
    </references>
    <?line 1075?>

<section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="version-13-to-14">
        <name>Version -13 to -14</name>
        <ul spacing="normal">
          <li>
            <t>Section restructuring for better readability.</t>
          </li>
          <li>
            <t>Updated topic configuration interactions.</t>
          </li>
          <li>
            <t>Introduced iPATCH section.</t>
          </li>
          <li>
            <t>Various clarifications of default values for parameters.</t>
          </li>
          <li>
            <t>New examples for several interactions.</t>
          </li>
          <li>
            <t>Updated topic discovery section.</t>
          </li>
          <li>
            <t>Other editorial changes</t>
          </li>
        </ul>
      </section>
      <section anchor="version-14-to-15">
        <name>Version -14 to -15</name>
        <ul spacing="normal">
          <li>
            <t>Code bug fix https://github.com/jaimejim/aiocoap-pubsub-broker/commit/f32ce4866a81319238d6e905de439c9410cce175</t>
          </li>
          <li>
            <t>Added two new optional topic configuration parameters; "initialize" and "topic-history".</t>
          </li>
          <li>
            <t>Modified all examples to conform to RFC9594.</t>
          </li>
          <li>
            <t>Added the explicit cancellation of ongoing subscriptions when topic configuration parameters are changed.</t>
          </li>
          <li>
            <t>Added editorial changes based on feedback.</t>
          </li>
          <li>
            <t>Clarifications on Topic Configuration creation.</t>
          </li>
          <li>
            <t>Other editorial changes</t>
          </li>
        </ul>
      </section>
      <section anchor="version-15-to-16">
        <name>Version -15 to -16</name>
        <ul spacing="normal">
          <li>
            <t>Various updates throughout the document based on AD review.</t>
          </li>
          <li>
            <t>IANA clarifications</t>
          </li>
        </ul>
      </section>
      <section anchor="version-16-to-17">
        <name>Version -16 to -17</name>
        <ul spacing="normal">
          <li>
            <t>Addressing Esko's and Ari's review.</t>
          </li>
          <li>
            <t>Fixing formatting</t>
          </li>
        </ul>
      </section>
      <section anchor="version-17-to-18">
        <name>Version -17 to -18</name>
        <ul spacing="normal">
          <li>
            <t>Addressed issues #64, #65, #66, #67.</t>
          </li>
          <li>
            <t>rt, ct, obs attribute elision</t>
          </li>
          <li>
            <t>Editorial changes</t>
          </li>
        </ul>
      </section>
      <section anchor="version-18-to-19">
        <name>Version -18 to -19</name>
        <ul spacing="normal">
          <li>
            <t>IANA early review</t>
          </li>
          <li>
            <t>Addressed issues #68, #69</t>
          </li>
          <li>
            <t>Addressed Marco's review</t>
          </li>
          <li>
            <t>Addressed Marco's and Christian Amsüss's WGLC reviews</t>
          </li>
          <li>
            <t>Redesigned "initialize" property for RFC7641 compliance</t>
          </li>
          <li>
            <t>Changed "expiration-date" to CBOR tag 1, CBOR keys numeric-only</t>
          </li>
          <li>
            <t>Relaxed overly strict response codes</t>
          </li>
          <li>
            <t>Clarified topic-data URI reference, immutable properties, and architecture roles</t>
          </li>
          <li>
            <t>Editorial fixes</t>
          </li>
        </ul>
      </section>
      <section anchor="version-19-to-20">
        <name>Version -19 to -20</name>
        <ul spacing="normal">
          <li>
            <t>Clarified "resource-type" field: "core.ps.data" per this specification, alternative values permitted</t>
          </li>
          <li>
            <t>Clarified "max-subscribers" semantics: hint at creation, enforced once stored</t>
          </li>
          <li>
            <t>Added explicit 4.04 removal of subscribers on topic-data deletion</t>
          </li>
          <li>
            <t>Merged PRs #71, #72, #73 (editorial fixes, aasvg build, example clarification)</t>
          </li>
        </ul>
      </section>
      <section anchor="version-20-to-21">
        <name>Version -20 to -21</name>
        <ul spacing="normal">
          <li>
            <t>Addressed remaining WGLC comments from the 2026-06-17 interim (PR #76)</t>
          </li>
          <li>
            <t>Added eventual-consistency semantics of pubsub messages</t>
          </li>
          <li>
            <t>Clarified "max-subscribers": broker may store a different value or none (PR #74)</t>
          </li>
          <li>
            <t>Removed unused RFC 6570 URI template reference (PR #77)</t>
          </li>
          <li>
            <t>IANA: named the Media Types registry, clarified "code point" (PR #78)</t>
          </li>
          <li>
            <t>Default security from RFC 7252; OSCORE and DTLS 1.3 kept informative (PR #79)</t>
          </li>
          <li>
            <t>Encoded the topic FETCH filter as an application/cbor array; removed conf-filter from the registry (PR #80)</t>
          </li>
        </ul>
      </section>
      <section anchor="version-21-to-22">
        <name>Version -21 to -22</name>
        <t>Addressed the AD review of -21:</t>
        <ul spacing="normal">
          <li>
            <t>Topic-data resource is controlled by the broker and may be served from a different address; clients take its URI from the "topic-data" property</t>
          </li>
          <li>
            <t>Brokers support all interactions on topic collections, topics and topic-data; clients use any subset</t>
          </li>
          <li>
            <t>Reconciled topic collection discovery: GET on the collection always works, advertising it in /.well-known/core is a <bcp14>SHOULD</bcp14></t>
          </li>
          <li>
            <t>Unrecognized topic properties are ignored; the returned representation shows which properties were accepted</t>
          </li>
          <li>
            <t>Defined the iPATCH request payload as the topic properties to update, in the text and in the media type registration</t>
          </li>
          <li>
            <t>Security between clients and broker is a <bcp14>MUST</bcp14>; protection below CoAP allowed as in RFC 7252 Section 9</t>
          </li>
          <li>
            <t>End-to-end protection, when used, includes source authentication</t>
          </li>
          <li>
            <t>"max-subscribers": the broker may enforce an undisclosed limit; "observer-check": bounded at 86400, hint until stored</t>
          </li>
          <li>
            <t>Replaced MAYs that granted no permission with "can" in broker and topic discovery; explicit <bcp14>MAY</bcp14> for eliding link attributes</t>
          </li>
          <li>
            <t>Link-format FETCH response tied to the TBD606 request Content-Format</t>
          </li>
          <li>
            <t>Topic resource GET and FETCH responses are cacheable; added RFC 8132 as a normative reference</t>
          </li>
          <li>
            <t>POST update resets any absent optional property; one subscriber-disruption note for both update methods</t>
          </li>
          <li>
            <t>Section 3.3 points to where the topic-data URI is discovered instead of calling it a required step</t>
          </li>
          <li>
            <t>Old-representations paragraph kept as an extensibility example</t>
          </li>
          <li>
            <t>Editorial nits; topic-data examples use Content-Format 112</t>
          </li>
          <li>
            <t>Replaced the HALF CREATED and FULLY CREATED states with one CREATED state: the broker creates the topic-data resource with the topic, GET and Observe on it return 2.06 (No Content) until the first publication; first publication returns 2.04; removed the "initialize" property; normative reference to draft-jimenez-core-coap-no-content</t>
          </li>
          <li>
            <t>Removed the Delete topic-data operation: a DELETE terminates all observations and therefore cannot clear a topic without losing its subscribers</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The current version of this document contains a substantial contribution by Klaus Hartke's proposal <xref target="I-D.hartke-t2trg-coral-pubsub"/>, which defines the topic resource model and structure as well as the topic lifecycle and interactions. The document follows a similar architectural design as that provided by Marco Tiloca's <xref target="I-D.ietf-ace-oscore-gm-admin"/>.</t>
      <t>The authors would like to thank <contact fullname="Marco Tiloca"/>, <contact fullname="Esko Dijk"/>,<contact fullname="Francesca Palombini"/>, <contact fullname="Christian Amsüss"/>, <contact fullname="Carsten Bormann"/>, <contact fullname="Hannes Tschofenig"/>, <contact fullname="Zach Shelby"/>, <contact fullname="Mohit Sethi"/>, Peter van der Stok, Tim Kellogg, Anders Eriksson, <contact fullname="Göran Selander"/>, Mikko Majanen, <contact fullname="Olaf Bergmann"/>, <contact fullname="David Navarro"/>, Oscar Novo and Lorenzo Corneo for their valuable contributions and reviews. The authors also thank <contact fullname="Mike Bishop"/> for his detailed AD review of -21.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="M." surname="Tiloca" fullname="Marco Tiloca">
        <organization>RISE AB</organization>
        <address>
          <postal>
            <street>Isafjordsgatan 22</street>
            <city>Kista</city>
            <code>164 40</code>
            <country>Sweden</country>
          </postal>
          <email>marco.tiloca@ri.se</email>
        </address>
      </contact>
      <t>Marco offered comprehensive reviews and insightful guidance on the recent iterations of this document. His contributions were valuable in multiple parts of the document but particularly notable in the Security Considerations section.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
