<?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.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-coap-pubsub-18" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.0 -->
  <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-18"/>
    <author initials="J." surname="Jimenez" fullname="Jaime Jimenez">
      <organization>Ericsson</organization>
      <address>
        <email>jaime@iki.fi</email>
      </address>
    </author>
    <author initials="M." surname="Koster" fullname="Michael Koster">
      <organization>Dogtiger Labs</organization>
      <address>
        <email>michaeljohnkoster@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Keranen" fullname="Ari Keranen">
      <organization>Ericsson</organization>
      <address>
        <email>ari.keranen@ericsson.com</email>
      </address>
    </author>
    <date year="2025" month="February" day="28"/>
    <area>Applications</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 68?>

<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 72?>

<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"/>. The URI template format <xref target="RFC6570"/> is used to describe the REST API defined in this specification.</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 matching and delivering 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 observation relation (subscription) to a topic. Both roles operate without any mutual knowledge, guided by their respective topic interests.</t>
          </dd>
          <dt>topic collection:</dt>
          <dd>
            <t>A set of topics. A topic collection is hosted as one collection resource (See <xref section="3.1" sectionFormat="of" target="I-D.ietf-core-interfaces"/>) at the broker, and its representation is the list of links to the topic resources corresponding to each topic.</t>
          </dd>
          <dt>topic:</dt>
          <dd>
            <t>A set of information concerning a topic, including its configuration and other metadata. A topic is hosted as one topic resource at the broker, and its 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 to 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 that hosts one or more topic collections with their topics, and also topic-data resources. The broker is responsible for the store-and-forward of state update representations, for the topics for which it hosts the corresponding topic-data resources. The broker is also responsible for handling the topic lifecycle as defined in <xref target="topic-lifecycle"/>. 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 over CoAP.</t>
        <t>Topics are created by the broker, but the initial configuration can be proposed by a client (e.g., a publisher or a dedicated administrator) over the RESTful interface of a corresponding topic resource hosted by the broker.</t>
        <t>Publishers submit their data over the RESTful interface of a topic-data resource corresponding to the topic, which may be 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>The broker is responsible for the store-and-forward of state update representations between CoAP clients. Subscribers observing a resource will receive notifications, the delivery of which is done on a best-effort basis.</t>
        <figure anchor="fig-arch">
          <name>Publish-subscribe architecture over 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>This document describes two sets of interactions; interactions to configure topics and their lifecycle (see <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 handle the management of the topics.</t>
        <t>The topic-data interactions are publish, subscribe, unsubscribe, read, and delete. 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"/> of this document. The interfaces 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 configuration side of a publish and subscribe broker consists of 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 is associated with a topic resource and a topic-data resource. The topic resource is used by a client creating or administering a topic. The topic-data resource is used by the publishers and the subscribers to a topic.</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 a link, where the link target 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 with a link to a topic-data 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 is 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>Unless specified otherwise, all topic properties are defined in this document and their CBOR abbreviations are defined in <xref target="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.</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 as a CBOR text string.</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. The value should be "core.ps.data".</t>
            </li>
            <li>
              <t>"topic-content-format": This optional field specifies the 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 text string. The value should be a date string as defined in Section <xref target="RFC8949" section="3.4.1" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/> (e.g., the CBOR encoded version of "2023-03-31T23:59:59Z"). If this field is not present, the topic will not expire automatically.</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 an unsigned CBOR integer. If this field is not present or if the field is empty, then there is no limit to the number of simultaneous subscribers allowed. The broker can use this field to limit the number of subscribers for the topic.</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"/>). Encoded as a CBOR unsigned integer greater than 0, it ensures subscribers who have lost interest and silently forgotten the observation do not remain indefinitely on the server's observer list. If another CoAP server hosts the topic-data resource, that server is responsible for applying the "observer-check" value. The default value for this field is 86400, as defined in <xref target="RFC7641"/>, which corresponds to 24 hours.</t>
            </li>
            <li>
              <t>"topic-history": An optional field used to indicate how many previous resource representations the broker shall store for a topic. Encoded as an unsigned CBOR integer, it defines a counter representing the number of historical resource states the broker retains. This enables subscribers to retrieve past states of the topic data when necessary, useful in scenarios where historical context is required (e.g., for data analytics or auditing). If this field is not present, no historical data will be stored.</t>
            </li>
            <li>
              <t>"initialize": An optional boolean field that, when set to <tt>true</tt>, allows the topic-data resource to be pre-populated with a zero-length (empty) payload without an explicit Content-Format. This behavior facilitates one-shot publication and topic creation, enabling CoAP clients to subscribe by default without encountering a <tt>4.04 Not Found</tt> error. If this field is not present or set to 'false', the broker behaves as usual, and the topic-data resource is not initialized.</t>
            </li>
          </ul>
        </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 <bcp14>MAY</bcp14> 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 <bcp14>MAY</bcp14> register with a RD by following the steps on <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.</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>A broker <bcp14>SHOULD</bcp14> offer a topic discovery entry point to enable clients to find topics of interest. The resource entry point is the topic collection resource collecting the topics for those topics (see <xref section="1.2.2" sectionFormat="of" target="RFC6690"/>) and is identified by the resource type "core.ps.coll".</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 <bcp14>MAY</bcp14> offer topic resources via /.well-known/core. 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"/>). Each topic resource is identified by the resource type "core.ps.conf".</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, particularly when the server restricts topic availability to authenticated clients only. In such cases, it is recommended to utilize the procedure outlined in <xref target="topic-get-all"/> for topic discovery.</t>
        </section>
        <section anchor="topic-data-discovery">
          <name>Topic-Data Discovery</name>
          <t>Within a topic, there is the "topic-data" topic property containing the URI of the topic-data resource that a CoAP client can subscribe to and/or publish to. The topic-data resources use the resource type 'core.ps.data'.</t>
          <t>The "topic-data" topic property value contains the URI of the topic-data resource for publishing and subscribing. So retrieving the topic will also provide the URL of the topic-data resource (see <xref target="topic-get-resource"/>).</t>
          <t>It is also possible to discover a list of topic-data resources by sending a request to the collection with a query rt=core.ps.data as shown below. Any 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.
So the broker, in this example case, was implemented to elide these attributes always, to minimize the size of discovery response payloads.</t>
        </section>
      </section>
      <section anchor="topic-collection-interactions">
        <name>Topic Collection Interactions</name>
        <t>Topic collection interactions are the interactions that can happen directly with a specific topic collection.</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 2.05 (Content) response, specifying the list of links to topic resources associated with this topic collection (see <xref target="topic-resource-representation"/>).</t>
          <t>A client <bcp14>MAY</bcp14> retrieve a list of links to topics it is authorized to access, based on its permissions. A server <bcp14>MUST</bcp14> implement topic collection discovery.</t>
          <t>The payload content-format 40 ("application/link-format") <bcp14>MUST</bcp14> be at least 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 2.05 (Content) response 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 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>Example:</t>
          <artwork><![CDATA[
   Request:

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


   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 topics to a collection of topics by submitting an initial representation of the initial topic resource (see <xref target="topic-resource-representation"/>) in a POST request to the topic collection URI. The request <bcp14>MUST</bcp14> specify at least a subset of the topic properties in <xref target="topic-properties"/>, namely: "topic-name" and resource-type.</t>
          <t>Please note that the topic will NOT be fully created until a publisher has published some data to it (See <xref target="topic-lifecycle"/>).</t>
          <t>To facilitate immediate subscription and allow clients to observe the topic before data has been published, the client can include the "initialize" set to "true". When included, the broker will create the topic and pre-populate the "topic-data" field with a zero-length (empty) payload without an explicit Content-Format. That is, a subscribing client would get this zero-length representation without an associated Content-Format Option in the CoAP resonse. This means “indeterminate” per <xref section="5.10.3" sectionFormat="of" target="RFC7252"/>.</t>
          <t>When "initialize" is set to "false" or omitted, the topic will only be fully created after data is published to it.</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 includes a CBOR map with key-value pairs. The response <bcp14>MUST</bcp14> include the required topic properties (see <xref target="topic-properties"/>), namely: "topic-name", "resource-type" and "topic-data". It <bcp14>MAY</bcp14> also include a number of optional topic properties too.</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> respond with a 4.03 (Forbidden) error. The response <bcp14>MUST</bcp14> have Content-Format set to "application/core-pubsub+cbor".</t>
          <t>The broker <bcp14>MUST</bcp14> issue a 4.00 (Bad Request) error if a received parameter is invalid, unrecognized, or if the "topic-name" is already in use or otherwise invalid.</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/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>These are the interactions that can happen at the topic resource level.</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 2.05 (Content) response 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> respond with a 4.03 (Forbidden) error.</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>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: "2023-04-00T23:59:59Z",
      / max-subscribers /       6: 100,
      / topic-history /         8: 10
   }
]]></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 contains a CBOR map with a configuration filter or 'conf-filter', a CBOR array of topic properties, as defined in <xref target="pubsub-parameters"/>. 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 2.05 (Content) response 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> respond with a 4.03 (Forbidden) error.</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>Both request and response <bcp14>MUST</bcp14> have Content-Format set to "application/core-pubsub+cbor".</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: FETCH (Code=0.05)
   Uri-Path: "ps"
   Uri-Path: "h9392"
   Content-Format: TBD606 (application/core-pubsub+cbor)
   Payload (in CBOR diagnostic notation):
   {
      / conf-filter / 10: ["topic-data", "media-type"]
   }

   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 PUT 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.</t>
          <t>On success, the topic is overwritten and broker returns a 2.04 (Changed) response and the current full resource representation. The broker may choose not to overwrite topic properties that are not explicitly modified in the request.</t>
          <t>Note that updating the "topic-data" path will automatically cancel all existing observations on it and thus will unsubscribe all subscribers. Updating the "topic-data" path may happen also after it being deleted, as described on <xref target="delete-topic-data"/>, this will in turn create a new "topic-data" path for that topic.</t>
          <t>Similarly, decreasing "max-subscribers" will also cause that some subscribers get 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 PUT the topic is being overwritten, thus some of the optional topic properties (e.g., "max-subscribers", "observer-check") not included in the PUT message will be reset to their default values.</t>
          <t>Example:</t>
          <artwork><![CDATA[
   Request:

   Header: PUT (Code=0.03)
   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: "2023-04-28T23:59:59Z"
   }

   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: "2023-04-28T23:59:59Z",
      / max-subscribers /       6: 100,
      / observer-check /        7: 86400
   }
]]></artwork>
          <t>Note that when a topic changes, it may result in disruptions for the subscribers. Some potential issues that may arise include:</t>
          <ul spacing="normal">
            <li>
              <t>Limiting the number of subscribers will cause cancellation of ongoing subscriptions until "max-subscribers" has been reached.</t>
            </li>
            <li>
              <t>Changing the "topic-data" value will cancel all ongoing subscriptions.</t>
            </li>
            <li>
              <t>Changing of the "expiration-date" may cause cancellation of ongoing subscriptions if the topic expires at an earlier data.</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 iPATCH request allows for updating only specific fields of the topic while leaving the others unchanged. As with the PUT 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>As with the PUT method, updating the "topic-data" path will automatically cancel all existing observations on it and thus will unsubscribe all subscribers. Decreasing "max-subscribers" will also cause some subscribers to get unsubscribed. Unsubscribed endpoints receive a final 4.04 (Not Found) response as per <xref section="3.2" sectionFormat="of" target="RFC7641"/>.</t>
          <t>Contrary to PUT, iPATCH operations will explicitly update some topic properties, leaving others unmodified.</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: "2024-02-28T23:59:59Z",
      / 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: "2024-02-28T23:59:59Z",
      / max-subscribers /       6: 5,
      / observer-check /        7: 86400
   }
]]></artwork>
          <t>Note that when a topic changes through an iPATCH request, it may result in disruptions for the subscribers. For example, limiting the number of subscribers will cause cancellation of ongoing subscriptions until "max-subscribers" has been reached.</t>
        </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.</t>
          <t>When a topic resource is deleted, the broker <bcp14>MUST</bcp14> also delete the topic-data resource, unsubscribe all subscribers by removing them from the list of observers and returning 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 over 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 Observe option set to 0 (register) to a topic-data resource. When resource state changes, subscribers observing the resource <xref target="RFC7641"/> at that time will receive a notification.</t>
      <t>A topic-data resource does not exist until some initial data has been published to it. Before initial data publication, a GET request to the topic-data resource URI results in a 4.04 (Not Found) response. If such a "half created" topic is undesired, the creator of the topic can simply immediately publish some initial placeholder data to make the topic "fully created" (see <xref target="topic-lifecycle"/>).</t>
      <t>URIs for topic resources are broker-generated (see <xref target="topic-create"/>). There is no necessary URI pattern dependence between the URI where the topic-data resource exists and the URI of the topic resource.</t>
      <section anchor="topic-lifecycle">
        <name>Topic Lifecycle</name>
        <t>When a topic is newly created, it is first placed by the broker into the HALF CREATED state (see <xref target="fig-life"/>). In this state, a client can read and update the configuration of the topic and delete the topic. A publisher can publish to the topic-data resource.  However, a subscriber cannot yet subscribe to the topic-data resource nor read the latest data.</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="224" width="544" viewBox="0 0 544 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 128,72 L 128,120" fill="none" stroke="black"/>
                <path d="M 128,144 L 128,176" fill="none" stroke="black"/>
                <path d="M 160,144 L 160,176" fill="none" stroke="black"/>
                <path d="M 168,72 L 168,120" fill="none" stroke="black"/>
                <path d="M 248,152 L 248,184" fill="none" stroke="black"/>
                <path d="M 280,152 L 280,184" fill="none" stroke="black"/>
                <path d="M 368,72 L 368,120" fill="none" stroke="black"/>
                <path d="M 368,144 L 368,176" fill="none" stroke="black"/>
                <path d="M 400,144 L 400,176" fill="none" stroke="black"/>
                <path d="M 408,72 L 408,120" fill="none" stroke="black"/>
                <path d="M 8,80 L 104,80" fill="none" stroke="black"/>
                <path d="M 192,80 L 344,80" fill="none" stroke="black"/>
                <path d="M 432,80 L 520,80" fill="none" stroke="black"/>
                <path d="M 192,112 L 344,112" fill="none" stroke="black"/>
                <path d="M 432,112 L 520,112" fill="none" stroke="black"/>
                <path d="M 200,160 L 224,160" fill="none" stroke="black"/>
                <path d="M 304,160 L 328,160" fill="none" stroke="black"/>
                <path d="M 184,128 L 200,160" fill="none" stroke="black"/>
                <path d="M 328,160 L 344,128" fill="none" stroke="black"/>
                <path d="M 520,80 C 528.83064,80 536,87.16936 536,96" fill="none" stroke="black"/>
                <path d="M 520,112 C 528.83064,112 536,104.83064 536,96" fill="none" stroke="black"/>
                <path d="M 144,192 C 135.16936,192 128,184.83064 128,176" fill="none" stroke="black"/>
                <path d="M 144,192 C 152.83064,192 160,184.83064 160,176" fill="none" stroke="black"/>
                <path d="M 384,192 C 375.16936,192 368,184.83064 368,176" fill="none" stroke="black"/>
                <path d="M 384,192 C 392.83064,192 400,184.83064 400,176" fill="none" stroke="black"/>
                <path d="M 128,72 L 168,72" fill="none" stroke="black"/>
                <path d="M 368,72 L 408,72" fill="none" stroke="black"/>
                <path d="M 128,120 L 168,120" fill="none" stroke="black"/>
                <path d="M 368,120 L 408,120" fill="none" stroke="black"/>
                <path d="M 248,152 L 280,152" fill="none" stroke="black"/>
                <path d="M 248,184 L 280,184" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="440,112 428,106.4 428,117.6" fill="black" transform="rotate(180,432,112)"/>
                <polygon class="arrowhead" points="408,144 396,138.4 396,149.6" fill="black" transform="rotate(270,400,144)"/>
                <polygon class="arrowhead" points="352,112 340,106.4 340,117.6" fill="black" transform="rotate(0,344,112)"/>
                <polygon class="arrowhead" points="312,160 300,154.4 300,165.6" fill="black" transform="rotate(180,304,160)"/>
                <polygon class="arrowhead" points="232,160 220,154.4 220,165.6" fill="black" transform="rotate(0,224,160)"/>
                <polygon class="arrowhead" points="200,80 188,74.4 188,85.6" fill="black" transform="rotate(180,192,80)"/>
                <polygon class="arrowhead" points="168,144 156,138.4 156,149.6" fill="black" transform="rotate(270,160,144)"/>
                <polygon class="arrowhead" points="112,80 100,74.4 100,85.6" fill="black" transform="rotate(0,104,80)"/>
                <g class="text">
                  <text x="148" y="36">HALF</text>
                  <text x="392" y="36">FULLY</text>
                  <text x="152" y="52">CREATED</text>
                  <text x="260" y="52">Delete</text>
                  <text x="392" y="52">CREATED</text>
                  <text x="268" y="68">topic-data</text>
                  <text x="472" y="68">Publish</text>
                  <text x="52" y="100">Create</text>
                  <text x="264" y="132">Publish</text>
                  <text x="480" y="132">Subscribe</text>
                  <text x="96" y="164">Read/</text>
                  <text x="432" y="164">Read/</text>
                  <text x="92" y="180">Update</text>
                  <text x="204" y="180">Delete</text>
                  <text x="324" y="180">Delete</text>
                  <text x="436" y="180">Update</text>
                  <text x="96" y="196">Topic</text>
                  <text x="200" y="196">Topic</text>
                  <text x="320" y="196">Topic</text>
                  <text x="452" y="196">topic-data</text>
                  <text x="264" y="212">DELETED</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
                HALF                          FULLY
               CREATED       Delete          CREATED
                ____        topic-data        ____     Publish
