Skip to main content

YANG Metadata Annotation for Immutable Flag
draft-ietf-netmod-immutable-flag-14

Document Type Active Internet-Draft (netmod WG)
Authors Qiufang Ma , Qin Wu , Balázs Lengyel , Hongwei Li
Last updated 2026-07-07 (Latest revision 2026-07-02)
Replaces draft-ma-netmod-immutable-flag
RFC stream Internet Engineering Task Force (IETF)
Intended RFC status Proposed Standard
Formats
Yang Validation 0 errors, 0 warnings
Reviews
Additional resources Mailing list discussion
Stream WG state Submitted to IESG for Publication
Document shepherd Kent Watsen
Shepherd write-up Show Last changed 2026-04-29
IESG IESG state RFC Ed Queue
Action Holders
(None)
Consensus boilerplate Yes
Telechat date (None)
Responsible AD Mahesh Jethanandani
Send notices to kent+ietf@watsen.net
IANA IANA review state IANA OK - Actions Needed
IANA action state In Progress
IANA expert review state Expert Reviews OK
RFC Editor RFC Editor state Blocked
Details
draft-ietf-netmod-immutable-flag-14
netmod                                                        Q. Ma, Ed.
Internet-Draft                                                     Q. Wu
Updates: 8040, 8526 (if approved)                                 Huawei
Intended status: Standards Track                         B. Lengyel, Ed.
Expires: 3 January 2027                                         Ericsson
                                                                   H. Li
                                                                     HPE
                                                             2 July 2026

              YANG Metadata Annotation for Immutable Flag
                  draft-ietf-netmod-immutable-flag-14

