<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-comi-21" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="CORECONF">CoAP Management Interface (CORECONF)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-21"/>
    <author initials="M." 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>consultant</organization>
      <address>
        <phone>+31625097806</phone>
        <email>stokcons@kpnmail.nl</email>
        <uri>https://vanderstok.tech</uri>
      </address>
    </author>
    <author initials="A." surname="Pelov" fullname="Alexander Pelov" role="editor">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Châtaigneraie</street>
          <city>Cesson-Sevigne</city>
          <code>35510</code>
          <country>France</country>
        </postal>
        <email>alexander.pelov@imt-atlantique.fr</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="2026" month="March" day="02"/>
    <area>Applications</area>
    <workgroup>CoRE</workgroup>
    <abstract>
      <?line 99?>

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

<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 specification describes the CoAP Management Interface (CORECONF) which uses CoAP methods
to access structured data defined in YANG <xref target="RFC7950"/>. This specification 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="RFC9595"/>
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="RFC9595"/>: 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"/>.
In a yang-instances data item, the reference SID applying to the
instance-value is provided by the SID in the corresponding instance-identifier.</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 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"/> and
<xref section="G" sectionFormat="of" target="RFC8610"/>), which
can be automatically converted to CBOR.</t>
      </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 supports a single unified datastore.
 Multiple datastores, for instance as those defined by Network
 Management Datastore Architecture (NMDA) <xref target="RFC8342"/>, are out of scope
 of this specification.</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>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>RESTCONF uses the HTTP methods HEAD, and OPTIONS, which are not supported by CoAP.</t>
            </li>
            <li>
              <t>CORECONF does not support "insert" query parameter (first, last, before, after)
and the "point" query parameter which are supported by RESTCONF.</t>
            </li>
            <li>
              <t>CORECONF does not support the "start-time" and "stop-time" query parameters
to retrieve past notifications.</t>
            </li>
          </ul>
        </section>
        <section anchor="major-differences-cbor">
          <name>Differences due to the use of CBOR</name>
          <ul spacing="normal">
            <li>
              <t>CORECONF encodes YANG identifier strings as numbers, where RESTCONF does not.</t>
            </li>
            <li>
              <t>CORECONF also differs in the handling of default values, only 'report-all' and 'trim' options are supported.</t>
            </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 anchor="instance-identifier">
          <name>Instance-identifiers</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>
      <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-seq:</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-seq' 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-seq:</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-seq' 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"/>.
The reference SID applying to the instance-value is provided by the
SID in the instance-identifier.</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" anchor="tbl-mt-uses">
          <name>Summary of Media-Type Usages</name>
          <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-seq</td>
            </tr>
            <tr>
              <td align="left">FETCH response</td>
              <td align="left">datastore</td>
              <td align="left">application/yang-instances+cbor-seq</td>
            </tr>
            <tr>
              <td align="left">iPATCH request</td>
              <td align="left">datastore</td>
              <td align="left">application/yang-instances+cbor-seq</td>
            </tr>
            <tr>
              <td align="left">GET response</td>
              <td align="left">event stream</td>
              <td align="left">application/yang-instances+cbor-seq</td>
            </tr>
            <tr>
              <td align="left">POST request</td>
              <td align="left">rpc, action</td>
              <td align="left">application/yang-instances+cbor-seq</td>
            </tr>
            <tr>
              <td align="left">POST response</td>
              <td align="left">rpc, action</td>
              <td align="left">application/yang-instances+cbor-seq</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>More complex datastore models such as the Network Management Datastore
Architecture (NMDA) as defined by <xref target="RFC8342"/> are out of scope of the
present specification.</t>
        <t>Characteristics of the unified datastore are summarized in the table below:</t>
        <table align="left" anchor="tbl-ud">
          <name>Characteristics of the Unified Datastore</name>
          <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="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 or event stream 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">
          <name>Query Parameters for FETCH</name>
          <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 method 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.
