<?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.39 (Ruby 4.0.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jimenez-core-coap-diag-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="CoAP Diag">CoAP Diagnostic Message Notation</title>
    <seriesInfo name="Internet-Draft" value="draft-jimenez-core-coap-diag-00"/>
    <author initials="J." surname="Jimenez" fullname="Jaime Jimenez">
      <organization>Ericsson</organization>
      <address>
        <email>jaime@iki.fi</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>D-28359 Bremen</city>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2026" month="July" day="04"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 52?>

<t>This document defines a text notation for representing Constrained Application Protocol (CoAP) request/response exchanges in Internet-Drafts and RFCs. The notation balances human readability with mechanical validation: a reader can follow an exchange at a glance, and tooling can be built to parse the message structure and check each payload against its declared content format. The notation is application-layer by default, with message-layer detail added only where an example depends on it. It is a recommended convention for use in documents and with authoring tools such as kramdown-rfc, not a conformance target; it does not change CoAP or any on-the-wire encoding.</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-jimenez-core-coap-diag/"/>.
      </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/jaimejim/coap-diag"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> defines a request/response model in which clients send requests on resources hosted by servers, receiving responses. Documents that specify or use CoAP illustrate these exchanges with examples: a request line, a set of options, and a payload, followed by the response. These examples are how a reader first understands a protocol interaction, and they are frequently the part of a document that implementers copy from.</t>
      <t>Authors write these examples in divergent, ad hoc notations. Some split the request target into individual <tt>Uri-Path</tt> and <tt>Uri-Query</tt> option lines; others compose it into a single URI on the first line. Some prefix each message with <tt>Header:</tt> and each body with <tt>Payload:</tt>; others use <tt>Req:</tt> and <tt>Res:</tt>, or no markers at all. The same CBOR payload appears with and without a declared content format, and response codes are written both as <tt>2.05 Content</tt> and as <tt>Header: Content (Code=2.05)</tt>. <xref target="survey"/> surveys seven such variants drawn from published RFCs and active drafts.</t>
      <t>This divergence has two costs. A reader who moves between documents must re-learn the convention each time. More importantly, no widely used notation is both readable and machine-checkable, so a malformed CBOR or JSON payload in an example is caught only by a human reviewer, if at all. Tooling that could validate payloads exists (<xref target="tool-integration"/>), but it needs a predictable structure to parse first.</t>
      <t>This document defines a single notation for CoAP exchanges, for use in documents and in authoring tools. The notation follows HTTP message syntax <xref target="RFC9112"/> where practical, composes URIs on the first line, declares the content format of each payload, and represents payloads in the text notation appropriate to that format. It covers requests, responses, and their options and payloads. It does not define a rendering for transport mechanisms such as block-wise transfer <xref target="RFC7959"/>, multicast requests, or suppressed responses <xref target="RFC7967"/>; a document that illustrates those uses whatever notation it finds suitable. It does not change CoAP <xref target="RFC7252"/>, and it does not define or alter any message encoding on the wire.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the following terms.</t>
      <dl newline="true">
        <dt>request line:</dt>
        <dd>
          <t>The first line of a request. It carries the text name for the CoAP method and the request target, for example <tt>GET /temperature</tt>.</t>
        </dd>
        <dt>response line:</dt>
        <dd>
          <t>The first line of a response. It carries the response code in <tt>X.YY</tt> form and a reason phrase, for example <tt>2.05 Content</tt>.</t>
        </dd>
        <dt>option line:</dt>
        <dd>
          <t>A line of the form <tt>Name: value</tt> that represents one CoAP option, using the registered option name.</t>
        </dd>
        <dt>annotation:</dt>
        <dd>
          <t>Additional information added to a request, response, or option line.</t>
        </dd>
        <dt>Content-Format annotation:</dt>
        <dd>
          <t>In an option line for the <tt>Content-Format</tt> (or <tt>Accept</tt>) option, the content-format number is followed by its media type (and parameters, if any) in parentheses, for example:
</t>
          <artwork><![CDATA[
Content-Format: 60 (application/cbor)
]]></artwork>
        </dd>
        <dt>payload:</dt>
        <dd>
          <t>The message body, separated from the option lines by a single blank line and written in the text notation of its content format.</t>
        </dd>
        <dt>transport annotation:</dt>
        <dd>
          <t>An optional parenthetical on the request or response line that records message-layer detail such as the message type or token, for example <tt>(CON, Token=0x64)</tt>.</t>
        </dd>
        <dt>EDN:</dt>
        <dd>
          <t>CBOR Diagnostic Notation, the text representation of CBOR data items originally defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/> and now in <xref target="I-D.ietf-cbor-edn-literals"/>.<cref anchor="Namechange">The name EDN and its expansion is currently under discussion in the CBOR WG and might change.</cref></t>
        </dd>
      </dl>
    </section>
    <section anchor="principles">
      <name>Design Principles</name>
      <t>The notation follows five principles.</t>
      <dl newline="true">
        <dt>Familiar structure:</dt>
        <dd>
          <t>The notation follows HTTP message syntax <xref target="RFC9112"/> where practical, so that a reader accustomed to HTTP examples can read a CoAP exchange without a legend.</t>
        </dd>
        <dt>Concise but unambiguous:</dt>
        <dd>
          <t>The notation omits redundant labels while keeping the structure parsable. The method or response code, the options, and the payload each occupy a distinct position.</t>
        </dd>
        <dt>Payload-format-aware:</dt>
        <dd>
          <t>A payload is preceded by a Content-Format annotation that names its media type, so that a tool can dispatch the payload to the correct validator. The diagnostic payload of an error response is the exception, as described in <xref target="payload"/>.</t>
        </dd>
        <dt>Wire-faithful:</dt>
        <dd>
          <t>Options are written with their registered CoAP names, and request targets are composed into URIs rather than invented. The notation reflects the protocol it illustrates.</t>
        </dd>
        <dt>Transport-agnostic by default:</dt>
        <dd>
          <t>The notation describes the application layer. CoAP message-layer detail is added only where an example depends on it, using transport annotations (<xref target="transport"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="notation">
      <name>Notation</name>
      <t>A request is written as a request line, zero or more option lines, and an optional payload (<xref target="fig-request"/>). A response has the same structure with a response line in place of the request line (<xref target="fig-response"/>).</t>
      <figure anchor="fig-request">
        <name>Request structure</name>
        <artwork><![CDATA[
METHOD /path[?query]
[Option: value]
[Option: value]

[payload]
]]></artwork>
      </figure>
      <figure anchor="fig-response">
        <name>Response structure</name>
        <artwork><![CDATA[
CODE Reason-Phrase
[Option: value]
[Option: value]

[payload]
]]></artwork>
      </figure>
      <section anchor="request-line">
        <name>Request Line</name>
        <t>The request line carries the CoAP method followed by the request target.
The method is written as its (mostly) uppercase name, for example <tt>GET</tt>, <tt>POST</tt>, <tt>PUT</tt>, <tt>DELETE</tt>, <tt>FETCH</tt>, <tt>PATCH</tt>, or <tt>iPATCH</tt> <xref target="RFC8132"/>.
The target is a composed path shown as a URI reference usually beginning with <tt>/</tt> (i.e., in absolute-path reference form, see <xref section="4.2" sectionFormat="of" target="RFC3986"/>).
Where the host and/or URI scheme is relevant, the full URI form is used, for example <tt>POST coap://broker.example.com/ps</tt>.</t>
      </section>
      <section anchor="response-line">
        <name>Response Line</name>
        <t>The response line carries the response code in <tt>X.YY</tt> form followed by its reason phrase, for example <tt>2.01 Created</tt> or <tt>2.05 Content</tt>. The reason phrase is the name registered for that code in the IANA registry established in <xref section="12.1.2" sectionFormat="of" target="RFC7252"/>.</t>
      </section>
      <section anchor="options">
        <name>Options</name>
        <t>Each option occupies one line of the form <tt>Name: value</tt>, using the option name registered in the "CoAP Option Numbers" registry. Uri-Path segments are composed into the target on the request line rather than written as separate <tt>Uri-Path</tt> option lines, and Uri-Query parameters are composed after a <tt>?</tt>. Location options in a response are composed in the same way and represented as an option line, for example <tt>Location-Path: /ps/h9392</tt>.</t>
      </section>
      <section anchor="content-format">
        <name>Content-Format Annotation</name>
        <t>An option line for <tt>Content-Format</tt> or <tt>Accept</tt> carries the content-format number followed by the corresponding media type in parentheses:</t>
        <artwork><![CDATA[
Content-Format: TBD606 (application/core-pubsub+cbor)
]]></artwork>
        <t>The number is the value a sender places on the wire; the parenthetical names the media type for the reader and for validation tooling (<xref target="tool-integration"/>). Where a code point has not yet been assigned, a placeholder is used in its place, written as <tt>TBDnnn</tt> or <tt>NNN</tt>, and resolved once IANA assigns the value. The examples in this document use <tt>TBD606</tt> for the <tt>application/core-pubsub+cbor</tt> format defined in <xref target="I-D.ietf-core-coap-pubsub"/>, which is not yet registered.</t>
      </section>
      <section anchor="payload">
        <name>Payload</name>
        <t>A single blank line separates the last option line from the payload. The payload is written in the text notation of its content format:</t>
        <dl newline="true">
          <dt>CBOR-based formats:</dt>
          <dd>
            <t>EDN, with inline comments where they aid the reader. A CBOR sequence <xref target="RFC8742"/> is written as the comma-separated EDN form, as in Variant 6 of <xref target="survey"/>.</t>
          </dd>
          <dt>JSON-based formats:</dt>
          <dd>
            <t>JSON.</t>
          </dd>
          <dt>Link-format:</dt>
          <dd>
            <t>CoRE Link Format <xref target="RFC6690"/>.</t>
          </dd>
          <dt>Binary content beyond CBOR:</dt>
          <dd>
            <t>A hexadecimal dump using the <tt>h'...'</tt> notation of EDN <xref target="RFC8949"/>.</t>
          </dd>
        </dl>
        <t>The diagnostic payload of an error response (<xref section="5.5.2" sectionFormat="of" target="RFC7252"/>) is written as a text string with no Content-Format annotation, as shown in <xref target="fig-error"/>.</t>
        <t>A payload line that exceeds the available width is folded using the convention of <xref target="RFC8792"/>, so that a tool reconstructs the original payload by removing the folds before parsing.</t>
      </section>
      <section anchor="transport">
        <name>Transport Annotations</name>
        <t>Where an example depends on CoAP message-layer behavior, the detail is added in parentheses on the request or response line. Common annotations record the message type (<tt>CON</tt>, <tt>NON</tt>, <tt>ACK</tt>), the token, and the message ID, as defined in <xref target="RFC7252"/>:</t>
        <figure anchor="fig-transport">
          <name>Exchange with transport annotations for message type and token</name>
          <artwork><![CDATA[
GET /temperature (CON, Token=0x64)

2.05 Content (ACK)
Observe: 9
Max-Age: 15
Content-Format: 0 (text/plain)

22.3 Cel
]]></artwork>
        </figure>
      </section>
      <section anchor="multiple">
        <name>Multiple Messages</name>
        <t>An exchange of more than two messages is written as a sequence of requests and responses, each separated from the next by a blank line. A short label can precede a message where it clarifies the flow.</t>
      </section>
      <section anchor="grammar">
        <name>Grammar</name>
        <t><xref target="fig-grammar"/> sketches the structure in ABNF <xref target="RFC5234"/>. The grammar is descriptive: it fixes the lexical shape a tool relies on, not every detail of the method names, option names, or payload syntax, which are drawn from the documents cited in <xref target="relationship"/>.</t>
        <figure anchor="fig-grammar">
          <name>Descriptive grammar of the notation</name>
          <sourcecode type="abnf"><![CDATA[
message = start-line *option-line [blank-line payload]
start-line = (method SP request-target / code SP reason)
             [SP annot] newline
option-line = option-name ":" SP option-value newline
blank-line = newline
annot = "(" *annot-text ")"    ; free-form transport detail

method = 1*ALPHA                 ; e.g. GET, POST, iPATCH
request-target = path ["?" query] / absolute-URI
code = DIGIT "." 2DIGIT        ; e.g. 2.05
]]></sourcecode>
        </figure>
        <t>An option line uses a single space after the colon. The blank line before a payload is present whenever a payload is present and omitted otherwise. A line that is not an option line and precedes a start line is a label. Transport annotations (<xref target="transport"/>) are free-form and are not required to be machine-parsed.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>The examples in this section use a single sensor, <tt>living-room-sensor</tt>, throughout.</t>
      <t>A GET on a resource that returns a plain-text representation:</t>
      <figure anchor="fig-get">
        <name>GET with a text payload</name>
        <sourcecode type="coap"><![CDATA[
GET /temperature

2.05 Content
Content-Format: 0 (text/plain)

22.3 Cel
]]></sourcecode>
      </figure>
      <t>A POST that creates a topic, carrying a CBOR payload in both directions:</t>
      <figure anchor="fig-post">
        <name>POST creating a topic, with CBOR payloads</name>
        <sourcecode type="coap"><![CDATA[
POST /ps
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / topic-name /
  0: "living-room-sensor",
  / resource-type /
  2: "core.ps.data"
}

2.01 Created
Location-Path: /ps/h9392
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / topic-name /
  0: "living-room-sensor",
  / topic-data /
  1: "/ps/data/1bd0d6d",
  / resource-type /
  2: "core.ps.data"
}
]]></sourcecode>
      </figure>
      <t>A FETCH that filters a collection, returning a CoRE Link Format response:</t>
      <figure anchor="fig-fetch">
        <name>FETCH with a CBOR filter</name>
        <sourcecode type="coap"><![CDATA[
FETCH /ps
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / topic-name /
  0: "living-room-sensor",
  / resource-type /
  2: "core.ps.data"
}

2.05 Content
Content-Format: 40 (application/link-format)

</ps/2e3570>
]]></sourcecode>
      </figure>
      <t>An iPATCH <xref target="RFC8132"/> that applies a partial update:</t>
      <figure anchor="fig-ipatch">
        <name>iPATCH applying a partial update</name>
        <sourcecode type="coap"><![CDATA[
iPATCH /ps/h9392
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / observer-check /
  7: 7200
}

2.04 Changed
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / observer-check /
  7: 7200
}
]]></sourcecode>
      </figure>
      <t>An Observe <xref target="RFC7641"/> subscription and its first notification:</t>
      <figure anchor="fig-observe">
        <name>Observe subscription</name>
        <sourcecode type="coap"><![CDATA[
GET /ps/data/1bd0d6d
Observe: 0

2.05 Content
Observe: 1234
Content-Format: 60 (application/cbor)

{
  / name /
  0: "living-room-sensor",
  / value /
  2: 22.5
}
]]></sourcecode>
      </figure>
      <t>Discovery of a broker through <tt>.well-known/core</tt> <xref target="RFC6690"/>:</t>
      <figure anchor="fig-discovery">
        <name>Discovery via .well-known/core</name>
        <sourcecode type="coap"><![CDATA[
GET /.well-known/core?rt=core.ps

2.05 Content
Content-Format: 40 (application/link-format)

<coaps://broker.example.com/ps>;rt="core.ps"
]]></sourcecode>
      </figure>
      <t>An ACE <xref target="RFC9200"/> token request and response:
