<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jimenez-core-coap-diag-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="CoAP Diag">CoAP Diagnostic Message Notation</title>
    <seriesInfo name="Internet-Draft" value="draft-jimenez-core-coap-diag-01"/>
    <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="November" day="02"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 55?>

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

<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"/>. Blank space and comments between the hex digits are permitted by <xref target="I-D.ietf-cbor-edn-literals"/>, so the dump can be grouped into fields and annotated.</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="representations">
        <name>Payload Representations</name>
        <t>The text notation given in <xref target="payload"/> is the default representation of a payload, and in the common case it is the only one shown. An example departs from this in two situations. In the first, the octets on the wire are the point of the example, for instance in a document that defines an encoding, and the reader needs them next to the readable form. In the second, the content format has no text notation that a tool can parse but does have a human-readable rendering. DNS over CoAP <xref target="RFC9953"/> meets both: its request examples show a DNS message as a hexadecimal dump and in the presentation style of DNS tooling, and its response examples show the latter alone.</t>
        <t>A representation other than the default is introduced by a representation marker, a line of the form <tt>Payload (form):</tt> placed where that representation begins. The default representation, when shown, comes first and carries no marker. Two forms are defined:</t>
        <dl newline="true">
          <dt><tt>hex</tt>:</dt>
          <dd>
            <t>The octets of the payload, written as an EDN byte string in <tt>h'...'</tt> notation. For a CBOR-based format this is the encoding of the EDN shown as the default representation.</t>
          </dd>
          <dt><tt>text</tt>:</dt>
          <dd>
            <t>A human-readable rendering of the payload in a form established for the content format, such as the DNS presentation style in <xref target="fig-doc"/>. A <tt>text</tt> representation is for the reader; tooling does not parse it.</t>
          </dd>
        </dl>
        <t>A blank line separates a marked representation from the one before it. <xref target="fig-doc"/> shows a request with the default and the <tt>text</tt> representation, and a response with the <tt>text</tt> representation alone.</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

payload = default-repr *(blank-line marked-repr)
        / marked-repr *(blank-line marked-repr)
marked-repr = repr-marker repr
repr-marker = %s"Payload (" form "):" newline
form = %s"hex" / %s"text"

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 payload extends to the blank line that precedes the next start line or label, so a payload may itself contain blank lines, as the DNS presentation style in <xref target="fig-doc"/> does. A line that is not an option line and precedes a start line is a label. The representation forms <tt>default-repr</tt> and <tt>repr</tt> (<xref target="representations"/>) are written in the notation of the content format and are not constrained by this grammar. 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; the two DNS examples resolve a single name, <tt>example.org</tt>.</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>A DNS query over CoAP <xref target="RFC9953"/> for the AAAA record of <tt>example.org</tt>. The <tt>application/dns-message</tt> payload is binary, so its default representation is a hexadecimal dump. The request adds the <tt>text</tt> representation (<xref target="representations"/>) and the response shows only that representation, as the examples in <xref target="RFC9953"/> do:</t>
      <figure anchor="fig-doc">
        <name>DNS over CoAP query with two payload representations</name>
        <sourcecode type="coap"><![CDATA[
FETCH coaps://[2001:db8::1]/
Content-Format: 553 (application/dns-message)
Accept: 553 (application/dns-message)

h'0000 0100 0001 0000 0000 0000    / header: ID 0, RD, QDCOUNT 1 /
  07 6578616d706c65 03 6f7267 00   / example.org. /
  001c 0001'                       / AAAA, IN /

Payload (text):
;; ->>Header<<- opcode: QUERY, status: NOERROR, id: 0
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.org.             IN      AAAA

2.05 Content
Content-Format: 553 (application/dns-message)
Max-Age: 58719

Payload (text):
;; ->>Header<<- opcode: QUERY, status: NOERROR, id: 0
;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.org.                 IN      AAAA
;; ANSWER SECTION:
;example.org.         79689   IN      AAAA    2001:db8:1:0:1:2:3:4
]]></sourcecode>
      </figure>
      <t>The same query in the <tt>application/dns+cbor</tt> format of <xref target="I-D.lenders-dns-cbor"/>. The payload is CBOR and is therefore written in EDN, with no second representation needed. Constants such as the record type are written with the <tt>e''</tt> application extension of <xref target="I-D.ietf-cbor-edn-e-ref"/>, as <xref target="I-D.lenders-dns-cbor"/> does; in the response the name, type, and class are elided because they follow from the question:</t>
      <figure anchor="fig-dns-cbor">
        <name>The same query in application/dns+cbor</name>
        <sourcecode type="coap"><![CDATA[
FETCH coaps://[2001:db8::1]/
Content-Format: TBD53 (application/dns+cbor)
Accept: TBD53 (application/dns+cbor)

[["example", "org", e'RR-AAAA']]

2.05 Content
Content-Format: TBD53 (application/dns+cbor)
Max-Age: 58719

[[79689, ip'2001:db8:1:0:1:2:3:4']]
]]></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>Representation markers (<xref target="representations"/>) steer the same dispatch. The default representation is validated as above. A <tt>hex</tt> representation is parsed as an EDN byte string; where the tool has a decoder for the content format, it decodes the octets, and where the block also shows the default representation of a CBOR-based format, it checks that the EDN encodes to the same octets. A <tt>text</tt> representation is skipped. EDN application extensions in a payload, such as the <tt>e''</tt> constants of <xref target="fig-dns-cbor"/>, require their definitions to be available to the tool in the same way a CDDL data definition is.</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="RFC9953">
          <front>
            <title>DNS over CoAP (DoC)</title>
            <author fullname="M. S. Lenders" initials="M. S." surname="Lenders"/>
            <author fullname="C. Amsüss" initials="C." surname="Amsüss"/>
            <author fullname="C. Gündoğan" initials="C." surname="Gündoğan"/>
            <author fullname="T. C. Schmidt" initials="T. C." surname="Schmidt"/>
            <author fullname="M. Wählisch" initials="M." surname="Wählisch"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document defines a protocol for exchanging DNS queries (OPCODE 0) over the Constrained Application Protocol (CoAP). These CoAP messages can be protected by (D)TLS-Secured CoAP or Object Security for Constrained RESTful Environments (OSCORE) to provide encrypted DNS message exchange for constrained devices in the Internet of Things (IoT).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9953"/>
          <seriesInfo name="DOI" value="10.17487/RFC9953"/>
        </reference>
        <reference anchor="I-D.lenders-dns-cbor">
          <front>
            <title>A Concise Binary Object Representation (CBOR) of DNS Messages</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Mikolai Gütschow" initials="M." surname="Gütschow">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   This document specifies a compact data format for DNS messages using
   the Concise Binary Object Representation [RFC8949].  The primary
   purpose is to keep DNS messages small in constrained networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lenders-dns-cbor-19"/>
        </reference>
        <reference anchor="I-D.ietf-cbor-edn-e-ref">
          <front>
            <title>External References to Values in CBOR Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR, RFC 8949) 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.

   CBOR diagnostic notation (EDN) is widely used to represent CBOR data
   items in a way that is accessible to humans, for instance for
   examples in a specification.  At the time of writing, EDN did not
   provide mechanisms for composition of such examples from multiple
   components or sources.  This document uses EDN application extensions
   to provide two such mechanisms, both of which insert an imported data
   item into the data item being described in EDN:

   The e'' application extension provides a way to import data items,
   particularly constant values, from a CDDL model (which itself has
   ways to provide composition).

   The ref'' application extension provides a way to import data items
   that are described in EDN.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-e-ref-03"/>
        </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="November" 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-22"/>
        </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="31" month="October" 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:) This revision -29
   // attempts to implement various change requests not covered in -28
   // that have been discussed in the 2026-08-19 and 2026-09-30 WG
   // interim meetings, but does not attempt to reflect the outcome of
   // those discussions.  The text also does not have WG input yet on
   // any renaming decisions (CDN name, b1/t1 name).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-29"/>
        </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 517?>

