<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scim-cursor-pagination-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="SCIM Cursor Pagination">Cursor-based Pagination of SCIM Resources</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scim-cursor-pagination-04"/>
    <author initials="D." surname="Zollner" fullname="Danny Zollner" role="editor">
      <organization>Microsoft</organization>
      <address>
        <email>danny.zollner@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Sehgal" fullname="Anjali Sehgal">
      <organization>Amazon Web Services</organization>
      <address>
        <email>anjalisg@amazon.com</email>
      </address>
    </author>
    <date year="2024" month="March" day="01"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <?line 37?>

<t>This document defines additional SCIM (System for Cross-Domain Identity Management) query parameters and result
attributes to allow use of cursor-based pagination in SCIM
implementations that are implemented with existing code bases,
databases, or APIs where cursor-based pagination is already well established.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    System for Cross-domain Identity Management Working Group mailing list (scim@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scim/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ietf-scim-wg/draft-ietf-scim-cursor-pagination"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The two common patterns for result pagination are index-based pagination
and cursor-based pagination.  Rather than
attempt to compare and contrast the advantages and disadvantages of
competing pagination patterns, this document simply recognizes that
SCIM service providers are commonly implemented as an
interoperability layer on top of already existing application
codebases, databases, and/or APIs that already have a well established pagination pattern.</t>
      <t>Translating from an underlying cursor-based pagination pattern to the
index-based pagination defined in Section 3.4.2.4 of <xref target="RFC7644"/>
ultimately requires the SCIM service provider to fully iterate the
underlying cursor, store the results, and then serve indexed pages
from the stored results.  This task of "pagination translation"
dramatically increases complexity and memory requirements for
implementing a SCIM Service Provider, and may be an impediment to
SCIM adoption for some applications and identity systems.</t>
      <t>This document defines a simple addition to the SCIM protocol that
allows SCIM service providers to reuse underlying cursors without
expensive translation.  Support for cursor-based pagination in SCIM
encourages broader cross-application identity management
interoperability by encouraging SCIM service provider implementations
for applications and identity systems where cursor-based pagination
is already well-established.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="query-parameters-and-response-attributes">
      <name>Query Parameters and Response Attributes</name>
      <t>The following table describes the URL pagination parameters for requesting cursor-based pagination:</t>
      <table>
        <name>Query Parameters</name>
        <thead>
          <tr>
            <th align="left">Parameter</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>cursor</tt></td>
            <td align="left">The string value of the nextCursor attribute from a previous result page. The cursor value <bcp14>MUST</bcp14> be empty or omitted for the first request of a cursor-paginated query. This value may only contained characters from the unreserved characters set defined in section 2.2 of <xref target="RFC3986"/></td>
          </tr>
          <tr>
            <td align="left">
              <tt>count</tt></td>
            <td align="left">A positive integer. Specifies the desired maximum number of query results per page, e.g., <tt>count=10</tt>. When specified, the service provider <bcp14>MUST NOT</bcp14> return more results than specified, although it <bcp14>MAY</bcp14> return fewer results. If count is not specified in the query, the maximum number of results is set by the service provider.</td>
          </tr>
        </tbody>
      </table>
      <t>The following table describes cursor-based pagination attributes
returned in a paged query response:</t>
      <table>
        <name>Response Attributes</name>
        <thead>
          <tr>
            <th align="left">Element</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>nextCursor</tt></td>
            <td align="left">A cursor value string that <bcp14>MAY</bcp14> be used in a subsequent request to obtain the next page of results. Service providers supporting cursor-based pagination <bcp14>MUST</bcp14> include <tt>nextCursor</tt> in all paged query responses except when returning the last page. <tt>nextCursor</tt> is omitted from a response only to indicate that there are no more result pages.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>previousCursor</tt></td>
            <td align="left">A cursor value string that <bcp14>MAY</bcp14> be used in a subsequent request to obtain the previous page of results. Returning <tt>previousCursor</tt> is <bcp14>OPTIONAL</bcp14>.</td>
          </tr>
        </tbody>
      </table>
      <t>Cursor values are opaque; clients <bcp14>MUST</bcp14> not make assumptions about their structure. When the client wants to retrieve
another result page for a query, it should query the same Service
Provider endpoint with all query parameters and values being
identical to the initial query with the exception of the cursor value
which should be set to a <tt>nextCursor</tt> (or <tt>previousCursor</tt>) value that
was returned by Service Provider in a previous response.</t>
      <t>For example, to retrieve the first 10 Users with <tt>userName</tt> starting
with <tt>J</tt>, use an empty cursor and set the count to 10:</t>
      <artwork><![CDATA[
GET /Users?filter=userName%20sw%20J&cursor&count=10
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD
]]></artwork>
      <t>The SCIM provider in response to the query above returns metadata regarding pagination similar
to the following example (actual resources removed for brevity):</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults":100,
   "itemsPerPage":10,
   "nextCursor":"VZUTiyhEQJ94IR",
   "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources":[{
      ...
   }]
}
]]></artwork>
      <t>Given the example above, to request the next page or results, use the
