Skip to main content

CoAP Management Interface (CORECONF)
draft-ietf-core-comi-15

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Active".
Authors Michel Veillette , Peter Van der Stok , Alexander Pelov , Andy Bierman , Carsten Bormann
Last updated 2023-07-23 (Latest revision 2023-07-10)
Replaces draft-vanderstok-core-comi
RFC stream Internet Engineering Task Force (IETF)
Formats
Additional resources Mailing list discussion
Stream WG state WG Document
Document shepherd Michael Richardson
IESG IESG state I-D Exists
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to Carsten Bormann <cabo@tzi.org>, mcr@sandelman.ca
draft-ietf-core-comi-15

   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"

   Without additional filtering, the list of data nodes may become
   prohibitively long.  If this is the case implementations SHOULD
   support a way to obtain all links using multiple GET requests (for
   example through some form of pagination).

5.2.3.  Event stream Resource Discovery

   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".

   Upon success, the return payload contains the list of event stream
   resources.

   The following example assumes that the server uses /s as the default
   event stream resource.

   REQ: GET </.well-known/core?rt=core.c.es>

   RES: 2.05 Content (Content-Format: application/link-format)
   </s>;rt="core.c.es"

                                  Figure 3

6.  Error Handling

   In case a request is received which cannot be processed properly, the
   CORECONF server MUST return an error response.  This error response
   MUST contain a CoAP 4.xx or 5.xx response code.

   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 Section 8 of [RFC7950].

   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.

Veillette, et al.        Expires 25 January 2024               [Page 26]
Internet-Draft                  CORECONF                       July 2023

   *  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).

   *  Error 4.02 (Bad Option) is returned by the CORECONF server when
      one or more CoAP options are unknown or malformed.

   *  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).

   *  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).

   *  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 [RFC7959] for more details.

   *  Error 4.13 (Request Entity Too Large) may be returned by the
      CORECONF server during a block transfer request, see [RFC7959] for
      more details.

   *  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 Section 2.3.

   The CORECONF server MUST also enforce the different constraints
   associated with the YANG data models implemented.  These constraints
   are described in Section 8 of [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 Appendix A and Appendix B.  The
   error container is encoded using the encoding rules of a YANG data
   template as defined in Section 5 of [RFC9254].

   +--rw error!
      +--rw error-tag             identityref
      +--rw error-app-tag?        identityref
      +--rw error-data-node?      instance-identifier
      +--rw error-message?        string

   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.

Veillette, et al.        Expires 25 January 2024               [Page 27]
Internet-Draft                  CORECONF                       July 2023

   *  error-tag 'operation-failed' is returned by the CORECONF server
      when the operation request cannot be processed successfully.

      -  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 [RFC8949]
         or does not comply with the CBOR structure defined within this
         document.

      -  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.

      -  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.

      -  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.

      -  error-app-tag 'must-violation' is returned by the CORECONF
         server when the restrictions imposed by a 'must' statement are
         violated.

      -  error-app-tag 'duplicate' is returned by the CORECONF server
         when a client tries to create a duplicate list or leaf-list
         entry.

   *  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.

      -  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).

      -  error-app-tag 'not-in-range' is returned by the CORECONF server
         when the validation of the 'range' property fails.

      -  error-app-tag 'invalid-length' is returned by the CORECONF
         server when the validation of the 'length' property fails.

Veillette, et al.        Expires 25 January 2024               [Page 28]
Internet-Draft                  CORECONF                       July 2023

      -  error-app-tag 'pattern-test-failed' is returned by the CORECONF
         server when the validation of the 'pattern' property fails.

   *  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'.

      -  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'.

      -  error-app-tag 'missing-input-parameter' is returned by the
         CORECONF server when the input parameters of an RPC or action
         are incomplete.

   *  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'.

   *  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.

   *  error-tag 'data-missing' is returned by the CORECONF server when a
      data node required to accept the request is not present.

      -  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.

      -  error-app-tag 'missing-choice' is returned by the CORECONF
         server when no nodes exist in a mandatory choice.

   *  error-tag 'error' is returned by the CORECONF server when an
      unspecified error has occurred.

   For example, the CORECONF server might return the following error.

