<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?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
     docName="draft-wwlh-netconf-list-pagination-rc-01"
     category="std"
     ipr="trust200902">

  <front>
    <title abbrev="RESTCONF Pagination Support">
        RESTCONF Extensions to Support List Pagination
    </title>

    <author fullname="Kent Watsen" initials="K." surname="Watsen">
      <organization>Watsen Network</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>

    <date year="2020"/>
    <area>OPS Area</area>
    <workgroup>NETCONF Working Group</workgroup>

    <abstract>
      <t>In some circumstance, a server may contain many instances of a
      particular YANG list or leaf-list. Retrieval of the entire list or
      leaf-list at once can be extremely inefficient.</t>

      <t>Pagination mechanisms are needed to allow a client to iterate through
      a large list, in a manner that is most efficient for the
      application.</t>

      <t>This document Updates RFC 8040 to declare "list" and "leaf-list" as
      resource targets for the RESTCONF operations such as GET, POST
      operations.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>There is a need for standard mechanisms to control the filtering,
      sorting, and retrieval of data from the server. A server may contain
      many instances of a particular YANG list. Retrieval of the entire list
      or leaf-list at once can be extremely inefficient.</t>

      <t>Pagination mechanisms are needed to allow a client to iterate through
      a large list, in a manner that is most efficient for the application.
      The RPC operation defined in [I-D.wwlh-netconf-list-pagination-nc] can
      be used by the RESTCONF protocol <xref target="RFC8040"/> if the RESTCONF server
      implements the "ietf-yang-list-pagination" module
      [I-D.wwlh-netconf-list-pagination-nc].</t>

      <t>This document Updates RFC 8040 to declare "list" and "leaf-list" as
      resource targets for the RESTCONF operations such as GET, POST
      operations.</t>

    <section title="Terminology">
      <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"/> <xref target="RFC8174"/>
      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>

    <!-- intro -->

    <section title="RESTCONF Extensions">
      <t>This section describes the RESTCONF extensions needed to support the
      Pagination mechanism.</t>

      <section title="RESTCONF Media Type">
        <t>The following resource type is defined in this document:</t>

        <figure>
          <artwork>               +-----------------+-----------------------------+
               | Resource        | Media Type                  |
               +-----------------+-----------------------------+
               | YANG-Collection | application/yang-data+xml-list |
               | YANG-Collection | application/yang-data+xml-json |
               +-----------------+-----------------------------+
                           Media Type</artwork>
        </figure>
      </section>

      <section title="New Resource Target">
        <t> The "get-list-pagination" RPC operation defined in
        "ietf-yang-list-pagination" module
        [I-D.wwlh-netconf-list-pagination-nc] can use the RESTCONF target
        resource URI to identify the resource that will be filtered and
        returned. A collection resource contains a set of data resources. It
        is used to represent all instances or a subset of all instances in a
        YANG list or leaf-list. A collection resource can be used as target
        resource and retrieved with the GET method or POST method. The
        "ietf-restconf-list-pagination" YANG module contains the
        "yang-collection" yang data template with the "yang-data"extension
        which specifies the syntax and semantics of a "yang-collection" media
        type. </t>
      </section>
    </section>

    <section title="YANG Module for List Pagination">
      <t>The "ietf-restconf-list-pagination" module defines conceptual
      definitions within groupings, which are not meant to be implemented as
      datastore contents by a server.</t>

          <figure>
            <preamble>&lt;CODE BEGINS&gt; file "ietf-restconf-list-pagination@2020-11-02.yang"</preamble>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

module ietf-restconf-list-pagination {
  namespace "urn:ietf:params:xml:ns:yang:ietf-restconf-list-paginati\
on";
  prefix rlpg;

  import ietf-restconf {
    prefix rc;
  }

  organization
    "IETF NETCONF (Network Configuration) Working Group";
  contact
    "WG Web:   <http://tools.ietf.org/wg/netconf/>
     WG List:  <mailto:netconf@ietf.org>";

  description
    "This module contains conceptual YANG specifications
     for the RESTCONF Collection resource type.
     Note that the YANG definitions within this module do not
     represent configuration data of any kind.
     The YANG grouping statements provide a normative syntax
     for XML and JSON message encoding purposes.

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

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

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