same query parameters and values except set the cursor to the value
of <tt>nextCursor</tt> (<tt>VZUTiyhEQJ94IR</tt>):</t>
      <artwork><![CDATA[
GET /Users?filter=username%20sw%20J&cursor=VZUTiyhEQJ94IR&count=10
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD

HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults": 100,
   "itemsPerPage": 10,
   "previousCursor: "ze7L30kMiiLX6x"
   "nextCursor": "YkU3OF86Pz0rGv",
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources":[{
      ...
   }]
}
]]></artwork>
      <t>In the example above, the response includes the <bcp14>OPTIONAL</bcp14>
previousCursor indicating that the Service Provider supports forward
and reverse traversal of result pages.</t>
      <t>As described in Section 3.4.1 of <xref target="RFC7644"/> Service Providers <bcp14>SHOULD</bcp14>
return an accurate value for totalResults which is the total number
of resources for all pages.  Service Providers implementing cursor
pagination that are unable to estimate totalResults <bcp14>MAY</bcp14> choose to omit the totalResults attribute.</t>
      <section anchor="pagination-errors">
        <name>Pagination errors</name>
        <t>If a Service Provider encounters invalid pagination query
parameters (invalid cursor value, count value, etc), or other error
condition, the Service Provider <bcp14>SHOULD</bcp14> return the appropriate HTTP
response status code and detailed JSON error response as defined in
Section 3.12 of <xref target="RFC7644"/>.  Most pagination error conditions would
generate an HTTP response with status code 400.  Since many pagination
error conditions are not user recoverable, error messages <bcp14>SHOULD</bcp14>
focus on communicating error details to the SCIM client developer.</t>
        <t>For HTTP status code 400 (Bad Request) responses, the following detail error types are defined. These error types extend the list of error types defined in <xref target="RFC7644"/> Section 3.12, Table 9: SCIM Detail Error Keyword Values.</t>
        <table>
          <name>Pagination Errors</name>
          <thead>
            <tr>
              <th align="left">scimType</th>
              <th align="left">Description</th>
              <th align="left">Applicability</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>invalidCursor</tt></td>
              <td align="left">Cursor value is invalid. Cursor value should be empty to request the first page and set to the <tt>nextCursor</tt> or <tt>previousCursor</tt> value for subsequent queries.</td>
              <td align="left">
                <tt>GET</tt> (Section 3.4.2 of <xref target="RFC7644"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>expiredCursor</tt></td>
              <td align="left">Cursor has expired. Do not wait longer than <tt>cursorTimeout</tt> (600 sec) to request additional pages.</td>
              <td align="left">
                <tt>GET</tt> (Section 3.4.2 of <xref target="RFC7644"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>invalidCount</tt></td>
              <td align="left">Count value is invalid. Count value must be between 1 - and maxPageSize (500)</td>
              <td align="left">
                <tt>GET</tt> (Section 3.4.2 of <xref target="RFC7644"/>)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>If sorting is implemented as described Section 3.4.2.3 of <xref target="RFC7644"/>,
then cursor-paged results <bcp14>SHOULD</bcp14> be sorted.</t>
      </section>
      <section anchor="cursors-as-the-only-pagination-method">
        <name>Cursors as the Only Pagination Method</name>
        <t>A SCIM Service Provider <bcp14>MAY</bcp14> require cursor-based pagination to
retrieve all results for a query by including a <tt>nextCursor</tt> value in
the response even when the query does not include the <tt>cursor</tt>
parameter.</t>
        <t>For example:</t>
        <artwork><![CDATA[
GET /Users
Host: example.com
Accept: application/scim+json
]]></artwork>
        <t>The SCIM Service Provider may respond to the above query with a page
containing defaultPageSize results and a <tt>nextCursor</tt> value as shown
in the below example (Resources omitted for brevity):</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults": 5000,
   "itemsPerPage": 100,
   "nextCursor": "HPq72Pax3JUaNa",
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources": [{
      ...
   }]
}
]]></artwork>
      </section>
      <section anchor="backwards-compatibility-considerations">
        <name>Backwards Compatibility Considerations</name>
        <t>Implementers of SCIM service providers that previously supported
