<?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.6.17 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scim-cursor-pagination-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="SCIM Cursor Pagination">Cursor-based Pagination of SCIM Resources</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scim-cursor-pagination-06"/>
    <author initials="M." surname="Peterson" fullname="Matt Peterson">
      <organization>Entrust</organization>
      <address>
        <email>matt.peterson@entrust.com</email>
      </address>
    </author>
    <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="2025" month="February" day="24"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <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>
    <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>
      </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 <bcp14>MUST</bcp14> 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 <bcp14>SHOULD</bcp14> 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
conditions, 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 <bcp14>SHOULD</bcp14> 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>
        <t>When a service provider supports both index- and cursor-based pagination, clients can use the 'startIndex' and 'cursor' query parameters to request a specific method.</t>
        <t>Service providers supporting both pagination methods <bcp14>MUST</bcp14> choose a pagination method to use when responding to requests that have not specified a pagination query parameter. Service providers <bcp14>MUST NOT</bcp14> return an error due to the pagination method being unspecified when pagination is required to complete the response.</t>
        <t>If the default pagination method is not advertised in the Service Provider Configuration data, service provider implementers <bcp14>MAY</bcp14> dynamically determine which pagination method is used for each response based on criteria of their choosing.</t>
      </section>
      <section anchor="cursors-as-the-only-pagination-method">
        <name>Cursors as the Only Pagination Method</name>
        <t>A 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 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
<bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> 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>defaultPaginationMethod</dt>
        <dd>
          <t>A string value specifying the type of pagination that the service provider defaults to when the client has not specified which method it wishes to use. Possible values are "cursor" and "index".  <bcp14>OPTIONAL</bcp14>.</t>
        </dd>
        <dt>defaultPageSize</dt>
        <dd>
          <t>Positive 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>Positive 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>Positive integer specifying the maximum number seconds that a
cursor is guaranteed to be valid between page requests.  Clients waiting too long
between cursor pagination requests may receive an invalid cursor
error response.  <bcp14>OPTIONAL</bcp14>.</t>
        </dd>
      </dl>
      <t>Service providers may choose not to advertise Service Provider Configuration information regarding default pagination method, page size or cursor validity. Clients <bcp14>MUST NOT</bcp14> interpret the lack of published Service Provider Configuration values to mean that no defaults or limits on page sizes or cursor lifetimes exist, or that there is no default pagination method. Service providers may choose not to publish values for the pagination sub-attributes for many reasons. Examples include:</t>
      <ul spacing="normal">
        <li>Service providers containing multiple resource types may have different values set for each resource type.</li>
        <li>Default and maximum page size may be determined by factors besides or in addition to the number of resources returned, such as the size of each resource on the page.</li>
      </ul>
      <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,
      "defaultPaginationMethod": "cursor",
      "defaultPageSize": 100,
      "maxPageSize": 250,
      "cursorTimeout": 3600
   },

   ...
}
]]></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. This draft is under the same security and privacy considerations of those described in RFC 7644. 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>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 service provider resources deliberately, aiming to cause a denial-of-service state, thereby reducing service availability.</li>
          <li>Authenticated Benign Users: This category includes legitimate users who, due to confusion or a lack of understanding, inadvertently engage in actions that consume service provider resources excessively. Such actions, while not ill-intended, can lead to unintended denial of service by overwhelming the system's capacity.</li>
        </ol>
      </section>
      <section anchor="confidentiality">
        <name>Confidentiality</name>
        <t>To ensure that confidential data remains appropriately secured:</t>
        <ul spacing="normal">
          <li>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.</li>
          <li>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.</li>
          <li>In alignment with Section 2, cursor values <bcp14>SHOULD</bcp14> be treated as opaque entities. Clients should avoid making any inferences or assumptions about their internal structure.</li>
          <li>The system <bcp14>SHOULD</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.</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>When possible, service providers <bcp14>SHOULD</bcp14> 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.</li>
          <li>As an alternative approach, service provider 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.</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 service provider elects to retain substantial data or metadata for each cursor, numerous concurrent queries with &amp;cursor could strain and eventually exhaust service provider 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>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"/>.</li>
          <li>Cursor mechanisms must be designed in a manner that avoids any additional consumption of service provider resources with the initiation of new &amp;cursor requests.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</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 requests IANA to 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>Field Name: <tt>cursor</tt>.</li>
        <li>Status: permanent.</li>
        <li>Specification Document: this specification, Section 2</li>
        <li>Comments: see section 3.4.3 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</li>
      </ul>
      <t>SCIM <tt>count</tt> attribute</t>
      <ul spacing="normal">
        <li>Field Name: <tt>count</tt></li>
        <li>Status: permanent</li>
        <li>Specification Document: this specification, Section 2</li>
        <li>Comments: see section 3.4.3 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</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>Field Name: <tt>nextCursor</tt></li>
        <li>Status: permanent</li>
        <li>Specification Document: this specification, Section 2</li>
        <li>Comments: see section 3.4.2 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</li>
      </ul>
      <t>SCIM <tt>previousCursor</tt> attribute</t>
      <ul spacing="normal">
        <li>Field Name: <tt>previousCursor</tt></li>
        <li>Status: permanent</li>
        <li>Specification Document: this specification, Section 2</li>
        <li>Comments: see section 3.4.2 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</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>Field Name: <tt>pagination</tt></li>
        <li>Status: permanent</li>
        <li>Specification Document: this specification, Section 4</li>
        <li>Comments: see section 5 of <xref target="RFC7643"/> System for Cross-domain Identity Management: Protocol</li>
      </ul>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>-05</t>
      <ul spacing="normal">
        <li>Various updates in response to WG/IETF Last Call feedback</li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>Added IANA Considerations section</li>
        <li>Added Security Considerations section</li>
        <li>Added Backwards Compatibility Considerations section</li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>Minor grammatical/typo fixes, rename + changes to maxPageSize SCP definition</li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>Typos/semantics, acknowledgements, expansion of cursorTimeout SCP definition</li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>Updated after Httpdir review.</li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>Adopted by SCIM WG.</li>
      </ul>
    </section>
    <section anchor="acknowledgments-and-contributions">
      <name>Acknowledgments and Contributions</name>
      <t>The authors would like to acknowledge the contribution of Paul Lanzi (IDenovate) in leading the writing of security considerations section.</t>
      <t>The authors would also like to acknowledge the following individuals who provided valuable feedback while reviewing the draft:</t>
      <ul spacing="normal">
        <li>Aaron Parecki - Okta</li>
        <li>David Brossard - Axiomatics</li>
        <li>Dean H. Saxe - Amazon Web Services</li>
        <li>Pamela Dingle - Microsoft</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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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