Veillette, et al.        Expires 25 January 2024               [Page 29]
Internet-Draft                  CORECONF                       July 2023

   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) /
     }
   }

   // I don't quite know how to use application/yang-instances+cbor-seq
   // here, if we don't have an instance?

7.  Security Considerations

   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
   [RFC6347][RFC9147] and OSCORE [RFC8613] for protected access to
   resources, as well as suitable authentication and authorization
   mechanisms, for example those defined in ACE OAuth [RFC9200].

   All the security considerations of [RFC7252], [RFC7959], [RFC8132]
   and [RFC7641] apply to this document as well.  The use of NoSec
   (Section 9 of [RFC7252]), when OSCORE is not used, is NOT
   RECOMMENDED.

   In addition, mechanisms for authentication and authorization may need
   to be selected if not provided with the CoAP security mode.

   As [RFC9254] and [RFC4648] are used for payload and SID encoding, the
   security considerations of those documents also need to be well-
   understood.

8.  IANA Considerations

8.1.  Resource Type (rt=) Link Target Attribute Values Registry

   This document adds the following resource type to the "Resource Type
   (rt=) Link Target Attribute Values", within the "Constrained RESTful
   Environments (CoRE) Parameters" registry.

Veillette, et al.        Expires 25 January 2024               [Page 30]
Internet-Draft                  CORECONF                       July 2023

   +===========+=====================+===========+
   | Value     | Description         | Reference |
   +===========+=====================+===========+
   | core.c.ds | YANG datastore      | RFC XXXX  |
   +-----------+---------------------+-----------+
   | core.c.dn | YANG data node      | RFC XXXX  |
   +-----------+---------------------+-----------+
   | core.c.yl | YANG module library | RFC XXXX  |
   +-----------+---------------------+-----------+
   | core.c.es | YANG event stream   | RFC XXXX  |
   +-----------+---------------------+-----------+

                       Table 8

   // RFC Ed.: replace RFC XXXX with this RFC number and remove this
   note.

8.2.  CoAP Content-Formats Registry

   This document adds the following Content-Format to the "CoAP Content-
   Formats", within the "Constrained RESTful Environments (CoRE)
   Parameters" registry.

   +===========================+================+======+===========+
   | Media Type                | Content Coding | ID   | Reference |
   +===========================+================+======+===========+
   | application/yang-         |                | TBD2 | RFC XXXX  |
   | identifiers+cbor-seq      |                |      |           |
   +---------------------------+----------------+------+-----------+
   | application/yang-         |                | TBD3 | RFC XXXX  |
   | instances+cbor-seq        |                |      |           |
   +---------------------------+----------------+------+-----------+

                                Table 9

   // RFC Ed.: replace TBD1, TBD2 and TBD3 with assigned IDs and remove
   this note. // RFC Ed.: replace RFC XXXX with this RFC number and
   remove this note.

8.3.  Media Types Registry

   This document adds the following media types to the "Media Types"
   registry.

Veillette, et al.        Expires 25 January 2024               [Page 31]
Internet-Draft                  CORECONF                       July 2023

   +===========================+===========================+=========+
   | Name                      | Template                  |Reference|
   +===========================+===========================+=========+
   | yang-identifiers+cbor-seq | application/yang-         |RFC XXXX |
   |                           | identifiers+cbor-seq      |         |
   +---------------------------+---------------------------+---------+
   | yang-instances+cbor-seq   | application/yang-         |RFC XXXX |
   |                           | instances+cbor-seq        |         |
   +---------------------------+---------------------------+---------+

                                 Table 10

   Each of these media types share the following information:

   *  Subtype name: <as listed in table>

   *  Required parameters: N/A

   *  Optional parameters: N/A

   *  Encoding considerations: binary

   *  Security considerations: See the Security Considerations section
      of RFC XXXX

   *  Interoperability considerations: N/A

   *  Published specification: RFC XXXX

   *  Applications that use this media type: CORECONF

   *  Fragment identifier considerations: N/A

   *  Additional information:

   *  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

   *  Person & email address to contact for further information:
      iesg&ietf.org

   *  Intended usage: COMMON