  revision 2015-01-30 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: RESTCONF Collection Resource.";
  }
  rc:yang-data yang-collection {
    uses collection;
  }

  grouping collection {
    description
      "Conceptual container representing the
       yang-collection resource type.";
    container yang-collection {
      description
        "Container representing the yang-collection
         resource type.";
    }
  }
}

]]></artwork>
            <postamble>&lt;CODE ENDS&gt;</postamble>
          </figure>
    </section>

    <section title="IANA Considerations">
      <section title='The "IETF XML" Registry'>
          <t>This document registers one URI in the "ns" subregistry of
            the IETF XML Registry <xref target="RFC3688"/> maintained at
            <eref target="https://www.iana.org/assignments/xml-registry/xml-registry.xhtml#ns"/>.
            Following the format in <xref target="RFC3688"/>, the following
            registration is requested:</t>
          <t>
        <figure align="center">
          <artwork>  URI: urn:ietf:params:xml:ns:yang:ietf-restconf-list-pagination
  Registrant Contact: The IESG.
  XML: N/A, the requested URI is an XML namespace.</artwork>
        </figure>
          </t>
        </section>
        <section title='The "YANG Module Names" Registry'>
          <t>This document registers one YANG module in the YANG Module
            Names registry <xref target="RFC6020"/> maintained at
            <eref target="https://www.iana.org/assignments/yang-parameters/yang-parameters.xhtml"/>.
            Following the format defined in <xref target="RFC6020"/>, the below
            registration is requested:</t>
          <t>
        <figure align="center">
          <artwork>  name: ietf-restconf-list-pagination
  namespace: urn:ietf:params:xml:ns:yang:ietf-restconf-list-pagination
  prefix: rlpg
  RFC: xxxx</artwork>
        </figure>
      </t>
      </section>

      <section title='The "Media Types" Registry'>
        <t>This document registers two media types in the "application"
          subregistry of the Media Types registry <xref target="RFC6838"/>
          <xref target="RFC4855"/> maintained at <eref target="https://www.iana.org/assignments/media-types/media-types.xhtml#application"/>
            Following the format defined in <xref target="RFC4855"/>, the below
            registrations are requested:</t>
        <section title="Media Type &quot;application/yang-collection+xml&quot;">
          <figure>
            <artwork>   Type name: application

   Subtype name: yang-collection+xml

   Required parameters: None

   Optional parameters: None

   Encoding considerations: 8-bit
      The "utf-8" charset is always used for this type.  Each
      conceptual YANG data node is encoded according to the
      XML Encoding Rules and Canonical Format for the specific
      YANG data node type defined in RFC 7950.

   Security considerations: Security considerations related
      to the generation and consumption of RESTCONF messages
      are discussed in Section 5 of RFC 8072.  Additional
      security considerations are specific to the semantics
      of particular YANG data models.  Each YANG module is
      expected to specify security considerations for the
      YANG data defined in that module.

   Interoperability considerations: RFC 8072 specifies the
      format of conforming messages and the interpretation
      thereof.

   Published specification: RFC 8072

   Applications that use this media type: Instance document
      data parsers used within a protocol or automation tool
      that utilize the YANG Patch data structure.

   Fragment identifier considerations: The syntax and
      semantics of fragment identifiers are the same
      as the syntax and semantics specified for the
      "application/xml" media type.

   Additional information:

      Deprecated alias names for this type: N/A
      Magic number(s): N/A
      File extension(s): None
      Macintosh file type code(s): "TEXT"

   Person &amp; email address to contact for further
      information: See the Authors' Addresses section
      of RFC 8072.

   Intended usage: COMMON

   Restrictions on usage: N/A

   Author: See the Authors' Addresses section of RFC 8072.

   Change controller: Internet Engineering Task Force
      (mailto:iesg@ietf.org).

   Provisional registration? (standards tree only): no
</artwork>
          </figure>
        </section>

        <section title="Media Type &quot;application/yang-data+xml-list&quot;">
          <figure>
            <artwork>   Type name: application

   Subtype name: yang-collection+json

   Required parameters: None

   Optional parameters: None

   Encoding considerations: 8-bit
      The "utf-8" charset is always used for this type.
      Each conceptual YANG data node is encoded according to the
      XML Encoding Rules and Canonical Format for the specific
      YANG data node type defined in RFC 7950.

   Security considerations: Security considerations related
      to the generation and consumption of RESTCONF messages
      are discussed in Section 5 of RFC 8072.
      Additional security considerations are specific to the
      semantics of particular YANG data models.  Each YANG module
      is expected to specify security considerations for the
      YANG data defined in that module.

   Interoperability considerations: RFC 8072 specifies the format
      of conforming messages and the interpretation thereof.

   Published specification: RFC 8072

   Applications that use this media type: Instance document
      data parsers used within a protocol or automation tool
      that utilize the YANG Patch data structure.

   Fragment identifier considerations: The syntax and semantics
      of fragment identifiers are the same as the syntax and semantics
      specified for the "application/xml" media type.

   Additional information:

      Deprecated alias names for this type: N/A
      Magic number(s): N/A
      File extension(s): None
      Macintosh file type code(s): "TEXT"

   Person &amp; email address to contact for further information: See
      the Authors' Addresses section of RFC 8072.

   Intended usage: COMMON

   Restrictions on usage: N/A

   Author: See the Authors' Addresses section of RFC 8072.

   Change controller: Internet Engineering Task Force
      (mailto:iesg@ietf.org).

   Provisional registration? (standards tree only): no