index-based pagination and are adding support for cursor-based pagination
should carefully consider the impact to existing SCIM clients before
changing the default pagination method in a return set. SCIM clients
that previously expected index-based pagination may not be compatible
with cursor-based pagination without making changes to the SCIM client.
Adding cursor-based pagination support but leaving the default return
set pagination method as-is will not impact existing SCIM clients.</t>
        <t>SCIM clients can query the provider configuration endpoint to determine
if index-based, cursor-based or both types of pagination are supported.</t>
      </section>
    </section>
    <section anchor="querying-resources-using-http-post">
      <name>Querying Resources using HTTP POST</name>
      <t>Section 3.4.2.4 of <xref target="RFC7644"/> defines how clients <bcp14>MAY</bcp14> execute the HTTP
<tt>POST</tt> method combined with the <tt>/.search</tt> path extension to issue
execute queries without passing parameters on the URL.  When using
<tt>/.search</tt>, the client would pass the parameters defined in Section 2</t>
      <artwork><![CDATA[
POST /User/.search
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD

{
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:SearchRequest"],
   "attributes": ["displayName", "userName"],
   "filter": "displayName sw \"smith\"",
   "cursor": "",
   "count": 10
}
]]></artwork>
      <t>Which would return a result containing a <tt>nextCursor</tt> value which may
be used by the client in a subsequent call to return the next page of
resources</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults": 100,
   "itemsPerPage": 10,
   "nextCursor": "VZUTiyhEQJ94IR",
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources": [{
      ...
   }]
}
]]></artwork>
    </section>
    <section anchor="service-provider-configuration">
      <name>Service Provider Configuration</name>
      <t>The <tt>/ServiceProviderConfig</tt> resource defined in Section 4 of <xref target="RFC7644"/>
facilitates discovery of SCIM service provider features.  A SCIM
Service provider implementing cursor-based pagination <bcp14>SHOULD</bcp14> include
the following additional attribute in JSON document returned by the
<tt>/ServiceProviderConfig</tt> endpoint:</t>
      <dl>
        <dt>pagination</dt>
        <dd>
          <t>A complex type that indicates pagination configuration options.
<bcp14>OPTIONAL</bcp14>.</t>
        </dd>
        <dt>cursor</dt>
        <dd>
          <t>A Boolean value specifying support of cursor-based pagination.
<bcp14>REQUIRED</bcp14>.</t>
        </dd>
        <dt>index</dt>
        <dd>
          <t>A Boolean value specifying support of index-based pagination.
<bcp14>REQUIRED</bcp14>.</t>
        </dd>
        <dt>defaultPageSize</dt>
        <dd>
          <t>Non-negative integer value specifying the default number of results