Veillette, et al.        Expires 25 January 2024               [Page 32]
Internet-Draft                  CORECONF                       July 2023

   *  Restrictions on usage: N/A

   *  Author: Michel Veillette

   *  Change Controller: IETF

   *  Provisional registration?  No

   // RFC Ed.: replace RFC XXXX with this RFC number and remove this
   note.

8.4.  YANG Namespace and Module Name Registration

   This document registers the following XML namespace URN in the "IETF
   XML Registry", following the format defined in [RFC3688]:

   URI: please assign urn:ietf:params:xml:ns:yang:ietf-coreconf

   Registrant Contact: The IESG.

   XML: N/A, the requested URI is an XML namespace.

   Reference: RFC XXXX

   IANA is requested to register the following YANG module in the "YANG
   Module Names" registry [RFC6020]:

   Name: ietf-coreconf

   Namespace: urn:ietf:params:xml:ns:yang:ietf-coreconf

   Prefix: coreconf

   Reference: RFC XXXX

   // RFC Ed.: please replace XXXX with RFC number and remove this note

9.  References

9.1.  Normative References

   [I-D.ietf-core-sid]
              Veillette, M., Pelov, A., Petrov, I., Bormann, C., and M.
              Richardson, "YANG Schema Item iDentifier (YANG SID)", Work
              in Progress, Internet-Draft, draft-ietf-core-sid-20, 1
              March 2023, <https://datatracker.ietf.org/doc/html/draft-
              ietf-core-sid-20>.