5THdmtictuwndRTteM7upVc3Wsnnne/ItKgKwURkKIh34/yEEPI6FOaiFWqw
xuUUpTQoFZEV8W3sw77Iszt2znehRhIDAEVZA3FMh2axzX2rd4CLEwMBAFp0
EQZejgEk7bwmd4dzrd6y+vvRWAthhQD80DEbZktNXhhdUVHG0sm4cCxc9jbk
F+J0MFFb3H4bVr1FAyzVG/mOuPbYcpbYk4hgDl7KpQZy/k0lmSUkStuEOpXr
a2CKc02+FAQzBXyGtNoK1wqRYQOek20AroBHUCuNwxDUg7nNjcGAr6SYLmIr
mVTt9RSVHeflzSdtBEXzKrm/F2yJKdJlaXEWjI1RanpDdFnf1ADXAEYR7AJU
7pGrLcAyav8uDYWXWdQkOVZvOIf9vdXCJgsl/npqyHZg4N+VvgfwwuY+PRQJ
YYy80k4FvQfjsw0miw2XRXtJiO9zGN3cakSbw5jHkXc6PFDvnBFEra5ABKvX
wJsr2DNNGgoU0J0vr4aUrwADzA5PlosMpLUhB8jKwkSHB2SI/v73v+/vffH8
Uj2iOf5zZjNg+md+kn89OnAr+M+Xv+GxfuN9xf7ei9LVE08754SOE+T3JMbJ
jzCZ+LvvKJ92THm3kHZ6BjAOmPPuk6+/TL7++u2r76ZfGLM8FZrYGPuQJPAx
aL7sPO84SPKNkT1wEI/VGoNruDDXVbqRJ4Dgx2YaojMZobX3shb1ADx1A9JU
+Uwq/MrLG4ENmFEFyP+wZd+Ly8vzR4fjQ3V0cKDe/AGUEmABSOiI0447uAHq
TVm2QQ2IP3vLxmEwOTw4GPJ1ixHFuanOQbvwulxuZXMwGfzpz+8u7Xrx/I9f
fvrk7O1AHnHJwuQaBvtmAAyZYFJ3QgrlJkjABDDzJDfOoTWcHI0PJi+tq72J
GXwro7SJ5Mk3TCr8Mx6P6eePEOb/GLbqC4Alhagc85B2RCRarGPX+wTnzzJL
MT/ZiLv0X3xHEGaWb9lI0WpQ9a7+XnWZdPXwPsEvegT/s+4gv4oe/JMlS+0S
LRVkq2vmJmrw3nz88vHB9StrX/7X09vBtgSqwdfX7x6/+fyTp+fvD6ovbrZE
UP1aMnjWL4CcLWKbIWCF4bL3s+iM4lV7LBFcfy8GFnxEIdEKjAwnQWEgkCVK
dOAPsCHB7wv2QEqPnepEw3Ey7bCTSutJubC78kATbb1OQEQR+7BPotAm2njF
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
zvCx6Ive+O//AiuqpxLKXQAA

-->

</rfc>