returned in a page when a count is not specified in the query.
<bcp14>OPTIONAL</bcp14>.</t>
        </dd>
        <dt>maxPageSize</dt>
        <dd>
          <t>Non-negative integer specifying the maximum number of results
returned in a page regardless of what is specified for the count
in a query. The maximum number of results returned may be further
restricted by other criteria. <bcp14>OPTIONAL</bcp14>.</t>
        </dd>
        <dt>cursorTimeout</dt>
        <dd>
          <t>Non-negative integer specifying the maximum number seconds that a
cursor is valid between page requests.  Clients waiting too long
between cursor pagination requests may receive an invalid cursor
error response. No value being specified may mean that there is no
cursor timeout or that the cursor timeout is not a static
duration.  <bcp14>OPTIONAL</bcp14>.</t>
        </dd>
      </dl>
      <t>Before using cursor-based pagination, a SCIM client <bcp14>MAY</bcp14> fetch the
Service Provider Configuration document from the SCIM service
provider and verify that cursor-based pagination is supported.</t>
      <t>For example:</t>
      <artwork><![CDATA[
GET /ServiceProviderConfig
Host: example.com
Accept: application/scim+json
]]></artwork>
      <t>A service provider supporting both cursor-based pagination and index-
based pagination would return a document similar to the following
(full <tt>ServiceProviderConfig</tt> schema defined in Section 5 of <xref target="RFC7643"/>
has been omitted for brevity):</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "schemas": [
      "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],
      ...

   "pagination": {
      "cursor": true,
      "index": true
   },

   ...
}
]]></artwork>
      <t>Service Provider implementors <bcp14>SHOULD</bcp14> ensure that misuse of pagination
by a SCIM client does not deplete Service Provider resources or
prevent valid requests from other clients being handled.  Defenses
for a SCIM Service Provider are similar those used to protect other
Web API services -- including the use of a "Web API gateway" layer,
to provide authentication, rate limiting, IP allow/block lists,
logging and monitoring, response caching, etc.</t>
      <t>For example, an obvious protection against abuse is for the Service
Provider to require client authentication in order to retrieve large
result sets and enforce an overriding <tt>totalResults</tt> limit for non-
authenticated clients.  Another example would be for a Service
Provider that implements cursor pagination to restrict the number of
cursors that can be allocated by a client or enforce cursor lifetimes.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section elaborates on the security considerations associated with the implementation of cursor pagination in SCIM. It is imperative that implementers consider the following security aspects to safeguard against both deliberate attacks and inadvertent misuse that may compromise the system's security posture.</t>
      <section anchor="threat-model-and-security-environment">
        <name>Threat Model and Security Environment</name>
        <t>The threat landscape is characterized by two primary types of actors:</t>
        <ol spacing="normal" type="1"><li>
            <t>Unauthenticated and Authenticated Malicious Actors: These individuals or entities represent a malevolent threat. Their objectives include unauthorized access to data, alteration, or deletion through cursor-enabled queries. They may also seek to deplete server resources deliberately, aiming to cause a denial-of-service state, thereby reducing service availability.</t>
          </li>
          <li>
            <t>Authenticated Benign Users: This category includes legitimate users who, due to confusion or a lack of understanding, inadvertently engage in actions that consume server resources excessively. Such actions, while not ill-intended, can lead to unintended denial of service by overwhelming the system's capacity.</t>
          </li>
        </ol>
      </section>
      <section anchor="confidentiality">
        <name>Confidentiality</name>
        <t>To ensure that confidential data remains appropriately secured:</t>
        <ul spacing="normal">
          <li>
            <t>Implementors <bcp14>MUST</bcp14> ensure that pagination through results sets is strictly confined to the data that the actor's current identity has been authorized to access. This holds true even in cases where the actor has obtained a cursor pertaining to a result set that was generated by a different actor.</t>
          </li>
          <li>
            <t>Authorization checks <bcp14>MUST</bcp14> BE continuously applied as an actor navigates through the result set associated with a cursor. Under no circumstances should possession of a cursor be interpreted as granting any supplementary access privileges to the actor.</t>
          </li>
          <li>
            <t>In alignment with Section 2, cursor values are to be treated as opaque entities. Clients are strictly prohibited from making any inferences or assumptions about their internal structure.</t>
          </li>
          <li>
            <t>The system <bcp14>MUST</bcp14> handle error scenarios gracefully, while not exposing sensitive data. For instance, if an actor attempts to access a page of results outside their authorized scope, or if a request is made for a non-existent page, the system should respond with identical error messages, so as not to disclose any details of the underlying data or the nature of the authorization failure. It is acceptable, however, for the system to log different messages to a log accessible by administrators or other authorized personnel.</t>
          </li>
        </ul>
      </section>
      <section anchor="integrity">
        <name>Integrity</name>
        <t>The extension discussed herein is query-only and does not inherently pose a substantial risk to data integrity. However, the focus is placed on safeguarding the integrity of the applications and clients that depend on this extension, rather than the integrity of the Service Provider. Specific considerations include:
