<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc linkmailto="no" ?>
<?rfc editing="no" ?>
<?rfc comments="yes" ?>
<?rfc inline="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-index="no" ?>
<!--<?rfc strict="no"?> -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ietf-netconf-list-pagination-nc-01" ipr="trust200902" consensus="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="NETCONF Pagination Support">NETCONF Extensions to Support
    List Pagination</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-list-pagination-nc-01"/>
    <author fullname="Kent Watsen" initials="K." surname="Watsen">
      <organization>Watsen Networks</organization>
      <address>
        <email>kent+ietf@watsen.net</email>
      </address>
    </author>
    <author fullname="Qin Wu" initials="Q." surname="Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author fullname="Olof Hagsand" initials="O." surname="Hagsand">
      <organization>Netgate</organization>
      <address>
        <email>olof@hagsand.se</email>
      </address>
    </author>
    <author fullname="Hongwei Li" initials="H." surname="Li">
      <organization>HPE</organization>
      <address>
        <email>flycoolman@gmail.com</email>
      </address>
    </author>
    <author fullname="Per Andersson" initials="P." surname="Andersson">
      <organization>Cisco Systems</organization>
      <address>
        <email>perander@cisco.com</email>
      </address>
    </author>
    <date/>
    <area>OPS Area</area>
    <workgroup>NETCONF Working Group</workgroup>
    <abstract>
      <t>This document defines a mapping of the list pagination mechanism
        defined in <xref target="I-D.ietf-netconf-list-pagination" format="default"/>
        to NETCONF <xref target="RFC6241" format="default"/>.</t>
      <t>This document updates <xref target="RFC6241" format="default"/>, to augment the &lt;get&gt; and
        &lt;get-config&gt; "rpc" statements, and <xref target="RFC8526" format="default"/>, to augment the
        &lt;get-data&gt; "rpc" statement, to define input parameters
        necessary for list pagination.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>This document defines a mapping of the list pagination mechanism
        defined in <xref target="I-D.ietf-netconf-list-pagination" format="default"/>
        to NETCONF <xref target="RFC6241" format="default"/>.</t>
      <t>This document updates <xref target="RFC6241" format="default"/> and <xref target="RFC8526" format="default"/>,
        as described in <xref target="updates" format="default"/>.</t>
      <t>While the pagination mechanism defined in this document is designed
      for the NETCONF protocol <xref target="RFC6241" format="default"/>, the augmented RPCs
      MAY be used by the RESTCONF protocol <xref target="RFC8040" format="default"/> if the
      RESTCONF server implements the "ietf-list-pagination-nc" module.</t>
      <t>The YANG data model in this document conforms to the Network
      Management Datastore Architecture defined in <xref target="RFC8342" format="default"/></t>
      <section numbered="true" toc="default">
        <name>Terminology</name>
        <t>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 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only
        when, they appear in all capitals, as shown here.</t>
        <!--
        <t>The following terms are defined in <xref target="RFC8342"/> <xref
        target="RFC7950"/> and are not redefined here:</t>

        <t><list style="symbols">
            <t>server</t>
            <t>startup configuration datastore</t>
            <t>candidate configuration datastore</t>
            <t>running configuration datastore</t>
            <t>intended configuration datastore</t>
            <t>operational state datastore</t>
            <t>conventional configuration datastore</t>
            <t>datastore schema</t>
            <t>RPC operation</t>
          </list></t>

        <t>The following terms are defined in this document as follows:</t>
        <t/>