------------>  |    |  <-------------------  |    |  ------------.
   Create      |    |                        |    |               |
               |____|  ------------------->  |____|  <-----------'
                      \      Publish      /            Subscribe
               |   ^   \       ___       /   |   ^
         Read/ |   |    '-->  |   |  <--'    |   | Read/
        Update |   |  Delete  |___|  Delete  |   | Update
         Topic  '-'   Topic          Topic    '-'  topic-data
                             DELETED
]]></artwork>
          </artset>
        </figure>
        <t>After a publisher publishes to the topic-data resource for the first time, the topic is placed into the FULLY CREATED state. In this state, a client can read data by means of a GET request without observe. A publisher can publish to the topic-data resource and a subscriber can observe the topic-data resource.</t>
        <t>When a client deletes a topic resource, the topic is placed into the DELETED state and shortly after removed from the server. In this state, all subscribers are removed from the list of observers of the topic-data resource and no further interactions with the topic are possible.</t>
        <t>When a client deletes a topic-data resource, the associated topic is placed into the HALF CREATED state, where clients can read, update and delete the topic and await for a publisher to begin publication.</t>
      </section>
      <section anchor="topic-data-interactions">
        <name>Topic-Data Interactions</name>
        <t>Interactions with the topic-data resource are covered in this section.</t>
        <section anchor="publish">
          <name>Publish</name>
          <t>A topic with a topic-data resource must have been created in order to publish data to it (See <xref target="topic-create"/>) and be in the half-created or fully-created state in order to the publish operation to work (see <xref target="topic-lifecycle"/>).</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 broker returns a 2.04 (Changed) response. However, when data is published to the topic for the first time, the broker instead <bcp14>MUST</bcp14> return a 2.01 (Created) response and set the topic in the fully-created state (see <xref target="topic-lifecycle"/>).</t>
          <t>If the request does not have an acceptable content-format, the broker returns a 4.15 (Unsupported Content-Format) response.</t>
          <t>If the client is sending publications too fast, the broker returns a 4.29 (Too Many Requests) response <xref target="RFC8516"/>.</t>
          <t>Example of first publication:</t>
          <artwork><![CDATA[
   Request:

   Header: PUT (Code=0.03)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"
   Content-Format: 110
   Payload:
   {
      "n": "coaps://dev1.example.com/temperature",
      "u": "Cel",
      "t": 1621452122,
      "v": 23.5
   }

   Response:

   Header: Created (Code=2.01)
]]></artwork>
          <t>Example of subsequent publication:</t>
          <artwork><![CDATA[
   Request:

   Header: PUT (Code=0.03)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"
   Content-Format: 110
   Payload:
   {
      "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 <bcp14>MUST</bcp14> return 2.05 (Content) notifications with the data and the Observe Option. Otherwise, if no Observe Option is present the client should assume that the subscription was not successful.</t>
          <t>If the topic is not yet in the fully created state (see <xref target="topic-lifecycle"/>) the broker <bcp14>MUST</bcp14> return a response code 4.04 (Not Found).</t>
          <t>The following response codes are defined for the Subscribe operation:</t>
          <dl>
            <dt>Success:</dt>
            <dd>
              <t>2.05 "Content". Successful subscribe with observe response, current value included in the response.</t>
            </dd>
            <dt>Failure:</dt>
            <dd>
              <t>4.04 "Not Found". The topic-data resource does not exist.</t>
            </dd>
          </dl>
          <t>If the "max-subscribers" topic property value has been reached, the broker must treat that as specified in <xref section="4.1" sectionFormat="of" target="RFC7641"/>. The 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 successful subscription 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: 110
   Observe: 10001
   Max-Age: 15
   Payload:
   {
      "n": "urn:dev:os:32473-123456",
      "u": "Cel",
      "t": 1696341182,
      "v": 19.87
   }

   Response:

   Header: Content (Code=2.05)
   Content-Format: 110
   Observe: 10002
   Max-Age: 15
   Payload:
   {
      "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 simply by canceling the observation as described in <xref section="3.6" sectionFormat="of" target="RFC7641"/>. The client <bcp14>MUST</bcp14> either use CoAP GET with the Observe Option set to 1 or send a CoAP Reset message in response to a notification. Also on <xref section="3.6" sectionFormat="of" target="RFC7641"/> the client can simply "forget" the observation and the broker will remove it from the list of observers after the next notification.</t>
          <t>As per <xref target="RFC7641"/> a server that transmits notifications mostly in non-confirmable messages, but it <bcp14>MUST</bcp14> send a notification in 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" on <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 anchor="delete-topic-data">
          <name>Delete topic-data</name>
          <t>A publisher <bcp14>MAY</bcp14> delete a topic by making a CoAP DELETE request on the topic-data resource (which is hosted at the "topic-data" URI).</t>
          <t>On success, the broker returns a 2.02 (Deleted) response.</t>
          <t>When a topic-data resource is deleted, the broker <bcp14>MUST</bcp14> also delete the "topic-data" topic property in the topic resource, unsubscribe all subscribers by removing them from the list of observers and return a final 4.04 (Not Found) response as per <xref section="3.2" sectionFormat="of" target="RFC7641"/>. The topic is then set back to the half created state as per <xref target="topic-lifecycle"/>.</t>
          <t>Example of a successful deletion:</t>
          <artwork><![CDATA[
   Request:

   Header: DELETE (Code=0.04)
   Uri-Path: "ps"
   Uri-Path: "data"
   Uri-Path: "1bd0d6d"

   Response:

   Header: Deleted (Code=2.02)
]]></artwork>
        </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 in the broker. Please note that discovery of the "topic-data" topic property is a required previous step (see <xref target="topic-get-resource"/>).</t>
        <t>On success, the server <bcp14>MUST</bcp14> return 2.05 (Content) response with the data.</t>
        <t>If the target URI does not match an existing resource or the topic is not in the fully created state (see <xref target="topic-lifecycle"/>), the broker <bcp14>MUST</bcp14> return a response code 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: 110
   Max-Age: 15
   Payload:
   {
      "n": "coaps://dev1.example.com/temperature",
      "u": "Cel",
      "t": 1621452122,
      "v": 23.5
   }
]]></artwork>
      </section>
      <section anchor="rate-limit">
        <name>Rate Limiting</name>
        <t>The server hosting the topic-data resource may have to handle a potentially 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>In this situation, 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 broker <bcp14>MAY</bcp14> also stop publishing 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. Reference should always be [RFC-XXXX].</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">tstr</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>
          <tr>
            <td align="left">topic-history</td>
            <td align="left">8</td>
            <td align="left">uint</td>
          </tr>
          <tr>
            <td align="left">initialize</td>
            <td align="left">9</td>
            <td align="left">bool</td>
          </tr>
          <tr>
            <td align="left">conf-filter</td>
            <td align="left">10</td>
            <td align="left">array</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>Communications between each client and the broker are <bcp14>RECOMMENDED</bcp14> to be secured, e.g., by using OSCORE <xref target="RFC8613"/> or DTLS <xref target="RFC9147"/>. Security considerations for the used secure communication protocols apply too.</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. In such a case, it <bcp14>MUST</bcp14> be possible to assert source authentication of the published data. This can be achieved at the application layer, e.g., by using COSE <xref target="STD96"/>, <xref target="RFC9053"/>.</t>
      <t>Access control of clients at the broker <bcp14>MAY</bcp14> be enforced for performing discovery operation, 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>Building on <xref target="RFC9594"/>, its application profile for publish-subscribe communication with CoAP <xref target="I-D.ietf-ace-pubsub-profile"/> 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 for Authentication and Authorization in Constrained Environments (ACE) <xref target="RFC9200"/> and defines a method to: authorize publishers and subscribers to perform operations at the broker, with fine-grained access control; authorize publishers and subscribers to obtain the keying material required to take part to a topic managed by the broker; protect published data end-to-end between its publisher and all the subscribers to the targeted topic, ensuring confidentiality, integrity, and source authentication of the published content end-to-end. 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 for messages of the protocols defined in this document and carrying topic properties encoded in CBOR. 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 "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 broker</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", or "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 can be a positive integer, a negative integer, or a text string. Different ranges of values use different registration policies <xref target="BCP26"/>. Integer values from -256 to 255 as well as text strings of length 1 are designated as "Standards Action With Expert Review". Integer values from -65536 to -257 and from 256 to 65535, as well as text strings of length 2 are designated as "Specification Required". Integer values greater than 65535 as well as text strings of length greater than 2 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"/>.</t>
      </section>
      <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 "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>Expert reviewers should take into consideration the following points:</t>
        <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>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 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 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 point is being used for.</t>
          </li>
          <li>
            <t>Experts should take into account the expected usage of fields when approving point assignment. Documents published via Standards Action can also register 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>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6570">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <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="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>
        </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="8" month="January" year="2025"/>
            <abstract>
              <t>   Group communication for 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 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 ACE framework for Authentication and
   Authorization 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-13"/>
        </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 1077?>

<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>
    <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. It also 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 also thank <contact fullname="Marco Tiloca"/>, <contact fullname="Francesca Palombini"/>, <contact fullname="Carsten Bormann"/>, <contact fullname="Esko Dijk"/>, <contact fullname="Hannes Tschofenig"/>, <contact fullname="Zach Shelby"/>, <contact fullname="Mohit Sethi"/>, Peter van der Stok, Tim Kellogg, Anders Eriksson, <contact fullname="Goran Selander"/>, Mikko Majanen, <contact fullname="Olaf Bergmann"/>, <contact fullname="David Navarro"/>, Oscar Novo and Lorenzo Corneo for their valuable contributions and reviews.</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>
          <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 particularly notable in the Security Considerations section, among others.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
64xHE1jP/wfj1CMIneoAAA==

-->

</rfc>