Veillette, et al.        Expires 25 January 2024               [Page 33]
Internet-Draft                  CORECONF                       July 2023

   [I-D.ietf-core-yang-library]
              Veillette, M. and I. Petrov, "Constrained YANG Module
              Library", Work in Progress, Internet-Draft, draft-ietf-
              core-yang-library-03, 11 January 2021,
              <https://datatracker.ietf.org/doc/html/draft-ietf-core-
              yang-library-03>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January 2004,
              <https://www.rfc-editor.org/rfc/rfc3688>.

   [RFC4648]  Josefsson, S., "The Base16, Base32, and Base64 Data
              Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
              <https://www.rfc-editor.org/rfc/rfc4648>.

   [RFC5277]  Chisholm, S. and H. Trevino, "NETCONF Event
              Notifications", RFC 5277, DOI 10.17487/RFC5277, July 2008,
              <https://www.rfc-editor.org/rfc/rfc5277>.

   [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
              the Network Configuration Protocol (NETCONF)", RFC 6020,
              DOI 10.17487/RFC6020, October 2010,
              <https://www.rfc-editor.org/rfc/rfc6020>.

   [RFC6241]  Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
              <https://www.rfc-editor.org/rfc/rfc6241>.

   [RFC6243]  Bierman, A. and B. Lengyel, "With-defaults Capability for
              NETCONF", RFC 6243, DOI 10.17487/RFC6243, June 2011,
              <https://www.rfc-editor.org/rfc/rfc6243>.

   [RFC7252]  Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
              Application Protocol (CoAP)", RFC 7252,
              DOI 10.17487/RFC7252, June 2014,
              <https://www.rfc-editor.org/rfc/rfc7252>.

   [RFC7641]  Hartke, K., "Observing Resources in the Constrained
              Application Protocol (CoAP)", RFC 7641,
              DOI 10.17487/RFC7641, September 2015,
              <https://www.rfc-editor.org/rfc/rfc7641>.

Veillette, et al.        Expires 25 January 2024               [Page 34]
Internet-Draft                  CORECONF                       July 2023

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/rfc/rfc7950>.

   [RFC7959]  Bormann, C. and Z. Shelby, Ed., "Block-Wise Transfers in
              the Constrained Application Protocol (CoAP)", RFC 7959,
              DOI 10.17487/RFC7959, August 2016,
              <https://www.rfc-editor.org/rfc/rfc7959>.

   [RFC8040]  Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
              <https://www.rfc-editor.org/rfc/rfc8040>.

   [RFC8132]  van der Stok, P., Bormann, C., and A. Sehgal, "PATCH and
              FETCH Methods for the Constrained Application Protocol
              (CoAP)", RFC 8132, DOI 10.17487/RFC8132, April 2017,
              <https://www.rfc-editor.org/rfc/rfc8132>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.

   [RFC8610]  Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
              Definition Language (CDDL): A Notational Convention to
              Express Concise Binary Object Representation (CBOR) and
              JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
              June 2019, <https://www.rfc-editor.org/rfc/rfc8610>.

   [RFC8742]  Bormann, C., "Concise Binary Object Representation (CBOR)
              Sequences", RFC 8742, DOI 10.17487/RFC8742, February 2020,
              <https://www.rfc-editor.org/rfc/rfc8742>.

   [RFC8949]  Bormann, C. and P. Hoffman, "Concise Binary Object
              Representation (CBOR)", STD 94, RFC 8949,
              DOI 10.17487/RFC8949, December 2020,
              <https://www.rfc-editor.org/rfc/rfc8949>.

   [RFC9254]  Veillette, M., Ed., Petrov, I., Ed., Pelov, A., Bormann,
              C., and M. Richardson, "Encoding of Data Modeled with YANG
              in the Concise Binary Object Representation (CBOR)",
              RFC 9254, DOI 10.17487/RFC9254, July 2022,
              <https://www.rfc-editor.org/rfc/rfc9254>.

9.2.  Informative References

   [RFC6347]  Rescorla, E. and N. Modadugu, "Datagram Transport Layer
              Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
              January 2012, <https://www.rfc-editor.org/rfc/rfc6347>.

Veillette, et al.        Expires 25 January 2024               [Page 35]
Internet-Draft                  CORECONF                       July 2023

   [RFC6690]  Shelby, Z., "Constrained RESTful Environments (CoRE) Link
              Format", RFC 6690, DOI 10.17487/RFC6690, August 2012,
              <https://www.rfc-editor.org/rfc/rfc6690>.

   [RFC7317]  Bierman, A. and M. Bjorklund, "A YANG Data Model for
              System Management", RFC 7317, DOI 10.17487/RFC7317, August
              2014, <https://www.rfc-editor.org/rfc/rfc7317>.

   [RFC8342]  Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "Network Management Datastore Architecture
              (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
              <https://www.rfc-editor.org/rfc/rfc8342>.

   [RFC8343]  Bjorklund, M., "A YANG Data Model for Interface
              Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
              <https://www.rfc-editor.org/rfc/rfc8343>.

   [RFC8613]  Selander, G., Mattsson, J., Palombini, F., and L. Seitz,
              "Object Security for Constrained RESTful Environments
              (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019,
              <https://www.rfc-editor.org/rfc/rfc8613>.

   [RFC9147]  Rescorla, E., Tschofenig, H., and N. Modadugu, "The
              Datagram Transport Layer Security (DTLS) Protocol Version
              1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022,
              <https://www.rfc-editor.org/rfc/rfc9147>.

   [RFC9200]  Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and
              H. Tschofenig, "Authentication and Authorization for
              Constrained Environments Using the OAuth 2.0 Framework
              (ACE-OAuth)", RFC 9200, DOI 10.17487/RFC9200, August 2022,
              <https://www.rfc-editor.org/rfc/rfc9200>.

Appendix A.  ietf-coreconf YANG module

   <CODE BEGINS> file "ietf-coreconf@2023-07-10.yang"
   module ietf-coreconf {
     yang-version 1.1;

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

     import ietf-datastores {
       prefix ds;
     }

     import ietf-restconf {
       prefix rc;

Veillette, et al.        Expires 25 January 2024               [Page 36]
Internet-Draft                  CORECONF                       July 2023

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

     organization
       "IETF Core Working Group";

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

        Alexander Pelov
        <mailto:alexander@ackl.io>

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

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

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

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

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

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

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

     identity unified {
       base ds:datastore;

Veillette, et al.        Expires 25 January 2024               [Page 37]
Internet-Draft                  CORECONF                       July 2023

       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'.";
     }

Veillette, et al.        Expires 25 January 2024               [Page 38]
Internet-Draft                  CORECONF                       July 2023

     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.";

Veillette, et al.        Expires 25 January 2024               [Page 39]
Internet-Draft                  CORECONF                       July 2023

     }

     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;

Veillette, et al.        Expires 25 January 2024               [Page 40]
Internet-Draft                  CORECONF                       July 2023

       description
         "Returned by the CORECONF server when the validation of the
          'pattern' property fails.";
     }

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

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

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

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

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

         leaf error-tag {
           type identityref {
             base error-tag;
           }
           mandatory true;

Veillette, et al.        Expires 25 January 2024               [Page 41]
Internet-Draft                  CORECONF                       July 2023

           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.";
         }
       }
     }
   }
   <CODE ENDS>

