<?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.6.35 (Ruby 3.2.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-comi-13" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="CORECONF">CoAP Management Interface (CORECONF)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-13"/>
    <author initials="M. V." surname="Veillette" fullname="Michel Veillette" role="editor">
      <organization>Trilliant Networks Inc.</organization>
      <address>
        <postal>
          <street>610 Rue du Luxembourg</street>
          <city>Granby</city>
          <region>Quebec</region>
          <code>J2J 2V2</code>
          <country>Canada</country>
        </postal>
        <email>michel.veillette@trilliant.com</email>
      </address>
    </author>
    <author initials="P." surname="van der Stok" fullname="Peter van der Stok" role="editor">
      <organization abbrev="consultant">consultant</organization>
      <address>
        <phone>+31-492474673 (Netherlands), +33-966015248 (France)</phone>
        <email>stokcons@bbhmail.nl</email>
        <uri>www.vanderstok.org</uri>
      </address>
    </author>
    <author initials="A. P." surname="Pelov" fullname="Alexander Pelov">
      <organization>Acklio</organization>
      <address>
        <postal>
          <street>2bis rue de la Chataigneraie</street>
          <city>Cesson-Sevigne</city>
          <code>35510</code>
          <country>France</country>
        </postal>
        <email>a@ackl.io</email>
      </address>
    </author>
    <author initials="A." surname="Bierman" fullname="Andy Bierman">
      <organization>YumaWorks</organization>
      <address>
        <postal>
          <street>685 Cochran St.</street>
          <street>Suite #160</street>
          <city>Simi Valley</city>
          <region>CA</region>
          <code>93065</code>
          <country>USA</country>
        </postal>
        <email>andy@yumaworks.com</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann" role="editor">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2023" month="June" day="21"/>
    <area>Applications</area>
    <workgroup>CoRE</workgroup>
    <abstract>
      <?line 104?>

<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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://core-wg.github.io/comi/draft-ietf-core-comi.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-comi/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/comi"/>.</t>
    </note>
  </front>
  <middle>
    <?line 115?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252"/> is designed for
Machine to Machine (M2M) applications such as smart energy, smart city, and building control.
Constrained devices need to be managed in an automatic fashion to handle
the large quantities of devices that are expected in
future installations. Messages between devices need to be as small and
infrequent as possible. The implementation
complexity and runtime resources need to be as small as possible.</t>
      <t>This draft describes the CoAP Management Interface (CORECONF) which uses CoAP methods
to access structured data defined in YANG <xref target="RFC7950"/>. This draft is
complementary to <xref target="RFC8040"/> which describes a REST-like interface
called RESTCONF, which uses HTTP methods to access structured data
defined in YANG.</t>
      <t>The use of standardized data models specified in a standardized language, such
as YANG, promotes interoperability between devices and applications from
different manufacturers.</t>
      <t>CORECONF and RESTCONF are intended to work in a stateless client-server fashion.
They use a single round-trip to complete a single editing transaction, where
NETCONF needs multiple round trips.</t>
      <t>To promote small messages, CORECONF uses a YANG to CBOR mapping
<xref target="RFC9254"/> and numeric identifiers <xref target="I-D.ietf-core-sid"/>
to minimize CBOR payloads and URI length.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are defined in the YANG data modeling language <xref target="RFC7950"/>: action, anydata, anyxml, client, container, data model, data node, identity, instance identifier, leaf, leaf-list, list, module, RPC, schema node, server, submodule.</t>
        <t>The following terms are defined in <xref target="RFC6241"/>: configuration data, datastore, state data.</t>
        <t>The following term is defined in <xref target="I-D.ietf-core-sid"/>: YANG schema item identifier (YANG SID, often shortened to simply SID).</t>
        <t>The following terms are defined in the CoAP protocol <xref target="RFC7252"/>: Confirmable Message, Content-Format, Endpoint.</t>
        <t>The following terms are defined in this document:</t>
        <dl>
          <dt>data node resource:</dt>
          <dd>
            <t>a CoAP resource that models a YANG data node.</t>
          </dd>
          <dt>datastore resource:</dt>
          <dd>
            <t>a CoAP resource that models a YANG datastore.</t>
          </dd>
          <dt>event stream resource:</dt>
          <dd>
            <t>a CoAP resource used by clients to observe YANG notifications.</t>
          </dd>
          <dt>notification instance:</dt>
          <dd>
            <t>An instance of a schema node of type notification, specified in a YANG module
implemented by the server. The instance is generated in the server at the occurrence
of the corresponding event and reported by an event stream resource.</t>
          </dd>
          <dt>list instance identifier:</dt>
          <dd>
            <t>Handle used to identify a YANG data node that is an instance of a YANG "list",
specified with the values of the key leaves of the list.</t>
          </dd>
          <dt>single instance identifier:</dt>
          <dd>
            <t>Handle used to identify a specific data node which can be instantiated only
once. This includes data nodes defined at the root of a YANG module and
data nodes defined within a container. This excludes data nodes defined
within a list or any children of these data nodes.</t>
          </dd>
          <dt>instance-identifier:</dt>
          <dd>
            <t>List instance identifier or single instance identifier.</t>
          </dd>
          <dt>instance-value:</dt>
          <dd>
            <t>The value assigned to a data node instance. Instance-values are serialized into
the payload according to the rules defined in <xref section="4" sectionFormat="of" target="RFC9254"/>.</t>
          </dd>
        </dl>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="comi-architecture">
      <name>CORECONF Architecture</name>
      <t>This section describes the CORECONF architecture to use CoAP for reading and
modifying the content of datastore(s) used for the management of the instrumented
node.</t>
      <figure anchor="archit">
        <name>Abstract CORECONF architecture</name>
        <artset>
          <artwork type="svg" align="left"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="536" viewBox="0 0 536 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,112 L 8,144" fill="none" stroke="black"/>
              <path d="M 8,192 L 8,272" fill="none" stroke="black"/>
              <path d="M 80,144 L 80,184" fill="none" stroke="black"/>
              <path d="M 128,192 L 128,272" fill="none" stroke="black"/>
              <path d="M 256,64 L 256,104" fill="none" stroke="black"/>
              <path d="M 320,192 L 320,368" fill="none" stroke="black"/>
              <path d="M 336,256 L 336,288" fill="none" stroke="black"/>
              <path d="M 336,320 L 336,352" fill="none" stroke="black"/>
              <path d="M 440,144 L 440,184" fill="none" stroke="black"/>
              <path d="M 512,256 L 512,288" fill="none" stroke="black"/>
              <path d="M 512,320 L 512,352" fill="none" stroke="black"/>
              <path d="M 528,32 L 528,64" fill="none" stroke="black"/>
              <path d="M 528,112 L 528,144" fill="none" stroke="black"/>
              <path d="M 528,192 L 528,368" fill="none" stroke="black"/>
              <path d="M 8,32 L 528,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 528,64" fill="none" stroke="black"/>
              <path d="M 8,112 L 528,112" fill="none" stroke="black"/>
              <path d="M 8,144 L 528,144" fill="none" stroke="black"/>
              <path d="M 8,192 L 128,192" fill="none" stroke="black"/>
              <path d="M 320,192 L 528,192" fill="none" stroke="black"/>
              <path d="M 128,208 L 152,208" fill="none" stroke="black"/>
              <path d="M 296,208 L 312,208" fill="none" stroke="black"/>
              <path d="M 136,224 L 152,224" fill="none" stroke="black"/>
              <path d="M 296,224 L 320,224" fill="none" stroke="black"/>
              <path d="M 136,254 L 168,254" fill="none" stroke="black"/>
              <path d="M 136,258 L 168,258" fill="none" stroke="black"/>
              <path d="M 288,254 L 312,254" fill="none" stroke="black"/>
              <path d="M 288,258 L 312,258" fill="none" stroke="black"/>
              <path d="M 336,256 L 512,256" fill="none" stroke="black"/>
              <path d="M 8,272 L 128,272" fill="none" stroke="black"/>
              <path d="M 336,288 L 512,288" fill="none" stroke="black"/>
              <path d="M 336,320 L 512,320" fill="none" stroke="black"/>
              <path d="M 336,352 L 512,352" fill="none" stroke="black"/>
              <path d="M 320,368 L 528,368" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="448,184 436,178.4 436,189.6 " fill="black" transform="rotate(90,440,184)"/>
              <polygon class="arrowhead" points="320,256 308,250.4 308,261.6 " fill="black" transform="rotate(0,312,256)"/>
              <polygon class="arrowhead" points="320,208 308,202.4 308,213.6 " fill="black" transform="rotate(0,312,208)"/>
              <polygon class="arrowhead" points="304,224 292,218.4 292,229.6 " fill="black" transform="rotate(180,296,224)"/>
              <polygon class="arrowhead" points="264,104 252,98.4 252,109.6 " fill="black" transform="rotate(90,256,104)"/>
              <polygon class="arrowhead" points="160,208 148,202.4 148,213.6 " fill="black" transform="rotate(0,152,208)"/>
              <polygon class="arrowhead" points="144,256 132,250.4 132,261.6 " fill="black" transform="rotate(180,136,256)"/>
              <polygon class="arrowhead" points="144,224 132,218.4 132,229.6 " fill="black" transform="rotate(180,136,224)"/>
              <polygon class="arrowhead" points="88,184 76,178.4 76,189.6 " fill="black" transform="rotate(90,80,184)"/>
              <g class="text">
                <text x="160" y="52">SMIv2</text>
                <text x="240" y="52">specification</text>
                <text x="340" y="52">(optional)</text>
                <text x="400" y="52">(2)</text>
                <text x="196" y="132">YANG</text>
                <text x="272" y="132">specification</text>
                <text x="352" y="132">(1)</text>
                <text x="36" y="180">Client</text>
                <text x="348" y="180">Server</text>
                <text x="88" y="212">Request</text>
                <text x="180" y="212">CoAP</text>
                <text x="244" y="212">request(3)</text>
                <text x="380" y="212">Indication</text>
                <text x="88" y="228">Confirm</text>
                <text x="180" y="228">CoAP</text>
                <text x="248" y="228">response(3)</text>
                <text x="372" y="228">Response</text>
                <text x="488" y="228">(4)</text>
                <text x="212" y="260">Security</text>
                <text x="264" y="260">(7)</text>
                <text x="396" y="276">Datastore(s)</text>
                <text x="488" y="276">(5)</text>
                <text x="368" y="340">Event</text>
                <text x="432" y="340">stream(s)</text>
                <text x="488" y="340">(6)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="left"><![CDATA[
+----------------------------------------------------------------+
|                SMIv2 specification (optional) (2)              |
+------------------------------+---------------------------------+
                               |
                               v
+----------------------------------------------------------------+
|                     YANG specification  (1)                    |
+--------+--------------------------------------------+----------+
         |                                            |
 Client  v                              Server        v
+--------------+                       +-------------------------+
|      Request +--> CoAP request(3) -->|  Indication             |
|      Confirm |<-- CoAP response(3)<--+  Response         (4)   |
|              |                       |                         |
|              |<==== Security (7) ===>| +---------------------+ |
+--------------+                       | | Datastore(s)    (5) | |
                                       | +---------------------+ |
                                       |                         |
                                       | +---------------------+ |
                                       | | Event stream(s) (6) | |
                                       | +---------------------+ |
                                       +-------------------------+
]]></artwork>
        </artset>
      </figure>
      <t><xref target="archit"/> is a high-level representation of the main elements of the CORECONF management
architecture. The different numbered components of <xref target="archit"/> are discussed according to the component number.</t>
      <dl>
        <dt>(1) YANG specification:</dt>
        <dd>
          <t>contains a set of named and versioned modules.</t>
        </dd>
        <dt>(2) SMIv2 specification:</dt>
        <dd>
          <t>Optional part that consists of a named module which, specifies a set of variables and "conceptual tables". There
is an algorithm to translate SMIv2 specifications to YANG specifications.</t>
        </dd>
        <dt>(3) CoAP request/response messages:</dt>
        <dd>
          <t>The CORECONF client sends request messages to and receives response messages
from the CORECONF server.</t>
        </dd>
        <dt>(4) Request, Indication, Response, Confirm:</dt>
        <dd>
          <t>Processes performed by the CORECONF clients and servers.</t>
        </dd>
        <dt>(5) Datastore:</dt>
        <dd>
          <t>A resource used to access configuration data, state data, RPCs, and actions. A CORECONF server may support a single unified datastore or multiple datastores as those defined by Network Management Datastore Architecture (NMDA) <xref target="RFC8342"/>.</t>
        </dd>
        <dt>(6) Event stream:</dt>
        <dd>
          <t>A resource used to get real-time notifications. A CORECONF server may support multiple Event streams serving different purposes such as normal monitoring, diagnostic, syslog, security monitoring.</t>
        </dd>
        <dt>(7) Security:</dt>
        <dd>
          <t>The server <bcp14>MUST</bcp14> prevent unauthorized users from reading or writing any CORECONF
resources. CORECONF relies on security protocols such as DTLS <xref target="RFC6347"/><xref target="RFC9147"/> or OSCORE <xref target="RFC8613"/> to secure CoAP communications.</t>
        </dd>
      </dl>
      <section anchor="major-differences">
        <name>Major differences between RESTCONF and CORECONF</name>
        <t>CORECONF is a RESTful protocol for small devices where saving bytes to
transport a message is very important. Contrary to RESTCONF, many design
decisions are motivated by the
saving of bytes. Consequently, CORECONF is not a RESTCONF over CoAP protocol,
but differs more significantly from RESTCONF.</t>
        <section anchor="major-differences-coap">
          <name>Differences due to CoAP and its efficient usage</name>
          <ul spacing="normal">
            <li>CORECONF uses CoAP/UDP as transport protocol and CBOR as payload format
<xref target="RFC9254"/>. RESTCONF uses HTTP/TCP as transport
protocol and JSON or XML as payload formats.</li>
            <li>CORECONF uses the methods FETCH and iPATCH to access data nodes.
RESTCONF uses instead the HTTP method PATCH and the HTTP method GET with the "fields" Query parameter.</li>
            <li>RESTCONF uses the HTTP methods HEAD, and OPTIONS, which are not supported by CoAP.</li>
            <li>CORECONF does not support "insert" query parameter (first, last, before, after)
and the "point" query parameter which are supported by RESTCONF.</li>
            <li>CORECONF does not support the "start-time" and "stop-time" query parameters
to retrieve past notifications.</li>
          </ul>
        </section>
        <section anchor="major-differences-cbor">
          <name>Differences due to the use of CBOR</name>
          <ul spacing="normal">
            <li>CORECONF encodes YANG identifier strings as numbers, where RESTCONF does not.</li>
            <li>CORECONF also differs in the handling of default values, only 'report-all' and 'trim' options are supported.</li>
          </ul>
        </section>
      </section>
      <section anchor="id-compression">
        <name>Compression of YANG identifiers</name>
        <t>In the YANG specification, items are identified with a name string. In order
to significantly reduce the size of identifiers used in CORECONF, numeric
 identifiers called YANG Schema Item iDentifier (YANG SID or simply SID) are used instead.</t>
      </section>
      <section anchor="instance-identifier">
        <name>Instance-identifier</name>
        <t>Instance-identifiers are used to uniquely identify data node instances within a datastore. This YANG built-in type is defined in <xref section="9.13" sectionFormat="of" target="RFC7950"/>. An instance-identifier is composed of the data node identifier (i.e. a SID) and, for data nodes within list(s), the keys used to index within these list(s).</t>
        <t>In CORECONF, instance-identifiers are carried in the payload of FETCH
and PATCH requests.
They are encoded in CBOR
based on the rules defined in <xref section="6.13.1" sectionFormat="of" target="RFC9254"/>.</t>
      </section>
      <section anchor="media-type">
        <name>Media-Types</name>
        <t>CORECONF uses Media-Types based on the YANG to CBOR mapping specified
in <xref target="RFC9254"/>.</t>
        <t>The following new Media-Types based on CBOR sequences <xref target="RFC8742"/> are defined in this document:</t>
        <dl>
          <dt>application/yang-identifiers+cbor:</dt>
          <dd>
            <t>This Media-Type represents a CBOR YANG document containing a list of instance-identifiers used to target specific data node instances within a datastore.</t>
          </dd>
          <dt/>
          <dd>
            <t>FORMAT: CBOR sequence of instance-identifiers</t>
          </dd>
          <dt/>
          <dd>
            <t>The message payload of Media-Type 'application/yang-identifiers+cbor' is encoded using a CBOR sequence.
Each item of this CBOR sequence contains an instance-identifier encoded as defined in <xref section="6.13.1" sectionFormat="of" target="RFC9254"/>.</t>
          </dd>
          <dt>application/yang-instances+cbor:</dt>
          <dd>
            <t>This Media-Type represents a CBOR YANG document containing a list of data node instances.
Each data node instance is identified by its associated instance-identifier.</t>
          </dd>
          <dt/>
          <dd>
            <t>FORMAT: CBOR sequence of CBOR maps of instance-identifier, instance-value</t>
          </dd>
          <dt/>
          <dd>
            <t>The message payload of Media-Type 'application/yang-instances+cbor' is encoded using a CBOR sequence.
Each item within this CBOR sequence contains a CBOR map carrying an instance-identifier and associated instance-value.
Instance-identifiers are encoded using the rules defined in <xref section="6.13.1" sectionFormat="of" target="RFC9254"/>, instance-values are encoded using the rules defined in <xref section="4" sectionFormat="of" target="RFC9254"/>.</t>
          </dd>
          <dt/>
          <dd>
            <t>When present in an iPATCH request payload, this Media-Type carry a list of data node instances to be replaced, created, or deleted.
For each data node instance D, for which the instance-identifier is the same as a data node instance I, in the targeted datastore resource: the value of D replaces the value of I.  When the value of D is null, the data node instance I is removed.  When the targeted datastore resource does not contain a data node instance with the same instance-identifier as D, a new instance is created with the same instance-identifier and value as D (unless the value of D is null).</t>
          </dd>
        </dl>
        <t>The different Media-Type usages are summarized in the table below:</t>
        <table align="left">
          <thead>
            <tr>
              <th align="left">Method</th>
              <th align="left">Resource</th>
              <th align="left">Media-Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">FETCH request</td>
              <td align="left">datastore</td>
              <td align="left">application/yang-identifiers+cbor</td>
            </tr>
            <tr>
              <td align="left">FETCH response</td>
              <td align="left">datastore</td>
              <td align="left">application/yang-instances+cbor</td>
            </tr>
            <tr>
              <td align="left">iPATCH request</td>
              <td align="left">datastore</td>
              <td align="left">application/yang-instances+cbor</td>
            </tr>
            <tr>
              <td align="left">GET response</td>
              <td align="left">event stream</td>
              <td align="left">application/yang-instances+cbor</td>
            </tr>
            <tr>
              <td align="left">POST request</td>
              <td align="left">rpc, action</td>
              <td align="left">application/yang-instances+cbor</td>
            </tr>
            <tr>
              <td align="left">POST response</td>
              <td align="left">rpc, action</td>
              <td align="left">application/yang-instances+cbor</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="unified-datastore">
        <name>Unified datastore</name>
        <t>CORECONF supports a simple datastore model consisting of a single unified datastore. This datastore provides access to both configuration and operational data. Configuration updates performed on this datastore are reflected immediately or with a minimal delay as operational data.</t>
        <t>Alternatively, CORECONF servers <bcp14>MAY</bcp14> implement a more complex datastore model such as the Network Management Datastore Architecture (NMDA) as defined by <xref target="RFC8342"/>. Each datastore supported is implemented as a datastore resource.</t>
        <t>Characteristics of the unified datastore are summarized in the table below:</t>
        <table align="left">
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Name</td>
              <td align="left">unified</td>
            </tr>
            <tr>
              <td align="left">YANG modules</td>
              <td align="left">all modules</td>
            </tr>
            <tr>
              <td align="left">YANG nodes</td>
              <td align="left">all data nodes ("config true" and "config false")</td>
            </tr>
            <tr>
              <td align="left">Access</td>
              <td align="left">read-write</td>
            </tr>
            <tr>
              <td align="left">How applied</td>
              <td align="left">changes applied in place immediately or with a minimal delay</td>
            </tr>
            <tr>
              <td align="left">Protocols</td>
              <td align="left">CORECONF</td>
            </tr>
            <tr>
              <td align="left">Defined in</td>
              <td align="left">"ietf-coreconf"</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="example-syntax">
      <name>Example syntax</name>
      <t>CBOR is used to encode CORECONF request and response payloads. The CBOR syntax
of the YANG payloads is specified in <xref target="RFC9254"/>, based on <xref target="RFC8949"/>
and <xref target="RFC8742"/>.
The payload examples are
notated in Diagnostic notation (defined in <xref section="8" sectionFormat="of" target="RFC8949"/>) that
can be automatically converted to CBOR.</t>
    </section>
    <section anchor="coap-interface">
      <name>CoAP Interface</name>
      <t>This document specifies a Management Interface. CoAP endpoints that
implement the CORECONF management protocol, support
at least one discoverable management resource of resource type (rt): core.c.ds.
The path of the discoverable management resource is left to implementers to
select (see <xref target="discovery"/>).</t>
      <t>YANG data node instances are accessible by performing FETCH and iPATCH
operations on the datastore resource.</t>
      <t>CORECONF also supports event stream resources used to observe notification instances.
Event stream resources can be discovered using resource type (rt): core.c.ev.</t>
      <t>The description of the CORECONF management interface is shown in the table below:</t>
      <table align="left" anchor="tbl-resources">
        <name>Resources, example paths, and resource types (rt)</name>
        <thead>
          <tr>
            <th align="left">CoAP resource</th>
            <th align="left">Example path</th>
            <th align="left">rt</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Datastore resource</td>
            <td align="left">/c</td>
            <td align="left">core.c.ds</td>
          </tr>
          <tr>
            <td align="left">Default event stream resource</td>
            <td align="left">/s</td>
            <td align="left">core.c.ev</td>
          </tr>
        </tbody>
      </table>
      <t>The path values in the table are example ones. On discovery, the server makes
the actual path values known for these resources.</t>
      <t>The methods used by CORECONF are:</t>
      <table align="left" anchor="tbl-methods">
        <name>CoAP Methods in CORECONF</name>
        <thead>
          <tr>
            <th align="left">Operation</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">FETCH</td>
            <td align="left">Retrieve specific data nodes within a datastore resource</td>
          </tr>
          <tr>
            <td align="left">iPATCH</td>
            <td align="left">Idempotently create, replace, and delete data node(s) within a datastore resource</td>
          </tr>
          <tr>
            <td align="left">POST</td>
            <td align="left">Invoke an RPC or action</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">Retrieve the datastore resource or event stream resource</td>
          </tr>
          <tr>
            <td align="left">PUT</td>
            <td align="left">Create or replace a datastore resource</td>
          </tr>
          <tr>
            <td align="left">DELETE</td>
            <td align="left">Delete a datastore resource</td>
          </tr>
        </tbody>
      </table>
      <section anchor="data-retrieval">
        <name>Data Retrieval</name>
        <t>One or more data nodes can be retrieved by the client.
The operation is mapped to the FETCH method defined in <xref section="2" sectionFormat="of" target="RFC8132"/>.</t>
        <t>There are two additional query parameters for the FETCH method:</t>
        <table align="left" anchor="tbl-query-fetch">
          <thead>
            <tr>
              <th align="left">query parameters</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">c</td>
              <td align="left">Control selection of configuration and non-configuration data nodes (GET and FETCH)</td>
            </tr>
            <tr>
              <td align="left">d</td>
              <td align="left">Control retrieval of default values.</td>
            </tr>
          </tbody>
        </table>
        <section anchor="content">
          <name>Using the 'c' query parameter</name>
          <t>The 'c' (content) option controls how descendant nodes of the
requested data nodes will be processed in the reply.</t>
          <t>The allowed values are:</t>
          <table align="left" anchor="tbl-c-values">
            <name>Values for the 'c' query parameter</name>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">c</td>
                <td align="left">Return only configuration descendant data nodes</td>
              </tr>
              <tr>
                <td align="left">n</td>
                <td align="left">Return only non-configuration descendant data nodes</td>
              </tr>
              <tr>
                <td align="left">a</td>
                <td align="left">Return all descendant data nodes</td>
              </tr>
            </tbody>
          </table>
          <t>This option is only allowed for GET and FETCH methods on datastore and
data node resources.  A 4.02 (Bad Option) error is returned if used for other
methods or resource types.</t>
          <t>If this query parameter is not present, the default value is "a" (the quotes
are added for readability, but they are not part of the payload).</t>
        </section>
        <section anchor="dquery">
          <name>Using the 'd' query parameter</name>
          <t>The 'd' (with-defaults) option controls how the default values of the
descendant nodes of the requested data nodes will be processed.</t>
          <t>The allowed values are:</t>
          <table align="left" anchor="tbl-d-values">
            <name>Values for the 'd' query parameter</name>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">a</td>
                <td align="left">All data nodes are reported. Defined as 'report-all' in <xref section="3.1" sectionFormat="of" target="RFC6243"/>.</td>
              </tr>
              <tr>
                <td align="left">t</td>
                <td align="left">Data nodes set to the YANG default are not reported. Defined as 'trim' in <xref section="3.2" sectionFormat="of" target="RFC6243"/>.</td>
              </tr>
            </tbody>
          </table>
          <t>If the target of a GET or FETCH method is a data node that represents a leaf
that has a default value, and the leaf has not been given a value by any
client yet, the server <bcp14>MUST</bcp14> return the default value of the leaf.</t>
          <t>If the target of a GET method is a data node that represents a
container or list that has child resources with default values,
and these have not been given a value yet,</t>
          <ul empty="true">
            <li>
              <t>The server <bcp14>MUST NOT</bcp14> return the child resource if <tt>d</tt>=<tt>t</tt>.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>The server <bcp14>MUST</bcp14> return the child resource if <tt>d</tt>=<tt>a</tt>.</t>
            </li>
          </ul>
          <t>If this query parameter is not present, the default value is "t" (the quotes are
added for readability, but they are not part of the payload).</t>
        </section>
        <section anchor="fetch">
          <name>FETCH</name>
          <t>The FETCH is used to retrieve one or more instance-values.
The FETCH request payload contains the list of instance-identifiers of the data node instances requested.</t>
          <t>The return response payload contains a list of data node instance-values in the same order as requested.
A CBOR null is returned for each data node requested by the client, not supported by the server or not currently instantiated.</t>
          <t>For compactness, indexes of the list instance identifiers returned by the FETCH response <bcp14>SHOULD</bcp14> be elided, only the SID is provided.
This approach may also help reduce implementation complexity since the format of each entry within the CBOR sequence of the FETCH response is identical to the format of the corresponding GET response.</t>
          <artwork><![CDATA[
FORMAT:
  FETCH <datastore resource>
        (Content-Format: application/yang-identifiers+cbor)
  CBOR sequence of instance-identifiers

  2.05 Content (Content-Format: application/yang-instances+cbor)
  CBOR sequence of CBOR maps of SID, instance-value
]]></artwork>
          <section anchor="fetch-example">
            <name>FETCH examples</name>
            <t>This example uses the current-datetime leaf from module ietf-system <xref target="RFC7317"/>
and the interface list from module ietf-interfaces <xref target="RFC8343"/>.
In this example the value of current-datetime (SID 1723) and the interface
list (SID 1533) instance identified with name="eth0" are queried.</t>
            <artwork><![CDATA[
REQ: FETCH </c>
     (Content-Format: application/yang-identifiers+cbor)
1723,            / current-datetime (SID 1723) /
[1533, "eth0"]   / interface (SID 1533) with name = "eth0" /

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

{
  1723 : "2014-10-26T12:16:31Z" / current-datetime (SID 1723) /
},
{
  1533 : {
     4 : "eth0",              / name (SID 1537) /
     1 : "Ethernet adaptor",  / description (SID 1534) /
     5 : 1880,                / type (SID 1538), identity /
                              / ethernetCsmacd (SID 1880) /
     2 : true,                / enabled (SID 1535) /
    11 : 3             / oper-status (SID 1544), value is testing /
  }
}

]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="data-editing">
        <name>Data Editing</name>
        <t>CORECONF allows datastore contents to be created, modified and deleted using
CoAP methods.</t>
        <section anchor="DataOrdering">
          <name>Data Ordering</name>
          <t>A CORECONF server <bcp14>MUST</bcp14> preserve the relative order of all user-ordered list
and leaf-list entries that are received in a single edit request.
As per <xref target="RFC9254"/>, these YANG data node types are encoded as CBOR
arrays, so messages will preserve their order.</t>
        </section>
        <section anchor="post-operation">
          <name>POST</name>
          <t>The CoAP POST operation is used in CORECONF for the
invocation of "ACTION" and "RPC" resources.
Refer to <xref target="rpc"/> for details on "ACTION" and "RPC" resources.</t>
        </section>
        <section anchor="ipatch-operation">
          <name>iPATCH</name>
          <t>One or multiple data node instances are replaced with the idempotent
CoAP iPATCH method <xref target="RFC8132"/>.</t>
          <t>There are no query parameters for the iPATCH method.</t>
          <t>The processing of the iPATCH command is specified by Media-Type 'application/yang-instances+cbor'.
In summary, if the CBOR patch payload contains a data node instance that is not present
in the target, this instance is added. If the target contains the specified instance,
the content of this instance is replaced with the value of the payload.
A null value indicates the removal of an existing data node instance.</t>
          <artwork><![CDATA[
FORMAT:
  iPATCH <datastore resource>
         (Content-Format: application/yang-instances+cbor)
  CBOR sequence of CBOR maps of instance-identifier, instance-value

  2.04 Changed
]]></artwork>
          <section anchor="ipatch-example">
            <name>iPATCH example</name>
            <t>In this example, a CORECONF client requests the following operations:</t>
            <ul spacing="normal">
              <li>Set "/ietf-system:system/ntp/enabled" (SID 1755) to true.</li>
              <li>Remove the server "tac.nrc.ca" from the "/ietf-system:system/ntp/server" (SID 1756) list.</li>
              <li>Add/set the server "NTP Pool server 2" to the list "/ietf-system:system/ntp/server" (SID 1756).</li>
            </ul>
            <artwork><![CDATA[
REQ: iPATCH </c>
     (Content-Format: application/yang-instances+cbor)
{
  1755 : true                   / enabled (SID 1755) /
},
{
  [1756, "tac.nrc.ca"] : null   / server (SID 1756) /
},
{
  1756 : {                      / server (SID 1756) /
    3 : "tic.nrc.ca",           / name (SID 1759) /
    4 : true,                   / prefer (SID 1760) /
    5 : {                       / udp (SID 1761) /
      1 : "132.246.11.231"      / address (SID 1762) /
    }
  }
}

RES: 2.04 Changed
]]></artwork>
            <t>A data node resource is deleted using an iPATCH with a null value, as seen in this example.</t>
          </section>
        </section>
      </section>
      <section anchor="datastore-access">
        <name>Full datastore access</name>
        <t>The methods GET, PUT, POST, and DELETE can be used to request, replace, create,
and delete a whole datastore respectively.</t>
        <artwork><![CDATA[
FORMAT:
  GET <datastore resource>

  2.05 Content (Content-Format: application/yang-data+cbor; id=sid)
  CBOR map of SID, instance-value
]]></artwork>
        <artwork><![CDATA[
FORMAT:
  PUT <datastore resource>
      (Content-Format: application/yang-data+cbor; id=sid)
  CBOR map of SID, instance-value

  2.04 Changed
]]></artwork>
        <artwork><![CDATA[
FORMAT:
  POST <datastore resource>
       (Content-Format: application/yang-data+cbor; id=sid)
  CBOR map of SID, instance-value

  2.01 Created
]]></artwork>
        <artwork><![CDATA[
FORMAT:
  DELETE <datastore resource>

  2.02 Deleted
]]></artwork>
        <t>The content of the CBOR map represents the complete datastore of the server
at the GET indication of after a successful processing of a PUT or POST request.</t>
        <section anchor="datastore-example">
          <name>Full datastore examples</name>
          <t>The example uses the interface list from module ietf-interfaces <xref target="RFC8343"/> and
the clock container from module ietf-system <xref target="RFC7317"/>.
We assume that the datastore contains two modules ietf-system (SID 1700) and
ietf-interfaces (SID 1500); they contain the 'interface' list (SID 1533) with
one instance and the 'clock' container (SID 1721). After invocation of GET, a
CBOR map with data nodes from these two modules is returned:</t>
          <artwork><![CDATA[
REQ:  GET </c>

RES: 2.05 Content
     (Content-Format: application/yang-data+cbor; id=sid)
{
  1721 : {                      / Clock (SID 1721) /
    2: "2016-10-26T12:16:31Z",  / current-datetime (SID 1723) /
    1: "2014-10-05T09:00:00Z"   / boot-datetime (SID 1722) /
  },
  1533 : [
    {                           / interface (SID 1533) /
       4 : "eth0",              / name (SID 1537) /
       1 : "Ethernet adaptor",  / description (SID 1534) /
       5 : 1880,                / type (SID 1538), identity: /
                                / ethernetCsmacd (SID 1880) /
       2 : true,                / enabled (SID 1535) /
      11 : 3             / oper-status (SID 1544), value is testing /
    }
  ]
}
]]></artwork>
        </section>
      </section>
      <section anchor="event-stream">
        <name>Event stream</name>
        <t>Event notification is an essential function for the management of servers.
CORECONF allows notifications specified in YANG <xref target="RFC5277"/> to be reported to a list
of clients. The path for the default event stream can be discovered as
described in <xref target="coap-interface"/>. The server <bcp14>MAY</bcp14> support additional event
stream resources to address different notification needs.</t>
        <t>Reception of notification instances is enabled with the CoAP Observe
<xref target="RFC7641"/> function. Clients subscribe to the notifications by sending a
GET request with an "Observe" option to the stream resource.</t>
        <t>Each response payload carries one or multiple notifications. The number of
notifications reported, and the conditions used to remove notifications
from the reported list are left to implementers.
When multiple notifications are reported, they <bcp14>MUST</bcp14> be ordered starting from
the newest notification at index zero. Note that this could lead to
notifications being sent multiple times, which increases the probability for
the client to receive them, but it might potentially lead to messages that
exceed the MTU of a single CoAP packet. If such cases could arise, implementers
should make sure appropriate fragmentation is available - for example the one
described in <xref target="block"/>.</t>
        <t>The format of notifications is a CBOR sequence, where each item in
the sequence is a single notification as described in <xref section="4.2.1" sectionFormat="of" target="RFC9254"/>.
(Accordingly, a notification without any content is an empty CBOR
sequence, i.e., zero bytes.)</t>
        <artwork><![CDATA[
FORMAT:
  GET <stream-resource> Observe(0)

  2.05 Content (Content-Format: application/yang-instances+cbor)
  CBOR sequence of CBOR maps of instance-identifier, instance-value
]]></artwork>
        <t>The sequence of data node instances may contain identical items which have
been generated at different times.</t>
        <t>An example implementation is:</t>
        <ul empty="true">
          <li>
            <t>Every time an event is generated, the generated notification instance is
appended to the chosen stream(s). After an aggregation period, which may be
limited by the maximum number of notifications supported,
the content of the instance is sent to all clients observing the modified stream.</t>
          </li>
        </ul>
        <section anchor="event-stream-example">
          <name>Notify Examples</name>
          <t>Let suppose the server generates the example-port-fault event as defined below.</t>
          <artwork><![CDATA[
module example-port {
  ...
  notification example-port-fault {   // SID 60010
    description
      "Event generated if a hardware fault is detected";
    leaf port-name {                  // SID 60011
      type string;
    }
    leaf port-fault {                 // SID 60012
      type string;
    }
  }
}
]]></artwork>
          <t>In this example the default event stream resource path /s is an example
location discovered with a request similar to <xref target="discovery-ex-es"/>. By executing a
GET with Observe 0 on the default event stream resource the client receives the
following response:</t>
          <artwork><![CDATA[
REQ:  GET </s> Observe(0)

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

{
  60010 : {             / example-port-fault (SID 60010) /
    1 : "0/4/21",       / port-name (SID 60011) /
    2 : "Open pin 2"    / port-fault (SID 60012) /
  }
},
{
  60010 : {             / example-port-fault (SID 60010) /
    1 : "1/4/21",       / port-name (SID 60011) /
    2 : "Open pin 5"    / port-fault (SID 60012) /
  }
}

]]></artwork>
          <t>In the example, the request returns a success response with the contents
of the last two generated events. Consecutively the server will regularly
notify the client when a new event is generated.</t>
        </section>
        <section anchor="the-f-query-parameter">
          <name>The 'f' query parameter</name>
          <t>The 'f' (filter) option is used to indicate which subset of all possible notifications is of interest.  If not present, all notifications supported by the event stream are reported.</t>
          <t>When not supported by a CORECONF server, this option shall be ignored, all events notifications are reported independently of the presence and content of the 'f' (filter) option.</t>
          <t>When present, this option contains a comma-separated list of notification SIDs. For example, the following request returns notifications 60010 and 60020.</t>
          <artwork><![CDATA[
REQ:  GET </s?f=60010,60020> Observe(0)
]]></artwork>
          <t><cref anchor="simplify1">This is one place where SIDs are used in the URI.  Do we want to replace this with FETCH as well?</cref></t>
        </section>
      </section>
      <section anchor="rpc">
        <name>RPC statements</name>
        <t>The YANG "action" and "RPC" statements specify the execution of a Remote
Procedure Call (RPC) in the server.  It is invoked using a POST method to
an "Action" or "RPC" resource instance.</t>
        <t>The request payload contains the values assigned to the input container when specified.
The response payload contains the values of the output container when specified.
Both the input and output containers are encoded in CBOR using the rules defined in
<xref section="4.2.1" sectionFormat="of" target="RFC9254"/>.</t>
        <t>The returned success response code is 2.05 Content.</t>
        <artwork><![CDATA[
FORMAT:
  POST <datastore resource>
         (Content-Format: application/yang-instances+cbor)
  CBOR sequence of CBOR maps of instance-identifier, instance-value

  2.05 (Content-Format: application/yang-instances+cbor)
  CBOR sequence of CBOR maps of instance-identifier, instance-value
]]></artwork>
        <section anchor="rpc-example">
          <name>RPC Example</name>
          <t>The example is based on the YANG action "reset" as defined in <xref section="7.15.3" sectionFormat="of" target="RFC7950"/>
and annotated below with SIDs.</t>
          <artwork><![CDATA[
module example-server-farm {
  yang-version 1.1;
  namespace "urn:example:server-farm";
  prefix "sfarm";

  import ietf-yang-types {
    prefix "yang";
  }

  list server {                        // SID 60000
    key name;
    leaf name {                        // SID 60001
      type string;
    }
    action reset {                     // SID 60002
      input {
        leaf reset-at {                // SID 60003
          type yang:date-and-time;
          mandatory true;
         }
       }
       output {
         leaf reset-finished-at {      // SID 60004
           type yang:date-and-time;
           mandatory true;
         }
       }
     }
   }
 }
]]></artwork>
          <t>This example invokes the 'reset' action  (SID 60002, base64: Opq),
of the server instance with name equal to "myserver".</t>
          <artwork><![CDATA[
REQ:  POST </c>
         (Content-Format: application/yang-instances+cbor)

[60002, "myserver"],
{
  60002 : {
    1 : "2016-02-08T14:10:08Z09:00" / reset-at (SID 60003) /
  }
}

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

[60002, "myserver"],
{
  60002 : {
    2 : "2016-02-08T14:10:08Z09:18" / reset-finished-at (SID 60004)/
  }
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="block">
      <name>Use of Block-wise Transfers</name>
      <t>The CoAP protocol provides reliability by acknowledging the UDP datagrams.
However, when large pieces of data need to be transported, datagrams get
fragmented, thus creating constraints on the resources in the client, server
and intermediate routers. The block option <xref target="RFC7959"/> allows the transport
of the total payload in individual blocks of which the
size can be adapted to the underlying transport sizes such as: (UDP datagram
size ~64KiB, IPv6 MTU of 1280, IEEE 802.15.4 payload of 60-80 bytes). Each
block is individually acknowledged to guarantee reliability.</t>
      <t>Notice that the Block mechanism splits the data at fixed positions,
such that individual data fields may become fragmented. Therefore, assembly
of multiple blocks may be required to process complete data fields.</t>
      <t>Beware of race conditions. In case blocks are filled one at a time, care should
be taken that the whole and consistent data representation is sent in multiple blocks sequentially
without interruption. On the server, values might change, lists might get re-ordered,
extended or reduced. When these actions happen during the serialization of
the contents of the resource, the transported results do not correspond with
a state having occurred in the server; or worse the returned values are inconsistent.
For example: array length does not correspond with the actual number of items.
It may be advisable to use Indefinite-length CBOR arrays and maps,
which are foreseen for data streaming purposes.
(Note that the outer structure of yang-identifiers and yang-instances
is a CBOR sequence, which already behaves similar to an
indefinite-length encoded array.)</t>
    </section>
    <section anchor="discovery">
      <name>Application Discovery</name>
      <t>Two application discovery mechanisms are supported by CORECONF, the YANG library
data model as defined by <xref target="I-D.ietf-core-yang-library"/> and
the CORE resource discovery <xref target="RFC6690"/>.
Implementers may choose to implement one or the other or both.</t>
      <section anchor="yang-library">
        <name>YANG library</name>
        <t>The YANG library data model <xref target="I-D.ietf-core-yang-library"/> provides a high-level description of the resources available. The YANG library contains the
list of modules, features, and deviations supported by the CORECONF server.
From this information, CORECONF clients can infer the list of data nodes supported
and the interaction model to be used to access them. This module also contains
the list of datastores implemented.</t>
        <t>As described in <xref target="RFC6690"/>, the location of the YANG library can be found by
sending a GET request to
"/.well-known/core" including a resource type (RT) parameter with the value
"core.c.yl". Upon success, the return payload will contain the root resource
of the YANG library module.</t>
        <t>The following example assumes that the SID of the YANG library is 2351 (<tt>kv</tt> after
encoding as specified in <xref target="id-compression"/>) and that the server uses /c as
datastore resource path.</t>
        <artwork><![CDATA[
REQ: GET </.well-known/core?rt=core.c.yl>

RES: 2.05 Content (Content-Format: application/link-format)
</c/kv>;rt="core.c.yl"
]]></artwork>
      </section>
      <section anchor="resource-discovery">
        <name>Resource Discovery</name>
        <t>As some CoAP interfaces and services might not support the YANG library
interface and still be interested to discover resources that are available,
implementations <bcp14>MAY</bcp14> choose to support discovery of all available
resources using "/.well-known/core" as defined by <xref target="RFC6690"/>.</t>
        <section anchor="datastore-resource-discovery">
          <name>Datastore Resource Discovery</name>
          <t>The presence and location of (path to) each datastore implemented by the CORECONF server
can be discovered by sending a GET request to "/.well-known/core" including a
resource type (RT) parameter with the value "core.c.ds".</t>
          <t>Upon success, the return payload contains the list of datastore resources.</t>
          <t>Each datastore returned is further qualified using the "ds" Link-Format attribute.
This attribute is set to the SID assigned to the datastore identity.
When a unified datastore is implemented, the ds attribute is set to 1029 as
specified in <xref target="ietf-coreconf-sid"/>.
For other examples of datastores, see the Network Management Datastore Architecture (NMDA) <xref target="RFC7950"/>.</t>
          <artwork><![CDATA[
link-extension    = ( "ds" "=" sid ) )
                    ; SID assigned to the datastore identity
sid               = 1*DIGIT
]]></artwork>
          <t>The following example assumes that the server uses /c as datastore resource
path.</t>
          <figure anchor="discovery-ex-ds">
            <artwork align="left"><![CDATA[
REQ: GET </.well-known/core?rt=core.c.ds>

RES: 2.05 Content (Content-Format: application/link-format)
</c>; rt="core.c.ds";ds=1029
]]></artwork>
          </figure>
        </section>
        <section anchor="data-node-resource-discovery">
          <name>Data node Resource Discovery</name>
          <t>If implemented, the presence and location of (path to) each data node
implemented by the CORECONF server are discovered by sending a GET request to
"/.well-known/core" including a resource type (RT) parameter with the value
"core.c.dn".</t>
          <t>Upon success, the return payload contains the SID assigned to each data node
and their location.</t>
          <t>The example below shows the discovery of the presence and location of
data nodes. Data nodes '/ietf-system:system-state/clock/boot-datetime' (SID 1722)
and '/ietf-system:system-state/clock/current-datetime' (SID 1723) are returned.
The example assumes that the server uses /c as datastore resource path.</t>
          <artwork><![CDATA[
REQ: GET </.well-known/core?rt=core.c.dn>

RES: 2.05 Content (Content-Format: application/link-format)
</c/a6>;rt="core.c.dn",
</c/a7>;rt="core.c.dn"
]]></artwork>
          <t>Without additional filtering, the list of data nodes may become prohibitively
long. If this is the case implementations <bcp14>SHOULD</bcp14> support a way to obtain all
links using multiple GET requests (for example through some form of
pagination).</t>
        </section>
        <section anchor="event-stream-resource-discovery">
          <name>Event stream Resource Discovery</name>
          <t>The presence and location of (path to) each event stream implemented by the CORECONF server are
discovered by sending a GET request to "/.well-known/core" including a resource type (RT)
parameter with the value "core.c.es".</t>
          <t>Upon success, the return payload contains the list of event stream resources.</t>
          <t>The following example assumes that the server uses /s as the default event stream
resource.</t>
          <figure anchor="discovery-ex-es">
            <artwork align="left"><![CDATA[
REQ: GET </.well-known/core?rt=core.c.es>

RES: 2.05 Content (Content-Format: application/link-format)
</s>;rt="core.c.es"
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>In case a request is received which cannot be processed properly, the CORECONF server <bcp14>MUST</bcp14> return an error response. This error response <bcp14>MUST</bcp14> contain a CoAP 4.xx or 5.xx response code.</t>
      <t>Errors returned by a CORECONF server can be broken into two categories, those associated with the CoAP protocol itself and those generated during the validation of the YANG data model constraints as described in <xref section="8" sectionFormat="of" target="RFC7950"/>.</t>
      <t>The following list of common CoAP errors should be implemented by CORECONF servers. This list is not exhaustive, other errors defined by CoAP and associated RFCs may be applicable.</t>
      <ul spacing="normal">
        <li>Error 4.01 (Unauthorized) is returned by the CORECONF server when the CORECONF client is not authorized to perform the requested action on the targeted resource (i.e. data node, datastore, rpc, action or event stream).</li>
        <li>Error 4.02 (Bad Option) is returned by the CORECONF server when one or more CoAP options are unknown or malformed.</li>
        <li>Error 4.04 (Not Found) is returned by the CORECONF server when the CORECONF client is requesting a non-instantiated resource (i.e. data node, datastore, rpc, action or event stream).</li>
        <li>Error 4.05 (Method Not Allowed) is returned by the CORECONF server when the CORECONF client is requesting a method not supported on the targeted resource. (e.g. GET on an rpc, PUT or POST on a data node with "config" set to false).</li>
        <li>Error 4.08 (Request Entity Incomplete) is returned by the CORECONF server if one or multiple blocks of a block transfer request is missing, see <xref target="RFC7959"/> for more details.</li>
        <li>Error 4.13 (Request Entity Too Large) may be returned by the CORECONF server during a block transfer request, see <xref target="RFC7959"/> for more details.</li>
        <li>Error 4.15 (Unsupported Content-Format) is returned by the CORECONF server when the Content-Format used in the request does not match those specified in <xref target="media-type"/>.</li>
      </ul>
      <t>The CORECONF server <bcp14>MUST</bcp14> also enforce the different constraints associated with the YANG data models implemented. These constraints are described in <xref section="8" sectionFormat="of" target="RFC7950"/>. These errors are reported using the CoAP error code 4.00 (Bad Request) and may have the following error container as payload. The YANG definition and associated .sid file are available in <xref target="ietf-coreconf-yang"/> and <xref target="ietf-coreconf-sid"/>. The error container is encoded using the encoding rules of a YANG data template as defined in <xref section="5" sectionFormat="of" target="RFC9254"/>.</t>
      <artwork><![CDATA[
+--rw error!
   +--rw error-tag             identityref
   +--rw error-app-tag?        identityref
   +--rw error-data-node?      instance-identifier
   +--rw error-message?        string
]]></artwork>
      <t>The following 'error-tag' and 'error-app-tag' are defined by the ietf-coreconf YANG module, these tags are implemented as YANG identity and can be extended as needed.</t>
      <ul spacing="normal">
        <li>
          <t>error-tag 'operation-failed' is returned by the CORECONF server when the operation request cannot be processed successfully.  </t>
          <ul spacing="normal">
            <li>error-app-tag 'malformed-message' is returned by the CORECONF server when the payload received from the CORECONF client does not contain a well-formed CBOR content as defined in <xref target="RFC8949"/> or does not comply with the CBOR structure defined within this document.</li>
            <li>error-app-tag 'data-not-unique' is returned by the CORECONF server when the validation of the 'unique' constraint of a list or leaf-list fails.</li>
            <li>error-app-tag 'too-many-elements' is returned by the CORECONF server when the validation of the 'max-elements' constraint of a list or leaf-list fails.</li>
            <li>error-app-tag 'too-few-elements' is returned by the CORECONF server when the validation of the 'min-elements' constraint of a list or leaf-list fails.</li>
            <li>error-app-tag 'must-violation' is returned by the CORECONF server when the restrictions imposed by a 'must' statement are violated.</li>
            <li>error-app-tag 'duplicate' is returned by the CORECONF server when a client tries to create a duplicate list or leaf-list entry.</li>
          </ul>
        </li>
        <li>
          <t>error-tag 'invalid-value' is returned by the CORECONF server when the CORECONF client tries to update or create a leaf with a value encoded using an invalid CBOR datatype or if the 'range', 'length', 'pattern' or 'require-instance' constrain is not fulfilled.  </t>
          <ul spacing="normal">
            <li>error-app-tag 'invalid-datatype' is returned by the CORECONF server when CBOR encoding does not follow the rules set by the YANG Build-In type or when the value is incompatible with it (e.g. a value greater than 127 for an int8, undefined enumeration).</li>
            <li>error-app-tag 'not-in-range' is returned by the CORECONF server when the validation of the 'range' property fails.</li>
            <li>error-app-tag 'invalid-length' is returned by the CORECONF server when the validation of the 'length' property fails.</li>
            <li>error-app-tag 'pattern-test-failed' is returned by the CORECONF server when the validation of the 'pattern' property fails.</li>
          </ul>
        </li>
        <li>
          <t>error-tag 'missing-element' is returned by the CORECONF server when the operation requested by a CORECONF client fails to comply with the 'mandatory' constraint defined. The 'mandatory' constraint is enforced for leafs and choices, unless the node or any of its ancestors have a 'when' condition or 'if-feature' expression that evaluates to 'false'.  </t>
          <ul spacing="normal">
            <li>error-app-tag 'missing-key' is returned by the CORECONF server to further qualify a missing-element error. This error is returned when the CORECONF client  tries to create or list instance, without all the 'key' specified or when the CORECONF client  tries to delete a leaf listed as a 'key'.</li>
            <li>error-app-tag 'missing-input-parameter' is returned by the CORECONF server when the input parameters of an RPC or action are incomplete.</li>
          </ul>
        </li>
        <li>error-tag 'unknown-element' is returned by the CORECONF server when the CORECONF client  tries to access a data node of a YANG module not supported, of a data node associated with an 'if-feature' expression evaluated to 'false' or to a 'when' condition evaluated to 'false'.</li>
        <li>error-tag 'bad-element' is returned by the CORECONF server when the CORECONF client  tries to create data nodes for more than one case in a choice.</li>
        <li>
          <t>error-tag 'data-missing' is returned by the CORECONF server when a data node required to accept the request is not present.  </t>
          <ul spacing="normal">
            <li>error-app-tag 'instance-required' is returned by the CORECONF server when a leaf of type 'instance-identifier' or 'leafref' marked with require-instance set to 'true' refers to an instance that does not exist.</li>
            <li>error-app-tag 'missing-choice' is returned by the CORECONF server when no nodes exist in a mandatory choice.</li>
          </ul>
        </li>
        <li>error-tag 'error' is returned by the CORECONF server when an unspecified error has occurred.</li>
      </ul>
      <t>For example, the CORECONF server might return the following error.</t>
      <artwork><![CDATA[
RES:  4.00 Bad Request
     (Content-Format: application/yang-data+cbor; id=sid)
{
  1024 : {
    4 : 1011,        / error-tag (SID 1028) /
                     /   = invalid-value (SID 1011) /
    1 : 1018,        / error-app-tag (SID 1025) /
                     /   = not-in-range (SID 1018) /
    2 : 1740,        / error-data-node (SID 1026) /
                     /   = timezone-utc-offset (SID 1740) /
    3 : "maximum value exceeded" / error-message (SID 1027) /
  }
}
]]></artwork>
      <t><cref anchor="simplify2">I don't quite know how to use application/yang-instances+cbor here, if we don't have an instance?</cref></t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>For secure network management, it is important to restrict access to configuration variables
only to authorized parties. CORECONF re-uses the security mechanisms already available to CoAP,
this includes DTLS <xref target="RFC6347"/><xref target="RFC9147"/> and OSCORE <xref target="RFC8613"/> for protected access to
resources, as well as suitable authentication and authorization mechanisms, for
example those defined in ACE OAuth <xref target="RFC9200"/>.</t>
      <t>All the security considerations of <xref target="RFC7252"/>, <xref target="RFC7959"/>, <xref target="RFC8132"/> and
<xref target="RFC7641"/> apply to this document as well. The use of NoSec (<xref section="9" sectionFormat="of" target="RFC7252"/>), when OSCORE
is not used, is <bcp14>NOT RECOMMENDED</bcp14>.</t>
      <t>In addition, mechanisms for authentication and authorization may need to be
selected if not provided with the CoAP security mode.</t>
      <t>As <xref target="RFC9254"/> and <xref target="RFC4648"/> are used for payload and SID
encoding, the security considerations of those documents also need to be
well-understood.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="resource-type-rt-link-target-attribute-values-registry">
        <name>Resource Type (rt=) Link Target Attribute Values Registry</name>
        <t>This document adds the following resource type to the "Resource Type (rt=) Link Target Attribute Values", within the "Constrained RESTful Environments (CoRE) Parameters" registry.</t>
        <table align="left">
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">core.c.ds</td>
              <td align="left">YANG datastore</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">core.c.dn</td>
              <td align="left">YANG data node</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">core.c.yl</td>
              <td align="left">YANG module library</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">core.c.es</td>
              <td align="left">YANG event stream</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>// RFC Ed.: replace RFC XXXX with this RFC number and remove this note.</t>
      </section>
      <section anchor="coap-content-formats-registry">
        <name>CoAP Content-Formats Registry</name>
        <t>This document adds the following Content-Format to the "CoAP Content-Formats", within the "Constrained RESTful Environments (CoRE) Parameters" registry.</t>
        <table align="left">
          <thead>
            <tr>
              <th align="left">Media Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/yang-identifiers+cbor</td>
              <td align="left"> </td>
              <td align="left">TBD2</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">application/yang-instances+cbor</td>
              <td align="left"> </td>
              <td align="left">TBD3</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>// RFC Ed.: replace TBD1, TBD2 and TBD3 with assigned IDs and remove this note.
// RFC Ed.: replace RFC XXXX with this RFC number and remove this note.</t>
      </section>
      <section anchor="media-types-registry">
        <name>Media Types Registry</name>
        <t>This document adds the following media types to the "Media Types" registry.</t>
        <table align="left">
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Template</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">yang-identifiers+cbor</td>
              <td align="left">application/</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">yang-identifiers+cbor</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">yang-instances+cbor</td>
              <td align="left">application/</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">yang-instances+cbor</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>Each of these media types share the following information:</t>
        <ul spacing="normal">
          <li>Subtype name: &lt;as listed in table&gt;</li>
          <li>Required parameters: N/A</li>
          <li>Optional parameters: N/A</li>
          <li>Encoding considerations: binary</li>
          <li>Security considerations: See the Security Considerations section of RFC XXXX</li>
          <li>Interoperability considerations: N/A</li>
          <li>Published specification: RFC XXXX</li>
          <li>Applications that use this media type: CORECONF</li>
          <li>Fragment identifier considerations: N/A</li>
          <li>Additional information:</li>
        </ul>
        <artwork><![CDATA[
*  Deprecated alias names for this type: N/A

*  Magic number(s): N/A

*  File extension(s): N/A

*  Macintosh file type code(s): N/A
]]></artwork>
        <ul spacing="normal">
          <li>Person &amp; email address to contact for further information: iesg&amp;ietf.org</li>
          <li>Intended usage: COMMON</li>
          <li>Restrictions on usage: N/A</li>
          <li>Author: Michel Veillette</li>
          <li>Change Controller: IESG</li>
          <li>Provisional registration?  No</li>
        </ul>
        <t>// RFC Ed.: replace RFC XXXX with this RFC number and remove this note.</t>
      </section>
      <section anchor="yang-namespace-registration">
        <name>YANG Namespace Registration</name>
        <t>This document registers the following XML namespace URN in the "IETF XML
Registry", following the format defined in <xref target="RFC3688"/>:</t>
        <t>URI: please assign urn:ietf:params:xml:ns:yang:ietf-coreconf</t>
        <t>Registrant Contact: The IESG.</t>
        <t>XML: N/A, the requested URI is an XML namespace.</t>
        <t>Reference:    RFC XXXX</t>
        <t>// RFC Ed.: please replace XXXX with RFC number and remove this note</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC5277">
          <front>
            <title>NETCONF Event Notifications</title>
            <author fullname="S. Chisholm" initials="S." surname="Chisholm">
              <organization/>
            </author>
            <author fullname="H. Trevino" initials="H." surname="Trevino">
              <organization/>
            </author>
            <date month="July" year="2008"/>
            <abstract>
              <t>This document defines mechanisms that provide an asynchronous message notification delivery service for the Network Configuration protocol (NETCONF).  This is an optional capability built on top of the base NETCONF definition.  This document defines the capabilities and operations necessary to support this service.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5277"/>
          <seriesInfo name="DOI" value="10.17487/RFC5277"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman">
              <organization/>
            </author>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC6243">
          <front>
            <title>With-defaults Capability for NETCONF</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel">
              <organization/>
            </author>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defines ways to read and edit configuration data from a NETCONF server.  In some cases, part of this data may not be set by the NETCONF client, but rather a default value known to the server is used instead.  In many situations the NETCONF client has a priori knowledge about default data, so the NETCONF server does not need to save it in a NETCONF configuration datastore or send it to the client in a retrieval operation reply.  In other situations the NETCONF client will need this data from the server.  Not all server implementations treat this default data the same way.  This document defines a capability-based extension to the NETCONF protocol that allows the NETCONF client to identify how defaults are processed by the server, and also defines new mechanisms for client control of server processing of default data.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6243"/>
          <seriesInfo name="DOI" value="10.17487/RFC6243"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund">
              <organization/>
            </author>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols.  This document describes the syntax and semantics of version 1.1 of the YANG language.  YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification.  There are a small number of backward incompatibilities from YANG version 1.  This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby">
              <organization/>
            </author>
            <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="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <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="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">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal">
              <organization/>
            </author>
            <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="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette">
              <organization/>
            </author>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov">
              <organization/>
            </author>
            <author fullname="A. Pelov" initials="A." surname="Pelov">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="I-D.ietf-core-sid">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="1" month="March" year="2023"/>
            <abstract>
              <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items, as a more compact
   method to identify YANG items that can be used for efficiency and in
   constrained environments (RFC 7228).  This document defines the
   semantics, the registration, and assignment processes of YANG SIDs
   for IETF managed YANG modules.  To enable the implementation of these
   processes, this document also defines a file format used to persist
   and publish assigned YANG SIDs.


   // The present version (-20) is intended to address all IESG
   // feedback.  It has significantly progressed from -16, which was the
   // original submission to the IESG.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-20"/>
        </reference>
        <reference anchor="I-D.ietf-core-yang-library">
          <front>
            <title>Constrained YANG Module Library</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Acklio</organization>
            </author>
            <date day="11" month="January" year="2021"/>
            <abstract>
              <t>   This document describes a constrained version of the YANG library
   that provides information about the YANG modules, datastores, and
   datastore schemas used by a constrained network management server
   (e.g., a CORECONF server).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-yang-library-03"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <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="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces.  It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC7317">
          <front>
            <title>A YANG Data Model for System Management</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman">
              <organization/>
            </author>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <date month="August" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the configuration and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server.  This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7317"/>
          <seriesInfo name="DOI" value="10.17487/RFC7317"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund">
              <organization/>
            </author>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder">
              <organization/>
            </author>
            <author fullname="P. Shafer" initials="P." surname="Shafer">
              <organization/>
            </author>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="R. Wilton" initials="R." surname="Wilton">
              <organization/>
            </author>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson">
              <organization/>
            </author>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="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">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <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>
      </references>
    </references>
    <?line 1270?>

<section anchor="ietf-coreconf-yang">
      <name>ietf-coreconf YANG module</name>
      <sourcecode markers="true" name="ietf-coreconf@2023-03-13.yang"><![CDATA[
module ietf-coreconf {
  yang-version 1.1;

  namespace "urn:ietf:params:xml:ns:yang:ietf-coreconf";
  prefix coreconf;

  import ietf-datastores {
    prefix ds;
  }

  import ietf-restconf {
    prefix rc;
    description
      "This import statement is required to access
       the yang-data extension defined in RFC 8040.";
    reference "RFC 8040: RESTCONF Protocol";
  }

  organization
    "IETF Core Working Group";

  contact
    "Michel Veillette
     <mailto:michel.veillette@trilliantinc.com>

     Alexander Pelov
     <mailto:alexander@ackl.io>

     Peter van der Stok
     <mailto:consultancy@vanderstok.org>

     Andy Bierman
     <mailto:andy@yumaworks.com>";

  description
    "This module contains the different definitions required
     by the CORECONF protocol.

     Copyright (c) 2019 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX;
     see the RFC itself for full legal notices.";

  revision 2023-03-13 {
     description
      "Initial revision.";
    reference
      "[I-D.ietf-core-comi] CoAP Management Interface";
  }

  identity unified {
    base ds:datastore;
    description
      "Identifier of the unified configuration and operational
       state datastore.";
  }

  identity error-tag {
    description
      "Base identity for error-tag.";
  }

  identity operation-failed {
    base error-tag;
    description
      "Returned by the CORECONF server when the operation request
       can't be processed successfully.";
  }

  identity invalid-value {
    base error-tag;
    description
      "Returned by the CORECONF server when the CORECONF client tries
       to update or create a leaf with a value encoded using an
       invalid CBOR datatype or if the 'range', 'length',
       'pattern' or 'require-instance' constrain is not
       fulfilled.";
  }

  identity missing-element {
    base error-tag;
    description
      "Returned by the CORECONF server when the operation requested
       by a CORECONF client fails to comply with the 'mandatory'
       constraint defined. The 'mandatory' constraint is
       enforced for leafs and choices, unless the node or any of
       its ancestors have a 'when' condition or 'if-feature'
       expression that evaluates to 'false'.";
  }

  identity unknown-element {
    base error-tag;
    description
      "Returned by the CORECONF server when the CORECONF client tries
       to access a data node of a YANG module not supported, of a
       data node associated with an 'if-feature' expression
       evaluated to 'false' or to a 'when' condition evaluated
       to 'false'.";
  }

  identity bad-element {
    base error-tag;
    description
      "Returned by the CORECONF server when the CORECONF client tries
       to create data nodes for more than one case in a choice.";
  }

  identity data-missing {
    base error-tag;
    description
      "Returned by the CORECONF server when a data node required to
       accept the request is not present.";
  }

  identity error {
    base error-tag;
    description
      "Returned by the CORECONF server when an unspecified error has
      occurred.";
  }

  identity error-app-tag {
    description
      "Base identity for error-app-tag.";
  }

  identity malformed-message {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the payload received
       from the CORECONF client don't contain a well-formed CBOR
       content as defined in [RFC8949] or don't
       comply with the CBOR structure defined within this
       document.";
  }

  identity data-not-unique {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the validation of the
       'unique' constraint of a list or leaf-list fails.";
  }

  identity too-many-elements {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the validation of the
       'max-elements' constraint of a list or leaf-list fails.";
  }

  identity too-few-elements {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the validation of the
       'min-elements' constraint of a list or leaf-list fails.";
  }

  identity must-violation {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the restrictions
       imposed by a 'must' statement are violated.";
  }

  identity duplicate {
    base error-app-tag;
    description
      "Returned by the CORECONF server when a client tries to create
       a duplicate list or leaf-list entry.";
  }

  identity invalid-datatype {
    base error-app-tag;
    description
      "Returned by the CORECONF server when CBOR encoding is
       incorect or when the value encoded is incompatible with
       the YANG Built-In type. (e.g. value greater than 127
       for an int8, undefined enumeration).";
  }

  identity not-in-range {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the validation of the
       'range' property fails.";
  }

  identity invalid-length {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the validation of the
       'length' property fails.";
  }

  identity pattern-test-failed {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the validation of the
       'pattern' property fails.";
  }

  identity missing-key {
    base error-app-tag;
    description
      "Returned by the CORECONF server to further qualify a
       missing-element error. This error is returned when the
       CORECONF client tries to create or list instance, without all
       the 'key' specified or when the CORECONF client tries to
       delete a leaf listed as a 'key'.";
  }

  identity missing-input-parameter {
    base error-app-tag;
    description
      "Returned by the CORECONF server when the input parameters
       of a RPC or action are incomplete.";
  }

  identity instance-required {
    base error-app-tag;
    description
      "Returned by the CORECONF server when a leaf of type
       'instance-identifier' or 'leafref' marked with
       require-instance set to 'true' refers to an instance
       that does not exist.";
  }

  identity missing-choice {
    base error-app-tag;
    description
      "Returned by the CORECONF server when no nodes exist in a
       mandatory choice.";
  }

  rc:yang-data coreconf-error {
    container error {
      description
        "Optional payload of a 4.00 Bad Request CoAP error.";

      leaf error-tag {
        type identityref {
          base error-tag;
        }
        mandatory true;
        description
          "The enumerated error-tag.";
      }

      leaf error-app-tag {
        type identityref {
          base error-app-tag;
        }
        description
          "The application-specific error-tag.";
      }

      leaf error-data-node {
        type instance-identifier;
        description
          "When the error reported is caused by a specific data node,
           this leaf identifies the data node in error.";
      }

      leaf error-message {
        type string;
        description
          "A message describing the error.";
      }
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="ietf-coreconf-sid">
      <name>ietf-coreconf .sid file</name>
      <artwork><![CDATA[
{
  "assignment-ranges": [
    {
      "entry-point": 1000,
      "size": 100
    }
  ],
  "module-name": "ietf-coreconf",
  "module-revision": "2023-03-13",
  "items": [
    {
      "namespace": "module",
      "identifier": "ietf-coreconf",
      "sid": 1000
    },
    {
      "namespace": "identity",
      "identifier": "bad-element",
      "sid": 1001
    },
    {
      "namespace": "identity",
      "identifier": "data-missing",
      "sid": 1002
    },
    {
      "namespace": "identity",
      "identifier": "data-not-unique",
      "sid": 1003
    },
    {
      "namespace": "identity",
      "identifier": "duplicate",
      "sid": 1004
    },
    {
      "namespace": "identity",
      "identifier": "error",
      "sid": 1005
    },
    {
      "namespace": "identity",
      "identifier": "error-app-tag",
      "sid": 1006
    },
    {
      "namespace": "identity",
      "identifier": "error-tag",
      "sid": 1007
    },
    {
      "namespace": "identity",
      "identifier": "instance-required",
      "sid": 1008
    },
    {
      "namespace": "identity",
      "identifier": "invalid-datatype",
      "sid": 1009
    },
    {
      "namespace": "identity",
      "identifier": "invalid-length",
      "sid": 1010
    },
    {
      "namespace": "identity",
      "identifier": "invalid-value",
      "sid": 1011
    },
    {
      "namespace": "identity",
      "identifier": "malformed-message",
      "sid": 1012
    },
    {
      "namespace": "identity",
      "identifier": "missing-choice",
      "sid": 1013
    },
    {
      "namespace": "identity",
      "identifier": "missing-element",
      "sid": 1014
    },
    {
      "namespace": "identity",
      "identifier": "missing-input-parameter",
      "sid": 1015
    },
    {
      "namespace": "identity",
      "identifier": "missing-key",
      "sid": 1016
    },
    {
      "namespace": "identity",
      "identifier": "must-violation",
      "sid": 1017
    },
    {
      "namespace": "identity",
      "identifier": "not-in-range",
      "sid": 1018
    },
    {
      "namespace": "identity",
      "identifier": "operation-failed",
      "sid": 1019
    },
    {
      "namespace": "identity",
      "identifier": "pattern-test-failed",
      "sid": 1020
    },
    {
      "namespace": "identity",
      "identifier": "too-few-elements",
      "sid": 1021
    },
    {
      "namespace": "identity",
      "identifier": "too-many-elements",
      "sid": 1022
    },
    {
      "namespace": "identity",
      "identifier": "unified",
      "sid": 1029
    },
    {
      "namespace": "identity",
      "identifier": "unknown-element",
      "sid": 1023
    },
    {
      "namespace": "data",
      "identifier": "/ietf-coreconf:error",
      "sid": 1024
    },
    {
      "namespace": "data",
      "identifier": "/ietf-coreconf:error/error-app-tag",
      "sid": 1025
    },
    {
      "namespace": "data",
      "identifier": "/ietf-coreconf:error/error-data-node",
      "sid": 1026
    },
    {
      "namespace": "data",
      "identifier": "/ietf-coreconf:error/error-message",
      "sid": 1027
    },
    {
      "namespace": "data",
      "identifier": "/ietf-coreconf:error/error-tag",
      "sid": 1028
    }
  ]
}
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We are very grateful to <contact fullname="Bert Greevenbosch"/> who was one of the original authors
of the CORECONF specification.</t>
      <t><contact fullname="Mehmet Ersue"/> and <contact fullname="Bert Wijnen"/> explained the encoding aspects of PDUs transported
under SNMP.
<contact fullname="Koen Zandberg"/>'s implementation input motivated massively simplifying
(and fixing) the URI construction for GET/PUT/POST requests.</t>
      <t>The draft has further benefited from comments (alphabetical order) by
<contact fullname="Rodney Cummings"/>,
<contact fullname="Dee Denteneer"/>,
<contact fullname="Esko Dijk"/>,
<contact fullname="Klaus Hartke"/>,
<contact fullname="Michael van Hartskamp"/>,
<contact fullname="Tanguy Ropitault"/>,
<contact fullname="Jürgen Schönwälder"/>,
<contact fullname="Anuj Sehgal"/>,
<contact fullname="Zach Shelby"/>,
<contact fullname="Hannes Tschofenig"/>,
<contact fullname="Michael Verschoor"/>,
and
<contact fullname="Thomas Watteyne"/>.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="I. I." surname="Petrov" fullname="Ivaylo Petrov">
        <organization>Acklio</organization>
        <address>
          <postal>
            <street>1137A avenue des Champs Blancs</street>
            <city>Cesson-Sevigne</city>
            <code>35510</code>
            <country>France</country>
          </postal>
          <email>ivaylo@ackl.io</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
9ur0PIPlUb+gSFukOIlu8P8BzJ1Tmx/0AAA=

-->

</rfc>