</artwork>
          </figure>
        </section>
      </section>
    </section>

    <section anchor="security" title="Security Considerations">
      <section title="The &quot;ietf-restconf-list-pagination&quot; YANG Module">
        <t>The YANG module defined in this document extends the base operations
          for NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>.
          The lowest NETCONF layer is the secure transport layer, and the
          mandatory-to-implement secure transport is Secure Shell (SSH)
          <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS,
          and the mandatory-to-implement secure transport is TLS
          <xref target="RFC8446"/>.</t>

        <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
      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 constraints for the base RESTCONF protocol (see Section
          12 of <xref target="RFC8040"/>) apply to the new RESTCONF target
            resources defined in this document.</t>
      </section>
    </section>

  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119.xml"?>
      <?rfc include="reference.RFC.3688.xml"?>
      <?rfc include="reference.RFC.6020.xml"?>
      <?rfc include="reference.RFC.6241.xml"?>
      <?rfc include="reference.RFC.6242.xml"?>
      <?rfc include="reference.RFC.7950.xml"?>
      <?rfc include="reference.RFC.8040.xml"?>
      <?rfc include="reference.RFC.8174.xml"?>
      <?rfc include="reference.RFC.8342.xml"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.4855.xml"?>
      <?rfc include="reference.RFC.6838.xml"?>
      <?rfc include="reference.RFC.8341.xml"?>
      <?rfc include="reference.RFC.8446.xml"?>
      <!-- <?rfc include="reference.RFC.8340.xml"?> Tree Diagrams -->
      <!--<?rfc include="reference.RFC.6991.xml"?> YANG Types-->
    </references>

    <section title="Example YANG Module">
      <t>The examples within this document use the "example-module" YANG
      module defined in Appendix A of
        [I-D.wwlh-netconf-list-pagination-nc].</t>
    </section>

    <section title="Example Data">
      <t>FIXME</t>
    </section>

    <section title="Example Queries">

      <section title="No Query Parameter">
        <t>Client requests all list entries:</t>
        <section title="XML">
          <t>Client requests an XML-based Response:</t>
          <t>
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
          </t>
          <t>Response from the RESTCONF server:</t>
          <t>
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
          </t>
        </section>
        <section title="JSON">
          <t>Client requests a JSON-based Response:</t>
          <t>
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
          </t>
          <t>Response from the RESTCONF server:</t>
          <t>
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
          </t>
        </section>
      </section>


      <section title="Just the &quot;count&quot; Parameter">
        <t>In this example, the client requests the first two "skill"
        resources for a given admin resource.
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>
      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>

      <section title="Just the &quot;skip&quot; Parameter">
        <t>In this example, the client requests the next two skills resource,
        i.e., two skills resource starting from two.
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?skip=2&count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>

      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>

      <section title="Just the &quot;direction&quot; Parameter">
        <t>In this example, the client requests the first two "skill"
        resources in the "forward" direction for a given admin:
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?direction=forward&count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>

      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>


      <section title="Just the &quot;sort&quot; Parameter">
        <t>In this example, the client requests the first 2 "skill" resources
        sorted by name for a given admin:
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?sort=name&count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>

      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>


      <section title="Combination of &quot;where&quot; + &quot;count&quot;">
        <t>In this example, the client requests the first 2 "skill" resources
        from the selected skill resource list for a given admin:
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?where=???&count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>

      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>



      <section title="Combination of &quot;where&quot; + &quot;skip&quot; + &quot;count&quot;">
        <t>In this example, the client requests the first 2 "skill" resources
        from the selected "skill" resource list for a given admin:
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?where=???&skip=2&count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>

      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>


      <section title="Combination of &quot;where&quot; + &quot;sort&quot; + &quot;skip&quot;,&quot;count&quot;">
        <t>In this example, the client requests the first 2 "skill" resources
        from the selected skill resources list for a given admin:
          <figure>
            <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /restconf/ds/ietf-datastores:running/example-module:admins/admin\
=Bob/skill?where=???&sort=name&skip=2&count=2  HTTP/1.1
Host: example.com
Accept: application/yang-data+xml-list
]]></artwork>
          </figure>
      </t>

      <t>Response from the RESTCONF server:
          <figure>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2017 20:56:30 GMT
Server: example-server
Last-Modified: Thu, 26 Jan 2017 20:55:30 GMT
Content-Type: application/yang-data+xml-list

<xml-list xmlns="urn:ietf:params:xml:ns:yang:ietf-list-pagination">
  <skill xmlns="http://example.com/ns/example-module">
    <name>Problem Solving</name>
    <rank>98</rank>
    ...
  </skill>
  <skill xmlns="http://example.com/ns/example-module">
    <name>Conflict Resolution</name>
    <rank>93</rank>
    ...
  </skill>
</xml-list>
]]></artwork>
          </figure>
      </t>
      </section>

    </section> <!-- Example Queries -->

    <!--
    <section title="Contributors" numbered="no">
      <figure>
        <artwork>Per Andersson
perander@cisco.com

David Cornejo
dcornejo@gmail.com</artwork>
      </figure>
    </section>
    -->

    <section title="Acknowledgements" numbered="no">
      <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. The
      authors would like to thank the following for lively discussions on
      list (ordered by first name):
        Andy Bierman,
        Martin Bj&ouml;rklund,
        Robert Varga
      </t>
    </section>

  </back>
</rfc>