Appendix B.  ietf-coreconf .sid file

   {
     "assignment-ranges": [
       {
         "entry-point": 1000,
         "size": 100
       }
     ],
     "module-name": "ietf-coreconf",
     "module-revision": "2023-07-10",
     "items": [
       {
         "namespace": "module",
         "identifier": "ietf-coreconf",
         "sid": 1000
       },
       {
         "namespace": "identity",

Veillette, et al.        Expires 25 January 2024               [Page 42]
Internet-Draft                  CORECONF                       July 2023

         "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
       },

Veillette, et al.        Expires 25 January 2024               [Page 43]
Internet-Draft                  CORECONF                       July 2023

       {
         "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",

Veillette, et al.        Expires 25 January 2024               [Page 44]
Internet-Draft                  CORECONF                       July 2023

         "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
       }
     ]

Veillette, et al.        Expires 25 January 2024               [Page 45]
Internet-Draft                  CORECONF                       July 2023

   }

Acknowledgments

   We are very grateful to Bert Greevenbosch who was one of the original
   authors of the CORECONF specification.

   Mehmet Ersue and Bert Wijnen explained the encoding aspects of PDUs
   transported under SNMP.  Koen Zandberg's implementation input
   motivated massively simplifying (and fixing) the URI construction for
   GET/PUT/POST requests.

   The draft has further benefited from comments (alphabetical order) by
   Rodney Cummings, Dee Denteneer, Esko Dijk, Klaus Hartke, Michael van
   Hartskamp, Tanguy Ropitault, Jürgen Schönwälder, Anuj Sehgal, Zach
   Shelby, Hannes Tschofenig, Michael Verschoor, and Thomas Watteyne.

Contributors

   Ivaylo Petrov
   Acklio
   1137A avenue des Champs Blancs
   35510 Cesson-Sevigne
   France
   Email: ivaylo@ackl.io

Authors' Addresses

   Michel Veillette (editor)
   Trilliant Networks Inc.
   610 Rue du Luxembourg
   Granby Quebec J2J 2V2
   Canada
   Email: michel.veillette@trilliant.com

   Peter van der Stok (editor)
   consultant
   Phone: +31-492474673 (Netherlands), +33-966015248 (France)
   Email: stokcons@bbhmail.nl
   URI:   www.vanderstok.org

Veillette, et al.        Expires 25 January 2024               [Page 46]
Internet-Draft                  CORECONF                       July 2023

   Alexander Pelov
   Acklio
   2bis rue de la Chataigneraie
   35510 Cesson-Sevigne
   France
   Email: a@ackl.io

   Andy Bierman
   YumaWorks
   685 Cochran St.
   Suite #160
   Simi Valley, CA 93065
   United States of America
   Email: andy@yumaworks.com

   Carsten Bormann (editor)
   Universität Bremen TZI
   Postfach 330440
   D-28359 Bremen
   Germany
   Phone: +49-421-218-63921
   Email: cabo@tzi.org

Veillette, et al.        Expires 25 January 2024               [Page 47]