That means that the client is responsible for remembering the full
instance-identifiers in its request since no key values will be in the
response.
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-seq)
  CBOR sequence of instance-identifiers

  2.05 Content (Content-Format: application/yang-instances+cbor-seq)
  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-seq)
1723,            / current-datetime (SID 1723) /
[1533, "eth0"]   / interface (SID 1533) with name = "eth0" /

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

{
  1723 : "2014-10-26T12:16:31Z" / 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-seq.
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-seq)
  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>
                <t>Set "/ietf-system:system/ntp/enabled" (SID 1755) to true.</t>
              </li>
              <li>
                <t>Remove the server "tac.nrc.ca" from the "/ietf-system:system/ntp/server" (SID 1756) list.</t>
              </li>
              <li>
                <t>Add/set the server "NTP Pool server 2" to the list "/ietf-system:system/ntp/server" (SID 1756).</t>
              </li>
            </ul>
            <artwork><![CDATA[
REQ: iPATCH </c>
     (Content-Format: application/yang-instances+cbor-seq)
{
  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-seq)
  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="filtering-notifications">
          <name>Filtering Notifications</name>
          <t>If only a subset of all possible notifications is of interest, a FETCH
operation can be performed with a request payload of type
application/yang-identifiers+cbor-seq that indicates which subset.</t>
          <artwork><![CDATA[
FORMAT:
  FETCH <stream-resource> Observe(0)
        (Content-Format: application/yang-identifiers+cbor-seq)
  CBOR sequence of instance-identifiers

  2.05 Content (Content-Format: application/yang-instances+cbor-seq)
  CBOR sequence of CBOR maps of instance-identifier, instance-value
]]></artwork>
          <t>When filtering is not supported by a CORECONF server, the request
payload can be ignored: all event notifications are then reported
independently of the presence and content of the request payload.</t>
        </section>
        <section anchor="event-stream-example">
          <name>Notify Examples</name>
          <t>Let suppose the server generates the example-port-fault event as defined below.</t>
          <sourcecode type="yang"><![CDATA[
module example-port {
  yang-version 1.1;
  namespace "https://example.com/ns/example-port";
  prefix "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;
    }
  }
}
]]></sourcecode>
          <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-seq)
      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>
          <t>A client that wants to filter notifications can use a FETCH payload:</t>
          <artwork><![CDATA[
REQ:  FETCH </s> Observe(0)
      (Content-Format: application/yang-identifiers+cbor-seq)

60010, 60020 /CBOR sequence with two notification identifiers/

RES:  2.05 Content
      (Content-Format: application/yang-instances+cbor-seq)
      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>Note that the notifications in this example are identical to the
unfiltered example as they are all using identifier SID 60010 and this
is included in the filter.</t>
        </section>
      </section>
      <section anchor="rpc">
        <name>RPC and Action 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.04 Changed.</t>
        <artwork><![CDATA[
FORMAT:
  POST <datastore resource>
         (Content-Format: application/yang-instances+cbor-seq)
  CBOR sequence of CBOR maps of instance-identifier, instance-value

  2.04 (Content-Format: application/yang-instances+cbor-seq)
  CBOR sequence of CBOR maps of instance-identifier, instance-value
]]></artwork>
        <section anchor="rpc-example">
          <name>RPC Example</name>
          <t>This example is based on <xref section="3.6.1" sectionFormat="of" target="RFC8040"/>, abbreviated and
annotated with SIDs as follows:</t>
          <sourcecode type="yang"><![CDATA[
module example-ops {
  yang-version 1.1;
  namespace "https://example.com/ns/example-ops";
  prefix "ops";

  rpc reboot {                          // SID 61000
    description "Reboot operation.";
    input {                             // SID 61009
      leaf delay {                      // SID 61001
        type uint32;
        units "seconds";
        default 0;
        description
          "Number of seconds to wait before initiating the
           reboot operation.";
      }
    }
  }
}
]]></sourcecode>
          <t>This example invokes the 'reboot' RPC  (SID 61000).</t>
          <artwork><![CDATA[
REQ:  POST </c>
      (Content-Format: application/yang-instances+cbor-seq)

{ 61000:
  {
    1 : 77
  }
}
RES:  2.04 Changed
      (Content-Format: application/yang-instances+cbor-seq)

{ 61000:
  null
}
]]></artwork>
          <!--
We now believe this is the correct empty return for an RPC without output.
    Note that we always have to send a yang-instances (or at least a
    yang-identifiers) for the input side to find the right RPC.
 -->

</section>
        <section anchor="action-example">
          <name>Action 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>
          <sourcecode type="yang"><![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 {                          // SID 60008
        leaf reset-at {                // SID 60003
          type yang:date-and-time;
          mandatory true;
        }
      }
      output {                         // SID 60009
        leaf reset-finished-at {       // SID 60004
          type yang:date-and-time;
          mandatory true;
        }
      }
    }
  }
}
]]></sourcecode>
          <t>This example invokes the 'reset' action  (SID 60002),