-->
      </section>
      <section numbered="true" toc="default">
        <name>Conventions</name>
        <t>Various examples used in this document use a placeholder
          value for binary data that has been base64 encoded (e.g.,
          "BASE64VALUE=“).  This placeholder value is used as real
          base64 encoded structures are often many lines long and
          hence distracting to the example being presented.</t>
      </section>
    </section>
    <!-- intro -->

    <section anchor="updates" numbered="true" toc="default">
      <name>Updates to NETCONF operations</name>
      <section numbered="true" toc="default">
        <name>Updates to RFC 6241</name>
        <t>The &lt;get&gt; and &lt;get-config&gt; rpc statements are
          augmented to accept additional input parameters, as described
          in <xref target="solution" format="default"/>.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Updates to RFC 8526</name>
        <t>The &lt;get-data&gt; rpc statement is augmented to
          accept additional input parameters, as described in
          in <xref target="solution" format="default"/>.</t>
      </section>
    </section>
    <!-- updates -->

    <section anchor="solution" numbered="true" toc="default">
      <name>List Pagination for NETCONF</name>
      <t>In order for NETCONF to support <xref target="I-D.ietf-netconf-list-pagination" format="default"/>,
      this document extends the operations &lt;get&gt;, &lt;get-config&gt; and &lt;get-data&gt;
      to include additional input parameters and output annotations.</t>
      <t>The updated operations accept a content filter parameter, similar to the
      "filter" parameter of &lt;get-config&gt;, but includes nodes for "list" and
      "leaf-list" filtering.</t>
      <t>The content filter parameter is used to specify the YANG list or leaf-list
      that is to be retrieved. This must be a path expression used to represent a
      list or leaf-list data node.</t>
      <t>The following tree diagram <xref target="RFC8340" format="default"/> illustrates the
        "ietf-netconf-list-pagination" module:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
module: ietf-list-pagination-nc

  augment /nc:get/nc:input:
    +---w list-pagination
       +---w where?           union
       +---w sort-by?         union
       +---w direction?       enumeration
       +---w cursor?          string
       +---w offset?          uint32
       +---w limit?           union
       +---w sublist-limit?   union
  augment /nc:get-config/nc:input:
    +---w list-pagination
       +---w where?           union
       +---w sort-by?         union
       +---w direction?       enumeration
       +---w cursor?          string
       +---w offset?          uint32
       +---w limit?           union
       +---w sublist-limit?   union
  augment /ncds:get-data/ncds:input:
    +---w list-pagination
       +---w where?           union
       +---w sort-by?         union
       +---w direction?       enumeration
       +---w cursor?          string
       +---w offset?          uint32
       +---w limit?           union
       +---w sublist-limit?   union
]]></artwork>
      <t>Comments:</t>
      <ul>
        <li>This module augments three NETCONF "rpc" statements: get, get-config,
          and get-data.</li>
        <li>The "get" and "get-config" augments are against the YANG module
          defined in <xref target="RFC6241" format="default"/>.  The "get-data" augment is
          against the YANG module defined in <xref target="RFC8526" format="default"/>.</li>
      </ul>
    </section>
    <section anchor="error-reporting" numbered="true" toc="default">
      <name>Error Reporting</name>
      <t>When an input query parameter is supplied with an erroneous
        value, an &lt;rpc-error&gt; MUST be returned containing the
        error-type value "application", the error-tag value
        "invalid-value", and MAY include the error-severity value
        "error". Additionally the error-app-tag SHOULD be set
        containing query parameter specific error value.</t>
      <section anchor="offset-out-of-range" toc="exclude" numbered="true">
        <name>The "offset" Query Parameter</name>
        <t>If the "offset" query parameter value supplied is larger
          then the number of instances in the list or leaf-list target
          resource, the &lt;rpc-error&gt; MUST contain error-app-tag
          with value "offset-out-of-range".</t>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>YANG Module for List Pagination in NETCONF</name>
      <t>The "ietf-netconf-list-pagination-nc" module defines conceptual
      definitions within groupings, which are not meant to be implemented as
      datastore contents by a server.</t>
      <t>This module has normative references to <xref target="RFC6241" format="default"/>,
      <xref target="RFC6243" format="default"/>, <xref target="RFC6991" format="default"/>, and <xref target="RFC8342" format="default"/>.</t>
      <t keepWithNext="true">&lt;CODE BEGINS&gt; file "ietf-list-pagination-nc@2023-03-11.yang"</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
module ietf-list-pagination-nc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-list-pagination-nc";
  prefix lpgnc;

  import ietf-netconf {
    prefix nc;
    reference
      "RFC 6241: Network Configuration Protocol (NETCONF)";
  }

  import ietf-netconf-nmda {
    prefix ncds;
    reference
      "RFC 8526: NETCONF Extensions to Support the
                 Network Management Datastore Architecture";
  }

  import ietf-list-pagination {
    prefix lp;
    reference
      "RFC XXXX: List Pagination for YANG-driven Protocols";
  }

  organization
    "IETF NETCONF (Network Configuration) Working Group";

  contact
      "WG Web:   https://datatracker.ietf.org/wg/netconf
       WG List:  NETCONF WG list <mailto:netconf@ietf.org>";

  description
    "This module augments the <get>, <get-config>, and <get-data>
     'rpc' statements to support list pagination.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
     itself for full legal notices.

     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 (RFC 2119)
     (RFC 8174) when, and only when, they appear in all
     capitals, as shown here.";

  revision 2023-03-11 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: NETCONF Extensions to Support List Pagination";
  }

  grouping pagination-parameters {
    description "A grouping for list pagination parameters.";
    container list-pagination {
      description "List pagination parameters.";
      uses lp:where-param-grouping;
      uses lp:sort-by-param-grouping;
      uses lp:direction-param-grouping;
      uses lp:cursor-param-grouping;
      uses lp:offset-param-grouping;
      uses lp:limit-param-grouping;
      uses lp:sublist-limit-param-grouping;
    }
  }

  augment "/nc:get/nc:input" {
    description
      "Allow the 'get' operation to use content filter
       parameter for specifying the YANG list or leaf-list
       that is to be retrieved";
    uses pagination-parameters;
  }

  augment "/nc:get-config/nc:input" {
    description
      "Allow the 'get-config' operation to use content filter
       parameter for specifying the YANG list or leaf-list
       that is to be retrieved";
    uses pagination-parameters;
  }

  augment "/ncds:get-data/ncds:input" {
    description
      "Allow the 'get-data' operation to use content filter
       parameter for specifying the YANG list or leaf-list
       that is to be retrieved";
    uses pagination-parameters;
  }
}
]]></artwork>
      <t keepWithPrevious="true">&lt;CODE ENDS&gt;</t>
    </section>
    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section numbered="true" toc="default">
        <name>The "IETF XML" Registry</name>
        <t>This document registers one URI in the "ns" subregistry of the IETF
        XML Registry <xref target="RFC3688" format="default"/> maintained at <eref target="https://www.iana.org/assignments/xml-registry/xml-registry.xhtml#ns"/>.
        Following the format in <xref target="RFC3688" format="default"/>, the following
        registration is requested:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