It is not required to tie a cursor to specific actor. However, if a cursor is tied to an actor and if the actor's permissions change, and the actor is still using the cursor, the actor may miss records OR there may be unauthorized access to data.</t>
        <ul spacing="normal">
          <li>
            <t>Servers are authorized to invalidate all tokens/watermarks corresponding to an actor immediately following a change in permissions. This ensures that any queries executed post-permission change, utilizing old tokens/watermarks, will be denied.</t>
          </li>
          <li>
            <t>As an alternative approach, servers may opt to retain the existing tokens/watermarks but must ensure that any metadata tied to the result set, such as record counts, is updated to reflect the new permissions accurately.</t>
          </li>
        </ul>
      </section>
      <section anchor="availability">
        <name>Availability</name>
        <t>The concern for availability primarily stems from the potential for Denial of Service (DoS) attacks. If the server elects to retain substantial data or metadata for each cursor, numerous concurrent queries with &amp;cursor could strain and eventually exhaust server resources. This could be orchestrated by an attacker with malicious intent or could occur innocuously as a result of actions taken by a benign but confused actor.</t>
        <t>To mitigate such risks, the following strategies are recommended:</t>
        <ul spacing="normal">
          <li>
            <t>Implementation of rate limiting to control the volume and cadence of cursor requests. This approach should adhere to established standards for rate limiting, details of which can be found in <xref target="RFC6585"/>.</t>
          </li>
          <li>
            <t>Cursory mechanisms must be designed in a manner that avoids any additional consumption of server resources with the initiation of new &amp;cursor requests.</t>
          </li>
          <li>
            <t>It is advisable to establish a ceiling on the number of cursors permissible at any given time. Alternatively, the adoption of an opaque identifier system that conservatively utilizes resources may be used.</t>
          </li>
          <li>
            <t>Token invalidation mechanisms (including mechanisms triggered by permissions changes) must be designed to be resource-efficient to prevent them from being exploited for DoS attacks.</t>
          </li>
          <li>
            <t>Actors may face challenges in maintaining a seamless pagination experience if their permissions are in a state of flux. Proactive measures should be taken to ensure that permission changes do not disrupt the user experience.</t>
          </li>
        </ul>
      </section>
      <section anchor="other-security-references">
        <name>Other Security References</name>
        <t>Using URIs to describe and locate resources has its own set of security considerations discussed in Section 7 of <xref target="RFC3986"/>.