<!-- carries a binary access token as a hexadecimal payload item: -->
      </t>
      <figure anchor="fig-ace">
        <name>ACE token request and response</name>
        <sourcecode type="coap"><![CDATA[
POST /token
Content-Format: 19 (application/ace+cbor)

{
  / audience /
  5: "living-room-sensor",
  / scope /
  9: "read"
}

2.01 Created
Content-Format: 19 (application/ace+cbor)

{
  / access_token /
  1: h'8343a1010aa1054d',
  / token_type /
  34: 2,
  / profile /
  38: 2 / coap_oscore /
}
]]></sourcecode>
      </figure>
      <t>An error response carries a diagnostic payload as a text string, without a Content-Format annotation, as described in <xref section="5.5.2" sectionFormat="of" target="RFC7252"/>:</t>
      <figure anchor="fig-error">
        <name>Error response with a diagnostic payload</name>
        <sourcecode type="coap"><![CDATA[
GET /ps/data/unknown

4.04 Not Found

Unknown topic
]]></sourcecode>
      </figure>
    </section>
    <section anchor="relationship">
      <name>Relationship to Existing Notations</name>
      <t>The notation composes elements that already appear in published documents rather than inventing new ones. The request line follows the method-and-URI form of <xref target="RFC8132"/> and <xref target="RFC9176"/>. The option lines follow the <tt>Name: value</tt> form used in <xref target="RFC9203"/>. The blank line separating options from the payload follows HTTP message syntax <xref target="RFC9112"/>. The Content-Format annotation, a number followed by a media type in parentheses, follows <xref target="RFC8132"/>. CBOR payloads follow the commented EDN style used in <xref target="RFC9203"/> and in CORECONF <xref target="I-D.ietf-core-comi"/>. Transport annotations use the terms of <xref target="RFC7252"/>.</t>
      <t><xref target="survey"/> presents the source notations in more detail and compares them along these dimensions.</t>
    </section>
    <section anchor="tool-integration">
      <name>Tool Integration</name>
      <t>The notation is structured so that authoring tools can parse and validate it. The mechanism below is one illustrative implementation, in kramdown-rfc; the notation does not depend on a single toolchain. In kramdown-rfc, an example is written in a <tt>coap</tt> sourcecode block:</t>
      <artwork><![CDATA[
~~~ coap
POST /ps
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / topic-name /
  0: "living-room-sensor",
  / resource-type /
  2: "core.ps.data"
}
~~~
]]></artwork>
      <t>A tool processes such a block in four steps: it parses the structure into the first line, the option lines, and the payload; it reads the content-format number from the Content-Format annotation; it dispatches the payload to a validator for that format, such as a CBOR diagnostic parser for CBOR-based formats or a JSON parser for JSON-based formats; and it reports any error with the line number within the block.</t>
      <t>A block can reference a CDDL data definition so that the payload is checked for structure as well as well-formedness:</t>
      <artwork><![CDATA[
~~~ coap
POST /ps
Content-Format: TBD606 (application/core-pubsub+cbor)

{
  / topic-name /
  0: "living-room-sensor",
  / resource-type /
  2: "core.ps.data"
}
~~~
{: check-cddl="pubsub-topic.cddl"}
]]></artwork>
      <t>The building blocks for this validation already exist: kramdown-rfc validates JSON sourcecode blocks and has hooks for CBOR diagnostic types; the <tt>edn-abnf</tt> Ruby gem parses EDN (ABNF in <xref target="I-D.ietf-cbor-edn-literals"/>) and round-trips it to and from bytes; and the <tt>cddl</tt> Ruby gem validates CBOR against a CDDL data definition.</t>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>This notation appears in documentation, not on the wire, and it introduces no protocol behavior. It therefore adds no threat surface to the protocols whose exchanges it illustrates.</t>
      <t>Examples written in this notation are illustrative and are not normative unless the surrounding document states otherwise. A reader who copies an example into an implementation is responsible for confirming that it matches the normative text.</t>
      <t>Tooling that validates or executes example payloads processes input taken from a document under edit. Such tooling treats the payloads and any referenced CDDL data definition as untrusted input: a malformed EDN payload or a hostile data definition affects only the document build and does not reach a protocol endpoint.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. The notation refers to CoAP option names, response codes, and content-format numbers by the values registered for them elsewhere; it defines no new code points, media types, or registries.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="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>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <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="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>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="RFC9203">
          <front>
            <title>The Object Security for Constrained RESTful Environments (OSCORE) Profile of the Authentication and Authorization for Constrained Environments (ACE) Framework</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="M. Gunnarsson" initials="M." surname="Gunnarsson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework. It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9203"/>
          <seriesInfo name="DOI" value="10.17487/RFC9203"/>
        </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="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="I-D.ietf-core-comi">
          <front>
            <title>CoAP Management Interface (CORECONF)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>consultant</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document describes a network management interface for
   constrained devices and networks, called CoAP Management Interface
   (CORECONF).  The Constrained Application Protocol (CoAP) is used to
   access datastore and data node resources specified in YANG, or SMIv2
   converted to YANG.  CORECONF uses the YANG to CBOR mapping and
   converts YANG identifier strings to numeric identifiers for payload
   size reduction.  CORECONF extends the set of YANG based protocols,
   NETCONF and RESTCONF, with the capability to manage constrained
   devices and networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-21"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="2" month="July" year="2026"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-21"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-literals">
          <front>
            <title>Concise Diagnostic Notation (CDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="15" month="June" year="2026"/>
            <abstract>
              <t>   This document formalizes and consolidates the definition of the
   Concise Diagnostic Notation (CDN) of the Concise Binary Object
   Representation (CBOR), addressing implementer experience.

   Replacing CDN's previous informal descriptions, it updates RFC 8949,
   obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G.

   It also specifies registry-based extension points and uses them to
   support text representations such as of epoch-based dates/times and
   of IP addresses and prefixes.


   // (This cref will be removed by the RFC editor:) -26 is intended to
   // address the May/June 2026 Working Group Last Call comments on -25
   // and the ensuing WG discussions.  Specifically, this update: • is
   // going further with the idea to entirely replace the non- backwards
   // compatible update considered for the RFC 8610/G.4 concatenation by
   // two new application extensions (temporarily named b1/t1), and to
   // add related application-oriented extensions that deprecate the
   // original streamstring syntax. • includes the float'' application-
   // extension so that the entire CBOR format can be covered. • now
   // uses rules closer to those of markdown for handling data
   // transparency in raw strings, simplifying their implementation. •
   // adds security considerations. • proactively reserves the
   // application-extension identifier "pragma" for potential future
   // standardization. • This update does not address certain comments
   // that propose some editorial restructuring requiring moving text
   // around; this is best done in a next revision after the technical
   // comments are addressed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-26"/>
        </reference>
        <reference anchor="RFC7967">
          <front>
            <title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
            <author fullname="A. Bhattacharyya" initials="A." surname="Bhattacharyya"/>
            <author fullname="S. Bandyopadhyay" initials="S." surname="Bandyopadhyay"/>
            <author fullname="A. Pal" initials="A." surname="Pal"/>
            <author fullname="T. Bose" initials="T." surname="Bose"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant. This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient. However, the request/response semantics still require the server to respond with a status code indicating "the result of the attempt to understand and satisfy the request", per RFC 7252.</t>
              <t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes. The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request. This option may be effective for both unicast and multicast requests. This document also discusses a few examples of applications that benefit from this option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7967"/>
          <seriesInfo name="DOI" value="10.17487/RFC7967"/>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
      </references>
    </references>
    <?line 441?>

<section anchor="survey">
      <name>Survey of Existing Notation Variants</name>
      <t>The notation in this document distills the conventions found in published RFCs and active drafts. This appendix records those source notations. Each is shown with a representative exchange and a one-line characterization.</t>
      <t>Variant 1, from <xref target="RFC7252"/>, embeds message sequence charts with message-layer detail:</t>
      <figure anchor="fig-v1">
        <name>Variant 1 (RFC 7252): message sequence chart with transport detail</name>
        <artwork><![CDATA[
Header: GET (T=CON, Code=0.01, MID=0x7d34)
Token: 0x20
Uri-Path: "temperature"

Header: 2.05 Content (T=ACK, Code=2.05, MID=0x7d34)
Token: 0x20
Payload: "22.3 C"
]]></artwork>
      </figure>
      <t>Variant 2, from <xref target="RFC7641"/>, shows the CoAP header as raw hexadecimal within numbered sequence diagrams:</t>
      <figure anchor="fig-v2">
        <name>Variant 2 (RFC 7641): compact hex header</name>
        <artwork><![CDATA[
Header: GET 0x41011633
Token: 0x4a
Uri-Path: temperature
Observe: 0 (register)

Header: 2.05 0x61451633
Token: 0x4a
Observe: 9
Max-Age: 15
Payload: "18.5 Cel"
]]></artwork>
      </figure>
      <t>Variant 3, from <xref target="RFC9176"/>, uses <tt>Req:</tt>/<tt>Res:</tt> labels with the full URI on the first line:</t>
      <figure anchor="fig-v3">
        <name>Variant 3 (RFC 9176): Req/Res shorthand</name>
        <artwork><![CDATA[
Req: POST coap://rd.example.com/rd?ep=node1
Content-Format: 40
Payload: </sensors/temp>;rt=temperature-c;if=sensor

Res: 2.01 Created
Location-Path: /rd/4521
]]></artwork>
      </figure>
      <t>Variant 4, from <xref target="RFC8132"/>, places the method and URI on the first line and lets the payload follow directly, with no explicit marker:</t>
      <figure anchor="fig-v4">
        <name>Variant 4 (RFC 8132): method + URI, payload follows</name>
        <artwork><![CDATA[
FETCH CoAP://www.example.com/object
Content-Format: NNN (application/example-map-keys+json)
Accept: application/json

[ "foo" ]

2.05 Content
Content-Format: 50 (application/json)

{ "foo": ["bar","baz"] }
]]></artwork>
      </figure>
      <t>Variant 5, from <xref target="RFC9203"/>, prefixes each message with <tt>Header:</tt> and each body with <tt>Payload:</tt>, and carries CBOR in diagnostic notation:</t>
      <figure anchor="fig-v5">
        <name>Variant 5 (RFC 9203): Header/Payload with CBOR diagnostic</name>
        <artwork><![CDATA[
Header: POST (Code=0.02)
Uri-Host: "as.example.com"
Uri-Path: "token"
Content-Format: application/ace+cbor
Payload:

{
  / audience /
  5 : "tempSensor4711",
  / scope /
  9 : "read"
}
]]></artwork>
      </figure>
      <t>Variant 6, from CORECONF <xref target="I-D.ietf-core-comi"/>, uses <tt>REQ:</tt>/<tt>RES:</tt> labels, an angle-bracketed path, and a parenthetical Content-Format:</t>
      <figure anchor="fig-v6">
        <name>Variant 6 (CORECONF): REQ/RES with angle-bracket path</name>
        <artwork><![CDATA[
REQ: FETCH </c>
(Content-Format: application/yang-identifiers+cbor-seq)

1723, / current-datetime (SID 1723) /
[1533, "eth0"] / interface (SID 1533) with name = "eth0" /

RES: 2.05 Content
(Content-Format: application/yang-instances+cbor-seq)

{ 1723 : "2014-10-26T12:16:31Z" }
]]></artwork>
      </figure>
      <t>Variant 7, from the CoAP publish-subscribe work, follows the Variant 5 form with a path-only target and annotates the payload line with a format hint:</t>
      <figure anchor="fig-v7">
        <name>Variant 7 (CoAP pub-sub): 9203-style with path-only URI</name>
        <artwork><![CDATA[
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"
}

Header: Created (Code=2.01)
Location-Path: "ps"
Location-Path: "h9392"
Content-Format: TBD606 (application/core-pubsub+cbor)
Payload (in CBOR diagnostic notation):

{
  / topic-name /
  0: "living-room-sensor",
  / topic-data /
  1: "/ps/data/1bd0d6d",
  / resource-type /
  2: "core.ps.data"
}
]]></artwork>
      </figure>
      <t><xref target="tab-variants"/> compares the variants.</t>
      <table anchor="tab-variants">
        <name>Comparison of existing CoAP notation variants</name>
        <thead>
          <tr>
            <th align="left">Variant</th>
            <th align="left">First line</th>
            <th align="left">URI style</th>
            <th align="left">Payload marker</th>
            <th align="left">Payload format</th>
            <th align="left">Transport detail</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1 (7252)</td>
            <td align="left">
              <tt>Header: GET (T=CON, Code=0.01, MID=...)</tt></td>
            <td align="left">Split options</td>
            <td align="left">
              <tt>Payload:</tt> inline</td>
            <td align="left">Plain text</td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">2 (7641)</td>
            <td align="left">
              <tt>Header: GET 0x...</tt></td>
            <td align="left">Uri-Path option</td>
            <td align="left">
              <tt>Payload:</tt> inline</td>
            <td align="left">Plain text</td>
            <td align="left">Yes (hex)</td>
          </tr>
          <tr>
            <td align="left">3 (9176)</td>
            <td align="left">
              <tt>Req: POST coap://host/path</tt></td>
            <td align="left">Full URI</td>
            <td align="left">
              <tt>Payload:</tt></td>
            <td align="left">Link-format</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">4 (8132)</td>
            <td align="left">
              <tt>FETCH CoAP://host/path</tt></td>
            <td align="left">Full URI</td>
            <td align="left">None (follows)</td>
            <td align="left">JSON</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">5 (9203)</td>
            <td align="left">
              <tt>Header: POST (Code=0.02)</tt></td>
            <td align="left">Split options</td>
            <td align="left">
              <tt>Payload:</tt></td>
            <td align="left">CBOR diagnostic</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">6 (COMI)</td>
            <td align="left">
              <tt>REQ: FETCH &lt;/path&gt;</tt></td>
            <td align="left">Path in <tt>&lt;&gt;</tt></td>
            <td align="left">None (follows)</td>
            <td align="left">CBOR diagnostic</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">7 (pubsub)</td>
            <td align="left">
              <tt>Header: POST (Code=0.02)</tt></td>
            <td align="left">Split options</td>
            <td align="left">
              <tt>Payload (...):</tt></td>
            <td align="left">CBOR diagnostic</td>
            <td align="left">No</td>
          </tr>
        </tbody>
      </table>
      <t>Three observations follow from the survey. Variants 5, 6, and 7 all carry CBOR diagnostic payloads but frame the surrounding message differently. Variants 3 and 4 are the closest to HTTP message syntax, while Variants 5 and 7 are the most structured and the most amenable to mechanical parsing. Only Variants 1 and 2 include message-layer information; the remaining variants describe the application layer alone.</t>
      <t><cref anchor="todo1">TODO: Look at RFC 8323 and signaling codes (7.xx).</cref></t>
    </section>
    <section anchor="requirements">
      <name>Design Elements for a Unified Notation</name>
      <t>The survey yields five design elements, which the notation in the body satisfies:</t>
      <ol spacing="normal" type="1"><li>
          <t>A first line that identifies the method for a request or the response code for a response, optionally with the URI.</t>
        </li>
        <li>
          <t>Option lines as <tt>Name: value</tt> pairs.</t>
        </li>
        <li>
          <t>An explicit separator between options and payload.</t>
        </li>
        <li>
          <t>A declared payload format, as a Content-Format value or annotation, so that a tool can validate the payload.</t>
        </li>
        <li>
          <t>A payload in the text notation appropriate to that format: CBOR EDN, JSON, link-format, or a hexadecimal dump.</t>
        </li>
      </ol>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This notation distills conventions from <xref target="RFC7252"/>, <xref target="RFC7641"/>, <xref target="RFC8132"/>, <xref target="RFC9176"/>, <xref target="RFC9203"/>, and CORECONF, and from discussion in the CoRE Working Group.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ZdU4WwAA

-->

</rfc>