URI: urn:ietf:params:xml:ns:yang:ietf-list-pagination-nc
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>The "YANG Module Names" Registry</name>
        <t>This document registers one YANG module in the YANG Module Names
        registry <xref target="RFC6020" format="default"/> maintained at <eref target="https://www.iana.org/assignments/yang-parameters/yang-parameters.xhtml"/>.
        Following the format defined in <xref target="RFC6020" format="default"/>, the below
        registration is requested:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
name: ietf-list-pagination-nc
namespace: urn:ietf:params:xml:ns:yang:ietf-list-pagination-nc
prefix: pgnc
RFC: XXXX]]></artwork>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section numbered="true" toc="default">
        <name>The "ietf-netconf-list-pagination" YANG Module</name>
        <t>The YANG module defined in this document extends the base
        operations for NETCONF <xref target="RFC6241" format="default"/> and RESTCONF <xref target="RFC8040" format="default"/>. The lowest NETCONF layer is the secure transport
        layer, and the mandatory-to-implement secure transport is Secure Shell
        (SSH) <xref target="RFC6242" format="default"/>. The lowest RESTCONF layer is HTTPS,
        and the mandatory-to-implement secure transport is TLS <xref target="RFC8446" format="default"/>.</t>
        <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341" format="default"/> provides the means to restrict access for
        particular NETCONF users to a preconfigured subset of all available
        NETCONF protocol operations and content.</t>
        <t>The security considerations for the base NETCONF protocol
        operations (see Section 9 of <xref target="RFC6241" format="default"/> apply to the new
        &lt;get-list-pagination&gt; RPC operations defined in this
        document.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <!-- Terms -->
      <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <!-- YANG orig -->
      <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC6242" target="https://www.rfc-editor.org/info/rfc6242" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6242.xml">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC6243" target="https://www.rfc-editor.org/info/rfc6243" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6243.xml">
          <front>
            <title>With-defaults Capability for NETCONF</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defines ways to read and edit configuration data from a NETCONF server.  In some cases, part of this data may not be set by the NETCONF client, but rather a default value known to the server is used instead.  In many situations the NETCONF client has a priori knowledge about default data, so the NETCONF server does not need to save it in a NETCONF configuration datastore or send it to the client in a retrieval operation reply.  In other situations the NETCONF client will need this data from the server.  Not all server implementations treat this default data the same way.  This document defines a capability-based extension to the NETCONF protocol that allows the NETCONF client to identify how defaults are processed by the server, and also defines new mechanisms for client control of server processing of default data. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6243"/>
          <seriesInfo name="DOI" value="10.17487/RFC6243"/>
        </reference>
        <reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6991" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6991.xml">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language.  This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <!--<?rfc include="reference.RFC.7950.xml"?> YANG curr -->
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <!-- Terms new -->
      <reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8341" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8342" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF.  This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model.  This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC8526" target="https://www.rfc-editor.org/info/rfc8526" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8526.xml">
          <front>
            <title>NETCONF Extensions to Support the Network Management Datastore Architecture</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document extends the Network Configuration Protocol (NETCONF) defined in RFC 6241 in order to support the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document updates RFCs 6241 and 7950. The update to RFC 6241 adds new  and  operations and augments existing,, and  operations. The update to RFC 7950 requires the usage of the YANG library (described in RFC 8525) by NETCONF servers implementing the NMDA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8526"/>
          <seriesInfo name="DOI" value="10.17487/RFC8526"/>
        </reference>
        <!-- NMDA NETCONF -->

      <!-- START PLACEHOLDER UNTIL THE LP draft is submitted
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netconf-list-pagination.xml"/>
      -->
      <reference anchor="I-D.ietf-netconf-list-pagination" target="FIXME">
          <front>
            <title>List Pagination...</title>
            <author/>
          </front>
        </reference>
        <!-- END PLACEHOLDER UNTIL THE LP draft is submitted -->

    </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <!-- RESTCONF -->
      <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <!-- Tree Diagrams -->
      <!--<?rfc include="reference.RFC.6991.xml"?> YANG Types-->
      <!--<?rfc include="reference.RFC.8341.xml"?> NACM-->
    </references>
    </references>
    <section numbered="true" toc="default">
      <name>Open Issues</name>
      <t>Cursors (i.e.,stable result sets) are related to the topic of dynamic
      changing lists between two queries. How cursors can be supported using
      "feature"?</t>
    </section>
    <section numbered="true" toc="default">
      <name>Example YANG Module</name>
      <t>The examples within this document use the "example-social" YANG
      module defined in <xref section="A.1" target="I-D.ietf-netconf-list-pagination" relative="#FIXME"/>.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Example Data Set</name>
      <t>The Example Data Set used by the examples is defined in 
        <xref section="A.2" target="I-D.ietf-netconf-list-pagination" relative="#FIXME"/>.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Example Queries</name>
      <section numbered="true" toc="default">
        <name>List pagination with all query parameters</name>
        <t>This example mimics that <xref section="A.3.7" target="I-D.ietf-netconf-list-pagination" relative="#FIXME"/>.
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42">
  <get-config>
    <source>
      <running/>
    </source>
    <filter type="xpath" select="/es:members/es:member"
      xmlns:es="http://example.com/ns/example-social"/>
      <list-pagination
        xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-list-paginat\
ion">true</list-pagination>
      <where>//stats//joined[starts-with(@timestamp,'2020')]</where>
      <sort-by>timestamp</sort-by>
      <direction>backwards</direction>
      <offset>2</offset>
      <limit>2</limit>
      <sublist-limit>1</sublist-limit>
    </filter>
  </get-config>
</rpc>
]]></artwork>
        <t>Response from the NETCONF server:
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