of the server instance with name equal to "myserver".</t>
          <artwork><![CDATA[
REQ:  POST </c>
      (Content-Format: application/yang-instances+cbor-seq)

{ [60002, "myserver"]:
  {
    1 : "2016-02-08T14:10:08Z" / reset-at (SID 60003) /
  }
}
RES:  2.04 Changed
         (Content-Format: application/yang-instances+cbor-seq)

{ [60002, "myserver"]:
  {
    2 : "2016-02-08T14:10:11Z" / 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>
          <sourcecode type="abnf"><![CDATA[
link-extension    = ( "ds" "=" sid )
                    ; SID assigned to the datastore identity
sid               = 1*DIGIT
]]></sourcecode>
          <t>The following example assumes that the server uses /c as datastore resource
path.</t>
          <figure anchor="discovery-ex-ds">
            <name>Discovery Example: Data Store</name>
            <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>
          <figure anchor="discovery-ex-dn">
            <name>Discovery Example: Data Node</name>
            <artwork align="left"><![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>
          </figure>
          <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">
            <name>Discovery Example: Event Stream</name>
            <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.
Requests that result in an error response <bcp14>MUST NOT</bcp14> have an effect on
the datastore.</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>
          <t>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).</t>
        </li>
        <li>
          <t>Error 4.02 (Bad Option) is returned by the CORECONF server when one or more CoAP options are unknown or malformed.</t>
        </li>
        <li>
          <t>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).</t>
        </li>
        <li>
          <t>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).</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>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"/>.</t>
        </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>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>error-app-tag 'must-violation' is returned by the CORECONF server when the restrictions imposed by a 'must' statement are violated.</t>
            </li>
            <li>
              <t>error-app-tag 'duplicate' is returned by the CORECONF server when a client tries to create a duplicate list or leaf-list entry.</t>
            </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>
              <t>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).</t>
            </li>
            <li>
              <t>error-app-tag 'not-in-range' is returned by the CORECONF server when the validation of the 'range' property fails.</t>
            </li>
            <li>
              <t>error-app-tag 'invalid-length' is returned by the CORECONF server when the validation of the 'length' property fails.</t>
            </li>
            <li>
              <t>error-app-tag 'pattern-test-failed' is returned by the CORECONF server when the validation of the 'pattern' property fails.</t>
            </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>
              <t>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'.</t>
            </li>
            <li>
              <t>error-app-tag 'missing-input-parameter' is returned by the CORECONF server when the input parameters of an RPC or action are incomplete.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>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'.</t>
        </li>
        <li>
          <t>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.</t>
        </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>
              <t>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.</t>
            </li>
            <li>
              <t>error-app-tag 'missing-choice' is returned by the CORECONF server when no nodes exist in a mandatory choice.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>error-tag 'error' is returned by the CORECONF server when an unspecified error has occurred.</t>
        </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>
      <!-- Note that we do not
use application/yang-instances+cbor-seq here, as we don't have an instance.
-->

</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" anchor="tbl-rt">
          <name>Resource Types</name>
          <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-Formats from the Expert
Review range (0-255) to the "CoAP Content-Formats", within the "Constrained RESTful Environments (CoRE) Parameters" registry.</t>
        <table align="left" anchor="tbl-ct">
          <name>Content Formats</name>
          <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-seq</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-seq</td>
              <td align="left"> </td>
              <td align="left">TBD3</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>// RFC Ed.: replace TBD2 (suggested: 141) and TBD3 (suggested: 142) with assigned IDs and remove this note.  (There is no TBD1, that was already defined in RFC 9254.)
// 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" anchor="tbl-mt">
          <name>Media Types</name>
          <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-seq</td>
              <td align="left">application/yang-identifiers+cbor-seq</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">yang-instances+cbor-seq</td>
              <td align="left">application/yang-instances+cbor-seq</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>Each of these media types share the following information:</t>
        <ul spacing="normal">
          <li>
            <t>Subtype name: &lt;as listed in table&gt;</t>
          </li>
          <li>
            <t>Required parameters: N/A</t>
          </li>
          <li>
            <t>Optional parameters: N/A</t>
          </li>
          <li>
            <t>Encoding considerations: binary</t>
          </li>
          <li>
            <t>Security considerations: See the Security Considerations section of RFC XXXX</t>
          </li>
          <li>
            <t>Interoperability considerations: N/A</t>
          </li>
          <li>
            <t>Published specification: RFC XXXX</t>
          </li>
          <li>
            <t>Applications that use this media type: CORECONF</t>
          </li>
          <li>
            <t>Fragment identifier considerations: N/A</t>
          </li>
          <li>
            <t>Additional information:</t>
          </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>
            <t>Person &amp; email address to contact for further information: iesg&amp;ietf.org</t>
          </li>
          <li>
            <t>Intended usage: COMMON</t>
          </li>
          <li>
            <t>Restrictions on usage: N/A</t>
          </li>
          <li>
            <t>Author: Michel Veillette</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Provisional registration?  No</t>
          </li>
        </ul>
        <t>// RFC Ed.: replace RFC XXXX with this RFC number and remove this note.</t>
      </section>
      <section anchor="yang-namespace-and-module-name-registration">
        <name>YANG Namespace and Module Name 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>IANA is requested to register the following YANG module in the "YANG Module Names" registry <xref target="RFC6020"/>:</t>
        <t>Name: ietf-coreconf</t>
        <t>Namespace: urn:ietf:params:xml:ns:yang:ietf-coreconf</t>
        <t>Prefix: coreconf</t>
        <t>Reference: RFC XXXX</t>
        <t>// RFC Ed.: please replace XXXX with RFC number and remove this note</t>
        <t>The YANG module and SID file are in <xref target="ietf-coreconf-yang"/> and
<xref target="ietf-coreconf-sid"/>, respectively.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <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="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <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"/>
            <author fullname="H. Trevino" initials="H." surname="Trevino"/>
            <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"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <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"/>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel"/>
            <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"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <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"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <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"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <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="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for 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.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </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="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-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"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <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"/>
          <annotation> This specification is obsoleted by <xref target="RFC9147"/>.</annotation>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <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"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <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="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9200">
          <front>
            <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9200"/>
          <seriesInfo name="DOI" value="10.17487/RFC9200"/>
        </reference>
      </references>
    </references>
    <?line 1390?>

<section anchor="ietf-coreconf-yang">
      <name>ietf-coreconf YANG module</name>
      <t>This appendix is normative.</t>
      <figure anchor="yang-ietf-coreconf">
        <name>ietf-coreconf YANG module</name>
        <sourcecode type="yang" name="ietf-coreconf@2026-03-02.yang" markers="true"><![CDATA[
module ietf-coreconf {
  yang-version 1.1;

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

  import ietf-datastores {
    prefix ds;
    reference
      "RFC 8342: Network Management Datastore Architecture (NMDA)";
  }

  import ietf-yang-structure-ext {
    prefix sx;
    description
      "This import statement provides the structure extension
       statement of the YANG Data Structure Extension.";
    reference "RFC 8791: YANG Data Structure Extension";
  }

  organization
    "IETF Core Working Group";

  contact
    "WG Web:   <https://datatracker.ietf.org/wg/core/>
     WG List:  <mailto:core@ietf.org>

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

     Alexander Pelov
     <mailto:alexander.pelov@imt-atlantique.fr>

     Peter van der Stok
     <mailto:stokcons@kpnmail.nl>

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

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

     Copyright (c) 2026 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 Revised 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 2026-03-02 {
     description
      "Use sx:, not rc:.";
    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 a 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.";
  }

  sx:structure 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>
      </figure>
    </section>
    <section anchor="ietf-coreconf-sid">
      <name>ietf-coreconf .sid file</name>
      <t>This appendix is normative.</t>
      <figure anchor="yang-ietf-coreconf-sid">
        <name>ietf-coreconf SID file</name>
        <sourcecode type="yang" name="ietf-coreconf@2026-03-02.sid" markers="true"><![CDATA[
{
  "ietf-sid-file:sid-file": {
    "module-name": "ietf-coreconf",
    "module-revision": "2026-03-02",
    "assignment-range": [
      {
        "entry-point": "1000",
        "size": "100"
      }
    ],
    "item": [
      {
        "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"
      }
    ]
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section numbered="false" anchor="list-of-figures">
      <name>List of Figures</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="archit"/>:</dt>
        <dd>
          <t><xref format="title" target="archit"/></t>
        </dd>
        <dt><xref target="discovery-ex-ds"/>:</dt>
        <dd>
          <t><xref format="title" target="discovery-ex-ds"/></t>
        </dd>
        <dt><xref target="discovery-ex-dn"/>:</dt>
        <dd>
          <t><xref format="title" target="discovery-ex-dn"/></t>
        </dd>
        <dt><xref target="discovery-ex-es"/>:</dt>
        <dd>
          <t><xref format="title" target="discovery-ex-es"/></t>
        </dd>
        <dt><xref target="yang-ietf-coreconf"/>:</dt>
        <dd>
          <t><xref format="title" target="yang-ietf-coreconf"/></t>
        </dd>
        <dt><xref target="yang-ietf-coreconf-sid"/>:</dt>
        <dd>
          <t><xref format="title" target="yang-ietf-coreconf-sid"/></t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="list-of-tables">
      <name>List of Tables</name>
      <dl spacing="compact" indent="11">
        <dt><xref target="tbl-mt-uses"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-mt-uses"/></t>
        </dd>
        <dt><xref target="tbl-ud"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-ud"/></t>
        </dd>
        <dt><xref target="tbl-resources"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-resources"/></t>
        </dd>
        <dt><xref target="tbl-methods"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-methods"/></t>
        </dd>
        <dt><xref target="tbl-query-fetch"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-query-fetch"/></t>
        </dd>
        <dt><xref target="tbl-c-values"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-c-values"/></t>
        </dd>
        <dt><xref target="tbl-d-values"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-d-values"/></t>
        </dd>
        <dt><xref target="tbl-rt"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-rt"/></t>
        </dd>
        <dt><xref target="tbl-ct"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-ct"/></t>
        </dd>
        <dt><xref target="tbl-mt"/>:</dt>
        <dd>
          <t><xref format="title" target="tbl-mt"/></t>
        </dd>
      </dl>
    </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 specification 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"/>,
<contact fullname="Vojtech Vilimek"/>,
and
<contact fullname="Thomas Watteyne"/>.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="I." surname="Petrov" fullname="Ivaylo Petrov">
        <organization>Google</organization>
        <address>
          <email>ivaylopetrov@google.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
DR9TEbyDBwEA

-->

</rfc>