Abstract

   This document defines a mechanism to formally document an existing
   behavior, implemented by servers of YANG-driven network management
   protocols (e.g., NETCONF and RESTCONF), on the immutability of some
   system-provided nodes, using a YANG metadata annotation called
   "immutable" to flag which nodes are immutable.

   Clients may use "immutable" annotations provided by the server, to
   know beforehand why certain otherwise valid configuration requests
   will cause the server to return an error.

   The immutable flag is descriptive, documenting an existing behavior,
   not prescriptive, dictating server behaviors.

   This document updates RFC 8040 and RFC 8526.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Network Modeling
   Working Group mailing list (netmod@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/netmod/.

   Source for this draft and an issue tracker can be found at
   https://github.com/netmod-wg/immutable-flag.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

Ma, et al.               Expires 3 January 2027                 [Page 1]
Internet-Draft               immutable flag                    July 2026

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 3 January 2027.

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Updates to RFC 8040 . . . . . . . . . . . . . . . . . . .   4
     1.2.  Updates to RFC 8526 . . . . . . . . . . . . . . . . . . .   4
     1.3.  Editorial Note (To be removed by RFC Editor)  . . . . . .   4
   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   5
   3.  Applicability . . . . . . . . . . . . . . . . . . . . . . . .   6
   4.  "Immutable" Metadata Annotation . . . . . . . . . . . . . . .   6
     4.1.  Definition  . . . . . . . . . . . . . . . . . . . . . . .   6
     4.2.  "with-immutability" Parameter . . . . . . . . . . . . . .   7
       4.2.1.  NETCONF Extensions to Support "with-immutability" . .   7
       4.2.2.  RESTCONF Extensions to Support "with-immutability"  .   8
   5.  Use of Immutable Flag for Different Statements  . . . . . . .   8
     5.1.  The "leaf" Statement  . . . . . . . . . . . . . . . . . .   8
     5.2.  The "leaf-list" Statement . . . . . . . . . . . . . . . .   9
     5.3.  The "container" Statement . . . . . . . . . . . . . . . .   9
     5.4.  The "list" Statement  . . . . . . . . . . . . . . . . . .   9
     5.5.  The "anydata" Statement . . . . . . . . . . . . . . . . .  10
     5.6.  The "anyxml" Statement  . . . . . . . . . . . . . . . . .  10
   6.  Immutability of Interior Nodes  . . . . . . . . . . . . . . .  10
   7.  System Configuration Datastore Interactions . . . . . . . . .  11

Ma, et al.               Expires 3 January 2027                 [Page 2]
Internet-Draft               immutable flag                    July 2026

   8.  NACM Interactions . . . . . . . . . . . . . . . . . . . . . .  11
   9.  YANG Module . . . . . . . . . . . . . . . . . . . . . . . . .  11
   10. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  14
     10.1.  The "IETF XML" Registry  . . . . . . . . . . . . . . . .  14
     10.2.  The "YANG Module Names" Registry . . . . . . . . . . . .  14
     10.3.  RESTCONF Capability URN Registry . . . . . . . . . . . .  14
   11. Operational Considerations  . . . . . . . . . . . . . . . . .  14
   12. Security Considerations . . . . . . . . . . . . . . . . . . .  15
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  15
     13.2.  Informative References . . . . . . . . . . . . . . . . .  17
   Appendix A.  Sample Use Cases . . . . . . . . . . . . . . . . . .  18
     A.1.  UC1: Modeling of Server Capabilities  . . . . . . . . . .  18
     A.2.  UC2: Hardware-based Auto-configuration - Interface
           Example . . . . . . . . . . . . . . . . . . . . . . . . .  19
     A.3.  UC3: Predefined Administrator Roles . . . . . . . . . . .  19
     A.4.  UC4: Declaring Immutable System Configuration from the
           Perspective of a Logical Network Element (LNE)  . . . . .  20
   Appendix B.  Examples of Server's Immutable Behavior  . . . . . .  20
     B.1.  NETCONF Example to Retrieve Immutable Configuration . . .  22
     B.2.  RESTCONF Example to Retrieve Immutable Configuration  . .  23
     B.3.  The Inheritance of Immutability . . . . . . . . . . . . .  25
     B.4.  Immutability of the list  . . . . . . . . . . . . . . . .  25
     B.5.  Immutability of the leaf-list . . . . . . . . . . . . . .  26
     B.6.  Error Responses to Clients Overriding Immutable
           Configuration . . . . . . . . . . . . . . . . . . . . . .  26
   Appendix C.  Existing Implementations . . . . . . . . . . . . . .  28
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  29
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  29

1.  Introduction

   This document defines a YANG metadata annotation [RFC7952] to
   formally document an existing model handling behavior that has been
   used by multiple standard organizations (e.g., 3GPP TS 32.156
   [TS32.156], 28.623 [TS28.623], and ONF TR-531 [TR-531]) and vendors.

   YANG [RFC7950] is a data modeling language used to model both state
   and configuration data, based on the "config" statement.  However,
   there exists some system configuration data that cannot be modified
   by clients (that is, it is immutable), but still needs to be declared
   as "config true" to:

   *  allow configuration of data nodes under immutable lists or
      containers;

   *  place "when", "must" and "leafref" constraints between
      configuration and immutable nodes;

Ma, et al.               Expires 3 January 2027                 [Page 3]
Internet-Draft               immutable flag                    July 2026

   *  ensure the existence of specific list entries that are provided
      and needed by the system, while additional list entries can be
      created, modified or deleted.

   If a server always rejects a client's attempt to override some
   system-provided data because it internally thinks the data is
   immutable, it should document it towards the clients in a machine-
   readable way rather than writing as plain text in the "description"
   statement.

   This document defines an approach to formally document an existing
   behavior, implemented by servers in production, on the immutability
   of some system-provided data, using a YANG metadata annotation
   [RFC7952] called "immutable" to flag which nodes are immutable.  A
   server MUST NOT set the immutable flag to true for configuration data
   that is not system-provided.  This document does not regulate server
   behaviors.  That said, it is expected that a server will return an
   error with an error-tag value of "invalid-value" if a client attempts
   to modify an immutable node.

   A non-exhaustive list of already implemented and potential use cases
   is provided below:

   *  UC1: Modeling of server capabilities (Appendix A.1)

   *  UC2: Hardware based auto-configuration (Appendix A.2)

   *  UC3: Predefined administrator roles (Appendix A.3)

   *  UC4: Declaring immutable system configuration from the perspective
      of a Logical Network Element (LNE) (Appendix A.4)

1.1.  Updates to RFC 8040

   This document updates Sections 4.8 and 9.1.1 of [RFC8040] to add an
   additional query parameter named "with-immutability", as specified in
   Section 4.2.2.

1.2.  Updates to RFC 8526

   This document updates Section 3.1.1 of [RFC8526] to add an additional
   input parameter named "with-immutability" for the <get-data>
   operation, as specified in Section 4.2.1.

1.3.  Editorial Note (To be removed by RFC Editor)

   Note to the RFC Editor: This section is to be removed prior to
   publication.

Ma, et al.               Expires 3 January 2027                 [Page 4]
Internet-Draft               immutable flag                    July 2026

   This document contains placeholder values that need to be replaced
   with finalized values at the time of publication.  This note
   summarizes all of the substitutions that are needed.  No other RFC
   Editor instructions are specified elsewhere in this document.

   Please apply the following replacements:

   *  XXXX --> the assigned RFC number for this draft

   *  YYYY --> RFC number assigned to [I-D.ietf-netmod-system-config]

   *  2026-05-26 --> the actual date of the publication of this document

2.  Conventions and Definitions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   The document uses the following term defined in [RFC6241]:

   *  configuration data

   The document uses the following terms defined in [RFC7950]:

   *  data node

   *  leaf

   *  leaf-list

   *  container

   *  list

   *  anydata

   *  anyxml

   *  interior node

   *  data tree

   The document uses the following term defined in [RFC8341]:

   *  access operation

Ma, et al.               Expires 3 January 2027                 [Page 5]
Internet-Draft               immutable flag                    July 2026

   The document uses the following terms defined in [RFC8342]:

   *  client

   *  server

   The document uses the following term defined in
   [I-D.ietf-netmod-system-config]:

   *  system configuration

   This document defines the following term:

   immutable flag:  A read-only server-provided metadata value that
      describes the immutability of the configuration, which is conveyed
      via a YANG metadata annotation called "immutable" with a boolean
      value.

3.  Applicability

   While the immutable flag applies to all configuration nodes, its
   value MUST NOT be set to true for configuration data that is not
   system configuration.

   The immutable flag is only visible in read-only datastores (i.e.,
   <system> [I-D.ietf-netmod-system-config], <intended>, and
   <operational>) when a "with-immutability" parameter is carried
   (Section 4.2).  However, this only serves as descriptive information
   about the instance node itself, but has no effect on the handling of
   the read-only datastore.  If the immutable flag is requested to be
   returned for an invalid datastore (i.e., any datastore other than
   <system>, <intended>, or <operational>), then the server MUST return
   an error response with the error-tag value "unknown-element".

   Configuration data has the same immutability if it appears in
   different datastores.  The immutability of configuration data is
   protocol and user independent.

4.  "Immutable" Metadata Annotation

4.1.  Definition

   The immutable flag which is defined as the metadata annotation takes
   a boolean value, and it is returned as requested by the client using
   a "with-immutability" parameter (Section 4.2).  If the "immutable"
   metadata annotation for a configuration node is not specified, the
   default "immutable" value is the same as the value of its parent node
   in the data tree (Section 6).  The "immutable" metadata annotation

Ma, et al.               Expires 3 January 2027                 [Page 6]
Internet-Draft               immutable flag                    July 2026

   value for a top-level instance node is "false" if not specified.

   A node annotated as immutable indicates that the server does not
   allow it to be changed by configuring a different value in read-write
   configuration datastores (e.g., <running>), or deleted from the
   intended datastore, which is the merged result of <running> and
   <system> as defined in Section 4 of [I-D.ietf-netmod-system-config].
   The node MAY be explicitly configured by a client in <running> with
   the same value and that configuration in <running> may subsequently
   be removed, but neither of these edits will change the configuration
   in <intended> (if implemented) on the device.

   Note that "immutable" metadata annotations are used to annotate data
   node instances.  A list may have multiple instances in the data tree,
   servers may annotate some of the instances as immutable, while others
   as mutable.

   Servers MUST ignore any immutable annotations sent from the client.

4.2.  "with-immutability" Parameter

   This section specifies the NETCONF [RFC6241] [RFC8526] and RESTCONF
   [RFC8040] protocol extensions to support the "with-immutability"
   parameter.  The "immutable" metadata annotations are not returned in
   a response unless explicitly requested by the client using this
   parameter.

4.2.1.  NETCONF Extensions to Support "with-immutability"

   This document updates [RFC8526] to augment the <get-data> operation
   with an additional parameter named "with-immutability" when
   interacting with read-only datastores.  If present, this parameter
   requests that the server includes the "immutable" metadata
   annotations in its response.

   Figure 1 provides the tree structure [RFC8340] of augmentations to
   NETCONF operations, as defined in the "ietf-immutable-annotation"
   module (Section 9).

   module: ietf-immutable-annotation
     augment /ncds:get-data/ncds:input:
       +---w with-immutability?   empty

               Figure 1: Augmentations to NETCONF Operations

Ma, et al.               Expires 3 January 2027                 [Page 7]
Internet-Draft               immutable flag                    July 2026

   To discover if the "with-immutability" parameter is supported by a
   server, a NETCONF client can query if the server implements "ietf-
   immutable-annotation" module (Section 9) by reading the YANG library
   information from the operational state datastore, as per [RFC8526].

   Refer to Appendix B.1 for an example of a NETCONF operation with
   "with-immutability" input parameter.

4.2.2.  RESTCONF Extensions to Support "with-immutability"

   This document extends Sections 4.8 and 9.1.1 of [RFC8040] to add a
   query parameter named "with-immutability" to the GET operation.  If
   present, this parameter requests that the server includes the
   "immutable" metadata annotations in its response.  This parameter is
   only allowed with no values carried when interacting with read-only
   datastores.  If it has any unexpected value, then a "400 Bad Request"
   status-line MUST be returned.  The error-tag value "invalid-value" is
   used in this case.  RESTCONF protocol operations for the datastore
   resources are defined in [RFC8527].

   To enable a RESTCONF client to discover if the "with-immutability"
   query parameter is supported by a server, the following capability
   URI is defined:

       urn:ietf:params:restconf:capability:with-immutability:1.0

   If the "with-immutability" query parameter URI is listed in the
   "capability" leaf-list defined in Section 9.3 of [RFC8040], then the
   server supports the "with-immutability" query parameter.

   Refer to Appendix B.2 for an example of a RESTCONF operation with
   "with-immutability" query parameter.

5.  Use of Immutable Flag for Different Statements

   This section defines what the immutable flag means to the client for
   each instance of YANG data node statements.

5.1.  The "leaf" Statement

   When a leaf node instance is immutable, it cannot be configured with
   a different value in read-write configuration datastores (e.g.,
   <running>) or removed from <intended> (if implemented).  Though it
   can be created/deleted in read-write configuration datastores (see
   Sections 4.1 and 7).

Ma, et al.               Expires 3 January 2027                 [Page 8]
Internet-Draft               immutable flag                    July 2026

5.2.  The "leaf-list" Statement

   When a leaf-list entry is immutable, it cannot be removed from
   <intended> (if implemented).  Though it can be created/deleted in
   read-write configuration datastores (see Sections 4.1 and 7).

   The immutable annotation attached to an individual leaf-list entry
   provides immutability with respect to the entry itself.  As per the
   restrictions in [RFC7952], annotations cannot be attached to an
   entire leaf-list instance and only to individual leaf-list entries,
   which implies a leaf-list as a whole can only inherit immutability
   from a parent node (e.g., container).

   If a leaf-list as a whole is immutable via inheritance from a parent
   node, any leaf-list entries cannot be added, modified, or reordered
   (if it is ordered-by user).

   Refer to Appendix B.5 for an example of immutability of leaf-lists.

5.3.  The "container" Statement

   When a container node instance is immutable, it cannot be removed
   from <intended> (if implemented).  Though it can be created/deleted
   in read-write configuration datastores (see Sections 4.1 and 7).

   Descendant nodes of a container recursively inherit the immutability
   of the container, unless the immutability is overridden by an
   "immutable" annotation on a descendant node (Section 6).

5.4.  The "list" Statement

   When a list entry is immutable, it cannot be removed from <intended>
   (if implemented).  Though it can be created/deleted in read-write
   configuration datastores (see Sections 4.1 and 7).

   Descendant nodes of a list entry recursively inherit the immutability
   of the list entry, unless the immutability is overridden by an
   "immutable" annotation on a descendant node (Section 6).

   The immutable annotation attached to an individual list entry
   provides immutability with respect to the entry itself.  As per the
   restrictions in [RFC7952], annotations cannot be attached to an
   entire list instance and only to individual list entries, which
   implies a list as a whole can only inherit immutability from a parent
   node (e.g., container).

Ma, et al.               Expires 3 January 2027                 [Page 9]
Internet-Draft               immutable flag                    July 2026

   If a list as a whole is immutable via inheritance from a parent node,
   any list entries cannot be added, removed, or reordered (if it is
   ordered-by user).  Each list entry inherits the immutability of the
   list by default, unless the immutability is overridden by an
   "immutable" annotation on a list entry.

   Refer to Appendix B.4 for an example of immutability of lists.

5.5.  The "anydata" Statement

   When an "anydata" node instance is immutable, it cannot be removed
   from <intended> (if implemented).  Though it can be created/deleted
   in read-write configuration datastores (see Sections 4.1 and 7).

   Additionally, as with all interior nodes, immutability is recursively
   applied to descendants (Section 6).

5.6.  The "anyxml" Statement

   When an "anyxml" node instance is immutable, it cannot be removed
   from <intended> (if implemented).  Though it can be created/deleted
   in read-write configuration datastores (see Sections 4.1 and 7).

   Additionally, as with all interior nodes, immutability is recursively
   applied to descendants (Section 6).

6.  Immutability of Interior Nodes

   Immutability is a property of a configuration data node instance,
   conveyed as metadata [RFC7952].  It is recursively applied to
   descendants, which may reset the immutability state as needed,
   thereby affecting their descendants.  There is no limit to the number
   of times the immutability state may change in a data tree.

   If the "immutable" metadata annotation for a returned child node is
   omitted, it has the same immutability as its parent node.  For each
   top-level returned node, the default "immutable" annotation value is
   false unless explicitly annotated.  Servers may suppress the
   annotation if it is inherited from its parent node or uses the
   default value as the top-level node, but are not precluded from
   returning the annotation on every single element.

   Refer to Appendix B.3 for an example of how immutability is
   recursively inherited or explicitly reset by descendants.

Ma, et al.               Expires 3 January 2027                [Page 10]
Internet-Draft               immutable flag                    July 2026

7.  System Configuration Datastore Interactions

   Immutable configuration can only be created, updated and deleted by
   the server, and it is present in <system>, if implemented.  That
   said, the existence of immutable configuration is independent of
   whether <system> is implemented or not.  For example, a server that
   does not support <system> may have predefined hardware-specific
   configuration in use that cannot be overridden or removed by clients.
   Not all system configuration data is immutable.  Immutable
   configuration does not appear in <running> unless it is explicitly
   configured.

   As specified in Section 4.1, a client MAY create/delete immutable
   nodes with same values as defined by server in read-write
   configuration datastore (e.g., <candidate>, <running>), which merely
   makes immutable nodes visible/invisible in the datastore.

8.  NACM Interactions

   The server rejects an operation request due to immutability when it
   tries to perform the operation on the request data.  Any immutability
   checking MUST be performed after access control decisions, if the
   Network Configuration Access Control Model (NACM) [RFC8341] is
   implemented on a server.  For example, if an operation requests to
   override an immutable configuration node, but the server checks the
   user is not authorized to perform the requested access operation on
   the request data, the request is rejected with an "access-denied"
   error.

9.  YANG Module

   This module imports definitions from [RFC7952], [RFC8342], [RFC8526],
   and [I-D.ietf-netmod-system-config].

   <CODE BEGINS> file "ietf-immutable-annotation@2026-05-26.yang"
   module ietf-immutable-annotation {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-immutable-annotation";
     prefix imma;

     import ietf-yang-metadata {
       prefix md;
       reference
         "RFC 7952: Defining and Using Metadata with YANG";
     }
     import ietf-netconf-nmda {
       prefix ncds;
       reference

Ma, et al.               Expires 3 January 2027                [Page 11]
Internet-Draft               immutable flag                    July 2026

         "RFC 8526: NETCONF Extensions to Support the Network
                    Management Datastore Architecture";
     }
     import ietf-system-datastore {
       prefix sysds;
       reference
         "RFC YYYY: System-defined Configuration";
     }
     import ietf-datastores {
       prefix ds;
       reference
         "RFC 8342: Network Management Datastore Architecture
                    (NMDA)";
     }

     organization
       "IETF Network Modeling (NETMOD) Working Group";
     contact
       "WG Web:  https://datatracker.ietf.org/wg/netmod/
        WG List: NETMOD <mailto:netmod@ietf.org>

        Editor: Qiufang Ma
                <mailto:maqiufang1@huawei.com>
        Editor: Qin Wu
                <mailto:bill.wu@huawei.com>
        Editor: Balazs Lengyel
                <mailto:balazs.lengyel@ericsson.com>
        Editor: Hongwei Li
                <mailto:flycoolman@gmail.com>";
     description
       "This module defines a metadata annotation called 'immutable'
        to allow the server to formally document existing behavior on
        the mutability of some system configuration. Clients may use
        'immutable' metadata annotation provided by the server to know
        beforehand why certain otherwise valid configuration requests
        will cause the server to return an error.

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

        All revisions of IETF and IANA published modules can be found

Ma, et al.               Expires 3 January 2027                [Page 12]
Internet-Draft               immutable flag                    July 2026

        at the YANG Parameters registry group
        (https://www.iana.org/assignments/yang-parameters).

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

     revision 2026-05-26 {
       description
         "Initial revision.";
       reference
         "RFC XXXX: YANG Metadata Annotation for Immutable Flag";
     }

     md:annotation immutable {
       type boolean;
       description
         "The 'immutable' metadata annotation indicates the
          immutability of an instantiated data node. It takes as a
          value 'true' or 'false'. An immutable node cannot be changed
          via configuring a different value in read-write configuration
          datastores (e.g., <running>), though it can be created/deleted
          in read-write configuration datastores. If not specified for
          a given configuration data node, the immutability is the
          same as the value of its parent node in the data tree. The
          default value of 'immutable' annotation for a top-level
          instance node is false if not specified.";
     }

     augment "/ncds:get-data/ncds:input" {
       description
         "Allows the server to include 'immutable' metadata
          annotations in its response to get-data operation.";
       leaf with-immutability {
         when
           "derived-from-or-self(../ncds:datastore,'sysds:system') "
         + "or derived-from-or-self(../ncds:datastore,'ds:intended') "
         + "or derived-from-or-self(../ncds:datastore,'ds:operational')";
         type empty;
         description
           "Requests that immutable metadata annotations be returned.

            This parameter is only valid when the datastore is system,
            intended, or operational. See RFC XXXX Section 3 for the
            required error behavior when used with other datastores.";
       }
     }
   }
   <CODE ENDS>

Ma, et al.               Expires 3 January 2027                [Page 13]
Internet-Draft               immutable flag                    July 2026

10.  IANA Considerations

10.1.  The "IETF XML" Registry

   IANA is requested to register the following URI in the "ns" registry
   within the "IETF XML Registry" group [RFC3688]:

   URI: urn:ietf:params:xml:ns:yang:ietf-immutable-annotation
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace.

10.2.  The "YANG Module Names" Registry

   IANA is requested to register the following YANG module in the "YANG
   Module Names" registry [RFC6020] within the "YANG Parameters"
   registry group.

   Name: ietf-immutable-annotation
   Maintained by IANA?  N
   Namespace: urn:ietf:params:xml:ns:yang:ietf-immutable-annotation
   Prefix: imma
   Reference: RFC XXXX

10.3.  RESTCONF Capability URN Registry

   IANA is requested to register the following capability identifier
   URNs in the "RESTCONF Capability URNs" registry defined in [RFC8040]:

   Index:  :with-immutability

   Capability Identifier:  urn:ietf:params:restconf:capability:with-
      immutability:1.0

11.  Operational Considerations

   This document specifies a mechanism for clients to discover immutable
   system configuration before attempting modifications.  Clients can
   leverage this information to avoid sending edit requests that would
   otherwise fail due to immutable nodes.

Ma, et al.               Expires 3 January 2027                [Page 14]
Internet-Draft               immutable flag                    July 2026

   The mechanism defined in this document is backward compatible with
   existing implementations.  A legacy client unware of this mechanism
   will not include the "with-immutability" query parameter in its
   retrieval requests.  Consequently, servers will process the request
   normally without returning any "immutable" metadata annotations.
   Conversely, a client explicitly requesting the immutable flag from a
   legacy server may either receive an error response for unsupported
   query parameter or have the parameter ignored, depending on the
   server's implementation.

12.  Security Considerations

   This section is modeled after the template described in Section 3.7.1
   of [RFC9907].

   The "ietf-immutable-annotation" YANG module defines a data model that
   is designed to be accessed via YANG-based management protocols, such
   as the Network Configuration Protocol (NETCONF) [RFC6241] and
   RESTCONF [RFC8040].  These YANG-based management protocols (1) have
   to use a secure transport layer (e.g., Secure Shell (SSH) [RFC4252],
   TLS [I-D.ietf-tls-rfc8446bis], and QUIC [RFC9000]) and (2) have to
   use mutual authentication.

   The Network Configuration Access Control Model (NACM) [RFC8341]
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.

   The YANG module specified in this document defines a metadata
   annotation, it also extends the RPC operations of the NETCONF
   protocol in [RFC6241] and [RFC8526].

   The "immutable" metadata annotation exposes the immutability of
   configuration data, which may provide hints for attackers to find
   vulnerabilities in the network, e.g., to leverage the immutability of
   some configuration to better craft an attack.  Since immutable
   annotations are attached to the instances of configuration data
   nodes, it is only accessible to clients that have the permissions to
   read the annotated configuration nodes.

   The security considerations for the NETCONF protocol operations (see
   Section 9 of [RFC6241] and Section 6 of [RFC8526]) also apply to the
   operations extended in this document.

13.  References

13.1.  Normative References

Ma, et al.               Expires 3 January 2027                [Page 15]
Internet-Draft               immutable flag                    July 2026

   [I-D.ietf-netmod-system-config]
              Ma, Q., Wu, Q., and C. Feng, "System-defined
              Configuration", Work in Progress, Internet-Draft, draft-
              ietf-netmod-system-config-20, 28 January 2026,
              <https://datatracker.ietf.org/doc/html/draft-ietf-netmod-
              system-config-20>.

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

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

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

   [RFC7952]  Lhotka, L., "Defining and Using Metadata with YANG",
              RFC 7952, DOI 10.17487/RFC7952, August 2016,
              <https://www.rfc-editor.org/rfc/rfc7952>.

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

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

   [RFC8341]  Bierman, A. and M. Bjorklund, "Network Configuration
              Access Control Model", STD 91, RFC 8341,
              DOI 10.17487/RFC8341, March 2018,
              <https://www.rfc-editor.org/rfc/rfc8341>.

Ma, et al.               Expires 3 January 2027                [Page 16]
Internet-Draft               immutable flag                    July 2026

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

   [RFC8526]  Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "NETCONF Extensions to Support the Network
              Management Datastore Architecture", RFC 8526,
              DOI 10.17487/RFC8526, March 2019,
              <https://www.rfc-editor.org/rfc/rfc8526>.

   [RFC8527]  Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "RESTCONF Extensions to Support the Network
              Management Datastore Architecture", RFC 8527,
              DOI 10.17487/RFC8527, March 2019,
              <https://www.rfc-editor.org/rfc/rfc8527>.

13.2.  Informative References

   [I-D.ietf-tls-rfc8446bis]
              Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", Work in Progress, Internet-Draft, draft-
              ietf-tls-rfc8446bis-14, 13 September 2025,
              <https://datatracker.ietf.org/doc/html/draft-ietf-tls-
              rfc8446bis-14>.

   [RFC4252]  Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
              Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
              January 2006, <https://www.rfc-editor.org/rfc/rfc4252>.

   [RFC8340]  Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
              BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
              <https://www.rfc-editor.org/rfc/rfc8340>.

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

   [RFC8530]  Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X.
              Liu, "YANG Model for Logical Network Elements", RFC 8530,
              DOI 10.17487/RFC8530, March 2019,
              <https://www.rfc-editor.org/rfc/rfc8530>.

   [RFC8792]  Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
              "Handling Long Lines in Content of Internet-Drafts and
              RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
              <https://www.rfc-editor.org/rfc/rfc8792>.

Ma, et al.               Expires 3 January 2027                [Page 17]
Internet-Draft               immutable flag                    July 2026

   [RFC9000]  Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/rfc/rfc9000>.

   [RFC9907]  Bierman, A., Boucadair, M., Ed., and Q. Wu, "Guidelines
              for Authors and Reviewers of Documents Containing YANG
              Data Models", BCP 216, RFC 9907, DOI 10.17487/RFC9907,
              March 2026, <https://www.rfc-editor.org/rfc/rfc9907>.

   [TR-531]   ONF, "UML to YANG Mapping Guidelines", July 2018,
              <https://opennetworking.org/wp-content/uploads/2018/08/TR-
              531_UML-YANG_Mapping_Gdls_v1.1-1-
              1.pdfhttps://opennetworking.org/wp-
              content/uploads/2018/08/TR-531_UML-
              YANG_Mapping_Gdls_v1.1-1-1.pdf>.

   [TS28.623] 3GPP, "Telecommunication management; Generic Network
              Resource Model (NRM) Integration Reference Point (IRP);
              Solution Set (SS) definitions",
              <https://www.3gpp.org/ftp/Specs/
              archive/28_series/28.623/28623-i02.zip>.

   [TS32.156] 3GPP, "Telecommunication management; Fixed Mobile
              Convergence (FMC) Model repertoire",
              <https://www.3gpp.org/ftp/Specs/
              archive/32_series/32.156/32156-h10.zip>.

Appendix A.  Sample Use Cases

A.1.  UC1: Modeling of Server Capabilities

   System capabilities might be represented as immutable configuration.
   Configurable data nodes might need constraints specified using
   "when", "must", or "path" statements to ensure that configuration is
   set according to the system's capabilities.  For example,
   configurable timer (e.g., for an "interface-timer" or a "bfd-
   interval-timer") values are dependent on the underlying system timer
   resource limits.

   *  A timer might only support the values 1, 5, and 8 seconds,
      determined by the system capabilities.  This is defined in the
      leaf-list 'supported-timer'.

   *  When the configurable 'interface-timer' leaf is set by a client,
      it should be ensured that one of the supported values is used.
      The natural solution would be to make the "interface-timer" a
      leafref pointing at the "supported-timer".

Ma, et al.               Expires 3 January 2027                [Page 18]
Internet-Draft               immutable flag                    July 2026

   However, this is not possible as "supported-timer" must be read-only
   thus "config false" while 'interface-timer' must be writable thus
   "config true".  According to the rules of YANG it is not allowed to
   put a constraint between "config true" and "config false" data nodes
   (Section 9.9 of [RFC7950]).

   A solution is that the 'supported-timer' data node in the YANG Model
   shall be defined as "config true" and shall also be marked with the
   "immutable" annotation making it unchangeable.  After this the
   'interface-timer' shall be defined as a leafref pointing at the
   'supported-timer-values'.

A.2.  UC2: Hardware-based Auto-configuration - Interface Example

   [RFC8343] defines a YANG data model for the management of network
   interfaces.  When a system-controlled interface is physically
   present, the system creates an interface entry with valid name and
   type values in <system> (if exists, see
   [I-D.ietf-netmod-system-config]).

   The system-generated type value is dependent on and represents the
   hardware present, and as a consequence cannot be changed by clients.
   If a client tries to set the type of an interface to a value that can
   never be used by the system, the request will be rejected by the
   server.  The data is modeled as "config true" and thus should be
   annotated as immutable.

   An alternative would be to model the list and these leafs as "config
   false", but that does not work because:

   *  The list cannot be marked as "config false", because it needs to
      contain configurable child nodes, e.g., IP address or enabled;

   *  The key leaf (name) cannot be marked as "config false" as the list
      itself is "config true";

   *  The type cannot be marked "config false", because we may need to
      reference the type to make different configuration nodes
      conditionally available.

A.3.  UC3: Predefined Administrator Roles

   User and group management is fundamental for setting up access
   control rules (see Section 2.5 of [RFC8341]).

   A device may provide a predefined user account (e.g., a system
   administrator that is always available and has full privileges) for
   initial system set up and management of other users/groups.  It is

Ma, et al.               Expires 3 January 2027                [Page 19]
Internet-Draft               immutable flag                    July 2026

   possible that a new user/group can be defined granted particular
   privileges, but the predefined administrator account and its granted
   access are immutable.

A.4.  UC4: Declaring Immutable System Configuration from the Perspective
      of a Logical Network Element (LNE)

   An LNE, as described in [RFC8530], is an independently managed
   virtual network device made up of resources allocated to it from its
   host or parent network device.  The host device may allocate some
   resources to an LNE, which from an LNE's perspective is provided by
   the system and may not be modifiable.

   For example, a host may allocate an interface to an LNE with a valid
   MTU value as its management interface, so that the allocated
   interface should then be accessible as the LNE-specific instance of
   the interface model.  The assigned MTU value is system-created and
   immutable from the context of the LNE.

Appendix B.  Examples of Server's Immutable Behavior

   This section provides some examples to illustrate the server's
   behavior with immutable flag.  These examples are not intended as
   recommendations for real-world deployments.  Long lines within
   examples are handled in accordance with the line-wrapping specified
   in [RFC8792].

   The following fictional module is used throughout this section:

   module example-user-group {
     yang-version 1.1;
     namespace "urn:example:user-group";
     prefix ex-urp;

     import iana-crypt-hash {
       prefix ianach;
     }

     organization
       "Example, Inc.";

     contact
       "Support at example.com";

     description
       "An example module for basic user and group management.";

     revision "2026-05-26" {

Ma, et al.               Expires 3 January 2027                [Page 20]
Internet-Draft               immutable flag                    July 2026

       description
         "Initial version.";
       reference
         "RFC XXXX: YANG Metadata Annotation for Immutable Flag";
     }

     container user-groups {
       description
         "A container for user and group management.";
       list group {
         key "name";
         description
           "Specifies the list of access user-groups.";
         leaf name {
           type string;
           description
             "Indicates a unique name identifier for the user-group.";
         }
         leaf description {
           type string;
           description
             "Provides a human-readable description of the group.";
         }
         leaf access-level {
           type enumeration {
             enum admin;
             enum power;
             enum normal;
             enum guest;
           }
           description
             "Indicates permission level assigned to the group.";
         }
         list user {
           key "name";
           description
             "A list of users that belong to a group.";
           leaf name {
             type string;
             description
               "Specifies a unique name identifier for the user.";
           }
           leaf password {
             type ianach:crypt-hash;
             description
               "Records a cryptographically-hashed user password.";
           }
           leaf full-name {

Ma, et al.               Expires 3 January 2027                [Page 21]
Internet-Draft               immutable flag                    July 2026

             type string;
             description
               "Indicates a human-readable full name of the user.";
           }
         }
         leaf-list tag {
           type string;
           ordered-by user;
           description
             "Indicates user-ordered tags for categorizing the
              user-group.";
         }
       }
     }
   }

B.1.  NETCONF Example to Retrieve Immutable Configuration

   Figure 2 illustrates a NETCONF request example to retrieve "user-
   groups" configuration in <system> with "with-immutability" parameter
   and the response that a server might return if it supports this query
   parameter.  For illustrative clarity, some annotations that could
   otherwise be omitted are shown explicitly in the response.

   =============== NOTE: '\' line wrapping per RFC 8792 ================

   <rpc message-id="101"
        xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <get-data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"
               xmlns:sysds="urn:ietf:params:xml:ns:yang:ietf-system-\
                                                             datastore">
       <datastore>sysds:system</datastore>
       <subtree-filter>
         <user-groups xmlns="urn:example:user-group"/>
       </subtree-filter>
       <with-immutability/>
     </get-data>
   </rpc>

   <rpc-reply message-id="101"
          xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda">
       <user-groups xmlns="urn:example:user-group"
         xmlns:imma="urn:ietf:params:xml:ns:yang:ietf-immutable-\
                                                             annotation"
         imma:immutable="false">
         <group imma:immutable="true">
           <name>administrator</name>

Ma, et al.               Expires 3 January 2027                [Page 22]
Internet-Draft               immutable flag                    July 2026

           <description imma:immutable="false">administrator group</\
                                                            description>
           <access-level>admin</access-level>
           <user>
             <name>ex-username-1</name>
             <password>$5$rounds=10000$mysalt123456789$l4BjA1p/8q.qCYJ.\
                                  2pLqjR5mCJf2bP7cLpYWmnC7Hq8</password>
           </user>
           <user imma:immutable="false">
             <name>ex-username-2</name>
             <password>$1$/h1234q$abcdef1234567890abcdef</password>
           </user>
           <tag>system</tag>
           <tag>non-editable</tag>
         </group>
         <group imma:immutable="false">
           <name>power-users</name>
           <description>Power user group</description>
           <access-level>power</access-level>
           <user>
             <name>ex-username-3</name>
             <password>$1$/h4567q$abcdef2345678901abcdef</password>
           </user>
           <tag>system</tag>
           <tag>editable</tag>
         </group>
       </user-groups>
     </data>
   </rpc-reply>

      Figure 2: A NETCONF Example to Retrieve Immutable Configuration

B.2.  RESTCONF Example to Retrieve Immutable Configuration

   Figure 3 illustrates a RESTCONF request example to retrieve "user-
   groups" configuration in <system> with "with-immutability" query
   parameter and the response a server might return if it supports this
   query parameter.  The JSON representation of the metadata annotations
   in the response follows the encoding specified in Section 5.2 of
   [RFC7952].  For illustrative clarity, some annotations that could
   otherwise be omitted are shown explicitly in the response.

   =============== NOTE: '\' line wrapping per RFC 8792 ================

   GET /restconf/ds/ietf-system-datastore:system/example-user-group:\
                                  user-groups?with-immutability HTTP/1.1
   Host: example.com
   Accept: application/yang-data+json

Ma, et al.               Expires 3 January 2027                [Page 23]
Internet-Draft               immutable flag                    July 2026

   HTTP/1.1 200 OK
   Date: Fri, 9 Jan 2026 15:56:30 GMT
   Server: example-server
   Content-Type: application/yang-data+json
   Cache-Control: no-cache
   ETag: "a74eefc993a2b"
   Last-Modified: Mon, 5 Jan 2026 14:02:14 GMT

   {
     "example-user-group:user-groups": {
       "@": {
         "ietf-immutable-annotation:immutable": false
       },
       "group": [
         {
           "@": {
             "ietf-immutable-annotation:immutable": true
           },
           "name": "administrator",
           "description": "administrator group",
           "@description": {
             "ietf-immutable-annotation:immutable": false
           },
           "access-level": "admin",
           "user": [
             {
               "name": "ex-username-1",
               "password": "$5$rounds=10000$mysalt123456789$l4BjA1p/8q.\
                                       qCYJ.2pLqjR5mCJf2bP7cLpYWmnC7Hq8"
             },
             {
               "@": {
                 "ietf-immutable-annotation:immutable": false
               },
               "name": "ex-username-2",
               "password": "$1$/h1234q$abcdef1234567890abcdef"
             }
           ],
           "tag": ["system", "non-editable"]
         },
         {
           "@": {
             "ietf-immutable-annotation:immutable": false
           },
           "name": "power-users",
           "description": "Power user group",
           "access-level": "power",
           "user": [

Ma, et al.               Expires 3 January 2027                [Page 24]
Internet-Draft               immutable flag                    July 2026

             {
               "name": "ex-username-3",
               "password": "$1$/h4567q$abcdef2345678901abcdef"
             }
           ],
           "tag": ["system", "editable"]
         }
       ]
     }
   }

      Figure 3: A RESTCONF Example to Retrieve Immutable Configuration

B.3.  The Inheritance of Immutability

   In the example in Figure 2 and Figure 3, there are two "group" list
   entries inside "user-groups" container node.  The "immutable"
   metadata attribute for "user-groups" container instance is "false",
   which is also its default value as the top-level element, and thus
   can be omitted.  The "administrator" list entry is immutable with the
   immutability of its descendant nodes "description" and "user" list
   entry of "ex-username-2" being explicitly toggled.  Other descendant
   nodes (e.g., "access-level", "ex-username-1" user list entry, and
   "tag" leaf-list) inside "administrator" list entry inherit the
   immutability of the list entry, thus are also immutable.

   The "immutable" metadata attribute for "power-users" list entry is
   "false", which is also the same value as its parent node (i.e., the
   "user-groups" container), and thus can be omitted.  Descendant nodes
   (e.g., "description", "access-level", "user" list, and "tag" leaf-
   list) inside "power-users" group inherit the immutability of the list
   entry, thus are also mutable.

B.4.  Immutability of the list

   In the example in Figure 2 and Figure 3, the "group" list as a whole
   inherits immutability from the container "user-groups", which is
   mutable.  One of the list entry named "administrator" is immutable,
   and the other entry named "power-user" is mutable.  The client is
   able to copy the entire "user-groups" container in <running>, add new
   "group" entries, modify the values of descendant nodes of "power-
   users" list entry, but the values of descendant nodes of
   "administrator" list entry cannot be overridden with different values
   except for the "description" and "ex-username-2" user list entry
   nodes, which is explicitly reset to be mutable.  The client may also
   subsequently delete any copied "group" entries or the entire "user-
   groups" container, which will not prevent the deleted data being
   present in <intended> (if implemented) assuming it is still contained

Ma, et al.               Expires 3 January 2027                [Page 25]
Internet-Draft               immutable flag                    July 2026

   in <system>.

   The "user" list inside the "administrator" group list entry as a
   whole inherits immutability from the list entry, which is immutable.
   Thus the client cannot add new user entries inside "administrator"
   group.  As one of the user entry named "ex-username-1" is immutable
   through inheritance, and the other "ex-username-2" user entry is
   explicitly set to be mutable.  The client cannot modify the
   "password" parameter, or add a "full-name" value for user "ex-
   username-1".  but is allowed to update (e.g., modify the "password"
   value, or add a "full-name" value) the list entry for user "ex-
   username-2".  The client may copy or subsequently delete any of the
   two list entries in <running>, but there is no way to delete the
   nodes from <intended> (if implemented).

B.5.  Immutability of the leaf-list

   In the example in Figure 2 and Figure 3, the user-ordered "tag" leaf-
   list node inside the "administrator" group entry as a whole inherits
   immutability from the list entry, which is immutable.  Thus the
   client cannot add, modify, or reorder entries, the client may copy or
   subsequently delete any of the two leaf-list entries in <running>,
   but there is no way to delete the nodes from <intended> if those
   entries appear in <system>.

   The leaf-list node instance inside the "power-users" group entry as a
   whole inherits immutability from the list entry, which is mutable.
   Thus the client can add or reorder entries, the client may copy or
   subsequently delete any of the two leaf-list entries in <running>,
   but there is no way to delete the nodes from <intended> if those
   entries appear in <system>.

B.6.  Error Responses to Clients Overriding Immutable Configuration

   This section provides examples of a client's attempts to override
   immutable configuration and error responses that the server might
   return.  Separate examples are provided for NETCONF and RESTCONF
   protocols, in Figure 4 and Figure 5 respectively.

Ma, et al.               Expires 3 January 2027                [Page 26]
Internet-Draft               immutable flag                    July 2026

   =============== NOTE: '\' line wrapping per RFC 8792 ================

   <rpc message-id="102"
        xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <edit-config>
       <target>
         <running/>
       </target>
       <config>
         <user-groups xmlns="urn:example:user-group">
           <group>
             <name>administrator</name>
             <access-level>guest</access-level>
           </group>
         </user-groups>
       </config>
     </edit-config>
   </rpc>

   <rpc-reply message-id="102"
          xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <rpc-error>
       <error-type>application</error-type>
       <error-tag>invalid-value</error-tag>
       <error-severity>error</error-severity>
       <error-path xmlns="urn:example:user-group">
         /user-groups/group[name="administrator"]/access-level
       </error-path>
       <error-message xml:lang="en">
         Invalid access-level value because the target node is marked \
                                                            as immutable
       </error-message>
     </rpc-error>
   </rpc-reply>

      Figure 4: A NETCONF Example to Override Immutable Configuration
                            with Error Response

Ma, et al.               Expires 3 January 2027                [Page 27]
Internet-Draft               immutable flag                    July 2026

   =============== NOTE: '\' line wrapping per RFC 8792 ================

   PATCH /restconf/ds/ietf-datastores:running/example-user-group:user-\
                        groups/group=administrator/access-level HTTP/1.1
   Host: example.com
   Content-Type: application/yang-data+json

   {
     "example-user-group:access-level": "guest"
   }

   HTTP/1.1 400 Bad Request
   Content-Type: application/yang-data+json

   {
     "ietf-restconf:errors": {
       "error": [
         {
           "error-type": "application",
           "error-tag": "invalid-value",
           "error-severity": "error",
           "error-path": "/example-user-group:user-groups/group[name='\
                                          administrator']/access-level",
           "error-message": "Invalid access-level value because the \
                                     target node is marked as immutable"
         }
       ]
     }
   }

      Figure 5: A RESTCONF Example to Override Immutable Configuration
                            with Error Response

Appendix C.  Existing Implementations

   Note to the RFC Editor: Please remove this section prior to
   publication.

   There are already a number of full or partial implementations of
   immutability:

   *  3GPP TS 32.156 [TS32.156] and 28.623 [TS28.623]: Requirements and
      a partial solution

   *  ITU-T using ONF TR-531 [TR-531] concept on information model level
      but no YANG representation.

   *  Ericsson: requirements and solution

Ma, et al.               Expires 3 January 2027                [Page 28]
Internet-Draft               immutable flag                    July 2026

   *  YumaPro: requirements and solution

   *  Nokia: partial requirements and solution

   *  Huawei: partial requirements and solution

   *  Cisco using the concept at least in some YANG modules

   *  Junos OS provides a hidden and immutable configuration group
      called junos-defaults

Acknowledgments

   Thanks to Kent Watsen, Jan Lindblad, Jason Sterne, Robert Wilton,
   Andy Bierman, Juergen Schoenwaelder, Reshad Rahman, Anthony Somerset,
   Lou Berger, Joe Clarke, and Scott Mansfield for reviewing, and
   providing important inputs to this document.

   Thanks to Per Andersson for the YANGDOCTORS review.

   Thanks to Mahesh Jethanandani for the AD review.

Authors' Addresses

   Qiufang Ma (editor)
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing, Jiangsu
   210012
   China
   Email: maqiufang1@huawei.com

   Qin Wu
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing, Jiangsu
   210012
   China
   Email: bill.wu@huawei.com

   Balazs Lengyel (editor)
   Ericsson
   Email: balazs.lengyel@ericsson.com

Ma, et al.               Expires 3 January 2027                [Page 29]
Internet-Draft               immutable flag                    July 2026

   Hongwei Li
   HPE
   Email: flycoolman@gmail.com

Ma, et al.               Expires 3 January 2027                [Page 30]