<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>Variant 8, from DNS over CoAP <xref target="RFC9953"/>, follows the Variant 4 form and labels each representation of the payload, showing a binary payload as a hexadecimal dump and in a human-readable form, with the latter alone in responses. An empty payload is marked <tt>[no payload]</tt>:</t>
      <figure anchor="fig-v8">
        <name>Variant 8 (RFC 9953): labeled payload representations</name>
        <artwork><![CDATA[
FETCH coaps://[2001:db8::1]/
Content-Format: 553 (application/dns-message)
Accept: 553 (application/dns-message)
Payload (binary):
 00 00 01 00 00 01 00 00 00 00 00 00 07 65 78 61
 6d 70 6c 65 03 6f 72 67 00 00 1c 00 01

Payload (human-readable):
 ;; ->>Header<<- opcode: QUERY, status: NOERROR, id: 0
 ;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

 ;; QUESTION SECTION:
 ;example.org.             IN      AAAA

2.05 Content
Content-Format: 553 (application/dns-message)
Max-Age: 58719
Payload (human-readable):
 ;; ->>Header<<- opcode: QUERY, status: NOERROR, id: 0
 ;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

 ;; QUESTION SECTION:
 ;example.org.                 IN      AAAA
 ;; ANSWER SECTION:
 ;example.org.         79689   IN      AAAA    2001:db8:1:0:1:2:3:4
]]></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>
          <tr>
            <td align="left">8 (9953)</td>
            <td align="left">
              <tt>FETCH coaps://host/path</tt></td>
            <td align="left">Full URI</td>
            <td align="left">
              <tt>Payload (...):</tt> per representation</td>
            <td align="left">Hex and human-readable</td>
            <td align="left">No</td>
          </tr>
        </tbody>
      </table>
      <t>Four observations follow from the survey. Variants 5, 6, and 7 all carry CBOR diagnostic payloads but frame the surrounding message differently. Variants 3, 4, and 8 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. Variant 8 is the only one to show a payload in more than one representation; <xref target="representations"/> adopts that device, with the marker reserved for a representation other than the default.</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, with a further representation marked where the octets matter or the format has a human-readable rendering.</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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

-->

</rfc>