<lp:xml-list xmlns:lp="urn:ietf:params:xml:ns:yang:ietf-restconf-lis\
t-pagination"
  xmlns="http://example.com/ns/example-social">
  <member lp:remaining="1">
    <member-id>eric</member-id>
    <email-address>eric@example.com</email-address>
    <password>$0$1543</password>
    <avatar>BASE64VALUE=</avatar>
    <tagline>Go to bed with dreams; wake up with a purpose.</tagline>
    <following>alice</following>
    <posts>
      <post>
        <timestamp>2020-09-17T18:02:04Z</timestamp>
        <title>Son, brother, husband, father</title>
        <body>What's your story?</body>
      </post>
    </posts>
    <favorites>
      <bits lp:remaining="2">two</bits>
    </favorites>
    <stats>
      <joined>2020-09-17T19:38:32Z</joined>
      <membership-level>pro</membership-level>
      <last-activity>2020-09-17T18:02:04Z</last-activity>
    </stats>
  </member>
  <member lp:remaining="1">
    <member-id>bob</member-id>
    <email-address>bob@example.com</email-address>
    <password>$0$1543</password>
    <avatar>BASE64VALUE=</avatar>
    <tagline>Here and now, like never before.</tagline>
    <posts>
      <post lp:remaining="2">
        <timestamp>2020-08-14T03:32:25Z</timestamp>
        <body>Just got in.</body>
      </post>
    </posts>
    <favorites>
      <decimal64-numbers lp:remaining="1">3.14159</bits>
    </favorites>
    <stats>
      <joined>2020-08-14T03:30:00Z</joined>
      <membership-level>standard</membership-level>
      <last-activity>2020-08-14T03:34:30Z</last-activity>
    </stats>
  </member>
</lp:xml-list>
]]></artwork>
      </section>
    </section>
    <!-- Example Queries -->

    <!--
    <section title="Contributors" numbered="no">
      <figure>
        <artwork>David Cornejo
dcornejo@gmail.com</artwork>
      </figure>
    </section>
    -->

    <section numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>This work has benefited from the discussions of RESTCONF resource
      collection over the years, in particular,
      [I-D.ietf-netconf-restconf-collection] which provides enhanced filtering
      features for the retrieval of data nodes with the GET method and
      [I-D.zheng-netconf-fragmentation] which document large size data
      handling challenge. The authors would like to thank the following for
      lively discussions on list:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[Andy Bierman Martin Björklund Robert Varga]]></artwork>
    </section>
  </back>
</rfc>