IANA Considerations</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification amends the registry "SCIM Schema URIs for Data Resources" established by <xref target="RFC7643"/>, for the <tt>urn:ietf:params:scim:api:messages:2.0:SearchRequest</tt> message URI and adds the following new fields:</t>
      <t>SCIM <tt>cursor</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>cursor</tt>.</t>
        </li>
        <li>
          <t>Status: permanent.</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.3 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>SCIM <tt>count</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>count</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.3 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>This specification amends the entry  for urn:ietf:params:scim:api:messages:2.0:ListResponse message URI, and adds the following fields:</t>
      <t>SCIM <tt>nextCursor</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>nextCursor</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.2 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>SCIM <tt>previousCursor</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>previousCursor</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.2 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>This specification amends the entry  for urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig schema URI, and adds the following field:</t>
      <t>SCIM <tt>pagination</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>pagination</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 4</t>
        </li>
        <li>
          <t>Comments: see section 5 of <xref target="RFC7643"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Added IANA Considerations section</t>
        </li>
        <li>
          <t>Added Security Considerations section</t>
        </li>
        <li>
          <t>Added Backwards Compatibility Considerations section</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Minor grammatical/typo fixes, rename + changes to maxPageSize SCP definition</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Typos/semantics, acknowledgements, expansion of cursorTimeout SCP definition</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Updated after Httpdir review.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Adopted by SCIM WG.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The editor would like to acknowledge the tremendous contribution of Matt Peterson for his work in authoring the original versions of this draft and in providing continuing feedback after stepping back.</t>
      <ul spacing="normal">
        <li>
          <t>Matt Peterson - One Identity</t>
        </li>
      </ul>
      <t>The editor would also like to acknowledge the contributions of the following individuals who provided valuable feedback while reviewing the draft:</t>
      <ul spacing="normal">
        <li>
          <t>Aaron Parecki - Okta</t>
        </li>
        <li>
          <t>David Brossard - Axiomatics</t>
        </li>
        <li>
          <t>Dean H. Saxe - Amazon Web Services</t>
        </li>
        <li>
          <t>Pamela Dingle - Microsoft</t>
        </li>
        <li>
          <t>Paul Lanzi - Remediant</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
          <author fullname="R. Fielding" initials="R." surname="Fielding"/>
          <author fullname="L. Masinter" initials="L." surname="Masinter"/>
          <date month="January" year="2005"/>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="66"/>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="DOI" value="10.17487/RFC3986"/>
      </reference>
      <reference anchor="RFC6585">
        <front>
          <title>Additional HTTP Status Codes</title>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
          <author fullname="R. Fielding" initials="R." surname="Fielding"/>
          <date month="April" year="2012"/>
          <abstract>
            <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6585"/>
        <seriesInfo name="DOI" value="10.17487/RFC6585"/>
      </reference>
      <reference anchor="RFC7643">
        <front>
          <title>System for Cross-domain Identity Management: Core Schema</title>
          <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
          <author fullname="K. Grizzle" initials="K." surname="Grizzle"/>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
          <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
          <date month="September" year="2015"/>
          <abstract>
            <t>The System for Cross-domain Identity Management (SCIM) specifications are designed to make identity management in cloud-based applications and services easier. The specification suite builds upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models. Its intent is to reduce the cost and complexity of user management operations by providing a common user schema and extension model as well as binding documents to provide patterns for exchanging this schema using HTTP.</t>
            <t>This document provides a platform-neutral schema and extension model for representing users and groups and other resource types in JSON format. This schema is intended for exchange and use with cloud service providers.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7643"/>
        <seriesInfo name="DOI" value="10.17487/RFC7643"/>
      </reference>
      <reference anchor="RFC7644">
        <front>
          <title>System for Cross-domain Identity Management: Protocol</title>
          <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
          <author fullname="K. Grizzle" initials="K." surname="Grizzle"/>
          <author fullname="M. Ansari" initials="M." surname="Ansari"/>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
          <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
          <date month="September" year="2015"/>
          <abstract>
            <t>The System for Cross-domain Identity Management (SCIM) specification is an HTTP-based protocol that makes managing identities in multi-domain scenarios easier to support via a standardized service. Examples include, but are not limited to, enterprise-to-cloud service providers and inter-cloud scenarios. The specification suite seeks to build upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models. SCIM's intent is to reduce the cost and complexity of user management operations by providing a common user schema, an extension model, and a service protocol defined by this document.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7644"/>
        <seriesInfo name="DOI" value="10.17487/RFC7644"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
